Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ab330f0
Added functions for object properties
lex128 Sep 13, 2016
b3c0e98
Merge branch 'master' into feature/objectProperties
lex128 Oct 7, 2017
c084287
Tabs
lex128 Oct 8, 2017
1e01cdd
More correct OOP vars
lex128 Oct 13, 2017
debd106
Merge remote-tracking branch 'upstream/master' into feature/objectPro…
Feb 25, 2018
d3b0b93
Merge remote-tracking branch 'upstream/master' into feature/objectPro…
Feb 26, 2018
d7bed51
Return Vector3 in Object.centerOfMass
Feb 26, 2018
14a1abb
Tiny comment corrections
Feb 26, 2018
cfe2644
Combining functions
lex128 May 2, 2018
b529577
Merge branch 'feature/objectProperties' of https://github.com/lex128/…
lex128 May 2, 2018
b8bdc10
Deprecate get/setObjectMass
lex128 May 2, 2018
f4e0a28
Merge branch 'master' of https://github.com/multitheftauto/mtasa-blue…
lex128 May 2, 2018
f015e8a
Clang format
lex128 May 2, 2018
d4b5374
Merge branch 'master' into feature/objectProperties
lex128 Jul 23, 2018
9c57135
Merge branch 'master' into feature/objectProperties
qaisjp Aug 4, 2018
1c0d84e
rem extra lines
qaisjp Aug 4, 2018
5531b87
rem extra lines again
qaisjp Aug 4, 2018
ff661b8
comment out deprecation and save it for later
qaisjp Aug 4, 2018
5e04140
Merge branch 'master' into feature/objectProperties
qaisjp Sep 5, 2018
24b5009
Merge branch 'next' into feature/objectProperties
qaisjp Sep 6, 2018
3fa2635
Fix formatting
qaisjp Sep 6, 2018
97b8b0f
Reset CResourceChecker.Data.h
qaisjp Sep 6, 2018
41d4155
Merge getObjectProperties in getObjectProperty
qaisjp Sep 6, 2018
d970844
Fix oop
qaisjp Sep 6, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions Client/game_sa/CPhysicalSA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,16 @@ void CPhysicalSA::SetTurnMass(float fTurnMass)
((CPhysicalSAInterface*)this->GetInterface())->m_fTurnMass = fTurnMass;
}

float CPhysicalSA::GetAirResistance(void)
{
return ((CPhysicalSAInterface*)this->GetInterface())->m_fAirResistance;
}

void CPhysicalSA::SetAirResistance(float fAirResistance)
{
((CPhysicalSAInterface*)this->GetInterface())->m_fAirResistance = fAirResistance;
}

float CPhysicalSA::GetElasticity(void)
{
return ((CPhysicalSAInterface*)this->GetInterface())->m_fElasticity;
Expand All @@ -155,6 +165,17 @@ void CPhysicalSA::SetBuoyancyConstant(float fBuoyancyConstant)
((CPhysicalSAInterface*)this->GetInterface())->m_fBuoyancyConstant = fBuoyancyConstant;
}

void CPhysicalSA::GetCenterOfMass(CVector & vecCenterOfMass)
{
vecCenterOfMass = ((CPhysicalSAInterface*)this->GetInterface())->m_vecCenterOfMass;
}


void CPhysicalSA::SetCenterOfMass(CVector & vecCenterOfMass)
{
((CPhysicalSAInterface*)this->GetInterface())->m_vecCenterOfMass = vecCenterOfMass;
}

VOID CPhysicalSA::ProcessCollision()
{
DEBUG_TRACE("VOID CPhysicalSA::ProcessCollision()");
Expand Down
13 changes: 5 additions & 8 deletions Client/game_sa/CPhysicalSA.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
*
*****************************************************************************/

#ifndef __CGAMESA_PHYSICAL
#define __CGAMESA_PHYSICAL
#pragma once

#include <game/CPhysical.h>
#include "CEntitySA.h"
Expand Down Expand Up @@ -125,10 +124,14 @@ class CPhysicalSA : public virtual CPhysical, public virtual CEntitySA
void SetMass(float fMass);
float GetTurnMass(void);
void SetTurnMass(float fTurnMass);
float GetAirResistance(void);
void SetAirResistance(float fAirResistance);
float GetElasticity(void);
void SetElasticity(float fElasticity);
float GetBuoyancyConstant(void);
void SetBuoyancyConstant(float fBuoyancyConstant);
void GetCenterOfMass(CVector& vecCenterOfMass);
void SetCenterOfMass(CVector& vecCenterOfMass);

void ProcessCollision(void);
void AddToMovingList(void);
Expand All @@ -155,10 +158,6 @@ class CPhysicalSA : public virtual CPhysical, public virtual CEntitySA
/*
VOID SetMassMultiplier(FLOAT fMassMultiplier);
FLOAT GetMassMultiplier();
VOID SetAirResistance(FLOAT fAirResistance);
FLOAT GetAirResistance();
VOID SetCenterOfMass(CVector * vecCenterOfMass);
CVector * GetCenterOfMass();

BOOL GetExtraHeavy();
VOID SetExtraHeavy(BOOL bExtraHeavy);
Expand All @@ -173,5 +172,3 @@ class CPhysicalSA : public virtual CPhysical, public virtual CEntitySA
BYTE GetLevel();
VOID SetLevel(BYTE LivesInThisLevel);*/
};

#endif
99 changes: 97 additions & 2 deletions Client/mods/deathmatch/logic/CClientObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ CClientObject::CClientObject(CClientManager* pManager, ElementID ID, unsigned sh
m_bBreakingDisabled = false;
m_bRespawnEnabled = true;
m_fMass = -1.0f;
m_fTurnMass = -1.0f;
m_fAirResistance = -1.0f;
m_fElasticity = -1.0f;
m_fBuoyancyConstant = -1.0f;
m_vecCenterOfMass = CVector(0.0f, 0.0f, 0.0f);

m_pModelInfo = g_pGame->GetModelInfo(usModel);

Expand Down Expand Up @@ -511,10 +516,20 @@ void CClientObject::Create(void)
SetAlpha(m_ucAlpha);
m_pObject->SetHealth(m_fHealth);

// Set object mass
// Set object properties
if (m_fMass != -1.0f)
m_pObject->SetMass(m_fMass);

if (m_fTurnMass != -1.0f)
m_pObject->SetTurnMass(m_fTurnMass);
if (m_fAirResistance != -1.0f)
m_pObject->SetAirResistance(m_fAirResistance);
if (m_fElasticity != -1.0f)
m_pObject->SetElasticity(m_fElasticity);
if (m_fBuoyancyConstant != -1.0f)
m_pObject->SetBuoyancyConstant(m_fBuoyancyConstant);
if (m_vecCenterOfMass.fX != 0.0f || m_vecCenterOfMass.fY != 0.0f || m_vecCenterOfMass.fZ != 0.0f)
m_pObject->SetCenterOfMass(m_vecCenterOfMass);

// Reattach to an entity + any entities attached to this
ReattachEntities();

Expand Down Expand Up @@ -730,6 +745,86 @@ void CClientObject::SetMass(float fMass)
m_fMass = fMass;
}

float CClientObject::GetTurnMass(void)
{
if (m_pObject)
return m_pObject->GetTurnMass();

return m_fTurnMass;
}

void CClientObject::SetTurnMass(float fTurnMass)
{
if (m_pObject)
m_pObject->SetTurnMass(fTurnMass);

m_fTurnMass = fTurnMass;
}

float CClientObject::GetAirResistance(void)
{
if (m_pObject)
return m_pObject->GetAirResistance();

return m_fAirResistance;
}

void CClientObject::SetAirResistance(float fAirResistance)
{
if (m_pObject)
m_pObject->SetAirResistance(fAirResistance);

m_fAirResistance = fAirResistance;
}

float CClientObject::GetElasticity(void)
{
if (m_pObject)
return m_pObject->GetElasticity();

return m_fElasticity;
}

void CClientObject::SetElasticity(float fElasticity)
{
if (m_pObject)
m_pObject->SetElasticity(fElasticity);

m_fElasticity = fElasticity;
}

float CClientObject::GetBuoyancyConstant(void)
{
if (m_pObject)
return m_pObject->GetBuoyancyConstant();

return m_fBuoyancyConstant;
}

void CClientObject::SetBuoyancyConstant(float fBuoyancyConstant)
{
if (m_pObject)
m_pObject->SetBuoyancyConstant(fBuoyancyConstant);

m_fBuoyancyConstant = fBuoyancyConstant;
}

void CClientObject::GetCenterOfMass(CVector& vecCenterOfMass) const
{
if (m_pObject)
m_pObject->GetCenterOfMass(vecCenterOfMass);
else
vecCenterOfMass = m_vecCenterOfMass;
}

void CClientObject::SetCenterOfMass(const CVector& vecCenterOfMass)
{
if (m_pObject)
m_pObject->SetCenterOfMass(const_cast<CVector&>(vecCenterOfMass));

m_vecCenterOfMass = vecCenterOfMass;
}

void CClientObject::SetVisibleInAllDimensions(bool bVisible, unsigned short usNewDimension)
{
m_bVisibleInAllDimensions = bVisible;
Expand Down
15 changes: 15 additions & 0 deletions Client/mods/deathmatch/logic/CClientObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,16 @@ class CClientObject : public CClientStreamElement

float GetHealth(void);
void SetHealth(float fHealth);
float GetTurnMass(void);
void SetTurnMass(float fTurnMass);
float GetAirResistance(void);
void SetAirResistance(float fAirResistance);
float GetElasticity(void);
void SetElasticity(float fElasticity);
float GetBuoyancyConstant(void);
void SetBuoyancyConstant(float fBuoyancyConstant);
void GetCenterOfMass(CVector& vecCenterOfMass) const;
void SetCenterOfMass(const CVector& vecCenterOfMass);

bool IsBreakable(bool bCheckModelList = true);
bool SetBreakable(bool bBreakable);
Expand Down Expand Up @@ -135,6 +145,11 @@ class CClientObject : public CClientStreamElement
bool m_bBeingRespawned;
bool m_bRespawnEnabled;
float m_fMass;
float m_fTurnMass;
float m_fAirResistance;
float m_fElasticity;
float m_fBuoyancyConstant;
CVector m_vecCenterOfMass;
bool m_bVisibleInAllDimensions = false;

CVector m_vecMoveSpeed;
Expand Down
100 changes: 99 additions & 1 deletion Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1081,7 +1081,6 @@ bool CStaticFunctionDefinitions::SetElementRotation(CClientEntity& Entity, const
{
Vehicle.SetRotationDegrees(ConvertEulerRotationOrder(vecRotation, argumentRotOrder, EULER_ZYX));
}

break;
}
case CCLIENTOBJECT:
Expand Down Expand Up @@ -3765,6 +3764,36 @@ bool CStaticFunctionDefinitions::GetObjectMass(CClientObject& Object, float& fMa
return true;
}

bool CStaticFunctionDefinitions::GetObjectTurnMass(CClientObject& Object, float& fTurnMass)
{
fTurnMass = Object.GetTurnMass();
return true;
}

bool CStaticFunctionDefinitions::GetObjectAirResistance(CClientObject& Object, float& fAirResistance)
{
fAirResistance = Object.GetAirResistance();
return true;
}

bool CStaticFunctionDefinitions::GetObjectElasticity(CClientObject& Object, float& fElasticity)
{
fElasticity = Object.GetElasticity();
return true;
}

bool CStaticFunctionDefinitions::GetObjectBuoyancyConstant(CClientObject& Object, float& fBuoyancyConstant)
{
fBuoyancyConstant = Object.GetBuoyancyConstant();
return true;
}

bool CStaticFunctionDefinitions::GetObjectCenterOfMass(CClientObject& Object, CVector& vecCenterOfMass)
{
Object.GetCenterOfMass(vecCenterOfMass);
return true;
}

bool CStaticFunctionDefinitions::SetObjectRotation(CClientEntity& Entity, const CVector& vecRotation)
{
RUN_CHILDREN(SetObjectRotation(**iter, vecRotation))
Expand Down Expand Up @@ -3935,6 +3964,75 @@ bool CStaticFunctionDefinitions::SetObjectMass(CClientEntity& Entity, float fMas
return false;
}

bool CStaticFunctionDefinitions::SetObjectTurnMass(CClientEntity& Entity, float fTurnMass)
{
if (fTurnMass >= 0.0f)
{
RUN_CHILDREN(SetObjectTurnMass(**iter, fTurnMass))

if (IS_OBJECT(&Entity))
{
CDeathmatchObject& Object = static_cast<CDeathmatchObject&>(Entity);
Object.SetTurnMass(fTurnMass);
return true;
}
}
return false;
}

bool CStaticFunctionDefinitions::SetObjectAirResistance(CClientEntity& Entity, float fAirResistance)
{
RUN_CHILDREN(SetObjectAirResistance(**iter, fAirResistance))

if (IS_OBJECT(&Entity))
{
CDeathmatchObject& Object = static_cast<CDeathmatchObject&>(Entity);
Object.SetAirResistance(fAirResistance);
return true;
}
return false;
}

bool CStaticFunctionDefinitions::SetObjectElasticity(CClientEntity& Entity, float fElasticity)
{
RUN_CHILDREN(SetObjectElasticity(**iter, fElasticity))

if (IS_OBJECT(&Entity))
{
CDeathmatchObject& Object = static_cast<CDeathmatchObject&>(Entity);
Object.SetElasticity(fElasticity);
return true;
}
return false;
}

bool CStaticFunctionDefinitions::SetObjectBuoyancyConstant(CClientEntity& Entity, float fBuoyancyConstant)
{
RUN_CHILDREN(SetObjectBuoyancyConstant(**iter, fBuoyancyConstant))

if (IS_OBJECT(&Entity))
{
CDeathmatchObject& Object = static_cast<CDeathmatchObject&>(Entity);
Object.SetBuoyancyConstant(fBuoyancyConstant);
return true;
}
return false;
}

bool CStaticFunctionDefinitions::SetObjectCenterOfMass(CClientEntity& Entity, const CVector& vecCenterOfMass)
{
RUN_CHILDREN(SetObjectCenterOfMass(**iter, vecCenterOfMass))

if (IS_OBJECT(&Entity))
{
CDeathmatchObject& Object = static_cast<CDeathmatchObject&>(Entity);
Object.SetCenterOfMass(vecCenterOfMass);
return true;
}

return false;
}

bool CStaticFunctionDefinitions::SetObjectVisibleInAllDimensions(CClientEntity& Entity, bool bVisible, unsigned short usNewDimension)
{
RUN_CHILDREN(SetObjectVisibleInAllDimensions(**iter, bVisible, usNewDimension))
Expand Down
10 changes: 10 additions & 0 deletions Client/mods/deathmatch/logic/CStaticFunctionDefinitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,11 @@ class CStaticFunctionDefinitions
static bool GetObjectScale(CClientObject& Object, CVector& vecScale);
static bool IsObjectBreakable(CClientObject& Object, bool& bBreakable);
static bool GetObjectMass(CClientObject& Object, float& fMass);
static bool GetObjectTurnMass(CClientObject& Object, float& fTurnMass);
static bool GetObjectAirResistance(CClientObject& Object, float& fAirResistance);
static bool GetObjectElasticity(CClientObject& Object, float& fElasticity);
static bool GetObjectBuoyancyConstant(CClientObject& Object, float& fBuoyancyConstant);
static bool GetObjectCenterOfMass(CClientObject& Object, CVector& vecCenterOfMass);
static bool IsObjectVisibleInAllDimensions(CClientEntity& Entity);

// Object set funcs
Expand All @@ -288,6 +293,11 @@ class CStaticFunctionDefinitions
static bool RespawnObject(CClientEntity& Entity);
static bool ToggleObjectRespawn(CClientEntity& Entity, bool bRespawn);
static bool SetObjectMass(CClientEntity& Entity, float fMass);
static bool SetObjectTurnMass(CClientEntity& Entity, float fTurnMass);
static bool SetObjectAirResistance(CClientEntity& Entity, float fAirResistance);
static bool SetObjectElasticity(CClientEntity& Entity, float fElasticity);
static bool SetObjectBuoyancyConstant(CClientEntity& Entity, float fBuoyancyConstant);
static bool SetObjectCenterOfMass(CClientEntity& Entity, const CVector& vecCenterOfMass);
static bool SetObjectVisibleInAllDimensions(CClientEntity& Entity, bool bVisible, unsigned short usNewDimension = 0);

// Radar-area get funcs
Expand Down
10 changes: 10 additions & 0 deletions Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,16 @@ ADD_ENUM(VEHICLE_COMPONENT_EXTRA_1, "extra_1")
ADD_ENUM(VEHICLE_COMPONENT_EXTRA_2, "extra_2")
IMPLEMENT_ENUM_END("vehicle-component")

IMPLEMENT_ENUM_BEGIN(eObjectProperty)
ADD_ENUM(OBJECT_PROPERTY_ALL, "all")
ADD_ENUM(OBJECT_PROPERTY_MASS, "mass")
ADD_ENUM(OBJECT_PROPERTY_TURNMASS, "turn_mass")
ADD_ENUM(OBJECT_PROPERTY_AIRRESISTANCE, "air_resistance")
ADD_ENUM(OBJECT_PROPERTY_ELASTICITY, "elasticity")
ADD_ENUM(OBJECT_PROPERTY_CENTEROFMASS, "center_of_mass")
ADD_ENUM(OBJECT_PROPERTY_BUOYANCY, "buoyancy")
IMPLEMENT_ENUM_END("object-property")

IMPLEMENT_ENUM_BEGIN(eFontType)
ADD_ENUM(FONT_DEFAULT, "default")
ADD_ENUM(FONT_DEFAULT_BOLD, "default-bold")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ DECLARE_ENUM(EEntityTypeMask);
DECLARE_ENUM(eWeaponState);
DECLARE_ENUM(eWeaponFlags);
DECLARE_ENUM(eVehicleComponent);
DECLARE_ENUM(eObjectProperty);
DECLARE_ENUM(eFontType);
DECLARE_ENUM(eFontQuality);
DECLARE_ENUM(eAudioLookupIndex);
Expand Down
Loading