~siretart/ubuntu/utopic/blender/libav10

« back to all changes in this revision

Viewing changes to source/gameengine/Physics/common/PHY_IPhysicsController.h

  • Committer: Reinhard Tartler
  • Date: 2014-05-31 01:50:05 UTC
  • mfrom: (14.2.27 sid)
  • Revision ID: siretart@tauware.de-20140531015005-ml6druahuj82nsav
mergeĀ fromĀ debian

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
class PHY_IMotionState;
38
38
class PHY_IPhysicsEnvironment;
39
39
 
 
40
class MT_Vector3;
 
41
class MT_Point3;
 
42
class MT_Matrix3x3;
 
43
 
40
44
/**
41
45
 * PHY_IPhysicsController is the abstract simplified Interface to a physical object.
42
46
 * It contains the IMotionState and IDeformableMesh Interfaces.
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;
62
67
 
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;
71
 
                
 
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;
 
77
 
 
78
                virtual MT_Scalar       GetMass()=0;
 
79
                virtual void            SetMass(MT_Scalar newmass)=0;
 
80
 
72
81
                // physics methods
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;
78
 
 
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;
 
88
 
 
89
                virtual void            SuspendDynamics(bool ghost=false)=0;
 
90
                virtual void            RestoreDynamics()=0;
 
91
 
80
92
                virtual void            SetActive(bool active)=0;
81
93
 
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;
86
99
 
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;
89
102
 
90
103
                virtual PHY_IPhysicsController* GetReplica() {return 0;}
 
104
                virtual PHY_IPhysicsController* GetReplicaForSensors() {return 0;}
91
105
 
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;
100
114
                virtual float GetLinVelocityMax() const=0;
101
115
                virtual void  SetLinVelocityMax(float val) = 0;
102
116
                
103
 
                class MT_Vector3        GetWorldPosition(class MT_Vector3& localpos);
 
117
                MT_Vector3      GetWorldPosition(MT_Vector3& localpos);
 
118
 
 
119
                // Shape control
 
120
                virtual void    AddCompoundChild(PHY_IPhysicsController* child) = 0;
 
121
                virtual void    RemoveCompoundChild(PHY_IPhysicsController* child) = 0;
 
122
 
 
123
 
 
124
                virtual bool IsDynamic() = 0;
 
125
                virtual bool IsCompound() = 0;
104
126
 
105
127
 
106
128
#ifdef WITH_CXX_GUARDEDALLOC