mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-12 19:31:41 +00:00
Shift tracking of dynamicObjects from strict child objects for Scenes, to tracking the objects but keeping them in the Cleanup Group to fix prefab loading behavior
Shifted to utilizing SimGroupInterator and persistenceManager to fix saving issues with SubScenes Shifted to utilizing SimGroupIterator for Scene saving to standardize and minimize object misses Changed prefab load file logic to add loaded child simgroup to rootscene for consistent tracking and avoiding conflicts with subScene's hijacking the ImmediateGroup var Reduced duplication of build<type>field callback for inspectors Added more standard field type lookups to inspector group when creating a field to avoid misses for types like 'F32' or similar. Folded the added-on MinSize/MaxSize/SimgroupSelect fields for SimGroup editing into a single compound field and fixed bugs with it's behavior so it works as expected now
This commit is contained in:
parent
484ece3d28
commit
10d1aeca1f
9 changed files with 221 additions and 128 deletions
|
|
@ -178,7 +178,7 @@ GuiInspectorField* GuiInspectorGroup::constructField( S32 fieldType )
|
|||
|
||||
// return our new datablock field with correct datablock type enumeration info
|
||||
return dbFieldClass;
|
||||
}
|
||||
}
|
||||
|
||||
// Nope, not a datablock. So maybe it has a valid inspector field override we can use?
|
||||
if(!cbt->getInspectorFieldType())
|
||||
|
|
@ -641,40 +641,50 @@ void GuiInspectorGroup::addInspectorField(StringTableEntry name, StringTableEntr
|
|||
{
|
||||
S32 fieldType = -1;
|
||||
|
||||
if (typeName == StringTable->insert("int"))
|
||||
fieldType = TypeS32;
|
||||
else if (typeName == StringTable->insert("float"))
|
||||
fieldType = TypeF32;
|
||||
else if (typeName == StringTable->insert("vector"))
|
||||
fieldType = TypePoint3F;
|
||||
else if (typeName == StringTable->insert("vector2"))
|
||||
fieldType = TypePoint2F;
|
||||
else if (typeName == StringTable->insert("material"))
|
||||
fieldType = TypeMaterialAssetId;
|
||||
else if (typeName == StringTable->insert("image"))
|
||||
fieldType = TypeImageAssetId;
|
||||
else if (typeName == StringTable->insert("shape"))
|
||||
fieldType = TypeShapeAssetId;
|
||||
else if (typeName == StringTable->insert("sound"))
|
||||
fieldType = TypeSoundAssetId;
|
||||
else if (typeName == StringTable->insert("bool"))
|
||||
fieldType = TypeBool;
|
||||
else if (typeName == StringTable->insert("object"))
|
||||
fieldType = TypeSimObjectPtr;
|
||||
else if (typeName == StringTable->insert("string"))
|
||||
fieldType = TypeString;
|
||||
else if (typeName == StringTable->insert("colorI"))
|
||||
fieldType = TypeColorI;
|
||||
else if (typeName == StringTable->insert("colorF"))
|
||||
fieldType = TypeColorF;
|
||||
else if (typeName == StringTable->insert("ease"))
|
||||
fieldType = TypeEaseF;
|
||||
else if (typeName == StringTable->insert("command"))
|
||||
fieldType = TypeCommand;
|
||||
else if (typeName == StringTable->insert("filename"))
|
||||
fieldType = TypeStringFilename;
|
||||
String typeNameTyped = typeName;
|
||||
if (!typeNameTyped.startsWith("Type"))
|
||||
typeNameTyped = String("Type") + typeNameTyped;
|
||||
|
||||
ConsoleBaseType* typeRef = AbstractClassRep::getTypeByName(typeNameTyped.c_str());
|
||||
if(typeRef)
|
||||
{
|
||||
fieldType = typeRef->getTypeID();
|
||||
}
|
||||
else
|
||||
fieldType = -1;
|
||||
{
|
||||
if (typeName == StringTable->insert("int"))
|
||||
fieldType = TypeS32;
|
||||
else if (typeName == StringTable->insert("float"))
|
||||
fieldType = TypeF32;
|
||||
else if (typeName == StringTable->insert("vector"))
|
||||
fieldType = TypePoint3F;
|
||||
else if (typeName == StringTable->insert("vector2"))
|
||||
fieldType = TypePoint2F;
|
||||
else if (typeName == StringTable->insert("material"))
|
||||
fieldType = TypeMaterialAssetId;
|
||||
else if (typeName == StringTable->insert("image"))
|
||||
fieldType = TypeImageAssetId;
|
||||
else if (typeName == StringTable->insert("shape"))
|
||||
fieldType = TypeShapeAssetId;
|
||||
else if (typeName == StringTable->insert("sound"))
|
||||
fieldType = TypeSoundAssetId;
|
||||
else if (typeName == StringTable->insert("bool"))
|
||||
fieldType = TypeBool;
|
||||
else if (typeName == StringTable->insert("object"))
|
||||
fieldType = TypeSimObjectPtr;
|
||||
else if (typeName == StringTable->insert("string"))
|
||||
fieldType = TypeString;
|
||||
else if (typeName == StringTable->insert("colorI"))
|
||||
fieldType = TypeColorI;
|
||||
else if (typeName == StringTable->insert("colorF"))
|
||||
fieldType = TypeColorF;
|
||||
else if (typeName == StringTable->insert("ease"))
|
||||
fieldType = TypeEaseF;
|
||||
else if (typeName == StringTable->insert("command"))
|
||||
fieldType = TypeCommand;
|
||||
else if (typeName == StringTable->insert("filename"))
|
||||
fieldType = TypeStringFilename;
|
||||
}
|
||||
|
||||
GuiInspectorField* fieldGui;
|
||||
|
||||
|
|
|
|||
|
|
@ -176,38 +176,53 @@ void GuiVariableInspector::addField(const char* name, const char* label, const c
|
|||
//find the field type
|
||||
S32 fieldTypeMask = -1;
|
||||
|
||||
if (newField->mFieldTypeName == StringTable->insert("int"))
|
||||
fieldTypeMask = TypeS32;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("float"))
|
||||
fieldTypeMask = TypeF32;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("vector"))
|
||||
fieldTypeMask = TypePoint3F;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("vector2"))
|
||||
fieldTypeMask = TypePoint2F;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("material"))
|
||||
fieldTypeMask = TypeMaterialAssetId;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("image"))
|
||||
fieldTypeMask = TypeImageAssetId;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("shape"))
|
||||
fieldTypeMask = TypeShapeAssetId;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("bool"))
|
||||
fieldTypeMask = TypeBool;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("object"))
|
||||
fieldTypeMask = TypeSimObjectPtr;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("string"))
|
||||
fieldTypeMask = TypeString;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("colorI"))
|
||||
fieldTypeMask = TypeColorI;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("colorF"))
|
||||
fieldTypeMask = TypeColorF;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("ease"))
|
||||
fieldTypeMask = TypeEaseF;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("command"))
|
||||
fieldTypeMask = TypeCommand;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("filename"))
|
||||
fieldTypeMask = TypeStringFilename;
|
||||
String typeNameTyped = typeName;
|
||||
if (!typeNameTyped.startsWith("Type"))
|
||||
typeNameTyped = String("Type") + typeNameTyped;
|
||||
|
||||
ConsoleBaseType* typeRef = AbstractClassRep::getTypeByName(typeNameTyped.c_str());
|
||||
if (typeRef)
|
||||
{
|
||||
fieldTypeMask = typeRef->getTypeID();
|
||||
|
||||
if (!typeRef->getInspectorFieldType())
|
||||
fieldTypeMask = TypeString;
|
||||
|
||||
newField->mFieldTypeName = StringTable->insert(typeRef->getTypeName());
|
||||
}
|
||||
else
|
||||
fieldTypeMask = -1;
|
||||
{
|
||||
if (newField->mFieldTypeName == StringTable->insert("int"))
|
||||
fieldTypeMask = TypeS32;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("float"))
|
||||
fieldTypeMask = TypeF32;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("vector"))
|
||||
fieldTypeMask = TypePoint3F;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("vector2"))
|
||||
fieldTypeMask = TypePoint2F;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("material"))
|
||||
fieldTypeMask = TypeMaterialAssetId;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("image"))
|
||||
fieldTypeMask = TypeImageAssetId;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("shape"))
|
||||
fieldTypeMask = TypeShapeAssetId;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("bool"))
|
||||
fieldTypeMask = TypeBool;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("object"))
|
||||
fieldTypeMask = TypeSimObjectPtr;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("string"))
|
||||
fieldTypeMask = TypeString;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("colorI"))
|
||||
fieldTypeMask = TypeColorI;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("colorF"))
|
||||
fieldTypeMask = TypeColorF;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("ease"))
|
||||
fieldTypeMask = TypeEaseF;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("command"))
|
||||
fieldTypeMask = TypeCommand;
|
||||
else if (newField->mFieldTypeName == StringTable->insert("filename"))
|
||||
fieldTypeMask = TypeStringFilename;
|
||||
}
|
||||
|
||||
newField->mFieldType = fieldTypeMask;
|
||||
//
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue