Example #1
0
        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();
                }
            }
        }