Moves model flags to ModelAbstract.
Differential Revision: https://code.wildfiregames.com/D5146 This was SVN commit r27880.
This commit is contained in:
parent
6ef27d2ffe
commit
e2c5a62a19
@ -92,7 +92,7 @@ void CModel::CalcBounds()
|
||||
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::CalcStaticObjectBounds()
|
||||
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 @@ void CModel::ValidatePosition()
|
||||
|
||||
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 @@ void CModel::ValidatePosition()
|
||||
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<ICmpWaterManager> cmpWaterManager(m_Simulation, SYSTEM_ENTITY);
|
||||
if (cmpWaterManager)
|
||||
@ -337,10 +337,10 @@ bool CModel::SetAnimation(CSkeletonAnim* anim, bool once)
|
||||
|
||||
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 @@ void CModel::AddFlagsRec(int flags)
|
||||
{
|
||||
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::AddFlagsRec(int flags)
|
||||
|
||||
void CModel::RemoveShadowsRec()
|
||||
{
|
||||
m_Flags &= ~MODELFLAG_CASTSHADOWS;
|
||||
m_Flags &= ~ModelFlag::CAST_SHADOWS;
|
||||
|
||||
m_Material.AddShaderDefine(str_DISABLE_RECEIVE_SHADOWS, str_1);
|
||||
|
||||
|
@ -34,13 +34,6 @@ class CSkeletonAnim;
|
||||
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
|
||||
{
|
||||
|
@ -30,6 +30,16 @@ class CModel;
|
||||
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.
|
||||
|
@ -260,12 +260,12 @@ bool CObjectEntry::BuildVariation(const std::vector<const std::set<CStr>*>& comp
|
||||
// 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;
|
||||
|
@ -137,7 +137,7 @@ void CUnit::ReloadObject()
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ public:
|
||||
SPropPoint propPoint{};
|
||||
model->AddProp(&propPoint, std::make_unique<CModel>(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));
|
||||
|
@ -325,12 +325,12 @@ void CSceneRenderer::RenderShadowMap(
|
||||
|
||||
{
|
||||
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 @@ void CSceneRenderer::SubmitNonRecursive(CModel* model)
|
||||
{
|
||||
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;
|
||||
|
@ -601,14 +601,14 @@ void CCmpVisualActor::InitModel()
|
||||
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<ICmpVisibility> cmpVisibility(GetEntityHandle());
|
||||
if (cmpVisibility && cmpVisibility->GetAlwaysVisible())
|
||||
modelFlags |= MODELFLAG_IGNORE_LOS;
|
||||
modelFlags |= ModelFlag::IGNORE_LOS;
|
||||
|
||||
model.ToCModel()->AddFlagsRec(modelFlags);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user