summaryrefslogtreecommitdiff
path: root/Thronefall/NGS.MeshFusionPro/DynamicCombinedObjectPart.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Thronefall/NGS.MeshFusionPro/DynamicCombinedObjectPart.cs')
-rw-r--r--Thronefall/NGS.MeshFusionPro/DynamicCombinedObjectPart.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/Thronefall/NGS.MeshFusionPro/DynamicCombinedObjectPart.cs b/Thronefall/NGS.MeshFusionPro/DynamicCombinedObjectPart.cs
new file mode 100644
index 0000000..c2ff95d
--- /dev/null
+++ b/Thronefall/NGS.MeshFusionPro/DynamicCombinedObjectPart.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace NGS.MeshFusionPro;
+
+public abstract class DynamicCombinedObjectPart : ICombinedObjectPart<DynamicCombinedObject>, ICombinedObjectPart
+{
+ protected DynamicCombinedObject _root;
+
+ protected CombinedObjectPart _basePart;
+
+ private bool _destroyed;
+
+ ICombinedObject ICombinedObjectPart.Root => Root;
+
+ public DynamicCombinedObject Root => _root;
+
+ public Bounds LocalBounds => _basePart.LocalBounds;
+
+ public Bounds Bounds => _basePart.Bounds;
+
+ public DynamicCombinedObjectPart(DynamicCombinedObject root, CombinedObjectPart basePart, Matrix4x4 transformMatrix)
+ {
+ _root = root;
+ _basePart = basePart;
+ }
+
+ public abstract void Move(Vector3 position, Quaternion rotation, Vector3 scale);
+
+ public abstract void Move(Matrix4x4 transform);
+
+ public abstract void MoveLocal(Matrix4x4 localTransform);
+
+ public void Destroy()
+ {
+ if (_destroyed)
+ {
+ Debug.Log("Part already destroyed");
+ }
+ else
+ {
+ _root.Destroy(this, _basePart);
+ }
+ }
+}