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.