// add to queue public void queueMoveTo(LocalTransformStruct t) { if (!locked && !removedFromScene) { transformQueue.Enqueue(t); } }
private void Update() { // first check if there is anything to do if (currentTransform == null && transformQueue.Count == 0 || removedFromScene || locked) { return; } // if close to transform or currentTransform is null then move to next transform if (currentTransform == null || Vector3.Distance(transform.localPosition, currentTransform.localPosition) < closeEnough && Vector3.Distance(transform.localPosition, currentTransform.localPosition) < closeEnough) { if (transformQueue.Count > 0) { currentTransform = transformQueue.Dequeue(); } else { currentTransform = null; return; } } // move to current transform transform.localPosition = Vector3.Lerp(transform.localPosition, currentTransform.localPosition, speed * Time.deltaTime); transform.localScale = Vector3.Lerp(transform.localScale, currentTransform.localScale, speed * Time.deltaTime); }
// clear and add public void moveToImmediate(LocalTransformStruct t) { if (!locked && !removedFromScene) { clearQueue(); queueMoveTo(t); } }
public TransformCommand(LocalTransformManager transformManager, LocalTransformStruct targetTransform) { this.transformManager = transformManager; this.targetTransform = targetTransform; }
public void setTransform(LocalTransformStruct tStruct) { clearQueue(); transform.localPosition = tStruct.localPosition; transform.localScale = tStruct.localScale; }
public void moveToInformativeAnimation(LocalTransformStruct t) { InformativeAnimationsQueue.Instance.AddAnimation(new TransformCommand(this, t)); }
// clear queue public void clearQueue() { currentTransform = null; transformQueue.Clear(); }