Skip to content

Commit 9fc86bd

Browse files
committed
Invalid pointers no longer throw.
1 parent 9deb5c1 commit 9fc86bd

25 files changed

+80
-46
lines changed

Runtime/Scripts/Interactivity/Playback/BehaviourEngine.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,14 @@ public bool TryGetPointer(string pointerString, BehaviourEngineNode engineNode,
103103
try
104104
{
105105
pointer = pointerResolver.GetPointer(pointerString, engineNode);
106-
return true;
107106
}
108107
catch (Exception ex)
109108
{
110-
Debug.LogWarning(ex);
109+
Debug.LogException(ex); // Feeding in a really malformed pointerString could throw maybe?
111110

112-
pointer = default;
113-
return false;
111+
pointer = PointerHelpers.InvalidPointer();
114112
}
113+
return !pointer.invalid;
115114
}
116115

117116
public void SetAnimationWrapper(GLTFInteractivityAnimationWrapper wrapper, Animation animation)

Runtime/Scripts/Interactivity/Playback/Data/Helpers/Pointers.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,18 @@
44
using Unity.Mathematics;
55
using UnityEngine;
66

7-
namespace UnityGLTF.Interactivity.Playback.Materials
7+
namespace UnityGLTF.Interactivity.Playback
88
{
99
public static class PointerHelpers
1010
{
11+
public static Pointer<int> InvalidPointer()
12+
{
13+
return new Pointer<int>()
14+
{
15+
invalid = true
16+
};
17+
}
18+
1119
public static Pointer<T> CreatePointer<T>(Action<T> setter, Func<T> getter, Func<T, T, float, T> evaluator)
1220
{
1321
return new Pointer<T>()

Runtime/Scripts/Interactivity/Playback/Pointers/ActiveCameraPointers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public IPointer ProcessActiveCameraPointer(StringSpanReader reader)
4545
{
4646
var a when a.Is("translation") => translation,
4747
var a when a.Is("rotation") => rotation,
48-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
48+
_ => PointerHelpers.InvalidPointer(),
4949
};
5050
}
5151
}

Runtime/Scripts/Interactivity/Playback/Pointers/AnimationPointers.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public static IPointer ProcessPointer(StringSpanReader reader, BehaviourEngineNo
2525
{
2626
reader.AdvanceToNextToken('/');
2727

28-
var nodeIndex = PointerResolver.GetIndexFromArgument(reader, engineNode);
28+
if (!PointerResolver.TryGetIndexFromArgument(reader, engineNode, pointers, out int nodeIndex))
29+
return PointerHelpers.InvalidPointer();
2930

3031
var pointer = pointers[nodeIndex];
3132

@@ -41,7 +42,7 @@ var a when a.Is(Pointers.MIN_TIME) => pointer.minTime,
4142
var a when a.Is(Pointers.MAX_TIME) => pointer.maxTime,
4243
var a when a.Is(Pointers.PLAYHEAD) => pointer.playhead,
4344
var a when a.Is(Pointers.VIRTUAL_PLAYHEAD) => pointer.virtualPlayhead,
44-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
45+
_ => PointerHelpers.InvalidPointer(),
4546
};
4647
}
4748
}

Runtime/Scripts/Interactivity/Playback/Pointers/CameraPointers.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ public static IPointer ProcessCameraPointer(StringSpanReader reader, BehaviourEn
6969
{
7070
reader.AdvanceToNextToken('/');
7171

72-
var nodeIndex = PointerResolver.GetIndexFromArgument(reader, engineNode);
72+
if (!PointerResolver.TryGetIndexFromArgument(reader, engineNode, pointers, out int nodeIndex))
73+
return PointerHelpers.InvalidPointer();
7374

7475
var pointer = pointers[nodeIndex];
7576

@@ -80,7 +81,7 @@ public static IPointer ProcessCameraPointer(StringSpanReader reader, BehaviourEn
8081
{
8182
var a when a.Is("orthographic") => ProcessOrthographicPointer(reader, pointer),
8283
var a when a.Is("perspective") => ProcessPerspectivePointer(reader, pointer),
83-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
84+
_ => PointerHelpers.InvalidPointer(),
8485
};
8586
}
8687

@@ -95,7 +96,7 @@ var a when a.Is("aspectRatio") => pointer.perspectiveAspectRatio,
9596
var a when a.Is("yfov") => pointer.perspectiveYFov,
9697
var a when a.Is("zfar") => pointer.zFar,
9798
var a when a.Is("znear") => pointer.zNear,
98-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
99+
_ => PointerHelpers.InvalidPointer(),
99100
};
100101
}
101102

@@ -110,7 +111,7 @@ var a when a.Is("xmag") => pointer.orthographicXMag,
110111
var a when a.Is("ymag") => pointer.orthographicYMag,
111112
var a when a.Is("zfar") => pointer.zFar,
112113
var a when a.Is("znear") => pointer.zNear,
113-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
114+
_ => PointerHelpers.InvalidPointer(),
114115
};
115116
}
116117
}

Runtime/Scripts/Interactivity/Playback/Pointers/Materials/BaseColor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static IPointer ProcessExtensionsPointer(StringSpanReader reader, BaseCol
4141
var a when a.Is("offset") => pointers.transformPointers.offset,
4242
var a when a.Is("rotation") => pointers.transformPointers.rotation,
4343
var a when a.Is("scale") => pointers.transformPointers.scale,
44-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
44+
_ => PointerHelpers.InvalidPointer(),
4545
};
4646
}
4747
}

Runtime/Scripts/Interactivity/Playback/Pointers/Materials/Clearcoat.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ var a when a.Is("clearcoatRoughnessTexture") => ClearcoatRoughnessPointers.Proce
4242
// TODO: This property is not mentioned anywhere in the PBRGraph UnityGLTF shader so I didn't include it.
4343
//var a when a.Is("clearcoatNormalTexture") => ,
4444

45-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
45+
_ => PointerHelpers.InvalidPointer(),
4646
};
4747
}
4848

@@ -58,7 +58,7 @@ public static IPointer ProcessExtensionsPointer(StringSpanReader reader, Clearco
5858
var a when a.Is("offset") => pointers.transformPointers.offset,
5959
var a when a.Is("rotation") => pointers.transformPointers.rotation,
6060
var a when a.Is("scale") => pointers.transformPointers.scale,
61-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
61+
_ => PointerHelpers.InvalidPointer(),
6262
};
6363
}
6464
}

Runtime/Scripts/Interactivity/Playback/Pointers/Materials/ClearcoatRoughness.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static IPointer ProcessExtensionsPointer(StringSpanReader reader, Clearco
3939
var a when a.Is("offset") => pointers.transformPointers.offset,
4040
var a when a.Is("rotation") => pointers.transformPointers.rotation,
4141
var a when a.Is("scale") => pointers.transformPointers.scale,
42-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
42+
_ => PointerHelpers.InvalidPointer(),
4343
};
4444
}
4545
}

Runtime/Scripts/Interactivity/Playback/Pointers/Materials/Emissive.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static IPointer ProcessExtensionsPointer(StringSpanReader reader, Emissiv
3939
var a when a.Is("offset") => pointers.transformPointers.offset,
4040
var a when a.Is("rotation") => pointers.transformPointers.rotation,
4141
var a when a.Is("scale") => pointers.transformPointers.scale,
42-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
42+
_ => PointerHelpers.InvalidPointer(),
4343
};
4444
}
4545
}

Runtime/Scripts/Interactivity/Playback/Pointers/Materials/Iridescence.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ var a when a.Is("iridescenceThicknessMaximum") => matPointer.iridescenceThicknes
4444
var a when a.Is("iridescenceTexture") => ProcessExtensionsPointer(reader, matPointer.iridescencePointers),
4545
var a when a.Is("iridescenceThicknessTexture") => IridescenceThicknessPointers.ProcessExtensionsPointer(reader, matPointer.iridescenceThicknessPointers),
4646

47-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
47+
_ => PointerHelpers.InvalidPointer(),
4848
};
4949
}
5050

@@ -60,7 +60,7 @@ public static IPointer ProcessExtensionsPointer(StringSpanReader reader, Iridesc
6060
var a when a.Is("offset") => pointers.transformPointers.offset,
6161
var a when a.Is("rotation") => pointers.transformPointers.rotation,
6262
var a when a.Is("scale") => pointers.transformPointers.scale,
63-
_ => throw new InvalidOperationException($"Property {reader.ToString()} is unsupported at this time!"),
63+
_ => PointerHelpers.InvalidPointer(),
6464
};
6565
}
6666
}

0 commit comments

Comments
 (0)