示例#1
0
    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;
        }
    }
示例#4
0
    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);
                }
            }
        }
    }