public void SetManager(RewindOverseer o) { if (overseer != null) { Debug.LogError("OVERRIDING OVERSEER POINTER IS ILLEGAL"); return; } overseer = o; }
//creates the rewind overseer that controls all of the managers void CreateMasterRewinder() { overseer = rewinderHolder.AddComponent <RewindOverseer> (); overseer.Initialize(maxTime, gameObject, managerList.ToArray()); foreach (RewindManager m in managerList) { m.SetOverseer(overseer); } }
//performs the selection of a new target, or the reselection of an old target void SelectTarget(RewindOverseer o) { if (multiTarget) { MultiSelect(o); } else { SingleSelect(o); } }
public void Initialize(TextMesh t, GameObject g, RewindOverseer m, Vector3 o) { rewindObject = g; overseer = m; offset = o; displayMesh = t; displayMesh.anchor = TextAnchor.MiddleCenter; displayMesh.alignment = TextAlignment.Center; displayMesh.fontSize = 40; displayMesh.characterSize = 0.1f; }
/* * executes the behavior for multi-target rewinding. If the player pauses a new thing, the old thing will * remain paused until the player selects it again and then right-clicks it once more. */ void MultiSelect(RewindOverseer o) { if (currentTarget == o) { currentTarget.SetTimeControl(!currentTarget.IsRewinding()); } else { currentTarget = o; currentTarget.SetTimeControl(true); } }
//-------------------------------------- // The functionality for player-input selection of what to rewind //-------------------------------------- //manages the slection of rewindable objects void Selector() { RewindOverseer o = null; if (Input.GetMouseButtonDown(1)) { o = RaycastForRewinder(); } if (o != null) { SelectTarget(o); } }
//executes the behavior for single-target rewinding. If the player pauses a new thing, the old thing will unpause. void SingleSelect(RewindOverseer o) { if (currentTarget == o) //if the object is already the selected object... { currentTarget.SetTimeControl(!currentTarget.IsRewinding()); //toggle whether the object is rewinding. } else //otherwise... { if (currentTarget != null) { currentTarget.SetTimeControl(false); //stop the old target rewinding, } currentTarget = o; //set a new target, currentTarget.SetTimeControl(true); //begin rewinding the new target. } }
void UnpauseObject(RewindOverseer o) { o.SetTimeControl(false); }
void PauseObject(RewindOverseer o) { o.SetTimeControl(true); }
void Select(ManagerPointer p) { scrollBuffer = 0f; overseer = p.GetOverseer(); PauseObject(overseer); }
void Clear() { UnpauseObject(overseer); overseer = null; scrollBuffer = 0f; }