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