Index: ps/trunk/source/graphics/Model.h =================================================================== --- ps/trunk/source/graphics/Model.h +++ ps/trunk/source/graphics/Model.h @@ -34,13 +34,6 @@ class CSkeletonAnimDef; class CSimulation2; -#define MODELFLAG_CASTSHADOWS (1<<0) -#define MODELFLAG_NOLOOPANIMATION (1<<1) -#define MODELFLAG_SILHOUETTE_DISPLAY (1<<2) -#define MODELFLAG_SILHOUETTE_OCCLUDER (1<<3) -#define MODELFLAG_IGNORE_LOS (1<<4) -#define MODELFLAG_FLOATONWATER (1<<5) - // Holds world information for a particular instance of a model in the game. class CModel : public CModelAbstract { Index: ps/trunk/source/graphics/Model.cpp =================================================================== --- ps/trunk/source/graphics/Model.cpp +++ ps/trunk/source/graphics/Model.cpp @@ -92,7 +92,7 @@ void CModel::CalcStaticObjectBounds() { PROFILE2("CalcStaticObjectBounds"); - m_pModelDef->GetMaxBounds(nullptr, !(m_Flags & MODELFLAG_NOLOOPANIMATION), m_ObjectBounds); + m_pModelDef->GetMaxBounds(nullptr, !(m_Flags & ModelFlag::NO_LOOP_ANIMATION), m_ObjectBounds); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -100,7 +100,7 @@ void CModel::CalcAnimatedObjectBounds(CSkeletonAnimDef* anim, CBoundingBoxAligned& result) { PROFILE2("CalcAnimatedObjectBounds"); - m_pModelDef->GetMaxBounds(anim, !(m_Flags & MODELFLAG_NOLOOPANIMATION), result); + m_pModelDef->GetMaxBounds(anim, !(m_Flags & ModelFlag::NO_LOOP_ANIMATION), result); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -218,7 +218,7 @@ ENSURE(m_pModelDef->GetNumBones() == m_Anim->m_AnimDef->GetNumKeys()); - m_Anim->m_AnimDef->BuildBoneMatrices(m_AnimTime, m_BoneMatrices, !(m_Flags & MODELFLAG_NOLOOPANIMATION)); + m_Anim->m_AnimDef->BuildBoneMatrices(m_AnimTime, m_BoneMatrices, !(m_Flags & ModelFlag::NO_LOOP_ANIMATION)); } else if (m_BoneMatrices) { @@ -265,7 +265,7 @@ objectHeight = cmpTerrain->GetExactGroundLevel(objTranslation.X, objTranslation.Z); // Object height is incorrect for floating objects. We use water height instead. - if (m_Flags & MODELFLAG_FLOATONWATER) + if (m_Flags & ModelFlag::FLOAT_ON_WATER) { CmpPtr cmpWaterManager(m_Simulation, SYSTEM_ENTITY); if (cmpWaterManager) @@ -337,10 +337,10 @@ if (anim) { - m_Flags &= ~MODELFLAG_NOLOOPANIMATION; + m_Flags &= ~ModelFlag::NO_LOOP_ANIMATION; if (once) - m_Flags |= MODELFLAG_NOLOOPANIMATION; + m_Flags |= ModelFlag::NO_LOOP_ANIMATION; // Not rigged or animation is not valid. if (!m_BoneMatrices || !anim->m_AnimDef) @@ -498,7 +498,7 @@ { m_Flags |= flags; - if (flags & MODELFLAG_IGNORE_LOS) + if (flags & ModelFlag::IGNORE_LOS) m_Material.AddShaderDefine(str_IGNORE_LOS, str_1); for (size_t i = 0; i < m_Props.size(); ++i) @@ -508,7 +508,7 @@ void CModel::RemoveShadowsRec() { - m_Flags &= ~MODELFLAG_CASTSHADOWS; + m_Flags &= ~ModelFlag::CAST_SHADOWS; m_Material.AddShaderDefine(str_DISABLE_RECEIVE_SHADOWS, str_1); Index: ps/trunk/source/graphics/ModelAbstract.h =================================================================== --- ps/trunk/source/graphics/ModelAbstract.h +++ ps/trunk/source/graphics/ModelAbstract.h @@ -30,6 +30,16 @@ class CModelDecal; class CModelParticleEmitter; +namespace ModelFlag +{ +static constexpr uint32_t CAST_SHADOWS{1 << 0}; +static constexpr uint32_t NO_LOOP_ANIMATION{1 << 1}; +static constexpr uint32_t SILHOUETTE_DISPLAY{1 << 2}; +static constexpr uint32_t SILHOUETTE_OCCLUDER{1 << 3}; +static constexpr uint32_t IGNORE_LOS{1 << 4}; +static constexpr uint32_t FLOAT_ON_WATER{1 << 5}; +} // namespace ModelFlag + /** * Abstract base class for graphical objects that are used by units, * or as props attached to other CModelAbstract objects. Index: ps/trunk/source/graphics/ObjectEntry.cpp =================================================================== --- ps/trunk/source/graphics/ObjectEntry.cpp +++ ps/trunk/source/graphics/ObjectEntry.cpp @@ -260,12 +260,12 @@ // Setup flags. if (m_Base->m_Properties.m_CastShadows) { - model->SetFlags(model->GetFlags() | MODELFLAG_CASTSHADOWS); + model->SetFlags(model->GetFlags() | ModelFlag::CAST_SHADOWS); } if (m_Base->m_Properties.m_FloatOnWater) { - model->SetFlags(model->GetFlags() | MODELFLAG_FLOATONWATER); + model->SetFlags(model->GetFlags() | ModelFlag::FLOAT_ON_WATER); } return true; Index: ps/trunk/source/graphics/Unit.cpp =================================================================== --- ps/trunk/source/graphics/Unit.cpp +++ ps/trunk/source/graphics/Unit.cpp @@ -137,7 +137,7 @@ newModel->ToCModel()->CopyAnimationFrom(m_Model->ToCModel()); // Copy flags that belong to this model instance (not those defined by the actor XML) - int instanceFlags = (MODELFLAG_SILHOUETTE_DISPLAY|MODELFLAG_SILHOUETTE_OCCLUDER|MODELFLAG_IGNORE_LOS) & m_Model->ToCModel()->GetFlags(); + int instanceFlags = (ModelFlag::SILHOUETTE_DISPLAY | ModelFlag::SILHOUETTE_OCCLUDER | ModelFlag::IGNORE_LOS) & m_Model->ToCModel()->GetFlags(); newModel->ToCModel()->AddFlagsRec(instanceFlags); } Index: ps/trunk/source/graphics/tests/test_Model.h =================================================================== --- ps/trunk/source/graphics/tests/test_Model.h +++ ps/trunk/source/graphics/tests/test_Model.h @@ -55,7 +55,7 @@ SPropPoint propPoint{}; model->AddProp(&propPoint, std::make_unique(simulation, material, modeldef), nullptr); - model->AddFlagsRec(MODELFLAG_IGNORE_LOS); + model->AddFlagsRec(ModelFlag::IGNORE_LOS); model->RemoveShadowsRec(); TS_ASSERT(HasMaterialDefine(model.get(), str_DISABLE_RECEIVE_SHADOWS)); Index: ps/trunk/source/renderer/SceneRenderer.cpp =================================================================== --- ps/trunk/source/renderer/SceneRenderer.cpp +++ ps/trunk/source/renderer/SceneRenderer.cpp @@ -325,12 +325,12 @@ { PROFILE("render models"); - m->CallModelRenderers(deviceCommandContext, contextCast, cullGroup, MODELFLAG_CASTSHADOWS); + m->CallModelRenderers(deviceCommandContext, contextCast, cullGroup, ModelFlag::CAST_SHADOWS); } { PROFILE("render transparent models"); - m->CallTranspModelRenderers(deviceCommandContext, contextCast, cullGroup, MODELFLAG_CASTSHADOWS); + m->CallTranspModelRenderers(deviceCommandContext, contextCast, cullGroup, ModelFlag::CAST_SHADOWS); } } @@ -1028,15 +1028,15 @@ { m->shadow.AddShadowReceiverBound(model->GetWorldBounds()); - if (model->GetFlags() & MODELFLAG_SILHOUETTE_OCCLUDER) + if (model->GetFlags() & ModelFlag::SILHOUETTE_OCCLUDER) m->silhouetteRenderer.AddOccluder(model); - if (model->GetFlags() & MODELFLAG_SILHOUETTE_DISPLAY) + if (model->GetFlags() & ModelFlag::SILHOUETTE_DISPLAY) m->silhouetteRenderer.AddCaster(model); } if (CULL_SHADOWS_CASCADE_0 <= m_CurrentCullGroup && m_CurrentCullGroup <= CULL_SHADOWS_CASCADE_3) { - if (!(model->GetFlags() & MODELFLAG_CASTSHADOWS)) + if (!(model->GetFlags() & ModelFlag::CAST_SHADOWS)) return; const int cascade = m_CurrentCullGroup - CULL_SHADOWS_CASCADE_0; Index: ps/trunk/source/simulation2/components/CCmpVisualActor.cpp =================================================================== --- ps/trunk/source/simulation2/components/CCmpVisualActor.cpp +++ ps/trunk/source/simulation2/components/CCmpVisualActor.cpp @@ -601,14 +601,14 @@ u32 modelFlags = 0; if (m_SilhouetteDisplay) - modelFlags |= MODELFLAG_SILHOUETTE_DISPLAY; + modelFlags |= ModelFlag::SILHOUETTE_DISPLAY; if (m_SilhouetteOccluder) - modelFlags |= MODELFLAG_SILHOUETTE_OCCLUDER; + modelFlags |= ModelFlag::SILHOUETTE_OCCLUDER; CmpPtr cmpVisibility(GetEntityHandle()); if (cmpVisibility && cmpVisibility->GetAlwaysVisible()) - modelFlags |= MODELFLAG_IGNORE_LOS; + modelFlags |= ModelFlag::IGNORE_LOS; model.ToCModel()->AddFlagsRec(modelFlags); }