Пример #1
0
    public static void ImplementConfigValues(ref WheelCollider wheelCollider, WheelConfig wheelConfig)
    {
        wheelCollider.radius             = wheelConfig.radius;
        wheelCollider.wheelDampingRate   = wheelConfig.wheelDampingRate;
        wheelCollider.suspensionDistance = wheelConfig.suspensionDistance;
        wheelCollider.center             = wheelConfig.center;

        JointSpring suspensionSpring = new JointSpring();

        suspensionSpring.spring         = wheelConfig.spring;
        suspensionSpring.damper         = wheelConfig.damper;
        suspensionSpring.targetPosition = 0;
        wheelCollider.suspensionSpring  = suspensionSpring;

        WheelFrictionCurve forwardFriction = new WheelFrictionCurve();

        forwardFriction.extremumSlip   = 0.4f;
        forwardFriction.extremumValue  = 1.0f;
        forwardFriction.asymptoteSlip  = 0.8f;
        forwardFriction.asymptoteValue = 0.5f;
        forwardFriction.stiffness      = wheelConfig.stiffness;
        wheelCollider.forwardFriction  = forwardFriction;

        WheelFrictionCurve sidewaysFriction = new WheelFrictionCurve();

        sidewaysFriction.extremumSlip   = 0.2f;
        sidewaysFriction.extremumValue  = 1.0f;
        sidewaysFriction.asymptoteSlip  = 0.5f;
        sidewaysFriction.asymptoteValue = 0.75f;
        sidewaysFriction.stiffness      = wheelConfig.stiffness;
        wheelCollider.sidewaysFriction  = sidewaysFriction;
    }
Пример #2
0
    public void SetupWheelConfigs()
    {
        wheelConfigs.Clear();

        // Locate all the wheels.
        if (vehicleBody)
        {
            foreach (var wheel in vehicleBody.GetComponentsInChildren <WheelCollider>())
            {
                var wheelConfig = new WheelConfig();
                wheelConfig.visible  = true;
                wheelConfig.collider = wheel;

                wheelConfigs.Add(wheelConfig);
            }
        }
    }
Пример #3
0
    public override void OnInspectorGUI()
    {
        ColorGradeConfig config = (ColorGradeConfig)target;

        if (this.m_ColorWheel == null)
        {
            this.m_ColorWheel = AssetDatabase.LoadAssetAtPath <Texture>("Assets/ColorGrade/Editor/colorwheel_150.png");
        }
        if (this.m_ColorWheelMarker == null)
        {
            this.m_ColorWheelMarker = AssetDatabase.LoadAssetAtPath <Texture>("Assets/ColorGrade/Editor/colorwheel_marker.png");
        }
        if (this.m_Shadow == null)
        {
            this.m_Shadow = new WheelConfig();
        }
        this.m_Shadow.setColor(config._Shadows);
        if (this.m_Midtone == null)
        {
            this.m_Midtone = new WheelConfig();
        }
        this.m_Midtone.setColor(config._Midtones);
        if (this.m_Highlight == null)
        {
            this.m_Highlight = new WheelConfig();
        }
        this.m_Highlight.setColor(config._Hilights);
        EditorGUILayout.BeginHorizontal();

        bool updated = false;

        updated |= DrawWheelHSV(this.m_Shadow);
        updated |= DrawWheelHSV(this.m_Midtone);
        updated |= DrawWheelHSV(this.m_Highlight);

        EditorGUILayout.EndHorizontal();

        if (Event.current.type == EventType.Repaint && this.m_PendingClick)
        {
            this.m_PendingClick = false;
        }

        if (
            (Event.current.button == 0) &&
            (
                Event.current.type == EventType.MouseDown || Event.current.type == EventType.MouseDrag
            )
            )
        {
            this.m_PendingClick  = true;
            this.m_ClickPosition = Event.current.mousePosition;
            Repaint();
        }

        ColorGradeConfig wasSyncedConfig = SYNCED_CONFIG;
        bool             wasSynced       = (config == SYNCED_CONFIG);
        bool             synced          = EditorGUILayout.Toggle("Preview Main Camera", wasSynced);

        if (wasSynced != synced)
        {
            if (synced)
            {
                SYNCED_CONFIG = config;
                updated       = true;
            }
            if (!synced && wasSynced && wasSyncedConfig == config)
            {
                SYNCED_CONFIG = null;
                setMainCamera(null);
            }
        }

        if (updated)
        {
            config._Shadows  = this.m_Shadow.color;
            config._Midtones = this.m_Midtone.color;
            config._Hilights = this.m_Highlight.color;

            if (SYNCED_CONFIG == config)
            {
                setMainCamera(config);
            }
        }
    }
Пример #4
0
    private bool DrawWheelHSV(WheelConfig config)
    {
        bool updated = false;

        EditorGUILayout.BeginVertical();
        GUILayout.Label(this.m_ColorWheel, GUIStyle.none, GUILayout.Width(80), GUILayout.Height(80));

        if (Event.current.type == EventType.Repaint && config.wheelTopLeft == Vector2.zero)
        {
            config.wheelTopLeft = new Vector2(
                GUILayoutUtility.GetLastRect().x,
                GUILayoutUtility.GetLastRect().y
                );
        }

        if (Event.current.type == EventType.Repaint && this.m_PendingClick)
        {
            Vector2 center     = new Vector2(WheelConfig.IMAGE_RADIUS, WheelConfig.IMAGE_RADIUS);
            Vector2 mouseClick = this.m_ClickPosition - config.wheelTopLeft - center;
            if (mouseClick.magnitude < WheelConfig.COLOR_RADIUS)
            {
                mouseClick = Vector2.ClampMagnitude(mouseClick, WheelConfig.COLOR_RADIUS);

                float dist  = (mouseClick).magnitude / WheelConfig.COLOR_RADIUS;
                float theta = Mathf.Atan2(-mouseClick.y, mouseClick.x);
                float h     = 0;
                if (theta > 0)
                {
                    h = theta;
                    h = h / (2 * Mathf.PI);
                }
                else
                {
                    h = 2 * Mathf.PI + theta;
                    h = h / (2 * Mathf.PI);
                }

                config.setHueSat(h, dist);
                updated = true;
            }
        }
        Vector2 markerPosition = config.getMarkerPosition();

        GUI.Label(
            new Rect(markerPosition.x - 5, markerPosition.y - 5, 10, 10),
            this.m_ColorWheelMarker
            );
        GUI.enabled = false;
        EditorGUILayout.ColorField(config.color);
        GUI.enabled = true;         // to make color field readonly
        EditorGUIUtility.fieldWidth = 25;
        float origLevels = config.getLevel();

        config.setLevel(EditorGUILayout.Slider(config.getLevel(), -100, 100));
        if (config.getLevel() != origLevels)
        {
            updated = true;
        }
        if (GUILayout.Button("Reset"))
        {
            config.reset();
            updated = true;
        }
        EditorGUILayout.EndVertical();
        return(updated);
    }