Skip to content

Commit a023dda

Browse files
committed
fix: Fixed a null ref when trying to draw entity ref array or points array when the array was empty
1 parent 610ef55 commit a023dda

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

Assets/LDtkUnity/Editor/CustomEditor/SceneDrawer/HandleDrawers/LDtkFieldDrawerPoints.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private Vector2[] GetFieldPoints()
7272
{
7373
_fields.TryGetPointArray(_identifier, out Vector2[] objs);
7474

75-
List<Vector2> points = new List<Vector2>();
75+
List<Vector2> points = new List<Vector2>(objs.Length);
7676

7777
for (int i = 0; i < objs.Length; i++)
7878
{

Assets/LDtkUnity/Runtime/Fields/LDtkFields.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,20 +141,20 @@ private T[] GetFieldArray<T>(string identifier, LDtkFieldType type, LDtkElementS
141141

142142
private bool TryGetFieldArray<T>(string identifier, LDtkFieldType type, LDtkElementSelector<T> selector, out T[] value, bool log = false)
143143
{
144-
value = null;
145-
146144
if (!TryGetField(identifier, out LDtkField field))
147145
{
148146
if (log)
149147
{
150148
GameObject obj = gameObject;
151149
LDtkDebug.LogError($"No array field \"{identifier}\" exists in this field component for {obj.name}", obj);
152150
}
151+
value = Array.Empty<T>();
153152
return false;
154153
}
155154

156155
if (!field.ValidateElementTypes(type, gameObject))
157156
{
157+
value = Array.Empty<T>();
158158
return false;
159159
}
160160

@@ -166,6 +166,7 @@ private bool TryGetFieldArray<T>(string identifier, LDtkFieldType type, LDtkElem
166166
LDtkDebug.LogError($"Failed to get array field \"{identifier}\"");
167167
}
168168

169+
value = Array.Empty<T>();
169170
return false;
170171
}
171172

@@ -176,6 +177,7 @@ private bool TryGetFieldArray<T>(string identifier, LDtkFieldType type, LDtkElem
176177
LDtkDebug.LogError($"Array element types does not match, they were not C# type \"{typeof(T).Name}\"");
177178
}
178179

180+
value = Array.Empty<T>();
179181
return false;
180182
}
181183

0 commit comments

Comments
 (0)