Files

73 lines
1.3 KiB
C#
Raw Permalink Normal View History

2025-05-13 05:19:58 +03:00
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();
}
}