パッケージの詳細

io.extendreality.tilia.interactions.interactables.unity

ExtendRealityLtd2.2kMIT2.18.1

A variety of mechanisms for interacting between interactors and interactables in a spatial scene for the Unity software.

interactions, interactors, interactables

readme

Tilia logo

Interactions -> Interactables for the Unity Software

A variety of mechanisms for interacting between interactors and interactables in a spatial scene for the Unity software.

Release License Backlog

Introduction

A collection of patterns for providing ways of interacting with Unity objects within spatial scenes. The package contains two core concepts:

  • Interactors - The ability of something to initiate interacting (e.g. a controller or a hand)
  • Interactables - The world object that can be interacted with by an interactor. Interactables can be grabbed, scaled, rotated or whatever other actions can be created and plugged in.

Requires the Unity software version 2018.3.10f1 (or above).

Getting Started

Please refer to the installation guide to install this package.

Documentation

Please refer to the How To Guides for usage of this package.

Further documentation can be found within the Documentation directory and at https://academy.vrtk.io

Contributing

Please refer to the Extend Reality Contributing guidelines and the project coding conventions.

Code of Conduct

Please refer to the Extend Reality Code of Conduct.

License

Code released under the MIT License.

更新履歴

Changelog

2.18.1 (2024-09-28)

Miscellaneous Chores

2.18.0 (2024-09-28)

Features

  • Facade: allow multiple rules for disallowed touch/grab types (7a4c1d8)

    The disallowed touch and grab interactors used to only work on a ListContainsRule and this was hard coded into the facade editor. This meant that no other rule could be replaced as it would throw an error due to the custom editor.

    This feature introduces a new AnyRule at the heart of both the touch/grab disallowed logic with the first rule being the existing ListContainsRule, so all of the existing logic still works and that ListContainsRule must be at the zero index of the AnyRule list.

    But now the AnyRule can also contain any other rule that is required to disallow touch or grab interactors.

2.17.2 (2024-06-15)

Bug Fixes

  • Prefabs: disallow collision consumers for invalid interactor (d40583c)

    The DisallowedGrabInteractors rule was causing an issue when using precision grab due to the collision consumer still being published for an invalid interactor which was causing the precision point container to be created for an invalid interactor. This meant that any other valid interactor was not becoming a precision point grab as the detached precision point for the invalid interactor still existed.

    The solution is to modify the GrabReceiver prefab so it turns off the OutputActiveCollisionConsumer logic if the interactor is disallowed and then the precision point cannot be created prior to a grab event.

2.17.1 (2024-05-11)

Miscellaneous Chores

2.17.0 (2024-05-11)

Features

  • Facade: control rigidbody kinematic state from IsVisible (e89ba29)

    The IsVisible property also now controls the rigidbody kinematic state otherwise an invisible object will just fall through all other colliders in the scene.

    A helper component of InteractableVisibilityStatusTag has also been added to the top level of the Interactable prefab that is enabled when the Interactable is visible and disabled when the Interactable is hidden.

    This can be used in rules to ignore hidden Interactables if needed.

Bug Fixes

  • Editor: disable custom inspector if ignore custom editor is set (59bd286)

    If the ZINNIA_IGNORE_CUSTOM_INSPECTOR_EDITOR ifdef is set then the custom editor must also be disabled otherwise an error will occur.

2.16.7 (2024-04-17)

Miscellaneous Chores

2.16.6 (2023-07-10)

Miscellaneous Chores

2.16.5 (2023-07-08)

Miscellaneous Chores

2.16.4 (2023-07-05)

Miscellaneous Chores

2.16.3 (2023-06-06)

Bug Fixes

  • Grab: prevent infinite loop in grab drop restrictor (87450b5)

    When calling DoEnableDrop it would go into an infinite loop as the main method was being called rather than the sub method.

2.16.2 (2023-05-06)

Bug Fixes

  • Interactors: prevent grab on disabled game object (7023269)

    The Grab method on the GrabInteractorConfigurator was able to be run even when the GameObject was disabled, which is not in keeping with Zinnia patterns. This has now been fixed.

2.16.1 (2023-05-06)

Miscellaneous Chores

2.16.0 (2023-05-02)

Features

  • Editor: add restriction options for scale action (a983813)

    The Scale action now has restrictions for scale axis and min/max scale values which are now present on the custom inspector window.

Bug Fixes

  • Interactables: ensure reference properties are public (86f092a)

    There is no point in having reference properties as protected as this just makes it harder to set these elements via code and they should be available to do so.

2.15.1 (2023-05-02)

Miscellaneous Chores

2.15.0 (2023-04-23)

Features

  • prefabs: add rules matcher for touched colliders (ea05f16)

    A new Rules Matcher has been added that can be used to process the touched collider of the interactable in a similar way to how the grabbed collider matcher works. This makes it possible to know which collider has been touched on the interactable and do something with this information before the rest of the touch logic is run.

    The touch (and now the grab) collider logic only runs if the interactor is not in the disallowed interactors list for the interaction type.

2.14.0 (2023-04-16)

Features

  • Prefabs: match rules to the grabbed interactable collider (94425b7)

    A new path has been added that when an interactable is grabbed, the specific collider on the interactable is emitted to a Rules Matcher so custom logic can be applied before the grab mechanics execute.

2.13.1 (2023-04-16)

Miscellaneous Chores

2.13.0 (2023-04-16)

Features

  • Editor: add embed interactable into gameobject option (28bde5c)

    The InteractableCreatorEditorWindow now has an extra button that instead of nesting the selected GameObject inside an interactable prefab it will instead embed the newly created interactable prefab as a child of the selected GameObject.

2.12.0 (2023-04-04)

Features

  • Resources: add multiple render pipeline materials (aec0fa2)

    The prefab now uses the Pipeline Material Applier to provide multiple material types for the main render pipelines to improve compatibility.

2.11.8 (2023-04-03)

Miscellaneous Chores

2.11.7 (2023-03-28)

Miscellaneous Chores

2.11.6 (2023-03-22)

Bug Fixes

  • Configurator: catch error on destroy nested prefabs (eb42364)

    Older versions of Unity cannot destroy a nested prefab, so as the Controllables for example nest the Interactable prefab, if the Interactable prefab is attempted to change the grab action then this tries to delete the nested grab action but will raise an InvalidOperationException because this nested prefab cannot be deleted.

    The fix for this is to just disable the hard wired prefab and then create a new temporary prefab that can be continually updated.

2.11.5 (2023-03-21)

Miscellaneous Chores

2.11.4 (2023-03-18)

Bug Fixes

  • Grab: remove hard requirement for rigidbody (a615465)

    There is no definitive requirement for a rigidbody on an Interactable but the previous changes that prepared rigidbody for kinematic changes has meant that a Rigidbody is required to set up the state to prepare for any kinematic change.

    This fix just makes sure these state preparations are only done if a rigidbody is provided, so it no longer needs a rigidbody if not required.

2.11.3 (2023-03-16)

Miscellaneous Chores

2.11.2 (2023-03-13)

Bug Fixes

  • Prefabs: reset default mesh collider scale to 1,1,1 (e146052)

    The collider scale on the interactable default mesh was set to 2,2,2 which meant the collider was twice as big as the mesh.

    This has now been fixed.

2.11.1 (2023-03-13)

Miscellaneous Chores

2.11.0 (2023-03-11)

Features

  • Editor: add inspector options for control direction (e73ea3b)

    The Interactable inspector now draws additional options if the Control Direction action is selected.

  • Grab: add option to attempt swap grab options (4b89b6c)

    A new option that provides the ability to attempt to swap the secondary grab action to the primary grab action when the secondary grab is still active when the primary action ungrabs.

    This also fixes an issue where using Primary:Follow and Secondary:ControlDirection causes the rotation upon release of the secondary interactor to not stay in the correct rotation when precision grab is used because the precision grab container rotation wasn't being updated with the control direction pivot.

2.10.1 (2023-03-11)

Miscellaneous Chores

2.10.0 (2023-02-26)

Features

  • Interactions: add IsVisible property to interactable (a77cb65)

    The IsVisible property on the getter will return whether the interactable object is in its visible state which is the renderers are active and the colliders working.

    When the IsVisible property is set to false then all of the renderers are disabled and all of the colliders are set to trigger colliders to mimmic the GameObject becoming invisible but still active within the scene.

2.9.3 (2023-02-22)

Miscellaneous Chores

2.9.2 (2023-02-19)

Miscellaneous Chores

2.9.1 (2023-02-16)

Bug Fixes

  • Editor: replace missing icon in newer unity versions (3aa147a)

    The icon was available in Unity 2018 but does not seem to be available in 2022 so it has been replaced with something that is similar and seems to be available in all current versions.

2.9.0 (2023-02-16)

Features

  • Editor: add sub options for action types (ce452a5)

    A new sub option has been added for the None action and the Scale action that bubbles up useful internal settings.

    The primary/secondary action drop downs also now have a button next to them that pings the action gameobject within the interactable hierarchy to make it easier to navigate to.

    Also, the entire editor script has been refactored to make it tidier and more concise to read.

2.8.2 (2023-02-15)

Bug Fixes

  • InteractableConfigurator: set action instantiation correctly (510184a)

    There was an issue when instantiating a new action it was not possible to update the position, rotation or scale of any child object in the action GameObject. This has now been fixed by making the action object match the world orientation/scale of the interactable facade so when it is childed it resets to the correct zero origin.

    The Instantiate method is also always called if the app is playing and not the PrefabUtility method as this is only now used at edit time in the editor.

2.8.1 (2023-02-15)

Bug Fixes

  • InteractableConfigurator: reset instantiated action orientation (70c43da)

    When the interactable action is instantiated it was not having the position, rotation and scale reset so if the original converted object was not at the zero orientation then the action was being offset.

    This fix ensures the position, rotation and scale is reset to the identity when the action is childed to the interactable.

2.8.0 (2023-02-13)

Features

  • Editor: add button to link to selected follow tracking container (0729640)

    The new Show Follow Tracking Container button will ping the GameObject in the Interactable hierarchy that contains the currently selected follow tracking logic, making it easier to traverse to the logic to customise settings further.

  • Utility: add streamline way to generate interactables via code (51c6025)

    The new InteractableCreator prefab makes it much easier to create an Interactable Object via code by simply calling the Convert method passing in the GameObject to convert (and wrap) to an Interactable.

    The core generation code has now been moved into a factory that the Interactable Creator Editor Window now also uses. The ability to set the primary and secondary actions has also been moved to the InteractableConfigurator as it already holds all of the relevant prefab references to be able to set an action.

2.7.1 (2023-02-08)

Miscellaneous Chores

2.7.0 (2022-07-05)

Features

  • Action: add property for precision collision point (565e786)

    The GrabInteractableFollowAction now has a property that allows the retrieval of the current precision grab collision point GameObject in case this runtime generated object is required for any reason.

  • Action: provide rule based orientation handle option (0704996)

    The GrabInteractableFollowAction and the GrabAction.Follow prefab have now been updated to also allow for the orientation handle to be set via a rule.

    This makes it possible to determine orientation handles by a rule at runtime, so an interactable can be instantiated and does not need any custom code to hook up the GameObject Relation.

Bug Fixes

  • GrabActions: rotate around angular velocity in target space (13c343c)

    The Rotate Around Angular Velocity component now has the In Target Space option checked so it operates in local space fo the target.

    This enables any Interactable using the Follow action set to Follow Rotate Around Angular Velocity to be able to rotate correctly even if the object is rotated in the world space.

2.6.1 (2022-06-25)

Bug Fixes

  • Interactor: prevent double touch on force grab (0f7e32e)

    When the Interactor Force Grab() method was being called it would first do a simulate touch (to ensure the events were in the right order). Then it would do the grab, which would make the interactable physically touch the interactor, which would call the touch logic again, therefore breaking the untouch logic and meaning the untouched event would not fire as it thought it was still being touched with the second touch that had happened.

    This fix resolves that by when a simulate touch occurs, the Interactor then turns off the Interactable CollisionNotifier for a fixed update frame so the second touch cannot occur after the simulated touch.

2.6.0 (2022-06-16)

Features

  • ActionReceiver: add notify events when receiver is received (6f9ce20)

    The ActionReceiver now has a notify activated and deactivated when a publisher activates or deactivates a receiver.

  • Editor: use string constants for labels (ed571f1)

    The Interactable Creator Editor Window now uses string constants for labels rather than inline strings.

2.5.1 (2022-06-16)

Miscellaneous Chores

2.5.0 (2022-05-28)

Features

  • Action: allow null grab action to force grab/ungrab events (3ca710e)

    The GrabInteractableNullAction did not emit any events when the grab or ungrab action occurred, which was technically correct because nothing has happened, but there may be occasions where you'd want the events to occur. This change allows the null action to be set to force the events if required, but by default it still doesn't force the events so no breaking changes will occur.

2.4.1 (2022-05-20)

Miscellaneous Chores

2.4.0 (2022-05-16)

Features

  • ActionPublisher: remove need for string identifier (26e2a6a)

    The ActionPublisher no longer needs a string for the publisher identifier as this was just being used intenally in the rules. But this has now been replaced with a List Contains Rule and it just uses the actual ActionPublishers that are linked onto the ActionReceiver to make the internal rule work.

    The FirstTouched logic was also broken so that has been fixed as part of this commit.

  • Editor: move velocity multipler settings into foldout (4b8ed8f)

    The Velocity Multiplier settings are now in a foldout just above the Advanced Follow settings as it's a bit neater to just show them when necessary as they are somewhat optional.

2.3.0 (2022-05-13)

Features

  • Interactions: multiply velocity on interactor and interactable (e9bcff3)

    The Interactor and Interactable now has a VelocityMultiplier on them so the throw velocity can be multiplied on either the Interactor or the Interactable (or both).

    The Interactable Editor has also been tidied up a bit with some horizontal lines added and a bit more indentation to make it easier to follow the flow of data.

    A number of enum properties have also had set methods added for them as well.

2.2.0 (2022-05-09)

Features

  • prefabs: add selection base component to facade (5aaebd9)

    The new Zinnia BaseGameObjectSelector when added to a GameObject will cause the GameObject to be selected when the mesh is clicked in the Unity scene view. This has been added to the facade to ensure the facade is selected when the mesh is clicked.

2.1.1 (2022-05-09)

Miscellaneous Chores

2.1.0 (2022-05-05)

Features

  • Grab: emit event when kinematic state will change (e7e7bbe)

    Due to the changes in PhysX, the change of a Rigidbody kinematic state will cause the collider to call the exit, then enter events even though the collider has not stopped intersecting.

    This was fixed in the Zinnia Collision Tracker and in turn the Interactable and Interactor connection, but anywhere else that relies on the interactable kinematic state will not have a clear point to know when this happens.

    So a new event has been added to the GrabInteractableConfigurator that emits the rigidbody that the kinematic state is about to change on.

    Other dependents can now listen to this event to prepare any colliding rigidbody for the impending exit/enter.

    The GrabInteractableFollowAction emits this event when it changes the kinematic state upon grab and ungrab.

    The InteractableGrabStateRegistrar has also been updated to have two new events that are connected to the kinematic state change on grab and on ungrab, so they can be listened to when the grab or ungrab occurs so any rigidbody can be prepared accordingly.

2.0.1 (2022-04-28)

Miscellaneous Chores

2.0.0 (2022-04-28)

:warning: BREAKING CHANGES :warning:

  • Malimbe: This removes the last remaining elements of Malimbe and whilst it does not cause any breaking changes within this package, it removes Malimbe as a dependency which other projects that rely on this package may piggy back off this Malimbe dependency so it will break any project like that.

All of the previous functionality from Malimbe has been replicated in standard code without the need for it to be weaved by the Malimbe helper tags. (b6d0240)

Features

  • Malimbe: remove malimbe dependency (b6d0240)

1.24.2 (2022-03-15)

Miscellaneous Chores

1.24.1 (2022-03-15)

Miscellaneous Chores

1.24.0 (2022-03-03)

Features

  • Grab: add interactable drop restrictor (1eeef73)

    The InteractableGrabDropRestrictor component makes it possible to disable dropping an interactable once it is grabbed.

1.23.0 (2022-03-02)

Features

  • package.json: add information urls to package (c3d2b6c)

    The changelog, documentation and license url has been added to the package.json as these are used within the Unity package manager.

1.22.9 (2022-02-14)

Bug Fixes

  • Touching: only call touch consumers if touch has changed (e4b5666)

    The Slicer component now provides a mechanism to determine if the sliced list contents have changed so this makes it more efficient when needing to call the interactable collision consumers.

    Previously, they were being called every OnStay even if the current touched object hadn't changed and this was very inefficeint and could lead to a drop in framerate if touching many objects.

1.22.8 (2022-02-14)

Miscellaneous Chores

1.22.7 (2022-02-05)

Miscellaneous Chores

1.22.6 (2022-01-17)

Miscellaneous Chores

1.22.5 (2022-01-13)

Miscellaneous Chores

1.22.4 (2022-01-13)

Miscellaneous Chores

1.22.3 (2022-01-12)

Miscellaneous Chores

1.22.2 (2022-01-03)

Miscellaneous Chores

1.22.1 (2021-12-03)

Miscellaneous Chores

1.22.0 (2021-07-23)

Features

  • Extraction: add interactor facade extractor (06e9701)

    The InteractorFacadeExtractor component will extract an InteractorFacade component from the given GameObject and can also search for the InteractorFacade component on ancestor or descendant GameObejcts.

  • Interactables: implement interactable grabber (c9fb3c8)

    The InteractableGrabber component actually existed in the PointerInteractors package but it is far more general purpose than just being used for pointer interactions. So the component has been included in this repo where it can serve a wider use and it can then be used to supersede the one in the PointerInteractors package.

1.21.1 (2021-07-21)

Miscellaneous Chores

1.21.0 (2021-07-19)

Features

  • Action: provide pivot offset from target offset first found child (eefc409)

    The DirectionModifier now supports a PivotOffset which is now set by the first child GameObject found within the TargetOffset GameObject.

1.20.2 (2021-07-19)

Miscellaneous Chores

1.20.1 (2021-06-24)

Bug Fixes

  • Interactor: make touch before force grab optional (243bdf1)

    There is an issue with the newly added touch before force grab where it may not always be desirable to have that functionality and as the functionality has changed then it should be an option so it can be disabled and provide the original functionality if need be.

1.20.0 (2021-06-24)

Features

  • Interactor: add ability to simulate a touch with no collision (ee83176)

    The new SimulateTouch and SimulateUntouch method on the InteractorFacade allow for the Interactor to effectively touch an Interactable without needing to physically collide with it in the spatial world.

    The Grab() method has also been updated so it uses this SimulateTouch before grabbing so all of the correct events are triggered.

1.19.4 (2021-06-24)

Miscellaneous Chores

1.19.3 (2021-06-19)

Miscellaneous Chores

1.19.2 (2021-06-10)

Miscellaneous Chores

1.19.1 (2021-05-31)

Bug Fixes

  • Documentation: add missing auto generated API docs (c524efd)

    The API docs had not been updated to the latest to match the code, this has been fixed by auto generating the new docs.

1.19.0 (2021-05-14)

Features

  • Rule: add rules for interactor touch and grab state (26700d9)

    The new rules will be able to determine if a given GameObject has an InteractorFacade on it and if it does then whether the given Interactor is either currently touching or grabbing something.

Miscellaneous Chores

  • README.md: update title logo to related-media repo (f3556b4)

    The title logo is now located on the related-media repo.

1.18.0 (2021-05-10)

Features

  • Interactors: add ability to ignore colliders based on tag (3f4938e)

    A recent update to the Collision Tracker means it is now possible to ignore specific colliders based on a rule. This is now being used in the Interactor to ignore any collider with the IgnoreInteractorOnColliderTag component on it. This can now be added to any collider on an interactable to make the interactor ignore the collider on the interactable.

    This can be useful for example to ignore the blade of a sword so it can only be grabbed by the handle.

1.17.2 (2021-05-09)

Miscellaneous Chores

1.17.1 (2021-05-03)

Miscellaneous Chores

1.17.0 (2021-04-07)

Features

  • Utility: add prefab creator (15bee59)

    The latest version of Zinnia has the basis of a prefab creator that can be used to enable easy adding of prefabs to a scene without needing to drag and drop from directories. Instead a new menu item is added for quickly adding prefabs. The guide has been updated to accommodate this and the FodyWeavers.xml is now located in the root to serve both the Runtime and Editor scripts.

1.16.2 (2021-04-01)

Bug Fixes

  • Proxy: prevent null exception in event proxies (6577a60)

    There was an issue where an event proxy could be called but the Payload was null causing a null exception to occur. This has now been guarded against.

1.16.1 (2021-03-29)

Bug Fixes

  • API: add missing API documentation (74d3998)

    The API documentation wasn't auto generated for the last set of changes so this documentation has now been auto generated and added.

1.16.0 (2021-03-29)

Features

  • prefabs: update ControlDirection to implement follow TargetOffset (95ed5dd)

    The latest version of the DirectionModifier now allows for a TargetOffset to be provided, which can be provided from any Follow action as they also consider a TargetOffset. The first found TargetOffset of a complimentary follow action on an interactable will be used as the TargetOffset on the ControlDirection Directionmodifier.

1.15.11 (2021-03-29)

Miscellaneous Chores

1.15.10 (2021-03-04)

Bug Fixes

  • Interactions: prepare kinematic state changes on collision tracker (fb69869)

    The CollisionTracker on the Interactor is now pre-warned of kinematic state changes of any trigger collider that the Interactor is touching and this then works inline with the new CollisionTracker changes that allow the TriggerExit/Enter to be ignored in Unity 2019.3 and above when kinematic changes are made to a rigidbody.

    This is to ensure the changes introduced by Unity 2019.3 do not break the events on the Interactable because now changing the kinematic state on a Rigidbody will now cause a collsiion exit and collision enter to occur, even though the colliding objects have not stopped colliding. This is due to a change in the PhysX 4.11 system and Unity did not counter this change and introduced a non-documented breaking change.

1.15.9 (2021-03-03)

Miscellaneous Chores

1.15.8 (2021-02-27)

Miscellaneous Chores

1.15.7 (2021-02-04)

Miscellaneous Chores

1.15.6 (2021-01-07)

Bug Fixes

  • Interactions: remove erroneous xml doc from editor (837efd7)

    The InteractableFacadeEditor had an empty XML doc at the top of the class which isn't needed.

1.15.5 (2021-01-07)

Miscellaneous Chores

1.15.4 (2021-01-04)

Bug Fixes

  • Interactions: use VelocityTracker on Interactor (c73e8d5)

    The Interactor would require a VelocityTrackerProcessor but this limited the usage and as it just extends the VelocityTracker then it makes sense for the Interactor to just take a VelocityTracker and this shouldn't break any prefab links either.

1.15.3 (2020-12-26)

Bug Fixes

  • Interactions: add interactor example avatar to IgnoreRaycast layer (1ec9766)

    The ExampleAvatar included in the Interactor is now on the IgnoreRaycast layer to prevent any pointers following the interactor from clipping with the avatar and terminating the pointer RayCast too early.

  • Interactions: prevent attach point with precision grab (12c991a)

    The Grab Attach Point on the Interactor is no longer used when an Interactable is set to precision grab because if the Grab Attach Point has a Transform offset then it means the precision grab is offset too.

    Instead, a new Precision Attach Point has been added to the Interactor that has a Vector3.zero position so this is used as the follow Source for precision grab so the offset is always zero.

    It is still possible to offset this new Precision Attach Point if required, but the effects will be the precision grab is also offset.

1.15.2 (2020-12-21)

Miscellaneous Chores

1.15.1 (2020-12-17)

Miscellaneous Chores

1.15.0 (2020-12-13)

Features

  • Interactions: add ability to choose valid interaction types (941fa68)

    The new ValidInteractionTypes enum property makes it possible to pre-determine what interaction types the Interactable will respond to.

    Note: A grab can still occur if the Interactable does not respond to a touch because the touch on the Interactor side is still valid. This is useful for disabling touch events but still wanting to grab.

    An UngrabAll method has been added too that is just a shortcut to Ungrab(0) for easier understanding in the facade.

  • Interactions: deprecate end of frame methods (ac2c59f)

    The InteractableFacade EndOfFrame methods have now all been deprecated as the WaitForEndOfFrameYieldEmitter component should be used if a method needs calling at the end of a frame.

1.14.4 (2020-12-12)

Miscellaneous Chores

1.14.3 (2020-12-11)

Bug Fixes

  • HowToGuides: apply document styling guidelines (63763a9)

    The document style guidelines have been updated and now have been applied to the guides in this repo.

1.14.2 (2020-11-21)

Bug Fixes

  • Interactions: add missing API documentation (978af58)

    The API had changed but the documentation hadn't been auto generated so this commit just adds in the auto generated documentation.

1.14.1 (2020-11-01)

Miscellaneous Chores

1.14.0 (2020-11-01)

Features

  • Interactions: allow follow as standard secondary action (d7d2b7e)

    The secondary action can now also be set to follow, which allows the primary action to be set to none so the primary action does nothing whereas the secondary action will then grab the item to mimic two hand grabbing.

    The None action now has its own null action rather than just using the base action so it can be easily identified as a nothing action.

1.13.4 (2020-10-02)

Miscellaneous Chores

1.13.3 (2020-08-29)

Miscellaneous Chores

1.13.2 (2020-08-26)

Bug Fixes

  • Interactions: ensure correct consumer container is unregistered (149bc72)

    The Ungrab in the Interactor shouldn't just attempt to unregister the consumers associated with the interactable but instead should attempt to unregister with the interactable's consumer container as that is the actual thing the consumers return as the registered container.

1.13.1 (2020-08-15)

Miscellaneous Chores

1.13.0 (2020-08-14)

Features

  • Interactions: force snap interactable orientation to interactor (82f4775)

    There is now a mechanism on the Interactable that will force it to snap to the orientation of the grabbing Interactor regardless of the follow type being used. This is useful particularly with the Follow Rigidbody follow mechanic for ensuring if it gets too far away from a natural follow then it can be immediately snapped back to the correct orientation.

    This mechanism can also be called from the Interactor and applied to any or all grabbed Interactables.

Bug Fixes

  • Interactions: allow toggle grab to work when no longer touching (26d632e)

    The Toggle Grab mechanism would not work if the first toggle would grab and then the interactor would stop touching the interactable as the second toggle would no longer release the grab.

    This was due to the grab publishers were always populated based on what was being touched and if the interactor stopped touching the grabbed interactable then the start grab publisher would not have anyway of knowing which interactable to publish to.

    The latest version of Zinnia (1.22.0) has a mechanism for registering successful consumers of published events and this is now being used to keep a copy of all consumers that have successfully been published to by the interactor and then even if the interactor stops touching the interactable, the interactor still knows which consumers it can publish to (the grabbed consumers) because of this registry.

    The ActionPublisher has also been updated to utilise this new Zinnia consumer registry to ensure the same concept of a grabbed interactable can still pass through 3rd party button data even if it is not being touched by additionally registering to the interactor start grab publisher.

  • Interactions: force action grab setup to occur immediately (e78969b)

    There is an issue where instantiating an Interactable prefab and then immediately calling an Interactor.Grab on it will cause a null exception because for some reason Unity hasn't fully set up the instantiated GameObject by the time the event process has run and therefore the action.GrabSetUp won't be set until the action GameObject is enabled in the scene.

    The simplest solution to this is to force set the action.GrabSetUp immediately and then still do the wait to set it when the GameObject is enabled and then this way it will exist to do the preliminary setup and any additional setup that requires an active action will still occur.

1.12.2 (2020-07-28)

Bug Fixes

  • interactions: clear divergence states on ungrab (59d9ecf)

    The divergence states found within the divergable property modifiers needs to be cleared when the ungrab occurs otherwise the convergence of the source/target objects cannot occur.

1.12.1 (2020-07-28)

Miscellaneous Chores

1.12.0 (2020-07-22)

Features

  • Interactables: provide helper methods for common tasks (755188d)

    The InteractableFacade now has some common helper methods for tasks like enabling/disabling the touch and grab configurations in case of toggling the interactable behaviour.

    It is also possible to get access to common sub components from the facade such as the Rigidbody, MeshContainer, a collection of MeshRenderers and a collection of Colliders.

    The Interactable.TouchReceiver prefab has also been updated to contain additional useful references.

1.11.1 (2020-07-11)

Miscellaneous Chores

1.11.0 (2020-07-07)

Features

  • Interactions: provide new methods for auto grabbing interactable (a333827)

    The Interactable can now be grabbed automatically with a collection of new methods like:

    • GrabAtEndOfFrame (delays the grab until the end of frame) * GrabIgnoreUngrab (attempts a grab but doesn't call ungrab on the interactor)

    There is also a UngrabAtEndOfFrame which delays the ungrab until the end of the frame.

    These new methods allow for finer control when wanting to perform automatic grabs and ungrabs and allow for more advanced features such as psuedo multi grabbing.

Bug Fixes

  • dependabot: remove bddckr from default reviewer (a0c27da)

    Only need one reviewer in the dependabot config.

1.10.1 (2020-07-05)

Bug Fixes

  • Documentation: apply style guidelines (251ec26)

    The guide has had the style guidelines applied to it to make it more consistent.

1.10.0 (2020-07-03)

Features

  • API: add auto-generated API documentation (1358b98)

    The API documentation is auto generated with docfx and converted to markdown via turndown in a custom nodejs script.

Bug Fixes

  • package.json: add docfx.json file (fdd9e4c)

    The docfx.json file was missing from the package.json causing the build process to fail. It has now been added.

1.9.0 (2020-06-27)

Features

  • Interactables: apply more specific namespace to interactables (0f8b8d5)

    Previously, the Interactables were in a namespace that was at a higher level of the Interactors whereas Interactables should be at the same level.

    There is already an Interactables namespace used by both interactors and interactables so the best solution is to just have a double Interactables.Interactables namespace. Whilst this looks a bit strange it at least buckets the code at the correct level.

1.8.1 (2020-06-08)

Miscellaneous Chores

1.8.0 (2020-05-31)

Features

  • Interactions: add rotate around angular velocity follow type (968c19b)

    The new Rotate Around Angular Velocity follow type allows the interactable to follow the rotation of the interactor's angular velocity and can be useful for interactions such as turning something with wrist motion rather than controller positional changes.

1.7.4 (2020-05-31)

Miscellaneous Chores

1.7.3 (2020-05-22)

Miscellaneous Chores

1.7.2 (2020-05-22)

Miscellaneous Chores

1.7.1 (2020-04-21)

Miscellaneous Chores

1.7.0 (2020-04-14)

Features

  • Extraction: update Extractors to use new Zinnia generic types (b564002)

    Zinnia version 1.15.0 has new generic Extractor types that offer a consistent Extractor API.

    The Interactable and Interactor extractors have been updated so they extend these new generic types so they also offer a consistent API.

    The InteractorExtractor has had the ExtractAttachPoint method deprecated in place of a new InteractorAttachPoint extractor, which does the same job but is responsible for this specific action.

    The extractors have also been moved to a sub directory named: Operation/Extraction to follow the convention used in Zinnia.

    Also, the proxy emitter has been moved to Event/Proxy to follow the same Zinnia convention.

    The prefabs that used the old ExtractAttachPoint have been updated to now use the InteractorAttachPoint extractor and any 3rd party calling the ExtractAttachPoint method will get a log warning of the obsolete usage of this method.

1.6.1 (2020-04-08)

Bug Fixes

  • Interactions: fix spelling error on InteractableFacade editor (7e29690)

    There was a small spelling error on the custom InteractableFacade editor, which has now been corrected.

1.6.0 (2020-04-07)

Features

  • Interactions: add option to choose grab provider for interactable (873d237)

    The Interactable now has both the Stack and Set GrabProvider embedded within the prefab and an option on the InteractableFacade allows this GrabProvider to be changed at edit or runtime.

1.5.1 (2020-04-03)

Miscellaneous Chores

1.5.0 (2020-03-09)

Features

  • HowToGuides: add guide for orientation handles (66f8112)

    added guide to show how to use orientation handles when grabbing an interactable.

1.4.4 (2020-03-05)

Miscellaneous Chores

1.4.3 (2020-02-25)

Bug Fixes

  • HowToGuides: provide better grammatical sentences (5e38dc7)

    A number of the guides have been slightly updated to provide better grammar in the sentences and one of the images has been fixed where the wrong event action box was highlighted.

  • HowToGuides: provide correct package name in installation guide (ab2ebb0)

    The package name at the bottom of the installation guide was incorrect and referenced the wrong package. This has now been updated to reflect the correct package name.

1.4.2 (2020-02-24)

Bug Fixes

  • Interactions: allow for multiple grab orientation handles (814998e)

    There was an issue with the interactable when using multiple grab orientation handles as it was always set up by default to get the first GameObject relation, which meant when multiple orientation handles were required then the nested prefab logic would also need changing.

    It's now possible to do all of the logic required in the event flow due to a new event on the GameObjectRelations component.

    The new functionality is to attempt to match the Interactor GameObject as the key in the GameObjectRelations and if it's not found then the new event will simply attempt to look up the first relation as this is what happened previously.

  • Interactions: instantiate a prefab instead of gameobject in helper (0eeffc9)

    The InteractableFacadeEditor helper now will instantiate a copy of the grab action prefab instead of an actual GameObject. This means that the Interactable prefab in the scene still contains nested prefabs which should auto update with any changes to the internal nested grab action prefab.

1.4.1 (2020-02-24)

Miscellaneous Chores

1.4.0 (2020-02-14)

Features

  • HowToGuides: add guide for passing float value (e05913d)

    guide shows how to use Action Publisher and Action Receiver to pass float values.

1.3.0 (2020-01-17)

Features

  • Interactables: ability to convert GameObject to interactable (ddb2831)

    The new Interactable Creator inspector panel provides a simple button for selecting a GameObject in the hierarchy and then clicking the button to wrap the GameObject within a newly created Interactable prefab.

  • Interactor: ability to modify interactor settings dynamically (7f733c7)

    The InteractorFacadeSettingsModifier provides a way of specifying setting modifiers for a collection of interactors and then apply the settings dynamically.

    This can be used for updating the grab action on an interactor to be something different from the default based on the interactable being touched. For example, the default grab could be grip press but on touch of an interactable it could change the interactor grab action to be trigger press, and then on untouch resort to the original cached action.

Bug Fixes

  • Prefabs: set interactor grab anchor position to 0,0,0 (fcf422c)

    The Grab anchor on the interactor prefab had a z offset meaning it didn't grab to the point of collision when using precision grab.

    It's best to default the grab anchor to 0,0,0 and let users override it if they want.

1.2.0 (2020-01-15)

Features

  • HowToGuides: adding documentation for using the interactables. (a85611a)

    Added documentation on how to use the interactables prefab.

1.1.0 (2020-01-14)

Features

  • HowToGuides: add guide for adding an interactor (36e7d63)

    adding initial guide for adding an interactor.

1.0.0 (2020-01-02)

Features

  • structure: create initial prefab and user guides (2643da3)

    The structure of the repository has been created with all the required files for the package, the prefab and the documentation.