Esempio n. 1
0
	static void RenderGizmo (LegController legC, GizmoType gizmoType) {
		if (Application.isPlaying || AnimationUtility.InAnimationMode())
			return;
		
		Vector3 up = legC.transform.up;
		Vector3 forward = legC.transform.forward;
		Vector3 right = legC.transform.right;
		
		// Draw cross signifying the Ground Plane Height
		Vector3 groundCenter = (
			legC.transform.position
				+ legC.groundPlaneHeight * up * legC.transform.lossyScale.y
		);
		Gizmos.color = (Color.green+Color.white)/2;
		Gizmos.DrawLine(groundCenter-forward, groundCenter+forward);
		Gizmos.DrawLine(groundCenter-right, groundCenter+right);
		
		// Draw rect showing foot boundaries
		if (legC.groundedPose==null) return;
		float scale = legC.transform.lossyScale.z;
		for (int leg=0; leg<legC.legs.Length; leg++) {
			if (legC.legs[leg].ankle==null) continue;
			if (legC.legs[leg].toe==null) continue;
			if (legC.legs[leg].footLength+legC.legs[leg].footWidth==0) continue;
			legC.InitFootData(leg);
			Vector3 heel = legC.legs[leg].ankle.TransformPoint(legC.legs[leg].ankleHeelVector);
			Vector3 toetip = legC.legs[leg].toe.TransformPoint(legC.legs[leg].toeToetipVector);
			Vector3 side = (Quaternion.AngleAxis(90,up) * (toetip-heel)).normalized * legC.legs[leg].footWidth * scale;
			Gizmos.DrawLine(heel+side/2, toetip+side/2);
			Gizmos.DrawLine(heel-side/2, toetip-side/2);
			Gizmos.DrawLine(heel-side/2, heel+side/2);
			Gizmos.DrawLine(toetip-side/2, toetip+side/2);
		}
	}
Esempio n. 2
0
    void OnSceneGUI()
    {
        if (Application.isPlaying || AnimationUtility.InAnimationMode())
        {
            return;
        }

        Vector3 up      = lc.transform.up;
        Vector3 forward = lc.transform.forward;
        Vector3 right   = lc.transform.right;

        // Draw cross signifying the Ground Plane Height
        Vector3 groundCenter = (
            lc.transform.position
            + lc.groundPlaneHeight * up * lc.transform.lossyScale.y
            );

        Handles.color = (Color.green + Color.white) / 2;
        Handles.DrawLine(groundCenter - forward, groundCenter + forward);
        Handles.DrawLine(groundCenter - right, groundCenter + right);

        // Draw rect showing foot boundaries
        if (lc.groundedPose == null)
        {
            return;
        }
        float scale = lc.transform.lossyScale.z;

        for (int leg = 0; leg < lc.legs.Length; leg++)
        {
            if (lc.legs[leg].ankle == null)
            {
                continue;
            }
            if (lc.legs[leg].toe == null)
            {
                continue;
            }
            if (lc.legs[leg].footLength + lc.legs[leg].footWidth == 0)
            {
                continue;
            }
            lc.InitFootData(leg);             // Note: Samples animation
            Vector3 heel   = lc.legs[leg].ankle.TransformPoint(lc.legs[leg].ankleHeelVector);
            Vector3 toetip = lc.legs[leg].toe.TransformPoint(lc.legs[leg].toeToetipVector);
            Vector3 side   = (Quaternion.AngleAxis(90, up) * (toetip - heel)).normalized * lc.legs[leg].footWidth * scale;
            Handles.DrawLine(heel + side / 2, toetip + side / 2);
            Handles.DrawLine(heel - side / 2, toetip - side / 2);
            Handles.DrawLine(heel - side / 2, heel + side / 2);
            Handles.DrawLine(toetip - side / 2, toetip + side / 2);
        }
    }