Example #1
0
        public virtual TaskStatus OnUpdate()
        {
            if (this._missing)
            {
                this.Complete();
                return((TaskStatus)2);
            }
            ActorAnimation animation = this.Agent.Animation;

            if (animation.PlayingActAnimation)
            {
                return((TaskStatus)3);
            }
            if (this.Agent.Schedule.enabled)
            {
                return((TaskStatus)3);
            }
            if (this._endAction != null)
            {
                this._endAction.OnNext(Unit.get_Default());
            }
            if (animation.PlayingOutAnimation)
            {
                return((TaskStatus)3);
            }
            this.Complete();
            return((TaskStatus)2);
        }
Example #2
0
    protected virtual void Awake()
    {
        m_ActorAnimation = GetComponent <ActorAnimation>();
        m_Rigidbody      = GetComponent <Rigidbody>();

        health = actor.health;
    }
Example #3
0
 private static void SetAnimatorPost(ActorAnimation __instance)
 {
     if (__instance.Actor != null && __instance.Actor.ChaControl != null)
     {
         var ctrl = __instance.Actor.ChaControl.GetComponent <ReverseTrapController>();
         ctrl?.RefreshOverrideAnimations();
     }
 }
Example #4
0
        public override void OnEnd()
        {
            MerchantActor  merchant  = this.Merchant;
            ActorAnimation animation = merchant.Animation;

            animation.Targets.Clear();
            animation.Animator.InterruptMatchTarget(false);
            merchant.NavMeshObstacle.set_carveOnlyStationary(true);
            base.OnEnd();
        }
Example #5
0
        public static ActorAnimation Get(string textureName, string animation, int frames, bool continuous = true)
        {
            var anName = textureName + animation;

            if (animations.ContainsKey(anName))
            {
                return(animations[anName]);
            }
            else
            {
                var anEntity = new ActorAnimation(animation, frames, ImagesManager.GetTexture(textureName), continuous);
                animations.Add(anName, anEntity);
                return(anEntity);
            }
        }
Example #6
0
        public virtual void OnStart()
        {
            ((Task)this).OnStart();
            this._agent     = this.Agent;
            this._animation = this._agent.Animation;
            this._agent.DeactivateNavMeshAgent();
            if (this._notNeet = Object.op_Equality((Object)this._animation, (Object)null))
            {
                return;
            }
            this._loopStateName = string.Empty;
            PoseKeyPair pair;

            if (!Singleton <Resources> .IsInstance() || !this.TryGetPoseID(this._agent.ChaControl.fileParam.personality, out pair))
            {
                return;
            }
            PlayState info = Singleton <Resources> .Instance.Animation.AgentActionAnimTable[pair.postureID][pair.poseID];

            this._loopStateName = info.MainStateInfo.InStateInfo.StateInfos.GetElement <PlayState.Info>(info.MainStateInfo.InStateInfo.StateInfos.Length - 1).stateName;
            AnimatorStateInfo animatorStateInfo = this._animation.Animator.GetCurrentAnimatorStateInfo(0);

            if (this._notNeet = ((AnimatorStateInfo) ref animatorStateInfo).IsName(this._loopStateName))
            {
                return;
            }
            this._animation.InitializeStates(info);
            this._animation.LoadEventKeyTable(pair.postureID, pair.poseID);
            ActorAnimInfo actorAnimInfo1 = new ActorAnimInfo()
            {
                layer          = info.Layer,
                inEnableBlend  = info.MainStateInfo.InStateInfo.EnableFade,
                inBlendSec     = info.MainStateInfo.InStateInfo.FadeSecond,
                outEnableBlend = info.MainStateInfo.OutStateInfo.EnableFade,
                outBlendSec    = info.MainStateInfo.OutStateInfo.FadeSecond,
                directionType  = info.DirectionType,
                isLoop         = info.MainStateInfo.IsLoop
            };

            this._animation.AnimInfo = actorAnimInfo1;
            ActorAnimInfo actorAnimInfo2 = actorAnimInfo1;

            this._animation.StopAllAnimCoroutine();
            this._animation.PlayInAnimation(actorAnimInfo2.inEnableBlend, actorAnimInfo2.inBlendSec, actorAnimInfo2.inFadeOutTime, actorAnimInfo2.layer);
        }
Example #7
0
    private void CreateAnimation()
    {
        ActorAnimation animation = new ActorAnimation("Troop");
        List <Sprite>  sprites;

        if (animations == null)
        {
            animations = elementObject.GetComponent <Animator>();
        }

        if (element.downSprites.Count > 0)
        {
            sprites = new List <Sprite>(element.downSprites);
            sprites.Add(element.downSprites[0]);
            animation.down     = animation.ConstructAnimation(sprites, element.Id, "down", 30, true);
            animation.downIdle = animation.ConstructAnimation(element.downSprites[0], element.Id, "downIdle", 30, true);
        }

        if (element.leftSprites.Count > 0)
        {
            sprites = new List <Sprite>(element.leftSprites);
            sprites.Add(element.leftSprites[0]);
            animation.left     = animation.ConstructAnimation(sprites, element.Id, "left", 30, true);
            animation.leftIdle = animation.ConstructAnimation(element.leftSprites[0], element.Id, "leftIdle", 30, true);
        }

        if (element.upSprites.Count > 0)
        {
            sprites = new List <Sprite>(element.upSprites);
            sprites.Add(element.upSprites[0]);
            animation.up     = animation.ConstructAnimation(sprites, element.Id, "up", 30, true);
            animation.upIdle = animation.ConstructAnimation(element.upSprites[0], element.Id, "upIdle", 30, true);
        }

        if (element.rightSprites.Count > 0)
        {
            sprites = new List <Sprite>(element.rightSprites);
            sprites.Add(element.rightSprites[0]);
            animation.right     = animation.ConstructAnimation(sprites, element.Id, "right", 30, true);
            animation.rightIdle = animation.ConstructAnimation(element.rightSprites[0], element.Id, "rightIdle", 30, true);
        }

        animations.runtimeAnimatorController = animation.ConstructAnimationControl(element.Id);
    }
Example #8
0
    public void StopBossAnimation(int v)
    {
        GameObject     tmpBoss = GetBoss();
        ActorAnimation aa      = GetARequiredComponent <ActorAnimation>(tmpBoss);

        if (aa != null)
        {
            aa.DisableSelfWhenOnceActionFinished = true;
            if (v == 0)
            {
                aa.IsStop = false;
            }
            else
            {
                aa.enabled = true;
                aa.UpdateToCurrentAnImation();
                aa.IsStop = true;
            }
        }
    }
 public virtual void OnStart()
 {
     ((Task)this).OnStart();
     this._agent                 = this.Agent;
     this._animation             = this._agent.Animation;
     this._navMeshAgent          = this._agent.NavMeshAgent;
     this._point                 = this.Agent.TargetStoryPoint;
     this._loopStateName         = string.Empty;
     this._agent.TutorialCanTalk = false;
     if (this._missing = Object.op_Equality((Object)this._agent, (Object)null) || Object.op_Equality((Object)this._animation, (Object)null) || Object.op_Equality((Object)this._navMeshAgent, (Object)null) || Object.op_Equality((Object)this._point, (Object)null))
     {
         return;
     }
     if (this._adjustAngle)
     {
         this.PlayTurnAnimation();
     }
     else
     {
         this.PlayIdleAnimation();
     }
     this._agent.DeactivateNavMeshAgent();
 }
Example #10
0
 public void Start()
 {
     actorAI  = GetComponent <ActorAI>();
     waySpawn = FindObjectOfType <WaySpawn>();
     anim     = GetComponent <ActorAnimation>();
 }
Example #11
0
        protected override void OnAwake(PlayerActor player)
        {
            player.EventKey = AIProject.EventType.Sleep;
            player.SetActiveOnEquipedItem(false);
            player.ChaControl.setAllLayerWeight(0.0f);
            Singleton <Manager.Input> .Instance.ReserveState(Manager.Input.ValidType.UI);

            Singleton <Manager.Input> .Instance.SetupState();

            MapUIContainer.SetVisibleHUDExceptStoryUI(false);
            MapUIContainer.StorySupportUI.Close();
            ObservableExtensions.Subscribe <long>((IObservable <M0>)Observable.Timer(TimeSpan.FromMilliseconds(1000.0)), (System.Action <M0>)(_ => this.OnStart(player)));
            int eventID = (int)AIProject.Definitions.Action.NameTable[AIProject.EventType.Sleep].Item1;
            DateActionPointInfo apInfo;

            player.CurrentPoint.TryGetPlayerDateActionPointInfo(player.ChaControl.sex, AIProject.EventType.Sleep, out apInfo);
            int poseIda = apInfo.poseIDA;

            player.PoseID = poseIda;
            int        index = poseIda;
            Transform  t1    = ((Component)player.CurrentPoint).get_transform().FindLoop(apInfo.baseNullNameA)?.get_transform() ?? ((Component)player.CurrentPoint).get_transform();
            Transform  t2    = ((Component)player.CurrentPoint).get_transform().FindLoop(apInfo.baseNullNameB)?.get_transform() ?? ((Component)player.CurrentPoint).get_transform();
            GameObject loop1 = ((Component)player.CurrentPoint).get_transform().FindLoop(apInfo.recoveryNullNameA);

            player.Animation.RecoveryPoint = loop1?.get_transform();
            GameObject     loop2      = ((Component)player.CurrentPoint).get_transform().FindLoop(apInfo.recoveryNullNameB);
            ActorAnimation animation  = player.Partner.Animation;
            Transform      transform1 = loop2?.get_transform();

            player.Partner.Animation.RecoveryPoint = transform1;
            Transform transform2 = transform1;

            animation.RecoveryPoint = transform2;
            PlayState playState1 = Singleton <Resources> .Instance.Animation.PlayerActionAnimTable[(int)player.ChaControl.sex][eventID][index];

            player.Animation.LoadEventKeyTable(eventID, apInfo.poseIDA);
            player.LoadEventItems(playState1);
            player.LoadEventParticles(eventID, apInfo.poseIDA);
            player.Animation.InitializeStates(playState1);
            Actor partner = player.Partner;

            partner.Animation.LoadEventKeyTable(eventID, apInfo.poseIDB);
            PlayState playState2 = Singleton <Resources> .Instance.Animation.AgentActionAnimTable[eventID][apInfo.poseIDB];

            partner.LoadEventItems(playState2);
            partner.LoadEventParticles(eventID, apInfo.poseIDB);
            partner.Animation.InitializeStates(playState2);
            ActorAnimInfo actorAnimInfo1 = new ActorAnimInfo()
            {
                layer          = playState1.Layer,
                inEnableBlend  = playState1.MainStateInfo.InStateInfo.EnableFade,
                inBlendSec     = playState1.MainStateInfo.InStateInfo.FadeSecond,
                outEnableBlend = playState1.MainStateInfo.OutStateInfo.EnableFade,
                outBlendSec    = playState1.MainStateInfo.OutStateInfo.FadeSecond,
                directionType  = playState1.DirectionType,
                isLoop         = playState1.MainStateInfo.IsLoop
            };

            player.Partner.Animation.AnimInfo = actorAnimInfo1;
            ActorAnimInfo actorAnimInfo2 = actorAnimInfo1;

            player.Animation.AnimInfo = actorAnimInfo2;
            ActorAnimInfo actorAnimInfo3 = actorAnimInfo2;
            ActorAnimInfo actorAnimInfo4 = new ActorAnimInfo()
            {
                layer          = playState2.Layer,
                inEnableBlend  = playState2.MainStateInfo.InStateInfo.EnableFade,
                inBlendSec     = playState2.MainStateInfo.InStateInfo.FadeSecond,
                outEnableBlend = playState2.MainStateInfo.OutStateInfo.EnableFade,
                outBlendSec    = playState2.MainStateInfo.OutStateInfo.FadeSecond,
                directionType  = playState2.DirectionType,
                isLoop         = playState2.MainStateInfo.IsLoop,
                loopMinTime    = playState1.MainStateInfo.LoopMin,
                loopMaxTime    = playState1.MainStateInfo.LoopMax,
                hasAction      = playState1.ActionInfo.hasAction
            };

            partner.Animation.AnimInfo = actorAnimInfo4;
            ActorAnimInfo actorAnimInfo5 = actorAnimInfo4;

            player.DeactivateNavMeshAgent();
            player.IsKinematic = true;
            partner.SetActiveOnEquipedItem(false);
            partner.ChaControl.setAllLayerWeight(0.0f);
            partner.DeactivateNavMeshAgent();
            partner.IsKinematic = true;
            this._hasAction     = playState1.ActionInfo.hasAction;
            if (this._hasAction)
            {
                this._loopStateName     = playState1.MainStateInfo.InStateInfo.StateInfos.GetElement <PlayState.Info>(playState1.MainStateInfo.InStateInfo.StateInfos.Length - 1).stateName;
                this._randomCount       = playState1.ActionInfo.randomCount;
                this._oldNormalizedTime = 0.0f;
            }
            player.Animation.PlayInAnimation(actorAnimInfo3.inEnableBlend, actorAnimInfo3.inBlendSec, playState1.MainStateInfo.FadeOutTime, actorAnimInfo3.layer);
            player.SetStand(t1, playState1.MainStateInfo.InStateInfo.EnableFade, playState1.MainStateInfo.InStateInfo.FadeSecond, playState1.DirectionType);
            partner.Animation.PlayInAnimation(actorAnimInfo3.inEnableBlend, actorAnimInfo3.inBlendSec, playState2.MainStateInfo.FadeOutTime, actorAnimInfo3.layer);
            partner.SetStand(t2, actorAnimInfo5.inEnableBlend, actorAnimInfo5.inBlendSec, actorAnimInfo3.layer);
            ObservableExtensions.Subscribe <long>(Observable.Take <long>(Observable.Skip <long>((IObservable <M0>)Observable.EveryLateUpdate(), 1), 1), (System.Action <M0>)(_ =>
            {
                if (apInfo.pointID == 501)
                {
                    ADV.ChangeADVFixedAngleCamera((Actor)player, 5);
                }
                else
                {
                    if (apInfo.pointID != 500)
                    {
                        return;
                    }
                    ADV.ChangeADVFixedAngleCamera(partner, 5);
                }
            }));
            bool enabled = ((Behaviour)player.HandsHolder).get_enabled();

            player.OldEnabledHoldingHand = enabled;
            if (enabled)
            {
                ((Behaviour)player.HandsHolder).set_enabled(false);
                if (player.HandsHolder.EnabledHolding)
                {
                    player.HandsHolder.EnabledHolding = false;
                }
            }
            player.CameraControl.SetShotTypeForce(ShotType.Near);
        }
Example #12
0
        private void ActivateTransferImmediate(PlayerActor player, Actor partner)
        {
            EquipEventItemInfo itemInfo = (EquipEventItemInfo)null;
            PlayState          info;

            this.LoadLocomotionAnimation(player, out info, ref itemInfo);
            player.ResetEquipEventItem(itemInfo);
            partner.Position = player.Position;
            partner.Rotation = player.Rotation;
            int            onbuStateId = Singleton <Resources> .Instance.DefinePack.AnimatorState.OnbuStateID;
            PlayState      playState   = Singleton <Resources> .Instance.Animation.PlayerLocomotionStateTable[(int)player.ChaControl.sex][onbuStateId];
            ActorAnimation animation1  = player.Animation;
            ActorAnimation animation2  = partner.Animation;

            animation1.InStates.Clear();
            animation1.OutStates.Clear();
            animation1.ActionStates.Clear();
            partner.Animation.InStates.Clear();
            partner.Animation.OutStates.Clear();
            partner.Animation.ActionStates.Clear();
            PlayState.Info element1 = playState.MainStateInfo.InStateInfo.StateInfos.GetElement <PlayState.Info>(playState.MainStateInfo.InStateInfo.StateInfos.Length - 1);
            if (info != null)
            {
                PlayState.Info element2 = info.MainStateInfo.InStateInfo.StateInfos.GetElement <PlayState.Info>(info.MainStateInfo.InStateInfo.StateInfos.Length - 1);
                player.Animation.InStates.Enqueue(element2);
                if (!info.MainStateInfo.OutStateInfo.StateInfos.IsNullOrEmpty <PlayState.Info>())
                {
                    foreach (PlayState.Info stateInfo in info.MainStateInfo.OutStateInfo.StateInfos)
                    {
                        player.Animation.OutStates.Enqueue(stateInfo);
                    }
                }
                partner.Animation.InStates.Enqueue(element1);
                if (!playState.MainStateInfo.OutStateInfo.StateInfos.IsNullOrEmpty <PlayState.Info>())
                {
                    foreach (PlayState.Info stateInfo in playState.MainStateInfo.OutStateInfo.StateInfos)
                    {
                        partner.Animation.OutStates.Enqueue(stateInfo);
                    }
                }
                ActorAnimInfo animInfo = player.Animation.AnimInfo;
                int           layer    = info.Layer;
                player.Animation.StopAllAnimCoroutine();
                player.Animation.PlayInLocoAnimation(animInfo.inEnableBlend, animInfo.inBlendSec, layer);
                partner.Animation.StopAllAnimCoroutine();
                partner.Animation.PlayInLocoAnimation(animInfo.inEnableBlend, animInfo.inBlendSec, layer);
            }
            else
            {
                for (int index = 1; index < animation1.Animator.get_layerCount(); ++index)
                {
                    animation1.Animator.SetLayerWeight(index, 0.0f);
                }
                player.Animation.InStates.Enqueue(element1);
                if (!playState.MainStateInfo.OutStateInfo.StateInfos.IsNullOrEmpty <PlayState.Info>())
                {
                    foreach (PlayState.Info stateInfo in playState.MainStateInfo.OutStateInfo.StateInfos)
                    {
                        player.Animation.OutStates.Enqueue(stateInfo);
                    }
                }
                partner.Animation.InStates.Enqueue(element1);
                if (!playState.MainStateInfo.OutStateInfo.StateInfos.IsNullOrEmpty <PlayState.Info>())
                {
                    foreach (PlayState.Info stateInfo in playState.MainStateInfo.OutStateInfo.StateInfos)
                    {
                        partner.Animation.OutStates.Enqueue(stateInfo);
                    }
                }
                ActorAnimInfo animInfo = player.Animation.AnimInfo;
                int           layer    = playState.Layer;
                player.Animation.StopAllAnimCoroutine();
                player.Animation.PlayInLocoAnimation(animInfo.inEnableBlend, animInfo.inBlendSec, layer);
                partner.Animation.StopAllAnimCoroutine();
                partner.Animation.PlayInLocoAnimation(animInfo.inEnableBlend, animInfo.inBlendSec, layer);
            }
            if (player.NavMeshAgent.get_isStopped())
            {
                player.NavMeshAgent.set_isStopped(false);
            }
            if (!player.IsKinematic)
            {
                return;
            }
            player.IsKinematic = false;
        }
Example #13
0
        private void ActivateTransfer(PlayerActor player, Actor partner)
        {
            EquipEventItemInfo itemInfo = (EquipEventItemInfo)null;
            PlayState          info1;

            this.LoadLocomotionAnimation(player, out info1, ref itemInfo);
            player.ResetEquipEventItem(itemInfo);
            partner.Position = player.Position;
            partner.Rotation = player.Rotation;
            int               onbuStateId       = Singleton <Resources> .Instance.DefinePack.AnimatorState.OnbuStateID;
            PlayState         info2             = Singleton <Resources> .Instance.Animation.PlayerLocomotionStateTable[(int)player.ChaControl.sex][onbuStateId];
            ActorAnimation    animation1        = player.Animation;
            ActorAnimation    animation2        = partner.Animation;
            AnimatorStateInfo animatorStateInfo = animation1.Animator.GetCurrentAnimatorStateInfo(0);

            if (info1 != null)
            {
                animation1.InitializeStates(info1);
                animation2.InitializeStates(info2);
                bool flag = false;
                foreach (PlayState.Info stateInfo in info1.MainStateInfo.InStateInfo.StateInfos)
                {
                    if (((AnimatorStateInfo) ref animatorStateInfo).get_shortNameHash() == stateInfo.ShortNameStateHash)
                    {
                        flag = true;
                        break;
                    }
                }
                if (flag)
                {
                    if (info1.MaskStateInfo.layer > 0)
                    {
                        if ((double)animation1.Animator.GetLayerWeight(info1.MaskStateInfo.layer) == 0.0)
                        {
                            flag = false;
                        }
                    }
                    else
                    {
                        for (int index = 1; index < animation1.Animator.get_layerCount(); ++index)
                        {
                            if ((double)animation1.Animator.GetLayerWeight(index) > 0.0)
                            {
                                flag = false;
                                break;
                            }
                        }
                    }
                }
                if (flag)
                {
                    animation1.InStates.Clear();
                    animation1.OutStates.Clear();
                    animation1.ActionStates.Clear();
                    animation2.InStates.Clear();
                    animation2.OutStates.Clear();
                    animation2.ActionStates.Clear();
                }
                else
                {
                    int layer = info1.Layer;
                    if (animation1.RefsActAnimInfo)
                    {
                        animation1.StopAllAnimCoroutine();
                        animation1.PlayInLocoAnimation(animation1.AnimInfo.outEnableBlend, animation1.AnimInfo.outBlendSec, layer);
                        animation2.StopAllAnimCoroutine();
                        animation2.PlayInLocoAnimation(animation1.AnimInfo.outEnableBlend, animation1.AnimInfo.outBlendSec, layer);
                        animation1.RefsActAnimInfo = false;
                    }
                    else
                    {
                        bool  enableFade = info1.MainStateInfo.InStateInfo.EnableFade;
                        float fadeSecond = info1.MainStateInfo.InStateInfo.FadeSecond;
                        animation1.StopAllAnimCoroutine();
                        animation1.PlayInLocoAnimation(enableFade, fadeSecond, layer);
                        animation2.StopAllAnimCoroutine();
                        animation2.PlayInLocoAnimation(enableFade, fadeSecond, layer);
                    }
                }
            }
            else
            {
                for (int index = 1; index < animation1.Animator.get_layerCount(); ++index)
                {
                    animation1.Animator.SetLayerWeight(index, 0.0f);
                }
                animation1.InitializeStates(info2);
                animation2.InitializeStates(info2);
                int layer = info2.Layer;
                if (animation1.RefsActAnimInfo)
                {
                    animation1.StopAllAnimCoroutine();
                    animation1.PlayInLocoAnimation(animation1.AnimInfo.endEnableBlend, animation1.AnimInfo.endBlendSec, layer);
                    animation2.StopAllAnimCoroutine();
                    animation2.PlayInLocoAnimation(animation1.AnimInfo.inEnableBlend, animation1.AnimInfo.inBlendSec, layer);
                    animation1.RefsActAnimInfo = false;
                }
                else
                {
                    ActorAnimInfo actorAnimInfo1 = new ActorAnimInfo()
                    {
                        layer         = info2.Layer,
                        inEnableBlend = info2.MainStateInfo.InStateInfo.EnableFade,
                        inBlendSec    = info2.MainStateInfo.InStateInfo.FadeSecond
                    };
                    player.Animation.AnimInfo = actorAnimInfo1;
                    ActorAnimInfo actorAnimInfo2 = actorAnimInfo1;
                    bool          inEnableBlend  = actorAnimInfo2.inEnableBlend;
                    float         inBlendSec     = actorAnimInfo2.inBlendSec;
                    animation1.StopAllAnimCoroutine();
                    animation1.PlayInLocoAnimation(inEnableBlend, inBlendSec, layer);
                    animation2.StopAllAnimCoroutine();
                    animation2.PlayInLocoAnimation(inEnableBlend, inBlendSec, layer);
                }
            }
            if (player.NavMeshAgent.get_isStopped())
            {
                player.NavMeshAgent.set_isStopped(false);
            }
            if (!player.IsKinematic)
            {
                return;
            }
            player.IsKinematic = false;
        }
        public static void CreateAnimations()
        {
            /***
             *
             * IMPS
             *
             */
            {
                // Imp idle
                {
                    var anim1 = new AnimationEntry("impidle1", TimeSpan.FromMilliseconds(200));
                    var anim2 = new AnimationEntry("impidle2", TimeSpan.FromMilliseconds(200));
                    var animList = new List<AnimationEntry>() {anim1, anim2};
                    var impIdle = new ActorAnimation(animList, true, "Prototype");
                    ActorAnimationManager.RegisterAnimation("impidle", impIdle);
                }
                // Imp shoot
                {
                    var anim1 = new AnimationEntry("impshoot1", TimeSpan.FromMilliseconds(200));
                    var anim2 = new AnimationEntry("impshoot2", TimeSpan.FromMilliseconds(200));
                    var anim3 = new AnimationEntry("impshoot3", TimeSpan.FromMilliseconds(200));
                    var animList = new List<AnimationEntry>() {anim1, anim2, anim3};
                    var impShoot = new ActorAnimation(animList, false, "Prototype");
                    ActorAnimationManager.RegisterAnimation("impshoot", impShoot);
                }
                // imp pain
                {
                    var anim1 = new AnimationEntry("imppain", TimeSpan.FromMilliseconds(300));
                    var animList = new List<AnimationEntry>() {anim1};
                    var impPain = new ActorAnimation(animList, false, "Prototype");
                    ActorAnimationManager.RegisterAnimation("imppain", impPain);
                }
                // imp death
                {
                    var anim1 = new AnimationEntry("impdeath1", TimeSpan.FromMilliseconds(200));
                    var anim2 = new AnimationEntry("impdeath2", TimeSpan.FromMilliseconds(200));
                    var anim3 = new AnimationEntry("impdeath3", TimeSpan.FromMilliseconds(200));
                    var anim4 = new AnimationEntry("impdeath4", TimeSpan.FromMilliseconds(200));
                    var anim5 = new AnimationEntry("impdeath5", TimeSpan.FromMilliseconds(200));
                    var animList = new List<AnimationEntry>() {anim1, anim2, anim3, anim4, anim5};
                    var impDie = new ActorAnimation(animList, false, "Prototype");
                    ActorAnimationManager.RegisterAnimation("impdie", impDie);
                }

                // Imp fireball idle
                {
                    var anim1 = new AnimationEntry("impfireball1", TimeSpan.FromMilliseconds(125));
                    var anim2 = new AnimationEntry("impfireball2", TimeSpan.FromMilliseconds(125));
                    var animList = new List<AnimationEntry>() {anim1, anim2};
                    ActorAnimationManager.RegisterAnimation("impfireballidle", new ActorAnimation(animList, true, "Prototype"));
                }
                // Imp fireball death
                {
                    var anim1 = new AnimationEntry("impfireballdeath1", TimeSpan.FromMilliseconds(225));
                    var anim2 = new AnimationEntry("impfireballdeath2", TimeSpan.FromMilliseconds(225));
                    var anim3 = new AnimationEntry("impfireballdeath3", TimeSpan.FromMilliseconds(225));
                    var ballDeath = new ActorAnimation(new List<AnimationEntry>() {anim1, anim2, anim3}, false,
                                                       "Prototype");
                    ActorAnimationManager.RegisterAnimation("impfireballdeath", ballDeath);
                }
            }

            /**
             *
             * CACODEMON
             *
             */

            {
                // caco idle
                {
                    var anim = new AnimationEntry("cacoidle", TimeSpan.Zero);
                    var cacoIdle = new ActorAnimation(true, anim);
                    ActorAnimationManager.RegisterAnimation("cacoidle", cacoIdle);
                }

                // caco shoot fireball
                {
                    var anim1 = new AnimationEntry("cacoshoot1", TimeSpan.FromMilliseconds(125));
                    var anim2 = new AnimationEntry("cacoshoot2", TimeSpan.FromMilliseconds(125));
                    var anim3 = new AnimationEntry("cacoshoot3", TimeSpan.FromMilliseconds(350));
                    var cacoShoot = new ActorAnimation(false, anim1, anim2, anim3);
                    ActorAnimationManager.RegisterAnimation("cacoshoot", cacoShoot);
                }

                // caco pain
                {
                    var anim1 = new AnimationEntry("cacopain1", TimeSpan.FromMilliseconds(500));
                    var anim2 = new AnimationEntry("cacopain2", TimeSpan.FromMilliseconds(500));
                    var cacoPain = new ActorAnimation(false, anim1, anim2);
                    ActorAnimationManager.RegisterAnimation("cacopain", cacoPain);
                }

                // caco death
                {
                    var anim1 = new AnimationEntry("cacodeath1", TimeSpan.FromMilliseconds(120));
                    var anim2 = new AnimationEntry("cacodeath2", TimeSpan.FromMilliseconds(120));
                    var anim3 = new AnimationEntry("cacodeath3", TimeSpan.FromMilliseconds(120));
                    var anim4 = new AnimationEntry("cacodeath4", TimeSpan.FromMilliseconds(120));
                    var anim5 = new AnimationEntry("cacodeath5", TimeSpan.FromMilliseconds(120));
                    var anim6 = new AnimationEntry("cacodeath6", TimeSpan.FromMilliseconds(120));
                    var cacoDeath = new ActorAnimation(false, anim1, anim2, anim3, anim4, anim5, anim6);
                    ActorAnimationManager.RegisterAnimation("cacodie", cacoDeath);
                }

                // caco fireball idle
                {
                    var anim1 = new AnimationEntry("cacofireball1", TimeSpan.FromMilliseconds(125));
                    var anim2 = new AnimationEntry("cacofireball2", TimeSpan.FromMilliseconds(125));
                    var cacoBallIdle = new ActorAnimation(true, anim1, anim2);
                    ActorAnimationManager.RegisterAnimation("cacofireballidle", cacoBallIdle);
                }

                // caco fireball death
                {
                    var anim1 = new AnimationEntry("cacofireballdeath1", TimeSpan.FromMilliseconds(125));
                    var anim2 = new AnimationEntry("cacofireballdeath2", TimeSpan.FromMilliseconds(125));
                    var anim3 = new AnimationEntry("cacofireballdeath3", TimeSpan.FromMilliseconds(125));
                    var cacoFireballDeath = new ActorAnimation(false, anim1, anim2, anim3);
                    ActorAnimationManager.RegisterAnimation("cacofireballdeath", cacoFireballDeath);
                }

            }
        }