using UnityEngine; using System.Collections; /*public class VisibilityZone{ public VisibilityZone(GameObject src, float overlayDepth){ } }*/ public class ZoneVisibilityControl : Predicate { #region implemented abstract members of Predicate protected override bool CheckInternal () { return false; } protected override bool CheckInternal (object param) { var z = param as VisibilityZone; if(z == null){ return false; } return z.IsInside(viewer.transform.position); } #endregion private VisibilityZone[] zones; public GameObject viewer; private VisibilityZone currentVisible; public Material hideMaterial; public float hideDepth = -1.0f; // Use this for initialization void Start () { zones = FindObjectsOfType(); foreach(var zone in zones){ zone.Init(); zone.Hide(hideMaterial, hideDepth); } } void UpateVisibility(){ foreach(var zone in zones){ if(zone.IsInside(viewer.transform.position)){ if(currentVisible != zone){ if(currentVisible != null){ currentVisible.Hide (hideMaterial, hideDepth); } currentVisible = zone; currentVisible.Show(); } return; } } if(currentVisible != null){ currentVisible.Hide (hideMaterial, hideDepth); currentVisible = null; } } // Update is called once per frame void Update () { //UpateVisibility(); } }