// ------------------------------------------- /* * 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(); } } } } }
// ------------------------------------------- /* * 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"); } } } }