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; }
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); } } }
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); } } }
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); }