NWH Common
Search Results for

    Upgrade Notes

    14.2 beta to 14.3.0

    Package dependencies

    The com.unity.burst dependency is gone from every NWH package manifest. No NWH code used it. If a project relied on Burst arriving through an NWH package, add it to the project manifest directly.

    com.unity.render-pipelines.universal is still a hard dependency of NWH Common, and through Common of every other NWH package. This is deliberate: Settings/URP ships outside Samples~, so those pipeline assets are always imported and cannot be deserialized without URP in the project. The dependency does not force a project onto URP - the assets simply have to be loadable. To move demo content to the Built-in pipeline, use Tools > NWH > Convert Folder URP to Built-in.

    Coordinated dependency versions

    Install NWH Common 14.3.0 together with NWH Aerodynamics 14.3.0 and Dynamic Water Physics UPM 14.3.0. The Aerodynamics and Dynamic Water Physics manifests pin Common exactly to 14.3.0; mixing either package with the beta Common assembly is unsupported and can leave required vehicle input APIs unavailable.

    Deterministic Input System wrappers

    Shipped Input Actions wrappers no longer regenerate during package import. This keeps package-cache contents deterministic across supported Input System versions. When maintaining a writable embedded package, explicitly enable Generate C# Class, regenerate and review the wrapper, then disable it again before publishing. Project-specific binding changes should use runtime rebinding or a project-owned action asset/provider.

    VariableCenterOfMass compatibility

    VariableCenterOfMass.UpdateInertia(bool) is restored as an obsolete compatibility overload. Its boolean argument was never used, so it forwards to UpdateInertia().

    The two inertia-offset methods intentionally have different contracts:

    • CalculateInertiaTensorOffset(Vector3) is obsolete and preserves the beta implementation, including its ignored argument and mass-squared result. It exists so already compiled or source-upgraded integrations do not silently change their physics.
    • CalculateCompositeInertiaTensorOffset(Vector3 centerOfMassLocal) is the explicit corrected API. It applies the parallel-axis theorem about the supplied combined local center of mass.

    New and migrated code should call the composite method explicitly. Re-test vehicle roll, pitch, and yaw response after opting into the corrected calculation.

    Vehicle caches and shared input

    Vehicle.localAcceleration now comes from the world-velocity difference transformed into local axes. This retains the lateral acceleration of a vehicle in a steady turn; telemetry or control logic based on the old transport-term artifact may need retuning.

    Call Vehicle.ResetVelocityCache() immediately after teleporting or externally relocating a vehicle Rigidbody. The method re-seeds velocity state so the next fixed update does not report a one-frame acceleration spike. Re-enabling a Vehicle invokes it automatically.

    Custom vehicle controllers that poll global input providers should gate that polling with CanUseAutomaticInput. Override OnAutomaticInputAvailabilityChanged(bool) when cached controls must be cleared as soon as VehicleChanger selection or multiplayer ownership changes.

    Vehicle.Awake() now changes Rigidbody interpolation from None to Interpolate, but preserves an authored Extrapolate setting used by networking integrations.

    Packaging

    The package no longer ships any markdown. Readme.md is now Readme.txt, and the test assemblies have been moved out of the package, so nothing test-related lands in a project.

    13.x to 14.3.0

    Several members that were removed or renamed in 14.0 are back, so 13.x code compiles and behaves as it did. They are obsolete: they exist to get a project building again, not to be used in new code.

    Vehicle

    LocalVelocity, LocalForwardVelocity, LocalAcceleration and LocalForwardAcceleration are obsolete get-only shims over the lowercase fields that replaced them.

    LocalAcceleration returns the same number as localAcceleration, which is measured in a different frame than the 13.x property. Anything tuned against the old value needs re-checking, not just renaming.

    InputProvider

    InputProvider.InstanceCount is a protected read-only property over Instances. In 13.x it was a protected static field, so custom providers that read it compile again.

    VariableCenterOfMass

    FixedUpdate watches centerOfMass, inertiaTensor and baseMass for direct writes, so 13.x code that assigns them without calling MarkDirty() still works. MarkDirty() is still the right call after adding or removing a mass affector.

    RigidbodyFPSController

    The demo controller pitches its own transform when the Camera sits on the same GameObject, which is the 13.x prefab layout. Movement is taken from the yaw alone, so looking up or down no longer scales walk speed or drives the capsule into the floor. 14.0 pitched only a child camera, which silently lost vertical look on the older layout.

    NUIDrawer

    GetTabIndex falls back to the unscoped preference key when the drawer has no per-target-type entry. That is the key SetTabIndex and pre-14.0 drawers write, so the static setter works again on a tab the user has not yet clicked.

    Camera zoom

    Input System camera zoom is scaled on the mouse-scroll binding rather than in the provider. Without it one scroll notch crossed the whole min-to-max distance range. A project that copied the action asset out of 14.0 or 14.2 and rebound it needs the Scale(factor=0.01) processor on the mouse binding.

    In this article
    Back to top Copyright © NWH - Vehicle Physics, Aerodynamics, Dynamic Water Physics