59
63
virtual class PHY_IMotionState* GetMotionState() = 0;
60
64
// controller replication
61
65
virtual void PostProcessReplica(class PHY_IMotionState* motionstate,class PHY_IPhysicsController* parentctrl)=0;
66
virtual void SetPhysicsEnvironment(class PHY_IPhysicsEnvironment *env)=0;
63
68
// kinematic methods
64
virtual void RelativeTranslate(float dlocX,float dlocY,float dlocZ,bool local)=0;
65
virtual void RelativeRotate(const float drot[12],bool local)=0;
66
virtual void getOrientation(float &quatImag0,float &quatImag1,float &quatImag2,float &quatReal)=0;
67
virtual void setOrientation(float quatImag0,float quatImag1,float quatImag2,float quatReal)=0;
68
virtual void setPosition(float posX,float posY,float posZ)=0;
69
virtual void getPosition(class MT_Vector3& pos) const=0;
70
virtual void setScaling(float scaleX,float scaleY,float scaleZ)=0;
69
virtual void RelativeTranslate(const MT_Vector3& dloc,bool local)=0;
70
virtual void RelativeRotate(const MT_Matrix3x3&,bool local)=0;
71
virtual MT_Matrix3x3 GetOrientation()=0;
72
virtual void SetOrientation(const MT_Matrix3x3& orn)=0;
73
virtual void SetPosition(const MT_Vector3& pos)=0;
74
virtual void GetPosition(MT_Vector3& pos) const=0;
75
virtual void SetScaling(const MT_Vector3& scale)=0;
76
virtual void SetTransform()=0;
78
virtual MT_Scalar GetMass()=0;
79
virtual void SetMass(MT_Scalar newmass)=0;
73
virtual void ApplyTorque(float torqueX,float torqueY,float torqueZ,bool local)=0;
74
virtual void ApplyForce(float forceX,float forceY,float forceZ,bool local)=0;
75
virtual void SetAngularVelocity(float ang_velX,float ang_velY,float ang_velZ,bool local)=0;
76
virtual void SetLinearVelocity(float lin_velX,float lin_velY,float lin_velZ,bool local)=0;
77
virtual void resolveCombinedVelocities(float linvelX,float linvelY,float linvelZ,float angVelX,float angVelY,float angVelZ) = 0;
79
virtual void applyImpulse(float attachX,float attachY,float attachZ, float impulseX,float impulseY,float impulseZ)=0;
82
virtual void ApplyImpulse(const MT_Point3& attach, const MT_Vector3& impulse)=0;
83
virtual void ApplyTorque(const MT_Vector3& torque,bool local)=0;
84
virtual void ApplyForce(const MT_Vector3& force,bool local)=0;
85
virtual void SetAngularVelocity(const MT_Vector3& ang_vel,bool local)=0;
86
virtual void SetLinearVelocity(const MT_Vector3& lin_vel,bool local)=0;
87
virtual void ResolveCombinedVelocities(float linvelX,float linvelY,float linvelZ,float angVelX,float angVelY,float angVelZ) = 0;
89
virtual void SuspendDynamics(bool ghost=false)=0;
90
virtual void RestoreDynamics()=0;
80
92
virtual void SetActive(bool active)=0;
82
94
// reading out information from physics
83
virtual void GetLinearVelocity(float& linvX,float& linvY,float& linvZ)=0;
84
virtual void GetVelocity(const float posX,const float posY,const float posZ,float& linvX,float& linvY,float& linvZ)=0;
85
virtual void getReactionForce(float& forceX,float& forceY,float& forceZ)=0;
95
virtual MT_Vector3 GetLinearVelocity()=0;
96
virtual MT_Vector3 GetAngularVelocity()=0;
97
virtual MT_Vector3 GetVelocity(const MT_Point3& pos)=0;
98
virtual MT_Vector3 GetLocalInertia()=0;
87
100
// dyna's that are rigidbody are free in orientation, dyna's with non-rigidbody are restricted
88
virtual void setRigidBody(bool rigid)=0;
101
virtual void SetRigidBody(bool rigid)=0;
90
103
virtual PHY_IPhysicsController* GetReplica() {return 0;}
104
virtual PHY_IPhysicsController* GetReplicaForSensors() {return 0;}
92
virtual void calcXform() =0;
106
virtual void CalcXform() =0;
93
107
virtual void SetMargin(float margin) =0;
94
108
virtual float GetMargin() const=0;
95
109
virtual float GetRadius() const=0;