Browse Source

Merge pull request #321 from DoobesURU/DynamicBounds

Add kDynamicBlocker collider toggle.
pull/323/head
Adam Johnson 3 years ago committed by GitHub
parent
commit
83c25b668a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      korman/exporter/physics.py
  2. 57
      korman/properties/modifiers/physics.py
  3. 1
      korman/ui/modifiers/physics.py

5
korman/exporter/physics.py

@ -173,7 +173,10 @@ class PhysicsConverter:
physical.mass = mod.mass physical.mass = mod.mass
_set_phys_prop(plSimulationInterface.kStartInactive, simIface, physical, _set_phys_prop(plSimulationInterface.kStartInactive, simIface, physical,
value=mod.start_asleep) value=mod.start_asleep)
elif not mod.avatar_blocker: elif mod.dynamic_blocker and not mod.avatar_blocker:
physical.collideGroup = (1 << plSimDefs.kGroupDynamic)
physical.memberGroup = plSimDefs.kGroupLOSOnly
elif not mod.avatar_blocker and not mod.dynamic_blocker:
physical.memberGroup = plSimDefs.kGroupLOSOnly physical.memberGroup = plSimDefs.kGroupLOSOnly
else: else:
physical.memberGroup = plSimDefs.kGroupStatic physical.memberGroup = plSimDefs.kGroupStatic

57
korman/properties/modifiers/physics.py

@ -69,18 +69,42 @@ class PlasmaCollider(PlasmaModifierProperties):
bl_icon = "MOD_PHYSICS" bl_icon = "MOD_PHYSICS"
bl_description = "Simple physical collider" bl_description = "Simple physical collider"
bounds = EnumProperty(name="Bounds Type", description="", items=bounds_types, default="hull") bounds = EnumProperty(name="Bounds Type",
description="",
avatar_blocker = BoolProperty(name="Blocks Avatars", description="Object blocks avatars", default=True) items=bounds_types,
camera_blocker = BoolProperty(name="Blocks Camera LOS", description="Object blocks camera line-of-sight", default=True) default="hull")
friction = FloatProperty(name="Friction", min=0.0, default=0.5) avatar_blocker = BoolProperty(name="Blocks Avatars",
restitution = FloatProperty(name="Restitution", description="Coefficient of collision elasticity", min=0.0, max=1.0) description="Object blocks avatars",
terrain = BoolProperty(name="Terrain", description="Object represents the ground", default=False) default=True)
camera_blocker = BoolProperty(name="Blocks Camera LOS",
dynamic = BoolProperty(name="Dynamic", description="Object can be influenced by other objects (ie is kickable)", default=False) description="Object blocks camera line-of-sight",
mass = FloatProperty(name="Mass", description="Mass of object in pounds", min=0.0, default=1.0) default=True)
start_asleep = BoolProperty(name="Start Asleep", description="Object is not active until influenced by another object", default=False) dynamic_blocker = BoolProperty(name="Blocks Dynamics",
description="Object blocks dynamic objects (kickables)",
default=True)
friction = FloatProperty(name="Friction",
min=0.0,
default=0.5)
restitution = FloatProperty(name="Restitution",
description="Coefficient of collision elasticity",
min=0.0,
max=1.0)
terrain = BoolProperty(name="Terrain",
description="Object represents the ground",
default=False)
dynamic = BoolProperty(name="Dynamic",
description="Object can be influenced by other objects (ie is kickable)",
default=False)
mass = FloatProperty(name="Mass",
description="Mass of object in pounds",
min=0.0,
default=1.0)
start_asleep = BoolProperty(name="Start Asleep",
description="Object is not active until influenced by another object",
default=False)
proxy_object = PointerProperty(name="Proxy", proxy_object = PointerProperty(name="Proxy",
description="Object used as the collision geometry", description="Object used as the collision geometry",
@ -118,9 +142,12 @@ class PlasmaSubworld(PlasmaModifierProperties):
default="auto", default="auto",
options=set()) options=set())
gravity = FloatVectorProperty(name="Gravity", gravity = FloatVectorProperty(name="Gravity",
description="Subworld's gravity defined in feet per second squared", description="Subworld's gravity defined in feet per second squared",
size=3, default=(0.0, 0.0, -32.174), precision=3, size=3,
subtype="ACCELERATION", unit="ACCELERATION") default=(0.0, 0.0, -32.174),
precision=3,
subtype="ACCELERATION",
unit="ACCELERATION")
def export(self, exporter, bo, so): def export(self, exporter, bo, so):
if self.is_dedicated_subworld(exporter): if self.is_dedicated_subworld(exporter):

1
korman/ui/modifiers/physics.py

@ -22,6 +22,7 @@ def collision(modifier, layout, context):
col = split.column() col = split.column()
col.prop(modifier, "avatar_blocker") col.prop(modifier, "avatar_blocker")
col.prop(modifier, "camera_blocker") col.prop(modifier, "camera_blocker")
col.prop(modifier, "dynamic_blocker")
col.prop(modifier, "terrain") col.prop(modifier, "terrain")
col = split.column() col = split.column()

Loading…
Cancel
Save