- Fixed Impact Manager using Physic Material map instead of Physics Material 2D map when initializing material mapping.
- Fixed Impact Materials not being marked as dirty when modifying interactions, causing changes to sometimes not be saved.
- Created custom dropdown for Tag selection, which includes search capability.
- Added OnTriggered event to ImpactTriggerBase and its implementations, which can be used to receive events when a trigger is triggered.
- Interaction result objects are now pooled by the Impact Manager. The size of the pools is controlled by the Interaction Result Pool Size property.
- ImpactManager.HasReachedPhysicsInteractionsLimit no longer increments the physics interactions counter. Added separate IncrementPhysicsInteractionsLimit method to do this instead.
- Removed null check from ImpactManagerInstance.GetInstance and replaced with boolean to improve performance.
- IInteractionResult interface no longer requires OriginalData property.
- IContinuousInteractionResult.KeepAlive now takes an IInteractionResult object as a parameter instead of IInteractionData.
- Key property for IContinuousInteractionResult is now a long instead of an int.
- Improved Particle Collision Trigger to respect material mapping and have more accurate collision velocity.
- Removed Contact Mode property from Particle Collision Trigger inspector since it is not used.
- Built-in interactions now check intensity before creating an Interaction Result, saving wasted processing time.
- Built-in interactions now check if the active continuous interactions limit has been reached before processing, saving wasted processing time.
- Modified IImpactCollisionWrapper interface to be generic, now requiring an IImpactContactPoint implementation to be specified.
- Modified methods of ImpactTriggerBase that take IImpactCollisionWrapper and IImpactContactPoint parameters to be generic, which prevents GC allocation of structs that implement an interface.
- Changed InteractionData to struct.
- All methods that took an IInteractionData parameter are now generic, which prevents GC allocation of structs that implement an interface.
- Various improvements to utility functions to clean up redundant code and improve performance.
- Fixed issues with tag selection when tags are not defined in a continuous sequence (i.e. numbers are skipped).
- Range.Normalize now will return 1 if the Min, Max, and input values are all equal.
- Impact Manager now disposes of any active continuous interactions when it is destroyed.
- Fixed Speculative Collision Trigger error caused by using the wrong value for contacts index.
- 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.