93 lines
1.2 KiB
C#
93 lines
1.2 KiB
C#
using System;
|
|
|
|
namespace LS_LevelStreaming
|
|
{
|
|
public abstract class LS_ManagedObjectBase
|
|
{
|
|
private static int s_nextFreeID = 1;
|
|
|
|
public System.EventHandler m_onShow;
|
|
|
|
public System.EventHandler m_onHide;
|
|
|
|
protected readonly int m_id;
|
|
|
|
protected readonly LS_ITrigger m_trigger;
|
|
|
|
protected bool m_isVisible;
|
|
|
|
public int ID
|
|
{
|
|
get
|
|
{
|
|
return m_id;
|
|
}
|
|
}
|
|
|
|
public LS_ITrigger Trigger
|
|
{
|
|
get
|
|
{
|
|
return m_trigger;
|
|
}
|
|
}
|
|
|
|
public bool IsVisible
|
|
{
|
|
get
|
|
{
|
|
return m_isVisible;
|
|
}
|
|
}
|
|
|
|
public LS_ManagedObjectBase(LS_ITrigger p_trigger)
|
|
{
|
|
m_id = s_nextFreeID++;
|
|
m_trigger = p_trigger;
|
|
}
|
|
|
|
public virtual void Update()
|
|
{
|
|
bool flag = m_trigger.IsVisible();
|
|
if (m_isVisible && !flag)
|
|
{
|
|
ForceHide();
|
|
}
|
|
else if (!m_isVisible && flag)
|
|
{
|
|
ForceShow();
|
|
}
|
|
}
|
|
|
|
public void ForceShow()
|
|
{
|
|
if (!m_isVisible)
|
|
{
|
|
m_isVisible = true;
|
|
Show();
|
|
if (m_onShow != null)
|
|
{
|
|
m_onShow(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ForceHide()
|
|
{
|
|
if (m_isVisible)
|
|
{
|
|
m_isVisible = false;
|
|
Hide();
|
|
if (m_onHide != null)
|
|
{
|
|
m_onHide(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected abstract void Show();
|
|
|
|
protected abstract void Hide();
|
|
}
|
|
}
|