void CharacterExit(CastDirectionEvent eventdata) { if (eventdata.character.ToLower() == "all") { while (Actors.Count != 0) { Actors[0].ExitStage(eventdata.Direction, Skip); Actors.Remove(Actors[0]); } for (var i = 0; i < SpotLights.Count; ++i) { SpotLights[(StagePosition)i] = 0; } } foreach (var Roll in Actors) { if (Roll == null) { Actors.Remove(Roll); } if (Roll.Character.Character == eventdata.character) { SpotLights[Roll.Direction] -= 1; Roll.ExitStage(eventdata.Direction, Skip); Actors.Remove(Roll); UpdateStagePositions(Roll.Direction); return; } } }
void CharacterExit(CastDirectionEvent eventdata) { if (eventdata.character.ToLower() == "all") { Actors.Clear(); } foreach (var Roll in Actors) { if (Roll.Key == eventdata.character.ToLower()) { Actors.Remove(Roll.Key); return; } } }
void CharacterChanges(CastDirectionEvent eventdata) { if (eventdata.Exiting) { CharacterExit(eventdata); return; } if (!Actors.ContainsKey(eventdata.character.ToLower())) { Actors.Add(eventdata.character.ToLower(), eventdata.Direction); } if (eventdata.Direction != StagePosition.None) { Actors[eventdata.character.ToLower()] = eventdata.Direction; } }
void CharacterChanges(CastDirectionEvent eventdata) { if (eventdata.Exiting) { CharacterExit(eventdata); return; } //if the command is all, affect all if (eventdata.character.ToLower() == "all") { CallAllCast(eventdata.Pose); return; } //for characters already on scene foreach (var Roll in Actors) { if (Roll == null) { Actors.Remove(Roll); } if (Roll.Character.Character == eventdata.character) { Roll.ChangePose(eventdata.Pose, Skip); Roll.ChangeDistance(eventdata.Distance); Roll.ChangeFacing(eventdata.FacingDirection); if (eventdata.Direction != StagePosition.None && eventdata.Direction != Roll.Direction) { var oldDirections = Roll.Direction; SpotLights[Roll.Direction] -= 1; Roll.Direction = eventdata.Direction; SpotLights[eventdata.Direction] += 1; UpdateStagePositions(oldDirections); UpdateStagePositions(eventdata.Direction); } return; } } //if here, character is not on scene foreach (var person in CastList) { //adding character to scene if (person.Character == eventdata.character) { var cast = Instantiate(person.Actor, Vector3.zero, Quaternion.identity); var directions = cast.GetComponent <CharacterDisplay>(); if (directions == null) { Debug.LogError("character: " + eventdata.character + "is missing at rollcall. See StageDisplay"); } else { if (eventdata.FacingDirection == StagePosition.None) { eventdata.FacingDirection = StagePosition.Center; } directions.EnterStage(eventdata.Pose, eventdata.Distance, eventdata.FacingDirection, Skip); Actors.Add(directions); if (eventdata.Direction == StagePosition.None) { eventdata.Direction = StagePosition.Center; } directions.Direction = eventdata.Direction; SpotLights[directions.Direction] += 1; UpdateStagePositions(directions.Direction); } } } }