Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class Constructible : MonoBehaviour {
- public bool _build;
- public float buildRate;
- private Mesh mesh;
- private Vector3[] originalVerts;
- public bool flattenX;
- public bool flattenY;
- public bool flattenZ;
- // Use this for initialization
- void Start() {
- mesh = GetComponent<MeshFilter>().mesh;
- originalVerts = GetComponent<MeshFilter>().sharedMesh.vertices;
- FlattenMesh();
- }
- // Update is called once per frame
- void Update() {
- if (_build) {
- Vector3[] verts = mesh.vertices;
- for (int i = 0; i < verts.Length; i++) {
- verts[i] = new Vector3(
- verts[i].x + (verts[i].x > originalVerts[i].x - buildRate ? -buildRate :
- (verts[i].x < originalVerts[i].x + buildRate ? buildRate : 0)),
- verts[i].y + (verts[i].y > originalVerts[i].y - buildRate ? -buildRate :
- (verts[i].y < originalVerts[i].y + buildRate ? buildRate : 0)),
- verts[i].z + (verts[i].z > originalVerts[i].z - buildRate ? -buildRate :
- (verts[i].z < originalVerts[i].z + buildRate ? buildRate : 0)));
- }
- mesh.vertices = verts;
- mesh.RecalculateBounds();
- mesh.RecalculateNormals();
- }
- }
- private void FlattenMesh() {
- Vector3[] verts = mesh.vertices;
- for (int i = 0; i < verts.Length; i++) {
- verts[i] = new Vector3(flattenX ? 0 : verts[i].x, flattenY ? 0 : verts[i].y, flattenZ ? 0 : verts[i].z);
- }
- mesh.vertices = verts;
- mesh.RecalculateBounds();
- mesh.RecalculateNormals();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment