Notify script nodes when their properties are modified

This commit is contained in:
parax0
2016-01-30 11:21:29 -07:00
parent b4c8226e15
commit 2e6024b413
13 changed files with 191 additions and 41 deletions

View File

@@ -31,11 +31,10 @@ CScriptObject::~CScriptObject()
mpActive = mpTemplate->FindActive(mpProperties);
mpLightParameters = mpTemplate->FindLightParameters(mpProperties);
mHasInGameModel = mpTemplate->HasInGameModel(mpProperties);
mVolumeShape = mpTemplate->VolumeShape(this);
mVolumeScale = mpTemplate->VolumeScale(this);
EvaluateDisplayModel();
EvaluateBillboard();
EvaluateCollisionModel();
EvaluateVolume();
}
void CScriptObject::EvaluateDisplayModel()
@@ -53,6 +52,23 @@ void CScriptObject::EvaluateCollisionModel()
mpCollision = mpTemplate->FindCollision(mpProperties);
}
void CScriptObject::EvaluateVolume()
{
mVolumeShape = mpTemplate->VolumeShape(this);
mVolumeScale = mpTemplate->VolumeScale(this);
}
bool CScriptObject::IsEditorProperty(IProperty *pProp)
{
return ( (pProp == mpInstanceName) ||
(pProp == mpPosition) ||
(pProp == mpRotation) ||
(pProp == mpScale) ||
(pProp == mpActive) ||
(pProp->Parent() == mpLightParameters)
);
}
// ************ GETTERS ************
IProperty* CScriptObject::PropertyByIndex(u32 index) const
{

View File

@@ -48,6 +48,8 @@ public:
void EvaluateDisplayModel();
void EvaluateBillboard();
void EvaluateCollisionModel();
void EvaluateVolume();
bool IsEditorProperty(IProperty *pProp);
CScriptTemplate* Template() const;
CMasterTemplate* MasterTemplate() const;

View File

@@ -283,6 +283,13 @@ public:
mAcceptedExtensions = rkExtensions;
}
bool AcceptsExtension(const TString& rkExtension)
{
for (auto it = mAcceptedExtensions.begin(); it != mAcceptedExtensions.end(); it++)
if (*it == rkExtension) return true;
return false;
}
const TStringList& Extensions() const
{
return mAcceptedExtensions;
@@ -404,10 +411,16 @@ class CBitfieldTemplate : public TLongTemplate
public:
CBitfieldTemplate(u32 ID, CStructTemplate *pParent = 0)
: TLongTemplate(ID, pParent) {}
: TLongTemplate(ID, pParent)
{
mDefaultValue.SetHexStringOutput(true);
}
CBitfieldTemplate(u32 ID, const TString& rkName, ECookPreference CookPreference, CStructTemplate *pParent = 0)
: TLongTemplate(ID, rkName, CookPreference, pParent) {}
: TLongTemplate(ID, rkName, CookPreference, pParent)
{
mDefaultValue.SetHexStringOutput(true);
}
virtual EPropertyType Type() const { return eBitfieldProperty; }
virtual bool CanHaveDefault() const { return true; }