// Start is called before the first frame update void Start() { collisionMeshController = CollisionMesh.GetComponent <CollisionMeshController>(); flatCollisionGrid = FlatMesh.GetComponent <FlatCollisionGrid>(); backgroundController = BackgroundController.GetComponent <BackgroundController>(); roomData = new RoomReader().ReadRoomData($"{mapFilepath}.TFS", $"{mapFilepath}.MAP"); camera = Camera.main; cameraOrigin = (roomData.MAPData.Settings.CameraOrigin.ToVector3() / 10f); cameraTarget = (roomData.MAPData.Settings.CameraTranslation.ToVector3() / 10f); camera.transform.position = cameraOrigin; camera.transform.LookAt(cameraTarget); //zoom = roomData.MAPData.Settings.Zoom; //camera.transform.position += ((cameraTarget - cameraOrigin).normalized * (roomData.MAPData.Settings.Zoom)) / 10f; //camera.transform.rotation = Quaternion.Euler(roomData.MAPData.Settings.CameraTranslation.ToVector3()); backgroundController.Initialise(roomData); var collisionMapData = new CollisionMapData(roomData.MAPData.Collision.CollisionMap, 3); //collisionMesh.transform.position = new Vector3(-100, 0, -100); //collisionMeshController.Initialise(100, 10, 100, 2); //collisionMeshController.GenerateMesh(collisionMapData); flatCollisionGrid.Generate(-100, -100, 2, roomData.MAPData.Collision.CollisionMap); }
public void GenerateMesh(CollisionMapData mapData) { for (int x = 0; x < Width; ++x) { for (int y = 0; y < Height; ++y) { for (int z = 0; z < Length; ++z) { CollisionType curBlock = mapData.GetBlock(x, y, z); // If this block is solid if (curBlock == CollisionType.SOLID) { // Compare the block to all of its neighbours. Any // side that faces air should have a face rendered. float scaledX = x * scale; float scaledY = y * scale; float scaledZ = z * scale; if (mapData.GetBlock(x, y + 1, z) == CollisionType.EMPTY) { CreateCubeTopFace(scaledX, scaledY, scaledZ); } if (mapData.GetBlock(x, y, z + 1) == CollisionType.EMPTY) { CreateCubeNorthFace(scaledX, scaledY, scaledZ); } if (mapData.GetBlock(x + 1, y, z) == CollisionType.EMPTY) { CreateCubeEastFace(scaledX, scaledY, scaledZ); } if (mapData.GetBlock(x, y, z - 1) == CollisionType.EMPTY) { CreateCubeSouthFace(scaledX, scaledY, scaledZ); } if (mapData.GetBlock(x - 1, y, z) == CollisionType.EMPTY) { CreateCubeWestFace(scaledX, scaledY, scaledZ); } if (mapData.GetBlock(x, y - 1, z) == CollisionType.EMPTY) { CreateCubeBottomFace(scaledX, scaledY, scaledZ); } } } } } UpdateMesh(); }