Пример #1
0
    public override void OnInspectorGUI()
    {
        DragTrack_Hinge _target = (DragTrack_Hinge)target;

        EditorGUILayout.BeginVertical("Button");
        EditorGUILayout.LabelField("Track shape:", EditorStyles.boldLabel);

        _target.radius = EditorGUILayout.FloatField("Radius:", _target.radius);

        _target.doLoop = EditorGUILayout.Toggle("Is looped?", _target.doLoop);
        if (!_target.doLoop)
        {
            _target.maxAngle = EditorGUILayout.FloatField("Maximum angle:", _target.maxAngle);

            if (_target.maxAngle > 360f)
            {
                _target.maxAngle = 360f;
            }
        }
        else
        {
            _target.limitRevolutions = EditorGUILayout.Toggle("Limit no. of revolutions?", _target.limitRevolutions);
            if (_target.limitRevolutions)
            {
                _target.maxRevolutions = EditorGUILayout.IntField("Max no. of revolutions:", _target.maxRevolutions);
            }
        }

        _target.alignDragToFront = EditorGUILayout.Toggle("Align drag vector to front?", _target.alignDragToFront);

        EditorGUILayout.EndVertical();

        SharedGUI(false);
    }
Пример #2
0
    public void OnSceneGUI()
    {
        DragTrack_Hinge _target = (DragTrack_Hinge)target;

        float _angle = _target.maxAngle;

        if (_target.doLoop)
        {
            _angle = 360f;
        }

        Handles.color = Color.gray;
        Vector3 startPosition = _target.transform.position + (_target.radius * _target.transform.right);

        Handles.DrawSolidDisc(startPosition, _target.transform.up, _target.discSize);

        Transform  t = _target.transform;
        Vector3    originalPosition = _target.transform.position;
        Quaternion originalRotation = _target.transform.rotation;

        t.position = startPosition;
        t.RotateAround(originalPosition, _target.transform.forward, _angle);

        Handles.color = Color.white;
        Handles.DrawSolidDisc(t.position, t.up, _target.discSize);

        _target.transform.position = originalPosition;
        _target.transform.rotation = originalRotation;

        Handles.color = Color.white;
        Handles.DrawWireArc(_target.transform.position, _target.transform.forward, _target.transform.right, _angle, _target.radius);
    }