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); }
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); }
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); } }
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); }
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); }
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; }
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; }
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()); }
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); }
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); } }
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); }