1.24.0 (2020-08-29)
Features
- Tracking: ability to determine surface validity by target point (30d1a45)
The new TargetPointValidity rule allows a type of Vector3Rule to be used to determine if the located point of the RayCast in the SurfaceLocator should be considered a valid target.
This can be used with the NavMeshRule to determine if a point on a surface is within the NavMesh boundaries.
The stub Vector3 rule has been moved out of the StraightLineCastTest and into its own stub so it can be used in multiple places. This is instead of testing with the actual NavMeshRule.
- Transformation: add common float aggregate functions (26ce17c)
A number of aggregate functions for float collections have been added to return common aggregates such as:
- Mean * Median * Mode * Min * Max * Range
Bug Fixes
- Extraction: extract correct direction based on UseLocal setting (46e2fa7)
The UseLocal setting was not returning data that made sense. The
UseLocal = falsewas just returning the world direction Vector which had nothing to do with theSourceso it made little sense to have it part of the TransformDirectionExtractor.The
UseLocal = truesetting was actually returning the world direction of theSourceso this is now theUseLocal = falseoperation asSource.transform.forwardis actually the world forward direction of theSourceeven if it is a nested GameObject with multiple parent rotations.This means the
UseLocal = truesetting is now the local direction of theSourceGameObject so if it is a nested child with an additional parent rotation then the local forward is purely the local rotation of the GameObject multiplied by the world forward constant (Vector3.forward).Whilst this will introduce a breaking change, it's actually a fix for operations that were not correct, so it's not a feature including breaking changes, it's actually fixing inaccurate behaviour.
- Tracking: ensure correct axis is rotated around (ad9c1cf)
The RotateAroundAngularVelocity was using the rotate axis as the current target rotation multiplied by the target direction which will only work if the target isn't rotated. It only needs to rotate around the target direction as this is already taking rotation of the target into consideration.