Expose linear and angular factor for rigid body
This commit is contained in:
parent
21c89b3eec
commit
505ccb7caf
|
@ -9,7 +9,8 @@
|
|||
"links": [
|
||||
{
|
||||
"name": "eye",
|
||||
"link": "_cameraPosition"
|
||||
"link": "_cameraPosition",
|
||||
"ifdef": ["_Rad"]
|
||||
},
|
||||
{
|
||||
"name": "eyeSnap",
|
||||
|
|
|
@ -23,6 +23,12 @@ class RigidBody extends Trait {
|
|||
public var linearDamping:Float;
|
||||
public var angularDamping:Float;
|
||||
public var passive:Bool;
|
||||
var linearFactorX:Float;
|
||||
var linearFactorY:Float;
|
||||
var linearFactorZ:Float;
|
||||
var angularFactorX:Float;
|
||||
var angularFactorY:Float;
|
||||
var angularFactorZ:Float;
|
||||
|
||||
public var body:BtRigidBodyPointer = null;
|
||||
public var ready = false;
|
||||
|
@ -34,7 +40,9 @@ class RigidBody extends Trait {
|
|||
public var onReady:Void->Void = null;
|
||||
|
||||
public function new(mass = 1.0, shape = Shape.Box, friction = 0.5, restitution = 0.0, collisionMargin = 0.0,
|
||||
linearDamping = 0.04, angularDamping = 0.1, passive = false) {
|
||||
linearDamping = 0.04, angularDamping = 0.1, passive = false,
|
||||
linearFactorX = 1.0, linearFactorY = 1.0, linearFactorZ = 1.0,
|
||||
angularFactorX = 1.0, angularFactorY = 1.0, angularFactorZ = 1.0) {
|
||||
super();
|
||||
|
||||
this.mass = mass;
|
||||
|
@ -45,6 +53,12 @@ class RigidBody extends Trait {
|
|||
this.linearDamping = linearDamping;
|
||||
this.angularDamping = angularDamping;
|
||||
this.passive = passive;
|
||||
this.linearFactorX = linearFactorX;
|
||||
this.linearFactorY = linearFactorY;
|
||||
this.linearFactorZ = linearFactorZ;
|
||||
this.angularFactorX = angularFactorX;
|
||||
this.angularFactorY = angularFactorY;
|
||||
this.angularFactorZ = angularFactorZ;
|
||||
|
||||
notifyOnAdd(init);
|
||||
notifyOnLateUpdate(lateUpdate);
|
||||
|
@ -152,6 +166,14 @@ class RigidBody extends Trait {
|
|||
body.setDamping(linearDamping, angularDamping);
|
||||
}
|
||||
|
||||
if (linearFactorX != 1.0 || linearFactorY != 1.0 || linearFactorZ != 1.0) {
|
||||
setLinearFactor(linearFactorX, linearFactorY, linearFactorZ);
|
||||
}
|
||||
|
||||
if (angularFactorX != 1.0 || angularFactorY != 1.0 || angularFactorZ != 1.0) {
|
||||
setAngularFactor(angularFactorX, angularFactorY, angularFactorZ);
|
||||
}
|
||||
|
||||
#if js
|
||||
//body.setUserIndex(nextId);
|
||||
untyped body.userIndex = id;
|
||||
|
|
|
@ -3000,6 +3000,12 @@ class ArmoryExporter:
|
|||
x['parameters'].append(str(rb.linear_damping))
|
||||
x['parameters'].append(str(rb.angular_damping))
|
||||
x['parameters'].append(str(rb.type == 'PASSIVE').lower())
|
||||
x['parameters'].append(str(bobject.arm_rb_linear_factor[0]))
|
||||
x['parameters'].append(str(bobject.arm_rb_linear_factor[1]))
|
||||
x['parameters'].append(str(bobject.arm_rb_linear_factor[2]))
|
||||
x['parameters'].append(str(bobject.arm_rb_angular_factor[0]))
|
||||
x['parameters'].append(str(bobject.arm_rb_angular_factor[1]))
|
||||
x['parameters'].append(str(bobject.arm_rb_angular_factor[2]))
|
||||
o['traits'].append(x)
|
||||
|
||||
# Soft bodies modifier
|
||||
|
|
|
@ -166,6 +166,8 @@ def init_properties():
|
|||
bpy.types.Object.arm_spawn = bpy.props.BoolProperty(name="Spawn", description="Auto-add this object when creating scene", default=True)
|
||||
bpy.types.Object.arm_mobile = bpy.props.BoolProperty(name="Mobile", description="Object moves during gameplay", default=True)
|
||||
bpy.types.Object.arm_soft_body_margin = bpy.props.FloatProperty(name="Soft Body Margin", description="Collision margin", default=0.04)
|
||||
bpy.types.Object.arm_rb_linear_factor = bpy.props.FloatVectorProperty(name="Linear Factor", size=3, description="Set to 0 to lock axis", default=[1,1,1])
|
||||
bpy.types.Object.arm_rb_angular_factor = bpy.props.FloatVectorProperty(name="Angular Factor", size=3, description="Set to 0 to lock axis", default=[1,1,1])
|
||||
bpy.types.Object.arm_animation_enabled = bpy.props.BoolProperty(name="Animation", description="Enable skinning & timeline animation", default=True)
|
||||
bpy.types.Object.arm_tilesheet = bpy.props.StringProperty(name="Tilesheet", description="Set tilesheet animation", default='')
|
||||
bpy.types.Object.arm_tilesheet_action = bpy.props.StringProperty(name="Tilesheet Action", description="Set startup action", default='')
|
||||
|
|
|
@ -117,6 +117,8 @@ class PhysicsPropsPanel(bpy.types.Panel):
|
|||
if obj == None:
|
||||
return
|
||||
|
||||
layout.prop(obj, 'arm_rb_linear_factor')
|
||||
layout.prop(obj, 'arm_rb_angular_factor')
|
||||
layout.prop(obj, 'arm_soft_body_margin')
|
||||
|
||||
# Menu in data region
|
||||
|
|
Loading…
Reference in a new issue