public FogObject AddFogObject(int layer, int area) { FogObject obj = new FogObject( InitialiseDataForObject(LevelObject.Type.FOG), (int)GetNextUniqueID(), layer, area); m_LevelObjects.Add(obj.m_UniqueID, obj); return(obj); }
public TerrainSample(Microsoft.Xna.Framework.Game game) : base(game) { SampleFramework.IsMouseVisible = false; _graphicsScreen = new DeferredGraphicsScreen(Services); _graphicsScreen.DrawReticle = true; GraphicsService.Screens.Insert(0, _graphicsScreen); GameObjectService.Objects.Add(new DeferredGraphicsOptionsObject(Services)); Services.Register(typeof(DebugRenderer), null, _graphicsScreen.DebugRenderer); var scene = _graphicsScreen.Scene; Services.Register(typeof(IScene), null, scene); // Add gravity and damping to the physics simulation. Simulation.ForceEffects.Add(new Gravity()); Simulation.ForceEffects.Add(new Damping()); // Add a custom game object which controls the camera. var cameraGameObject = new CameraObject(Services, 5000); cameraGameObject.ResetPose(new Vector3F(0, 2, 5), 0, 0); GameObjectService.Objects.Add(cameraGameObject); _graphicsScreen.ActiveCameraNode = cameraGameObject.CameraNode; // Add standard game objects. GameObjectService.Objects.Add(new GrabObject(Services)); GameObjectService.Objects.Add(new ObjectCreatorObject(Services)); GameObjectService.Objects.Add(new LavaBallsObject(Services)); GameObjectService.Objects.Add(new DynamicSkyObject(Services, true, false, true) { EnableCloudShadows = false, FogSampleAngle = 0.1f, FogSaturation = 1, }); var fogObject = new FogObject(Services) { AttachToCamera = true }; GameObjectService.Objects.Add(fogObject); // Set nice fog values. // (Note: If we change the fog values here, the GUI in the Options window is not // automatically updated.) fogObject.FogNode.IsEnabled = true; fogObject.FogNode.Fog.Start = 100; fogObject.FogNode.Fog.End = 2500; fogObject.FogNode.Fog.Start = 100; fogObject.FogNode.Fog.HeightFalloff = 0.25f; // Add an ocean at height 0. GameObjectService.Objects.Add(new OceanObject(Services)); // Add the terrain. var terrainObject = new TerrainObject(Services); GameObjectService.Objects.Add(terrainObject); SampleFramework.ShowOptionsWindow(); }
protected virtual void WriteFogObjectToXML(XmlWriter writer, FogObject obj) { writer.WriteStartElement("FogObject"); writer.WriteElementString("Density", obj.Parameters[0].ToString()); writer.WriteElementString("Red", obj.Parameters[1].ToString()); writer.WriteElementString("Green", obj.Parameters[2].ToString()); writer.WriteElementString("Blue", obj.Parameters[3].ToString()); writer.WriteElementString("StartDistance", obj.Parameters[4].ToString()); writer.WriteElementString("EndDistance", obj.Parameters[5].ToString()); writer.WriteEndElement(); }
protected virtual void ReadFogObject(XmlReader reader, Level level) { FogObject obj = level.AddFogObject(0, 0); while (reader.Read()) { reader.MoveToContent(); if (reader.NodeType.Equals(XmlNodeType.Element) && reader.LocalName.Equals("Density")) { obj.Parameters[0] = ushort.Parse(reader.ReadElementContentAsString()); } else if (reader.NodeType.Equals(XmlNodeType.Element) && reader.LocalName.Equals("Red")) { obj.Parameters[1] = ushort.Parse(reader.ReadElementContentAsString()); } else if (reader.NodeType.Equals(XmlNodeType.Element) && reader.LocalName.Equals("Green")) { obj.Parameters[2] = ushort.Parse(reader.ReadElementContentAsString()); } else if (reader.NodeType.Equals(XmlNodeType.Element) && reader.LocalName.Equals("Blue")) { obj.Parameters[3] = ushort.Parse(reader.ReadElementContentAsString()); } else if (reader.NodeType.Equals(XmlNodeType.Element) && reader.LocalName.Equals("StartDistance")) { obj.Parameters[4] = ushort.Parse(reader.ReadElementContentAsString()); } else if (reader.NodeType.Equals(XmlNodeType.Element) && reader.LocalName.Equals("EndDistance")) { obj.Parameters[5] = ushort.Parse(reader.ReadElementContentAsString()); } else if (reader.NodeType.Equals(XmlNodeType.EndElement) && reader.LocalName.Equals("FogObject")) { break; } } }
private static void WriteFogObjectToXML(XmlWriter writer, FogObject obj) { writer.WriteStartElement("FogObject"); writer.WriteElementString("Density", obj.Parameters[0].ToString()); writer.WriteElementString("Red", obj.Parameters[1].ToString()); writer.WriteElementString("Green", obj.Parameters[2].ToString()); writer.WriteElementString("Blue", obj.Parameters[3].ToString()); writer.WriteElementString("StartDistance", obj.Parameters[4].ToString()); writer.WriteElementString("EndDistance", obj.Parameters[5].ToString()); writer.WriteEndElement(); }
public ProceduralTerrainSample(Microsoft.Xna.Framework.Game game) : base(game) { SampleFramework.IsMouseVisible = false; _graphicsScreen = new DeferredGraphicsScreen(Services); _graphicsScreen.DrawReticle = true; GraphicsService.Screens.Insert(0, _graphicsScreen); GameObjectService.Objects.Add(new DeferredGraphicsOptionsObject(Services)); Services.Register(typeof(DebugRenderer), null, _graphicsScreen.DebugRenderer); var scene = _graphicsScreen.Scene; Services.Register(typeof(IScene), null, scene); // Add gravity and damping to the physics simulation. Simulation.ForceEffects.Add(new Gravity()); Simulation.ForceEffects.Add(new Damping()); // Add a custom game object which controls the camera. var cameraGameObject = new CameraObject(Services, 5000); cameraGameObject.ResetPose(new Vector3(0, 2, 5), 0, 0); GameObjectService.Objects.Add(cameraGameObject); _graphicsScreen.ActiveCameraNode = cameraGameObject.CameraNode; // Add standard game objects. GameObjectService.Objects.Add(new GrabObject(Services)); GameObjectService.Objects.Add(new ObjectCreatorObject(Services)); GameObjectService.Objects.Add(new LavaBallsObject(Services)); GameObjectService.Objects.Add(new DynamicSkyObject(Services, true, false, true) { EnableCloudShadows = false, FogSampleAngle = 0.1f, FogSaturation = 1, }); var fogObject = new FogObject(Services) { AttachToCamera = true }; GameObjectService.Objects.Add(fogObject); // Set nice default fog values. // (Note: If we change the fog values here, the GUI in the options window is not // automatically updated.) fogObject.FogNode.IsEnabled = true; fogObject.FogNode.Fog.Start = 100; fogObject.FogNode.Fog.End = 2500; fogObject.FogNode.Fog.Start = 100; fogObject.FogNode.Fog.HeightFalloff = 0.25f; // Add a procedural terrain. var terrainObject = new ProceduralTerrainObject(Services); GameObjectService.Objects.Add(terrainObject); SampleFramework.ShowOptionsWindow(); }
private void ReadObjectTable(NitroOverlay ovl, uint offset, int area) { uint subtbl_num = ovl.Read32(offset); uint subtbl_offset = ovl.ReadPointer(offset + 0x4); for (uint st = 0; st < subtbl_num; st++) { uint curoffset = subtbl_offset + (st * 8); byte flags = ovl.Read8(curoffset); byte entries_num = ovl.Read8(curoffset + 0x1); uint entries_offset = ovl.ReadPointer(curoffset + 0x4); byte type = (byte)(flags & 0x1F); byte layer = (byte)(flags >> 5); if (type == 11) { m_MinimapFileIDs = new ushort[entries_num]; } for (byte e = 0; e < entries_num; ++e) { LevelObject obj; INitroROMBlock objData = new INitroROMBlock(); objData.m_Data = ovl.ReadBlock((uint)(entries_offset + e * k_LevelObjTypeSizes[type]), (uint)k_LevelObjTypeSizes[type]); switch (type) { case 0: obj = new StandardObject(objData, m_LevelObjects.Count, layer, area); break; case 1: obj = new EntranceObject(objData, m_LevelObjects.Count, layer, m_EntranceID++); break; case 2: // Path Node obj = new PathPointObject(objData, m_LevelObjects.Count, m_PathNodeID++); break; case 3: // Path obj = new PathObject(objData, m_LevelObjects.Count, (ushort)m_PathID++); break; case 4: obj = new ViewObject(objData, m_LevelObjects.Count, m_ViewID++); break; case 5: obj = new SimpleObject(objData, m_LevelObjects.Count, layer, area); break; case 6: obj = new TpSrcObject(objData, m_LevelObjects.Count, layer); break; case 7: obj = new TpDstObject(objData, m_LevelObjects.Count, layer); break; case 8: // Fog obj = new FogObject(objData, m_LevelObjects.Count, layer, area); break; case 9: obj = new DoorObject(objData, m_LevelObjects.Count, layer); break; case 10: obj = new ExitObject(objData, m_LevelObjects.Count, layer); break; case 11: obj = new MinimapTileIDObject(objData, m_LevelObjects.Count, layer, m_MinimapTileIDNum++); // This is still used by Minimap Editor m_MinimapFileIDs[e] = ovl.Read16((uint)(entries_offset + (e * 2))); break; case 12: // per-area minimap scale factors obj = new MinimapScaleObject(objData, m_LevelObjects.Count, layer, area); break; case 14: // ??? Unknown obj = new Type14Object(objData, m_LevelObjects.Count, layer, area); break; default: throw new InvalidDataException("Bad object type: " + type); } m_LevelObjects.Add(obj.m_UniqueID, obj); } } }
public RoadSample(Microsoft.Xna.Framework.Game game) : base(game) { SampleFramework.IsMouseVisible = false; _graphicsScreen = new DeferredGraphicsScreen(Services); _graphicsScreen.DrawReticle = true; GraphicsService.Screens.Insert(0, _graphicsScreen); GameObjectService.Objects.Add(new DeferredGraphicsOptionsObject(Services)); Services.Register(typeof(DebugRenderer), null, _graphicsScreen.DebugRenderer); var scene = _graphicsScreen.Scene; Services.Register(typeof(IScene), null, scene); // Add gravity and damping to the physics simulation. Simulation.ForceEffects.Add(new Gravity()); Simulation.ForceEffects.Add(new Damping()); // Add a custom game object which controls the camera. var cameraGameObject = new CameraObject(Services, 5000); cameraGameObject.ResetPose(new Vector3(0, 2, 5), 0, 0); GameObjectService.Objects.Add(cameraGameObject); // Add the vehicle object from the vehicle sample. var vehicleObject = new ConstraintVehicleObject(Services); GameObjectService.Objects.Add(vehicleObject); // Add the car-follow-camera from the vehicle sample. var vehicleCameraObject = new VehicleCameraObject(vehicleObject.Vehicle.Chassis, Services); GameObjectService.Objects.Add(vehicleCameraObject); // Now, we have two CameraNodes. The graphics screen uses the camera node of the CameraObject, // as usual. _graphicsScreen.ActiveCameraNode = cameraGameObject.CameraNode; // The CameraObject should not react to input. cameraGameObject.IsEnabled = false; // The CameraNode of the VehicleCameraObject controls the other CameraNode. vehicleCameraObject.CameraNode.SceneChanged += (s, e) => { cameraGameObject.CameraNode.SetLastPose(false); cameraGameObject.CameraNode.PoseWorld = vehicleCameraObject.CameraNode.PoseWorld; }; // Add standard game objects. GameObjectService.Objects.Add(new DynamicSkyObject(Services, true, false, true) { EnableCloudShadows = false, FogSampleAngle = 0.1f, FogSaturation = 1, }); var fogObject = new FogObject(Services) { AttachToCamera = true }; GameObjectService.Objects.Add(fogObject); // Set nice default fog values. // (Note: If we change the fog values here, the GUI in the options window is not // automatically updated.) fogObject.FogNode.IsEnabled = true; fogObject.FogNode.Fog.Start = 100; fogObject.FogNode.Fog.End = 2500; fogObject.FogNode.Fog.Start = 100; fogObject.FogNode.Fog.HeightFalloff = 0.25f; // Add the terrain _terrainObject = new TerrainObject(Services); GameObjectService.Objects.Add(_terrainObject); // Add the TerrainRoadLayer to the terrain. CreateRoad(); // Modify the terrain height values. ClampTerrainToRoad(); }
public RoadSample(Microsoft.Xna.Framework.Game game) : base(game) { SampleFramework.IsMouseVisible = false; _graphicsScreen = new DeferredGraphicsScreen(Services); _graphicsScreen.DrawReticle = true; GraphicsService.Screens.Insert(0, _graphicsScreen); GameObjectService.Objects.Add(new DeferredGraphicsOptionsObject(Services)); Services.Register(typeof(DebugRenderer), null, _graphicsScreen.DebugRenderer); var scene = _graphicsScreen.Scene; Services.Register(typeof(IScene), null, scene); // Add gravity and damping to the physics simulation. Simulation.ForceEffects.Add(new Gravity()); Simulation.ForceEffects.Add(new Damping()); // Add a custom game object which controls the camera. var cameraGameObject = new CameraObject(Services, 5000); cameraGameObject.ResetPose(new Vector3F(0, 2, 5), 0, 0); GameObjectService.Objects.Add(cameraGameObject); // Add the vehicle object from the vehicle sample. var vehicleObject = new ConstraintVehicleObject(Services); GameObjectService.Objects.Add(vehicleObject); // Add the car-follow-camera from the vehicle sample. var vehicleCameraObject = new VehicleCameraObject(vehicleObject.Vehicle.Chassis, Services); GameObjectService.Objects.Add(vehicleCameraObject); // Now, we have two CameraNodes. The graphics screen uses the camera node of the CameraObject, // as usual. _graphicsScreen.ActiveCameraNode = cameraGameObject.CameraNode; // The CameraObject should not react to input. cameraGameObject.IsEnabled = false; // The CameraNode of the VehicleCameraObject controls the other CameraNode. vehicleCameraObject.CameraNode.SceneChanged += (s, e) => { cameraGameObject.CameraNode.SetLastPose(false); cameraGameObject.CameraNode.PoseWorld = vehicleCameraObject.CameraNode.PoseWorld; }; // Add standard game objects. GameObjectService.Objects.Add(new DynamicSkyObject(Services, true, false, true) { EnableCloudShadows = false, FogSampleAngle = 0.1f, FogSaturation = 1, }); var fogObject = new FogObject(Services) { AttachToCamera = true }; GameObjectService.Objects.Add(fogObject); // Set nice default fog values. // (Note: If we change the fog values here, the GUI in the options window is not // automatically updated.) fogObject.FogNode.IsEnabled = true; fogObject.FogNode.Fog.Start = 100; fogObject.FogNode.Fog.End = 2500; fogObject.FogNode.Fog.Start = 100; fogObject.FogNode.Fog.HeightFalloff = 0.25f; // Add the terrain _terrainObject = new TerrainObject(Services); GameObjectService.Objects.Add(_terrainObject); // Add the TerrainRoadLayer to the terrain. CreateRoad(); // Modify the terrain height values. ClampTerrainToRoad(); }