diff --git a/vr-configurator/Assets/Scripts/Transform/ExplodeModel.cs b/vr-configurator/Assets/Scripts/Transform/Exploder.cs similarity index 61% rename from vr-configurator/Assets/Scripts/Transform/ExplodeModel.cs rename to vr-configurator/Assets/Scripts/Transform/Exploder.cs index 5b628bb..72caf42 100644 --- a/vr-configurator/Assets/Scripts/Transform/ExplodeModel.cs +++ b/vr-configurator/Assets/Scripts/Transform/Exploder.cs @@ -3,16 +3,15 @@ using TMPro; using UnityEngine; using UnityEngine.EventSystems; -public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler +public class Exploder : MonoBehaviour, IResettable, IPointerDownHandler { public ModelManager mm; public GameObject baseModel; public TextMeshProUGUI text; public GameObject cms; - List goalPos = new List(); - List initialPos = new List(); - List transforms = new List(); + + List models = new List(); static readonly int finalTick = 60 * 2; // 60fps * 2sek bool explode = false; @@ -32,17 +31,17 @@ public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler if (tick <= finalTick) { if(explode) - for (int i = 0; i < transforms.Count; i++) + for (int i = 0; i < models.Count; i++) { - transforms[i].localPosition = - MathUtil.EaseBoth(initialPos[i], goalPos[i], + models[i].tf.localPosition = + MathUtil.EaseBoth(models[i].initPos, models[i].goalPos, (tick + 0f) / finalTick); //0f for floating point div } else - for (int i = 0; i < transforms.Count; i++) + for (int i = 0; i < models.Count; i++) { - transforms[i].localPosition = - MathUtil.EaseBoth(goalPos[i], initialPos[i], + models[i].tf.localPosition = + MathUtil.EaseBoth(models[i].goalPos, models[i].initPos, (tick + 0f) / finalTick); //0f for floating point div } tick++; @@ -53,9 +52,7 @@ public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler { if (!explode) // before switching to true { - initialPos.Clear(); - goalPos.Clear(); - transforms.Clear(); + models.Clear(); foreach (Transform child in baseModel.GetComponentsInChildren()) { var cmb = child.GetComponent(); @@ -64,13 +61,11 @@ public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler continue; //only for basemodel } Port port = cmb.GetParentPort(); - initialPos.Add(child.localPosition); - goalPos.Add(child.localPosition + port.ExplodeDirection); - transforms.Add(child); + models.Add(new ExploderModel(port, cmb.ChildModel, child)); } } text.text = explode ? "Explode" : "Unexplode"; - cms.SetActive(explode); + //cms.SetActive(explode); explode = !explode; tick = 0; } @@ -79,21 +74,19 @@ public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler { if (explode) { - for (int i = 0; i < transforms.Count; i++) + for (int i = 0; i < models.Count; i++) { - if (transforms[i] == null) + if (models[i].tf == null) { Debug.LogWarning($"Skipping ChildModel {i}"); continue; } - transforms[i].localPosition = initialPos[i]; //reset all + models[i].tf.localPosition = models[i].initPos; //reset all } } explode = false; text.text = "Explode"; tick = finalTick + 1; - initialPos.Clear(); - goalPos.Clear(); - transforms.Clear(); + models.Clear(); } } diff --git a/vr-configurator/Assets/Scripts/Transform/ExplodeModel.cs.meta b/vr-configurator/Assets/Scripts/Transform/Exploder.cs.meta similarity index 100% rename from vr-configurator/Assets/Scripts/Transform/ExplodeModel.cs.meta rename to vr-configurator/Assets/Scripts/Transform/Exploder.cs.meta diff --git a/vr-configurator/Assets/Scripts/Transform/ExploderModel.cs b/vr-configurator/Assets/Scripts/Transform/ExploderModel.cs new file mode 100644 index 0000000..4f1b02d --- /dev/null +++ b/vr-configurator/Assets/Scripts/Transform/ExploderModel.cs @@ -0,0 +1,20 @@ +using UnityEngine; + +public class ExploderModel +{ + public Port port; + public ChildModel model; + public Transform tf; //pointer to cmb pos + + public Vector3 initPos; + public Vector3 goalPos; + + public ExploderModel(Port port, ChildModel model, Transform tf) + { + this.port = port; + this.model = model; + this.tf = tf; + initPos = tf.localPosition; + goalPos = tf.localPosition + port.ExplodeDirection; + } +} \ No newline at end of file diff --git a/vr-configurator/Assets/Scripts/Transform/ExploderModel.cs.meta b/vr-configurator/Assets/Scripts/Transform/ExploderModel.cs.meta new file mode 100644 index 0000000..6d34b67 --- /dev/null +++ b/vr-configurator/Assets/Scripts/Transform/ExploderModel.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 63d5a13bc20e4c76a19bcfa5ccc2afa7 +timeCreated: 1752321245 \ No newline at end of file