2016-02-13 09:02:47 +00:00
|
|
|
#ifndef __PSHAG_CACTOR_HPP__
|
|
|
|
#define __PSHAG_CACTOR_HPP__
|
2015-08-22 01:58:41 +00:00
|
|
|
|
|
|
|
#include "CEntity.hpp"
|
2015-11-02 18:45:39 +00:00
|
|
|
#include <MathLib.hpp>
|
2015-08-22 01:58:41 +00:00
|
|
|
|
2016-02-13 09:02:47 +00:00
|
|
|
namespace pshag
|
2015-08-22 01:58:41 +00:00
|
|
|
{
|
2015-11-02 18:45:39 +00:00
|
|
|
|
2015-11-21 01:16:07 +00:00
|
|
|
enum class ECollisionResponseType
|
2015-11-02 18:45:39 +00:00
|
|
|
{
|
2015-11-21 01:16:07 +00:00
|
|
|
Unknown12 = 0xC,
|
2015-11-02 18:45:39 +00:00
|
|
|
};
|
|
|
|
|
2015-11-21 01:16:07 +00:00
|
|
|
enum class EMaterialTypes
|
2015-11-02 18:45:39 +00:00
|
|
|
{
|
|
|
|
};
|
|
|
|
|
2015-08-22 01:58:41 +00:00
|
|
|
class CModelData;
|
|
|
|
class CMaterialList;
|
|
|
|
class CActorParameters;
|
2015-11-02 18:45:39 +00:00
|
|
|
class CWeaponMode;
|
2015-08-22 01:58:41 +00:00
|
|
|
|
|
|
|
class CActor : public CEntity
|
|
|
|
{
|
2015-11-02 18:45:39 +00:00
|
|
|
protected:
|
2015-11-21 01:16:07 +00:00
|
|
|
enum class Flags
|
2015-11-02 18:45:39 +00:00
|
|
|
{
|
|
|
|
Unknown5 = (1 << 5),
|
|
|
|
Unknown6 = (1 << 6),
|
|
|
|
Unknown7 = (1 << 7),
|
|
|
|
};
|
|
|
|
|
|
|
|
Zeus::CTransform x34_transform;
|
|
|
|
float x40_unknown;
|
|
|
|
float x50_unknown;
|
|
|
|
float x60_unknown;
|
|
|
|
u32 x68_unknown;
|
|
|
|
u32 x6c_unknown;
|
|
|
|
bool xd0_b0_flags : 1;
|
|
|
|
bool xd0_b1_flags : 1;
|
|
|
|
bool xd0_b2_flags : 1;
|
2015-08-22 01:58:41 +00:00
|
|
|
public:
|
|
|
|
CActor(TUniqueId, bool, const std::string&, const CEntityInfo&,
|
2015-11-02 18:45:39 +00:00
|
|
|
const Zeus::CTransform&, const CModelData&, const CMaterialList&,
|
2015-08-22 01:58:41 +00:00
|
|
|
const CActorParameters&, TUniqueId);
|
2015-10-29 07:52:15 +00:00
|
|
|
|
|
|
|
virtual void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) {}
|
2015-11-02 18:45:39 +00:00
|
|
|
virtual Zeus::CVector3f GetAimPosition(const CStateManager&, float)
|
|
|
|
{ return Zeus::CVector3f(x40_unknown, x50_unknown, x60_unknown); }
|
|
|
|
|
|
|
|
virtual bool ValidAimTarget() { return true; }
|
|
|
|
virtual bool ValidOrbitTarget() { return true; }
|
|
|
|
virtual bool GetOrbitDistanceCheck() { return true; }
|
|
|
|
virtual Zeus::CVector3f GetOrbitPosition()
|
|
|
|
{ return Zeus::CVector3f(x40_unknown, x50_unknown, x60_unknown); }
|
|
|
|
|
2015-11-21 01:16:07 +00:00
|
|
|
virtual ECollisionResponseType GetCollisionResponseType(const Zeus::CVector3f&, const Zeus::CVector3f&, CWeaponMode&, int) { return ECollisionResponseType::Unknown12; }
|
2015-11-02 18:45:39 +00:00
|
|
|
void RemoveMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&){}
|
|
|
|
void RemoveMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&){ }
|
|
|
|
void RemoveMaterial(EMaterialTypes, EMaterialTypes, CStateManager&){ }
|
|
|
|
void RemoveMaterial(EMaterialTypes, CStateManager&){ }
|
|
|
|
void AddMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&){ }
|
|
|
|
void AddMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&){}
|
|
|
|
void AddMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&){ }
|
|
|
|
void AddMaterial(EMaterialTypes, EMaterialTypes, CStateManager&){ }
|
|
|
|
void AddMaterial(EMaterialTypes, CStateManager&){ }
|
|
|
|
|
|
|
|
virtual void SetActive(bool active)
|
|
|
|
{
|
|
|
|
//xd0_flags |= (Unknown5 | Unknown6 | Unknown7);
|
|
|
|
CEntity::SetActive(active);
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual void SetCallTouch(bool callTouch)
|
|
|
|
{
|
|
|
|
//xd1_flags = Unknown6
|
|
|
|
}
|
2015-08-22 01:58:41 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-02-13 09:02:47 +00:00
|
|
|
#endif // __PSHAG_CACTOR_HPP__
|