mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-18 09:25:31 +00:00
Make enum properties track the enumerator ID internally instead of the index + CUniqueID bugfix
This commit is contained in:
@@ -36,9 +36,7 @@ void CScriptCooker::WriteProperty(IProperty *pProp)
|
||||
case eEnumProperty:
|
||||
{
|
||||
TEnumProperty *pEnumCast = static_cast<TEnumProperty*>(pProp);
|
||||
CEnumTemplate *pEnumTemp = static_cast<CEnumTemplate*>(pEnumCast->Template());
|
||||
u32 ID = pEnumTemp->EnumeratorID(pEnumCast->Get());
|
||||
mpSCLY->WriteLong(ID);
|
||||
mpSCLY->WriteLong(pEnumCast->Get());
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -63,9 +63,12 @@ void CScriptLoader::ReadProperty(IProperty *pProp, u32 Size, IInputStream& SCLY)
|
||||
TEnumProperty *pEnumCast = static_cast<TEnumProperty*>(pProp);
|
||||
CEnumTemplate *pEnumTemp = static_cast<CEnumTemplate*>(pTemp);
|
||||
u32 ID = SCLY.ReadLong();
|
||||
u32 index = pEnumTemp->EnumeratorIndex(ID);
|
||||
if (index == -1) Log::FileError(SCLY.GetSourceString(), SCLY.Tell() - 4, "Enum property \"" + pEnumTemp->Name() + "\" in struct \"" + pTemp->Name() + "\" has invalid enumerator value: " + TString::HexString(ID, true, true, 8));
|
||||
pEnumCast->Set(index);
|
||||
|
||||
// Validate
|
||||
u32 Index = pEnumTemp->EnumeratorIndex(ID);
|
||||
if (Index == -1) Log::FileError(SCLY.GetSourceString(), SCLY.Tell() - 4, "Enum property \"" + pEnumTemp->Name() + "\" in struct \"" + pTemp->Name() + "\" has invalid enumerator value: " + TString::HexString(ID, true, true, 8));
|
||||
|
||||
pEnumCast->Set(ID);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -153,10 +153,7 @@ s32 CScriptTemplate::CheckVolumeConditions(CScriptObject *pObj, bool LogErrors)
|
||||
break;
|
||||
|
||||
case eEnumProperty: {
|
||||
TEnumProperty *pEnumCast = static_cast<TEnumProperty*>(pProp);
|
||||
CEnumTemplate *pEnumTemp = static_cast<CEnumTemplate*>(pEnumCast->Template());
|
||||
int index = static_cast<TEnumProperty*>(pProp)->Get();
|
||||
v = pEnumTemp->EnumeratorID(index);
|
||||
v = (int) static_cast<TEnumProperty*>(pProp)->Get();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -416,8 +416,7 @@ public:
|
||||
virtual IProperty* InstantiateProperty(CPropertyStruct *pParent)
|
||||
{
|
||||
TEnumProperty *pEnum = new TEnumProperty(this, pParent);
|
||||
u32 Index = EnumeratorIndex(GetDefaultValue());
|
||||
pEnum->Set(Index);
|
||||
pEnum->Set(GetDefaultValue());
|
||||
return pEnum;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,13 +8,13 @@ class CDamageableTriggerExtra : public CScriptExtra
|
||||
// Render fluid planes for doors in MP1
|
||||
enum ERenderSide
|
||||
{
|
||||
eNoRender = 0,
|
||||
eNorth = 1,
|
||||
eSouth = 2,
|
||||
eWest = 3,
|
||||
eEast = 4,
|
||||
eUp = 5,
|
||||
eDown = 6
|
||||
eNoRender = 0x0,
|
||||
eNorth = 0x1,
|
||||
eSouth = 0x2,
|
||||
eWest = 0x4,
|
||||
eEast = 0x8,
|
||||
eUp = 0x10,
|
||||
eDown = 0x20
|
||||
};
|
||||
|
||||
TVector3Property *mpSizeProp;
|
||||
|
||||
Reference in New Issue
Block a user