io.extendreality.zinnia.unity
Advanced tools
Changelog
1.40.0 (2022-01-03)
The CollisionTracker now has an option to set a delay interval for the
Collision
andTrigger
Stay
methods to delay processing the next stay state until the delay interval has passed.This means it is possible to not have to process the stay state every single fixed update frame as this may be too frequent for certain circumstances and cause too much of a processing overhead.
Unity have fixed a bug in Unity 2020.3.24f to do with reorderable lists but that fix has caused the custom observable list editor to no longer display any of the elements of the list and no longer understands if the list is collapsible or not.
I can't be bothered to put the effort in to find out what Unity have done or where this has broken, it's a constant struggle of chasing after Unity changes so instead the feature of custom list editors is now just disabled for Unity 2020.3 and above.
It can be added back in with a custom script define symbol of:
ZINNIA_USE_CUSTOM_LIST_EDITOR
This will make the custom list editor appear again, however it will no longer be a collapsible element.
The custom list editor can also now be completely disabled by using the script define symbol of:
ZINNIA_IGNORE_CUSTOM_LIST_EDITOR
This will completely disable the custom list editor functionality.
Changelog
1.39.0 (2021-11-30)
There is an update in malimbe that will allow the weavers to run first time on Unity 2020 and above.
The SerializableType could throw a null exception if the assembly fully qualified name was no longer set.
Changelog
1.38.1 (2021-07-21)
There was an issue with the 2019 kinematic fix where if a GameObject with multiple child colliders was touched on one collider and then when the kinematic state changed the collider would no longer be touched but another collider in the GameObject was touched then the exit event would not happen for the original collider and the new start event for the new collider would not happen.
This would mean the collision with the original collider would have ended in the CollisionTracker but the CollisionTracker would not have reported it, and the new collider collision would not have a started event reported. Then when the actual new collider collision ended it would not report it had ended correctly.
The fix is to hold a dictionary for each collider and their frame interaction timestamp and then this is checked in the fix logic for the Exit/Enter that happens when the kinematic state is changed.
If the collider has changed then it won't cancel the deferred trigger exit so the exit will happen as expected, but if the collider hasn't changed then the deferred exit will be cancelled in the enter to prevent the enter/exit issue.
A new test has been added to prove all this logic works.
Changelog
1.38.0 (2021-07-19)
The new GameObjectChildByNameExtractor will extract a child GameObject from the Source GameObject by the path name to the child.
A rotational offset for the pivot can now be applied via a GameObject containing the rotational transform data.
The GameObject Extractor test class was named incorrectly so it has now been updated with the correct name.
There was an issue where the collider could be null even though the collider trigger status was being checked which would cause a null exception error. This is handled by just exiting the method early if the collider is now null.
There can be an issue where the collider transform is null due to it being destroyed during a loop causing the comparison to fail.
This fix just adds in a null check to make sure no fatal error can cause a crash.
Changelog
1.37.0 (2021-06-24)
The methods responsible for handling collision events in the CollisionNotifier have been made public so they can be called manually if need be.
This is useful if a manual collision is needed to be raised without an actual physics collision taking place to simulate collisions.
The movement of the mesh overlay seems to cause the component to get disabled and then re-enabled causing the mesh to not be available at some points, which means the fade doesn't work.
Instead of destroying the mesh when the component is disabled, it now just disables the renderer component and makes the destroy mesh method public so it can be manually destroyed.
There was an issue with the CameraColorOverlay where the fadeRenderer would get destroyed but it was still being accessed causing a null exception. This fix just resolves that by exiting from the method early if it is null.
Co-authored-by: Borck borck@hotmail.de
Changelog
1.36.2 (2021-06-19)
The kinematic state change fix that was introduced to fix the PhysX change in Unity 2019.3 was causing an issue with compound colliders because the OnTriggerXXX will fire for every change in a compound collider and not just at the containing Rigidbody.
This would mean that with compound colliders it would get out of sync with the state changed check when the kinematic state changed.
This has been fixed now by checking if the given collider in the OnTriggerExit method has already been fired (on the containing Rigidbody) within the same frame, and if it has then this is most likely a compound collider causing the event so they get ignored.
The prefab creator now adds the newly created prefab to the selected GameObject rather than just putting it in the root.
Changelog
1.36.1 (2021-06-10)
The CameraColorOverlay now supports the URP rendering process by drawing a quad in front of the GameObject with the current rendering camera.
It requires a particular shader to work well, which will be included in a Tilia package.
The title logo is now located on the related-media repo.
Changelog
1.36.0 (2021-05-09)
The CollisionTracker component now has a Collider Validity rule to determine whether it can emit collisions of the collider that is being collided with passes the validity rule check.
Headers have been added to the properties for better separation in the Unity editor.
Changelog
1.35.0 (2021-05-03)
The new cast converters allow a PhysicsCast based caster to be converted from one cast type or another.
This allows a component to do a PhysicsCast such as a raycast and then at runtime have that component's caster switched out for a different cast type like a spherecast.
The PhysicsCast class now has unit tests which check the functionality of the custom caster methods.