protected virtual void OnInstantiateInNode_ServerClient(RpcArgs pArgs) { byte[] data = pArgs.GetNext <byte[]>(); RPCServiceCallback callbackRPC = data.ByteArrayToObject <RPCServiceCallback>(); NetworkBehavior behavior; if (NodeManager.IsInitialized) { RPCInstantiateInNode instantiateInNodeRPC = callbackRPC.data.ByteArrayToObject <RPCInstantiateInNode>(); behavior = NodeManager.Instance.InstantiateInScene(instantiateInNodeRPC.sceneName, instantiateInNodeRPC.createCode, null, instantiateInNodeRPC.position.ToVector3(), instantiateInNodeRPC.rotation.ToQuaternion(), instantiateInNodeRPC.sendTransform); if (behavior != null) { IRPCSerializable behaviorData = behavior as IRPCSerializable; if (behaviorData != null && instantiateInNodeRPC.behaviorData != null) { behaviorData.FromByteArray(instantiateInNodeRPC.behaviorData); } } } else { behavior = null; } callbackRPC.state = (behavior != null) ? ServiceCallbackStateEnum.RESPONSE_SUCCESS : ServiceCallbackStateEnum.RESPONSE_FAILED; callbackRPC.data = null; networkObject.SendRpc(RPC_RELAY_CONFIRM_INSTANTIATE_IN_NODE, Receivers.Server, callbackRPC.ObjectToByteArray()); }
public virtual void SetIRPCSerializable(INetworkBehavior pNetworkBehavior, IRPCSerializable pBehaviorData) { if (pNetworkBehavior == null || pBehaviorData == null) { return; } IRPCSerializable rpcSerializable = pNetworkBehavior as IRPCSerializable; if (rpcSerializable == null) { return; } rpcSerializable.FromByteArray(pBehaviorData.ToByteArray()); }