- Added Quick Mirror, Mirror Selected Part, and a new Mirror Tool to help simplify building aircraft.
- Added a Light part and a Beacon Light part
- Added a new quality setting "Quality->Craft->Max Craft Lights" to limit the number of active lights at any given time. Lights can be costly to performance, so this can be used to reduce the impact. Priority is give to the most recently activated lights.
- Added a new quality setting "Quality->Shadows->Craft Lights Cast Shadows" to enable/disable shadow casting by craft lights. Shadows are very costly to performance, so we recommend turning this off unless your device can handle it well.
- In flight, a right mouse click on a part toggles that part's activation state and a middle mouse click on a part toggles camera focus on that part.
- Reorganized the Gizmos part category in the designer
- Performance enhancements to drag calculations.
- Changed tooltip wording from "Build a new craft" to "Build Craft"
- Removed "AutoDiscrete" from wing/fin input options.
- Fixed position of battery status bar.
- Fixed a bug that could break the designer if the player tried to undo while dragging parts in the designer.
- Fixed a bug where duplicated part groups were grouped after being duplicated.
- Fixed a bug where a craft in the rocket configuration would not respond to roll input if auto-pilot was enabled.
- Fixed some rendering inefficiencies with some parts.
- Fixed issue which could cause wheels to bounce up after being loaded.
- Fixed a bug with the electric motor that caused a warning to be logged when loading the craft in flight.
- Fixed bug where switching command pods would not always update the nav-sphere's heading properly.
- Fixed issue in designer where pilot orientation UI elements would remain even after Command Pod's header is collapsed.
- Fixed a bug in air pressure calculations for planets with atmospheres (Droo was correct and remains unchanged).
- Fixed bug which could cause a stack overflow when adjusting maneuver nodes for orbits w/very low orbital speed.
- Fixed a bug that would log messages about missing part groups during drag calculations when there were no parts in a body that were configured to apply drag.
- Fixed a bug introduced in a previous release that impacted the performance of rendering water with transparency from a large distance.
- Fixed a rendering issue with a horizontal line showing up across the game view in some circumstances.
- Fixed a bug with solar panels not being sized correctly on craft in the main menu.
- Fixed incorrect abbreviation for Gigameters from gm to Gm.
- Fixed an issue where inlets would briefly report incorrect occlusion after the craft's structure changed.
- Fixed issue with text wrapping inside dropdown lists.
- Fixed issue where redundant CenterOfMass/CameraTarget GameObjects are created when crafts dock.
- Fixed bug in designer where auto control surface assignment text would not always update when the wing changed.
- Fixed bug which would cause landing gear bay doors to not always close completely.
- Fixed a bug with the sun flare shining through certain parts.
- Added wattsPerThrustPower to the Propulsion.xml so engines can use electricity proportional to their thrust power. Allows negative values so engines can become generators.
- Added a Snapshot Part Rotation setting to allow rotating the part during part icon screenshots.
- Updated the designer part property spinner to properly handle subsets of enumerations
- Allow engines that support deactivation to be shut off when throttle is set to 0, even if they have a non-zero minThrottle setting.
- May be added to any part
- Properties: color, intensity, lightType (Point/Spot), mask (Default/Square1), offsetX, offsetY, offsetZ, rotationX, rotationY, rotationZ, partGlow (true/false), partGlowSelfShadowCasting (true/false), range (distance in meters), spotLightAngle (degrees).
- Supported InputControllers: LightRange, LightAngle, LightItensity
- Only supported on the new light part.
- Properties: extension (distance in meters), hideBase (true/false), powerConsumptionScale (multiplier to power consumption), range (distance in meters), intensity, rotation (degrees), spotLightAngle (degrees)
- Supported InputControllers: LightRotation, LightExtension
- May be added to any part.
- Properties: blinkFrequency, blinkOffset, blinkStyle (Steady / Blink / LongBlink / ShortBlink / DoubleBlink / Pulse / Custom), hideBase (true/false), intensity, powerConsumptionScale (multiplier to power consumption)
- When the blinkStyle is set to 'Custom', the modifier uses a user defined curve (explained below) to determine how the light should blink. These attributes are all prefixed with 'blinkCurve' (for example 'blinkCurveStyle', blinkCurveFrequency, etc.)
- Supported InputControllers: BeaconLightIntensity, BeaconLightBlinkFrequency
User Defined Curves
- A few modifiers can now make use of user defined curves. These are defined with a common set of attributes, prefixed with a name specific to their use. For example, the BeaconLight modifier supports custom curves with attributes like 'blinkCurveStyle, 'blinkCurveFrequency', etc.
- Properties: Style, Frequency, Amplitude, WrapMode, Keyframes
- Style: Constant - The curve retains a constant value between two keys.
- Style: Linear - The tangent points towards the neighboring key.
- Style: Smooth - The tangents are automatically set to make the curve go smoothly through the key and prevent overshooting.
- Style: SmoothUnclamped - The tangents are automatically set to make the curve go smoothly through the key.
- Style: Custom - The tangents are manually set.
- WrapMode: Clamp - The curve will be clamped to the beginning and end positions, never extending beyond those times.
- WrapMode: Loop - The curve will loop back to the beginning of the curve when it reaches the end.
- WrapMode: PingPong - The curve will ping pong back and forth between the beginning of the curve and end of the curve.
- Keyframes: This is a string of values that defines a set of keyframes that make up the curve. Values are separated by a comma character "," and keyframes are separated by a vertical bar character "|". Keyframes should consist of a floating point time value and a floating point result value. If the style is set to 'Custom', two more values are used to define a keyframe: the in-tangent value and out-tangent value. An example of a keyframe set may look like this: blinkCurveKeyframes="0,0|0.5,1|1,0"
- May be added to any part.
- Uses a user defined curve (with no prefix for xml attributes) taking elapsed time as an input and generating at output value that can be used as the input to an InputController. The script implements IInputControllerInput.
- Properties: [user defined curve attributes with no prefix "Frequency", "Amplitude", etc], ignorePartActivationState (logic runs even if part is not active), offset (initial time offset for the curve), updateInWarp (true/false), useUnscaledTime (true/false)
- Supported InputControllers: CurveInputFrequency, CurveInputEnabled,
- InputControllers have been updated to support evaluating the output with a user defined curve (as described above), with the input's axis value treated as the 'time' input to the curve. The 'type' of the InputController should be set to "Curve" and the curve properties are all prefixed with "outputCurve" (for example: outputCurveStyle, outputCurveFrequency, etc).
- InputControllers now implement IInputControllerInput to make it easier to use an InputController as the input to an InputController.
Some changes have been made to the way part modifiers are selected as the inputs.
Format for referencing part modifiers:
- May be omitted to select the current part (must start with '.')
- May be '*' for legacy style of searching entire craft for a modifier id (specified by modifier selector)
- Matches part based on exact part name. If the part belongs to a group, the connected group parts will be searched first.
- First tries to match a modifier based on the modifier's 'id' property.
- If no match is found, it tries to match based on the modifier's type id (InputController, Piston, Gyroscope, etc)
- If specified, it will match the part modifier data object
- If omitted, it will match the part modifier's script
- Required (unless the target modifier implements the IInputControllerInput interface)
- Matches the name of a public float/double/bool property on the target object.
- Terrain splatmaps should always be regenerated when loading a planet
- The directional light can now be rotated via the TFGH keys (hold shift to increase speed).
- Tweaked the part shader to clamp the color prior to applying emissive colors. This keeps the specular highlights in a reasonable range like the previous clamping was doing, while still allowing emissiveness to get to crazy high values if desired.