コード例 #1
0
        public TestScreen()
        {
            animationLookup = new Dictionary<AnimationId, AnimationContainer>();

            AnimationContainer container;

            container = new AnimationContainer();
            container.up = GetAnimation(A.anim_stand_north);
            container.down = GetAnimation(A.anim_stand_south);
            container.left = GetAnimation(A.anim_stand_west);
            container.right = GetAnimation(A.anim_stand_east);
            animationLookup[AnimationId.Stand] = container;

            container = new AnimationContainer();
            container.up = GetAnimation(A.anim_walk_north);
            container.down = GetAnimation(A.anim_walk_south);
            container.left = GetAnimation(A.anim_walk_west);
            container.right = GetAnimation(A.anim_walk_east);
            animationLookup[AnimationId.Walk] = container;

            container = new AnimationContainer();
            container.up = GetAnimation(A.anim_kick_north);
            container.down = GetAnimation(A.anim_kick_south);
            container.left = GetAnimation(A.anim_kick_west);
            container.right = GetAnimation(A.anim_kick_east);
            animationLookup[AnimationId.Kick] = container;

            groupInstance = new AnimationInstance();
            groupInstance.Init(GetAnimation(A.anim_die_green_1));
        }
コード例 #2
0
ファイル: GameRunning.cs プロジェクト: taimhassouni/SU7
        public void InitializeGameState()
        {
            game      = new Game();
            win       = new Window("Galaga", 500, 500);
            gameTimer = new GameTimer(60, 60);

            // Creating enemies
            enemyStrides = ImageStride.CreateStrides(4,
                                                     Path.Combine("Assets", "Images", "BlueMonster.png"));
            enemies = game.AddEnemies();

            // Shots
            playerShots = new List <PlayerShot>();

            // Explosion
            explosionStrides = ImageStride.CreateStrides(8,
                                                         Path.Combine("Assets", "Images", "Explosion.png"));
            explosions = new AnimationContainer(300);

            // Scoreboard
            score = new Score(new Vec2F(0.05F, -0.25F), new Vec2F(0.3F, 0.3F));
        }
コード例 #3
0
        public void ToItem(AGSSerializationContext context, IObject obj)
        {
            obj.ResetScale(InitialWidth, InitialHeight);
            var image = Image.ToItem(context);

            if (image != null)
            {
                obj.Image = image;
                obj.ScaleBy(ScaleX, ScaleY);
            }
            obj.Location = new AGSLocation(Location.Item1, Location.Item2, Location.Item3);
            obj.Anchor   = new PointF(Anchor.Item1, Anchor.Item2);
            obj.Angle    = Angle;
            obj.Tint     = Color.FromHexa(Tint);

            obj.PixelPerfect(IsPixelPerfect);
            AnimationContainer.ToItem(context, obj);
            if (obj.Animation.Frames.Count > 0)
            {
                obj.ScaleBy(obj.ScaleX, obj.ScaleY);
            }
            obj.RenderLayer = RenderLayer.ToItem(context);
            if (WalkPoint != null)
            {
                obj.WalkPoint = new PointF(WalkPoint.Item1, WalkPoint.Item2);
            }
            obj.Properties.CopyFrom(Properties.ToItem(context));
            obj.Enabled           = Enabled;
            obj.Hotspot           = Hotspot;
            obj.IgnoreViewport    = IgnoreViewport;
            obj.IgnoreScalingArea = IgnoreScalingArea;
            obj.Visible           = Visible;

            if (Parent != null)
            {
                var parent = Parent.ToItem(context);
                obj.TreeNode.SetParent(parent.TreeNode);
            }
        }
コード例 #4
0
        public void InitializeGameState()
        {
            player = new Player(
                new DynamicShape(new Vec2F(0.45f, 0.1f), new Vec2F(0.1f, 0.1f)),
                new Image(Path.Combine("Assets", "Images", "Player.png")), this);

            GalagaBus.GetBus().Subscribe(GameEventType.InputEvent, player);

            enemyStrides = ImageStride.CreateStrides(4, Path.Combine("Assets", "Images", "BlueMonster.png"));
            enemies      = new EntityContainer <Enemy>();

            explosionStrides = ImageStride.CreateStrides(8, Path.Combine("Assets", "Images", "Explosion.png"));
            explosions       = new AnimationContainer(100);

            playerShots = new List <PlayerShot>();

            score = new Score(new Vec2F(0.8f, 0.8f), new Vec2F(0.2f, 0.2f));

            speedMultiplier = 1;

            random = new Random();
        }
コード例 #5
0
        public Game()
        {
            win = new Window("Galaga Game", 500, 500);

            enemyStrides = ImageStride.CreateStrides(4,
                                                     Path.Combine("Assets", "Images", "BlueMonster.png"));

            enemies = new EntityContainer();

            imageShot   = new Image(Path.Combine("Assets", "Images", "BulletRed2.png"));
            playerShots = new EntityContainer();

            explosionStrides = ImageStride.CreateStrides(8,
                                                         Path.Combine("Assets", "Images", "Explosion.png"));

            explosions = new AnimationContainer(explosionLength);


            eventBus = new GameEventBus <object>();

            eventBus.InitializeEventBus(new List <GameEventType>()
            {
                GameEventType.InputEvent,
                GameEventType.WindowEvent,
                GameEventType.PlayerEvent
            });


            player = new Player();
            AddEnemies();

            win.RegisterEventBus(eventBus);
            eventBus.Subscribe(GameEventType.InputEvent, this);
            eventBus.Subscribe(GameEventType.WindowEvent, this);
            eventBus.Subscribe(GameEventType.PlayerEvent, player);

            gameTimer = new GameTimer(60, 60);
        }
コード例 #6
0
    //CLASS CONSTRUCTOR
    public Game()
    {
        win       = new Window("Galaga", 500, 500);
        gameTimer = new GameTimer(60, 60);
        player    = new Player(
            new DynamicShape(new Vec2F(0.45f, 0.1f), new Vec2F(0.1f, 0.1f)),
            new Image(Path.Combine("Assets", "Images", "Player.png")), this);


        eventBus = new GameEventBus <object>(); //3.3
        eventBus.InitializeEventBus(new List <GameEventType>()
        {
            GameEventType.InputEvent,  // key press / key release
            GameEventType.WindowEvent, // messages to the window
            GameEventType.PlayerEvent,
        });
        win.RegisterEventBus(eventBus);
        eventBus.Subscribe(GameEventType.InputEvent, this);
        eventBus.Subscribe(GameEventType.WindowEvent, this);
        eventBus.Subscribe(GameEventType.PlayerEvent, this.player);

        // Creating enemies
        enemyStrides = ImageStride.CreateStrides(4,
                                                 Path.Combine("Assets", "Images", "BlueMonster.png"));
        enemies = AddEnemies();

        // Shots
        playerShots = new List <PlayerShot>();

        // Explosion
        explosionStrides = ImageStride.CreateStrides(8,
                                                     Path.Combine("Assets", "Images", "Explosion.png"));
        explosions = new AnimationContainer(300);

        // Scoreboard
        score = new Score(new Vec2F(0.05F, -0.25F), new Vec2F(0.3F, 0.3F));
    }
コード例 #7
0
ファイル: Game.cs プロジェクト: jsonwulff/Galaga
        /// <summary>
        /// Constructor for Game class
        /// </summary>
        public Game()
        {
            win       = new Window("Galaga", 500, 500);
            gameTimer = new GameTimer(60, 60);

            player = new Player(this,
                                new DynamicShape(new Vec2F(0.45f, 0.1f), new Vec2F(0.1f, 0.1f)),
                                new Image(Path.Combine("Assets", "Images", "Player.png")));

            eventBus = new GameEventBus <object>();
            eventBus.InitializeEventBus(new List <GameEventType> {
                GameEventType.InputEvent,  // key press / key release
                GameEventType.WindowEvent, // messages to the window
                GameEventType.PlayerEvent
            });
            win.RegisterEventBus(eventBus);
            eventBus.Subscribe(GameEventType.InputEvent, this);
            eventBus.Subscribe(GameEventType.WindowEvent, this);
            eventBus.Subscribe(GameEventType.PlayerEvent, player);

            enemyStrides = ImageStride.CreateStrides(4,
                                                     Path.Combine("Assets", "Images", "BlueMonster.png"));
            enemies          = new List <Enemy>();
            row              = new Row(this);
            movementStrategy = new ZigZagDown();


            playerShots     = new List <PlayerShot>();
            playerShotImage = new Image(
                Path.Combine("Assets", "Images", "BulletRed2.png"));

            explosionStrides = ImageStride.CreateStrides(8,
                                                         Path.Combine("Assets", "Images", "Explosion.png"));
            explosions = new AnimationContainer(4);

            score = new Score(new Vec2F(0.01f, -0.25f), new Vec2F(0.3f, 0.3f));
        }
コード例 #8
0
        /// <summary>
        /// Add a new light behaviour to the component and start it immediately unless otherwise specified.
        /// </summary>
        public void AddNewLightBehaviour(LightBehaviourAnimationTrack behaviour, bool playImmediately = true)
        {
            int key = 0;

            while (_animations.Any(x => x.Key == key))
            {
                key++;
            }

            var animation = new Animation()
            {
                AnimationTracks = { behaviour }
            };

            behaviour.Initialize(_lightComponent);
            var container = new AnimationContainer(key, animation, behaviour);

            _animations.Add(container);

            if (playImmediately)
            {
                StartLightBehaviour(behaviour.ID);
            }
        }
コード例 #9
0
ファイル: Game.cs プロジェクト: RasmuFrydendal/su18-MPR
        public Game()
        {
            win = new Window("Galaga", 500, AspectRatio.R16X9);

            player = new Player();

            enemies = new EntityContainer();

            projtIteratorMethod = ProjectileIterator;

            destoryIterator = DestoryIterator;

            enemyStrides = new ImageStride(80, ImageStride.CreateStrides(4,
                                                                         Path.Combine("Assets", "Images", "BlueMonster.png")));

            explosionStrides = ImageStride.CreateStrides(8,
                                                         Path.Combine("Assets", "Images", "Explosion.png"));

            explosions = new AnimationContainer(10);

            AddEnemies();

            eventBus = new GameEventBus <object>();
            eventBus.InitializeEventBus(new List <GameEventType>()
            {
                GameEventType.InputEvent,  // key press / key release
                GameEventType.WindowEvent, // messages to the window
                GameEventType.PlayerEvent  // commands issued to the player object,
            });                            // e.g. move, destroy, receive health, etc.
            win.RegisterEventBus(eventBus);
            eventBus.Subscribe(GameEventType.InputEvent, this);
            eventBus.Subscribe(GameEventType.WindowEvent, this);
            eventBus.Subscribe(GameEventType.PlayerEvent, player);

            gameTimer = new GameTimer(60, 60);
        }
コード例 #10
0
        public Game()
        {
            gameTimer  = new GameTimer(60, 60);
            win        = new Window("Galaca", 500, AspectRatio.R1X1);
            backGround = new Image(Path.Combine("Assets", "Images", "SpaceBackground.png"));
            player     = new Player();

            enemies      = new EntityContainer <Enemy>();
            enemyStrides = ImageStride.CreateStrides(4,
                                                     Path.Combine("Assets", "Images", "BlueMonster.png"));

            var sqr = new Squadron2();

            sqr.CreateEnemies(enemyStrides);
            enemies          = sqr.Enemies;
            movementStrategy = new ZigZagDown();

            playerShots = new EntityContainer();
            shotStride  = new Image(Path.Combine("Assets", "Images", "BulletRed2.png"));

            explosionStrides = ImageStride.CreateStrides(8,
                                                         Path.Combine("Assets", "Images", "Explosion.png"));
            explosions = new AnimationContainer(4);

            eventBus = new GameEventBus <object>();
            eventBus.InitializeEventBus(new List <GameEventType>()
            {
                GameEventType.InputEvent,
                GameEventType.WindowEvent,
                GameEventType.PlayerEvent
            });

            win.RegisterEventBus(eventBus);
            eventBus.Subscribe(GameEventType.InputEvent, this);
            eventBus.Subscribe(GameEventType.WindowEvent, this);
        }
コード例 #11
0
ファイル: GameRunning.cs プロジェクト: CrimsonScythe/su19-kkk
        public void InitializeGameState()
        {
            CreateLevel(ChoseLevel.GetInstance().filename);
            explosionStrides = ImageStride.CreateStrides(8,
                                                         Path.Combine("Assets", "Images", "Explosion.png"));
            explosions      = new AnimationContainer(5);
            currentVelocity = new Vec2F(-0.000001f, 0f);
            foreach (var customer in currentLevel.cusList)
            {
                foreach (var obstacle in currentLevel.obstacles)
                {
                    if (obstacle.symbol.ToString().Equals(customer.spawnplatform))
                    {
                        spawnPlatform = obstacle;
                        customer.entity.Shape.Position = new Vec2F(obstacle.shape.Position.X,
                                                                   obstacle.shape.Position.Y + 0.05f);
                        break;
                    }
                }
            }

            player = new Player();
            player.SetPosition(currentLevel.spawnPos.X, currentLevel.spawnPos.Y);
            player.SetExtent(ChoseLevel.GetInstance().extX, ChoseLevel.GetInstance().extY);
            SpaceTaxiBus.GetBus().Subscribe(GameEventType.PlayerEvent, player);
            SpaceTaxiBus.GetBus().Subscribe(GameEventType.PlayerEvent, player);
            singletonTimer = SingletonTimer.Instance;
            singletonScore = SingletonScore.Instance;
            collisiondatas = new CollisionData[currentLevel.cusList.Count];

            for (int i = 0; i < currentLevel.cusList.Count; i++)
            {
                collisiondatas[i] = CollisionDetection.Aabb(player.Entity.Shape.AsDynamicShape(),
                                                            currentLevel.cusList[i].entity.Shape);
            }
        }
コード例 #12
0
        private async void Button_Clicked(object sender, EventArgs e)
        {
            if (_coverVisible)
            {
                // Hide
                _coverVisible = !_coverVisible;
                ViewExtensions.CancelAnimations(MainButton);
                AnimationContainer.ScaleTo(0, 300, Easing.CubicOut);
                await MainButton.ScaleTo(0, 300, Easing.CubicOut);

                MainButton.InputTransparent = true;
                Countdown();
            }
            else
            {
                // Show
                _coverVisible = !_coverVisible;
                AnimationContainer.ScaleTo(1, 300, Easing.CubicOut);
                await MainButton.ScaleTo(0, 300, Easing.CubicOut);

                MainButton.InputTransparent = false;
                PulseButton();
            }
        }
コード例 #13
0
ファイル: Game.cs プロジェクト: Kristian263/Galaga6
        public Game()
        {
            win             = new Window("Mad man", 500, 500);
            gameTimer       = new GameTimer(60, 60);
            score           = new Score(new Vec2F(0.05f, 0.8f), new Vec2F(0.2f, 0.2f));
            gameState       = GameState.GamePlaying;
            GameOverDisPlay = new GameOverDisPlay();

            player = new Player(
                new DynamicShape(new Vec2F(0.45f, 0.1f), new Vec2F(0.1f, 0.1f)),
                new Image(System.IO.Path.Combine("Assets", "Images", "Player.png")), this);

            enemyStrides = ImageStride.CreateStrides(4, System.IO.Path.Combine("Assets", "Images",
                                                                               "BlueMonster.png"));

            enemies = new EntityContainer <Enemy>();
            AddEnemies(new Squadron.Formation(6));
            currentMoveStrategy = new MovementStrategies.NoMove();

            playerShots = new EntityContainer <PlayerShot>();

            explosionStrides = ImageStride.CreateStrides(8, System.IO.Path.Combine("Assets", "Images", "Explosion.png"));
            explosions       = new AnimationContainer(8);

            eventBus = new GameEventBus <object>();
            eventBus.InitializeEventBus(new List <GameEventType>()
            {
                GameEventType.InputEvent,
                GameEventType.WindowEvent,
                GameEventType.PlayerEvent,
            });
            win.RegisterEventBus(eventBus);
            eventBus.Subscribe(GameEventType.InputEvent, this);
            eventBus.Subscribe(GameEventType.WindowEvent, this);
            eventBus.Subscribe(GameEventType.PlayerEvent, player);
        }
コード例 #14
0
        public void GetAttributes(Frame[] frames, Animation[] animations, string code, byte[] sp12, byte[] sp34)
        {
            GlobalPalette = new GlobalColorPaletteContainer();
            GlobalPalette.ToGlobalColorPaletteContainer();
            Code = code;
            SP12 = sp12;
            SP34 = sp34;
            List <HitBox>           hbs = new List <HitBox>();
            List <InteractionPoint> ips = new List <InteractionPoint>();

            foreach (Frame f in frames)
            {
                foreach (HitBox hb in f.HitBoxes)
                {
                    if (!hbs.Contains(hb))
                    {
                        hbs.Add(hb);
                    }
                }

                foreach (InteractionPoint hb in f.InteractionPoints)
                {
                    if (!ips.Contains(hb))
                    {
                        ips.Add(hb);
                    }
                }
            }

            Hitboxes = new HitboxContainer[hbs.Count];
            int i = 0;

            foreach (HitBox hb in hbs)
            {
                if (hb.GetType() == typeof(RectangleHitBox))
                {
                    Hitboxes[i] = new RectangleHitboxContainer();
                }
                else
                {
                    Hitboxes[i] = new HitboxContainer();
                }
                Hitboxes[i].ToHitboxContainer(hb);
                Hitboxes[i].Name = "" + i + "_" + Hitboxes[i].Name;
                i++;
            }

            InteractionPoints = new InteractionPointContainer[ips.Count];
            i = 0;

            foreach (InteractionPoint hb in ips)
            {
                InteractionPoints[i] = new InteractionPointContainer();
                InteractionPoints[i].ToHitboxContainer(hb);
                InteractionPoints[i].Name = "" + i + "_" + InteractionPoints[i].Name;
                i++;
            }

            Frames = new FrameContainer[frames.Length];
            i      = 0;

            foreach (Frame f in frames)
            {
                Frames[i] = new FrameContainer();
                Frames[i].ToFrameContainer(f, hbs, ips);
                i++;
            }

            Animations = new AnimationContainer[animations.Length];

            for (i = 0; i < animations.Length; i++)
            {
                Animations[i] = new AnimationContainer();
                Animations[i].ToAnimationContainer(animations[i]);
            }
        }
コード例 #15
0
 protected override void OnUnloadView()
 {
     instructions = null;
     AnimationContainer.Reset();
 }
コード例 #16
0
 public AnimationStartedMessage(Entity target, AnimationContainer container, Animation animation)
 {
     Target    = target;
     Animation = animation;
     Container = container;
 }
コード例 #17
0
 protected override void OnUnloadView()
 {
     AnimationContainer.Reset();
 }
コード例 #18
0
 protected override void OnLoadView()
 {
     data = GetViewData <AgendaItemResultData> ();
     AnimationContainer.Reset();
 }
コード例 #19
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(AnimationContainer obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
コード例 #20
0
 protected override void OnInputEnabled()
 {
     AnimationContainer.RunCoinToAvatarAnimation(data.CoinCount.ToString(), data.PlayerAvatarColor);
 }
コード例 #21
0
 void RunCoinAnimation(string coinCount, string avatarColor)
 {
     Co.WaitForSeconds(0.5f, () => {
         AnimationContainer.RunCoinToAvatarAnimation(coinCount, avatarColor);
     });
 }
コード例 #22
0
        protected override void LoadContent()
        {
            base.LoadContent();

            scene.Start();

            return;

            scene.Engine.AddSystem(new StayOnMouseSystem());
            scene.Engine.AddSystem(new TestCollisionListener());

            var cursor = new Entity();

            cursor.Add(new Transform());
            cursor.Add(new Sprite()
            {
                Texture = TextureUtil.CreateTexture(32, 32, Color.Black)
            });
            cursor.Add(ColliderBuilder.New().BoxShape(0.5f, 0.5f).Create());
            cursor.Add(new StayOnMouse());

            var test      = new Entity();
            var transform = new Transform()
            {
                Position = new Vector2(1)
            };

            test.Add(transform);
            var sprite = new Sprite()
            {
                Texture = TextureUtil.CreateTexture(64, 64, Color.Red)
            };

            test.Add(sprite);

            var collider = ColliderBuilder.New().IsDynamic()
                           .Create();

            test.Add(collider);

            var camera = new Entity();

            camera.Add(new Transform());
            camera.Add(new Camera());

            var animation = AnimationBuilder.New()
                            .InsertFrame(0, new KeyFrame(new Vector2(-5, 0)))
                            .InsertFrame(2, new KeyFrame(new Vector2(5, 0)))
                            .InsertFrame(3, new KeyFrame(new Vector2(5, 2.5f)))
                            .Reverses(true)
                            .Loops(true)
                            .AnimatePhysics()
                            .Create();

            var animationContainer = new AnimationContainer();

            animationContainer.Animation.Add("test", animation);

            var animated = new Entity();

            animated.Add(new Transform());
            animated.Add(animationContainer);
            animated.Add(ColliderBuilder.New().IsDynamic().Create());
            animated.Add(new Sprite()
            {
                Texture = TextureUtil.CreateTexture(64, 64, Color.Pink)
            });

            scene.Engine.AddEntity(cursor);
            scene.Engine.AddEntity(test);
            scene.Engine.AddEntity(camera);
            scene.Engine.AddEntity(animated);
            scene.Engine.Systems.Get <CameraSystem>().ActiveCamera = camera;

            scene.Engine.MessageHub.SendMessage(new StartAnimationMessage(animated, "test"));
        }
コード例 #23
0
        public Entity Build()
        {
            var width  = 0.5f;
            var height = 1f;

            var widthPixels  = (int)(width * Transform.PIXELS_A_METRE);
            var heightPixels = (int)(height * Transform.PIXELS_A_METRE);

            var sensorWidthRatio    = 0.2f;
            var sensorLopOff        = 0.9f;
            var sensorWidth         = width * sensorWidthRatio;
            var sensorWidthPixels   = (int)(sensorWidth * Transform.PIXELS_A_METRE);
            var clamberSensorOffset = 1.5f;

            var roomToStandDetector = new Touching();
            var groundDetector      = new Touching();
            var ceilingDetector     = new Touching();
            var leftWallDetector    = new Touching();
            var rightWallDetector   = new Touching();
            var clamberDetector     = new Touching();

            var clamberRightAnimation = ClamberAnimation().Create();
            var clamberLeftAnimation  = ClamberAnimation()
                                        .ReflectHorizontal()
                                        .Create();

            var rollRightAnimation = RollAnimation()
                                     .Create();
            var rollLeftAnimation = RollAnimation()
                                    .ReflectHorizontal()
                                    .ReflectRotation()
                                    .Create();

            var slideDownRightAnimation = SlideDownAnimation()
                                          .Create();

            var slideDownLeftAnimation = SlideDownAnimation()
                                         .ReflectHorizontal()
                                         .ReflectRotation()
                                         .Create();

            var slideUpRightAnimation = SlideDownAnimation()
                                        .Reversed()
                                        .Create();

            var slideUpLeftAnimation = SlideDownAnimation()
                                       .Reversed()
                                       .ReflectHorizontal()
                                       .ReflectRotation()
                                       .Create();

            var diveRightAnimation = DiveAnimation()
                                     .Create();

            var diveLeftAnimation = DiveAnimation()
                                    .ReflectRotation()
                                    .Create();

            var animator = new AnimationContainer()
                           .Add(Animations.Name(PlayerAnimation.Clamber, Direction.Right), clamberRightAnimation)
                           .Add(Animations.Name(PlayerAnimation.Clamber, Direction.Left), clamberLeftAnimation)

                           .Add(Animations.Name(PlayerAnimation.Roll, Direction.Left), rollLeftAnimation)
                           .Add(Animations.Name(PlayerAnimation.Roll, Direction.Right), rollRightAnimation)

                           .Add(Animations.Name(PlayerAnimation.SlideDown, Direction.Right), slideDownRightAnimation)
                           .Add(Animations.Name(PlayerAnimation.SlideUp, Direction.Right), slideUpRightAnimation)
                           .Add(Animations.Name(PlayerAnimation.SlideDown, Direction.Left), slideDownLeftAnimation)
                           .Add(Animations.Name(PlayerAnimation.SlideUp, Direction.Left), slideUpLeftAnimation)

                           .Add(Animations.Name(PlayerAnimation.Dive, Direction.Right), diveRightAnimation)
                           .Add(Animations.Name(PlayerAnimation.Dive, Direction.Left), diveLeftAnimation);

            return(EntityBuilder.New()
                   .WithTag(Tags.PLAYER)
                   .WithTag(Tags.CHARACTER)
                   .WithTexture(TextureUtil.CreateTexture(widthPixels, heightPixels, Color.White))
                   .With(LoadStats())
                   .With(new CharacterInfo()
            {
                CeilingDetector = ceilingDetector,
                ClamberDetector = clamberDetector,
                GroundDetector = groundDetector,
                LeftWallDetector = leftWallDetector,
                RightWallDetector = rightWallDetector,
                RoomToStandDetector = roomToStandDetector
            })
                   .With(new CharacterInput())
                   .With(new Move())
                   .With(animator)

                   .WithChild(EntityBuilder.New(false, true, true)
                              //Add the ground detector (bar below)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(width * sensorLopOff, sensorWidth).IsTrigger().Create())
                                         .With(groundDetector)
                                         .WithTexture(TextureUtil.CreateTexture(widthPixels, sensorWidthPixels, Color.Red))
                                         .AtPosition(new Vector2(0, height * 0.5f + sensorWidth * 0.5f)))

                              //Add the ceiling detector (bar above)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(width * sensorWidth, sensorWidth).IsTrigger().Create())
                                         .With(ceilingDetector)
                                         .WithTexture(TextureUtil.CreateTexture(widthPixels, sensorWidthPixels, Color.Red))
                                         .AtPosition(-new Vector2(0, height * 0.5f + sensorWidth * 0.5f)))

                              //Add the room to stand detector (box above)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(width * sensorWidth, sensorWidth).IsTrigger().Create())
                                         .With(ceilingDetector)
                                         .WithTexture(TextureUtil.CreateTexture(widthPixels, sensorWidthPixels, Color.Red))
                                         .AtPosition(-new Vector2(0, height * 0.75f + sensorWidth * 0.5f)))

                              //Add the left wall detector (bar down left side)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(sensorWidth, height * sensorLopOff).IsTrigger().Create())
                                         .With(leftWallDetector)
                                         .WithTexture(TextureUtil.CreateTexture(sensorWidthPixels, heightPixels, Color.Red))
                                         .AtPosition(-new Vector2(width * 0.5f + sensorWidth * 0.5f, 0)))

                              //Add the right wall detector (bar down right side)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(sensorWidth, height * sensorLopOff).IsTrigger().Create())
                                         .With(rightWallDetector)
                                         .WithTexture(TextureUtil.CreateTexture(sensorWidthPixels, heightPixels, Color.Red))
                                         .AtPosition(new Vector2(width * 0.5f + sensorWidth * 0.5f, 0)))

                              //Add the clamber detector (bar over top, extending out sides)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(width * 3f * sensorLopOff, sensorWidth).IsTrigger().Create())
                                         .With(clamberDetector)
                                         .WithTexture(TextureUtil.CreateTexture(widthPixels * 3, sensorWidthPixels, Color.Red))
                                         .AtPosition(-new Vector2(0, (height * 0.5f + sensorWidth * 0.5f) * clamberSensorOffset))))
                   .AtPosition(new Vector2(0, -10))
                   .With(ColliderBuilder.New().BoxShape(width, height).IsDynamic().IsFixedRotation(true).Create())
                   .With(new StateMachine()
                         .WithTransition(MOVE_STATE, new Transition()
                                         .WithComponent <Move>()
                                         .WithoutComponent <Clamber>()
                                         .WithoutComponent <Dive>()
                                         .WithoutComponent <Roll>()
                                         .WithoutComponent <Slide>())
                         .WithTransition(SLIDE_STATE, new Transition()
                                         .WithComponent <Slide>()
                                         .WithoutComponent <Clamber>()
                                         .WithoutComponent <Dive>()
                                         .WithoutComponent <Move>()
                                         .WithoutComponent <Roll>())
                         .WithTransition(ROLL_STATE, new Transition()
                                         .WithComponent <Roll>()
                                         .WithoutComponent <Clamber>()
                                         .WithoutComponent <Dive>()
                                         .WithoutComponent <Move>()
                                         .WithoutComponent <Slide>())
                         .WithTransition(DIVE_STATE, new Transition()
                                         .WithComponent <Dive>()
                                         .WithoutComponent <Clamber>()
                                         .WithoutComponent <Move>()
                                         .WithoutComponent <Roll>()
                                         .WithoutComponent <Slide>())
                         .WithTransition(CLAMBER_STATE, new Transition()
                                         .WithComponent <Clamber>()
                                         .WithoutComponent <Dive>()
                                         .WithoutComponent <Move>()
                                         .WithoutComponent <Roll>()
                                         .WithoutComponent <Slide>()))
                   .Create());
        }