//----------------------//------------------------//

        public override void initialize()
        {
            var texture = entity.scene.content.Load <Texture2D>(Content.Characters.player);

            _animationMap = new Dictionary <Animations, string>
            {
                { Animations.Stand, "stand" },
                { Animations.Walking, "walking" },
                { Animations.JumpPreparation, "jumpPreparation" },
                { Animations.JumpUpwards, "jumpUpwards" },
                { Animations.JumpFalling, "jumpFalling" },
                { Animations.JumpLanding, "jumpLanding" },
                { Animations.AttackOne, "attack1" },
                { Animations.AttackTwo, "attack2" },
                { Animations.SlidingWall, "slidingWall" },
                { Animations.Rolling, "rolling" },
                { Animations.Hit, "jumpLanding" },
                { Animations.Dying, "dying" },
            };

            var am = _animationMap;

            sprite = entity.addComponent(new AnimatedSprite(texture, am[Animations.Stand]));
            sprite.CreateAnimation(am[Animations.Stand], 0.1f);
            sprite.AddFrames(am[Animations.Stand], new List <Rectangle>()
            {
                new Rectangle(0, 0, 64, 64),
                new Rectangle(64, 0, 64, 64),
                new Rectangle(128, 0, 64, 64),
                new Rectangle(192, 0, 64, 64),
                new Rectangle(256, 0, 64, 64),
                new Rectangle(320, 0, 64, 64),
            }, new int[] { 0, 0, 0, 0, 0, 0 }, new int[] { -9, -9, -9, -9, -9, -9 });

            sprite.CreateAnimation(am[Animations.Walking], 0.1f);
            sprite.AddFrames(am[Animations.Walking], new List <Rectangle>()
            {
                new Rectangle(0, 64, 64, 64),
                new Rectangle(64, 64, 64, 64),
                new Rectangle(128, 64, 64, 64),
                new Rectangle(192, 64, 64, 64),
                new Rectangle(256, 64, 64, 64),
                new Rectangle(320, 64, 64, 64),
            }, new int[] { 0, 0, 0, 0, 0, 0 }, new int[] { -9, -9, -9, -9, -9, -9 });

            sprite.CreateAnimation(am[Animations.JumpPreparation]);
            sprite.AddFrames(am[Animations.JumpPreparation], new List <Rectangle>()
            {
                new Rectangle(0, 128, 64, 64),
            }, new int[] { 0 }, new int[] { -9 });

            sprite.CreateAnimation(am[Animations.JumpUpwards]);
            sprite.AddFrames(am[Animations.JumpUpwards], new List <Rectangle>()
            {
                new Rectangle(0, 128, 64, 64),
            }, new int[] { 0 }, new int[] { -9 });

            sprite.CreateAnimation(am[Animations.JumpFalling]);
            sprite.AddFrames(am[Animations.JumpFalling], new List <Rectangle>()
            {
                new Rectangle(0, 128, 64, 64),
            }, new int[] { 0 }, new int[] { -9 });

            sprite.CreateAnimation(am[Animations.JumpLanding]);
            sprite.AddFrames(am[Animations.JumpLanding], new List <Rectangle>()
            {
                new Rectangle(0, 128, 64, 64),
            }, new int[] { 0 }, new int[] { -9 });

            sprite.CreateAnimation(am[Animations.AttackOne], 0.08f, false);
            sprite.AddFrames(am[Animations.AttackOne], new List <Rectangle>
            {
                new Rectangle(128, 128, 64, 64),
                new Rectangle(192, 128, 64, 64),
                new Rectangle(256, 128, 64, 64),
                new Rectangle(320, 128, 64, 64),
            }, new [] { 0, 0, 0, 0 }, new[] { -9, -9, -9, -9 });
            sprite.AddAttackCollider(am[Animations.AttackOne], new List <List <Rectangle> >
            {
                new List <Rectangle>()
                {
                },
                new List <Rectangle>()
                {
                    new Rectangle(0, -10, 34, 29)
                },
                new List <Rectangle>()
                {
                    new Rectangle(4, -9, 29, 25)
                },
                new List <Rectangle>()
                {
                    new Rectangle(5, -10, 16, 11)
                },
            });
            sprite.AddFramesToAttack(am[Animations.AttackOne], 1, 2, 3);

            sprite.CreateAnimation(am[Animations.AttackTwo], 0.08f, false);
            sprite.AddFrames(am[Animations.AttackTwo], new List <Rectangle>
            {
                new Rectangle(0, 192, 64, 64),
                new Rectangle(64, 192, 64, 64),
                new Rectangle(128, 192, 64, 64),
                new Rectangle(192, 192, 64, 64),
            }, new int[] { 0, 0, 0, 0 }, new int[] { -9, -9, -9, -9 });
            sprite.AddAttackCollider(am[Animations.AttackTwo], new List <List <Rectangle> >
            {
                new List <Rectangle>()
                {
                    new Rectangle(5, -10, 16, 11)
                },
                new List <Rectangle>()
                {
                    new Rectangle(-20, -8, 55, 24)
                },
                new List <Rectangle>()
                {
                    new Rectangle(-22, -14, 45, 28)
                },
                new List <Rectangle>()
                {
                    new Rectangle(-22, -14, 22, 20)
                },
            });
            sprite.AddFramesToAttack(am[Animations.AttackTwo], 0, 1, 2, 3);

            sprite.CreateAnimation(am[Animations.SlidingWall], 0.1f, false);
            sprite.AddFrames(am[Animations.SlidingWall], new List <Rectangle>()
            {
                new Rectangle(320, 192, 64, 64),
            }, new int[] { 0 }, new int[] { -9 });

            sprite.CreateAnimation(am[Animations.Rolling], 0.05f, false);
            sprite.AddFrames(am[Animations.Rolling], new List <Rectangle>()
            {
                new Rectangle(256, 256, 64, 64),
                new Rectangle(320, 256, 64, 64),
                new Rectangle(0, 320, 64, 64),
                new Rectangle(64, 320, 64, 64),
                new Rectangle(128, 320, 64, 64),
                new Rectangle(192, 320, 64, 64),
                new Rectangle(256, 320, 64, 64),
            }, new int[] { 0, 0, 0, 0, 0, 0, 0 }, new int[] { -9, -9, -9, -9, -9, -9, -9 });

            sprite.CreateAnimation(am[Animations.Hit], 0.1f, false);
            sprite.AddFrames(am[Animations.Hit], new List <Rectangle>()
            {
                new Rectangle(0, 256, 64, 64),
                new Rectangle(64, 256, 64, 64),
                new Rectangle(128, 256, 64, 64),
            }, new int[] { 0, 0, 0, 0, 0, 0 }, new int[] { -9, -9, -9, -9, -9, -9 });

            sprite.CreateAnimation(am[Animations.Dying], 0.2f, false);
            sprite.AddFrames(am[Animations.Dying], new List <Rectangle>()
            {
                new Rectangle(0, 384, 64, 64),
                new Rectangle(64, 384, 64, 64),
                new Rectangle(128, 384, 64, 64),
                new Rectangle(192, 384, 64, 64),
                new Rectangle(256, 384, 64, 64),
                new Rectangle(320, 384, 64, 64),
                new Rectangle(0, 448, 64, 64),
                new Rectangle(64, 448, 64, 64),
                new Rectangle(128, 448, 64, 64),
                new Rectangle(192, 448, 64, 64),
                new Rectangle(256, 448, 64, 64),
                new Rectangle(256, 448, 64, 64),
                new Rectangle(256, 448, 64, 64),
                new Rectangle(256, 448, 64, 64),
                new Rectangle(256, 448, 64, 64),
                new Rectangle(256, 448, 64, 64),
            }, new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, new int[] { -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9 });

            // Create the core sprite
            var coreTexture = entity.scene.content.Load <Texture2D>(Content.Characters.core);

            coreSprite = entity.addComponent(new AnimatedSprite(coreTexture, am[Animations.Stand]));
            coreSprite.CloneAnimationsFrom(sprite, coreTexture);
            coreSprite.setEnabled(false);

            // init fsm
            _fsm = new FiniteStateMachine <PlayerState, PlayerComponent>(this, new StandState());

            // init effects
            _wallSlideEffectTexture = entity.scene.content.Load <Texture2D>(Content.Effects.wallSlideEffect);
            _jumpEffectTexture      = entity.scene.content.Load <Texture2D>(Content.Effects.jumpEffect);
            _rollEffectTexture      = entity.scene.content.Load <Texture2D>(Content.Effects.rollEffect);

            // Set player manager
            playerManager = Core.getGlobalManager <PlayerManager>();
            //playerManager.HoldingCore = true;
        }