public override void OnSendData()
        {
            //是否监控enable状态
            if (getObservedState(1))
            {
                BufferedNetworkUtilsServer.SendBool(_renderer.enabled);
            }
            //是否监控shader状态
            if (getObservedState(2))
            {
                if (!invalideCheck)
                {
                    return;
                }
                for (int i = 0; i < attrList.Count; ++i)
                {
                    for (int j = 0; j < attrList[i].propertyType.Count; ++j)
                    {
                        if (bitArrList[i][j])
                        {
                            SerializeOnePara(attrList[i].propertyType[j], _renderer.materials[i], attrList[i].propertyName[j]);
                        }
                    }
                }
            }
#if UNITY_EDITOR
            BufferedNetworkUtilsServer.SendString("RenderObserverFlag");
#endif
        }
 //将数据序列化发送出去
 public override void Serialize()
 {
     BufferedNetworkUtilsServer.SendInt(_WaitForActiveList.Count);
     foreach (ActiveSynPara para in _WaitForActiveList)
     {
         BufferedNetworkUtilsServer.SendInt(para.viewId);
         BufferedNetworkUtilsServer.SendInt(para.obFrameCount.Count);
         foreach (KeyValuePair <int, int> kvp in para.obFrameCount)
         {
             BufferedNetworkUtilsServer.SendInt(kvp.Key);
             BufferedNetworkUtilsServer.SendInt(kvp.Value);
         }
     }
     BufferedNetworkUtilsServer.SendInt(_WaitForInActiveList.Count);
     foreach (ActiveSynPara para in _WaitForInActiveList)
     {
         BufferedNetworkUtilsServer.SendInt(para.viewId);
         BufferedNetworkUtilsServer.SendInt(para.obFrameCount.Count);
         foreach (KeyValuePair <int, int> kvp in para.obFrameCount)
         {
             BufferedNetworkUtilsServer.SendInt(kvp.Key);
             BufferedNetworkUtilsServer.SendInt(kvp.Value);
         }
     }
     BufferedNetworkUtilsServer.SendString("FduActieSyncManagerEndFlag");
     _WaitForActiveList.Clear();
     _WaitForInActiveList.Clear();
 }
Exemplo n.º 3
0
        public override void Serialize()
        {
            BufferedNetworkUtilsServer.SendInt(_sendList.Count);
            foreach (SerializeData data in _sendList)
            {
                BufferedNetworkUtilsServer.SendString(data.name);
                BufferedNetworkUtilsServer.SendByte((byte)data.type);
                switch (data.type)
                {
                case FduClusterInputType.Axis:
                    BufferedNetworkUtilsServer.SendFloat(_axisMap[data.name]._setValue);
                    break;

                case FduClusterInputType.Button:
                    BufferedNetworkUtilsServer.SendBool(_buttonMap[data.name]._setValue);
                    break;

                case FduClusterInputType.Tracker:
                    BufferedNetworkUtilsServer.SendVector3(_trackerMap[data.name]._setPosValue);
                    BufferedNetworkUtilsServer.SendQuaternion(_trackerMap[data.name]._setRotValue);
                    break;
                }
            }
            //BufferedNetworkUtilsServer.SendString("ClusterInputMgrEndFlag");
            _sendList.Clear();
        }
Exemplo n.º 4
0
 internal void SerializeParameterData()
 {
     Dictionary <string, object> .Enumerator enumerator = _paraMap.GetEnumerator();
     BufferedNetworkUtilsServer.SendString(_CommandName); //Name of Command
     BufferedNetworkUtilsServer.SendInt(_paraMap.Count);  //Count of Command parameters
     while (enumerator.MoveNext())
     {
         BufferedNetworkUtilsServer.SendString(enumerator.Current.Key);   //parameter name
         FduSupportClass.serializeOneParameter(enumerator.Current.Value); //parameter value
     }
 }
    public override void OnSendData()
    {
        BufferedNetworkUtilsServer.SendSerializableClass(CustomClassDataInstance);

        BufferedNetworkUtilsServer.SendInt(IntInstance);

        BufferedNetworkUtilsServer.SendVector3(Vector3Instance);

        BufferedNetworkUtilsServer.SendString(StringInstance);

        BufferedNetworkUtilsServer.SendStruct(CustomDataInstance);

        BufferedNetworkUtilsServer.SendList <InsideCustomData>(ListData);

        BufferedNetworkUtilsServer.SendDic <string, Vector3>(DicData);
    }
        void switchCaseFunc(FduMultiAttributeObserverOP op, ref NetworkState.NETWORK_STATE_TYPE state)
        {
            if (_ObservedComponent == null || _props == null)
            {
                return;
            }

            for (int i = 0; i < _bitArray.Length; ++i)
            {
                if (!_bitArray[i])
                {
                    continue;
                }
                if (op == FduMultiAttributeObserverOP.SendData)
                {
                    if (_props[i].PropertyType.IsEnum)
                    {
                        BufferedNetworkUtilsServer.SendInt(System.Convert.ToInt32(_props[i].GetValue(_ObservedComponent, null)));
                    }
                    else if (_props[i].PropertyType.Equals(typeof(string)))
                    {
                        BufferedNetworkUtilsServer.SendString((string)_props[i].GetValue(_ObservedComponent, null));
                    }
                    else
                    {
                        BufferedNetworkUtilsServer.SendStruct(_props[i].GetValue(_ObservedComponent, null));
                    }
                }
                else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation)
                {
                    if (_props[i].PropertyType.IsEnum)
                    {
                        _props[i].SetValue(_ObservedComponent, BufferedNetworkUtilsClient.ReadInt(ref state), null);
                    }
                    else if (_props[i].PropertyType.Equals(typeof(string)))
                    {
                        _props[i].SetValue(_ObservedComponent, BufferedNetworkUtilsClient.ReadString(ref state), null);
                    }
                    else
                    {
                        _props[i].SetValue(_ObservedComponent, BufferedNetworkUtilsClient.ReadStruct(_props[i].PropertyType, ref state), null);
                    }
                }
            }
        }
Exemplo n.º 7
0
        //将rpc事件中的各项参数都序列化发出去
        void serializeParameters()
        {
            BufferedNetworkUtilsServer.SendInt((int)_rpcData[(byte)0]);
            BufferedNetworkUtilsServer.SendString((string)_rpcData[(byte)1]);
            int paraCount = ((int)_rpcData[(byte)2]);

            BufferedNetworkUtilsServer.SendInt(paraCount);
            object[] parameters = (object[])_rpcData[(byte)3];
            try
            {
                for (int i = 0; i < paraCount; ++i)
                {
                    FduSupportClass.serializeOneParameter(parameters[i]);
                }
            }
            catch (InvalidSendableDataException e)
            {
                Debug.LogError(e.Message);
            }
        }
        //发送待创建列表和待销毁列表中的数据
        public override void Serialize()
        {
            levelPrefix = levelPrefix == "" ? UnityEngine.SceneManagement.SceneManager.GetActiveScene().name : levelPrefix;
            BufferedNetworkUtilsServer.SendString(levelPrefix);
            BufferedNetworkUtilsServer.SendInt(_waitForCreateList.Count);
            //Debug.Log("Create Count:" + _waitForCreateList.Count);
            foreach (ClusterGameObjectCreatePara para in _waitForCreateList)
            {
                BufferedNetworkUtilsServer.SendInt(para.viewId);
                BufferedNetworkUtilsServer.SendInt(para.assetId);
                BufferedNetworkUtilsServer.SendVector3(para.position);
                BufferedNetworkUtilsServer.SendQuaternion(para.rotation);
                if (para.parentPath == null)
                {
                    BufferedNetworkUtilsServer.SendString("");
                }
                else
                {
                    BufferedNetworkUtilsServer.SendString(para.parentPath);
                }
                para.viewFrameCount = para.viewInstance.getAllFrameCountForEveryNFrameDTS();
                BufferedNetworkUtilsServer.SendInt(para.viewFrameCount.Count);
                foreach (KeyValuePair <int, int> kvp in para.viewFrameCount)
                {
                    BufferedNetworkUtilsServer.SendInt(kvp.Key);   //observer在view中的id
                    BufferedNetworkUtilsServer.SendInt(kvp.Value); //observer中EveryNFrameDTS所需要同步的参数frameCount
                }


                var subViews = para.viewInstance.getSubViews();
                BufferedNetworkUtilsServer.SendInt(subViews.Count);
                foreach (FduClusterView view in subViews)
                {
                    if (view == null)
                    {
                        Debug.LogError("Find Invalid sub view in one Cluster view.View id :" + view.ViewId + ". Please press Refresh Button of this view in Inspector window");
                        break;
                    }
                    BufferedNetworkUtilsServer.SendInt(view.ViewId);
                    var list = view.getAllFrameCountForEveryNFrameDTS();
                    BufferedNetworkUtilsServer.SendInt(list.Count);
                    foreach (KeyValuePair <int, int> kvp in list)
                    {
                        BufferedNetworkUtilsServer.SendInt(kvp.Key);   //observer在subview中的id
                        BufferedNetworkUtilsServer.SendInt(kvp.Value); //observer中EveryNFrameDTS所需要同步的参数frameCount
                    }
                }
            }
            BufferedNetworkUtilsServer.SendInt(_wairForDestoryList.Count);
            foreach (int viewId in _wairForDestoryList)
            {
                BufferedNetworkUtilsServer.SendInt(viewId);
            }
            BufferedNetworkUtilsServer.SendInt(_waitForAssignViewIdList.Count);
            foreach (SyncViewIdData data in _waitForAssignViewIdList)
            {
                BufferedNetworkUtilsServer.SendString(data.name);
                BufferedNetworkUtilsServer.SendInt(data.id);
            }
            BufferedNetworkUtilsServer.SendString("FduClusterViewManagerEndFlag");
            ClearListData();
        }
Exemplo n.º 9
0
        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;
                }
            }
        }
Exemplo n.º 10
0
        internal void SerializeGenericData()
        {
            var enu = _genericMap.GetEnumerator();

            BufferedNetworkUtilsServer.SendInt(_genericMap.Count);
            while (enu.MoveNext())
            {
                BufferedNetworkUtilsServer.SendString(enu.Current.Key);
                genericData _data = enu.Current.Value;
                BufferedNetworkUtilsServer.SendString(_data.keyTypeName);
                BufferedNetworkUtilsServer.SendString(_data.valueTypeName);
                BufferedNetworkUtilsServer.SendString(_data.containerTypeName);
                int count = _data.valueData.Count;
                BufferedNetworkUtilsServer.SendInt(count);

                bool        isStringK = false; bool isStringV = false;
                System.Type typeK = System.Type.GetType(_data.keyTypeName);
                System.Type typeV = System.Type.GetType(_data.valueTypeName);

                if (typeV != null && typeV.Equals(typeof(string)))
                {
                    isStringV = true;
                }
                if (typeK != null && typeK.Equals(typeof(string)))
                {
                    isStringK = true;
                }

                if (_data.containerTypeName == "dic")
                {
                    for (int i = 0; i < _data.valueData.Count; i = i + 2)
                    {
                        if (isStringK)
                        {
                            BufferedNetworkUtilsServer.SendString((string)_data.valueData[i]);
                        }
                        else if (typeK.IsEnum)
                        {
                            BufferedNetworkUtilsServer.SendInt(System.Convert.ToInt32(_data.valueData[i]));
                        }
                        else
                        {
                            BufferedNetworkUtilsServer.SendStruct(_data.valueData[i]);
                        }

                        if (isStringV)
                        {
                            BufferedNetworkUtilsServer.SendString((string)_data.valueData[i + 1]);
                        }
                        else if (typeV.IsEnum)
                        {
                            BufferedNetworkUtilsServer.SendInt(System.Convert.ToInt32(_data.valueData[i + 1]));
                        }
                        else
                        {
                            BufferedNetworkUtilsServer.SendStruct(_data.valueData[i + 1]);
                        }
                    }
                }
                else if (_data.containerTypeName == "queue" || _data.containerTypeName == "list" || _data.containerTypeName == "stack")
                {
                    for (int i = 0; i < _data.valueData.Count; ++i)
                    {
                        if (isStringV)
                        {
                            BufferedNetworkUtilsServer.SendString((string)_data.valueData[i]);
                        }
                        else if (typeV.IsEnum)
                        {
                            BufferedNetworkUtilsServer.SendInt(System.Convert.ToInt32(_data.valueData[i]));
                        }
                        else
                        {
                            BufferedNetworkUtilsServer.SendStruct(_data.valueData[i]);
                        }
                    }
                }
            }
        }
Exemplo n.º 11
0
        void switchCaseFunc(FduMultiAttributeObserverOP op, ref NetworkState.NETWORK_STATE_TYPE state)
        {
            for (int i = 1; i < attributeList.Length; ++i)
            {
                if (!getObservedState(i)) //如果editor中没有选择监控该属性 则直接跳过
                {
                    continue;
                }

                switch (i)
                {
                case 1:    //position
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            _transform.position = FduInterpolationInterface.getNextVector3Value_new(_transform.position, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector3(_transform.position);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        _transform.position = BufferedNetworkUtilsClient.ReadVector3(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector3(ref state));
                    }
                    break;

                case 2:    //rotation
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            _transform.rotation = FduInterpolationInterface.getNextQuaternionValue_new(_transform.rotation, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendQuaternion(_transform.rotation);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        _transform.rotation = BufferedNetworkUtilsClient.ReadQuaternion(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadQuaternion(ref state));
                    }
                    break;

                case 3:    //scale
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            _transform.localScale = FduInterpolationInterface.getNextVector3Value_new(_transform.localScale, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector3(_transform.localScale);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        _transform.localScale = BufferedNetworkUtilsClient.ReadVector3(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector3(ref state));
                    }
                    break;

                case 4:    //parent: 对于父节点的监控 这里只是一个不完全的解决方案 获取到父节点的路径 传输过去 然后在从节点解析。如果路径不唯一(因为可以同名)就会找不到对于的父节点
                    if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        string parentPath;
                        if (_transform.parent == null)
                        {
                            parentPath = "";
                        }
                        else
                        {
                            parentPath = FduSupportClass.getGameObjectPath(_transform.parent.gameObject);
                        }

                        if (parentPath == null)
                        {
                            parentPath = "";
                        }
                        BufferedNetworkUtilsServer.SendString(parentPath);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        string parentPath;
                        if (_transform.parent == null)
                        {
                            parentPath = "";
                        }
                        else
                        {
                            parentPath = FduSupportClass.getGameObjectPath(_transform.parent.gameObject);
                        }

                        if (parentPath == null)
                        {
                            parentPath = "";
                        }
                        string getPath = BufferedNetworkUtilsClient.ReadString(ref state);
                        if (parentPath != getPath)     //hierarchy changed
                        {
                            GameObject go = FduSupportClass.getGameObjectByPath(getPath);
                            if (go == null)
                            {
                                _transform.SetParent(null);
                            }
                            else
                            {
                                _transform.SetParent(go.transform);
                            }
                        }
                    }
                    break;

                case 5:    //LocalPosition
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            _transform.localPosition = FduInterpolationInterface.getNextVector3Value_new(_transform.localPosition, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector3(_transform.localPosition);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        _transform.localPosition = BufferedNetworkUtilsClient.ReadVector3(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector3(ref state));
                    }
                    break;

                case 6:    //LocalRotation;
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            _transform.localRotation = FduInterpolationInterface.getNextQuaternionValue_new(_transform.localRotation, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendQuaternion(_transform.localRotation);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        _transform.localRotation = BufferedNetworkUtilsClient.ReadQuaternion(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadQuaternion(ref state));
                    }
                    break;

                case 7:    //LocalScale
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            _transform.localScale = FduInterpolationInterface.getNextVector3Value_new(_transform.localScale, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector3(_transform.localScale);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        _transform.localScale = BufferedNetworkUtilsClient.ReadVector3(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector3(ref state));
                    }
                    break;

                case 8:    //EulerAngle
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            _transform.eulerAngles = FduInterpolationInterface.getNextVector3Value_new(_transform.eulerAngles, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector3(_transform.eulerAngles);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        _transform.eulerAngles = BufferedNetworkUtilsClient.ReadVector3(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector3(ref state));
                    }
                    break;

                case 9:    //LocalEulerAngle
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            _transform.localEulerAngles = FduInterpolationInterface.getNextVector3Value_new(_transform.localEulerAngles, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector3(_transform.localEulerAngles);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        _transform.localEulerAngles = BufferedNetworkUtilsClient.ReadVector3(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector3(ref state));
                    }
                    break;

                default:
                    break;
                }
            }
        }
Exemplo n.º 12
0
 public override void Serialize()
 {
     BufferedNetworkUtilsServer.SendString(levelName);
 }
Exemplo n.º 13
0
        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;
                }
            }
        }
Exemplo n.º 14
0
        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:     //AnchoredPosition
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.anchoredPosition = FduInterpolationInterface.getNextVector2Value_new(rectTransform.anchoredPosition, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector2(rectTransform.anchoredPosition);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.anchoredPosition = BufferedNetworkUtilsClient.ReadVector2(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector2(ref state));
                    }
                    break;

                case 2:    //AnchoredPosition3D
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.anchoredPosition3D = FduInterpolationInterface.getNextVector3Value_new(rectTransform.anchoredPosition3D, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector3(rectTransform.anchoredPosition3D);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.anchoredPosition3D = BufferedNetworkUtilsClient.ReadVector3(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector3(ref state));
                    }
                    break;

                case 3:    //Rotation
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.rotation = FduInterpolationInterface.getNextQuaternionValue_new(rectTransform.rotation, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendQuaternion(rectTransform.rotation);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.rotation = BufferedNetworkUtilsClient.ReadQuaternion(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadQuaternion(ref state));
                    }
                    break;

                case 4:    //Scale
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.localScale = FduInterpolationInterface.getNextVector3Value_new(rectTransform.localScale, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector3(rectTransform.localScale);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.localScale = BufferedNetworkUtilsClient.ReadVector3(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty_append(i, BufferedNetworkUtilsClient.ReadVector3(ref state));
                    }
                    break;

                case 5:    //Parent
                    if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        string parentPath;
                        if (rectTransform.parent == null)
                        {
                            parentPath = "";
                        }
                        else
                        {
                            parentPath = FduSupportClass.getGameObjectPath(rectTransform.parent.gameObject);
                        }

                        if (parentPath == null)
                        {
                            parentPath = "";
                        }
                        BufferedNetworkUtilsServer.SendString(parentPath);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct || op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        string parentPath;
                        if (rectTransform.parent == null)
                        {
                            parentPath = "";
                        }
                        else
                        {
                            parentPath = FduSupportClass.getGameObjectPath(rectTransform.parent.gameObject);
                        }

                        if (parentPath == null)
                        {
                            parentPath = "";
                        }
                        string getPath = BufferedNetworkUtilsClient.ReadString(ref state);
                        if (parentPath != getPath)     //hierarchy changed
                        {
                            GameObject go = FduSupportClass.getGameObjectByPath(getPath);
                            if (go == null)
                            {
                                rectTransform.SetParent(null);
                            }
                            else
                            {
                                rectTransform.SetParent(go.transform);
                            }
                        }
                    }
                    break;

                case 6:    //AnchorMax
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.anchorMax = FduInterpolationInterface.getNextVector2Value_new(rectTransform.anchorMax, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector2(rectTransform.anchorMax);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.anchorMax = BufferedNetworkUtilsClient.ReadVector2(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty(i, BufferedNetworkUtilsClient.ReadVector2(ref state));
                    }
                    break;

                case 7:    //AnchorMin
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.anchorMin = FduInterpolationInterface.getNextVector2Value_new(rectTransform.anchorMin, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector2(rectTransform.anchorMin);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.anchorMin = BufferedNetworkUtilsClient.ReadVector2(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty(i, BufferedNetworkUtilsClient.ReadVector2(ref state));
                    }
                    break;

                case 8:    //OffsetMax
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.offsetMax = FduInterpolationInterface.getNextVector2Value_new(rectTransform.offsetMax, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector2(rectTransform.offsetMax);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.offsetMax = BufferedNetworkUtilsClient.ReadVector2(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty(i, BufferedNetworkUtilsClient.ReadVector2(ref state));
                    }
                    break;

                case 9:    //OffsetMin
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.offsetMin = FduInterpolationInterface.getNextVector2Value_new(rectTransform.offsetMin, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector2(rectTransform.offsetMin);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.offsetMin = BufferedNetworkUtilsClient.ReadVector2(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty(i, BufferedNetworkUtilsClient.ReadVector2(ref state));
                    }
                    break;

                case 10:    //Pivot
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.pivot = FduInterpolationInterface.getNextVector2Value_new(rectTransform.pivot, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector2(rectTransform.pivot);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.pivot = BufferedNetworkUtilsClient.ReadVector2(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty(i, BufferedNetworkUtilsClient.ReadVector2(ref state));
                    }
                    break;

                case 11:    //SizeDelta
                    if (op == FduMultiAttributeObserverOP.Update)
                    {
                        if (getCachedProperytyCount(i) > 0)
                        {
                            rectTransform.sizeDelta = FduInterpolationInterface.getNextVector2Value_new(rectTransform.sizeDelta, i, this);
                        }
                    }
                    else if (op == FduMultiAttributeObserverOP.SendData)
                    {
                        BufferedNetworkUtilsServer.SendVector2(rectTransform.sizeDelta);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Direct)
                    {
                        rectTransform.sizeDelta = BufferedNetworkUtilsClient.ReadVector2(ref state);
                    }
                    else if (op == FduMultiAttributeObserverOP.Receive_Interpolation)
                    {
                        setCachedProperty(i, BufferedNetworkUtilsClient.ReadVector2(ref state));
                    }
                    break;
                }
            }
        }
Exemplo n.º 15
0
        //序列化一个可传送的参数
        public static void serializeOneParameter(object para)
        {
            FduSendableParameter typeCode = FduGlobalConfig.getSendableParameterCode(para);

            BufferedNetworkUtilsServer.SendByte((byte)typeCode);
            switch (typeCode)
            {
            case FduSendableParameter.Int:
                BufferedNetworkUtilsServer.SendInt((int)para);
                break;

            case FduSendableParameter.IntArray:
                BufferedNetworkUtilsServer.SendIntArray((int[])para);
                break;

            case FduSendableParameter.Byte:
                BufferedNetworkUtilsServer.SendByte((byte)para);
                break;

            case FduSendableParameter.ByteArray:
                BufferedNetworkUtilsServer.SendByteArray((byte[])para);
                break;

            case FduSendableParameter.Float:
                BufferedNetworkUtilsServer.SendFloat((float)para);
                break;

            case FduSendableParameter.FloatArray:
                BufferedNetworkUtilsServer.SendFloatArray((float[])para);
                break;

            case FduSendableParameter.Bool:
                BufferedNetworkUtilsServer.SendBool((bool)para);
                break;

            case FduSendableParameter.BoolArray:
                bool[] bolarr = (bool[])para;
                int    bollen = bolarr.Length;
                BufferedNetworkUtilsServer.SendInt(bollen);
                for (int i = 0; i < bollen; ++i)
                {
                    BufferedNetworkUtilsServer.SendBool(bolarr[i]);
                }
                break;

            case FduSendableParameter.String:
                BufferedNetworkUtilsServer.SendString((string)para);
                break;

            case FduSendableParameter.StringArray:
                string[] strarr = (string[])para;
                int      strlen = strarr.Length;
                BufferedNetworkUtilsServer.SendInt(strlen);
                for (int i = 0; i < strlen; ++i)
                {
                    BufferedNetworkUtilsServer.SendString(strarr[i]);
                }
                break;

            case FduSendableParameter.Vector2:
                BufferedNetworkUtilsServer.SendVector2((Vector2)para);
                break;

            case FduSendableParameter.Vector2Array:
                Vector2[] v2arr = (Vector2[])para;
                int       v2len = v2arr.Length;
                BufferedNetworkUtilsServer.SendInt(v2len);
                for (int i = 0; i < v2len; ++i)
                {
                    BufferedNetworkUtilsServer.SendVector2(v2arr[i]);
                }
                break;

            case FduSendableParameter.Vector3:
                BufferedNetworkUtilsServer.SendVector3((Vector3)para);
                break;

            case FduSendableParameter.Vector3Array:
                Vector3[] v3arr = (Vector3[])para;
                int       v3len = v3arr.Length;
                BufferedNetworkUtilsServer.SendInt(v3len);
                for (int i = 0; i < v3len; ++i)
                {
                    BufferedNetworkUtilsServer.SendVector3(v3arr[i]);
                }
                break;

            case FduSendableParameter.Vector4:
                BufferedNetworkUtilsServer.SendVector4((Vector4)para);
                break;

            case FduSendableParameter.Vector4Array:
                Vector4[] v4arr = (Vector4[])para;
                int       v4len = v4arr.Length;
                BufferedNetworkUtilsServer.SendInt(v4len);
                for (int i = 0; i < v4len; ++i)
                {
                    BufferedNetworkUtilsServer.SendVector3(v4arr[i]);
                }
                break;

            case FduSendableParameter.Color:
                BufferedNetworkUtilsServer.SendColor((Color)para);
                break;

            case FduSendableParameter.ColorArray:
                Color[] carray = (Color[])para;
                int     clen   = carray.Length;
                BufferedNetworkUtilsServer.SendInt(clen);
                for (int i = 0; i < clen; ++i)
                {
                    BufferedNetworkUtilsServer.SendColor(carray[i]);
                }
                break;

            case FduSendableParameter.Quaternion:
                BufferedNetworkUtilsServer.SendQuaternion((Quaternion)para);
                break;

            case FduSendableParameter.QuaternionArray:
                Quaternion[] qarr = (Quaternion[])para;
                int          qlen = qarr.Length;
                BufferedNetworkUtilsServer.SendInt(qlen);
                for (int i = 0; i < qlen; i++)
                {
                    BufferedNetworkUtilsServer.SendQuaternion(qarr[i]);
                }
                break;

            case FduSendableParameter.GameObject:
                if (((GameObject)para).GetClusterView() != null)
                {
                    BufferedNetworkUtilsServer.SendBool(true);
                    BufferedNetworkUtilsServer.SendInt(((GameObject)para).GetClusterView().ViewId);
                }
                else
                {
                    BufferedNetworkUtilsServer.SendBool(false);
                    BufferedNetworkUtilsServer.SendString(FduSupportClass.getGameObjectPath((GameObject)para));
                }
                break;

            case FduSendableParameter.ClusterView:
                BufferedNetworkUtilsServer.SendInt(((FduClusterView)para).ViewId);
                break;

            case FduSendableParameter.Matrix4X4:
                BufferedNetworkUtilsServer.SendMatrix4x4((Matrix4x4)para);
                break;

            case FduSendableParameter.Matrix4X4Array:
                Matrix4x4[] matarr = (Matrix4x4[])para;
                int         mlen   = matarr.Length;
                BufferedNetworkUtilsServer.SendInt(mlen);
                for (int i = 0; i < mlen; ++i)
                {
                    BufferedNetworkUtilsServer.SendMatrix4x4(matarr[i]);
                }
                break;

            case FduSendableParameter.Rect:
                BufferedNetworkUtilsServer.SendRect((Rect)para);
                break;

            case FduSendableParameter.RectArray:
                Rect[] rectArr = (Rect[])para;
                int    rectlen = rectArr.Length;
                BufferedNetworkUtilsServer.SendInt(rectlen);
                for (int i = 0; i < rectlen; ++i)
                {
                    BufferedNetworkUtilsServer.SendRect(rectArr[i]);
                }
                break;

            case FduSendableParameter.Struct:
                BufferedNetworkUtilsServer.SendString(para.GetType().AssemblyQualifiedName);
                BufferedNetworkUtilsServer.SendStruct(para);
                break;

            case FduSendableParameter.SerializableClass:
                BufferedNetworkUtilsServer.SendSerializableClass(para);
                break;

            case FduSendableParameter.Enum:
                BufferedNetworkUtilsServer.SendInt(System.Convert.ToInt32(para));
                break;

            default:
                throw new InvalidSendableDataException("Such type of data can not be sent. Type name:" + para.GetType().FullName);
            }
        }