public void DataRefresh()
    {
        IntInstance = Random.Range(0, 50);

        Vector3Instance = Vector3.one * Random.Range(0, 50);

        string all     = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+";
        int    slength = Random.Range(1, 20);

        StringInstance = "";
        for (int i = 0; i < slength; ++i)
        {
            StringInstance += all[Random.Range(0, all.Length)];
        }

        CustomDataInstance.CustomVector3Data     = Vector3.one * Random.Range(0, 50);
        CustomDataInstance.CustomColorData       = new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f));
        CustomDataInstance.CustomEnumData        = (CustomEnum)Random.Range(0, 3);
        CustomDataInstance.InsideData.insideData = Random.Range(0, 50);

        ListData.Clear();
        ListData.Add(new InsideCustomData(Random.Range(0, 50)));
        ListData.Add(new InsideCustomData(Random.Range(0, 50)));
        ListData.Add(new InsideCustomData(Random.Range(0, 50)));

        DicData.Clear();
        DicData.Add("Key1", Vector3.one * Random.Range(0, 50));
        DicData.Add("Key2", Vector3.one * Random.Range(0, 50));
        DicData.Add("Key3", Vector3.one * Random.Range(0, 50));

        CustomClassDataInstance = new CustomClassData();
        int len = Random.Range(1, 5);

        CustomClassDataInstance.CustomClassStringData = "";
        for (int i = 0; i < len; ++i)
        {
            CustomClassDataInstance.CustomClassList.Add(Random.Range(0, 50));
            CustomClassDataInstance.CustomClassDictionaryData.Add("Key" + i, Random.Range(0, 50));
            CustomClassDataInstance.CustomClassStringData += all[Random.Range(0, all.Length)];
        }

        ClusterCommand c = ClusterCommand.create("666");

        c.addParameters("123", 456, "555", "miao");
        c.addDic <string, Vector3>("dicName", DicData);
        FduClusterCommandDispatcher.SendClusterCommand(c);
    }
    //重新采集数据
    void RefreshData()
    {
        ClearData();
        scale = 0.0f;
        scaleAnimationTrigger = true;

        maxWeight = float.MinValue;
        minWeight = 0;

        Dictionary <string, FduClusterCommandDispatcher.ExecutorData> .Enumerator Executors = FduClusterCommandDispatcher.getExecutors();
        while (Executors.MoveNext())
        {
            nodeData node = new nodeData();
            node.CommandName   = Executors.Current.Key;
            node.ExecutorCount = Executors.Current.Value.ActionMap.Count;

            this.nodeDataList.Add(node);
        }
        var invokeData = ClusterCommandStatisticClass.instance.getCommandAccumulatedData();

        while (invokeData.MoveNext())
        {
            nodeData node = nodeDataList.Find(delegate(nodeData n1) { return(n1.CommandName == invokeData.Current.Key); });
            if (node != null)
            {
                node.invokedTimes = invokeData.Current.Value;

                maxWeight = maxWeight < node.invokedTimes ? node.invokedTimes : maxWeight;
                minWeight = minWeight > node.invokedTimes ? node.invokedTimes : minWeight;
            }
            else
            {
                noExecutorCommandList.Add(invokeData.Current.Key);
            }
        }

        genTestData();


        root = BuildDataTree();

        if (root != null)
        {
            Divide(root, true, new Vector2(rectsPos.x, rectsPos.y), rectsPos.width, rectsPos.height);
            ProcessDisplayNodeData();
        }
    }
    void Start()
    {
        DataRefresh();

        FduClusterCommandDispatcher.AddCommandExecutor("TestCommand", (ClusterCommand c) => { Debug.Log(((CustomClassData)c.getParameter("para1")).CustomClassList.Count); });
    }
Beispiel #4
0
    //绘制子窗口
    public override void DrawSubWindow()
    {
        var leftOffset = new GUIStyle();

        leftOffset.margin.left = 10;

        if (!Application.isPlaying)
        {
            GUI.Label(subWindowRect, new GUIContent("You can get the information of Command Executor at run time", parentWindow.hintTexture), FduEditorGUI.getTitleStyle_LevelOne());
            return;
        }

        //画Box背景
        GUI.Box(ExecutorScroll, "");
        //views = FduClusterViewManager.getClusterViews();


        //==========================================搜索与总数部分Start===================================

        if (ClusterHelper.Instance != null && ClusterHelper.Instance.Server != null)
        {
            hintText = "Master Node Command Executors";
        }
        if (ClusterHelper.Instance != null && ClusterHelper.Instance.Client != null)
        {
            hintText = "Slave Node Command Executors";
        }

        EditorGUILayout.Space();

        EditorGUILayout.BeginHorizontal(leftOffset, GUILayout.Width(subWindowRect.width));
        EditorGUILayout.LabelField("Command Executor Count ", FduClusterCommandDispatcher.getExecutorCount().ToString(), leftOffset);
        EditorGUILayout.LabelField(hintText);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal(leftOffset, GUILayout.Width(subWindowRect.width));


        searchText_CommandExecutor = EditorGUILayout.TextField("Search", searchText_CommandExecutor, GUILayout.Width(subWindowRect.width * 0.5f), GUILayout.Height(20));
        EditorGUILayout.Space();
        if (GUILayout.Button("Clear", GUILayout.Height(21)))
        {
            searchText_CommandExecutor = "";
            searchingFlag = false;
            EditorGUI.FocusTextInControl("");
        }
        if (GUILayout.Button("Search", GUILayout.Height(21)))
        {
            searchingFlag = true;
            EditorGUI.FocusTextInControl("");
        }
        EditorGUILayout.EndHorizontal();
        //==========================================搜索与总数部分End===================================



        //==========================================Executor列表部分Start===================================
        leftOffset.margin.left += 15;
        var center = new GUIStyle();

        center.alignment = TextAnchor.MiddleCenter;

        float len1, len2, len3, len4, len5;

        len1 = ExecutorScroll.width * 0.3f;
        len2 = ExecutorScroll.width * 0.3f;
        len3 = ExecutorScroll.width * 0.3f;
        len4 = ExecutorScroll.width * 0.43f;
        len5 = ExecutorScroll.width * 0.1f;

        var labelStyle = new GUIStyle();

        labelStyle.fontStyle = FontStyle.Bold;

        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal(leftOffset, GUILayout.Width(subWindowRect.width));
        EditorGUILayout.LabelField("Executor Info", labelStyle, GUILayout.Width(len1));
        EditorGUILayout.LabelField("Observed Command", labelStyle, GUILayout.Width(len2));
        EditorGUILayout.LabelField("Executor Target", labelStyle, GUILayout.Width(len3));
        EditorGUILayout.EndHorizontal();

        if (FduClusterCommandDispatcher.getExecutorCount() <= 0)
        {
            GUI.Label(ExecutorScroll, new GUIContent("No Registed Command Executor", parentWindow.hintTexture), FduEditorGUI.getTitleStyle_LevelOne());
            return;
        }

        EditorGUILayout.Space();

        CommandScrollPos = EditorGUILayout.BeginScrollView(CommandScrollPos, leftOffset, GUILayout.Width(ExecutorScroll.width - 10), GUILayout.Height(ExecutorScroll.height - 10));

        var Executors = FduClusterCommandDispatcher.getExecutors();
        int listCount = 0;

        while (Executors.MoveNext())
        {
            var subExecutors = Executors.Current.Value.ActionMap.GetEnumerator();
            while (subExecutors.MoveNext())
            {
                EditorGUILayout.BeginHorizontal();
                string exeInfo = string.Format("ID:{0} Name:{1}", subExecutors.Current.Key, subExecutors.Current.Value.Method.Name);
                EditorGUILayout.LabelField(exeInfo, GUILayout.Width(len1));
                EditorGUILayout.LabelField(Executors.Current.Key, GUILayout.Width(len2));
                if (subExecutors.Current.Value.Target != null)
                {
                    EditorGUILayout.LabelField(subExecutors.Current.Value.Target.ToString(), GUILayout.Width(len3));
                }
                else
                {
                    EditorGUILayout.LabelField("NULL", GUILayout.Width(len3));
                }
                EditorGUILayout.EndHorizontal();
                listCount++;
            }
        }
        //为了强制显示scroll view 的进度条 BeginScrollView里面的alwaysShowVertical参数没用
        for (int i = listCount; i < 35; ++i)
        {
            EditorGUILayout.LabelField("");
        }
        EditorGUILayout.EndScrollView();

        //==========================================Executor列表部分End===================================
    }