public Terrain(GraphicsDevice device, ContentManager content, LevelInfo levelInfo, Camera camera) { this.device = device; this.content = content; this.levelInfo = levelInfo; this.camera = camera; initialise(); }
public AudioEmitter getEmitter(Camera listenerCamera) { Vector3 relativePos = entity.getPosition() -listenerCamera.getPosition(); Matrix rotation = Matrix.CreateRotationZ(-listenerCamera.getOrientation()); Matrix translation = Matrix.CreateTranslation(listenerCamera.getPosition()); Vector3 newPos = Vector3.Transform(relativePos, rotation * translation); emitter.Position = newPos; return emitter; }
public NetLevelState(IStateManager manager, DroughtGame game, Level aLevel, bool isHost) : base(manager, game) { soundManager = game.getSoundManager(); networkManager = game.getNetworkManager(); hosting = isHost; input = DeviceInput.getInput(); sun = new Sun(new Vector3(0, -200, 200)); levelInfo = new LevelInfo(); levelInfo.initialise(aLevel); List<List<Vector3>> waterList = Water.findWater(levelInfo); waters = new Water[waterList.Count]; for (int i = 0; i < waters.Length; i++) waters[i] = new Water(waterList[i], levelInfo, sun, getGraphics()); aStar = new AStar(levelInfo); rain = new PlaneParticleEmitter(512, 256, new Vector3(256, 128, 200), new Vector3(0, 0, 0), new Vector3(3f, 0, -19f), Color.LightBlue.ToVector4(), 100000, 9); camera = new Camera(this, levelInfo, false); terrain = new Terrain(getGraphics(), getContentManager(), levelInfo, camera); soundManager.setListener(camera); modelLoader = new ModelLoader(getContentManager(), getGraphics()); skybox = new Skybox(camera, sun, modelLoader.getModel3D(modelType.Skybox)); lineTool = new LineTool(getGraphics()); loadContent(); initializeEntities(); foreach (MovableEntity entity in localEntities) soundManager.playSound(SoundHandle.Truck, entity); }
/** Sets the sound listener. */ public void setListener(Camera theListener) { listenerCamera = theListener; }
public void renderInfoBox(GraphicsDevice graphics, Camera camera) { if (selectTime > 0) { infoBar.render(graphics, camera.getViewMatrix(), camera.getProjectionMatrix()); } }
public virtual void render(GraphicsDevice graphics, Camera camera, Sun sun) { if (!isDead()) pathTool.render(camera.getViewMatrix(), camera.getProjectionMatrix()); if (selected) ringTool.render(camera.getViewMatrix(), camera.getProjectionMatrix()); graphics.RenderState.DepthBufferEnable = true; graphics.RenderState.AlphaBlendEnable = false; graphics.RenderState.AlphaTestEnable = false; Matrix[] transforms = new Matrix[model.Model.Bones.Count]; model.Model.CopyAbsoluteBoneTransformsTo(transforms); Matrix worldMatrix = Matrix.CreateScale(model.Scale) * orientation * Matrix.CreateTranslation(position); //"sink" the units a bit if they're dead, just to conceptually remove them from play if (isDead()) worldMatrix *= Matrix.CreateTranslation(new Vector3(0, 0, -0.5f)); int i = 0; foreach (ModelMesh mesh in model.Model.Meshes) { foreach (Effect currentEffect in mesh.Effects) { currentEffect.CurrentTechnique = model.Effect.Techniques["Textured"]; currentEffect.Parameters["xWorldViewProjection"].SetValue(transforms[mesh.ParentBone.Index] * worldMatrix * camera.getViewMatrix() * camera.getProjectionMatrix()); currentEffect.Parameters["xWorld"].SetValue(worldMatrix); currentEffect.Parameters["xTexture"].SetValue(model.Textures[i++]); currentEffect.Parameters["xEnableLighting"].SetValue(true); currentEffect.Parameters["xEnableNormals"].SetValue(true); currentEffect.Parameters["xLightPosition"].SetValue(sun.getPosition()); currentEffect.Parameters["xLightPower"].SetValue(sun.getPower()); currentEffect.Parameters["xGreyScale"].SetValue(isDead()); } mesh.Draw(); } }
public override void render(GraphicsDevice graphics, Camera camera, Sun sun) { base.render(graphics, camera, sun); if (IsSelected) attackRadiusTool.render(camera.getViewMatrix(), camera.getProjectionMatrix()); }
public Skybox(Camera camera, Sun sun, Model3D model) { this.camera = camera; this.sun = sun; this.model = model; }
public LevelState(IStateManager manager, DroughtGame game, Level aLevel) : base(manager, game) { /* TEMP */ explosionParticles = new ExplosionParticleSystem(getContentManager(), getGraphics()); explosionSmokeParticles = new ExplosionSmokeParticleSystem(getContentManager(), getGraphics()); projectileTrailParticles = new ProjectileTrailParticleSystem(getContentManager(), getGraphics()); smokePlumeParticles = new SmokePlumeParticleSystem(getContentManager(), getGraphics()); fireParticles = new FireParticleSystem(getContentManager(), getGraphics()); projectileManager = new ProjectileManager(explosionParticles, explosionSmokeParticles, projectileTrailParticles); soundManager = game.getSoundManager(); input = DeviceInput.getInput(); sun = new Sun(new Vector3(0, -200, 200)); levelInfo = new LevelInfo(); levelInfo.initialise(aLevel); TextureMap textureMap = new TextureMap(aLevel); //List<List<Vector3>> waterList = Water.findWater(levelInfo); List<List<Vector3>> waterListPleh = textureMap.findWater(); //waters = new Water[waterList.Count]; waters = new Water[waterListPleh.Count]; Water[,] waterLocationTable = new Water[levelInfo.getWidth(), levelInfo.getHeight()]; for (int i = 0; i < waters.Length; i++) { //waters[i] = new Water(waterList[i], levelInfo, getGraphics()); waters[i] = new Water(waterListPleh[i], levelInfo, sun, getGraphics()); for (int j = 0; j < waterListPleh[i].Count; j++) { Vector3 p = waterListPleh[i][j]; waterLocationTable[(int)p.X, (int)p.Y] = waters[i]; } } levelInfo.setWaterPools(waterLocationTable); camera = new Camera(this, levelInfo, false); rain = new PlaneParticleEmitter(512, 256, new Vector3(256, 128, 200), new Vector3(0, 0, 0), new Vector3(3f, 0, -19f), Color.LightBlue.ToVector4(), 10000, 9); terrain = new Terrain(getGraphics(), getContentManager(), levelInfo, camera); modelLoader = new ModelLoader(getContentManager(), getGraphics()); skybox = new Skybox(camera, sun, modelLoader.getModel3D(modelType.Skybox)); lineTool = new LineTool(getGraphics()); aStar = new AStar(levelInfo); soundManager.setListener(camera); loadContent(); initializeEntities(); foreach (MovableEntity entity in entities) soundManager.playSound(SoundHandle.Truck, entity); }