コード例 #1
0
        private void InitSound(ECSEngine engine)
        {
            SoundManager.Instance.SetMusicVolume(0.0f);
            var song = engine.LoadContent <Song>("Sounds/song");

            SoundManager.Instance.AddSong("song", song);
            SoundManager.Instance.PlaySong("song");

            var jump = engine.LoadContent <SoundEffect>("Sounds/jump");

            SoundManager.Instance.AddSoundEffect("jump", jump);
        }
コード例 #2
0
        private void InitSkybox(ECSEngine engine)
        {
            _sm.RegisterSystem("Game", new SkyboxRenderSystem());

            Entity          skyboxEnt  = EntityFactory.Instance.NewEntityWithTag("Skybox");
            SkyboxComponent skyboxComp = new SkyboxComponent(engine.LoadContent <Model>("skyboxes/cube"),
                                                             engine.LoadContent <TextureCube>("skyboxes/Sunset"),
                                                             engine.LoadContent <Effect>("skyboxes/skybox"), 570);

            ComponentManager.Instance.AddComponentToEntity(skyboxEnt, skyboxComp);
            SceneManager.Instance.AddEntityToSceneOnLayer("Game", 0, skyboxEnt);
        }
コード例 #3
0
        private void HandleInitNetworkInformation(NetIncomingMessage inc)
        {
            var cm = ComponentManager.Instance;

            var nrOfPlayers = inc.ReadInt32();

            for (var i = 0; i < nrOfPlayers; i++)
            {
                var player = new PlayerComponent();
                inc.ReadAllProperties(player);

                var e = EntityFactory.Instance.NewEntity();

                cm.AddComponentToEntity(e, player);
                cm.AddComponentToEntity(e, new TransformComponent());
                cm.AddComponentToEntity(e, new LapComponent());

                var modelComp = new ModelComponent(_engine.LoadContent <Model>("kart"), true, false, false)
                {
                    staticModel = false
                };

                //ModelRenderSystem.AddMeshTransform(ref modelComp, 1, Matrix.CreateRotationY(0.2f));
                //ModelRenderSystem.AddMeshTransform(ref modelComp, 3, Matrix.CreateRotationY(0.5f));
                cm.AddComponentToEntity(e, modelComp);

                SceneManager.Instance.AddEntityToSceneOnLayer("Game", 3, e);
            }
        }
コード例 #4
0
        private void AddMenuAndOptions(ECSEngine engine)
        {
            Entity winScreen = EntityFactory.Instance.NewEntityWithTag("LooseScreenImage");

            Render2DComponent   Comp = new Render2DComponent(engine.LoadContent <Texture2D>("youloose"));
            Position2DComponent Pos  = new Position2DComponent(new Vector2(400, 210));

            ComponentManager.Instance.AddComponentToEntity(winScreen, Comp);
            ComponentManager.Instance.AddComponentToEntity(winScreen, Pos);
            SceneManager.Instance.AddEntityToSceneOnLayer("LooseScreen", 0, winScreen);
        }
コード例 #5
0
        private void InitParticles(ECSEngine engine)
        {
            SystemManager.Instance.RegisterSystem("Game", new ParticleRenderSystem(engine.GetGraphicsDevice()));
            SystemManager.Instance.RegisterSystem("Game", new ParticleUpdateSystem());
            Entity SmokehParticle        = EntityFactory.Instance.NewEntityWithTag("smokeh");
            SmokeParticleComponent pComp = new SmokeParticleComponent();

            ComponentManager.Instance.AddComponentToEntity(SmokehParticle, pComp);
            ParticleRenderSystem.LoadParticleEffect(engine.GetGraphicsDevice(), engine.LoadContent <Effect>("Effects/ParticleEffect"), engine.LoadContent <Texture2D>("smoke"), ref pComp);
            ParticleRenderSystem.setParticleOffsetPosition(ref pComp, new Vector3(0, 0, 10f));
            SceneManager.Instance.AddEntityToSceneOnLayer("Game", 2, SmokehParticle);
        }
コード例 #6
0
        private void AddMenuAndOptions(ECSEngine engine)
        {
            Entity MenuBackground = EntityFactory.Instance.NewEntityWithTag("MainMenuBackground");
            Entity SinglePlayer   = EntityFactory.Instance.NewEntityWithTag("MM_SinglePlayerOption");
            Entity Multiplayer    = EntityFactory.Instance.NewEntityWithTag("MM_MultiPlayerOption");
            Entity Exit           = EntityFactory.Instance.NewEntityWithTag("MM_ExitOption");

            Render2DComponent   MenuBgComp = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MainMenu"));
            Position2DComponent MenuBgPos  = new Position2DComponent(new Vector2(0, 0));

            ComponentManager.Instance.AddComponentToEntity(MenuBackground, MenuBgComp);
            ComponentManager.Instance.AddComponentToEntity(MenuBackground, MenuBgPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MainMenu", 0, MenuBackground);

            Render2DComponent   SinglePlayerOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/SinglePlayerSelected"));
            Position2DComponent SinglePlayerOptionPos = new Position2DComponent(new Vector2(351, 278));

            ComponentManager.Instance.AddComponentToEntity(SinglePlayer, SinglePlayerOption);
            ComponentManager.Instance.AddComponentToEntity(SinglePlayer, SinglePlayerOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MainMenu", 1, SinglePlayer);
            SinglePlayer.Visible = true;

            Render2DComponent   MultiPlayerOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MultiPlayerSelected"));
            Position2DComponent MultiPlayerOptionPos = new Position2DComponent(new Vector2(371, 395));

            ComponentManager.Instance.AddComponentToEntity(Multiplayer, MultiPlayerOption);
            ComponentManager.Instance.AddComponentToEntity(Multiplayer, MultiPlayerOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MainMenu", 1, Multiplayer);
            Multiplayer.Visible = false;

            Render2DComponent   ExitOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/ExitSelected"));
            Position2DComponent ExitOptionPos = new Position2DComponent(new Vector2(506, 515));

            ComponentManager.Instance.AddComponentToEntity(Exit, ExitOption);
            ComponentManager.Instance.AddComponentToEntity(Exit, ExitOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MainMenu", 1, Exit);
            Exit.Visible = false;
        }
コード例 #7
0
        private void AddMenuAndOptions(ECSEngine engine)
        {
            Entity Background = EntityFactory.Instance.NewEntity();
            Entity Join       = EntityFactory.Instance.NewEntityWithTag("MP_Join");
            Entity Host       = EntityFactory.Instance.NewEntityWithTag("MP_Host");
            Entity Back       = EntityFactory.Instance.NewEntityWithTag("MP_Back");

            Render2DComponent   MenuBgComp = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MultiPlayerMenu"));
            Position2DComponent MenuBgPos  = new Position2DComponent(new Vector2(0, 0));

            ComponentManager.Instance.AddComponentToEntity(Background, MenuBgComp);
            ComponentManager.Instance.AddComponentToEntity(Background, MenuBgPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MultiPlayerMenu", 0, Background);

            Render2DComponent   joinPlayerOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MPJoinGame"));
            Position2DComponent joinPlayerOptionPos = new Position2DComponent(new Vector2(381, 221));

            ComponentManager.Instance.AddComponentToEntity(Join, joinPlayerOption);
            ComponentManager.Instance.AddComponentToEntity(Join, joinPlayerOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MultiPlayerMenu", 1, Join);
            Join.Visible = true;

            Render2DComponent   hostOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MPHostGame"));
            Position2DComponent hostOptionPos = new Position2DComponent(new Vector2(367, 376));

            ComponentManager.Instance.AddComponentToEntity(Host, hostOption);
            ComponentManager.Instance.AddComponentToEntity(Host, hostOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MultiPlayerMenu", 1, Host);
            Host.Visible = false;

            Render2DComponent   backOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/back"));
            Position2DComponent backOptionPos = new Position2DComponent(new Vector2(494, 527));

            ComponentManager.Instance.AddComponentToEntity(Back, backOption);
            ComponentManager.Instance.AddComponentToEntity(Back, backOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MultiPlayerMenu", 1, Back);
            Back.Visible = false;
        }
コード例 #8
0
        private void InitAi(ECSEngine engine)
        {
            _sm.RegisterSystem("Game", new AiSystem());

            var entity = EntityFactory.Instance.NewEntityWithTag("AiKart");
            var modelC = new ModelComponent(engine.LoadContent <Model>("Chopper"), true, false, false)
            {
                staticModel = false
            };

            ModelRenderSystem.AddMeshTransform(ref modelC, 1, Matrix.CreateRotationY(0.2f));
            ModelRenderSystem.AddMeshTransform(ref modelC, 3, Matrix.CreateRotationY(0.5f));
            ComponentManager.Instance.AddComponentToEntity(entity, modelC);

            //Create waypoints and add the AIComponent.
            var waypoints = CreateWaypoints();

            AiSystem.Waypoints = waypoints;
            var aiC = new AiComponent(waypoints[0], new CountdownState());

            ComponentManager.Instance.AddComponentToEntity(entity, aiC);

            ComponentManager.Instance.AddComponentToEntity(entity, new Collision3Dcomponent());

            var aiKartTransform = new TransformComponent {
                Position = new Vector3(0.0f, 5.0f, 0.0f)
            };

            aiKartTransform.Rotation = Quaternion.CreateFromAxisAngle(Vector3.UnitY, AiSystem.GetRotation(aiKartTransform.Position, aiC.Waypoint.TargetPosition));
            aiKartTransform.Scale    = new Vector3(2.5f, 2.5f, 2.5f);
            ComponentManager.Instance.AddComponentToEntity(entity, aiKartTransform);

            SceneManager.Instance.AddEntityToSceneOnLayer("Game", 3, entity);
            ComponentManager.Instance.AddComponentToEntity(entity, new PhysicsComponent()
            {
                Mass  = 5f,
                Force = new Vector3(15f, 250f, 0)
            });
            ComponentManager.Instance.AddComponentToEntity(entity, new GravityComponent());
            //ComponentManager.Instance.AddComponentToEntity(entity, new FrictionComponent());
            //ComponentManager.Instance.AddComponentToEntity(entity, new DragComponent());
            ComponentManager.Instance.AddComponentToEntity(entity, new KartComponent());
            ComponentManager.Instance.AddComponentToEntity(entity, new PlayerComponent());
            ComponentManager.Instance.AddComponentToEntity(entity, new LapComponent());
        }
コード例 #9
0
        private void InitKart(ECSEngine engine)
        {
            _sm.RegisterSystem("Game", new KartControlSystem(engine));

            var kart      = EntityFactory.Instance.NewEntityWithTag("Kart");
            var modelComp = new ModelComponent(engine.LoadContent <Model>("kart"), true, false, false);

            modelComp.staticModel = false;
            //ModelRenderSystem.AddMeshTransform(ref modelComp, 1, Matrix.CreateRotationY(0.2f));
            //ModelRenderSystem.AddMeshTransform(ref modelComp, 3, Matrix.CreateRotationY(0.5f));
            ComponentManager.Instance.AddComponentToEntity(kart, modelComp);
            ComponentManager.Instance.AddComponentToEntity(kart, new NetworkShareComponent());

            ComponentManager.Instance.AddComponentToEntity(kart, new Collision3Dcomponent());
            ComponentManager.Instance.AddComponentToEntity(kart, new PowerupComponent());
            ComponentManager.Instance.AddComponentToEntity(kart, new LocalPlayerComponent());

            // Create player comp
            ComponentManager.Instance.AddComponentToEntity(kart, new PlayerComponent {
                Name = "Player", Id = 1
            });

            ComponentManager.Instance.AddComponentToEntity(kart, new PhysicsComponent()
            {
                Mass  = 5f,
                Force = new Vector3(15f, 250f, 0)
            });
            ComponentManager.Instance.AddComponentToEntity(kart, new TransformComponent
            {
                Position     = new Vector3(0.0f, 0.0f, 0.0f),
                Scale        = new Vector3(2.5f, 2.5f, 2.5f),
                Acceleration = new Vector3(5f, 75f, 0)
            });
            ComponentManager.Instance.AddComponentToEntity(kart, new GravityComponent());
            ComponentManager.Instance.AddComponentToEntity(kart, new FrictionComponent());
            ComponentManager.Instance.AddComponentToEntity(kart, new DragComponent());
            ComponentManager.Instance.AddComponentToEntity(kart, new KartComponent());
            ComponentManager.Instance.AddComponentToEntity(kart, new LapComponent());
            ComponentManager.Instance.AddComponentToEntity(kart, new LocalPlayerComponent());


            SceneManager.Instance.AddEntityToSceneOnLayer("Game", 3, kart);
        }
コード例 #10
0
ファイル: InitHouses.cs プロジェクト: solarstrings/GoblinKart
        public InitHouses(ECSEngine engine)
        {
            Random              rnd           = new Random();
            ModelComponent      house         = new ModelComponent(engine.LoadContent <Model>("basichouse"), true, true, true);
            ModelComponent      house2        = new ModelComponent(engine.LoadContent <Model>("basichouse"), true, true, true);
            ModelComponent      powerupModel  = new ModelComponent(engine.LoadContent <Model>("basichouse"), true, true, false);
            List <Entity>       sceneEntities = SceneManager.Instance.GetActiveScene().GetAllEntities();
            Entity              terrain       = ComponentManager.Instance.GetEntityWithTag("Terrain", sceneEntities);
            TerrainMapComponent tcomp         = ComponentManager.Instance.GetEntityComponent <TerrainMapComponent>(terrain);

            // Init test-powerup

            Entity entity = EntityFactory.Instance.NewEntity();

            powerupModel.SetTexture(engine.LoadContent <Texture2D>("basichouse_texture1"));
            powerupModel.textured = true;
            ComponentManager.Instance.AddComponentToEntity(entity, powerupModel);

            TransformComponent tt = new TransformComponent();
            float hh = (float)rnd.Next(8, 12) / 100;

            tt.Position = new Vector3(500, 35, -50);
            tt.Scale    = new Vector3(0.08f, hh, 0.08f);
            ComponentManager.Instance.AddComponentToEntity(entity, tt);

            ComponentManager.Instance.AddComponentToEntity(entity, new Collision3Dcomponent());
            ComponentManager.Instance.AddComponentToEntity(entity, new PowerupModelComponent());

            SceneManager.Instance.AddEntityToSceneOnLayer("Game", 1, entity);

            // Init houses
            for (int i = 0; i < 1; ++i)
            {
                Entity e = EntityFactory.Instance.NewEntity();

                if (i < 50)
                {
                    house.SetTexture(engine.LoadContent <Texture2D>("basichouse_texture1"));
                    house.textured = true;
                    ComponentManager.Instance.AddComponentToEntity(e, house);
                }
                else
                {
                    house2.SetTexture(engine.LoadContent <Texture2D>("basichouse_texture2"));
                    house2.textured = true;
                    ComponentManager.Instance.AddComponentToEntity(e, house2);
                }

                TransformComponent t = new TransformComponent();
                float minx           = rnd.Next(128, 900);
                float minz           = rnd.Next(128, 900);
                float houseHeight    = (float)rnd.Next(8, 12) / 100;
                t.Position = new Vector3(minx, 0.0f, -minz);
                t.Position = new Vector3(t.Position.X, TerrainMapRenderSystem.GetTerrainHeight(tcomp, t.Position.X, Math.Abs(t.Position.Z)), t.Position.Z);
                t.Scale    = new Vector3(0.08f, houseHeight, 0.08f);
                t.World    = Matrix.CreateTranslation(t.Position);

                //house and house2 are identical, so it's ok to use either of them
                ModelBoundingSphereComponent sphereComp = new ModelBoundingSphereComponent(house, t.Position);

                ComponentManager.Instance.AddComponentToEntity(e, t);
                ComponentManager.Instance.AddComponentToEntity(e, sphereComp);
                ComponentManager.Instance.AddComponentToEntity(e, new Collision3Dcomponent());

                SceneManager.Instance.AddEntityToSceneOnLayer("Game", 1, e);
            }
        }
コード例 #11
0
        private void InitTerrain(ECSEngine engine)
        {
            _sm.RegisterSystem("Game", new TerrainMapRenderSystem());

            var terrainTex = engine.LoadContent <Texture2D>("Canyon");
            var defaultTex = engine.LoadContent <Texture2D>("grasstile");

            var terrain = EntityFactory.Instance.NewEntityWithTag("Terrain");
            var t       = new TerrainMapComponent(engine.GetGraphicsDevice(), terrainTex, defaultTex, 10);
            var tf      = new TransformComponent();

            TerrainMapRenderSystem.LoadHeightMap(ref t, terrainTex, defaultTex, engine.GetGraphicsDevice());

            t.SetTextureToChunk(0, engine.LoadContent <Texture2D>("LTCornerroad"));
            t.SetTextureToChunk(1, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(2, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(3, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(4, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(5, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(6, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(7, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(8, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(9, engine.LoadContent <Texture2D>("LBCornerroad"));
            t.SetTextureToChunk(10, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(19, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(20, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(29, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(30, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(39, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(40, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(49, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(50, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(59, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(60, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(69, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(70, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(79, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(80, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(89, engine.LoadContent <Texture2D>("horizontalroad"));
            t.SetTextureToChunk(90, engine.LoadContent <Texture2D>("RTCornerroad"));
            t.SetTextureToChunk(99, engine.LoadContent <Texture2D>("RBCornerroad"));
            t.SetTextureToChunk(98, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(97, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(96, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(95, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(94, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(93, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(92, engine.LoadContent <Texture2D>("verticalroad"));
            t.SetTextureToChunk(91, engine.LoadContent <Texture2D>("verticalroad"));

            tf.World    = Matrix.CreateTranslation(0, 0, 0);
            tf.Position = Vector3.Zero;
            ComponentManager.Instance.AddComponentToEntity(terrain, t);
            ComponentManager.Instance.AddComponentToEntity(terrain, tf);

            SceneManager.Instance.AddEntityToSceneOnLayer("Game", 2, terrain);
        }