void FinishRewind() { var trackkerOld = trackker; if (!trackker.isFirst) trackker = trackker.BEFORE; if (trackker.AFTER != null) trackker.AFTER.killChain(); helperInstantiateTrackker(); }
public void init(float time=0, float veloX=0, float veloY= 0, MovementTrackker b = null) { this.time = time; before = b; velocity = new Vector2(veloX, veloY); isFirst = (b == null); }
void helperInstantiateTrackker() { var o = Instantiate(PREFAB_TRACKKER, transform.position, Quaternion.identity) as GameObject; var t = o.GetComponent<MovementTrackker>(); if (trackker != null) trackker.AFTER = t; t.init(timeElapsed,rigidbody2D.velocity.x,rigidbody2D.velocity.y, trackker); trackker = t; }
void UpdateRewind() { timeElapsed -= Time.deltaTime * 5.0f; timeElapsed = Mathf.Max(0, timeElapsed); for (int trackkerValid = trackker.isTimeValid(timeElapsed); !trackker.isFirst && trackkerValid != 0; trackkerValid = trackker.isTimeValid(timeElapsed)) { Debug.Log(trackker.isTimeValid(timeElapsed)); if (trackkerValid == 1) throw new System.NotImplementedException("REWIND ERROR"); else if (trackkerValid == -1) trackker = trackker.BEFORE; } var pos = trackker.getPosAt(timeElapsed); var speed = trackker.getSpeedAt(timeElapsed); //transform.position = new Vector3(pos.x, pos.y, transform.position.z); if(isValid(pos))transform.position = pos; if (isValid(speed)) rigidbody2D.velocity = speed; else rigidbody2D.velocity = Vector2.zero; //Debug.Log(trackker.getPosAt(timeElapsed)); }