Advertisement
Guest User

GridController.cs

a guest
Nov 2nd, 2014
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.93 KB | None | 0 0
  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6.  
  7. public class GridController : MonoBehaviour {
  8.  
  9.     float worldX = 1F;
  10.     float worldY = 1F;
  11.     float worldZ = 1F; 
  12.     bool IsGenerated = false;
  13.     List<GameObject> gridCubesList = new List<GameObject>();
  14.     float snap = 0.2F;
  15.     public GameObject prefab;
  16.     List<GameObject> freeCubesList = new List<GameObject>();
  17.     GameObject[] freeCubes = null;
  18.     List<GameObject> GroundObjectCubesList = new List<GameObject>();
  19.     GameObject[] GroundObjectCubes;
  20.     List<GameObject> possibleCubesList = new List<GameObject>();
  21.     GameObject[] possibleCubes = null;
  22.     List<Vector3> localPositionsList = new List<Vector3>();
  23.     Vector3[] localPositions = null;
  24.     List<Vector3> globalPositionsList = new List<Vector3>();
  25.     Vector3[] globalPositions;
  26.     List<float> distanceList = new List<float>();
  27.     float[] distances = null;
  28.     int minIndex; // Shortest distance
  29.  
  30.     // Use this for initialization
  31.     void Start () {
  32.    
  33.     }
  34.    
  35.     // Update is called once per frame
  36.     void Update () {
  37.    
  38.     }
  39.  
  40.     // Generate grid given point as its 0, 0, 0 (rounded to 0.2)
  41.     public void Generate (Vector3 hit){
  42.         this.transform.position = hit;
  43.         Vector3 position = this.transform.position;
  44.         position.x = Mathf.Round(position.x / snap) * snap;
  45.         position.y = Mathf.Round(position.y / snap) * snap;
  46.         position.z = Mathf.Round(position.z / snap) * snap;
  47.         this.transform.position = position;
  48.         Vector3 gridStart = transform.position - new Vector3(worldX, worldY, worldZ);
  49.         for(float x =0F; x<worldX; x += snap) {
  50.             for(float y =0F; y<worldY; y += snap) {
  51.                 for(float z =0F; z<worldZ; z += snap) {
  52.                     GameObject gridCube = Instantiate(prefab) as GameObject;
  53.                     Vector3 startPosition = transform.position - new Vector3(worldX, worldY, worldZ);
  54.                     gridCube.transform.position = new Vector3(gridStart.x + x, gridStart.y + y, gridStart.z + z);
  55.                     gridCubesList.Add(gridCube);
  56.                 }
  57.             }
  58.         }
  59.         IsGenerated = true;
  60.     }
  61.  
  62.     public void Clear (){
  63.         foreach(GameObject clear in gridCubesList){
  64.             Destroy(clear);
  65.         }
  66.         freeCubesList = null;
  67.         freeCubes = null;
  68.         GroundObjectCubesList = null;
  69.         GroundObjectCubes = null;
  70.         possibleCubesList = null;
  71.         possibleCubes = null;
  72.         localPositionsList = null;
  73.         localPositions = null;
  74.         globalPositionsList = null;
  75.         globalPositions = null;
  76.         distanceList = null;
  77.         distances = null;
  78.     }
  79.     // Get closest free point in grid
  80.     public Vector3 snapPoint (GameObject GroundObject){
  81.         GroundObject.transform.position = this.transform.position;
  82.         foreach (GameObject gridCube in gridCubesList){
  83.             if(gridCube != null){
  84.                 gridTrigger trigger = gridCube.GetComponent<gridTrigger>();
  85.                 if(trigger.isTriggered(GroundObject)){
  86.                     localPositionsList.Add(this.transform.position - gridCube.transform.position);
  87.                     localPositions = localPositionsList.ToArray();
  88.                     GroundObjectCubesList.Add(gridCube);
  89.                     GroundObjectCubes = GroundObjectCubesList.ToArray();
  90.                 }
  91.                 if(trigger.isTriggered(null) != true){
  92.                     freeCubesList.Add(gridCube);
  93.                 //  freeCubes = freeCubesList.ToArray();
  94.                 }
  95.             }
  96.         }
  97.  
  98.     //  foreach (GameObject current in freeCubes){
  99.         /*  foreach(Vector3 localPosition in localPositions){
  100.                 foreach (GameObject freeCube in freeCubes){
  101.                     Vector3 globalPosition = freeCube.transform.position + localPosition;
  102.                     globalPositionsList.Add (globalPosition);
  103.                     globalPositions = globalPositionsList.ToArray();
  104.                     if(globalPosition == freeCube.transform.position){
  105.                         possibleCubesList.Add(freeCube);
  106.                         possibleCubes = possibleCubesList.ToArray();
  107.                     }
  108.                 }
  109.             }*/
  110.     //  }
  111.     /*  foreach (GameObject possibleCube in possibleCubes){
  112.             distanceList.Add(Vector3.Distance(possibleCube.transform.position, transform.position));
  113.             distances = distanceList.ToArray();
  114.         } */
  115.         //minIndex = Array.IndexOf(distances, distances.Min());
  116.         //return possibleCubes[minIndex].transform.position;
  117.         return Vector3.zero;
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement