68 lines
2.5 KiB
Python
68 lines
2.5 KiB
Python
import random
|
|
|
|
class OOPClothingNode:
|
|
UPPER_GARMENT_TYPES = [
|
|
"Nude", "TShirt", "Sweater", "Jacket", "Shirt", "Blouse", "Hoodie",
|
|
"Coat", "TankTop", "Vest", "Cardigan", "Poncho", "Kimono", "Polo",
|
|
"ButtonDown", "CropTop", "Jumper", "Raincoat", "Parka"
|
|
]
|
|
LOWER_GARMENT_TYPES = [
|
|
"Nude", "Jeans", "Shorts", "Skirt", "Trousers", "Leggings", "Sweatpants",
|
|
"Cargo Pants", "Chinos", "Dress", "Short Skirt", "Overalls", "Capri Pants",
|
|
"Joggers", "Palazzo Pants", "Dungarees", "Culottes", "Mini Skirt", "Maxi Skirt"
|
|
]
|
|
COLORS = [
|
|
" ", "Black", "White", "Gray", "Red", "Blue", "Green", "Yellow", "Pink", "Purple", "Brown", "Beige", "Orange"
|
|
]
|
|
|
|
def __init__(self):
|
|
self.name = "Clothing"
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"upper_type": (cls.UPPER_GARMENT_TYPES, {"default": "Sweater"}),
|
|
"lower_type": (cls.LOWER_GARMENT_TYPES, {"default": "Jeans"}),
|
|
},
|
|
"optional": {
|
|
"upper_color": (cls.COLORS, {"default": " "}),
|
|
"lower_color": (cls.COLORS, {"default": " "}),
|
|
"randomize": ("BOOLEAN", {"default": False}),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("OOP_CLOTHING",)
|
|
FUNCTION = "generate_clothing"
|
|
CATEGORY = "Object-Oriented Prompting"
|
|
|
|
def generate_clothing(self, upper_type, lower_type, upper_color="Black", lower_color="Blue", randomize=False):
|
|
if randomize:
|
|
upper_type = random.choice(self.UPPER_GARMENT_TYPES)
|
|
lower_type = random.choice(self.LOWER_GARMENT_TYPES)
|
|
upper_color = random.choice(self.COLORS[1:])
|
|
lower_color = random.choice(self.COLORS[1:])
|
|
|
|
# Build garment details, excluding options set to " "
|
|
upper_garment = f"Top::Garment:{upper_type}"
|
|
if upper_color != " " and upper_type != "Nude":
|
|
upper_garment += f", color:{upper_color}"
|
|
|
|
lower_garment = f"Bottom::Garment:{lower_type}"
|
|
if lower_color != " " and lower_type != "Nude":
|
|
lower_garment += f", color:{lower_color}"
|
|
|
|
return (f"{upper_garment}, {lower_garment}",)
|
|
|
|
@classmethod
|
|
def IS_CHANGED(cls, upper_type, lower_type, upper_color, lower_color, randomize):
|
|
if randomize:
|
|
return random.getrandbits(32) # Forces re-evaluation every time
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"OOPClothingNode": OOPClothingNode
|
|
}
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"OOPClothingNode": "OOP Clothing 🥼"
|
|
}
|