public IEnumerator ShowTargetsCoroutine(TimelineAvatar avatar) { targetableAvatars = FindObjectsOfType <TimelineAvatar>().ToList(); TimelineAvatar avatarSelected = null; for (int i = 0; i < targetableAvatars.Count; i++) { var targetAvatar = targetableAvatars[i]; } while (avatarSelected == null) { if (Input.GetMouseButtonDown(0)) { print("Getting Input"); Debug.DrawRay(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector3.up, Color.white, 1); var point = Camera.main.ScreenToWorldPoint(Input.mousePosition); var col = Physics2D.OverlapPoint(point); if (!col) { yield return(null); continue; } var clickedAvatar = col.GetComponent <TimelineAvatar>(); if (clickedAvatar) { selectedTarget = avatarSelected = clickedAvatar; targetableAvatars.Clear(); } } yield return(null); } }
public TimelineObject(TimelineAvatar avatar, Action action, TimelineAvatar selectedTarget, float startTime) { this.action = action; this.length = action.length; this.start = startTime; this.avatar = avatar; }
public void ShowSelection(TimelineAvatar avatar) { RemoveButtons(); actionSelected = false; for (int i = 0; i < avatar.actions.Count; i++) { var action = avatar.actions[i]; Button button = Instantiate(buttonPrefab, transform).GetComponent <Button>(); var a = action; button.onClick.AddListener(delegate { SetAction(action); }); button.transform.GetChild(0).GetComponent <Text>().text = action.name; buttons.Add(button.gameObject); } }
IEnumerator SelectAction(TimelineAvatar avatar) { var actionIsReady = false; var selectionState = SelectState.Action; currentAvatar = avatar.transform; while (!actionIsReady) { switch (selectionState) { case SelectState.Action: actionSelector.ShowSelection(avatar); while (!actionSelector.actionSelected) { yield return(null); } selectionState = SelectState.Target; break; case SelectState.Target: targetSelector.ShowTargets(avatar); while (!targetSelector.selectedTarget) { yield return(null); } selectionState = SelectState.Done; break; case SelectState.Path: //TODO: Make path function, Component and object break; case SelectState.Done: actionIsReady = true; break; default: break; } yield return(null); } currentAvatar = null; timelineObjects.Add(new TimelineObject(avatar, actionSelector.selectedAction, targetSelector.selectedTarget, currentTime)); }
public void ShowTargets(TimelineAvatar avatar) { selectedTarget = null; StartCoroutine(ShowTargetsCoroutine(avatar)); }