public void ApplyChunkSettings(Chunk chunk, CubedObjectBehaviour parent) { this.chunk = chunk; renderer.materials = new Material[] { chunk.blockMaterial }; var mesh = new Mesh(); mesh.Clear(); mesh.vertices = chunk.meshData.RenderableVertices.ToArray(); mesh.triangles = chunk.meshData.RenderableTriangles.ToArray(); mesh.uv = chunk.meshData.RenderableUvs.ToArray(); mesh.RecalculateNormals(); var meshFilter = GetComponent<MeshFilter>(); // sharedMesh is null during generation // TODO: Fix this as the generator shows errors in the console when using mesh vs. sharedMesh //mesh = (meshFilter.mesh if EditorApplication.isPlayingOrWillChangePlaymode else meshFilter.sharedMesh) if(Application.isPlaying) meshFilter.mesh = mesh; else meshFilter.sharedMesh = mesh; if(parent.colliderType == ColliderType.MeshColliderPerChunk) { var colliderMesh = new Mesh(); colliderMesh.vertices = chunk.meshData.CollidableVertices.ToArray(); colliderMesh.triangles = chunk.meshData.CollidableTriangles.ToArray(); var meshCollider = GetComponent<MeshCollider>(); if(colliderMesh != null) { if(meshCollider == null) meshCollider = gameObject.AddComponent<MeshCollider>(); meshCollider.sharedMesh = colliderMesh; meshCollider.convex = false; meshCollider.enabled = true; } else { if(meshCollider != null) meshCollider.enabled = false; } } transform.localPosition = (chunk.gridPosition * parent.chunkDimensions).ToVector3() * parent.cubeSize; }
// Use this for initialization void Awake() { var cubedObjectGameObject = GameObject.Find("Cube Terrain"); if (cubedObjectGameObject == null) { throw new System.Exception("There must be a game object named 'Cube Terrain' on the scene for Digger to work"); } cubedObject = cubedObjectGameObject.GetComponent <CubedObjectBehaviour>(); }
public void ApplyChunkSettings(Chunk chunk, CubedObjectBehaviour parent) { this.chunk = chunk; renderer.materials = new Material[] { chunk.blockMaterial }; var mesh = new Mesh(); mesh.Clear(); mesh.vertices = chunk.meshData.RenderableVertices.ToArray(); mesh.triangles = chunk.meshData.RenderableTriangles.ToArray(); mesh.uv = chunk.meshData.RenderableUvs.ToArray(); mesh.RecalculateNormals(); var meshFilter = GetComponent <MeshFilter>(); // sharedMesh is null during generation // TODO: Fix this as the generator shows errors in the console when using mesh vs. sharedMesh //mesh = (meshFilter.mesh if EditorApplication.isPlayingOrWillChangePlaymode else meshFilter.sharedMesh) if (Application.isPlaying) { meshFilter.mesh = mesh; } else { meshFilter.sharedMesh = mesh; } if (parent.colliderType == ColliderType.MeshColliderPerChunk) { var colliderMesh = new Mesh(); colliderMesh.vertices = chunk.meshData.CollidableVertices.ToArray(); colliderMesh.triangles = chunk.meshData.CollidableTriangles.ToArray(); var meshCollider = GetComponent <MeshCollider>(); if (colliderMesh != null) { if (meshCollider == null) { meshCollider = gameObject.AddComponent <MeshCollider>(); } meshCollider.sharedMesh = colliderMesh; meshCollider.convex = false; meshCollider.enabled = true; } else { if (meshCollider != null) { meshCollider.enabled = false; } } } transform.localPosition = (chunk.gridPosition * parent.chunkDimensions).ToVector3() * parent.cubeSize; }
/// <summary> /// Clones from another CubedObjectBehavior. This can be helpful for generators that need to run in threads and /// combine their results later. /// </summary> /// <param name='other'> /// The CubedObjectBehavior to clone from. /// </param> public void CloneFrom(CubedObjectBehaviour other) { allCubes = new Cube[other.TotalDimensions.x, other.TotalDimensions.y, other.TotalDimensions.z]; System.Array.Copy(other.allCubes, allCubes, other.allCubes.Length); material = other.material; chunkDimensions = other.chunkDimensions.Clone(); dimensionsInChunks = other.dimensionsInChunks.Clone(); colliderType = other.colliderType; cubeLegend = other.cubeLegend.Clone(); cubeSize = other.cubeSize; // TODO: Add more things to copy over. }
// Use this for initialization void Awake() { var cubedObjectGameObject = GameObject.Find("Cube Terrain"); if (cubedObjectGameObject == null) throw new System.Exception("There must be a game object named 'Cube Terrain' on the scene for Digger to work"); cubedObject = cubedObjectGameObject.GetComponent<CubedObjectBehaviour>(); }