unify exploder for later
This commit is contained in:
@@ -3,16 +3,15 @@ using TMPro;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.EventSystems;
|
using UnityEngine.EventSystems;
|
||||||
|
|
||||||
public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler
|
public class Exploder : MonoBehaviour, IResettable, IPointerDownHandler
|
||||||
{
|
{
|
||||||
public ModelManager mm;
|
public ModelManager mm;
|
||||||
public GameObject baseModel;
|
public GameObject baseModel;
|
||||||
public TextMeshProUGUI text;
|
public TextMeshProUGUI text;
|
||||||
public GameObject cms;
|
public GameObject cms;
|
||||||
|
|
||||||
List<Vector3> goalPos = new List<Vector3>();
|
|
||||||
List<Vector3> initialPos = new List<Vector3>();
|
List<ExploderModel> models = new List<ExploderModel>();
|
||||||
List<Transform> transforms = new List<Transform>();
|
|
||||||
|
|
||||||
static readonly int finalTick = 60 * 2; // 60fps * 2sek
|
static readonly int finalTick = 60 * 2; // 60fps * 2sek
|
||||||
bool explode = false;
|
bool explode = false;
|
||||||
@@ -32,17 +31,17 @@ public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler
|
|||||||
if (tick <= finalTick)
|
if (tick <= finalTick)
|
||||||
{
|
{
|
||||||
if(explode)
|
if(explode)
|
||||||
for (int i = 0; i < transforms.Count; i++)
|
for (int i = 0; i < models.Count; i++)
|
||||||
{
|
{
|
||||||
transforms[i].localPosition =
|
models[i].tf.localPosition =
|
||||||
MathUtil.EaseBoth(initialPos[i], goalPos[i],
|
MathUtil.EaseBoth(models[i].initPos, models[i].goalPos,
|
||||||
(tick + 0f) / finalTick); //0f for floating point div
|
(tick + 0f) / finalTick); //0f for floating point div
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
for (int i = 0; i < transforms.Count; i++)
|
for (int i = 0; i < models.Count; i++)
|
||||||
{
|
{
|
||||||
transforms[i].localPosition =
|
models[i].tf.localPosition =
|
||||||
MathUtil.EaseBoth(goalPos[i], initialPos[i],
|
MathUtil.EaseBoth(models[i].goalPos, models[i].initPos,
|
||||||
(tick + 0f) / finalTick); //0f for floating point div
|
(tick + 0f) / finalTick); //0f for floating point div
|
||||||
}
|
}
|
||||||
tick++;
|
tick++;
|
||||||
@@ -53,9 +52,7 @@ public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler
|
|||||||
{
|
{
|
||||||
if (!explode) // before switching to true
|
if (!explode) // before switching to true
|
||||||
{
|
{
|
||||||
initialPos.Clear();
|
models.Clear();
|
||||||
goalPos.Clear();
|
|
||||||
transforms.Clear();
|
|
||||||
foreach (Transform child in baseModel.GetComponentsInChildren<Transform>())
|
foreach (Transform child in baseModel.GetComponentsInChildren<Transform>())
|
||||||
{
|
{
|
||||||
var cmb = child.GetComponent<ChildModelBehaviour>();
|
var cmb = child.GetComponent<ChildModelBehaviour>();
|
||||||
@@ -64,13 +61,11 @@ public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler
|
|||||||
continue; //only for basemodel
|
continue; //only for basemodel
|
||||||
}
|
}
|
||||||
Port port = cmb.GetParentPort();
|
Port port = cmb.GetParentPort();
|
||||||
initialPos.Add(child.localPosition);
|
models.Add(new ExploderModel(port, cmb.ChildModel, child));
|
||||||
goalPos.Add(child.localPosition + port.ExplodeDirection);
|
|
||||||
transforms.Add(child);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
text.text = explode ? "Explode" : "Unexplode";
|
text.text = explode ? "Explode" : "Unexplode";
|
||||||
cms.SetActive(explode);
|
//cms.SetActive(explode);
|
||||||
explode = !explode;
|
explode = !explode;
|
||||||
tick = 0;
|
tick = 0;
|
||||||
}
|
}
|
||||||
@@ -79,21 +74,19 @@ public class ExplodeModel : MonoBehaviour, IResettable, IPointerDownHandler
|
|||||||
{
|
{
|
||||||
if (explode)
|
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}");
|
Debug.LogWarning($"Skipping ChildModel {i}");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
transforms[i].localPosition = initialPos[i]; //reset all
|
models[i].tf.localPosition = models[i].initPos; //reset all
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
explode = false;
|
explode = false;
|
||||||
text.text = "Explode";
|
text.text = "Explode";
|
||||||
tick = finalTick + 1;
|
tick = finalTick + 1;
|
||||||
initialPos.Clear();
|
models.Clear();
|
||||||
goalPos.Clear();
|
|
||||||
transforms.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