Skip to content

@ExtendReality-Bot ExtendReality-Bot released this Aug 29, 2020

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 = false was just returning the world direction Vector which had nothing to do with the Source so it made little sense to have it part of the TransformDirectionExtractor.

    The UseLocal = true setting was actually returning the world direction of the Source so this is now the UseLocal = false operation as Source.transform.forward is actually the world forward direction of the Source even if it is a nested GameObject with multiple parent rotations.

    This means the UseLocal = true setting is now the local direction of the Source GameObject 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.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this Aug 15, 2020 · 6 commits to master since this release

1.23.0 (2020-08-15)

Features

  • Cast: provide ability to determine validity by target point (67a103a)

    The new TargetPointValidity rule allows a type of Vector3Rule to be used to determine if the PointsCast target point should be considered as a valid target.

    This can be used with the new NavMeshRule to determine if a target point from the points cast is within the NavMesh boundaries.

  • Rule: add rule to determine if Vector3 point is within NavMesh (b4ff0a1)

    The NavMeshRule extends the new Vector3Rule which determines if a given Vector3 point is within the limits of a NavMesh.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this Aug 13, 2020 · 10 commits to master since this release

1.22.0 (2020-08-13)

Features

  • Tracking: add container for successful published consumers (b8fd689)

    The ActiveCollisionRegisteredConsumerContainer is linked to a ActiveCollisionPublisher and its job is to store a collection of consumers that the publisher has successfully published to.

    This means the publisher still doesn't know directly who it is publishing to, but holds an audit log of which consumers have successfully received the payload in the past.

    The ActiveCollisionConsumer now also holds a reference to the top level container (i.e. the colliding rigidbody/collider GameObject) that the component is residing under.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this Jul 28, 2020 · 13 commits to master since this release

1.21.0 (2020-07-28)

Features

  • Extraction: add extractors for ObjectFollower.EventData (2426446)

    A collection of extractors that can extract specific data from the ObjectFollower.EventData.

    For example, an Interactable is using Follow Rigidbody. When it is diverged, the event data can be feed into the ObjectFollowerEventDataSourceExtractor to get the grabbing interactor.

  • Process: add Application.onBeforeRender moment (5ad7da4)

    The MomentProcessor can now process moments in the Unity BeforeRender game loop moment.

Bug Fixes

  • Property: add ability to remove diverged state(s) (f1f139e)

    There is an issue when an object is released on its diverged state, the state is not removed when it converges. The leftover state causes the object not be able to converge and diverge again.

  • Velocity: add RelativeTo for velocity offsets (8c10705)

    There is an issue when using XRNodeVelocityEstimator on controllers, if the play area is rotated 180 degrees, throwing an interactable forward will cause it to be thrown backward.

    The solution is to also consider the velocities relative to the play area.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this Jul 11, 2020 · 19 commits to master since this release

1.20.0 (2020-07-11)

Features

  • Action: add ability to set initial value of an Action (bbc8ee0)

    The new InitialValue property allows an Action to have the starting value set in the Unity Editor at edit time. Once the script is started then the InitialValue will be used to set the default state of the Action (but no events will be emitted to denote an action change as technically the state hasn't changed if it is moving to the initial state).

    This new InitialValue property is only for use in the UnityEditor at Edit time and cannot be changed at runtime nor can it be set via script. If an initial value is required via creation of an Action by script then simply just need to create the Action and call Receive(<your-initial-value>) prior to any event listeners being hooked up. This will simply call the Receive method and will emit the relevant events, but as no event listeners should have been registered then this won't make any difference.

    An extra method of ReceiveInitialValue has also been added that will allow the Receive method to be called with the initial set value. Again, this is only useful for when creating the Action via the Unity Inspector as the InitialValue cannot be changed via script.

    The DefaultValue help text has also been updated to make it more clearer what this property is for as it's not the starting value of the Action, but the value the Action needs to be at to be considered disabled.

  • Extension: add enum extension/helper methods (33463ce)

    A couple of new Enum helper methods have been added that make getting an enum easier by either being able to provide the index of the enum to return or by getting the enum by string name.

    The PointerElementPropertyMutator has been updated to take advantage of this new method.

  • Extension: add new data type extensions for common calculations (816dc97)

    A common calculation is finding a fine grain distance between two points (either Vector2 or Vector3) where the tolerance is also given in the same type as opposed to just a simple float.

    The new Vector2.WithinDistance and Vector3.WithinDistance offer this via the relevant extensions.

    Another common calculation is converting euler degrees to signed degrees, such as 270' is actually equivalent to -90'. This helps when doing greater than or less than comparisons as a negative rotation of -90' is less than a rotation of 0' whereas 270' as a number would be greater than 0'.

    The Vector3.UnsignedEulerToSignedEuler will convert the current Vector3 of euler angles into a Signed Euler (-180' to 180f) using the new float.GetSignedDegree which simply converts a Euler angle into the -180' to 180' range.

    These are then used to provide new Transform extensions for:

    • Transform.SignedEulerAngles * Transform.SignedLocalEulerAngles

    Which simply return the respective Euler or Local Euler angle for the Transform but in this signed format.

  • structure: provide mechanism to change properties via UnityEvents (98ae181)

    Some property types cannot be changed via UnityEvents as they are not supported in the UnityEvent inspector, such as Enums, Vectors and Vector3State.

    This has been fixed by adding custom setter methods that can be called via the UnityEvent inspector using primitive types that are supported to allow this data to still be set.

  • Tracking: add divergable property modifier types (8538d3f)

    A new Property Modifier type known as a Divergable Property Modifier has been added that allows a property modifier to know when the target has become diverged from the source in whatever property it is tracking.

    Only certain types of modifier can actually ever cause a divergence, such as the RigidbodyVelocity and RigidbodyAngularVelocity because they can make it so the target is not keeping exactly up to date with the source and become diverged somewhat.

    So now both RigidbodyVelocity and RigidbodyAngularVelocity have become extensions of the DivergablePropertyModifier and now emit events when the source/target diverge and converge again.

    It is also possible to turn off this divergence tracking and it is turned off by default as it adds an additional overhead, which should not be automatically implemented unless the overhead is warranted for the benefits of using the functionality.

  • Tracking: add proxy emitter for ObjectFollower.EventData (0da6d51)

    The ObjectFollower.EventData can now be proxied via the new ObjectFollowerEventProxyEmitter and this data can also now be used as an input to the PropertyModifier Modify method as this makes it easy to chain Property Modifiers together to have one modifier use its data to call another Property Modifier.

  • Yield: add ability to emit an event after a yield instruction (f1e70c8)

    The new Yield events provide the ability to trigger some action after a yield instruction has completed such as seconds passed or at end of frame.

    This can be used in conjunction with the Proxy events to first store the payload in the Proxy then trigger the emit after the yield instruction has completed.

Bug Fixes

  • Attribute: record MinMaxRange value changes on prefab instance (4617d6c)

    There is an issue where the MinMaxRange control will reset the value back to the previous value when it is used within a prefab.

    The solution seems to be to record the prefab instance property modification after the custom FloatRange value has been set through the Supyrb SetValue extension, which doesn't set the value via the SerializedProperty because that is not supported in Unity on custom data types.

    The issue only seems to present itself when changing the value between varying negative values:

    • -0.5 * -0.2 * -0.5 (reverts to 0)

Code Refactoring

  • guidelines: apply coding guidelines to empty classes (fea537b)

    The coding guidelines state that empty classes should have the brackets on the same line as such:

    class { }

    and not

    class { }

    This has now been applied to the relevant offending files.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this Jun 7, 2020 · 30 commits to master since this release

1.19.0 (2020-06-07)

Features

  • Mutation: allow limiting axes on mutator offsets (6f62f49)

    The TransformPositionMutator has a Facing Direction offset that can be provided which is used to offset the forward direction based on the rotation of this optional offset GameObject. It is now possible to determine which axes of that offset should be used when utilizing the rotation data as there are occurrences where not all of the offset rotations are wanted.

    The TransformEulerRotationMutator has an Origin offset that can be used to rotate around a different pivot point position. It is now possible to determine which axes of direction should be used from the optional pivot point as sometimes not all axes may be required.

  • Process: emit event when SourceTragetProcessor source changes (05c5e21)

    The SourceTargetProcessor now emits an event when the ActiveSource being used for the process changes. It also emits the initial value as ActiveSource starts as null and when it is first enabled and called then ActiveSource will be changed from null and therefore it will emit the event.

Bug Fixes

  • Operation: suppress obsolete warning messages in cache tests (ee03c55)

    The Cache operations have been deprecated but the tests still actively use the components to test them and therefore throws warning messages about the use of deprecated components.

    It's right to keep the tests but just suppress the warnings.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this May 31, 2020 · 35 commits to master since this release

1.18.0 (2020-05-31)

Features

  • Observer: add observable property data types (2c0ee57)

    The new ObservableProperty types allow a data type property to be set in the inspector but any change to that property is observed and an appropriate event is raised for the state of the property.

    This is a better implementation of the ValueCache components which didn't really offer much other than storing a value via code and raising events when that value was modified. The ValueCache components have now been deprecated with the new ObservableProperty counterparts being a much better choice.

  • Proxy: expose payload as public property (e2912f4)

    The Payload property on the Event Proxy has now been exposed as a serialized public property so it can be set via the inspector or via external code or Unity event. This payload can then be emitted at a later stage by calling the existing EmitPayload method.

    There is also a ClearPayload method for setting the Payload property back to the default value.

  • Tracking: apply rotation property based on angular velocity (d312e36)

    The new RotateAroundAngularVelocity component will modify a target's rotation property by rotating around the offset using the angular velocity of the given VelocityTracker as the angles in which to rotate per frame.

    This can be used to simulate turning something with the rotation of the controller, such as screwing in a screw.

Code Refactoring

  • Extraction: rearrange property order and add headers (bb3e92a)

    The property order has been re-arranged so the properties are not split by the events when the concrete classes add more properties and headers have been added to make the split clearer.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this May 22, 2020 · 41 commits to master since this release

1.17.1 (2020-05-22)

Bug Fixes

  • Extraction: remove Cleared attribute from ValueExtractor.Source (adff3f2)

    The Source property from the ValueExtractor is of a generic type and if the Cleared attribute is used then Malimbe will always weave an auto generated Clear method that attempts to set the property to null and this will cause issues in IL2CPP when attempting to clear non nullable types such as RaycastHit.

    As there is a manual ClearSource method already that sets Source to default then this Cleared attribute can simply be removed.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this May 22, 2020 · 44 commits to master since this release

1.17.0 (2020-05-22)

Features

  • Association: determine association by platform, sdk and model (1680f63)

    The PlatformDeviceAssociation component allows the determining of the hardware based on matching patterns of the current platform, the SDK loaded by Unity and the model type.

    As all of these are patterns, then they can be used to search for anything or specific types of setup.

    The LoadedXrDeviceAssociation has now been deprecated as it offers a subset of this new functionality but isn't as powerful.

  • Conversion: ability to convert between float and normalized float (b65cd03)

    The FloatToNormalizedFloat allows a float value to be converted into a normalized float (between 0f and 1f) and the NormalizedFloatToFloat allows for a normalized float to be converted to a float value based within the range provided.

    The FloatToBoolean has also had the min/max limit removed so any float value can be used to check to see if it should be within the positive bounds.

  • Conversion: option to convert vector2 to signed angle (fd1084d)

    The Vector2ToAngle component now has the option of converting to a signed angle in either degrees or radians.

    This allows an angle range of -180 degrees to 180 degrees instead of 0 to 360 degrees and this will feed in better to the FloatToBoolean when wanting to know if the angle is between a given range as it is possible to do -20/20 as a range whereas it's not possible to do 340/20 as a range.

Bug Fixes

  • Extraction: override ClearSource method for generics (6ca9cfb)

    There is an issue with using the Malimbe generated ClearSource method when using it with a generic type property as the actual type may not be a nullable type and the MemberCleared weaved code always tries to set it to null.

    In this regard, it is better to simply override the method and set the property to default. This is not done in Malimbe as providing default as the weaved code is extremely tricky.

Assets 2

@ExtendReality-Bot ExtendReality-Bot released this Apr 21, 2020 · 50 commits to master since this release

1.16.0 (2020-04-21)

Features

  • Pointer: allow origin transform of event data to be overriden (74c8d80)

    The Pointer origin was previously always the Transform that the ObjectPointer component was on, but this new field allows an alternative origin to be provided if required.

  • Tracking: allow previous position to be valid located surface (6592687)

    The SurfaceLocator would always not consider a valid location if the previous location was the same as the current location. This new option allows that equality check to be ignored.

    Also, the equality threshold is no longer a constant and instead a value that can be changed via the public property.

  • Tracking: allow properties to be applied even if they are equal (b636bca)

    The TransformPropertyApplier now has an option to still apply properties even if the properties are equal.

Bug Fixes

  • Tracking: calculate properties correctly if dynamic destination (f1191e9)

    This fix will calculate properties correctly if IsTransitionDestinationDynamic is true. Before the fix, it does not honor the ApplyTransformations settings.

    This fix is by Ethan Cheung ethan@fight4dream.com

    Co-authored-by: Ethan Cheung ethan@fight4dream.com

Assets 2
You can’t perform that action at this time.