SebastianLawe

Untitled

Jun 4th, 2015
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.47 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class Constructible : MonoBehaviour {
  5.     public bool _build;
  6.     public float buildRate;
  7.     private Mesh mesh;
  8.     private Vector3[] originalVerts;
  9.     public bool flattenX;
  10.     public bool flattenY;
  11.     public bool flattenZ;
  12.     // Use this for initialization
  13.     void Start() {
  14.         mesh = GetComponent<MeshFilter>().mesh;
  15.         originalVerts = GetComponent<MeshFilter>().sharedMesh.vertices;
  16.         FlattenMesh();
  17.     }
  18.  
  19.     // Update is called once per frame
  20.     void Update() {
  21.         if (_build) {
  22.             Vector3[] verts = mesh.vertices;
  23.             for (int i = 0; i < verts.Length; i++) {
  24.                 verts[i] = new Vector3(
  25.                     verts[i].x + (verts[i].x > originalVerts[i].x - buildRate ? -buildRate :
  26.                     (verts[i].x < originalVerts[i].x + buildRate ? buildRate : 0)),
  27.                     verts[i].y + (verts[i].y > originalVerts[i].y - buildRate ? -buildRate :
  28.                     (verts[i].y < originalVerts[i].y + buildRate ? buildRate : 0)),
  29.                     verts[i].z + (verts[i].z > originalVerts[i].z - buildRate ? -buildRate :
  30.                     (verts[i].z < originalVerts[i].z + buildRate ? buildRate : 0)));
  31.             }
  32.             mesh.vertices = verts;
  33.             mesh.RecalculateBounds();
  34.             mesh.RecalculateNormals();
  35.         }
  36.     }
  37.     private void FlattenMesh() {
  38.         Vector3[] verts = mesh.vertices;
  39.         for (int i = 0; i < verts.Length; i++) {
  40.             verts[i] = new Vector3(flattenX ? 0 : verts[i].x, flattenY ? 0 : verts[i].y, flattenZ ? 0 : verts[i].z);
  41.         }
  42.         mesh.vertices = verts;
  43.         mesh.RecalculateBounds();
  44.         mesh.RecalculateNormals();
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment