unify exploder for later
This commit is contained in:
@@ -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<Vector3> goalPos = new List<Vector3>();
|
||||
List<Vector3> initialPos = new List<Vector3>();
|
||||
List<Transform> transforms = new List<Transform>();
|
||||
|
||||
List<ExploderModel> models = new List<ExploderModel>();
|
||||
|
||||
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<Transform>())
|
||||
{
|
||||
var cmb = child.GetComponent<ChildModelBehaviour>();
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
20
vr-configurator/Assets/Scripts/Transform/ExploderModel.cs
Normal file
20
vr-configurator/Assets/Scripts/Transform/ExploderModel.cs
Normal file
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 63d5a13bc20e4c76a19bcfa5ccc2afa7
|
||||
timeCreated: 1752321245
|
||||
Reference in New Issue
Block a user