Example #1
0
        public override void Dispose( )
        {
            if (IsDisposed)
            {
                return;
            }

            base.Dispose( );

            if (BackingObject != null)
            {
                //Only remove if the backing object isn't already disposed
                bool isDisposed = (bool)InvokeEntityMethod(BackingObject, BaseEntityGetIsDisposedMethod);
                if (!isDisposed)
                {
                    m_networkManager.RemoveEntity( );

                    Action action = InternalRemoveEntity;
                    SandboxGameAssemblyWrapper.Instance.EnqueueMainGameAction(action);
                }
            }

            if (EntityId != 0)
            {
                GameEntityManager.RemoveEntity(EntityId);
            }

            EntityEventManager.EntityEvent newEvent = new EntityEventManager.EntityEvent( );
            newEvent.type      = EntityEventManager.EntityEventType.OnBaseEntityDeleted;
            newEvent.timestamp = DateTime.Now;
            newEvent.entity    = this;
            newEvent.priority  = 1;
            EntityEventManager.Instance.AddEvent(newEvent);
        }