protected sealed override void ServerInitialize(ServerInitializeData data) { var activeEvent = data.GameObject; var publicState = data.PublicState; if (data.IsFirstTimeInit) { var serverTime = Server.Game.FrameTime; publicState.EventEndTime = serverTime + this.EventDuration.TotalSeconds; this.ServerLastActiveTime = serverTime; } // schedule rest of the initialization on the next frame ServerTimersSystem.AddAction( delaySeconds: 0, () => { if (activeEvent.IsDestroyed) { // the event was destroyed soon after creation // (it was not correct one or something else) return; } WorldEventsSystem.ServerRegisterEvent(activeEvent); }); this.ServerInitializeEvent(data); }
public sealed override void ServerOnDestroy(ILogicObject gameObject) { WorldEventsSystem.ServerUnregisterEvent(gameObject); this.ServerOnEventDestroyed(gameObject); Logger.Important("Event destroyed: " + gameObject); }