- Added Set As Active Instance property to Impact Manager.
- Added Enabled property to all physics triggers.
- Added Multiple contact mode.
- Added Contact Point Comparison property to Impact Speculative Collision Trigger.
- Added Contact Point Lifetime property to Impact Speculative Collision Trigger.
- Improved ImpactManager instance handling.
- Created instance members in ImpactManager to mirror the static members.
- Moved all static members previously on ImpactManager to new ImpactManagerInstance static class.
- Added SetInstance and GetInstance methods to ImpactManagerInstance for setting and getting the currently active ImpactManager instance.
- Changed how the Impact Speculative Collision Trigger compares contacts from rounding to comparing sqrMagnitude.
- Impact Speculative Collision Trigger now also uses OnCollisionEnter message so that collision messages are handled more consistently.
- Changed SpeculativeCollisionContact class to a struct.
- Fixed Single Average contact mode not copying Physics Material IDs from the original contact points needed for Material Mapping.
- Removed the Contact Mode property from the Impact Speculative Collision Trigger inspector since it is not actually used.
- Impact Terrain now better handles Material Composition:
- Results are now returned sorted from highest to lowest Composition Value.
- Terrain layers with the same Impact Material are now combined into a single result.
- When the number of terrain layers is greater than the Material Composition Buffer Size, the most prevalent materials will be returned, and the sum of their Composition Values will be (close to) 1.
- Fixed various issues with Impact Raycast Trigger methods.
- Made active continuous interactions array no longer static.
- Improved handling of multiple Impact Manager instances. A warning will be logged to the console and duplicate Impact Managers will be disabled.
- Fixed continuous interactions being processed when the active continuous interactions array is full, which would cause them to never be updated or disposed of. Continuous interactions will no longer be processed if the active continuous interactions array is full.
- Added Impact Manager script.
- Added Default Audio Pool Size property.
- Added Physics Interactions Limit property.
- Added Interaction Result Buffer Size property.
- Added Max Active Continuous Interactions property.
- Added Material Composition Buffer Size property.
- Added ability to map Unity's physics materials (both 3D and 2D) to Impact Materials.
- The built-in physics triggers now check Physics Interactions Limit when a collision message is recieved. If the limit has been reached further processing will be aborted.
- Added High Priority property to ImpactTriggerBase for overrding Physics Interactions Limit.
- Added Contacts Mode property to ImpactTriggerBase with Single and Single Averaged options.
- Added ImpactObjectRigidbodyChild component that can be used for rigidbodies with multiple materials and has less overhead than ImpactObjectRigidbody.
- Added more ImpactRaycastTrigger methods (including methods for 2D raycasting).
- Changed string InteractionKeywords property to int InteractionType on IInteractionData interface to increase performance.
- Changed GetKey function on IInteractionData interface to return an int to eliminate string concatenation and increase performance.
- Added useMaterialComposition parameter to existing ImpactRaycastTrigger methods.
- Removed ImpactTriggerInteractionData class and renamed buildAndSendInteractionData to buildInteractionData on ImpactTriggerBase. buildInteractionData now takes all parameters separately instead of as a class to reduce GC allocation.
- Removed continuous interaction handling and FixedUpdate from ImpactObjectBase. This is now part of ImpactManager.
- Removed ProcessInteraction and ProccessContinuousInteraction from IImpactObject interface. These methods are now a part of ImpactManager.
- Removed interaction result buffer array from ImpactObjectBase. This is now a shared static array on ImpactManager.
- Removed material composition result buffer array from ImpactTriggerBase. This is now a shared static array on ImpactManager.
- Refactored ImpactRigidbodyWrapper to include center of mass, velocity, and angular velocity code that was previously in ImpactObjectRigidbody.
- Fixed cached material composition not being updated on ImpactObjectSingleMaterial when the Material property is changed at runtime.
- Fixed IndexOutOfRange exception when assigning a tag library with no tags to a material.