| using System; |
| using System.Collections; |
| using System.Collections.Generic; |
| using UnityEngine; |
|
|
| public class Constructable : MonoBehaviour |
| { |
| |
| public bool isGrounded; |
| public bool isOverlappingItems; |
| public bool isValidToBeBuilt; |
| public bool detectedGhostMemeber; |
|
|
| |
| private Renderer mRenderer; |
| public Material redMaterial; |
| public Material greenMaterial; |
| public Material defaultMaterial; |
|
|
| public List<GameObject> ghostList = new List<GameObject>(); |
|
|
| public BoxCollider solidCollider; |
|
|
| private void Start() |
| { |
| mRenderer = GetComponent<Renderer>(); |
|
|
| mRenderer.material = defaultMaterial; |
| foreach (Transform child in transform) |
| { |
| ghostList.Add(child.gameObject); |
| } |
|
|
| } |
| void Update() |
| { |
| if (isGrounded && isOverlappingItems == false) |
| { |
| isValidToBeBuilt = true; |
| } |
| else |
| { |
| isValidToBeBuilt = false; |
| } |
| } |
|
|
| private void OnTriggerEnter(Collider other) |
| { |
| if (other.CompareTag("Ground") && gameObject.CompareTag("activeConstructable")) |
| { |
| isGrounded = true; |
| } |
|
|
| if (other.CompareTag("Tree") || other.CompareTag("pickable") && gameObject.CompareTag("activeConstructable")) |
| { |
|
|
| isOverlappingItems = true; |
| } |
|
|
| if (other.gameObject.CompareTag("ghost") && gameObject.CompareTag("activeConstructable")) |
| { |
| detectedGhostMemeber = true; |
| } |
| } |
|
|
| private void OnTriggerExit(Collider other) |
| { |
| if (other.CompareTag("Ground") && gameObject.CompareTag("activeConstructable")) |
| { |
| isGrounded = false; |
| } |
|
|
| if (other.CompareTag("Tree") || other.CompareTag("pickable") && gameObject.CompareTag("activeConstructable")) |
| { |
| isOverlappingItems = false; |
| } |
|
|
| if (other.gameObject.CompareTag("ghost") && gameObject.CompareTag("activeConstructable")) |
| { |
| detectedGhostMemeber = false; |
| } |
| } |
|
|
| public void SetInvalidColor() |
| { |
| if (mRenderer != null) |
| { |
| mRenderer.material = redMaterial; |
| } |
| } |
|
|
| public void SetValidColor() |
| { |
| mRenderer.material = greenMaterial; |
| } |
|
|
| public void SetDefaultColor() |
| { |
| mRenderer.material = defaultMaterial; |
| } |
|
|
| public void ExtractGhostMembers() |
| { |
| foreach (GameObject item in ghostList) |
| { |
| item.transform.SetParent(transform.parent, true); |
| item.gameObject.GetComponent<GhostItem>().solidCollider.enabled = false; |
| item.gameObject.GetComponent<GhostItem>().isPlaced = true; |
| } |
| } |
| } |