2021.8.27.146 - Character Controller Modifiers, security improvements, bugfixes
Hello everyone, got another physics related goodie for you - Character Controller Modifiers! These new components let you modify the parameters of Character Controller dynamically on contact with a particular collider - e.g. you can make some colliders sticky (slow to walk on and hard to jump), slippery or easy to climb vertically (like ladders) and lots of other cool stuff! With mesh colliders you can even use a texture to modulate those parameters for extra control!
There's a whole bunch of other smaller additions, tweaks, security improvements and more bugfixes based on reports from the community!
[h2]New Features:[/h2]
- Added CharacterControllerModifier components (under Locomotion/Modifiers) which allow modifying character controller properties on contact with colliders:
-- They need to be placed on the same slot as the character collider
-- If there are multiple ones for the same parameter, the behavior can be unpredictable. Please make sure to only have one
-- Following parameters can be modified (some of these both for traction and sliding): MaximumTractionSlope, MaximumSupportSlope, Speed, Force, Speed and MaximumGlueForce
-- Following modes are supported:
--- Override - simply replaces the current value
--- Add - adds the value to the current one
--- Multiply - multiplies the current value with the modifier one
- ConstantCharacterControllerModifier
-- This uses a single value that's constant regardless of where the contact happens
- SubmeshCharacterControllerModifier
-- Specifically for mesh colliders, allow specifying constant value per submesh
- TextureCharacterControllerModifier
-- For mesh colliders only, samples the UV coordinate of the contact point from collision and then samples a texture channel (you can select any) to modulate the final value
-- The referenced texture must be marked as Readable and must be Uncompressed
- Added "Readable" property to StaticTexture2D
-- This keeps the texture data in memory for CPU access. This uses additional memory, but allows components read the texture data for additional features
- Added >, =, - Added >, =, - Added "System Default" language option, which will reset Neos to always use the language specified by the OS locale (requested by @kazu0617 Neos:kazu, GH #2849)
- Added Strip RTF Tags LogiX node that will strip any Neos-supported RTF tags from the input string (requested by @AshtonSparx, GH #2801)
[h2]Tweaks:[/h2]
- Merged French locale update from @Khosumi
- Merged Russian locale addition from @Shadow Panther [RU/EN, UTC+3]
- Merged Czech locale addition from @rampa_3 (UTC +1, DST UTC +2)
- Merged Japanese locale update from @Aesc/あすく
[h2]Security:[/h2]
- SimpleAvatarProtection removal confirmation is now spawned in the userspace (reported by @art0007i, Ticket #892900)
- SimpleAvatarProtection will now self-destruct if removed by the X button in the inspector by the owner. Use the dedicated button for removal of all instances (reported by @art0007i, Ticket #892900)
- Contact status information is now properly sanitized when they're invisible to avoid leaking information that might indicate that they're actually online (reported by @art0007i, Ticket #452151)
[h2]Bugfixes:[/h2]
- Fixed world crash when corrupting the TransformStreamDriver on an user (reported by @LucasRo7, Ticket #887374)
- Fixed DynamicVariables not working for a few frames after duplication (reported by @Psychpsyo, @H3BO3, @Ukilop, @Zyzyl, @orange, @rhenium and yoshi1123_, GH #2012, GH #2860)
- Fixed playback state LogiX nodes not firing a change when the clip stops playing, resulting in a single state change being missed
-- This fixes IsPlaying not forcing an update when the playback stops playing (reported by @Aesc/あすく and kinoko_b, GH #2844)
- Fixed incorrect color value clamping when converting to hex codes, resulting HDR colors in printing out "10" instead of "F" (reported by @Sharkmare, GH #2832)
- Component attacher component labels will no longer be parsed as RTF, fixing cases where generic component braces are interpreted as RTF tags (reported by @kazu0617 Neos:kazu, GH #2805)
- Implemented correct handling of Offset for MeshCollider
-- This fixes random crashes due to corruption of the physics system (reported by @Nicole+ and @Cyro, Ticket #800275)
-- Note that it's recommended to use hierarchy offsets for MeshColliders instead, especially if you want to animate their offset. Animating offset for MeshColliders will force the entire physics entity to be scrapped and rebuilt every frame
- Fixed off by one error when sampling Bitmap2D on the CPU

There's a whole bunch of other smaller additions, tweaks, security improvements and more bugfixes based on reports from the community!
[h2]New Features:[/h2]
- Added CharacterControllerModifier components (under Locomotion/Modifiers) which allow modifying character controller properties on contact with colliders:
-- They need to be placed on the same slot as the character collider
-- If there are multiple ones for the same parameter, the behavior can be unpredictable. Please make sure to only have one
-- Following parameters can be modified (some of these both for traction and sliding): MaximumTractionSlope, MaximumSupportSlope, Speed, Force, Speed and MaximumGlueForce
-- Following modes are supported:
--- Override - simply replaces the current value
--- Add - adds the value to the current one
--- Multiply - multiplies the current value with the modifier one
- ConstantCharacterControllerModifier
-- This uses a single value that's constant regardless of where the contact happens
- SubmeshCharacterControllerModifier
-- Specifically for mesh colliders, allow specifying constant value per submesh
- TextureCharacterControllerModifier
-- For mesh colliders only, samples the UV coordinate of the contact point from collision and then samples a texture channel (you can select any) to modulate the final value
-- The referenced texture must be marked as Readable and must be Uncompressed
- Added "Readable" property to StaticTexture2D
-- This keeps the texture data in memory for CPU access. This uses additional memory, but allows components read the texture data for additional features
- Added >, =, - Added >, =, - Added "System Default" language option, which will reset Neos to always use the language specified by the OS locale (requested by @kazu0617 Neos:kazu, GH #2849)
- Added Strip RTF Tags LogiX node that will strip any Neos-supported RTF tags from the input string (requested by @AshtonSparx, GH #2801)
[h2]Tweaks:[/h2]
- Merged French locale update from @Khosumi
- Merged Russian locale addition from @Shadow Panther [RU/EN, UTC+3]
- Merged Czech locale addition from @rampa_3 (UTC +1, DST UTC +2)
- Merged Japanese locale update from @Aesc/あすく
[h2]Security:[/h2]
- SimpleAvatarProtection removal confirmation is now spawned in the userspace (reported by @art0007i, Ticket #892900)
- SimpleAvatarProtection will now self-destruct if removed by the X button in the inspector by the owner. Use the dedicated button for removal of all instances (reported by @art0007i, Ticket #892900)
- Contact status information is now properly sanitized when they're invisible to avoid leaking information that might indicate that they're actually online (reported by @art0007i, Ticket #452151)
[h2]Bugfixes:[/h2]
- Fixed world crash when corrupting the TransformStreamDriver on an user (reported by @LucasRo7, Ticket #887374)
- Fixed DynamicVariables not working for a few frames after duplication (reported by @Psychpsyo, @H3BO3, @Ukilop, @Zyzyl, @orange, @rhenium and yoshi1123_, GH #2012, GH #2860)
- Fixed playback state LogiX nodes not firing a change when the clip stops playing, resulting in a single state change being missed
-- This fixes IsPlaying not forcing an update when the playback stops playing (reported by @Aesc/あすく and kinoko_b, GH #2844)
- Fixed incorrect color value clamping when converting to hex codes, resulting HDR colors in printing out "10" instead of "F" (reported by @Sharkmare, GH #2832)
- Component attacher component labels will no longer be parsed as RTF, fixing cases where generic component braces are interpreted as RTF tags (reported by @kazu0617 Neos:kazu, GH #2805)
- Implemented correct handling of Offset for MeshCollider
-- This fixes random crashes due to corruption of the physics system (reported by @Nicole+ and @Cyro, Ticket #800275)
-- Note that it's recommended to use hierarchy offsets for MeshColliders instead, especially if you want to animate their offset. Animating offset for MeshColliders will force the entire physics entity to be scrapped and rebuilt every frame
- Fixed off by one error when sampling Bitmap2D on the CPU


