{"TotalCount":7,"Files":[{"Ident":"subzerostudios.simple_noclip","Path":"Code/Assembly.cs","FileName":"Assembly.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":335317,"IsPrivate":false,"Code":"global using Sandbox;\r\nglobal using System.Collections.Generic;\r\nglobal using System.Linq;\r\n"},{"Ident":"subzerostudios.simple_noclip","Path":".obj/__compiler_extra.cs","FileName":"__compiler_extra.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":335317,"IsPrivate":false,"Code":"global using static Sandbox.Internal.GlobalGameNamespace;\r\nglobal using Microsoft.AspNetCore.Components;\r\nglobal using Microsoft.AspNetCore.Components.Rendering;\r\n[assembly: global::System.Reflection.AssemblyMetadata( \u0022AddonTitle\u0022, \u0022Simple Noclip\u0022 )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \u0022AddonIdent\u0022, \u0022simple_noclip\u0022 )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \u0022OrgIdent\u0022, \u0022subzerostudios\u0022 )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \u0022Ident\u0022, \u0022subzerostudios.simple_noclip\u0022 )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \u0022EngineVersion\u0022, \u002228\u0022 )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \u0022EngineMinorVersion\u0022, \u00221\u0022 )]\r\n\r\n[assembly: System.Runtime.Versioning.TargetFramework( \u0022.NETCoreApp,Version=v9.0\u0022, FrameworkDisplayName = \u0022.NET 9.0\u0022 )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \u0022CompileTime\u0022, \u00222026-07-23T18:40:45.7995467Z\u0022 )]\r\n[assembly: global::System.Reflection.AssemblyVersion(\u00220.0.139.0\u0022)]\r\n[assembly: global::System.Reflection.AssemblyFileVersion(\u00220.0.139.0\u0022)]"},{"Ident":"subzerostudios.simple_noclip","Path":"NoclipCommands.cs","FileName":"NoclipCommands.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":335317,"IsPrivate":false,"Code":"public static class NoclipCommands\r\n{\r\n\t[ConCmd( \u0022noclip\u0022, Help = \u0022Toggle noclip fly mode\u0022 )]\r\n\tpublic static void ToggleNoclip()\r\n\t{\r\n\t\tvar controller = Game.ActiveScene?.GetAllComponents\u003CPlayerController\u003E()\r\n\t\t\t.FirstOrDefault( x =\u003E x.IsValid() \u0026\u0026 !x.IsProxy );\r\n\r\n\t\tif ( controller is null )\r\n\t\t{\r\n\t\t\tLog.Warning( \u0022noclip: no local PlayerController found in the active scene.\u0022 );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar mode = controller.Components.Get\u003CNoclipMoveMode\u003E( true )\r\n\t\t\t?? controller.Components.Create\u003CNoclipMoveMode\u003E( false );\r\n\r\n\t\tmode.Enabled = !mode.Enabled;\r\n\t\tLog.Info( mode.Enabled ? \u0022Noclip enabled\u0022 : \u0022Noclip disabled\u0022 );\r\n\t}\r\n}\r\n\r\npublic sealed class NoclipInputSystem : GameObjectSystem\r\n{\r\n\tpublic NoclipInputSystem( Scene scene ) : base( scene )\r\n\t{\r\n\t\tListen( Stage.StartUpdate, 0, OnUpdate, \u0022Noclip.VKey\u0022 );\r\n\t}\r\n\r\n\tvoid OnUpdate()\r\n\t{\r\n\t\tif ( Input.MouseCursorVisible )\r\n\t\t\treturn;\r\n\r\n\t\tif ( Input.Keyboard.Pressed( \u0022v\u0022 ) )\r\n\t\t\tNoclipCommands.ToggleNoclip();\r\n\t}\r\n}\r\n"},{"Ident":"subzerostudios.simple_noclip","Path":"NoclipMoveMode.cs","FileName":"NoclipMoveMode.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":335317,"IsPrivate":false,"Code":"using Sandbox.Movement;\r\n\r\n[Title( \u0022Simple Noclip\u0022 )]\r\n[Category( \u0022Movement\u0022 )]\r\n[Icon( \u0022flight\u0022 )]\r\npublic sealed class NoclipMoveMode : MoveMode\r\n{\r\n\t[Property]\r\n\tpublic float Speed { get; set; } = 1200;\r\n\r\n\tpublic override int Score( PlayerController controller ) =\u003E 1000;\r\n\r\n\tpublic override void UpdateRigidBody( Rigidbody body )\r\n\t{\r\n\t\tbody.Gravity = false;\r\n\t\tbody.LinearDamping = 5.0f;\r\n\t\tbody.AngularDamping = 1f;\r\n\t\tbody.Tags.Set( \u0022noclip\u0022, true );\r\n\t}\r\n\r\n\tpublic override void OnModeBegin()\r\n\t{\r\n\t\tController.Body.Gravity = false;\r\n\t\tResetToIdle( Controller.Renderer );\r\n\t}\r\n\r\n\tpublic override void OnModeEnd( MoveMode next )\r\n\t{\r\n\t\tController.Body.Velocity = Controller.Body.Velocity.ClampLength( Controller.RunSpeed );\r\n\t\tController.Body.Tags.Set( \u0022noclip\u0022, false );\r\n\t\tResetToIdle( Controller.Renderer );\r\n\t}\r\n\r\n\tprotected override void OnUpdateAnimatorState( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\tApplyIdleState( renderer );\r\n\t}\r\n\r\n\tprotected override void OnUpdateAnimatorVelocity( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\tApplyIdleVelocity( renderer );\r\n\t}\r\n\r\n\tpublic override Vector3 UpdateMove( Rotation eyes, Vector3 input )\r\n\t{\r\n\t\tvar direction = eyes * input.ClampLength( 1 );\r\n\r\n\t\tif ( Input.Down( \u0022jump\u0022 ) ) direction \u002B= Vector3.Up;\r\n\t\tif ( Input.Down( \u0022duck\u0022 ) ) direction \u002B= Vector3.Down;\r\n\r\n\t\tvar speed = Speed;\r\n\t\tif ( Input.Keyboard.Down( \u0022SHIFT\u0022 ) || Input.Keyboard.Down( \u0022RSHIFT\u0022 ) )\r\n\t\t\tspeed *= 2f;\r\n\r\n\t\treturn direction * speed;\r\n\t}\r\n\r\n\tstatic void ResetToIdle( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\tif ( renderer is null )\r\n\t\t\treturn;\r\n\r\n\t\trenderer.ClearParameters();\r\n\t\tApplyIdleState( renderer );\r\n\t\tApplyIdleVelocity( renderer );\r\n\t}\r\n\r\n\tstatic void ApplyIdleState( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\trenderer.Set( \u0022b_grounded\u0022, true );\r\n\t\trenderer.Set( \u0022duck\u0022, 0f );\r\n\t\trenderer.Set( \u0022b_noclip\u0022, false );\r\n\t}\r\n\r\n\tstatic void ApplyIdleVelocity( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\trenderer.Set( \u0022move_x\u0022, 0f );\r\n\t\trenderer.Set( \u0022move_y\u0022, 0f );\r\n\t\trenderer.Set( \u0022move_z\u0022, 0f );\r\n\t\trenderer.Set( \u0022wish_x\u0022, 0f );\r\n\t\trenderer.Set( \u0022wish_y\u0022, 0f );\r\n\t\trenderer.Set( \u0022wish_z\u0022, 0f );\r\n\t}\r\n}\r\n"},{"Ident":"subzerostudios.simple_noclip","Path":"Code/NoclipCommands.cs","FileName":"NoclipCommands.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":335317,"IsPrivate":false,"Code":"public static class NoclipCommands\r\n{\r\n\t[ConCmd( \u0022noclip\u0022, Help = \u0022Toggle noclip fly mode\u0022 )]\r\n\tpublic static void ToggleNoclip()\r\n\t{\r\n\t\tvar controller = Game.ActiveScene?.GetAllComponents\u003CPlayerController\u003E()\r\n\t\t\t.FirstOrDefault( x =\u003E x.IsValid() \u0026\u0026 !x.IsProxy );\r\n\r\n\t\tif ( controller is null )\r\n\t\t{\r\n\t\t\tLog.Warning( \u0022noclip: no local PlayerController found in the active scene.\u0022 );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar mode = controller.Components.Get\u003CNoclipMoveMode\u003E( true )\r\n\t\t\t?? controller.Components.Create\u003CNoclipMoveMode\u003E( false );\r\n\r\n\t\tmode.Enabled = !mode.Enabled;\r\n\t\tLog.Info( mode.Enabled ? \u0022Noclip enabled\u0022 : \u0022Noclip disabled\u0022 );\r\n\t}\r\n}\r\n\r\npublic sealed class NoclipInputSystem : GameObjectSystem\r\n{\r\n\tpublic NoclipInputSystem( Scene scene ) : base( scene )\r\n\t{\r\n\t\tListen( Stage.StartUpdate, 0, OnUpdate, \u0022Noclip.VKey\u0022 );\r\n\t}\r\n\r\n\tvoid OnUpdate()\r\n\t{\r\n\t\tif ( Input.MouseCursorVisible )\r\n\t\t\treturn;\r\n\r\n\t\tif ( Input.Keyboard.Pressed( \u0022v\u0022 ) )\r\n\t\t\tNoclipCommands.ToggleNoclip();\r\n\t}\r\n}\r\n"},{"Ident":"subzerostudios.simple_noclip","Path":"Assembly.cs","FileName":"Assembly.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":335317,"IsPrivate":false,"Code":"global using Sandbox;\r\nglobal using System.Collections.Generic;\r\nglobal using System.Linq;\r\n"},{"Ident":"subzerostudios.simple_noclip","Path":"Code/NoclipMoveMode.cs","FileName":"NoclipMoveMode.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":335317,"IsPrivate":false,"Code":"using Sandbox.Movement;\r\n\r\n[Title( \u0022Simple Noclip\u0022 )]\r\n[Category( \u0022Movement\u0022 )]\r\n[Icon( \u0022flight\u0022 )]\r\npublic sealed class NoclipMoveMode : MoveMode\r\n{\r\n\t[Property]\r\n\tpublic float Speed { get; set; } = 1200;\r\n\r\n\tpublic override int Score( PlayerController controller ) =\u003E 1000;\r\n\r\n\tpublic override void UpdateRigidBody( Rigidbody body )\r\n\t{\r\n\t\tbody.Gravity = false;\r\n\t\tbody.LinearDamping = 5.0f;\r\n\t\tbody.AngularDamping = 1f;\r\n\t\tbody.Tags.Set( \u0022noclip\u0022, true );\r\n\t}\r\n\r\n\tpublic override void OnModeBegin()\r\n\t{\r\n\t\tController.Body.Gravity = false;\r\n\t\tResetToIdle( Controller.Renderer );\r\n\t}\r\n\r\n\tpublic override void OnModeEnd( MoveMode next )\r\n\t{\r\n\t\tController.Body.Velocity = Controller.Body.Velocity.ClampLength( Controller.RunSpeed );\r\n\t\tController.Body.Tags.Set( \u0022noclip\u0022, false );\r\n\t\tResetToIdle( Controller.Renderer );\r\n\t}\r\n\r\n\tprotected override void OnUpdateAnimatorState( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\tApplyIdleState( renderer );\r\n\t}\r\n\r\n\tprotected override void OnUpdateAnimatorVelocity( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\tApplyIdleVelocity( renderer );\r\n\t}\r\n\r\n\tpublic override Vector3 UpdateMove( Rotation eyes, Vector3 input )\r\n\t{\r\n\t\tvar direction = eyes * input.ClampLength( 1 );\r\n\r\n\t\tif ( Input.Down( \u0022jump\u0022 ) ) direction \u002B= Vector3.Up;\r\n\t\tif ( Input.Down( \u0022duck\u0022 ) ) direction \u002B= Vector3.Down;\r\n\r\n\t\tvar speed = Speed;\r\n\t\tif ( Input.Keyboard.Down( \u0022SHIFT\u0022 ) || Input.Keyboard.Down( \u0022RSHIFT\u0022 ) )\r\n\t\t\tspeed *= 2f;\r\n\r\n\t\treturn direction * speed;\r\n\t}\r\n\r\n\tstatic void ResetToIdle( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\tif ( renderer is null )\r\n\t\t\treturn;\r\n\r\n\t\trenderer.ClearParameters();\r\n\t\tApplyIdleState( renderer );\r\n\t\tApplyIdleVelocity( renderer );\r\n\t}\r\n\r\n\tstatic void ApplyIdleState( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\trenderer.Set( \u0022b_grounded\u0022, true );\r\n\t\trenderer.Set( \u0022duck\u0022, 0f );\r\n\t\trenderer.Set( \u0022b_noclip\u0022, false );\r\n\t}\r\n\r\n\tstatic void ApplyIdleVelocity( SkinnedModelRenderer renderer )\r\n\t{\r\n\t\trenderer.Set( \u0022move_x\u0022, 0f );\r\n\t\trenderer.Set( \u0022move_y\u0022, 0f );\r\n\t\trenderer.Set( \u0022move_z\u0022, 0f );\r\n\t\trenderer.Set( \u0022wish_x\u0022, 0f );\r\n\t\trenderer.Set( \u0022wish_y\u0022, 0f );\r\n\t\trenderer.Set( \u0022wish_z\u0022, 0f );\r\n\t}\r\n}\r\n"}]}