Example #1
0
 public void Sketch(Matrix4x4[] transformations, Color color)
 {
     UltiDraw.Begin();
     if (transformations.Length != Bones.Length)
     {
         Debug.Log("Number of given transformations does not match number of bones.");
     }
     else
     {
         Action <Bone> recursion = null;
         recursion = new Action <Bone>((bone) => {
             Matrix4x4 current = transformations[bone.Index];
             if (bone.GetParent() != null)
             {
                 Matrix4x4 parent = transformations[bone.GetParent().Index];
                 UltiDraw.DrawLine(parent.GetPosition(), current.GetPosition(), color);
             }
             UltiDraw.DrawCube(current.GetPosition(), current.GetRotation(), 0.02f, color);
             for (int i = 0; i < bone.Childs.Length; i++)
             {
                 recursion(bone.GetChild(i));
             }
         });
         foreach (Bone bone in GetRootBones())
         {
             recursion(bone);
         }
     }
     UltiDraw.End();
 }
Example #2
0
    public void Draw(Color color)
    {
        float max = Distances.Max();

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

        Vector3    position = Pivot.GetPosition();
        Quaternion rotation = Pivot.GetRotation();

        UltiDraw.Begin();
        Vector3 step = GetStep();

        if (Size != Vector3.zero)
        {
            UltiDraw.DrawWireCuboid(position, rotation, Size, color);
            for (int i = 0; i < Points.Length; i++)
            {
                if (distances[i] > 0f)
                {
                    UltiDraw.DrawCuboid(References[i], rotation, step, Color.Lerp(UltiDraw.None, color, distances[i]));
                }
            }
        }
        UltiDraw.End();
    }
Example #3
0
    void OnRenderObject()
    {
        for (int i = 0; i < Values.Length; i++)
        {
            Values[i].Dequeue();
            Values[i].Enqueue(NN.Model.GetTensor("BY").GetValue(i, 0));
        }

        UltiDraw.Begin();
        Vector2 center = new Vector2(X, Y);
        float   border = 0.0025f;

        UltiDraw.DrawGUIRectangle(
            center,
            new Vector2(W + 2f * border / Screen.width * Screen.height, H + 2f * border),
            UltiDraw.Black.Transparent(0.5f));
        UltiDraw.DrawGUIRectangle(
            center,
            new Vector2(W, H),
            UltiDraw.White.Transparent(0.5f));

        Color[] colors = UltiDraw.GetRainbowColors(Values.Length);
        for (int i = 0; i < colors.Length; i++)
        {
            DrawControlPoint(center.x - W / 2f, center.y + H / 2f, W, H, Values[i], colors[i]);
        }
        //for(int i=0; i<colors.Length; i++) {
        //	Vector2 start = center - new Vector2(width/2f, -height/2f);
        //	UltiDraw.DrawGUIRectangle(start + (float)i/(float)(colors.Length-1)*new Vector2(width, 0f), new Vector2(0.025f, 0.025f), colors[i]);
        //}
        UltiDraw.End();
    }
Example #4
0
    void OnRenderObject()
    {
        if (Root == null)
        {
            Root = transform;
        }

        /*
         * UnityGL.Start();
         * UnityGL.DrawGUICircle(0.5f, 0.85f, 0.075f, Utility.Black.Transparent(0.5f));
         * Quaternion rotation = Quaternion.AngleAxis(-360f * Phase / (2f * Mathf.PI), Vector3.forward);
         * Vector2 a = rotation * new Vector2(-0.005f, 0f);
         * Vector2 b = rotation *new Vector3(0.005f, 0f);
         * Vector3 c = rotation * new Vector3(0f, 0.075f);
         * UnityGL.DrawGUITriangle(0.5f + a.x/Screen.width*Screen.height, 0.85f + a.y, 0.5f + b.x/Screen.width*Screen.height, 0.85f + b.y, 0.5f + c.x/Screen.width*Screen.height, 0.85f + c.y, Utility.Cyan);
         * UnityGL.Finish();
         */

        if (ShowTrajectory)
        {
            if (Application.isPlaying)
            {
                UltiDraw.Begin();
                UltiDraw.DrawLine(Trajectory.Points[RootPointIndex].GetPosition(), Trajectory.Points[RootPointIndex].GetPosition() + TargetDirection, 0.05f, 0f, UltiDraw.Red.Transparent(0.75f));
                UltiDraw.DrawLine(Trajectory.Points[RootPointIndex].GetPosition(), Trajectory.Points[RootPointIndex].GetPosition() + TargetVelocity, 0.05f, 0f, UltiDraw.Green.Transparent(0.75f));
                UltiDraw.End();
                Trajectory.Draw(10);
            }
        }

        if (!Application.isPlaying)
        {
            Character.FetchTransformations(Root);
        }
        Character.Draw();

        if (ShowVelocities)
        {
            if (Application.isPlaying)
            {
                UltiDraw.Begin();
                for (int i = 0; i < Joints.Length; i++)
                {
                    Character.Segment segment = Character.FindSegment(Joints[i].name);
                    if (segment != null)
                    {
                        UltiDraw.DrawArrow(
                            Joints[i].position,
                            Joints[i].position + Velocities[i] * 60f,
                            0.75f,
                            0.0075f,
                            0.05f,
                            UltiDraw.Cyan.Transparent(0.5f)
                            );
                    }
                }
                UltiDraw.End();
            }
        }
    }
Example #5
0
    public void Draw(Color color, bool references = false, bool distribution = false)
    {
        if (Size == 0f)
        {
            return;
        }

        Vector3    position = Pivot.GetPosition();
        Quaternion rotation = Pivot.GetRotation();

        float height = GetHeight();

        UltiDraw.Begin();
        UltiDraw.DrawWireCylinder(position + rotation * new Vector3(0f, 0.25f * height, 0f), rotation, new Vector3(Size, 0.5f * height, Size), UltiDraw.Black);
        if (references)
        {
            Color reference = UltiDraw.Black.Opacity(0.05f);
            for (int i = 0; i < Points.Length; i++)
            {
                UltiDraw.DrawSphere(References[i], Quaternion.identity, 2f * Radius[i], reference);
            }
        }
        for (int i = 0; i < Points.Length; i++)
        {
            if (Occupancies[i] > 0f)
            {
                UltiDraw.DrawSphere(References[i], rotation, 2f * Radius[i], Color.Lerp(UltiDraw.None, color, Occupancies[i]));
            }
        }
        if (distribution)
        {
            UltiDraw.PlotFunction(new Vector2(0.5f, 0.15f), new Vector2(0.8f, 0.2f), Occupancies, yMin: 0f, yMax: 1f, backgroundColor: UltiDraw.White, lineColor: color);
        }
        UltiDraw.End();
    }
Example #6
0
    void Draw()
    {
        UltiDraw.Begin();

        float window = 0.25f;

        MotionData.Frame[] frames = GetEditor().Data.GetFrames(Mathf.Clamp(GetEditor().GetState().Timestamp - window / 2f, 0f, GetEditor().Data.GetTotalTime()), Mathf.Clamp(GetEditor().GetState().Timestamp + window / 2f, 0f, GetEditor().Data.GetTotalTime()));

        List <float[]> values = new List <float[]>();

        for (int i = 0; i < States.Count; i++)
        {
            values.Add(new float[frames.Length]);
        }
        for (int i = 0; i < frames.Length; i++)
        {
            float[] stateVector = GetStateVector(frames[i]);
            for (int j = 0; j < States.Count; j++)
            {
                values[j][i] = stateVector[j];
            }
        }

        UltiDraw.DrawGUIFunctions(0.5f * Vector2.one, Vector2.one, values, 0f, 1f, UltiDraw.DarkGrey, UltiDraw.GetRainbowColors(States.Count));

        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;
        }
    }
Example #8
0
    private void DrawControlPoint(float x, float y, float width, float height, Queue <float> values, Color color)
    {
        int   _index = 0;
        float _x     = 0f;
        float _xPrev = 0f;
        float _y     = 0f;
        float _yPrev = 0f;

        foreach (float value in values)
        {
            _x = x + (float)(_index) / (float)(Frames - 1) * width;
            _y = y - height + value * height;
            if (_index > 0)
            {
                UltiDraw.DrawGUILine(
                    new Vector2(_xPrev, _yPrev),
                    new Vector2(_x, _y),
                    0.002f,
                    color
                    );
            }
            _xPrev  = _x;
            _yPrev  = _y;
            _index += 1;
        }
    }
    protected override void OnRenderObjectDerived()
    {
        RootSeries.DrawScene    = DrawDebug;
        StyleSeries.DrawScene   = DrawDebug;
        DribbleSeries.DrawScene = DrawDebug;
        ContactSeries.DrawScene = DrawDebug;
        PhaseSeries.DrawScene   = DrawDebug;
        RootSeries.Draw(GetCamera());
        StyleSeries.Draw(GetCamera());
        DribbleSeries.Draw(GetCamera());
        ContactSeries.Draw(GetCamera());
        PhaseSeries.Draw(GetCamera());
        if (DrawDebug)
        {
            if (Carrier && Controller.QueryLogic("Hold") && !Controller.QueryLogic("Move"))
            {
                UltiDraw.Begin();
                int resolution = 100;
                for (int i = 0; i < resolution; i++)
                {
                    Vector3 target = ToHoldTarget(Quaternion.AngleAxis(360f * (float)i / (float)resolution, Vector3.up) * Vector3.forward);
                    UltiDraw.DrawSphere(target.GetRelativePositionFrom(transform.GetWorldMatrix(true)), Quaternion.identity, 0.05f, Color.cyan);
                }
                UltiDraw.DrawSphere(ToHoldTarget(Controller.QueryRightJoystickVector()).GetRelativePositionFrom(transform.GetWorldMatrix(true)), Quaternion.identity, 0.1f, Color.black);
                UltiDraw.End();
            }
        }

        //Debug Collider
        // UltiDraw.Begin();
        // UltiDraw.DrawWireCylinder(Collider.transform.position + new Vector3(0f, Collider.height/4f, 0f), Collider.transform.rotation, 2f*Collider.radius, Collider.height/2f, UltiDraw.Black);
        // UltiDraw.End();
    }
Example #10
0
 public void Sketch(Matrix4x4[] transformations, Color color)
 {
     if (Bones.Length == 0)
     {
         return;
     }
     UltiDraw.Begin();
     if (transformations.Length != Bones.Length)
     {
         for (int i = 0; i < transformations.Length; i++)
         {
             UltiDraw.DrawCube(transformations[i], 0.02f, color);
         }
     }
     else
     {
         Action <Bone> recursion = null;
         recursion = new Action <Bone>((bone) => {
             if (bone.GetParent() != null)
             {
                 UltiDraw.DrawLine(transformations[bone.GetParent().Index].GetPosition(), transformations[bone.Index].GetPosition(), color);
             }
             UltiDraw.DrawCube(transformations[bone.Index], 0.02f, color);
             for (int i = 0; i < bone.Childs.Length; i++)
             {
                 recursion(bone.GetChild(i));
             }
         });
         recursion(Bones[0]);
     }
     UltiDraw.End();
 }
Example #11
0
    protected override void DerivedDraw(MotionEditor editor)
    {
        UltiDraw.Begin();

        Color[] colors = UltiDraw.GetRainbowColors(Sensors.Length);
        if (ShowSensors)
        {
            for (int i = 0; i < Sensors.Length; i++)
            {
                for (int j = 0; j < Sensors[i].Bones.Length; j++)
                {
                    Quaternion rot = editor.GetActor().FindTransform(Sensors[i].GetBoneName(j)).rotation;
                    Vector3    pos = editor.GetActor().FindTransform(Sensors[i].GetBoneName(j)).position + rot * Sensors[i].Offset;
                    UltiDraw.DrawCube(pos, rot, 0.025f, UltiDraw.Black);
                    UltiDraw.DrawWireSphere(pos, rot, 2f * Sensors[i].Threshold, colors[i].Opacity(0.25f));
                    if (Sensors[i].GetContact(editor.GetCurrentFrame(), editor.Mirror) == 1f)
                    {
                        UltiDraw.DrawSphere(pos, rot, 2f * Sensors[i].Threshold, colors[i]);
                    }
                    else
                    {
                        UltiDraw.DrawSphere(pos, rot, 2f * Sensors[i].Threshold, colors[i].Opacity(0.125f));
                    }
                }
            }
        }

        UltiDraw.End();
    }
Example #12
0
 void OnRenderObject()
 {
     UltiDraw.Begin();
     if (Selected != null && Collider != null)
     {
         if (Collider is BoxCollider)
         {
             BoxCollider c = (BoxCollider)Collider;
             if (Input.GetKey(Translate))
             {
                 UltiDraw.DrawWiredCuboid(c.bounds.center, c.transform.rotation, Vector3.Scale(c.transform.lossyScale, c.size), UltiDraw.Black.Transparent(0.25f), UltiDraw.Purple);
                 UltiDraw.DrawTranslateGizmo(c.bounds.center, c.transform.rotation, c.size.magnitude);
             }
             if (Input.GetKey(Rotate))
             {
                 UltiDraw.DrawWiredCuboid(c.bounds.center, c.transform.rotation, Vector3.Scale(c.transform.lossyScale, c.size), UltiDraw.Black.Transparent(0.25f), UltiDraw.Purple);
                 UltiDraw.DrawRotateGizmo(c.bounds.center, c.transform.rotation, c.size.magnitude);
             }
         }
     }
     else
     {
         Collider collider = Utility.GetSelectedCollider();
         if (collider.gameObject == gameObject)
         {
             if (collider is BoxCollider)
             {
                 BoxCollider c = (BoxCollider)collider;
                 UltiDraw.DrawWireCuboid(c.bounds.center, c.transform.rotation, Vector3.Scale(c.transform.lossyScale, c.size), UltiDraw.Black.Transparent(0.5f));
             }
         }
     }
     UltiDraw.End();
 }
Example #13
0
        public void Draw(bool gui = true)
        {
            UltiDraw.Begin();

            if (gui)
            {
                List <float[]> functions = new List <float[]>();
                for (int i = 0; i < Actions.Length; i++)
                {
                    float[] function = new float[TimeSeries.Samples.Length];
                    for (int j = 0; j < function.Length; j++)
                    {
                        function[j] = Values[TimeSeries.Samples[j].Index][i];
                    }
                    functions.Add(function);
                }
                UltiDraw.DrawGUIFunctions(new Vector2(0.875f, 0.875f), new Vector2(0.2f, 0.1f), functions, 0f, 1f, 0.0025f, UltiDraw.DarkGrey, UltiDraw.GetRainbowColors(Actions.Length), 0.0025f, UltiDraw.Black);
                UltiDraw.DrawGUIRectangle(new Vector2(0.875f, 0.875f), new Vector2(0.005f, 0.1f), UltiDraw.White.Transparent(0.5f));
            }

            for (int i = 0; i < TimeSeries.KeyCount; i++)
            {
                // if(i == TimeSeries.KeyCount-1) {
                float     size           = Utility.Normalise((float)i / (float)(TimeSeries.KeyCount - 1), 0f, 1f, 0.5f, 1f);
                Matrix4x4 transformation = Transformations[TimeSeries.GetKey(i).Index];                         UltiDraw.DrawWiredSphere(transformation.GetPosition(), Quaternion.LookRotation(transformation.GetForward(), Vector3.up), size * 0.2f, UltiDraw.Magenta.Transparent(0.5f), UltiDraw.Black);
                UltiDraw.DrawTranslateGizmo(transformation.GetPosition(), Quaternion.LookRotation(transformation.GetForward(), Vector3.up), size * 0.4f);
                // }
            }
            UltiDraw.End();
        }
Example #14
0
    public void DrawSimple(Color color, Matrix4x4[] transformations)
    {
        UltiDraw.Begin();

        if (DrawSkeleton)
        {
            Action <Bone> recursion = null;
            recursion = new Action <Bone>((bone) => {
                if (bone.GetParent() != null)
                {
                    UltiDraw.DrawLine(transformations[bone.GetParent().Index].GetPosition(), transformations[bone.Index].GetPosition(), color);
                }
                UltiDraw.DrawCircle(transformations[bone.Index].GetPosition(), 0.02f, Color.Lerp(color, UltiDraw.Black, 0.25f));
                for (int i = 0; i < bone.Childs.Length; i++)
                {
                    recursion(bone.GetChild(i));
                }
            });
            if (Bones.Length > 0)
            {
                recursion(Bones[0]);
            }
        }

        UltiDraw.End();
    }
Example #15
0
    protected override void DerivedDraw(MotionEditor editor)
    {
        DepthMap sensor = GetDepthMap(editor.GetCurrentFrame(), editor.Mirror);

        sensor.Draw();
        if (ShowImage)
        {
            UltiDraw.Begin();
            UltiDraw.DrawGUIRectangle(Vector2.one / 2f, Vector2.one, UltiDraw.Mustard);
            Vector2 size = new Vector2(0.5f, 0.5f * Screen.width / Screen.height);
            for (int x = 0; x < sensor.GetResolution(); x++)
            {
                for (int y = 0; y < sensor.GetResolution(); y++)
                {
                    float distance  = Vector3.Distance(sensor.Points[sensor.GridToArray(x, y)], sensor.Pivot.GetPosition());
                    float intensity = 1f - distance / sensor.GetDistance();
                    UltiDraw.DrawGUIRectangle(
                        Vector2.one / 2f - size / 2f + new Vector2((float)x * size.x,
                                                                   (float)y * size.y) / (sensor.GetResolution() - 1),
                        size / (sensor.GetResolution() - 1),
                        Color.Lerp(Color.black, Color.white, intensity)
                        );
                }
            }
            UltiDraw.End();
        }
    }
Example #16
0
		void OnRenderObject() {
			if(Application.isPlaying) {
				if(NN.Parameters == null) {
					return;
				}

				if(ShowTrajectory) {
					UltiDraw.Begin();
					UltiDraw.DrawLine(Trajectory.Points[RootPointIndex].GetPosition(), Trajectory.Points[RootPointIndex].GetPosition() + TargetDirection, 0.05f, 0f, UltiDraw.Red.Transparent(0.75f));
					UltiDraw.DrawLine(Trajectory.Points[RootPointIndex].GetPosition(), Trajectory.Points[RootPointIndex].GetPosition() + TargetVelocity, 0.05f, 0f, UltiDraw.Green.Transparent(0.75f));
					UltiDraw.End();
					Trajectory.Draw(10);
				}

				if(ShowVelocities) {
					UltiDraw.Begin();
					for(int i=0; i<Actor.Bones.Length; i++) {
						UltiDraw.DrawArrow(
							Actor.Bones[i].Transform.position,
							Actor.Bones[i].Transform.position + Velocities[i],
							0.75f,
							0.0075f,
							0.05f,
							UltiDraw.Purple.Transparent(0.5f)
						);
					}
					UltiDraw.End();
				}

				UltiDraw.Begin();
				UltiDraw.DrawGUIHorizontalBar(new Vector2(0.5f, 0.74f), new Vector2(0.25f, 0.025f), UltiDraw.DarkGrey.Transparent(0.5f), 0.0025f, UltiDraw.Black, Trajectory.Points[RootPointIndex].GetVelocity().magnitude / 4f, UltiDraw.DarkGreen);
				UltiDraw.End();
			}
		}
Example #17
0
    void Draw()
    {
        UltiDraw.Begin();

        UltiDraw.SetCurvature(0f);
        UltiDraw.SetDepthRendering(false);
        UltiDraw.DrawWiredQuad(new Vector3(0f, 1.5f, 1f), Quaternion.identity, 4.25f, 4.25f, UltiDraw.DarkGrey, UltiDraw.White);

        UltiDraw.SetCurvature(0.5f);
        for (int i = 0; i < 5; i++)
        {
            UltiDraw.DrawWireSphere(new Vector3(0f, 1.5f, 0f), Quaternion.identity, i * 0.25f, UltiDraw.White);
        }

        UltiDraw.DrawSphere(new Vector3(0f, 1.5f, 0f), Quaternion.identity, 2.625f, UltiDraw.Grey.Transparent(0.5f));

        UltiDraw.DrawSphere(new Vector3(0f, 1.5f, 0f), Quaternion.identity, 1.95f, UltiDraw.Mustard.Transparent(0.5f));

        UltiDraw.DrawSphere(new Vector3(0f, 1.5f, 0f), Quaternion.identity, 1.125f, UltiDraw.Cyan);

        for (int i = 0; i < 10; i++)
        {
            UltiDraw.DrawWireCube(new Vector3(0f, 1.5f, 0f), Quaternion.Euler(0f, 0f, i * 36f + 45f), 1.5f, UltiDraw.White);
        }

        UltiDraw.End();
    }
Example #18
0
    public override void GUI(Camera canvas = null)
    {
        if (DrawGUI)
        {
            UltiDraw.Begin(canvas);
            UltiDraw.OnGUILabel(Rect.GetCenter() + new Vector2(Rect.W / 2f, Rect.H + 0.04f), Rect.ToScreen(new Vector2(1f, 0.25f)), 0.02f, "Phases", UltiDraw.Black);

            float xMin = Rect.X;
            float xMax = Rect.X + Rect.W;
            float yMin = Rect.Y;
            float yMax = Rect.Y + Rect.H;
            for (int b = 0; b < Bones.Length; b++)
            {
                float w        = (float)b / (float)(Bones.Length - 1);
                float vertical = w.Normalize(0f, 1f, yMax, yMin);
                float height   = 0.95f * (yMax - yMin) / (Bones.Length - 1);
                float border   = 0.025f * (yMax - yMin) / (Bones.Length - 1);
                if (!Active[b])
                {
                    UltiDraw.OnGUILabel(new Vector2(0.5f * (xMin + xMax), vertical), new Vector2(xMax - xMin, height), 0.015f, "Disabled", UltiDraw.White, UltiDraw.None);
                }
            }
            UltiDraw.End();
        }
    }
Example #19
0
    void Draw()
    {
        UltiDraw.Begin();

        UltiDraw.SetCurvature(0f);

        UltiDraw.DrawQuad(new Vector3(0f, 1f, 3f), Quaternion.identity, 10f, 10f, UltiDraw.DarkGrey);

        UltiDraw.SetCurvature(0.25f);

        UltiDraw.SetFilling(1f);
        UltiDraw.DrawCube(new Vector3(-2f, 1f, 2f), Quaternion.identity, 1f, UltiDraw.Cyan);

        UltiDraw.SetFilling(0f);
        UltiDraw.DrawCube(new Vector3(0f, 1f, 2f), Quaternion.identity, 1f, UltiDraw.Cyan);

        UltiDraw.SetFilling(1f);
        UltiDraw.DrawSphere(new Vector3(-2f, 1f, 0f), Quaternion.identity, 1f, UltiDraw.Cyan);

        UltiDraw.SetFilling(0f);
        UltiDraw.DrawSphere(new Vector3(0f, 1f, 0f), Quaternion.identity, 1f, UltiDraw.Cyan);

        UltiDraw.End();

        Gizmos.color = UltiDraw.Cyan;
        Gizmos.DrawCube(new Vector3(2f, 1f, 2f), Vector3.one);
        Gizmos.DrawSphere(new Vector3(2f, 1f, 0f), 0.5f);
    }
Example #20
0
    public void Draw(Color boneColor, Color jointColor, float alpha)
    {
        UltiDraw.Begin();
        if (DrawRoot)
        {
            UltiDraw.DrawTranslateGizmo(GetRoot().position, GetRoot().rotation, 0.1f);
            UltiDraw.DrawSphere(GetRoot().position, GetRoot().rotation, 0.025f, UltiDraw.Black);
            UltiDraw.DrawLine(Bones[0].Transform.position, GetRoot().position, UltiDraw.Mustard);
        }

        if (DrawSkeleton)
        {
            Action <Bone> recursion = null;
            recursion = new Action <Bone>((bone) => {
                if (bone.GetParent() != null)
                {
                    //if(bone.GetLength() > 0.05f) {
                    UltiDraw.DrawBone(
                        bone.GetParent().Transform.position,
                        Quaternion.FromToRotation(bone.GetParent().Transform.forward, bone.Transform.position - bone.GetParent().Transform.position) * bone.GetParent().Transform.rotation,
                        12.5f * BoneSize * bone.GetLength(), bone.GetLength(),
                        boneColor.Transparent(alpha)
                        );
                    //}
                }
                UltiDraw.DrawSphere(
                    bone.Transform.position,
                    Quaternion.identity,
                    5f / 8f * BoneSize,
                    jointColor.Transparent(alpha)
                    );
                for (int i = 0; i < bone.Childs.Length; i++)
                {
                    recursion(bone.GetChild(i));
                }
            });
            if (Bones.Length > 0)
            {
                recursion(Bones[0]);
            }
        }

        if (DrawTransforms)
        {
            Action <Bone> recursion = null;
            recursion = new Action <Bone>((bone) => {
                UltiDraw.DrawTranslateGizmo(bone.Transform.position, bone.Transform.rotation, 0.05f);
                for (int i = 0; i < bone.Childs.Length; i++)
                {
                    recursion(bone.GetChild(i));
                }
            });
            if (Bones.Length > 0)
            {
                recursion(Bones[0]);
            }
        }
        UltiDraw.End();
    }
Example #21
0
    public void Draw(Color boneColor, Color jointColor, float alpha)
    {
        UltiDraw.Begin();

        if (DrawSkeleton)
        {
            Action <Segment, Segment> recursion = null;
            recursion = new Action <Segment, Segment>((segment, parent) => {
                if (segment == null)
                {
                    return;
                }
                if (parent != null)
                {
                    UltiDraw.DrawSphere(
                        parent.GetTransformation().GetPosition(),
                        Quaternion.identity,
                        5f / 8f * BoneSize,
                        jointColor.Transparent(alpha)
                        );
                    float distance = Vector3.Distance(parent.GetTransformation().GetPosition(), segment.GetTransformation().GetPosition());
                    if (distance > 0.05f)
                    {
                        UltiDraw.DrawBone(
                            parent.GetTransformation().GetPosition(),
                            Quaternion.FromToRotation(parent.GetTransformation().GetForward(), segment.GetTransformation().GetPosition() - parent.GetTransformation().GetPosition()) * parent.GetTransformation().GetRotation(),
                            4f * BoneSize, distance,
                            boneColor.Transparent(alpha)
                            );
                    }
                }
                parent = segment;
                for (int i = 0; i < segment.GetChildCount(); i++)
                {
                    recursion(segment.GetChild(Hierarchy, i), parent);
                }
            });
            recursion(GetRoot(), null);
        }

        if (DrawTransforms)
        {
            Action <Segment> recursion = null;
            recursion = new Action <Segment>((segment) => {
                //UltiDraw.DrawArrow(segment.GetTransformation().GetPosition(), segment.GetTransformation().GetPosition() + 0.05f * (segment.GetTransformation().GetRotation() * Vector3.forward), 0.75f, 0.005f, 0.025f, Color.blue);
                //UltiDraw.DrawArrow(segment.GetTransformation().GetPosition(), segment.GetTransformation().GetPosition() + 0.05f * (segment.GetTransformation().GetRotation() * Vector3.up), 0.75f, 0.005f, 0.025f, Color.green);
                //UltiDraw.DrawArrow(segment.GetTransformation().GetPosition(), segment.GetTransformation().GetPosition() + 0.05f * (segment.GetTransformation().GetRotation() * Vector3.right), 0.75f, 0.005f, 0.025f, Color.red);
                UltiDraw.DrawTranslateGizmo(segment.GetTransformation().GetPosition(), segment.GetTransformation().GetRotation(), 0.05f);
                for (int i = 0; i < segment.GetChildCount(); i++)
                {
                    recursion(segment.GetChild(Hierarchy, i));
                }
            });
            recursion(GetRoot());
        }

        UltiDraw.End();
    }
Example #22
0
 public override void GUI(Camera canvas = null)
 {
     if (DrawGUI)
     {
         UltiDraw.Begin(canvas);
         UltiDraw.OnGUILabel(Rect.GetCenter() + new Vector2(0f, 0.13f), Rect.GetSize(), 0.0175f, "Contacts", UltiDraw.Black);
         UltiDraw.End();
     }
 }
 void OnDrawGizmos() // visualise the joint location
 {
     if (Visualise)
     {
         UltiDraw.Begin();
         UltiDraw.DrawSphere(transform.position, Quaternion.identity, 0.25f, UltiDraw.Cyan.Transparent(0.5f));
         UltiDraw.End();
     }
 }
Example #24
0
 void OnRenderObject()
 {
     UltiDraw.Begin();
     UltiDraw.DrawArrow(transform.position, parentJoint.position, 0.75f,
                        0.0075f,
                        0.05f,
                        UltiDraw.Purple.Transparent(0.5f));
     UltiDraw.End();
 }
Example #25
0
 void OnGUI()
 {
     if (Draw)
     {
         UltiDraw.Begin(Camera);
         UltiDraw.OnGUILabel(Rect.GetCenter() + new Vector2(0f, 0.175f), new Vector2(0f, 0.2f), 0.02f, "Expert Activation", Color.black);
         UltiDraw.End();
     }
 }
Example #26
0
    void OnRenderObject()
    {
        if (IsInvalid())
        {
            return;
        }

        if (HasChanged())
        {
            for (int i = 0; i < ControlPoints.Length; i++)
            {
                ControlPoints[i].position = Utility.ProjectGround(ControlPoints[i].position, LayerMask.GetMask("Ground"));
            }
            Create();
        }
        Trajectory.Draw(10);

        UltiDraw.Begin();
        if (Positions.Count > 1)
        {
            for (int i = 1; i < Positions.Count; i++)
            {
                UltiDraw.DrawLine(Positions[i - 1], Positions[i], 0.025f, UltiDraw.DarkGreen.Transparent(0.75f));
            }
        }
        UltiDraw.End();

        if (Visualise)
        {
            UltiDraw.Begin();
            for (int i = 10; i < Trajectory.Points.Length - 60; i += 10)
            {
                UltiDraw.DrawLine(Trajectory.Points[i - 10].GetPosition(), Trajectory.Points[i].GetPosition(), 0.075f, UltiDraw.Magenta);
            }
            //for(int i=0; i<ControlPoints.Length; i++) {
            //	UnityGL.DrawSphere(ControlPoints[i].position, 0.05f, Utility.Cyan.Transparent(0.75f));
            //}
            UltiDraw.End();
        }

        /*
         * Trajectory.Point pivot = GetClosestTrajectoryPoint(Target.transform.position);
         * Trajectory.Point[] future = GetFutureTrajectory(pivot);
         * UnityGL.Start();
         * UnityGL.DrawSphere(pivot.GetPosition(), 0.05f, Utility.DarkRed.Transparent(0.75f));
         * for(int i=0; i<future.Length; i++) {
         *      UnityGL.DrawSphere(future[i].GetPosition(), 0.025f, Utility.DarkGreen.Transparent(0.75f));
         * }
         * UnityGL.Finish();
         */

        for (int i = 0; i < ControlPoints.Length; i++)
        {
            ControlPoints[i].hasChanged = false;
        }
    }
Example #27
0
 public override void Draw(Camera canvas = null)
 {
     if (DrawGUI)
     {
         UltiDraw.Begin(canvas);
         UltiDraw.PlotFunctions(Rect.GetCenter(), Rect.GetSize(), Values, UltiDraw.Dimension.Y, yMin: 0f, yMax: 1f, thickness: 0.0025f);
         // UltiDraw.GUIRectangle(new Vector2(0.875f, 0.685f), new Vector2(0.005f, 0.1f), UltiDraw.White.Opacity(0.5f));
         UltiDraw.End();
     }
 }
    void OnDrawGizmos() // visualise the joint location
    {
        if (Visualise)
        {
            UltiDraw.Begin();
            UltiDraw.DrawSphere(transform.position, Quaternion.identity, 0.25f, UltiDraw.Purple.Transparent(0.5f));

            UltiDraw.DrawArrow(transform.position, transform.position + (directionToCheck.normalized * distanceToCheck), 0.8f, 0.02f, 0.1f, UltiDraw.Cyan.Transparent(0.5f));
            UltiDraw.End();
        }
    }
    void OnDrawGizmos()
    {
        if (Visualise)
        {
            UltiDraw.Begin();
            UltiDraw.DrawSphere(transform.position, Quaternion.identity, 0.25f, UltiDraw.Cyan.Transparent(0.5f));

            UltiDraw.DrawArrow(GetPivotPosition(), GetPivotPosition() + 0.25f * (transform.rotation), 0.8f, 0.02f, 0.1f, UltiDraw.Cyan.Transparent(0.5f));
            UltiDraw.End();
        }
    }
Example #30
0
 public void Draw()
 {
     UltiDraw.Begin();
     UltiDraw.DrawTranslateGizmo(Pivot.GetPosition(), Pivot.GetRotation(), 0.1f);
     for (int i = 0; i < Points.Length; i++)
     {
         UltiDraw.DrawLine(Pivot.GetPosition(), Points[i], UltiDraw.DarkGreen.Transparent(0.1f));
         UltiDraw.DrawCircle(Points[i], 0.025f, UltiDraw.Orange.Transparent(0.5f));
     }
     UltiDraw.End();
 }