#include "CActor.hpp" #include "CActorParameters.hpp" #include "CStateManager.hpp" #include "Collision/CMaterialList.hpp" namespace urde { static CMaterialList MakeActorMaterialList(const CMaterialList& materialList, const CActorParameters& params) { CMaterialList ret = materialList; if (params.GetVisorParameters().x0_28_b3) ret.Add(EMaterialTypes::Fourteen); if (params.GetVisorParameters().x0_29_b4) ret.Add(EMaterialTypes::Fifteen); return ret; } CActor::CActor(TUniqueId uid, bool active, const std::string& name, const CEntityInfo& info, const zeus::CTransform&, CModelData&& mData, const CMaterialList& list, const CActorParameters& params, TUniqueId) : CEntity(uid, info, active, name), x68_(MakeActorMaterialList(list, params)), x70_(EMaterialTypes::Nineteen) { if (mData.x1c_normalModel) x64_modelData = std::make_unique(std::move(mData)); } void CActor::RemoveMaterial(EMaterialTypes t1, EMaterialTypes t2, EMaterialTypes t3, EMaterialTypes t4, CStateManager& mgr) { x68_.Remove(t1); RemoveMaterial(t2, t3, t4, mgr); } void CActor::RemoveMaterial(EMaterialTypes t1, EMaterialTypes t2, EMaterialTypes t3, CStateManager & mgr) { x68_.Remove(t1); RemoveMaterial(t2, t3, mgr); } void CActor::RemoveMaterial(EMaterialTypes t1, EMaterialTypes t2, CStateManager& mgr) { x68_.Remove(t1); } void CActor::RemoveMaterial(EMaterialTypes t, CStateManager& mgr) { x68_.Remove(t); mgr.UpdateObjectInLists(*this); } void CActor::AddMaterial(EMaterialTypes t1, EMaterialTypes t2, EMaterialTypes t3, EMaterialTypes t4, EMaterialTypes t5, CStateManager& mgr) { x68_.Add(t1); AddMaterial(t2, t3, t4, t5, mgr); } void CActor::AddMaterial(EMaterialTypes t1, EMaterialTypes t2, EMaterialTypes t3, EMaterialTypes t4, CStateManager& mgr) { x68_.Add(t1); AddMaterial(t2, t3, t4, mgr); } void CActor::AddMaterial(EMaterialTypes t1, EMaterialTypes t2, EMaterialTypes t3, CStateManager& mgr) { x68_.Add(t1); AddMaterial(t2, t3, mgr); } void CActor::AddMaterial(EMaterialTypes t1, EMaterialTypes t2, CStateManager& mgr) { x68_.Add(t1); AddMaterial(t2, mgr); } void CActor::AddMaterial(EMaterialTypes type, CStateManager& mgr) { x68_.Add(type); mgr.UpdateObjectInLists(*this); } }