Repe [T3DU] Update - 31f26d171bba0355ce2a77031e3aad4c64dbc7e9

This commit is contained in:
2026-09-04 10:46:13 -07:00
parent c915312901
commit 0460b9d587
482 changed files with 27797 additions and 3226 deletions

View File

@ -15,7 +15,7 @@ class AddRigidBodyNode(LnxLogicTreeNode):
@input Animated: Rigid body follows animation and will affect other active non-animated rigid bodies.
@input Trigger: Rigid body behaves as a trigger and detects collision. However, rigd body does not contribute to or receive collissions.
@input Trigger: Rigid body behaves as a trigger and detects collision. However, rigid body does not contribute to or receive collissions.
@input Friction: Surface friction of the rigid body. Minimum value = 0, Preferred max value = 1.
@ -77,7 +77,8 @@ class AddRigidBodyNode(LnxLogicTreeNode):
('Cone', 'Cone', 'Cone'),
('Cylinder', 'Cylinder', 'Cylinder'),
('Convex Hull', 'Convex Hull', 'Convex Hull'),
('Mesh', 'Mesh', 'Mesh')],
('Mesh', 'Mesh', 'Mesh'),
('Compound Parent', 'Compound Parent', 'Compound Parent')],
name='Shape', default='Box')
def lnx_init(self, context):
@ -114,7 +115,7 @@ class AddRigidBodyNode(LnxLogicTreeNode):
self.add_input('LnxFloatSocket', 'Linear Damping', 0.04)
self.add_input('LnxFloatSocket', 'Angular Damping', 0.1)
self.add_input('LnxFloatSocket', 'Angular Friction', 0.1)
self.add_input('LnxBoolSocket', 'Use Deacivation')
self.add_input('LnxBoolSocket', 'Use Deactivation')
self.add_input('LnxFloatSocket', 'Linear Velocity Threshold', 0.4)
self.add_input('LnxFloatSocket', 'Angular Velocity Threshold', 0.5)
self.add_input('LnxIntSocket', 'Collision Group', 1)

View File

@ -0,0 +1,14 @@
from lnx.logicnode.lnx_nodes import *
class AddPhysicsHookNode(LnxLogicTreeNode):
bl_idname = 'LNAddPhysicsHookNode'
bl_label = 'Add Physics Hook'
lnx_section = 'add'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_input('LnxNodeSocketObject', 'Hook')
self.add_input('LnxNodeSocketArray', 'Vertices')
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,23 @@
from lnx.logicnode.lnx_nodes import *
class AddSoftBodyNode(LnxLogicTreeNode):
bl_idname = 'LNAddSoftBodyNode'
bl_label = 'Add Soft Body'
lnx_section = 'softbody'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
# 0: Cloth, 1: Volume
self.add_input('LnxIntSocket', 'Shape', default_value=0)
self.add_input('LnxFloatSocket', 'Bend', default_value=0.5)
self.add_input('LnxFloatSocket', 'Mass', default_value=1.0)
self.add_input('LnxFloatSocket', 'Margin', default_value=0.04)
self.add_input('LnxFloatSocket', 'Friction', default_value=0.5)
self.add_input('LnxFloatSocket', 'Damping', default_value=0.01)
self.add_input('LnxFloatSocket', 'Linear Stiffness', default_value=0.9)
self.add_input('LnxFloatSocket', 'Angular Stiffness', default_value=0.9)
self.add_input('LnxFloatSocket', 'Pressure', default_value=0.0)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -8,19 +8,21 @@ class GetRigidBodyDataNode(LnxLogicTreeNode):
lnx_version = 1
def lnx_init(self, context):
self.inputs.new('LnxNodeSocketObject', 'Object')
self.add_input('LnxNodeSocketObject', 'RB')
self.outputs.new('LnxBoolSocket', 'Is RB')
self.outputs.new('LnxIntSocket', 'Collision Group')
self.outputs.new('LnxIntSocket', 'Collision Mask')
self.outputs.new('LnxBoolSocket', 'Is Animated')
self.outputs.new('LnxBoolSocket', 'Is Static')
self.outputs.new('LnxFloatSocket', 'Angular Damping')
self.outputs.new('LnxFloatSocket', 'Linear Damping')
self.outputs.new('LnxFloatSocket', 'Friction')
self.outputs.new('LnxFloatSocket', 'Mass')
#self.outputs.new('LnxStringSocket', 'Collision Shape')
#self.outputs.new('LnxIntSocket', 'Activation State')
#self.outputs.new('LnxBoolSocket', 'Is Gravity Enabled')
#self.outputs.new(LnxVectorSocket', Angular Factor')
#self.outputs.new('LnxVectorSocket', Linear Factor')
self.add_output('LnxBoolSocket', 'Is RB')
self.add_output('LnxIntSocket', 'Collision Group')
self.add_output('LnxIntSocket', 'Collision Mask')
self.add_output('LnxBoolSocket', 'Is Animated')
self.add_output('LnxBoolSocket', 'Is Static')
self.add_output('LnxFloatSocket', 'Linear Damping')
self.add_output('LnxFloatSocket', 'Angular Damping')
self.add_output('LnxFloatSocket', 'Friction')
self.add_output('LnxFloatSocket', 'Angular Friction')
self.add_output('LnxFloatSocket', 'Mass')
self.add_output('LnxBoolSocket', 'Is Trigger')
self.add_output('LnxFloatSocket', 'Bounciness')
self.add_output('LnxBoolSocket', 'Gravity Enabled')
self.add_output('LnxVectorSocket', 'Gravity')
self.add_output('LnxVectorSocket', 'Linear Factor')
self.add_output('LnxVectorSocket', 'Angular Factor')

View File

@ -0,0 +1,14 @@
from lnx.logicnode.lnx_nodes import *
class SetRigidBodyDynamicsNode(LnxLogicTreeNode):
bl_idname = 'LNSetRigidBodyDynamicsNode'
bl_label = 'Set RB Dynamics'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_input('LnxBoolSocket', 'Is Static', default_value=False)
self.add_input('LnxFloatSocket', 'Mass', default_value=1.0)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -3,11 +3,11 @@ from lnx.logicnode.lnx_nodes import *
class GetPointVelocityNode(LnxLogicTreeNode):
"""Returns the world velocity of the given point along the rigid body."""
bl_idname = 'LNGetPointVelocityNode'
bl_label = 'Get RB Point Velocity'
bl_label = 'Get RB Velocity at Location'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketObject', 'RB')
self.add_input('LnxVectorSocket', 'Point')
self.add_input('LnxVectorSocket', 'Location')
self.add_output('LnxVectorSocket', 'Velocity')

View File

@ -0,0 +1,22 @@
from lnx.logicnode.lnx_nodes import *
class GetSoftBodyDataNode(LnxLogicTreeNode):
bl_idname = 'LNGetSoftBodyDataNode'
bl_label = 'Get SB Data'
lnx_section = 'softbody'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketObject', 'SB')
self.add_output('LnxBoolSocket', 'Has SB')
self.add_output('LnxFloatSocket', 'Mass')
self.add_output('LnxFloatSocket', 'Bend')
self.add_output('LnxIntSocket', 'Shape')
self.add_output('LnxFloatSocket', 'Margin')
self.add_output('LnxVectorSocket', 'World Center')
self.add_output('LnxFloatSocket', 'Friction')
self.add_output('LnxFloatSocket', 'Damping')
self.add_output('LnxFloatSocket', 'Pressure')
self.add_output('LnxFloatSocket', 'Linear Stiffness')
self.add_output('LnxFloatSocket', 'Angular Stiffness')

View File

@ -19,6 +19,8 @@ class OnContactArrayNode(LnxLogicTreeNode):
self.add_input('LnxNodeSocketArray', 'RBs')
self.add_output('LnxNodeSocketAction', 'Out')
self.add_output('LnxNodeSocketArray', 'RBs')
self.add_output('LnxNodeSocketObject', 'RB')
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')

View File

@ -0,0 +1,13 @@
from lnx.logicnode.lnx_nodes import *
class RemovePhysicsConstraintNode(LnxLogicTreeNode):
bl_idname = 'LNRemovePhysicsConstraintNode'
bl_label = 'Remove Physics Constraint'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Pivot Object')
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,12 @@
from lnx.logicnode.lnx_nodes import *
class RemovePhysicsHookNode(LnxLogicTreeNode):
bl_idname = 'LNRemovePhysicsHookNode'
bl_label = 'Remove Physics Hook'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,14 @@
from lnx.logicnode.lnx_nodes import *
class RemoveSoftBodyNode(LnxLogicTreeNode):
bl_idname = 'LNRemoveSoftBodyNode'
bl_label = 'Remove SB'
lnx_section = 'softbody'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'SB')
self.add_input('LnxBoolSocket', 'Restore Geom')
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -4,7 +4,6 @@ class SetActivationStateNode(LnxLogicTreeNode):
"""Sets the rigid body simulation state of the given object."""
bl_idname = 'LNSetActivationStateNode'
bl_label = 'Set RB Activation State'
bl_icon = 'NONE'
lnx_version = 1
property0: HaxeEnumProperty(

View File

@ -0,0 +1,13 @@
from lnx.logicnode.lnx_nodes import *
class SetRigidBodyAnimatedNode(LnxLogicTreeNode):
bl_idname = 'LNSetRigidBodyAnimatedNode'
bl_label = 'Set RB Animated'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_input('LnxBoolSocket', 'Animated', default_value=False)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,13 @@
from lnx.logicnode.lnx_nodes import *
class SetRigidBodyBouncinessNode(LnxLogicTreeNode):
bl_idname = 'LNSetRigidBodyBouncinessNode'
bl_label = 'Set RB Bounciness'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_input('LnxFloatSocket', 'Bounciness', default_value=0)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,15 @@
from lnx.logicnode.lnx_nodes import *
class SetRigidBodyDampingNode(LnxLogicTreeNode):
"""Sets the linear and angular damping of a rigid body."""
bl_idname = 'LNSetRigidBodyDampingNode'
bl_label = 'Set RB Damping'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_input('LnxFloatSocket', 'Linear Damping', default_value=0.04)
self.add_input('LnxFloatSocket', 'Angular Damping', default_value=0.1)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,14 @@
from lnx.logicnode.lnx_nodes import *
class SetRigidBodyFactorNode(LnxLogicTreeNode):
bl_idname = 'LNSetRigidBodyFactorNode'
bl_label = 'Set RB Factor'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_input('LnxVectorSocket', 'Linear Factor', default_value=[1.0, 1.0, 1.0])
self.add_input('LnxVectorSocket', 'Angular Factor', default_value=[1.0, 1.0, 1.0])
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -1,15 +1,16 @@
from lnx.logicnode.lnx_nodes import *
class SetFrictionNode (LnxLogicTreeNode):
class SetRigidBodyFrictionNode (LnxLogicTreeNode):
"""Sets the friction of the given rigid body."""
bl_idname = 'LNSetFrictionNode'
bl_idname = 'LNSetRigidBodyFrictionNode'
bl_label = 'Set RB Friction'
bl_icon = 'NONE'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.inputs.new('LnxNodeSocketAction', 'In')
self.inputs.new('LnxNodeSocketObject', 'RB')
self.inputs.new('LnxFloatSocket', 'Friction')
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'RB')
self.add_input('LnxFloatSocket', 'Friction', default_value=0.5)
self.add_input('LnxFloatSocket', 'Angular Friction', default_value=0.1)
self.outputs.new('LnxNodeSocketAction', 'Out')
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,14 @@
from lnx.logicnode.lnx_nodes import *
class SetRigidBodyGravityNode(LnxLogicTreeNode):
"""Sets the gravity for the given rigid body."""
bl_idname = 'LNSetRigidBodyGravityNode'
bl_label = 'Set RB Gravity'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'RB')
self.add_input('LnxVectorSocket', 'Gravity')
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,13 @@
from lnx.logicnode.lnx_nodes import *
class SetRigidBodyTriggerNode(LnxLogicTreeNode):
bl_idname = 'LNSetRigidBodyTriggerNode'
bl_label = 'Set RB Trigger'
lnx_section = 'props'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_input('LnxBoolSocket', 'Is Trigger', default_value=False)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -2,16 +2,35 @@ from lnx.logicnode.lnx_nodes import *
class SetVelocityNode(LnxLogicTreeNode):
"""Sets the velocity of the given rigid body."""
bl_idname = 'LNSetVelocityNode'
bl_idname = 'LNSetRigidBodyVelocityNode'
bl_label = 'Set RB Velocity'
lnx_section = 'props'
lnx_version = 1
def update_sockets(self, context):
self.inputs[2].hide = self.property0 == 'Angular'
self.inputs[3].hide = self.property0 == 'Angular'
self.inputs[4].hide = self.property0 == 'Linear'
self.inputs[5].hide = self.property0 == 'Linear'
property0: HaxeEnumProperty(
'property0',
items=[('Both', 'Both', 'Set both velocities'),
('Linear', 'Linear', 'Set only linear velocity'),
('Angular', 'Angular', 'Set only angular velocity')],
name='Velocity',
default='Both',
update=update_sockets
)
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'RB')
self.add_input('LnxVectorSocket', 'Linear')
self.add_input('LnxVectorSocket', 'Linear Factor', default_value=[1.0, 1.0, 1.0])
self.add_input('LnxBoolSocket', 'Linear On Local Axis')
self.add_input('LnxVectorSocket', 'Angular')
self.add_input('LnxVectorSocket', 'Angular Factor', default_value=[1.0, 1.0, 1.0])
self.add_input('LnxBoolSocket', 'Angular On Local Axis')
self.add_output('LnxNodeSocketAction', 'Out')
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')