// -------------------------------------------

        /*
         * Register a cloud anchor in Google Platform
         */
        private void HostLastPlacedAnchor()
        {
            m_enableSetUpAnchor = false;
            if (ENABLE_ARCORE_CLOUD_SHARED)
            {
                var anchor = (Anchor)m_lastPlacedAnchor;
                XPSession.CreateCloudAnchor(anchor).ThenAction(result =>
                {
                    if (result.Response != CloudServiceResponse.Success)
                    {
                        BasicSystemEventController.Instance.DispatchBasicSystemEvent(EVENT_CLOUDGAMEANCHOR_SETUP_ANCHOR, false);
                        return;
                    }

                    // NETWORK CLOUD ID
                    m_hasBeenInitialized = true;
                    m_networkCloudId     = new NetworkString();
                    m_networkCloudId.InitRemote(YourNetworkTools.Instance.GetUniversalNetworkID(), NAME_CLOUD_ANCHOR_ID, result.Anchor.CloudId);
                    m_networkVectorBaseServer = new NetworkVector3();
                    Vector3 vectorBase        = Frame.Pose.position - result.Anchor.transform.position;
                    m_networkVectorBaseServer.InitRemote(YourNetworkTools.Instance.GetUniversalNetworkID(), NAME_CLOUD_VECTOR_BASE, vectorBase);
                    m_networkAnchorBaseServer = new NetworkVector3();
                    m_networkAnchorBaseServer.InitRemote(YourNetworkTools.Instance.GetUniversalNetworkID(), NAME_CLOUD_ANCHOR_POSITION, result.Anchor.transform.position);
                });
            }
            else
            {
                m_hasBeenInitialized = true;
            }
        }
        // -------------------------------------------

        /*
         * OnNetworkEvent
         */
        private void OnNetworkEvent(string _nameEvent, bool _isLocalEvent, int _networkOriginID, int _networkTargetID, object[] _list)
        {
            if (!this.gameObject.activeSelf)
            {
                return;
            }

            if (_nameEvent == NetworkEventController.EVENT_SYSTEM_INITIALITZATION_LOCAL_COMPLETED)
            {
                if (ENABLE_ARCORE_CLOUD_SHARED)
                {
                    if (YourNetworkTools.Instance.IsServer)
                    {
                        m_enableSetUpAnchor = true;
                    }
                }
                else
                {
                    m_enableSetUpAnchor = true;
                }
            }
            if (_nameEvent == NetworkEventController.EVENT_SYSTEM_VARIABLE_CREATE_LOCAL)
            {
                if (!ENABLE_ARCORE_CLOUD_SHARED)
                {
                    return;
                }

                if (!YourNetworkTools.Instance.IsServer)
                {
                    INetworkVariable objData = (INetworkVariable)_list[0];
                    bool             check   = false;
                    if (objData.Name == NAME_CLOUD_ANCHOR_ID)
                    {
                        m_networkCloudId = (NetworkString)objData;
                        check            = true;
                    }
                    if (objData.Name == NAME_CLOUD_VECTOR_BASE)
                    {
                        m_networkVectorBaseServer = (NetworkVector3)objData;
                        check = true;
                    }
                    if (objData.Name == NAME_CLOUD_ANCHOR_POSITION)
                    {
                        m_networkAnchorBaseServer = (NetworkVector3)objData;
                        check = true;
                    }
                    if (check)
                    {
                        if ((m_networkCloudId != null) && (m_networkVectorBaseServer != null) && (m_networkAnchorBaseServer != null))
                        {
                            Debug.Log("**************************START JOINING PROCESS**************************");
                            WaitForARCoreValid();
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        // -------------------------------------------

        /*
         * Manager of global events
         */
        protected override void OnNetworkEvent(string _nameEvent, bool _isLocalEvent, int _networkOriginID, int _networkTargetID, params object[] _list)
        {
            base.OnNetworkEvent(_nameEvent, _isLocalEvent, _networkOriginID, _networkTargetID, _list);

            if (_nameEvent == NetworkEventController.EVENT_SYSTEM_DESTROY_NETWORK_COMMUNICATIONS)
            {
                m_requestedDestroyEverything = true;
                Destroy();
            }
            if (_nameEvent == NetworkEventController.EVENT_SYSTEM_INITIALITZATION_REMOTE_COMPLETED)
            {
                NetworkEventController.Instance.DispatchLocalEvent(NetworkVariable.EVENT_NETWORKVARIABLE_REQUEST_ALL);
            }
            if (_nameEvent == NetworkEventController.EVENT_SYSTEM_VARIABLE_CREATE_LOCAL)
            {
                INetworkVariable networkVariable = (INetworkVariable)_list[0];
                if (GetNetworkVariable(networkVariable) == null)
                {
                    Debug.Log("ADDING THE NEW VARIABLE TO THE SYSTEM::networkVariable=" + networkVariable.Name);
                    m_networkVariables.Add(networkVariable);
                }
            }
            if (_nameEvent == NetworkEventController.EVENT_SYSTEM_VARIABLE_CREATE_REMOTE)
            {
                int    ownerVariable = int.Parse((string)_list[0]);
                string nameVariable  = (string)_list[1];
                string valueVariable = (string)_list[2];
                string typeVariable  = (string)_list[3];
                Debug.Log("EVENT_SYSTEM_VARIABLE_CREATE_REMOTE::nameVariable[" + nameVariable + "]=" + valueVariable);
                if (GetNetworkVariable(nameVariable) == null)
                {
                    INetworkVariable networkVariable = null;
                    if (NetworkVector3.GetTypeVector3() == typeVariable)
                    {
                        NetworkVector3 networkVector3 = new NetworkVector3();
                        networkVector3.InitLocal(ownerVariable, nameVariable, valueVariable);
                        networkVariable = networkVector3;
                    }
                    else if (NetworkQuaternion.GetTypeQuaternion().ToString() == typeVariable)
                    {
                        NetworkQuaternion networkQuaternion = new NetworkQuaternion();
                        networkQuaternion.InitLocal(ownerVariable, nameVariable, valueVariable);
                        networkVariable = networkQuaternion;
                    }
                    else if (NetworkInteger.GetTypeInteger().ToString() == typeVariable)
                    {
                        NetworkInteger networkInteger = new NetworkInteger();
                        networkInteger.InitLocal(ownerVariable, nameVariable, int.Parse(valueVariable));
                        networkVariable = networkInteger;
                    }
                    else if (NetworkString.GetTypeString().ToString() == typeVariable)
                    {
                        NetworkString networkString = new NetworkString();
                        networkString.InitLocal(ownerVariable, nameVariable, valueVariable);
                        networkVariable = networkString;
                    }
                    else if (NetworkFloat.GetTypeFloat().ToString() == typeVariable)
                    {
                        NetworkFloat networkFloat = new NetworkFloat();
                        networkFloat.InitLocal(ownerVariable, nameVariable, valueVariable);
                        networkVariable = networkFloat;
                    }

                    if (networkVariable != null)
                    {
                        m_networkVariables.Add(networkVariable);
                    }
                }
            }
            if (_nameEvent == NetworkEventController.EVENT_WORLDOBJECTCONTROLLER_DESTROY_CONFIRMATION)
            {
                if (!m_requestedDestroyEverything)
                {
                    string nameAssignedToDestroy = (string)_list[0];
                    if (!RemoveNetworkVariable(nameAssignedToDestroy))
                    {
                        Debug.Log("NetworkVariablesController::EVENT_WORLDOBJECTCONTROLLER_DESTROY_CONFIRMATION::The network variable[" + nameAssignedToDestroy + "] was NOT removed");
                    }
                }
            }
        }