*
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
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<VisibilityZone>();
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user