public override void OnReceiveData(ref NetworkState.NETWORK_STATE_TYPE state) { processPlayState(BufferedNetworkUtilsClient.ReadByte(ref state)); particleSys.time = BufferedNetworkUtilsClient.ReadFloat(ref state); if (isUsingRandomSeed) { uint seed = (uint)BufferedNetworkUtilsClient.ReadInt(ref state); if (particleSys.randomSeed != seed) { if (!particleSys.isPlaying) { particleSys.randomSeed = seed; } } } }
void switchCaseFunc(FduMultiAttributeObserverOP op, ref NetworkState.NETWORK_STATE_TYPE state) { for (int i = 1; i < attrList.Length; ++i) { if (!getObservedState(i)) { continue; } switch (i) { case 1: //Interactable if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(button.interactable); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { button.interactable = BufferedNetworkUtilsClient.ReadBool(ref state); } break; case 2: //Transition if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)button.transition); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { button.transition = (Selectable.Transition)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 30: //remove func break; case 31: //Interpolation Option break; } } }
void switchCaseFunc(FduMultiAttributeObserverOP op, ref NetworkState.NETWORK_STATE_TYPE state) { for (int i = 1; i < attrList.Length; ++i) { if (!getObservedState(i)) { continue; } switch (i) { case 1: //Color if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { image.color = FduInterpolationInterface.getNextColorValue_new(image.color, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendColor(image.color); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { image.color = BufferedNetworkUtilsClient.ReadColor(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadColor(ref state)); } break; case 2: //RaycastTarget if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(image.raycastTarget); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { image.raycastTarget = BufferedNetworkUtilsClient.ReadBool(ref state); } break; case 3: //FillMethod if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)image.fillMethod); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { image.fillMethod = (Image.FillMethod)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 4: //FillAmount if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { image.fillAmount = FduInterpolationInterface.getNextFloatValue_new(image.fillAmount, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendFloat(image.fillAmount); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { image.fillAmount = BufferedNetworkUtilsClient.ReadFloat(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadFloat(ref state)); } break; case 5: //FillCenter if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(image.fillCenter); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { image.fillCenter = BufferedNetworkUtilsClient.ReadBool(ref state); } break; case 6: //FillClockwise if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(image.fillClockwise); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { image.fillClockwise = BufferedNetworkUtilsClient.ReadBool(ref state); } break; case 7: //FillOrigin if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { image.fillOrigin = FduInterpolationInterface.getNextIntValue_new(image.fillOrigin, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendInt(image.fillOrigin); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { image.fillOrigin = BufferedNetworkUtilsClient.ReadInt(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadInt(ref state)); } break; case 8: //ImageType if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)image.type); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { image.type = (Image.Type)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 9: //Image if (op == FduMultiAttributeObserverOP.SendData) { bool changeFlag = false; if (image.sprite != null && image.sprite.GetInstanceID() != spriteId) { //通过对比InstanceId判断该精灵是否被替换 changeFlag = true; spriteId = image.sprite.GetInstanceID(); } BufferedNetworkUtilsServer.SendBool(changeFlag); if (changeFlag) //若已经变化了 则将图片分解为JPG格式传送至节点 { byte[] arr; try { arr = image.sprite.texture.EncodeToJPG(); BufferedNetworkUtilsServer.SendByteArray(arr); BufferedNetworkUtilsServer.SendRect(image.sprite.textureRect); BufferedNetworkUtilsServer.SendVector2(image.sprite.pivot); } catch (System.Exception e) { Debug.LogError(e.Message); } } } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) //从节点先判断有没有图片传来 然后再解析 { bool changeFlag = BufferedNetworkUtilsClient.ReadBool(ref state); if (changeFlag) { byte[] bytes = BufferedNetworkUtilsClient.ReadByteArray(ref state); Rect rect = BufferedNetworkUtilsClient.ReadRect(ref state); Vector2 pivot = BufferedNetworkUtilsClient.ReadVector2(ref state); Texture2D texture = new Texture2D((int)GetComponent <RectTransform>().rect.width, (int)GetComponent <RectTransform>().rect.height); texture.LoadImage(bytes); image.sprite = Sprite.Create(texture, rect, pivot); } } break; } } }
void switchCaseFunc(FduMultiAttributeObserverOP op, ref NetworkState.NETWORK_STATE_TYPE state) { for (int i = 1; i < attrList.Length; ++i) { if (!getObservedState(i)) { continue; } switch (i) { case 1: //TextContent if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendString(text.text); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.text = BufferedNetworkUtilsClient.ReadString(ref state); } break; case 2: //Color if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { text.color = FduInterpolationInterface.getNextColorValue_new(text.color, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendColor(text.color); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { text.color = BufferedNetworkUtilsClient.ReadColor(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadColor(ref state)); } break; case 3: //FontStyle if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)text.fontStyle); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.fontStyle = (FontStyle)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 4: //FontSize if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { text.fontSize = FduInterpolationInterface.getNextIntValue_new(text.fontSize, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendInt(text.fontSize); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { text.fontSize = BufferedNetworkUtilsClient.ReadInt(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty(i, BufferedNetworkUtilsClient.ReadInt(ref state)); } break; case 5: //LineSpacing if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { text.lineSpacing = FduInterpolationInterface.getNextFloatValue_new(text.lineSpacing, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendFloat(text.lineSpacing); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { text.lineSpacing = BufferedNetworkUtilsClient.ReadFloat(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty(i, BufferedNetworkUtilsClient.ReadFloat(ref state)); } break; case 6: //SupportRichText if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(text.supportRichText); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.supportRichText = BufferedNetworkUtilsClient.ReadBool(ref state); } break; case 7: //Aligment if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)text.alignment); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.alignment = (TextAnchor)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 8: //AlignByGeometry if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(text.alignByGeometry); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.alignByGeometry = BufferedNetworkUtilsClient.ReadBool(ref state); } break; case 9: //HorizontalOverflow if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)text.horizontalOverflow); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.horizontalOverflow = (HorizontalWrapMode)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 10: //VerticalOverflow if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)text.verticalOverflow); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.verticalOverflow = (VerticalWrapMode)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 11: //BestFit if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(text.resizeTextForBestFit); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.resizeTextForBestFit = BufferedNetworkUtilsClient.ReadBool(ref state); } break; case 12: //RaycastTarget if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(text.raycastTarget); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { text.raycastTarget = BufferedNetworkUtilsClient.ReadBool(ref state); } break; case 31: //Interpolation Option break; } } }
public override void OnReceiveData(ref NetworkState.NETWORK_STATE_TYPE state) { _operationList.Clear(); int opCount = BufferedNetworkUtilsClient.ReadInt(ref state); for (int i = 0; i < opCount; ++i) { FduParticleSystemOP.Operation operationType = (FduParticleSystemOP.Operation)BufferedNetworkUtilsClient.ReadByte(ref state); int paraCount = BufferedNetworkUtilsClient.ReadInt(ref state); FduParticleSystemOP op = new FduParticleSystemOP(); op.operation = operationType; if (paraCount > 0) { op.paras = new object[paraCount]; } for (int j = 0; j < paraCount; ++j) { op.paras[j] = FduSupportClass.deserializeOneParameter(ref state); } _operationList.Add(op); } //反序列化结束 执行每一项粒子系统的操作 foreach (FduParticleSystemOP op in _operationList) { op.executeOpOnSlave(particleSys); } _operationList.Clear(); }
public override NetworkState.NETWORK_STATE_TYPE Deserialize() { NetworkState.NETWORK_STATE_TYPE state = NetworkState.NETWORK_STATE_TYPE.SUCCESS; int count = BufferedNetworkUtilsClient.ReadInt(ref state); for (int i = 0; i < count; ++i) { string name = BufferedNetworkUtilsClient.ReadString(ref state); FduClusterInputType type = (FduClusterInputType)BufferedNetworkUtilsClient.ReadByte(ref state); switch (type) { case FduClusterInputType.Axis: float fvalue = BufferedNetworkUtilsClient.ReadFloat(ref state); if (!_axisMap.ContainsKey(name)) { AxisData _data = new AxisData(); _data.reset(); _data.setValue(fvalue); _axisMap.Add(name, _data); } else { _axisMap[name].setValue(fvalue); } break; case FduClusterInputType.Button: bool bvalue = BufferedNetworkUtilsClient.ReadBool(ref state); if (!_buttonMap.ContainsKey(name)) { ButtonData _data = new ButtonData(); _data.reset(); _data.setValue(bvalue); _buttonMap.Add(name, _data); } else { _buttonMap[name].setValue(bvalue); } break; case FduClusterInputType.Tracker: Vector3 v3Value = BufferedNetworkUtilsClient.ReadVector3(ref state); Quaternion quValue = BufferedNetworkUtilsClient.ReadQuaternion(ref state); if (!_trackerMap.ContainsKey(name)) { TrackerData _data = new TrackerData(); _data.reset(); _data.setPosValue(v3Value); _data.setRotValue(quValue); _trackerMap.Add(name, _data); } else { _trackerMap[name].setPosValue(v3Value); _trackerMap[name].setRotValue(quValue); } break; } } //if(!BufferedNetworkUtilsClient.ReadString(ref state).Equals("ClusterInputMgrEndFlag")) //{ // Debug.LogError("Wrong end!"); //} //StartCoroutine(swapValueCo()); return(state); }
void switchCaseFunc(FduMultiAttributeObserverOP op, ref NetworkState.NETWORK_STATE_TYPE state) { for (int i = 1; i < attrList.Length; ++i) { if (!getObservedState(i)) { continue; } switch (i) { case 1: //MaxValue if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { slider.maxValue = FduInterpolationInterface.getNextFloatValue_new(slider.maxValue, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendFloat(slider.maxValue); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { slider.maxValue = BufferedNetworkUtilsClient.ReadFloat(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadFloat(ref state)); } break; case 2: //CurrentValue if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { slider.value = FduInterpolationInterface.getNextFloatValue_new(slider.value, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendFloat(slider.value); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { slider.value = BufferedNetworkUtilsClient.ReadFloat(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadFloat(ref state)); } break; case 3: //MinValue if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { slider.minValue = FduInterpolationInterface.getNextFloatValue_new(slider.minValue, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendFloat(slider.minValue); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { slider.minValue = BufferedNetworkUtilsClient.ReadFloat(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadFloat(ref state)); } break; case 4: //Direction if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)slider.direction); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { slider.direction = (Slider.Direction)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 5: //NormalizedValue if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { slider.normalizedValue = FduInterpolationInterface.getNextFloatValue_new(slider.normalizedValue, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendFloat(slider.normalizedValue); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { slider.normalizedValue = BufferedNetworkUtilsClient.ReadFloat(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadFloat(ref state)); } break; case 6: //WholeNumbers if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendBool(slider.wholeNumbers); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { slider.wholeNumbers = BufferedNetworkUtilsClient.ReadBool(ref state); } break; } } }
void switchCaseFunc(FduMultiAttributeObserverOP op, ref NetworkState.NETWORK_STATE_TYPE state) { for (int i = 1; i < attrList.Length; ++i) { if (!getObservedState(i)) { continue; } switch (i) { case 1: //InputContent if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendString(inputField.text); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { inputField.text = BufferedNetworkUtilsClient.ReadString(ref state); } break; case 2: //CaretPosition if (op == FduMultiAttributeObserverOP.Update) { if (getCachedProperytyCount(i) > 0) { inputField.caretPosition = FduInterpolationInterface.getNextIntValue_new(inputField.caretPosition, i, this); } } else if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendInt(inputField.caretPosition); } else if (op == FduMultiAttributeObserverOP.Receive_Direct) { inputField.caretPosition = BufferedNetworkUtilsClient.ReadInt(ref state); } else if (op == FduMultiAttributeObserverOP.Receive_Interpolation) { setCachedProperty(i, BufferedNetworkUtilsClient.ReadInt(ref state)); } break; case 3: //CharacterValidation if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)inputField.characterValidation); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { inputField.characterValidation = (InputField.CharacterValidation)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 4: //ContentType if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)inputField.contentType); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { inputField.contentType = (InputField.ContentType)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 5: //InputType if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)inputField.inputType); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { inputField.inputType = (InputField.InputType)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 6: //KeyboardType if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)inputField.keyboardType); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { inputField.keyboardType = (TouchScreenKeyboardType)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 7: //LineType if (op == FduMultiAttributeObserverOP.SendData) { BufferedNetworkUtilsServer.SendByte((byte)inputField.lineType); } else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation) { inputField.lineType = (InputField.LineType)BufferedNetworkUtilsClient.ReadByte(ref state); } break; case 29: //Remove On Value Change CallBack On Slave break; case 30: //Remove On End Edit CallBack On Slave break; case 31: //Interpolation Option break; } } }
//反序列化一个可传输的参数 public static object deserializeOneParameter(ref NetworkState.NETWORK_STATE_TYPE state) { FduSendableParameter typeCode = (FduSendableParameter)BufferedNetworkUtilsClient.ReadByte(ref state); object result; switch (typeCode) { case FduSendableParameter.Int: result = BufferedNetworkUtilsClient.ReadInt(ref state); break; case FduSendableParameter.IntArray: result = BufferedNetworkUtilsClient.ReadIntArray(ref state); break; case FduSendableParameter.Byte: result = BufferedNetworkUtilsClient.ReadByte(ref state); break; case FduSendableParameter.ByteArray: result = BufferedNetworkUtilsClient.ReadByteArray(ref state); break; case FduSendableParameter.Float: result = BufferedNetworkUtilsClient.ReadFloat(ref state); break; case FduSendableParameter.FloatArray: result = BufferedNetworkUtilsClient.ReadFloatArray(ref state); break; case FduSendableParameter.Bool: result = BufferedNetworkUtilsClient.ReadBool(ref state); break; case FduSendableParameter.BoolArray: int bollen = BufferedNetworkUtilsClient.ReadInt(ref state); bool[] bolarr = new bool[bollen]; for (int i = 0; i < bollen; ++i) { bolarr[i] = BufferedNetworkUtilsClient.ReadBool(ref state); } result = bolarr; break; case FduSendableParameter.String: result = BufferedNetworkUtilsClient.ReadString(ref state); break; case FduSendableParameter.StringArray: int strlen = BufferedNetworkUtilsClient.ReadInt(ref state); string[] strarr = new string[strlen]; for (int i = 0; i < strlen; ++i) { strarr[i] = BufferedNetworkUtilsClient.ReadString(ref state); } result = strarr; break; case FduSendableParameter.Vector2: result = BufferedNetworkUtilsClient.ReadVector2(ref state); break; case FduSendableParameter.Vector2Array: int v2len = BufferedNetworkUtilsClient.ReadInt(ref state); Vector2[] v2arr = new Vector2[v2len]; for (int i = 0; i < v2len; ++i) { v2arr[i] = BufferedNetworkUtilsClient.ReadVector2(ref state); } result = v2arr; break; case FduSendableParameter.Vector3: result = BufferedNetworkUtilsClient.ReadVector3(ref state); break; case FduSendableParameter.Vector3Array: int v3len = BufferedNetworkUtilsClient.ReadInt(ref state); Vector3[] v3arr = new Vector3[v3len]; for (int i = 0; i < v3len; ++i) { v3arr[i] = BufferedNetworkUtilsClient.ReadVector3(ref state); } result = v3arr; break; case FduSendableParameter.Vector4: result = BufferedNetworkUtilsClient.ReadVector4(ref state); break; case FduSendableParameter.Vector4Array: int v4len = BufferedNetworkUtilsClient.ReadInt(ref state); Vector4[] v4arr = new Vector4[v4len]; for (int i = 0; i < v4len; ++i) { v4arr[i] = BufferedNetworkUtilsClient.ReadVector4(ref state); } result = v4arr; break; case FduSendableParameter.Color: result = BufferedNetworkUtilsClient.ReadColor(ref state); break; case FduSendableParameter.ColorArray: int clen = BufferedNetworkUtilsClient.ReadInt(ref state); Color[] carray = new Color[clen]; for (int i = 0; i < clen; ++i) { carray[i] = BufferedNetworkUtilsClient.ReadColor(ref state); } result = carray; break; case FduSendableParameter.Quaternion: result = BufferedNetworkUtilsClient.ReadQuaternion(ref state); break; case FduSendableParameter.QuaternionArray: int qlen = BufferedNetworkUtilsClient.ReadInt(ref state); Quaternion[] qarr = new Quaternion[qlen]; for (int i = 0; i < qlen; i++) { qarr[i] = BufferedNetworkUtilsClient.ReadQuaternion(ref state); } result = qarr; break; case FduSendableParameter.Matrix4X4: result = BufferedNetworkUtilsClient.ReadMatrix4x4(ref state); break; case FduSendableParameter.Matrix4X4Array: int matlen = BufferedNetworkUtilsClient.ReadInt(ref state); Matrix4x4 [] matArr = new Matrix4x4[matlen]; for (int i = 0; i < matlen; ++i) { matArr[i] = BufferedNetworkUtilsClient.ReadMatrix4x4(ref state); } result = matArr; break; case FduSendableParameter.Rect: result = BufferedNetworkUtilsClient.ReadRect(ref state); break; case FduSendableParameter.RectArray: int rectlen = BufferedNetworkUtilsClient.ReadInt(ref state); Rect[] rectArr = new Rect[rectlen]; for (int i = 0; i < rectlen; ++i) { rectArr[i] = BufferedNetworkUtilsClient.ReadRect(ref state); } result = rectArr; break; case FduSendableParameter.GameObject: bool goType = BufferedNetworkUtilsClient.ReadBool(ref state); if (goType) //有clusterview的物体 { var view = FduClusterViewManager.getClusterView(BufferedNetworkUtilsClient.ReadInt(ref state)); if (view != null) { result = view.gameObject; } else { result = null; } } else //有唯一路径的gameobject { string path = BufferedNetworkUtilsClient.ReadString(ref state); result = FduSupportClass.getGameObjectByPath(path); } break; case FduSendableParameter.ClusterView: result = FduClusterViewManager.getClusterView(BufferedNetworkUtilsClient.ReadInt(ref state)); break; case FduSendableParameter.Struct: try { string typeName = BufferedNetworkUtilsClient.ReadString(ref state); System.Type type = System.Type.GetType(typeName); result = BufferedNetworkUtilsClient.ReadStruct(type, ref state); } catch (System.Exception e) { Debug.LogError("Error occured in reading struct data. Details: " + e.Message); throw; } break; case FduSendableParameter.SerializableClass: result = BufferedNetworkUtilsClient.ReadSerializableClass(ref state); break; case FduSendableParameter.Enum: result = BufferedNetworkUtilsClient.ReadInt(ref state); break; default: throw new InvalidSendableDataException("Received unsendable data type, type code:" + typeCode); } return(result); }