예제 #1
0
    void OnRenderObject()
    {
        if (Elements <= Feet.Length)
        {
            return;
        }

        UltiDraw.Begin();

        Color[] colors = UltiDraw.GetRainbowColors(Feet.Length);
        for (int i = 0; i < colors.Length; i++)
        {
            colors[i] = colors[i].Darken(0.25f);
        }
        for (int i = 0; i < Feet.Length; i++)
        {
            UltiDraw.DrawSphere(Feet[i].transform.position, Quaternion.identity, 0.075f, colors[i]);
        }

        float border = 0.01f;
        float width  = Rect.W;
        float height = Feet.Length * Rect.H + (Feet.Length - 1) * border / 2f;

        UltiDraw.DrawGUIRectangle(Rect.GetPosition(), new Vector2(width, height), UltiDraw.DarkGrey.Transparent(0.75f), 0.5f * border, UltiDraw.BlackGrey);
        float pivot = 0.5f * height;

        for (int i = 1; i <= Feet.Length; i++)
        {
            pivot -= Rect.H / 2f;
            UltiDraw.DrawGUIRectangle(Rect.GetPosition() + new Vector2(0f, pivot), new Vector2(Rect.W, Rect.H), UltiDraw.White.Transparent(0.5f));
            for (int j = 0; j < Positions[i - 1].Count; j++)
            {
                float p = (float)j / (float)(Positions[i - 1].Count - 1);
                p = Utility.Normalise(p, 0f, 1f, 0.5f * Thickness / Rect.W, (Rect.W - 0.5f * Thickness) / Rect.W);
                float x    = Rect.X - 0.5f * Rect.W + p * Rect.W;
                float yTop = pivot + Rect.H / 2f;
                float yBot = pivot - Rect.H / 2f;
                float h    = Positions[i - 1][j].y - Utility.GetHeight(Positions[i - 1][j], LayerMask.GetMask("Ground"));
                if (h < Thresholds[i - 1])
                {
                    UltiDraw.DrawGUILine(new Vector2(x, Rect.Y + yTop), new Vector2(x, Rect.Y + yBot), Thickness, colors[i - 1]);
                }
            }
            pivot -= border / 2f;
            pivot -= Rect.H / 2f;
        }

        UltiDraw.End();
    }
    void OnRenderObject()
    {
        if (!Application.isPlaying)
        {
            return;
        }

        if (!Visualise)
        {
            return;
        }

        if (!Setup())
        {
            return;
        }

        if (Background.GetSize() != Vector2.zero)
        {
            UltiDraw.Begin();
            UltiDraw.DrawGUIRectangle(Background.GetPosition(), Background.GetSize(), Color.white);
            UltiDraw.End();
        }

        switch (Mode)
        {
        case MODE.Function:
            DrawFunction();
            break;

        case MODE.Graph:
            DrawGraph();
            break;
        }
    }
    private void DrawFunction()
    {
        UltiDraw.Begin();
        Color[]        colors    = UltiDraw.GetRainbowColors(Values.Length);
        List <float[]> functions = new List <float[]>();
        float          min       = float.MaxValue;
        float          max       = float.MinValue;

        for (int i = 0; i < Values.Length; i++)
        {
            float[] values = Values[i].ToArray();
            min = Mathf.Min(values.Min(), min);
            max = Mathf.Max(values.Max(), max);
            functions.Add(values);
        }
        UltiDraw.DrawGUIFunctions(Rect.GetPosition(), Rect.GetSize(), functions, min, max, 0.001f, UltiDraw.White, colors, 0.001f, UltiDraw.DarkGrey);
        UltiDraw.End();
    }
예제 #4
0
    public void DrawDistribution(Color color, UltiDraw.GUIRect rect)
    {
        float max = Distances.Max();

        float[] distances = new float[Distances.Length];
        for (int i = 0; i < distances.Length; i++)
        {
            distances[i] = Utility.Normalise(Distances[i], 0f, max, 1f, 0f);
        }

        UltiDraw.Begin();
        UltiDraw.DrawGUIFunction(rect.GetPosition(), rect.GetSize(), distances, 0f, 1f, UltiDraw.White, color);
        UltiDraw.End();
    }
예제 #5
0
 public void DrawDistribution(Color color, UltiDraw.GUIRect rect)
 {
     UltiDraw.Begin();
     UltiDraw.DrawGUIFunction(rect.GetPosition(), rect.GetSize(), Occupancies, 0f, 1f, UltiDraw.White, color);
     UltiDraw.End();
 }