예제 #1
1
 public SceneViewer(ScenePresence presence)
 {
     m_presence = presence;
     m_presence.Scene.EventManager.OnSignificantClientMovement += SignificantClientMovement;
     m_prioritizer = new Prioritizer(presence.Scene);
     m_partsUpdateQueue = new PriorityQueue<EntityUpdate, double>(presence.Scene.Entities.Count > 1000 ? presence.Scene.Entities.Count : 1000);
 }
예제 #2
0
 /// <summary>
 ///   Reset all lists that have to deal with what updates the viewer has
 /// </summary>
 public void Close()
 {
     if (m_presence == null)
     {
         return;
     }
     m_SentInitialObjects = false;
     m_prioritizer        = null;
     m_culler             = null;
     m_inUse    = false;
     m_queueing = false;
     lock (m_objectUpdatesToSendLock)
         m_objectUpdatesToSend.Clear();
     lock (m_presenceUpdatesToSendLock)
         m_presenceUpdatesToSend.Clear();
     lock (m_presenceAnimationsToSendLock)
         m_presenceAnimationsToSend.Clear();
     lock (m_lastPresencesInViewLock)
         lastPresencesDInView.Clear();
     lock (m_objectPropertiesToSendLock)
         m_objectPropertiesToSend.Clear();
     lastGrpsInView.Clear();
     m_presence.OnSignificantClientMovement         -= SignificantClientMovement;
     m_presence.Scene.EventManager.OnMakeChildAgent -= EventManager_OnMakeChildAgent;
     m_scene.EventManager.OnClosingClient           -= EventManager_OnClosingClient;
     m_presence.Scene.AuroraEventManager.UnregisterEventHandler("DrawDistanceChanged",
                                                                AuroraEventManager_OnGenericEvent);
     m_presence.Scene.AuroraEventManager.UnregisterEventHandler("SignficantCameraMovement",
                                                                AuroraEventManager_OnGenericEvent);
     m_presence = null;
 }
예제 #3
0
 public SceneViewer(IScenePresence presence)
 {
     m_presence = presence;
     m_presence.Scene.EventManager.OnSignificantClientMovement += SignificantClientMovement;
     m_presence.Scene.AuroraEventManager.OnGenericEvent        += AuroraEventManager_OnGenericEvent;
     m_prioritizer = new Prioritizer(presence.Scene);
     m_culler      = new Culler(presence.Scene);
 }
예제 #4
0
 /// <summary>
 /// Reset all lists that have to deal with what updates the viewer has
 /// </summary>
 public void Close()
 {
     m_SentInitialObjects = false;
     m_prioritizer        = null;
     m_culler             = null;
     m_inUse    = false;
     m_queueing = false;
     m_objectUpdatesToSend.Clear();
     m_presenceUpdatesToSend.Clear();
     m_presence.Scene.EventManager.OnSignificantClientMovement -= SignificantClientMovement;
     m_presence.Scene.AuroraEventManager.OnGenericEvent        -= AuroraEventManager_OnGenericEvent;
     m_presence = null;
 }
예제 #5
0
 public SceneViewer(IScenePresence presence)
 {
     m_presence = presence;
     m_scene    = presence.Scene;
     m_presence.OnSignificantClientMovement         += SignificantClientMovement;
     m_presence.Scene.EventManager.OnMakeChildAgent += EventManager_OnMakeChildAgent;
     m_scene.EventManager.OnClosingClient           += EventManager_OnClosingClient;
     m_presence.Scene.AuroraEventManager.RegisterEventHandler("DrawDistanceChanged",
                                                              AuroraEventManager_OnGenericEvent);
     m_presence.Scene.AuroraEventManager.RegisterEventHandler("SignficantCameraMovement",
                                                              AuroraEventManager_OnGenericEvent);
     m_prioritizer = new Prioritizer(presence.Scene);
     m_culler      = new Culler(presence.Scene);
 }
예제 #6
0
 /// <summary>
 /// Reset all lists that have to deal with what updates the viewer has
 /// </summary>
 public void Close ()
 {
     m_SentInitialObjects = false;
     m_prioritizer = null;
     m_culler = null;
     m_inUse = false;
     m_queueing = false;
     m_objectUpdatesToSend.Clear ();
     m_presenceUpdatesToSend.Clear ();
     m_presence.Scene.EventManager.OnSignificantClientMovement -= SignificantClientMovement;
     m_presence.Scene.AuroraEventManager.UnregisterEventHandler ("DrawDistanceChanged", AuroraEventManager_OnGenericEvent);
     m_presence.Scene.AuroraEventManager.UnregisterEventHandler ("SignficantCameraMovement", AuroraEventManager_OnGenericEvent);
     m_presence = null;
 }
예제 #7
0
 public SceneViewer (IScenePresence presence)
 {
     m_presence = presence;
     m_presence.Scene.EventManager.OnSignificantClientMovement += SignificantClientMovement;
     m_presence.Scene.AuroraEventManager.RegisterEventHandler ("DrawDistanceChanged", AuroraEventManager_OnGenericEvent);
     m_presence.Scene.AuroraEventManager.RegisterEventHandler ("SignficantCameraMovement", AuroraEventManager_OnGenericEvent);
     m_prioritizer = new Prioritizer (presence.Scene);
     m_culler = new Culler (presence.Scene);
 }
예제 #8
0
 public SceneViewer (IScenePresence presence)
 {
     m_presence = presence;
     m_presence.Scene.EventManager.OnSignificantClientMovement += SignificantClientMovement;
     m_presence.Scene.AuroraEventManager.OnGenericEvent += AuroraEventManager_OnGenericEvent;
     m_prioritizer = new Prioritizer (presence.Scene);
     m_culler = new Culler (presence.Scene);
 }
예제 #9
0
 /// <summary>
 /// Reset all lists that have to deal with what updates the viewer has
 /// </summary>
 public void Close ()
 {
     m_SentInitialObjects = false;
     m_prioritizer = null;
     m_culler = null;
     m_inUse = false;
     m_queueing = false;
     m_objectUpdatesToSend.Clear ();
     m_presenceUpdatesToSend.Clear ();
     m_presence.Scene.EventManager.OnSignificantClientMovement -= SignificantClientMovement;
     m_presence.Scene.AuroraEventManager.OnGenericEvent -= AuroraEventManager_OnGenericEvent;
     m_presence = null;
 }