{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":485880912,"defaultBranch":"main","name":"UnityExtras","ownerLogin":"CaseyHofland","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-04-26T17:17:31.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/27729987?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1692605742.0","currentOid":""},"activityList":{"items":[{"before":"e7d17dc0eca1469dc01e7f328cbcf73c8b19ed98","after":"2cf10863c2050a5696e9fb3699d2e4985cb1bd4a","ref":"refs/heads/develop","pushedAt":"2023-08-24T08:51:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Simplified Switches\n\nA `Switch` should have as little overhead as possible:\n- It no longer invokes it current state during `OnEnable`. Instead, it assumes it starts off and doesn't invoke any of its events.\n- `Switch.invertSwitch` has been moved to `ConditionalSwitch.invertSwitch`. Base `Switch`es should be as simple to reason about as possible.\n- `ConditionalSwitch` no longer invokes its current state during `OnEnable`. Instead, it assumes it starts off and doesn't invoke any of its events. Due to the check being made in `Update`, it may occur that `on` is invoked during the first frame of gameplay.","shortMessageHtmlLink":"Simplified Switches"}},{"before":"5e2197fceb9828d77e17fc6479eae1c57318cf11","after":"e7d17dc0eca1469dc01e7f328cbcf73c8b19ed98","ref":"refs/heads/develop","pushedAt":"2023-08-21T08:14:38.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Merge branch 'main' of https://github.com/Casey-Hofland/UnityExtras into develop","shortMessageHtmlLink":"Merge branch 'main' of https://github.com/Casey-Hofland/UnityExtras i…"}},{"before":"b51f26b36b895c809623f115865c9ba4d978b286","after":"c6453439436b5334a78202bd3b69c03ad15acbc9","ref":"refs/heads/main","pushedAt":"2023-08-21T08:14:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Change version to 1.2.1 (#8)\n\n* Add TimeInstance\r\n\r\nThis is an instance to set TimeScale via Instances.\r\n\r\n* Add First Person Character Sample\r\n\r\nThis lets you quickly import a first person character in your scene to experiment with.\r\n\r\n* Add Log methods to MonoEvent\r\n\r\nRemove MonoEvent's debug messages, that would trigger an unnecessary if check. Instead, it now provides a log method that you can link inside your event in order to log messages when you feel it is appropriate.\r\n\r\n* Improve Switches\r\n\r\nSwitches have been reworked to work more logically and allow for more use cases.\r\n\r\n- `reverse` has been renamed to `invertSwitch`, which is much more explicit.\r\n- `isOn` has been made public and takes `invertSwitch` into account much more appropriately. e.g. if you call `isOn = false` when `invertSwitch == true`, the `on` event will be called as expected.\r\n- `ConditionalSwitch` is an extension of `Switch` that replaces the old switch behaviour. `ConditionalSwitch` has an `Update` call, `Switch` does not, meaning it can be used with less overhead.\r\n- `LocalPositionSwitch` has been renamed to `PositionSwitch` and inherits from `ConditionalSwitch`.\r\n- `PositionSwitch`, instead of taking a `Vector3 targetLocalPosition`, now takes a `Transform target` and a `Vector3 offset`. This provides much more flexibility where the switch can easily be made local by providing the target with the parent of the object, while also allowing for more use cases where the target can move around or the offset be set in world space.\r\n\r\n* Add InputSwitch\r\n\r\n`InputSwitch` inherit from the improved `Switch` architecture in order to invoke `on` and `off` via an input button, without incurring any overhead on update.\r\n\r\n* Change version to 1.2.1\r\n\r\nChange the package version and the changelog to accomodate.","shortMessageHtmlLink":"Change version to 1.2.1 (#8)"}},{"before":"b51f26b36b895c809623f115865c9ba4d978b286","after":"5e2197fceb9828d77e17fc6479eae1c57318cf11","ref":"refs/heads/develop","pushedAt":"2023-08-21T08:13:00.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Change version to 1.2.1\n\nChange the package version and the changelog to accomodate.","shortMessageHtmlLink":"Change version to 1.2.1"}},{"before":null,"after":"b51f26b36b895c809623f115865c9ba4d978b286","ref":"refs/heads/develop","pushedAt":"2023-08-19T14:04:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add comments to serializable values (#7)\n\n* Move Menus into \"Menus\" folder\r\n\r\nAlso rename \"ContextualMenus\" script to \"Menus.Contextual\" and use the partial class for it.\r\n\r\n* Add RotateAnimationsToMovePerfectlyForwards menu\r\n\r\nThis will rotate animations on model importers to move perfectly forwards (duh)\r\n\r\n* Fix an issue in LinkPropertyDrawer\r\n\r\nIt would not always update correctly if a property changed through another property, but that has been fixed.\r\n\r\n* Add AnimatorParameters\r\n\r\nThese structs allow for linking up to Animator Parameters in a clean manner where all settings are kept in one place and easy to code for. They also have nice editors allowing you to test different values for your animations inside the inspector.\r\n\r\n* Moved the Rigging folder under the Animation folder\r\n\r\n* Remove the AnimatorHash.uxml\r\n\r\nIt was excessive, so I opted to simply bind the property in script. This makes it easier to share AnimatorHashDrawer with friends.\r\n\r\n* Add GetAspectRatio method to ExtraMath\r\n\r\nThis will calculate the smallest possible aspect ratio of a width and height.\r\n\r\ne.g. 1920 & 1080 returns 16 & 9\r\n\r\n* Relax FocusPoint implementation\r\n\r\nRemove FocusPoints Scriptable Object and instead store the list of focus points inside the FocusPointConstraint class.\r\n\r\n* Fix AnimatorParameter Issues and improve ease-of-use\r\n\r\nThe AnimatorParameters would not display correctly in the inspector, with the foldout not being clickable and the AnimatorHash being drawn in front of it. These display issues have been fixed.\r\n\r\nAdditionally, all AnimatorParameters are classes now as structs would trigger Error Code CS1612 \"Cannot modify the return value of 'expression' because it is not a variable\". Simply copying the value and placing it back would not be a great option since the current architecture relies on a persistent data model because of its ties with Action onValueChanged.\r\n\r\nSpeaking of which, onValueChanged will now trigger even if the new value is the same as the old value. This is to allow for animator parameters to be changed by different means than the Parameter class itself.\r\n\r\nAnd lastly, a default coroutine has been added under the AnimatorExtensions to allow for quickly setting up coroutines with FloatParameters as these often have a damptime.\r\n\r\n* Important Fixes\r\n\r\nDirection was not under the UnityExtras namespace.\r\n\r\nPropertyMember's argument exception was a little unclear so it has been made more verbose about what's going wrong.\r\n\r\nSerializedPropertyExtension would fail when trying to target a custom IList with custom serialization.\r\n\r\n* ExtraMath.Round\r\n\r\nMethod to round a float to a set number of decimals.\r\n\r\n* Add ScriptableAnimationEvent\r\n\r\nAnimationEvents have a very rigid architecture, calling methods by name and only allowing for a handful of limited forms of data to be attached to it.\r\n\r\nScriptableAnimationEvents, while not a perfect system, are a very easy way to use AnimationEvents in a modular fashion. All that is required is to attach a ScriptableAnimationEventListener to your Animator, to name all your functions \"Play\", and to attach a ScriptableAnimationEvent as object data. The ScriptableAnimationEvent will then play as intended.\r\n\r\nScriptableAnimationEvents are ScriptableObjects, so they can be created as data packets. It's core functionality is that a ScriptableAnimationEvent can have children of ScriptableAnimationEvents, meaning you can easily link different events together and mix them for different situations.\r\n\r\n* Remove Destroy Delay from Instantiate\r\n\r\n- Particle Systems already have a \"Destroy on Stop\" event apparently :P\r\n\r\n* Move AnimatorHash to SerializableValues\r\n\r\nAnimatorHash has a broad and general application, earning it a spot as a SerializableValue rather than an AnimatorParameter-specific value.\r\n\r\n* Add ShaderId\r\n\r\nThis is a value much like AnimatorHash where it takes a string but returns an id for optimized lookup for shader properties.\r\n\r\n* Update ScriptableAnimationEvents to take an AnimationEvent\r\n\r\nAnimationEvents carry information about the event.\r\n\r\n* Update Direction Implementation\r\n\r\nAdded a RelativeDirection that can take a transform in order to calculate a relative direction. This means you can specify Vector3.down based on the rotation of a transform, which may help out with relative directions.\r\n\r\nThe old drawer was broken due to a quirk with the inspectors being drawn using UIElements. The drawer has been updated to use UIElements now.\r\n\r\nIKPlanter will now ignore any attached rigidbodies and colliders that are children of the rigbuilder, if it can find any.\r\n\r\n* Various Fixes\r\n\r\nObjectDrawer could crash the editor, a check has been added to make sure it won't.\r\nReactionUpdater needed wasn't added to DontDestroyOnLoad.\r\nVarious whitespaces added and removes.\r\n\r\n* Update the package to version 1.2.0 for Unity 2022.2\r\n\r\n* Fix rigbuilder is null issue when building the rig collision model\r\n\r\n* Add CharacterInputBase to derive CharacterInput from\r\n\r\nThis makes it easier to create new CharacterInput that uses CharacterMoverBase\r\n\r\n* Add ThirdPersonCharacter Input for the CharacterMover\r\n\r\n* Add a TurnTowards method inside the CharacterMover\r\n\r\nIt keeps coming up.\r\n\r\n* Add Crouch and IsJumping input\r\n\r\n* Add Serialize Command to Objects if RuntimeSceneSerialization is installed\r\n\r\nThe RuntimeSceneSerialization package is amazing! It lets you easily save scenes in Unity and is really reusable.\r\nThis simple command lets you serialize objects to a json file. This can then be used to save and apply object states, like in the following example:\r\n\r\npublic class Test : MonoBehaviour\r\n{\r\n public TextAsset defaultState;\r\n public TextAsset crouchState;\r\n\r\n [ContextMenu(\"Default\")]\r\n public void Default()\r\n {\r\n var capsuleCollider = GetComponent();\r\n SceneSerialization.FromJsonOverwrite(defaultState.text, ref capsuleCollider);\r\n }\r\n\r\n [ContextMenu(\"Crouch\")]\r\n public void Crouch()\r\n {\r\n var capsuleCollider = GetComponent();\r\n SceneSerialization.FromJsonOverwrite(crouchState.text, ref capsuleCollider);\r\n }\r\n}\r\n\r\n* Fix targetMotion reseting too late\r\n\r\ntargetMotion was reset after CharacterMove. This was causing an issue where applying targetMotion inside an OnControllerColliderHit function would get reset right after.\r\n\r\n* Add CharacterSlopeSlider\r\n\r\nThis component makes CharacterControllers slide off of slopes. Normally the CharacterController reaching its slope limit stands still. This is a problem when your character can jump and move in the air, as it could simply jump up any slope without issue. This component slides a character down a slope and prevents it from jumping.\r\n\r\n* Fix TurnTowards overshooting.\r\n\r\nTurnTowards would overshoot if the rotation speed was set really high. Now it just snaps to the right direction if this happens.\r\n\r\n* Add Helpboxes to the CharacterMover for recommended usage\r\n\r\n- Add a helpbox for when the min move distance is not 0, and remove the debug log about this.\r\n- Add a helpbox for when there isn't a Rigidbody attached to the CharacterMover, as the CharacterController by itself will not fire trigger- and collision events correctly.\r\n\r\n* Add \"Set Recommended Rigidbody\" menu item to the CharacterController\r\n\r\nCharacterControllers on their own do not fire collision events correctly (e.g. OnTriggerExit never triggers, OnTriggerEnter triggers constantly, behavior is inconsistent). This is not what you would expect from a moving object. To fire collision events correctly, it needs a rigidbody attached. Due to CharacterControllers kinematic nature, there are preferred settings to couple with a Rigidbody, and this menu item sets those for you if you mess up.\r\n\r\n* Add Instance and CursorInstance\r\n\r\nInstance is a simple way to set static in Unity via components. Singletons carry many interdependencies with them, but Instances operate completely autonomously. The current instance is always the one that was added last. It provides a SetState method that is called on enable. When the component is disabled, the last known instance will be enabled.\r\n\r\nCursorInstance has been provided as an example of how to use Instance. When set state gets called, it will simply set the state of the static Unity cursor.\r\n\r\n* Add LightControlAsset and LightControlTrack\r\n\r\nLightControlAsset is a PlayableAsset that can bee used to change the color and intensity of a light.\r\nLightControlTrack adds this functionality to Timeline as a ways for controlling lights during e.g. a cutscene.\r\n\r\n* Add my custom Repeat function to the UnityExtras namespace.\r\n\r\n* Remove commented line from FocusPoint\r\n\r\n* Remove AnimatorParameters\r\n\r\nThis was a failed API. However, the AnimatorHash has been kept, as it was a very solid value.\r\n\r\n* Remove \"Serialize Object\" command\r\n\r\nThe command to serialize any object into a json file is a little too powerful. This should instead be implemented on a per-object basis.\r\n\r\n* Add missing Undo to \"SetRecommendedRigidbody\" Menu\r\n\r\n* Change package data order\r\n\r\n* Add changelog\r\n\r\n* Add comments to Serializable Values","shortMessageHtmlLink":"Add comments to serializable values (#7)"}},{"before":"c3617538b2bb5cb86e2863d12b16b84ae22468a6","after":null,"ref":"refs/heads/develop","pushedAt":"2023-08-19T14:03:48.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"}},{"before":"28191c5cb98932df673265026167df413199b9bc","after":"c3617538b2bb5cb86e2863d12b16b84ae22468a6","ref":"refs/heads/develop","pushedAt":"2023-08-19T14:03:10.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Merge branch 'main' of https://github.com/Casey-Hofland/UnityExtras into develop","shortMessageHtmlLink":"Merge branch 'main' of https://github.com/Casey-Hofland/UnityExtras i…"}},{"before":"9e1f135e9fa4b8b1264fe9b716209aa7e2ef8139","after":"b51f26b36b895c809623f115865c9ba4d978b286","ref":"refs/heads/main","pushedAt":"2023-08-19T14:02:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add comments to serializable values (#7)\n\n* Move Menus into \"Menus\" folder\r\n\r\nAlso rename \"ContextualMenus\" script to \"Menus.Contextual\" and use the partial class for it.\r\n\r\n* Add RotateAnimationsToMovePerfectlyForwards menu\r\n\r\nThis will rotate animations on model importers to move perfectly forwards (duh)\r\n\r\n* Fix an issue in LinkPropertyDrawer\r\n\r\nIt would not always update correctly if a property changed through another property, but that has been fixed.\r\n\r\n* Add AnimatorParameters\r\n\r\nThese structs allow for linking up to Animator Parameters in a clean manner where all settings are kept in one place and easy to code for. They also have nice editors allowing you to test different values for your animations inside the inspector.\r\n\r\n* Moved the Rigging folder under the Animation folder\r\n\r\n* Remove the AnimatorHash.uxml\r\n\r\nIt was excessive, so I opted to simply bind the property in script. This makes it easier to share AnimatorHashDrawer with friends.\r\n\r\n* Add GetAspectRatio method to ExtraMath\r\n\r\nThis will calculate the smallest possible aspect ratio of a width and height.\r\n\r\ne.g. 1920 & 1080 returns 16 & 9\r\n\r\n* Relax FocusPoint implementation\r\n\r\nRemove FocusPoints Scriptable Object and instead store the list of focus points inside the FocusPointConstraint class.\r\n\r\n* Fix AnimatorParameter Issues and improve ease-of-use\r\n\r\nThe AnimatorParameters would not display correctly in the inspector, with the foldout not being clickable and the AnimatorHash being drawn in front of it. These display issues have been fixed.\r\n\r\nAdditionally, all AnimatorParameters are classes now as structs would trigger Error Code CS1612 \"Cannot modify the return value of 'expression' because it is not a variable\". Simply copying the value and placing it back would not be a great option since the current architecture relies on a persistent data model because of its ties with Action onValueChanged.\r\n\r\nSpeaking of which, onValueChanged will now trigger even if the new value is the same as the old value. This is to allow for animator parameters to be changed by different means than the Parameter class itself.\r\n\r\nAnd lastly, a default coroutine has been added under the AnimatorExtensions to allow for quickly setting up coroutines with FloatParameters as these often have a damptime.\r\n\r\n* Important Fixes\r\n\r\nDirection was not under the UnityExtras namespace.\r\n\r\nPropertyMember's argument exception was a little unclear so it has been made more verbose about what's going wrong.\r\n\r\nSerializedPropertyExtension would fail when trying to target a custom IList with custom serialization.\r\n\r\n* ExtraMath.Round\r\n\r\nMethod to round a float to a set number of decimals.\r\n\r\n* Add ScriptableAnimationEvent\r\n\r\nAnimationEvents have a very rigid architecture, calling methods by name and only allowing for a handful of limited forms of data to be attached to it.\r\n\r\nScriptableAnimationEvents, while not a perfect system, are a very easy way to use AnimationEvents in a modular fashion. All that is required is to attach a ScriptableAnimationEventListener to your Animator, to name all your functions \"Play\", and to attach a ScriptableAnimationEvent as object data. The ScriptableAnimationEvent will then play as intended.\r\n\r\nScriptableAnimationEvents are ScriptableObjects, so they can be created as data packets. It's core functionality is that a ScriptableAnimationEvent can have children of ScriptableAnimationEvents, meaning you can easily link different events together and mix them for different situations.\r\n\r\n* Remove Destroy Delay from Instantiate\r\n\r\n- Particle Systems already have a \"Destroy on Stop\" event apparently :P\r\n\r\n* Move AnimatorHash to SerializableValues\r\n\r\nAnimatorHash has a broad and general application, earning it a spot as a SerializableValue rather than an AnimatorParameter-specific value.\r\n\r\n* Add ShaderId\r\n\r\nThis is a value much like AnimatorHash where it takes a string but returns an id for optimized lookup for shader properties.\r\n\r\n* Update ScriptableAnimationEvents to take an AnimationEvent\r\n\r\nAnimationEvents carry information about the event.\r\n\r\n* Update Direction Implementation\r\n\r\nAdded a RelativeDirection that can take a transform in order to calculate a relative direction. This means you can specify Vector3.down based on the rotation of a transform, which may help out with relative directions.\r\n\r\nThe old drawer was broken due to a quirk with the inspectors being drawn using UIElements. The drawer has been updated to use UIElements now.\r\n\r\nIKPlanter will now ignore any attached rigidbodies and colliders that are children of the rigbuilder, if it can find any.\r\n\r\n* Various Fixes\r\n\r\nObjectDrawer could crash the editor, a check has been added to make sure it won't.\r\nReactionUpdater needed wasn't added to DontDestroyOnLoad.\r\nVarious whitespaces added and removes.\r\n\r\n* Update the package to version 1.2.0 for Unity 2022.2\r\n\r\n* Fix rigbuilder is null issue when building the rig collision model\r\n\r\n* Add CharacterInputBase to derive CharacterInput from\r\n\r\nThis makes it easier to create new CharacterInput that uses CharacterMoverBase\r\n\r\n* Add ThirdPersonCharacter Input for the CharacterMover\r\n\r\n* Add a TurnTowards method inside the CharacterMover\r\n\r\nIt keeps coming up.\r\n\r\n* Add Crouch and IsJumping input\r\n\r\n* Add Serialize Command to Objects if RuntimeSceneSerialization is installed\r\n\r\nThe RuntimeSceneSerialization package is amazing! It lets you easily save scenes in Unity and is really reusable.\r\nThis simple command lets you serialize objects to a json file. This can then be used to save and apply object states, like in the following example:\r\n\r\npublic class Test : MonoBehaviour\r\n{\r\n public TextAsset defaultState;\r\n public TextAsset crouchState;\r\n\r\n [ContextMenu(\"Default\")]\r\n public void Default()\r\n {\r\n var capsuleCollider = GetComponent();\r\n SceneSerialization.FromJsonOverwrite(defaultState.text, ref capsuleCollider);\r\n }\r\n\r\n [ContextMenu(\"Crouch\")]\r\n public void Crouch()\r\n {\r\n var capsuleCollider = GetComponent();\r\n SceneSerialization.FromJsonOverwrite(crouchState.text, ref capsuleCollider);\r\n }\r\n}\r\n\r\n* Fix targetMotion reseting too late\r\n\r\ntargetMotion was reset after CharacterMove. This was causing an issue where applying targetMotion inside an OnControllerColliderHit function would get reset right after.\r\n\r\n* Add CharacterSlopeSlider\r\n\r\nThis component makes CharacterControllers slide off of slopes. Normally the CharacterController reaching its slope limit stands still. This is a problem when your character can jump and move in the air, as it could simply jump up any slope without issue. This component slides a character down a slope and prevents it from jumping.\r\n\r\n* Fix TurnTowards overshooting.\r\n\r\nTurnTowards would overshoot if the rotation speed was set really high. Now it just snaps to the right direction if this happens.\r\n\r\n* Add Helpboxes to the CharacterMover for recommended usage\r\n\r\n- Add a helpbox for when the min move distance is not 0, and remove the debug log about this.\r\n- Add a helpbox for when there isn't a Rigidbody attached to the CharacterMover, as the CharacterController by itself will not fire trigger- and collision events correctly.\r\n\r\n* Add \"Set Recommended Rigidbody\" menu item to the CharacterController\r\n\r\nCharacterControllers on their own do not fire collision events correctly (e.g. OnTriggerExit never triggers, OnTriggerEnter triggers constantly, behavior is inconsistent). This is not what you would expect from a moving object. To fire collision events correctly, it needs a rigidbody attached. Due to CharacterControllers kinematic nature, there are preferred settings to couple with a Rigidbody, and this menu item sets those for you if you mess up.\r\n\r\n* Add Instance and CursorInstance\r\n\r\nInstance is a simple way to set static in Unity via components. Singletons carry many interdependencies with them, but Instances operate completely autonomously. The current instance is always the one that was added last. It provides a SetState method that is called on enable. When the component is disabled, the last known instance will be enabled.\r\n\r\nCursorInstance has been provided as an example of how to use Instance. When set state gets called, it will simply set the state of the static Unity cursor.\r\n\r\n* Add LightControlAsset and LightControlTrack\r\n\r\nLightControlAsset is a PlayableAsset that can bee used to change the color and intensity of a light.\r\nLightControlTrack adds this functionality to Timeline as a ways for controlling lights during e.g. a cutscene.\r\n\r\n* Add my custom Repeat function to the UnityExtras namespace.\r\n\r\n* Remove commented line from FocusPoint\r\n\r\n* Remove AnimatorParameters\r\n\r\nThis was a failed API. However, the AnimatorHash has been kept, as it was a very solid value.\r\n\r\n* Remove \"Serialize Object\" command\r\n\r\nThe command to serialize any object into a json file is a little too powerful. This should instead be implemented on a per-object basis.\r\n\r\n* Add missing Undo to \"SetRecommendedRigidbody\" Menu\r\n\r\n* Change package data order\r\n\r\n* Add changelog\r\n\r\n* Add comments to Serializable Values","shortMessageHtmlLink":"Add comments to serializable values (#7)"}},{"before":"6d192595efa1903aeaaa6929d800bee1fea0527c","after":"28191c5cb98932df673265026167df413199b9bc","ref":"refs/heads/develop","pushedAt":"2023-08-19T14:02:01.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Merge branch 'main' of https://github.com/Casey-Hofland/UnityExtras into develop\n\n# Conflicts:\n#\tEditor/Serializable Value Drawers/RelativeDirectionDrawer.cs\n#\tRuntime/Serializable Values/Direction.cs\n#\tRuntime/Serializable Values/RelativeDirection.cs\n#\tRuntime/Serializable Values/ShaderId.cs","shortMessageHtmlLink":"Merge branch 'main' of https://github.com/Casey-Hofland/UnityExtras i…"}},{"before":"cfa87d725821a43a616e299e4b07bc257c973328","after":"6d192595efa1903aeaaa6929d800bee1fea0527c","ref":"refs/heads/develop","pushedAt":"2023-08-19T13:59:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add comments to Serializable Values","shortMessageHtmlLink":"Add comments to Serializable Values"}},{"before":"d440927fc6d938d1ff9684094cefa49e9d7db9e9","after":"9e1f135e9fa4b8b1264fe9b716209aa7e2ef8139","ref":"refs/heads/main","pushedAt":"2023-08-19T12:52:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Update main to version 1.2.0 for Unity 2022.2 (#6)\n\n* Move Menus into \"Menus\" folder\r\n\r\nAlso rename \"ContextualMenus\" script to \"Menus.Contextual\" and use the partial class for it.\r\n\r\n* Add RotateAnimationsToMovePerfectlyForwards menu\r\n\r\nThis will rotate animations on model importers to move perfectly forwards (duh)\r\n\r\n* Fix an issue in LinkPropertyDrawer\r\n\r\nIt would not always update correctly if a property changed through another property, but that has been fixed.\r\n\r\n* Add AnimatorParameters\r\n\r\nThese structs allow for linking up to Animator Parameters in a clean manner where all settings are kept in one place and easy to code for. They also have nice editors allowing you to test different values for your animations inside the inspector.\r\n\r\n* Moved the Rigging folder under the Animation folder\r\n\r\n* Remove the AnimatorHash.uxml\r\n\r\nIt was excessive, so I opted to simply bind the property in script. This makes it easier to share AnimatorHashDrawer with friends.\r\n\r\n* Add GetAspectRatio method to ExtraMath\r\n\r\nThis will calculate the smallest possible aspect ratio of a width and height.\r\n\r\ne.g. 1920 & 1080 returns 16 & 9\r\n\r\n* Relax FocusPoint implementation\r\n\r\nRemove FocusPoints Scriptable Object and instead store the list of focus points inside the FocusPointConstraint class.\r\n\r\n* Fix AnimatorParameter Issues and improve ease-of-use\r\n\r\nThe AnimatorParameters would not display correctly in the inspector, with the foldout not being clickable and the AnimatorHash being drawn in front of it. These display issues have been fixed.\r\n\r\nAdditionally, all AnimatorParameters are classes now as structs would trigger Error Code CS1612 \"Cannot modify the return value of 'expression' because it is not a variable\". Simply copying the value and placing it back would not be a great option since the current architecture relies on a persistent data model because of its ties with Action onValueChanged.\r\n\r\nSpeaking of which, onValueChanged will now trigger even if the new value is the same as the old value. This is to allow for animator parameters to be changed by different means than the Parameter class itself.\r\n\r\nAnd lastly, a default coroutine has been added under the AnimatorExtensions to allow for quickly setting up coroutines with FloatParameters as these often have a damptime.\r\n\r\n* Important Fixes\r\n\r\nDirection was not under the UnityExtras namespace.\r\n\r\nPropertyMember's argument exception was a little unclear so it has been made more verbose about what's going wrong.\r\n\r\nSerializedPropertyExtension would fail when trying to target a custom IList with custom serialization.\r\n\r\n* ExtraMath.Round\r\n\r\nMethod to round a float to a set number of decimals.\r\n\r\n* Add ScriptableAnimationEvent\r\n\r\nAnimationEvents have a very rigid architecture, calling methods by name and only allowing for a handful of limited forms of data to be attached to it.\r\n\r\nScriptableAnimationEvents, while not a perfect system, are a very easy way to use AnimationEvents in a modular fashion. All that is required is to attach a ScriptableAnimationEventListener to your Animator, to name all your functions \"Play\", and to attach a ScriptableAnimationEvent as object data. The ScriptableAnimationEvent will then play as intended.\r\n\r\nScriptableAnimationEvents are ScriptableObjects, so they can be created as data packets. It's core functionality is that a ScriptableAnimationEvent can have children of ScriptableAnimationEvents, meaning you can easily link different events together and mix them for different situations.\r\n\r\n* Remove Destroy Delay from Instantiate\r\n\r\n- Particle Systems already have a \"Destroy on Stop\" event apparently :P\r\n\r\n* Move AnimatorHash to SerializableValues\r\n\r\nAnimatorHash has a broad and general application, earning it a spot as a SerializableValue rather than an AnimatorParameter-specific value.\r\n\r\n* Add ShaderId\r\n\r\nThis is a value much like AnimatorHash where it takes a string but returns an id for optimized lookup for shader properties.\r\n\r\n* Update ScriptableAnimationEvents to take an AnimationEvent\r\n\r\nAnimationEvents carry information about the event.\r\n\r\n* Update Direction Implementation\r\n\r\nAdded a RelativeDirection that can take a transform in order to calculate a relative direction. This means you can specify Vector3.down based on the rotation of a transform, which may help out with relative directions.\r\n\r\nThe old drawer was broken due to a quirk with the inspectors being drawn using UIElements. The drawer has been updated to use UIElements now.\r\n\r\nIKPlanter will now ignore any attached rigidbodies and colliders that are children of the rigbuilder, if it can find any.\r\n\r\n* Various Fixes\r\n\r\nObjectDrawer could crash the editor, a check has been added to make sure it won't.\r\nReactionUpdater needed wasn't added to DontDestroyOnLoad.\r\nVarious whitespaces added and removes.\r\n\r\n* Update the package to version 1.2.0 for Unity 2022.2\r\n\r\n* Fix rigbuilder is null issue when building the rig collision model\r\n\r\n* Add CharacterInputBase to derive CharacterInput from\r\n\r\nThis makes it easier to create new CharacterInput that uses CharacterMoverBase\r\n\r\n* Add ThirdPersonCharacter Input for the CharacterMover\r\n\r\n* Add a TurnTowards method inside the CharacterMover\r\n\r\nIt keeps coming up.\r\n\r\n* Add Crouch and IsJumping input\r\n\r\n* Add Serialize Command to Objects if RuntimeSceneSerialization is installed\r\n\r\nThe RuntimeSceneSerialization package is amazing! It lets you easily save scenes in Unity and is really reusable.\r\nThis simple command lets you serialize objects to a json file. This can then be used to save and apply object states, like in the following example:\r\n\r\npublic class Test : MonoBehaviour\r\n{\r\n public TextAsset defaultState;\r\n public TextAsset crouchState;\r\n\r\n [ContextMenu(\"Default\")]\r\n public void Default()\r\n {\r\n var capsuleCollider = GetComponent();\r\n SceneSerialization.FromJsonOverwrite(defaultState.text, ref capsuleCollider);\r\n }\r\n\r\n [ContextMenu(\"Crouch\")]\r\n public void Crouch()\r\n {\r\n var capsuleCollider = GetComponent();\r\n SceneSerialization.FromJsonOverwrite(crouchState.text, ref capsuleCollider);\r\n }\r\n}\r\n\r\n* Fix targetMotion reseting too late\r\n\r\ntargetMotion was reset after CharacterMove. This was causing an issue where applying targetMotion inside an OnControllerColliderHit function would get reset right after.\r\n\r\n* Add CharacterSlopeSlider\r\n\r\nThis component makes CharacterControllers slide off of slopes. Normally the CharacterController reaching its slope limit stands still. This is a problem when your character can jump and move in the air, as it could simply jump up any slope without issue. This component slides a character down a slope and prevents it from jumping.\r\n\r\n* Fix TurnTowards overshooting.\r\n\r\nTurnTowards would overshoot if the rotation speed was set really high. Now it just snaps to the right direction if this happens.\r\n\r\n* Add Helpboxes to the CharacterMover for recommended usage\r\n\r\n- Add a helpbox for when the min move distance is not 0, and remove the debug log about this.\r\n- Add a helpbox for when there isn't a Rigidbody attached to the CharacterMover, as the CharacterController by itself will not fire trigger- and collision events correctly.\r\n\r\n* Add \"Set Recommended Rigidbody\" menu item to the CharacterController\r\n\r\nCharacterControllers on their own do not fire collision events correctly (e.g. OnTriggerExit never triggers, OnTriggerEnter triggers constantly, behavior is inconsistent). This is not what you would expect from a moving object. To fire collision events correctly, it needs a rigidbody attached. Due to CharacterControllers kinematic nature, there are preferred settings to couple with a Rigidbody, and this menu item sets those for you if you mess up.\r\n\r\n* Add Instance and CursorInstance\r\n\r\nInstance is a simple way to set static in Unity via components. Singletons carry many interdependencies with them, but Instances operate completely autonomously. The current instance is always the one that was added last. It provides a SetState method that is called on enable. When the component is disabled, the last known instance will be enabled.\r\n\r\nCursorInstance has been provided as an example of how to use Instance. When set state gets called, it will simply set the state of the static Unity cursor.\r\n\r\n* Add LightControlAsset and LightControlTrack\r\n\r\nLightControlAsset is a PlayableAsset that can bee used to change the color and intensity of a light.\r\nLightControlTrack adds this functionality to Timeline as a ways for controlling lights during e.g. a cutscene.\r\n\r\n* Add my custom Repeat function to the UnityExtras namespace.\r\n\r\n* Remove commented line from FocusPoint\r\n\r\n* Remove AnimatorParameters\r\n\r\nThis was a failed API. However, the AnimatorHash has been kept, as it was a very solid value.\r\n\r\n* Remove \"Serialize Object\" command\r\n\r\nThe command to serialize any object into a json file is a little too powerful. This should instead be implemented on a per-object basis.\r\n\r\n* Add missing Undo to \"SetRecommendedRigidbody\" Menu\r\n\r\n* Change package data order\r\n\r\n* Add changelog","shortMessageHtmlLink":"Update main to version 1.2.0 for Unity 2022.2 (#6)"}},{"before":"ee41244801f044b5e19b8ec1a0e5b3b332bb2d72","after":"cfa87d725821a43a616e299e4b07bc257c973328","ref":"refs/heads/develop","pushedAt":"2023-08-19T12:51:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add changelog","shortMessageHtmlLink":"Add changelog"}},{"before":"6c1c771017b457ba40d4b2101882d0d05ff188af","after":"ee41244801f044b5e19b8ec1a0e5b3b332bb2d72","ref":"refs/heads/develop","pushedAt":"2023-08-19T11:59:17.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add missing Undo to \"SetRecommendedRigidbody\" Menu","shortMessageHtmlLink":"Add missing Undo to \"SetRecommendedRigidbody\" Menu"}},{"before":"1714d0bc88003e1ed5aa8f0e2f3970c036e37512","after":"6c1c771017b457ba40d4b2101882d0d05ff188af","ref":"refs/heads/develop","pushedAt":"2023-08-19T11:50:19.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Remove AnimatorParameters\n\nThis was a failed API. However, the AnimatorHash has been kept, as it was a very solid value.","shortMessageHtmlLink":"Remove AnimatorParameters"}},{"before":"f2ea3f49f5473eb1c9eb41d693bb80e163e55b62","after":"1714d0bc88003e1ed5aa8f0e2f3970c036e37512","ref":"refs/heads/develop","pushedAt":"2023-08-19T09:03:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add my custom Repeat function to the UnityExtras namespace.","shortMessageHtmlLink":"Add my custom Repeat function to the UnityExtras namespace."}},{"before":"f5c693ec88ac2e2a7b21a3014dd418213553efa1","after":"f2ea3f49f5473eb1c9eb41d693bb80e163e55b62","ref":"refs/heads/develop","pushedAt":"2023-08-19T08:44:32.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add LightControlAsset and LightControlTrack\n\nLightControlAsset is a PlayableAsset that can bee used to change the color and intensity of a light.\nLightControlTrack adds this functionality to Timeline as a ways for controlling lights during e.g. a cutscene.","shortMessageHtmlLink":"Add LightControlAsset and LightControlTrack"}},{"before":"488f3824bfcfc95a524a3c4525022f6202ec1db9","after":"f5c693ec88ac2e2a7b21a3014dd418213553efa1","ref":"refs/heads/develop","pushedAt":"2023-05-10T09:00:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add \"Set Recommended Rigidbody\" menu item to the CharacterController\n\nCharacterControllers on their own do not fire collision events correctly (e.g. OnTriggerExit never triggers, OnTriggerEnter triggers constantly, behavior is inconsistent). This is not what you would expect from a moving object. To fire collision events correctly, it needs a rigidbody attached. Due to CharacterControllers kinematic nature, there are preferred settings to couple with a Rigidbody, and this menu item sets those for you if you mess up.","shortMessageHtmlLink":"Add \"Set Recommended Rigidbody\" menu item to the CharacterController"}},{"before":"e7517ac0af2f610281c13206aebb30117c7fd691","after":"488f3824bfcfc95a524a3c4525022f6202ec1db9","ref":"refs/heads/develop","pushedAt":"2023-05-08T21:11:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Fix TurnTowards overshooting.\n\nTurnTowards would overshoot if the rotation speed was set really high. Now it just snaps to the right direction if this happens.","shortMessageHtmlLink":"Fix TurnTowards overshooting."}},{"before":"5c686d706929152244017034dacc91d9474ca32c","after":"e7517ac0af2f610281c13206aebb30117c7fd691","ref":"refs/heads/develop","pushedAt":"2023-05-06T18:06:20.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add CharacterSlopeSlider\n\nThis component makes CharacterControllers slide off of slopes. Normally the CharacterController reaching its slope limit stands still. This is a problem when your character can jump and move in the air, as it could simply jump up any slope without issue. This component slides a character down a slope and prevents it from jumping.","shortMessageHtmlLink":"Add CharacterSlopeSlider"}},{"before":"10b4c208c6b22bf24b84825c8f9869fee452e2b9","after":"5c686d706929152244017034dacc91d9474ca32c","ref":"refs/heads/develop","pushedAt":"2023-05-06T16:02:58.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Merge branch 'develop' of https://github.com/Casey-Hofland/UnityExtras into develop","shortMessageHtmlLink":"Merge branch 'develop' of https://github.com/Casey-Hofland/UnityExtras …"}},{"before":"448db2c5c1f324ad2e9ef1f43fdea66bbbc28eb2","after":"10b4c208c6b22bf24b84825c8f9869fee452e2b9","ref":"refs/heads/develop","pushedAt":"2023-05-04T13:25:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add Crouch and IsJumping input","shortMessageHtmlLink":"Add Crouch and IsJumping input"}},{"before":"126a9f851ba08a0e89c7c998f9a8a1abdb72a27a","after":"448db2c5c1f324ad2e9ef1f43fdea66bbbc28eb2","ref":"refs/heads/develop","pushedAt":"2023-05-01T08:09:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add a TurnTowards method inside the CharacterMover\n\nIt keeps coming up.","shortMessageHtmlLink":"Add a TurnTowards method inside the CharacterMover"}},{"before":"188f304bb3bc8a3c6a8cb1e3377424abb23f4fdb","after":"126a9f851ba08a0e89c7c998f9a8a1abdb72a27a","ref":"refs/heads/develop","pushedAt":"2023-04-18T13:24:57.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add ThirdPersonCharacter Input for the CharacterMover","shortMessageHtmlLink":"Add ThirdPersonCharacter Input for the CharacterMover"}},{"before":"ca420ee931f44ae827145dd0e3f918a0889a7669","after":"188f304bb3bc8a3c6a8cb1e3377424abb23f4fdb","ref":"refs/heads/develop","pushedAt":"2023-04-17T13:57:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Fix rigbuilder is null issue when building the rig collision model","shortMessageHtmlLink":"Fix rigbuilder is null issue when building the rig collision model"}},{"before":"34db223522db1593db8a166aaa233ed5cdf15aa1","after":"ca420ee931f44ae827145dd0e3f918a0889a7669","ref":"refs/heads/develop","pushedAt":"2023-04-17T13:11:35.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Update the package to version 1.2.0 for Unity 2022.2","shortMessageHtmlLink":"Update the package to version 1.2.0 for Unity 2022.2"}},{"before":"a631ce1381b227d0ee85ce6dc97f527b506e5d72","after":"34db223522db1593db8a166aaa233ed5cdf15aa1","ref":"refs/heads/develop","pushedAt":"2023-04-17T12:55:38.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Update Direction Implementation\n\nAdded a RelativeDirection that can take a transform in order to calculate a relative direction. This means you can specify Vector3.down based on the rotation of a transform, which may help out with relative directions.\n\nThe old drawer was broken due to a quirk with the inspectors being drawn using UIElements. The drawer has been updated to use UIElements now.\n\nIKPlanter will now ignore any attached rigidbodies and colliders that are children of the rigbuilder, if it can find any.","shortMessageHtmlLink":"Update Direction Implementation"}},{"before":"71d2004efcee62fb4e397b4dc6ac52ce4a29aa90","after":"a631ce1381b227d0ee85ce6dc97f527b506e5d72","ref":"refs/heads/develop","pushedAt":"2023-03-22T09:43:08.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Add ShaderId\n\nThis is a value much like AnimatorHash where it takes a string but returns an id for optimized lookup for shader properties.","shortMessageHtmlLink":"Add ShaderId"}},{"before":"c435cda4a5bc2d415908b381ea11422d476c49cf","after":"71d2004efcee62fb4e397b4dc6ac52ce4a29aa90","ref":"refs/heads/develop","pushedAt":"2023-03-13T10:12:33.503Z","pushType":"push","commitsCount":1,"pusher":{"login":"CaseyHofland","name":"Casey Hofland","path":"/CaseyHofland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27729987?s=80&v=4"},"commit":{"message":"Remove Destroy Delay from Instantiate\n\n- Particle Systems already have a \"Destroy on Stop\" event apparently :P","shortMessageHtmlLink":"Remove Destroy Delay from Instantiate"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADcXurnQA","startCursor":null,"endCursor":null}},"title":"Activity · CaseyHofland/UnityExtras"}