void OnExecuteSyncEvent(RpcContext <ExecuteSyncEvent, NullData> ctx) { switch (ctx.Data.Event) { case GameObjectCreating msg: GameObjectCreating?.Invoke(msg); break; case GameObjectDestroying msg: GameObjectDestroying?.Invoke(msg); break; case GameObjectEnabling msg: GameObjectEnabling?.Invoke(msg); break; case GameObjectDisabling msg: GameObjectDisabling?.Invoke(msg); break; } ctx.SendSuccess(null); }
void OnGameObjectEnabling(GameObjectEnabling data) { if (!m_IsWaitingEnabling) { return; } foreach (var go in data.GameObjectIds) { var persistentKey = go.GameObject.GetComponent <SyncObjectBinding>().streamKey.key.Name; if (go.StableId == m_PreviousSelectedId) { var info = (ObjectSelectionInfo)m_ObjectSelectionInfoSelector.GetValue(); info.selectedObjects = new List <GameObject> { go.GameObject }; m_PreviousScreenPoint = null; DispatchSelection(info); } else if (persistentKey.Equals(m_CurrentPersistentKeyName)) { m_CurrentPersistentKeyName = string.Empty; // Revive selection from query value var info = new ObjectSelectionInfo(); info.selectedObjects = new List <GameObject> { go.GameObject }; info.userId = m_CurrentUserId; info.colorId = 0; DispatchSelection(info); UpdateMultiSelection(); } } }