Zinnia.Unity Versions Save

A collection of design patterns for solving common problems.

v2.16.1

2 days ago

2.16.1 (2024-05-11)

Bug Fixes

  • Cast: correct type in raycast hit validity tooltip (acc3b49)

    The word Valid was spelt incorrectly.

  • Data: block custom list editor if ignore custom inspect is set (774c112)

    The custom Observable List Editor should also be blocked if the ZINNIA_IGNORE_CUSTOM_INSPECTOR_EDITOR ifdef is set otherwise it will throw an error becaue it will try and inherit from a class that does not get created in those circumstances.

v2.16.0

3 weeks ago

2.16.0 (2024-04-17)

Features

  • Cast: add raycast hit validity rule for points cast (170a241)

    The PointsCast now has a RaycastHitValidity rule that will allow any data within the cast RaycastHit to be used within a rule for any custom.

  • Cast: make drag curve offset a vector3 (f90f1e8)

    The Drag Curve Offset is now a Vector3 allowing the curve offset to be applied to any axis rather than just the back axis.

    To replicate the orignal setting, just change the Z axis to a negative value and this will replicate the same as the Vector3.back * offset.

  • Data: add script define to disable collapsible drawer (36f978b)

    The custom collapisble drawer editor modification can now be disabled by setting a scripting define symbol of ZINNIA_IGNORE_CUSTOM_COLLAPSIBLE_DRAWER.

  • README.md: add section describing custom script define symbols (3238142)

    The various script define symbols that are added by Zinnia are now documented to make it easier to know when to use them.

  • Tracking: apply distance offset on position difference rotation (208570d)

    The TransformPositionDifferenceRotation logic now has a source to offset maximum distance setting that will be activated if the Apply Offset is to true. This will ensure the rotation will only be applied when the source and offset are within the given distances and anything outside of those distances will be ignored.

Bug Fixes

  • Data: prevent null exception in collapsible drawer in 2022.3 (2ce9cef)

    Due to a change in Unity 2022.3, there is now no actual need to do the reflection for replacing a default drawer and in fact the attempt to get DrawerKeySet will return a null, thus causing the existing error.

    The fix is to simply do a null check to prevent the error and the reflection will simply be ignored on versions of Unity of 2022.3 and above.

v2.15.0

10 months ago

2.15.0 (2023-07-10)

Features

  • Action: add option to toggle emit events (d5dd0bc)

    The EmitEvents property can be unchecked to prevent any action events from being emitted when action values are changed.

    There are also two new methods ResetToInitialValue and ResetToDefaultValue that will reset an Action value to its default or inital value without calling any events either.

  • Tracking: add allow mutate option to transform property applier (1d30393)

    The TransformPropertyApplier now has an AllowMutate property the same as the TransformPropertyMutator, which can be used to prevent mutations occurring and will raise a skipped event if mutations are turned off.

    The before update event is always raised.

v2.14.0

10 months ago

2.14.0 (2023-07-08)

Features

  • Proxy: add boolean event proxy emitter (0e1f0d9)

    A new Proxy Emitter has been added for Boolean data types to easily allow chaining and proxying boolean data types.

v2.13.0

10 months ago

2.13.0 (2023-07-05)

Features

  • Mutation: emit pre/post mutation events on property mutators (cea6537)

    The TransformPropertyMutator now emits an event on pre mutation with the value that it is going to mutate the target to. It also emits an event when the mutation has occurred with this new value.

    It is also possible to prevent a mutation from occuring by setting the new Allow Mutation boolean property, which will still do the pre mutation event but will then skip the actual mutation of the target and not raise the post mutation event, but instead raise a mutation skipped event.

    This makes it possible to check to see if a property mutation will provide an undesired result in the pre mutation and then prevent the mutation from occuring by turning off the Allow Mutation.

    Some refactoring of the internal calls has been done too so it is cleaner and less code repetition.

  • Utility: allow pipeline shader to select material (26b7e26)

    The PipelineMaterialApplier component now has another option to determine what render pipeline is being used. The default Pipeline Shader name can also be provided to determine which render pipeline is active as sometimes the name is not robust enough as it can be renamed in the settings.

v2.12.1

1 year ago

2.12.1 (2023-05-06)

Bug Fixes

  • Cast: ensure pointer state is cleared on enable and disable (c1bd830)

    The state of the pointer is now cleared on enable and disable to ensure it is in the correct state.

  • Tracking: ensure is connected event raises (686bd72)

    The HasIsConnectedChange event now starts with a null state to ensure if the event is false by default then it at least will raise the connected event and toggle the state.

    There is also a test now for the BaseDeviceDetailsRecord.

  • Visual: ensure a forward of Vector3.zero cannot be set (eaabbdd)

    There can be an error when the current forward is Vector3.zero and this value is then used to try and set the renderElement forward and causes an error. So this prevents that from happening.

v2.12.0

1 year ago

2.12.0 (2023-05-01)

Features

  • Cast: add cursor lock and transition duration to points cast (057201c)

    The PointsCast now has a cursor lock function and a transition duration which allows the cursor to be locked to a location until the pointer moves a certain threshold distance away when the cursor location will then be updated, this can be used to prevent jittering or keep a solid lock on an object. The transition duration allows the pointer destination cursor to transition over time to the new destination providing a smoothing feature for the pointer cursor.

    The FixedLineCast has now been deprecated as the StraightLineCast now handles the concept of being a fixed line as it's basically the same thing and makes it more complex to implement functionality that is shared between the two concepts.

    The StraightLineCast now has the ability to fix the line at a set length and optionally ignore any new targets once fixed.

    Along with the cursor lock and transition duration, it's also possible to apply a drag effect to the straight line where the straight line actually bends to try and keep the straight line from the origin to the offset destination.

  • Cast: add points cast event proxy emitter (24d5c1a)

    The PointsCastEventProxyEmitter allows Points Cast data to be proxied.

  • Data: add more shorthand states for Vector3State (57ac8be)

    The Vector3State type now has additional short hand initialisers like XYOnly, XZOnly and YZOnly.

  • Event: add gameobject relations event proxy emitter (d1d8c2e)

    The GameObjectRelationsEventProxyEmitter makes it possible to proxy events containing the GameObjectRelations Payload.

  • Extension: add vector direction extension (883cf7d)

    A Direction extension method for Vector2 and Vector3 will get the direction vector between a source point and a target point.

  • Tracking: add limits to pinch scaler (498ff2d)

    The PinchScaler component can now have min/max scale limits applied to it as well as limiting the axes that will be scaled.

v2.11.0

1 year ago

2.11.0 (2023-04-16)

Features

  • Tracking: add active collision consumer collision extractor (483df69)

    A new component that allows to extract the collision notifier event data from the event data of the Active Collision Consumer.

    The Notifier Target Extractor also has the option now to get the absolute collider object or the compound parent (as was the original) functionality.

Bug Fixes

  • Utility: limit pipeline material applier to unity 2020 or above (c0a0466)

    The mechanism within the ScenePipelineMaterialApplier uses the FindObjectsOfType method that in Unity 2019.2 had the additional parameter of findInactive added, which is required for this functionality to work.

    However, in Unity 2019.4 this parameter is randomly removed, probably due to poor quality control from Unity, so this means that this functionality works in 2019.2, 2019.3 but throws an error in 2019.4.

    The feature is reintroduced in 2020.1, so the fix is just to support this functionality in 2020.1 as Unity won't back port a fix.

v2.10.0

1 year ago

2.10.0 (2023-04-03)

Features

  • Utility: add pipeline material applier component (bf82afb)

    The PipelineMaterialApplier will set the Materials on a given Renderer based on the current render pipeline being used. It gets the materials to apply from a given list of materials that has a string group name that matches the desired render pipeline name.

    If no render pipeline is provided then the matched name will be:

    • default

    There is also an editor menu item that will attempt to find all PipelineMaterialApplier components in the scene and run them to ensure all materials on the renderers are updated to match the current render pipeline.

v2.9.0

1 year ago

2.9.0 (2023-03-28)

Features

  • Extension: provide alternative method for isActiveAndEnabled (2abbbf4)

    It would seem that the behaviour.isActiveAndEnabled property does not always return what is expected. If a GameObject is active and the behaviour is enabled then isActiveAndEnabled can still return false whilst in the OnEnable state.

    It would seem that isActiveAndEnabled does not return true until all of the relevant initial Unity moments have passed for an Object.

    To counter this, a new BehaviourExtension has been added called CheckIsActiveAndEnabled() that will do an absolute check on the GameObject active state and the behaviour enabled state.

    If the old isActiveAndEnabled check is still required then it can be switched to by a scripting define symbol of:

    ZINNIA_USE_ISACTIVEANDENABLED

    All of the relevant files that use isActiveAndEnabled have now been updated to use the new CheckIsActiveAndEnabled() extension method.

  • Tracking: use current property value to set passthrough mode (d20e1ca)

    The new SetPassThrough method will simply call the relevant passthrough method based on the current PassThroughCameraEnabled value.

    This is useful if the passthrough camera has turned off due to application pause and needs returning back on when the app is unpaused.