Merge pull request #257 from SHADE-DP/SP3-6-c-scripting

Fixed bug where rendering inspectors for scripts that contain uninitialized List<T>s causes crashes
This commit is contained in:
XiaoQiDigipen 2022-11-23 13:49:42 +08:00 committed by GitHub
commit 6d2591331b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 0 deletions

View File

@ -23,6 +23,7 @@ public class RaccoonShowcase : Script
[Range(-5, 5)] [Range(-5, 5)]
public List<int> intList = new List<int>(new int[] { 2, 8, 2, 6, 8, 0, 1 }); public List<int> intList = new List<int>(new int[] { 2, 8, 2, 6, 8, 0, 1 });
public List<Light.Type> enumList = new List<Light.Type>(new Light.Type[] { Light.Type.Point, Light.Type.Directional, Light.Type.Ambient }); public List<Light.Type> enumList = new List<Light.Type>(new Light.Type[] { Light.Type.Point, Light.Type.Directional, Light.Type.Ambient });
public List<int> nullList;
public FontAsset fontAsset; public FontAsset fontAsset;
public MeshAsset mesh; public MeshAsset mesh;
public MaterialAsset matAsset; public MaterialAsset matAsset;

View File

@ -189,6 +189,12 @@ namespace SHADE
System::Type^ listType = field->FieldType->GenericTypeArguments[0]; System::Type^ listType = field->FieldType->GenericTypeArguments[0];
RangeAttribute^ rangeAttrib = hasAttribute<RangeAttribute^>(field); RangeAttribute^ rangeAttrib = hasAttribute<RangeAttribute^>(field);
System::Collections::IList^ iList = safe_cast<System::Collections::IList^>(field->GetValue(object)); System::Collections::IList^ iList = safe_cast<System::Collections::IList^>(field->GetValue(object));
if (iList == nullptr)
{
// Create if the list does not exist
iList = safe_cast<System::Collections::IList^>(System::Activator::CreateInstance(field->FieldType));
field->SetValue(object, iList);
}
if (SHEditorUI::CollapsingHeader(Convert::ToNative(field->Name), &isHovered)) if (SHEditorUI::CollapsingHeader(Convert::ToNative(field->Name), &isHovered))
{ {