diff --git a/korman/nodes/node_messages.py b/korman/nodes/node_messages.py index 5b8a456..7933f79 100644 --- a/korman/nodes/node_messages.py +++ b/korman/nodes/node_messages.py @@ -309,6 +309,71 @@ class PlasmaExcludeRegionMsg(PlasmaMessageNode, bpy.types.Node): layout.prop(self, "cmd", text="Cmd") +class PlasmaLinkToAgeMsg(PlasmaMessageNode, bpy.types.Node): + bl_category = "MSG" + bl_idname = "PlasmaLinkToAgeMsg" + bl_label = "Link to Age" + bl_width_default = 280 + + rules = EnumProperty(name="Rules", + description="Rules describing which age instance to link to", + items=[("kOriginalBook", "Original Age", "Links to a personally owned instance, creating if none exists"), + ("kOwnedBook", "Owned Age", "Links to a personally owned instance, fails if none exists"), + ("kChildAgeBook", "Child Age", "Links to an age instance parented to another personal age"), + ("kSubAgeBook", "Sub Age", "Links to an age instance owned by the current age instance"), + ("kBasicLink", "Basic", "Links to a specific age instance")]) + parent_filename = StringProperty(name="Parent Age", + description="Filename of the age that owns the age instance we're linking to") + + age_filename = StringProperty(name="Age Filename", + description="Filename of the age to link to (eg 'Garden'") + age_instance = StringProperty(name="Age Instance", + description="Instance name of the age to link to (eg 'Eder Kemo')") + age_uuid = StringProperty(name="Age Guid", + description="Instance GUID to link to (eg 'ea489821-6c35-4bd0-9dae-bb17c585e680')") + + spawn_title = StringProperty(name="Spawn Title", + description="Title of the Spawn Point to use", + default="Default") + spawn_point = StringProperty(name="Spawn Point", + description="Name of the Spawn Point's Plasma Object", + default="LinkInPointDefault") + + def convert_message(self, exporter, so): + msg = plLinkToAgeMsg() + als = msg.ageLink + ais, spi = als.ageInfo, als.spawnPoint + + als.linkingRules = getattr(plAgeLinkStruct, self.rules) + if self.rules == "kChildAgeBook": + als.parentAgeFilename = self.parent_filename + ais.ageFilename = self.age_filename + ais.ageInstanceName = self.age_instance if self.age_instance else self.age_filename + if self.rules == "kBasicLink": + try: + ais.ageInstanceGuid = self.age_uuid + except ValueError: + self.raise_error("Age Instance GUID is not a valid UUID") + spi.title = self.spawn_title + spi.spawnPt = self.spawn_point + return msg + + def draw_buttons(self, context, layout): + layout.prop(self, "rules") + if self.rules == "kChildAgeBook": + layout.prop(self, "parent_filename") + layout.separator() + + layout.prop(self, "age_filename") + layout.prop(self, "age_instance") + if self.rules == "kBasicLink": + layout.prop(self, "age_uuid") + layout.separator() + + layout.prop(self, "spawn_title") + layout.prop(self, "spawn_point") + + class PlasmaOneShotMsgNode(PlasmaMessageNode, bpy.types.Node): bl_category = "MSG" bl_idname = "PlasmaOneShotMsgNode"