Changelog
[1.0.16] - 2023-09-11
Changed
- Updated Burst dependency to version 1.8.8
- Updated com.unity.physics version to 1.0.16
[1.0.14] - 2023-07-27
Changed
- Updated Burst dependency to version 1.8.7
- Updated com.unity.physics version to 1.0.14
[1.0.11] - 2023-06-19
Changed
- Updated com.unity.physics version to 1.0.11
[1.0.10] - 2023-05-23
Changed
- Updated com.unity.physics version to 1.0.10
[1.0.8] - 2023-04-17
Changed
- Updated Burst version to 1.8.4
Removed
- Depedency on com.unity.test-framework
Fixed
- Outdated licensing information for Havok Physics package
[1.0.0-pre.65] - 2023-03-21
Changed
- Updated Burst version in use to 1.8.3
Fixed
- The Havok Visual Debugger (VDB) does not work on 12th Gen and later Intel® Core™ devices.
[1.0.0-pre.44] - 2023-02-13
Added
- Setting added in editor preferences for logging of Havok Plugin build version after editor startup and after every domain reload.
Fixed
- Fixed stability issues with rotational motor around normalized angle of (175-180] degrees.
- Fixed stability issues when RotationMotor Constraint is not followed by Angular Constraint that locks the remaining 2 angular axes.
- Fixed the slowness of linear position motor to reach the target position (even with high MaxImpulse).
- Fixed Havok stalling in certain scenarios due to threads locking each other.
[1.0.0-pre.15] - 2022-11-16
Upgrade guide
- See upgrade guide and changelog for Unity.Physics
Added
- With Havok Physics installed, the newly added
SimulationSingleton
has extension methods that allow you to:- Use
AsHavokSimulation()
to get the storedHavokSimulation
. - Use
InitializeFromHavokSimulation(ref HavokSimulation)
if you need to create it fromHavokSimulation
. > Note - Physics engine internally manages oneSimulationSingleton
, so be careful if usingSetSingleton<>()
with the newly createdSimulationSingleton
, as it can override the one stored by the engine. You should be using this method if you are managing a local simulation and need a singleton to use events and simulation modification API.
- Use
- Support for motorized joints (motors): linear position, linear velocity, rotational, angular velocity. For details, please read the Unity Physics documentation.
[CreateBefore(typeof(BroadphaseSystem))]
and[CreateBefore(typeof(HavokBroadphaseSystem))]
forPhysicsSimulationPickerSystem
withinHavokPhysicsSimulationSystems.cs
script file.
Changed
- Havok native plugin is now based on 2021.2 version of Havok SDK.
- Removed use of the obsolete AlwaysUpdateSystem attribute. The new RequireMatchingQueriesForUpdate attribute has been added where appropriate.
SimulationContext.Reset(ref PhysicsWorld world, UnityEngine.Camera camera)
no longer takes in aCamera
parameter. The new signature isSimulationContext.Reset(ref PhysicsWorld)
.HavokSimulation
is now astruct
instead of aclass
.HavokSimulation.ScheduleStepJobs(SimulationStepInput input, SimulationCallbacks callbacksIn, JobHandle inputDeps, bool multiThreaded = true)
signature has changed toHavokSimulation.ScheduleStepJobs(SimulationStepInput input, JobHandle inputDeps, bool multiThreaded = true)
(SimulationCallbacks
got removed).HavokSimulation
has new methods that enable stepping the simulation on a granularity of individual simulation phases:HavokSimulation.ScheduleBroadphaseJobs(SimulationStepInput input, JobHandle inputDeps, bool multiThreaded = true)
HavokSimulation.ScheduleNarrowphaseJobs(SimulationStepInput input, JobHandle inputDeps, bool multiThreaded = true)
HavokSimulation.ScheduleCreateJacobiansJobs(SimulationStepInput input, JobHandle inputDeps, bool multiThreaded = true)
HavokSimulation.ScheduleSolveAndIntegrateJobs(SimulationStepInput input, JobHandle inputDeps, bool multiThreaded = true)
Removed
- Removed package dependency on 'com.unity.jobs'
Known Issues
- Rotational motor does not behave correctly when normalized angle is in (175, 180] or [-180, -175) degrees range. Input angle is normalized to always be in range [-180, 180] degrees (for example, 365 degrees is converted into 5 degrees and 355 degrees is converted into -5 degrees).
- RotationMotor Constraint is not stable when it's not followed by Angular Constraint that locks the remaining 2 angular axes (see Constraint.Hinge(0)). It is advised to create rotational motors via PhysicsJoint.CreateRotationalMotor().
- Linear position motor usually takes longer than 0.5 sec to reach the target position, even with very high MaxImpulse values.
- Linear velocity motor created via PhysicsJoint.CreateLinearVelocityMotor() does not lock the 2 linear axes that are not driven. If you need a prismatic velocity motor when using Havok Physics, it is advised to create a PhysicsJoint that contains 3 Constraints: Constraint.LinearVelocityMotor, Constraint.FixedAngle and Constraint.Cylindrical (please see PhysicsJoint.CreateLinearVelocityMotor() and PhysicsJoint.CreatePositionMotor() for reference).
[0.51.1] - 2022-06-27
Changed
- Package Dependencies
com.unity.entities
to version0.51.1
com.unity.physics
to version0.51.1
com.unity.collections
to version1.4.0
[0.51.0] - 2022-05-04
Changed
- Package Dependencies
com.unity.burst
to version1.6.6
com.unity.entities
to version0.51.0
com.unity.mathematics
to version1.2.6
com.unity.physics
to version0.51.0
com.unity.collections
to version1.3.1
[0.50.0] - 2021-09-17
Changed
- Upgraded com.unity.burst to 1.5.5
[0.10.0] - 2021-09-17
Changed
- Upgraded com.unity.burst to 1.5.5
[0.10.0-preview] - 9999-12-31
Upgrade guide
HaveStaticBodiesChanged
was added toSimulationStepInput
(see UnityPhysics changelog) and is required for Havok simulation. Please use it instead ofHavok.Physics.SimulationContext.HaveStaticBodiesChanged
andHavok.Physics.HavokSimulation.SetStaticBodiesChangedFlag()
, which are obsolete. ### Changes- Havok Visual Debugger supports multiple physics worlds by displaying each world on a separate port, which requires running an instance per world. Port for a physics world is defined by world index +
HavokConfiguration.Port
. ### Fixed - Fixed a bug with
ModifiableJacobianHeader
accessing an incorrect memory address leading to invalidJacobianFlags
being set.
[0.9.0-preview.4] - 2021-05-19
Upgrade guide
Changes
- Dependencies
- Updated Burst to
1.5.3
- Updated Collections to
0.17.0-preview.18
- Updated Entities to
0.19.0-preview.30
- Updated Jobs to
0.10.0-preview.18
- Updated Physics to
0.9.0-preview.4
- Updated Test Framework to
1.1.24
- Updated Burst to
- Added
partial
keyword to allSystemBase
-derived classes ### Fixed - [UNI-302] Fixed a bug in
IJacobiansJob
in which settingJacobianFlags.Disabled
onModifiableJacobianHeader.Flags
wasn't properly mapped to Havok c++ code, leading to strange behaviour. ### Known Issues
[0.8.0-preview.1] - 2021-03-26
Changes
- Dependencies
- Updated Collections from
0.16.0-preview.22
to0.17.0-preview.10
- Updated Entities from
0.18.0-preview.42
to0.19.0-preview.17
- Updated Jobs from
0.9.0-preview.24
to0.10.0-preview.10
- Updated Physics from
0.7.0-preview.3
to0.8.0-preview.1
- Updated Collections from
Fixed
- [UNI-299] Fixed a bug in
SimulationContext.Reset()
that could lead to a crash if theUnityEngine.Camera.main
isnull
and Visual debugger is enabled.
[0.7.0-preview.3] - 2021-02-24
Changes
- [UNI-269] Added a new
CompoundCollider.Child.Entity
& associatedChildCollider.Entity
field. [UNI-252] Havok plugin is now based on 2020.2 version of Havok SDK.
Dependencies
- Updated minimum Unity Editor version from
2020.1.0f1
to2020.2.4f1
- Updated Collections from
0.15.0-preview.21
to0.16.0-preview.22
- Updated Entities from
0.17.0-preview.41
to0.18.0-preview.42
- Updated Jobs from
0.8.0-preview.23
to0.9.0-preview.24
- Updated Physics from
0.6.0-preview.3
to0.7.0-preview.2
- Updated minimum Unity Editor version from
Fixed
- [UNI-245] Fixed a crash bug when the VDB was enabled on first run but disabled on second.
- [UNI-273] Fixed a bug where custom Spring Frequency and Damping values were not being set on Joint Constraints.
- [UNI-272] Fixed a bug where event streams weren't properly disposed if there are no dynamic bodies in the simulation.
- [UNI-74] Trigger events should now be raised from inactive bodies.
- [UNI-276] Fixed a rare bug which manifested when an entity got deleted, and a new one got created in the same frame, and both had the same entity index. Previously, they were incorrectly synced with Havok c++ code.
[0.6.0-preview.3] - 2021-01-18
Changed
- Dependencies
- Havok Physics now matching versions with Unity Physics packages.
- Updated minimum Unity Editor version from
2020.1.0f1
to2020.1.9f1
- Updated Burst from
1.3.7
to1.4.1
- Updated Collections from
0.14.0-preview.16
to0.15.0-preview.21
- Updated Entities from
0.16.0-preview.21
to0.17.0-preview.41
- Updated Jobs from
0.7.0-preview.17
to0.8.0-preview.23
Fixed
- [UNI-265] Adding multiple Joints to the same bodies, swapping bodies on a Joint, then deleting one of the bodies lead to an assert that crashed the editor.
- [UNI-271] Fixed a crash involving compound colliders with terrain children where the CollisionMethod of the terrain is 'CollisionMethod.Triangles'.
[0.4.1-preview.2] - 2020-10-14
Changed
Fixed
- [UNI-251] Further improved performance of Havok Physics static body synchronization.
- [UNI-259] Fixed strange behavior in "5f. Change Surface Velocity" demo with HavokPhysics, where surface velocity was accumulating between bodies. Now we are properly reading surface velocity from the HavokPhysics plugin before running an IJacobiansJob.
[0.4.0-preview.1] - 2020-09-15
Changed
- Updated minimum Unity Editor version from
2019.4.0f1
to2020.1.0f1
- [UNI-233] Havok plugin is now based on 2020.1 version of Havok SDK
- [UNI-29] Added
HavokSimulation.SetStaticBodiesChangedFlag(NativeArray<int>)
. This sets theHaveStaticBodiesChanged
in SimulationContext. This should only be used whenHavokSimulation
is created manually, as it is happening by default when the simulation is created in a standard way, using BuildPhysicsWorld and StepPhysicsWorld. - [UNI-29] Added
HavokSimulation.SimulationContext.HaveStaticBodiesChanged
. This member can be used to speed up static body synchronization on C++ side. It is aNativeArray<int>
of size 1, and ifHaveStaticBodiesChanged[0] == 1
, static body sync will happen, otherwise it won't. This should only be used when usingHavokSimulation.StepImmediate()
, use HavokSimulation.SetStaticBodiesChangedFlag() otherwise.
Fixed
- [UNI-29] Improved performance of Havok Physics synchronization (static bodies are no longer needlessly synced every frame)
- [UNI-232] Reduced size of compound collider/mesh collider AABB in cases where their bodies are rotated by some angle.
- [UNI-241] Fixed a potential issue where events were skipped when happening in multiple parts of the scene, where each part contains both dynamic-dynamic events and dynamic-static events.
- [UNI-247] Fixed no activation in reaction to filter change in the same frame the body gets removed.
[0.3.1-preview] - 2020-07-28
Changed
- All systems now inherit
SystemBase
instead ofComponentSystem
.
Fixed
- Fixed a crash when
TerrainCollider
usesCollisionMethod.Triangles
. - Fixed a bug where Havok Physics plugin did not gracefully handle invalid Joints (e.g. when both Entities are Null).
- Fixed an editor crash when maximum level of composite collider nesting is breached.
[0.3.0-preview.1] - 2020-06-18
Changed
- Updated minimum Unity Editor version from
2019.3.0f1
to2019.4.0f1
- Updated Unity Physics from
0.3.0-preview
to0.4.0-preview.4
- Removed expired API
HavokSimulation.ScheduleStepJobs()
signature without callbacks and thread count hint.
Fixed
- Fixed a crash when number of solver iterations is bigger than 255.
- Fixed incorrect contact point positions reported through collision events.
- Fixed behavior of joints to properly incorporate provided
Constraint.SpringDamping
andConstraint.SpringFrequency
.
[0.2.2-preview] - 2020-04-16
Changed
HavokSimulation.StepImmediate()
is now provided and can be wrapped in a single Burst compiled job for lightweight stepping logic; however, it doesn't support callbacks; if callbacks are needed, one should implement the physics step using a set of function calls that represent different phases of the physics engine and add customization logic in between these calls; this should all be wrapped in a Burst compiled job; checkHavokSimulation.StepImmediate()
for the full list of functions that need to be called
Fixed
- Fixed a crash that would occur when adding a static body, while the AABB of an existing dynamic body contains world origin (0, 0, 0).
[0.2.1-preview] - 2020-03-19
Fixed
- Changing motion type of many bodies in a single frame no longer results in a crash.
- Trigger events are now consistently raised for penetrating bodies.
- Asking for collision/trigger events in scenes with no dynamic bodies no longer throws errors.
- Android ARM64 and ARMv7 can now be built together without any special actions. Android-specific instructions are removed from Supported platforms.
[0.2.0-preview] - 2020-03-12
Changed
HavokSimulation.ScheduleStepJobs()
now takesSimulationCallbacks
andthreadCountHint
separately as input arguments.Simulation.CollisionEvents
andSimulation.TriggerEvents
can now be used to iterate through the events directly using aforeach
loop, rather than only viaICollisionEventsJob
andITriggerEventsJob
.
Fixed
- Android ARM64 platform is now supported. Please see Supported platforms for details.
- Jobs implementing ICollisionEventsJob, ITriggerEventsJob, IContactsJob, IBodyPairsJob or IJacobiansJob can now be Burst-compiled in both editor and standalone player.
- Duplicate jobs for debug display (like FinishDisplayCollisionEventsJob) are no longer being scheduled, since only HavokPhysics variant of their systems (DisplayCollisionEventsSystem) is now running and covers both HavokPhysics and UnityPhysics simulation.
[0.1.2-preview] - 2020-01-10
Changed
- Unity Pro users now require a subscription, which is available in the Asset Store.
Fixed
- Reduced the sync tolerance. Now handling smaller deltas in position, rotation and velocity.
- Fixed the issue of uninitialized array when scheduling collision event jobs with no dynamic bodies in the scene.
- Fixed an issue where contacts were not being correctly disabled in an IContactsJob.
- The Havok Visual Debugger (VDB) is now always stepped, even when there are no dynamic bodies in the scene.
- Fixed the job handle ordering during step. This fixes errors when simulation callbacks were added.
- Fixed the VDB initialization to use the supplied port.
[0.1.1-preview] - 2019-09-20
- First public release
Changed
- The plugins are now free to use for everyone until January 15th 2020
Fixed
- Fixed potential IndexOutOfRangeException when executing IBodyPairsJob, IContactsJob or IJacobiansJob
[0.1.0-preview.2] - 2019-09-05
Fixed
- Bodies tagged for contact welding now actually get welding applied
[0.1.0-preview.1] - 2019-08-29
- First pre-release package version