public void CreateLevel() { Vector3 levelScale = new Vector3(5); GameEntity entity = new GameEntity("environment"); Entity locationHolder = new Box(Vector3.Zero, 1, 1, 1); entity.AddSharedData(typeof(Entity), locationHolder); Model roomModel = GetUnanimatedModel("Models\\welch"); Vector3[] vertices; int[] indices; TriangleMesh.GetVerticesAndIndicesFromModel(roomModel, out vertices, out indices); StaticMesh roomMesh = new StaticMesh(vertices, indices, new AffineTransform(levelScale, Quaternion.Identity, Vector3.Zero)); entity.AddSharedData(typeof(StaticMesh), roomMesh); StaticMeshComponent roomPhysics = new StaticMeshComponent(mainGame, entity); entity.AddComponent(typeof(StaticMeshComponent), roomPhysics); genComponentManager.AddComponent(roomPhysics); UnanimatedModelComponent graphics = new UnanimatedModelComponent(mainGame, entity, roomModel, levelScale, Vector3.Zero, 0, 0, 0); entity.AddComponent(typeof(UnanimatedModelComponent), graphics); modelManager.AddComponent(graphics); level = entity; Matrix transform = Matrix.CreateScale(levelScale) * Matrix.CreateRotationY(MathHelper.PiOver2); LevelTagData tag = roomModel.Tag as LevelTagData; if (tag != null) { List<Vector3> lightPoles = tag.lightPoleLocations; foreach (Vector3 vec in lightPoles) { CreateLightPole(Vector3.Transform(vec, transform) + Vector3.Up * 15); } List<Vector3> cars = tag.cars; foreach (Vector3 vec in cars) { CreateCar(Vector3.Transform(vec, transform) + Vector3.Up * 15); } List<Vector3> boxes1 = tag.mailbox1; foreach (Vector3 vec in boxes1) { CreateMailbox1(Vector3.Transform(vec, transform) + Vector3.Up * 5); } List<Vector3> boxes2 = tag.mailbox2; foreach (Vector3 vec in boxes2) { CreateMailbox2(Vector3.Transform(vec, transform) + Vector3.Up * 5); } List<Vector3> beer = tag.beer; foreach (Vector3 vec in beer) { CreateBeer(Vector3.Transform(vec, transform) + Vector3.Up * 5); } CreateBeer(new Vector3(10000, 10000, 10000)); } CreateSkybox(); }
public void CreateLevel() { Vector3 levelScale = new Vector3(5); GameEntity entity = new GameEntity("environment"); Entity locationHolder = new Box(Vector3.Zero, 1, 1, 1); entity.AddSharedData(typeof(Entity), locationHolder); Model roomModel = GetUnanimatedModel("Models\\welch"); Vector3[] vertices; int[] indices; TriangleMesh.GetVerticesAndIndicesFromModel(roomModel, out vertices, out indices); StaticMesh roomMesh = new StaticMesh(vertices, indices, new AffineTransform(levelScale, Quaternion.Identity, Vector3.Zero)); entity.AddSharedData(typeof(StaticMesh), roomMesh); StaticMeshComponent roomPhysics = new StaticMeshComponent(mainGame, entity); entity.AddComponent(typeof(StaticMeshComponent), roomPhysics); genComponentManager.AddComponent(roomPhysics); UnanimatedModelComponent graphics = new UnanimatedModelComponent(mainGame, entity, roomModel, levelScale, Vector3.Zero, 0, 0, 0); entity.AddComponent(typeof(UnanimatedModelComponent), graphics); modelManager.AddComponent(graphics); level = entity; Matrix transform = Matrix.CreateScale(levelScale) * Matrix.CreateRotationY(MathHelper.PiOver2); LevelTagData tag = roomModel.Tag as LevelTagData; if (tag != null) { List <Vector3> lightPoles = tag.lightPoleLocations; foreach (Vector3 vec in lightPoles) { CreateLightPole(Vector3.Transform(vec, transform) + Vector3.Up * 15); } List <Vector3> cars = tag.cars; foreach (Vector3 vec in cars) { CreateCar(Vector3.Transform(vec, transform) + Vector3.Up * 15); } List <Vector3> boxes1 = tag.mailbox1; foreach (Vector3 vec in boxes1) { CreateMailbox1(Vector3.Transform(vec, transform) + Vector3.Up * 5); } List <Vector3> boxes2 = tag.mailbox2; foreach (Vector3 vec in boxes2) { CreateMailbox2(Vector3.Transform(vec, transform) + Vector3.Up * 5); } List <Vector3> beer = tag.beer; foreach (Vector3 vec in beer) { CreateBeer(Vector3.Transform(vec, transform) + Vector3.Up * 5); } CreateBeer(new Vector3(10000, 10000, 10000)); } CreateSkybox(); }