diff options
Diffstat (limited to '')
-rw-r--r-- | source/Entity.cpp | 20 | ||||
-rw-r--r-- | source/Entity.h | 9 |
2 files changed, 29 insertions, 0 deletions
diff --git a/source/Entity.cpp b/source/Entity.cpp index 5f14a5e53..c614c8e9c 100644 --- a/source/Entity.cpp +++ b/source/Entity.cpp @@ -33,6 +33,7 @@ cEntity::cEntity(eEntityType a_EntityType, double a_X, double a_Y, double a_Z) , m_HeadYaw( 0.0 ) , m_Rot(0.0, 0.0, 0.0) , m_Pos(a_X, a_Y, a_Z) + , m_Mass (0.001) //Default 1g , m_bDirtyHead(true) , m_bDirtyOrientation(true) , m_bDirtyPosition(true) @@ -506,6 +507,25 @@ void cEntity::SetHeadYaw(double a_HeadYaw) +void cEntity::SetMass(double a_Mass) +{ + if (a_Mass > 0) + { + m_Mass = a_Mass; + } + else + { + //Make sure that mass is not zero. 1g is the default because we + //have to choose a number. It's perfectly legal to have a mass + //less than 1g as long as is NOT equal or less than zero. + m_Mass = 0.001; + } +} + + + + + void cEntity::SetRotation(double a_Rotation) { m_Rot.x = a_Rotation; diff --git a/source/Entity.h b/source/Entity.h index 3009bc611..779ce5358 100644 --- a/source/Entity.h +++ b/source/Entity.h @@ -107,6 +107,7 @@ public: cWorld * GetWorld(void) const { return m_World; } double GetHeadYaw (void) const {return m_HeadYaw; } + double GetMass (void) const {return m_Mass; } const Vector3d & GetPosition (void) const {return m_Pos; } double GetPosX (void) const {return m_Pos.x; } double GetPosY (void) const {return m_Pos.y; } @@ -125,6 +126,7 @@ public: int GetChunkZ(void) const {return FAST_FLOOR_DIV(((int)m_Pos.z), cChunkDef::Width); } void SetHeadYaw (double a_HeadYaw); + void SetMass (double a_Mass); void SetPosX (double a_PosX); void SetPosY (double a_PosY); void SetPosZ (double a_PosZ); @@ -247,11 +249,18 @@ protected: void ReferencedBy( cEntity*& a_EntityPtr ); void Dereference( cEntity*& a_EntityPtr ); private: + //Measured in degrees (MAX 360°) double m_HeadYaw; + //Measured in meter/second (m/s) Vector3d m_Speed; + //Measured in degrees (MAX 360°) Vector3d m_Rot; + //Measured in meters (1 meter = 1 block) (m) Vector3d m_Pos; + //Measured in meter/second Vector3d m_WaterSpeed; + //Measured in Kilograms (Kg) + double m_Mass } ; // tolua_export typedef std::list<cEntity *> cEntityList; |