Added new node - RS Loop Switch
This commit is contained in:
@@ -1,66 +0,0 @@
|
||||
import random
|
||||
from decimal import Decimal, ROUND_HALF_UP
|
||||
|
||||
print("\033[93m🦊\033[0m \033[93mRaykoStudio - RS Loop Seed \033[92mLOADED\033[0m")
|
||||
|
||||
MAX_SEED = 999999999999999
|
||||
|
||||
|
||||
class Rayko_Loop_Seed:
|
||||
DESCRIPTION = "Generation of consecutive numbers."
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"start_at_step": ("INT", {
|
||||
"default": 0,
|
||||
"min": -10000,
|
||||
"max": 10000,
|
||||
"step": 1,
|
||||
}),
|
||||
"end_at_step": ("INT", {
|
||||
"default": 10,
|
||||
"min": -10000,
|
||||
"max": 10000,
|
||||
"step": 1,
|
||||
}),
|
||||
"jump": ("INT", {
|
||||
"default": 1,
|
||||
"min": 1,
|
||||
"max": 1000,
|
||||
"step": 1,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("INT",)
|
||||
OUTPUT_IS_LIST = (True,)
|
||||
FUNCTION = "generate"
|
||||
CATEGORY = "🦊 RaykoStudio"
|
||||
|
||||
def generate(self, start_at_step: int, end_at_step: int, jump: int):
|
||||
if jump <= 0:
|
||||
raise ValueError("Jump must be greater than 0.")
|
||||
values = []
|
||||
current = start_at_step
|
||||
while current <= end_at_step:
|
||||
values.append(current)
|
||||
current += jump
|
||||
return (values,)
|
||||
|
||||
@classmethod
|
||||
def IS_CHANGED(cls, start_at_step, end_at_step, jump):
|
||||
return f"{start_at_step}_{end_at_step}_{jump}"
|
||||
|
||||
@classmethod
|
||||
def DISPLAY_NAME(cls):
|
||||
return "🦊 RS Loop Seed"
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"Rayko_Loop_Seed": Rayko_Loop_Seed,
|
||||
}
|
||||
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"Rayko_Loop_Seed": "🦊 RS Loop Seed",
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
import random
|
||||
import os
|
||||
|
||||
print("\033[93m🦊\033[0m \033[93mRaykoStudio - RS Loop Switch \033[92mLOADED\033[0m")
|
||||
|
||||
MAX_SEED = 9888888888888888
|
||||
|
||||
WEB_DIRECTORY = "./web"
|
||||
|
||||
class RaykoLoopSwitchSeed:
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"start_at_step": ("INT", {"default": 1, "min": -10000, "max": 10000, "step": 1}),
|
||||
"end_at_step": ("INT", {"default": 10, "min": -10000, "max": 10000, "step": 1}),
|
||||
"jump": ("INT", {"default": 1, "min": 1, "max": 1000, "step": 1}),
|
||||
"control_before_generate": (["fixed", "increment", "decrement", "randomize"],),
|
||||
"value_1": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_2": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_3": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_4": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_5": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_6": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_7": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_8": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_9": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
"value_10": ("INT", {"default": 0, "min": 0, "max": MAX_SEED}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("INT",)
|
||||
OUTPUT_IS_LIST = (True,)
|
||||
FUNCTION = "process"
|
||||
CATEGORY = "🦊 RaykoStudio"
|
||||
OUTPUT_NODE = True
|
||||
|
||||
def process(self, start_at_step, end_at_step, jump, control_before_generate,
|
||||
value_1, value_2, value_3, value_4, value_5,
|
||||
value_6, value_7, value_8, value_9, value_10):
|
||||
|
||||
values = [value_1, value_2, value_3, value_4, value_5,
|
||||
value_6, value_7, value_8, value_9, value_10]
|
||||
|
||||
if control_before_generate == "randomize":
|
||||
values = [random.randint(0, MAX_SEED) for _ in range(10)]
|
||||
elif control_before_generate == "increment":
|
||||
values = [(v + 1) % (MAX_SEED + 1) for v in values]
|
||||
elif control_before_generate == "decrement":
|
||||
values = [(v - 1) % (MAX_SEED + 1) for v in values]
|
||||
|
||||
if jump <= 0:
|
||||
raise ValueError("Jump must be greater than 0.")
|
||||
|
||||
output_values = []
|
||||
current_step = start_at_step
|
||||
while current_step <= end_at_step:
|
||||
index = (current_step - 1) % 10
|
||||
output_values.append(values[index])
|
||||
current_step += jump
|
||||
|
||||
return {
|
||||
"ui": {
|
||||
"value_1": [values[0]],
|
||||
"value_2": [values[1]],
|
||||
"value_3": [values[2]],
|
||||
"value_4": [values[3]],
|
||||
"value_5": [values[4]],
|
||||
"value_6": [values[5]],
|
||||
"value_7": [values[6]],
|
||||
"value_8": [values[7]],
|
||||
"value_9": [values[8]],
|
||||
"value_10": [values[9]],
|
||||
},
|
||||
"result": (output_values,)
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def IS_CHANGED(cls, start_at_step, end_at_step, jump, control_before_generate,
|
||||
value_1, value_2, value_3, value_4, value_5,
|
||||
value_6, value_7, value_8, value_9, value_10):
|
||||
if control_before_generate in ["randomize", "increment", "decrement"]:
|
||||
return float("NaN")
|
||||
return (f"{start_at_step}_{end_at_step}_{jump}_{control_before_generate}_"
|
||||
f"{value_1}_{value_2}_{value_3}_{value_4}_{value_5}_"
|
||||
f"{value_6}_{value_7}_{value_8}_{value_9}_{value_10}")
|
||||
|
||||
NODE_CLASS_MAPPINGS = {"RaykoLoopSwitchSeed": RaykoLoopSwitchSeed}
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {"RaykoLoopSwitchSeed": "🦊 RS Loop Switch"}
|
||||
@@ -0,0 +1,30 @@
|
||||
import { app } from "../../scripts/app.js";
|
||||
|
||||
app.registerExtension({
|
||||
name: "RaykoStudio.LoopSwitchSeed",
|
||||
|
||||
async beforeRegisterNodeDef(nodeType, nodeData, app) {
|
||||
if (nodeData.name === "RaykoLoopSwitchSeed") {
|
||||
|
||||
nodeType.prototype.onExecuted = function(message) {
|
||||
// В ComfyUI 0.18+ данные могут приходить прямо в message
|
||||
const uiData = message.ui || message;
|
||||
|
||||
if (!this.widgets || !uiData) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (let i = 1; i <= 10; i++) {
|
||||
const widgetName = "value_" + i;
|
||||
const widget = this.widgets.find(w => w.name === widgetName);
|
||||
|
||||
if (widget && uiData[widgetName]) {
|
||||
widget.value = uiData[widgetName][0];
|
||||
}
|
||||
}
|
||||
|
||||
this.setDirtyCanvas(true, true);
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user