public virtual Node GetNodeWithTemplateOnly(string pSceneName) { //This creates a new and independent NetworkSceneNode with only the NetworkSceneTemplate in it. Node node = GetBySceneName(pSceneName); if (node == null) { return(null); } NetworkSceneTemplate networkSceneTemplate = node.GetBySceneName(pSceneName); RPCNode nodeRPC = node.ToRPC(); nodeRPC.networkSceneTemplatesRPC = new RPCNetworkSceneTemplate[] { networkSceneTemplate.ToRPC() }; return(new Node(nodeRPC)); }
public static ServiceCallback <RPCNetworkSceneTemplate, ServiceCallbackStateEnum> RegisterScene(uint pSourceodeId, bool pRequireConfirmation, NetworkSceneTemplate pTemplate) { ServiceCallback <RPCNetworkSceneTemplate, ServiceCallbackStateEnum> callback = new ServiceCallback <RPCNetworkSceneTemplate, ServiceCallbackStateEnum>(0, pSourceodeId, GameTime.fixedTime); if (pTemplate == null) { callback.State = ServiceCallbackStateEnum.ERROR_NO_DATA; return(callback); } if (!IsInitialized) { callback.State = ServiceCallbackStateEnum.ERROR_SERVICE_NOT_INITIALIZED; return(callback); } if (Instance.Manager == null || !Instance.Manager.HasNetworker || !Instance.Manager.Networker.IsConnected) { callback.State = ServiceCallbackStateEnum.ERROR_NO_CONNECTION; return(callback); } callback.RequestDataOfT = pTemplate.ToRPC(); if (pRequireConfirmation) { callback.State = ServiceCallbackStateEnum.AWAITING_RESPONSE; Instance.AddPendingServiceCallback(callback); } else { callback.State = ServiceCallbackStateEnum.RESPONSE_SUCCESS; callback.ResponseTime = GameTime.fixedTime; callback.ResponseDataOfT = callback.State; } MainThreadManager.Run(() => { if (!IsInitialized || Instance.networkObject == null) { return; } Instance.networkObject.SendRpc(RPC_REGISTER_SCENE, Receivers.Server, pRequireConfirmation, callback.ToByteArray()); }); return(callback); }
public static ServiceCallback <RPCCreateNetworkSceneInNode, ServiceCallbackStateEnum> CreateNetworkSceneInNode(uint pSourceNodeId, uint pTargetNodeId, NetworkSceneTemplate pTemplate, bool pAutoAssignIp, bool pAutoAssignPort, byte[] pNetworkSceneMetaData) { ServiceCallback <RPCCreateNetworkSceneInNode, ServiceCallbackStateEnum> callback = new ServiceCallback <RPCCreateNetworkSceneInNode, ServiceCallbackStateEnum>(0, pSourceNodeId, GameTime.fixedTime); if (pTemplate == null) { callback.State = ServiceCallbackStateEnum.ERROR_NO_DATA; return(callback); } if (!IsInitialized) { callback.State = ServiceCallbackStateEnum.ERROR_SERVICE_NOT_INITIALIZED; return(callback); } if (Instance.Manager == null || !Instance.Manager.HasNetworker || !Instance.Manager.Networker.IsConnected) { callback.State = ServiceCallbackStateEnum.ERROR_NO_CONNECTION; return(callback); } RPCCreateNetworkSceneInNode requestData = new RPCCreateNetworkSceneInNode() { targetNodeId = pTargetNodeId, template = pTemplate.ToRPC(), autoAssignIp = pAutoAssignIp, autoAssignPort = pAutoAssignPort, networkSceneMetaData = pNetworkSceneMetaData }; callback.RequestDataOfT = requestData; callback.State = ServiceCallbackStateEnum.AWAITING_RESPONSE; Instance.AddPendingServiceCallback(callback); MainThreadManager.Run(() => { if (!IsInitialized || Instance.networkObject == null) { return; } Instance.networkObject.SendRpc(RPC_RELAY_CREATE_NETWORK_SCENE_IN_NODE, Receivers.Server, callback.ToByteArray()); }); return(callback); }