Use PointerProperty to prevent whitespace issues
This commit is contained in:
parent
9ae5e897d4
commit
c6a26a0dad
|
@ -14,7 +14,7 @@ class CallGroupNode(Node, ArmLogicTreeNode):
|
|||
def property0(self):
|
||||
return arm.utils.safesrc(bpy.data.worlds['Arm'].arm_project_package) + '.node.' + arm.utils.safesrc(self.property0_)
|
||||
|
||||
property0_: StringProperty(name='Group', default='')
|
||||
property0_: PointerProperty(name='Group', type=bpy.types.NodeTree)
|
||||
|
||||
def init(self, context):
|
||||
self.inputs.new('ArmNodeSocketAction', 'In')
|
||||
|
|
|
@ -37,14 +37,15 @@ class ArmArraySocket(bpy.types.NodeSocket):
|
|||
class ArmObjectSocket(bpy.types.NodeSocket):
|
||||
bl_idname = 'ArmNodeSocketObject'
|
||||
bl_label = 'Object Socket'
|
||||
default_value: StringProperty(name='Object', default='')
|
||||
default_value_get: PointerProperty(name='Object', type=bpy.types.Object)
|
||||
default_value: StringProperty(name='Object', default='') # TODO: deprecated, using PointerProperty now
|
||||
|
||||
def get_default_value(self):
|
||||
if self.default_value == '':
|
||||
if self.default_value_get == None:
|
||||
return ''
|
||||
if self.default_value not in bpy.data.objects:
|
||||
return self.default_value
|
||||
return arm.utils.asset_name(bpy.data.objects[self.default_value])
|
||||
if self.default_value_get.name not in bpy.data.objects:
|
||||
return self.default_value_get.name
|
||||
return arm.utils.asset_name(bpy.data.objects[self.default_value_get.name])
|
||||
|
||||
def __init__(self):
|
||||
global object_sockets
|
||||
|
@ -59,7 +60,7 @@ class ArmObjectSocket(bpy.types.NodeSocket):
|
|||
layout.label(text=self.name)
|
||||
else:
|
||||
row = layout.row(align=True)
|
||||
row.prop_search(self, 'default_value', bpy.context.scene, 'objects', icon='NONE', text='')
|
||||
row.prop_search(self, 'default_value_get', bpy.context.scene, 'objects', icon='NONE', text='')
|
||||
op = row.operator('arm.node_eyedrop', text='', icon='EYEDROPPER', emboss=True)
|
||||
op.socket_index = str(id(self))
|
||||
|
||||
|
@ -76,20 +77,21 @@ class ArmNodeEyedropButton(bpy.types.Operator):
|
|||
global object_sockets
|
||||
obj = bpy.context.active_object
|
||||
if obj != None:
|
||||
object_sockets[self.socket_index].default_value = obj.name
|
||||
object_sockets[self.socket_index].default_value_get = obj
|
||||
return{'FINISHED'}
|
||||
|
||||
class ArmAnimActionSocket(bpy.types.NodeSocket):
|
||||
bl_idname = 'ArmNodeSocketAnimAction'
|
||||
bl_label = 'Action Socket'
|
||||
default_value: StringProperty(name='Action', default='')
|
||||
default_value_get: PointerProperty(name='Action', type=bpy.types.Action)
|
||||
default_value: StringProperty(name='Action', default='') # TODO: deprecated, using PointerProperty now
|
||||
|
||||
def get_default_value(self):
|
||||
if self.default_value == '':
|
||||
if self.default_value_get == None:
|
||||
return ''
|
||||
if self.default_value not in bpy.data.actions:
|
||||
return self.default_value
|
||||
name = arm.utils.asset_name(bpy.data.actions[self.default_value])
|
||||
if self.default_value_get.name not in bpy.data.actions:
|
||||
return self.default_value_get.name
|
||||
name = arm.utils.asset_name(bpy.data.actions[self.default_value_get.name])
|
||||
return arm.utils.safestr(name)
|
||||
|
||||
def draw(self, context, layout, node, text):
|
||||
|
@ -98,7 +100,7 @@ class ArmAnimActionSocket(bpy.types.NodeSocket):
|
|||
elif self.is_linked:
|
||||
layout.label(text=self.name)
|
||||
else:
|
||||
layout.prop_search(self, 'default_value', bpy.data, 'actions', icon='NONE', text='')
|
||||
layout.prop_search(self, 'default_value_get', bpy.data, 'actions', icon='NONE', text='')
|
||||
|
||||
def draw_color(self, context, node):
|
||||
return (0.8, 0.8, 0.8, 1)
|
||||
|
|
|
@ -12,11 +12,13 @@ class MaterialNode(Node, ArmLogicTreeNode):
|
|||
|
||||
@property
|
||||
def property0_get(self):
|
||||
if self.property0 not in bpy.data.materials:
|
||||
return self.property0
|
||||
return arm.utils.asset_name(bpy.data.materials[self.property0])
|
||||
|
||||
property0: StringProperty(name='', default='')
|
||||
if self.property0 == None:
|
||||
return ''
|
||||
if self.property0.name not in bpy.data.materials:
|
||||
return self.property0.name
|
||||
return arm.utils.asset_name(bpy.data.materials[self.property0.name])
|
||||
|
||||
property0: PointerProperty(name='', type=bpy.types.Material)
|
||||
|
||||
def init(self, context):
|
||||
self.outputs.new('NodeSocketShader', 'Material')
|
||||
|
|
|
@ -8,13 +8,14 @@ class MeshNode(Node, ArmLogicTreeNode):
|
|||
bl_idname = 'LNMeshNode'
|
||||
bl_label = 'Mesh'
|
||||
bl_icon = 'QUESTION'
|
||||
|
||||
property0: StringProperty(name='', default='')
|
||||
|
||||
property0_get: PointerProperty(name='', type=bpy.types.Mesh)
|
||||
property0: StringProperty(name='Mesh', default='') # TODO: deprecated, using PointerProperty now
|
||||
|
||||
def init(self, context):
|
||||
self.outputs.new('NodeSocketShader', 'Mesh')
|
||||
|
||||
def draw_buttons(self, context, layout):
|
||||
layout.prop_search(self, 'property0', bpy.data, 'meshes', icon='NONE', text='')
|
||||
layout.prop_search(self, 'property0_get', bpy.data, 'meshes', icon='NONE', text='')
|
||||
|
||||
add_node(MeshNode, category='Variable')
|
||||
|
|
|
@ -9,12 +9,13 @@ class SceneNode(Node, ArmLogicTreeNode):
|
|||
bl_label = 'Scene'
|
||||
bl_icon = 'QUESTION'
|
||||
|
||||
property0: StringProperty(name='', default='')
|
||||
property0_get: PointerProperty(name='', type=bpy.types.Scene)
|
||||
property0: StringProperty(name='Scene', default='') # TODO: deprecated, using PointerProperty now
|
||||
|
||||
def init(self, context):
|
||||
self.outputs.new('NodeSocketShader', 'Scene')
|
||||
|
||||
def draw_buttons(self, context, layout):
|
||||
layout.prop_search(self, 'property0', bpy.data, 'scenes', icon='NONE', text='')
|
||||
layout.prop_search(self, 'property0_get', bpy.data, 'scenes', icon='NONE', text='')
|
||||
|
||||
add_node(SceneNode, category='Variable')
|
||||
|
|
|
@ -317,7 +317,6 @@ def init_properties_on_load():
|
|||
trait.node_tree_prop == None and \
|
||||
trait.name in bpy.data.node_groups:
|
||||
trait.node_tree_prop = bpy.data.node_groups[trait.name]
|
||||
|
||||
for scn in bpy.data.scenes: # TODO: deprecated
|
||||
# Scene traits
|
||||
for trait in scn.arm_traitlist:
|
||||
|
@ -332,6 +331,23 @@ def init_properties_on_load():
|
|||
item.obj == None and \
|
||||
item.object_name in scn.collection.all_objects:
|
||||
item.obj = scn.collection.all_objects[item.object_name]
|
||||
# Update StringProperty to PointerProperty
|
||||
for node_group in bpy.data.node_groups: # TODO: deprecated
|
||||
if node_group.bl_idname == 'ArmLogicTreeType':
|
||||
for node in node_group.nodes:
|
||||
if hasattr(node, 'property0_get') and node.property0 != '':
|
||||
if node.bl_idname == 'LNMeshNode':
|
||||
node.property0_get = bpy.data.meshes[node.property0.strip()]
|
||||
elif node.bl_idname == 'LNSceneNode':
|
||||
node.property0_get = bpy.data.scenes[node.property0.strip()]
|
||||
node.property0 = ''
|
||||
for inp in node.inputs:
|
||||
if inp.bl_idname == 'ArmNodeSocketObject' and inp.default_value != '':
|
||||
inp.default_value_get = bpy.data.objects[inp.default_value]
|
||||
inp.default_value = ''
|
||||
elif inp.bl_idname == 'ArmNodeSocketAnimAction' and inp.default_value != '':
|
||||
inp.default_value_get = bpy.data.actions[inp.default_value]
|
||||
inp.default_value = ''
|
||||
|
||||
print('Project updated to sdk v' + arm_version + ' (' + arm_commit + ')')
|
||||
wrd.arm_version = arm_version
|
||||
|
|
Loading…
Reference in a new issue