{"TotalCount":8,"Files":[{"Ident":"nolankicks.kickscomponents","Path":"Code/SceneTrigger.cs","FileName":"SceneTrigger.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":56965,"Code":"using Sandbox;\r\n\r\npublic sealed class SceneTrigger : Component, Component.ITriggerListener\r\n{\r\n\t[Property] public SceneFile SceneFile { get; set; }\r\n\tprotected override void OnUpdate()\r\n\t{\r\n\r\n\t}\r\n\r\n\tvoid ITriggerListener.OnTriggerEnter(Sandbox.Collider other)\r\n\t{\r\n\t\tif (other.GameObject.Parent.Tags.Has(\u0022player\u0022) || other.GameObject.Tags.Has(\u0022boat\u0022))\r\n\t\t{\r\n\t\t\tGame.ActiveScene.Load(SceneFile);\r\n\t\t}\r\n\t}\r\n\r\n\tvoid ITriggerListener.OnTriggerExit(Sandbox.Collider other)\r\n\t{\r\n\r\n\t}\r\n}\r\n"},{"Ident":"nolankicks.kickscomponents","Path":"Code/RandomMaterialGroup.cs","FileName":"RandomMaterialGroup.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":56965,"Code":"using Sandbox;\r\nusing System;\r\n[Icon(\u0022shuffle\u0022)]\r\npublic sealed class RandomMaterialGroup : Component\r\n{\r\n\tpublic ModelRenderer Renderer { get; set; }\r\n\tprotected override void OnStart()\r\n\t{\r\n\t\tComponents.TryGet\u003CModelRenderer\u003E(out var modelRenderer, FindMode.InSelf);\r\n\t\tif (modelRenderer is not null)\r\n\t\t{\r\n\t\t\tRenderer = modelRenderer;\r\n\t\t}\r\n\t\tif (Renderer is not null)\r\n\t\t{\r\n\t\t\tSetRandomMaterial(Renderer);\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic void SetRandomMaterial(ModelRenderer renderer)\r\n\t{\r\n\t\tif (renderer is null) return;\r\n\t\tvar materialsCount = renderer.Model.MaterialGroupCount;\r\n\t\tif (materialsCount == 0) return;\r\n\t\tvar randomMaterialIndex = Random.Shared.Int(0, materialsCount - 1);\r\n\t\tvar materialGroup = renderer.Model.GetMaterialGroupName(randomMaterialIndex);\r\n\t\trenderer.MaterialGroup = materialGroup;\r\n\t}\r\n}\r\n"},{"Ident":"nolankicks.kickscomponents","Path":"UnitTests/UnitTest.cs","FileName":"UnitTest.cs","PackageType":"library","CodeKind":"UnitTest","AssetVersionId":56965,"Code":"global using Microsoft.VisualStudio.TestTools.UnitTesting;\r\n\r\n[TestClass]\r\npublic class TestInit\r\n{\r\n\t[AssemblyInitialize]\r\n\tpublic static void ClassInitialize( TestContext context )\r\n\t{\r\n\t\tSandbox.Application.InitUnitTest();\r\n\t}\r\n}\r\n"},{"Ident":"nolankicks.kickscomponents","Path":"Code/Postprocess.cs","FileName":"Postprocess.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":56965,"Code":"using System;\r\nusing Sandbox;\r\nusing Sandbox.Utility;\r\n[Icon(\u0022waves\u0022), Category(\u0022Post Processing\u0022)]\r\npublic sealed class Postprocess : PostProcess, Component.ExecuteInEditor\r\n{\r\n\t[Property] public Shader PostprocessShader { get; set; }\r\n\tIDisposable renderHook;\r\n\r\n\tprotected override void OnEnabled()\r\n\t{\r\n\t\trenderHook = Camera.AddHookBeforeOverlay( \u0022My Post Processing\u0022, 1000, RenderEffect);\r\n\t}\r\n\tprotected override void OnDisabled()\r\n\t{\r\n\t\trenderHook?.Dispose();\r\n\t\trenderHook = null;\r\n\t}\r\n\tRenderAttributes attributes = new RenderAttributes();\r\n\tpublic void RenderEffect(SceneCamera camera)\r\n\t{\r\n\t\tif (!camera.EnablePostProcessing) return;\r\n\t\tGraphics.GrabFrameTexture(\u0022ColorBuffer\u0022, attributes);\r\n\t\tGraphics.Blit(Material.FromShader(PostprocessShader), attributes);\r\n\t}\r\n}\r\n"},{"Ident":"nolankicks.kickscomponents","Path":"Code/RandomItemDrop.cs","FileName":"RandomItemDrop.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":56965,"Code":"using System.Collections.Generic;\r\nusing Sandbox;\r\n[Icon(\u0022shuffle\u0022), Description(\u0022Contains a function that drops a random item from a list of GameObjects, call DropRandomItem() to drop a random item\u0022)]\r\npublic sealed class RandomItemDrop : Sandbox.Component\r\n{\r\n\t[Property] public List\u003CGameObject\u003E RandomItems { get; set; } = new();\r\n\r\n\tpublic void DropRandomItem()\r\n\t{\r\n\t\tif (RandomItems.Count == 0) return;\r\n\t\tvar randomItem = Game.Random.FromList(RandomItems);\r\n\t\tif (randomItem is not null)\r\n\t\t{\r\n\t\t\tvar item = randomItem.Clone();\r\n\t\t\titem.Transform.Position = Transform.Position \u002B Vector3.Up * 20;\r\n\t\t\titem.Transform.Rotation = Transform.Rotation;\r\n\t\t\titem.NetworkSpawn();\r\n\t\t}\r\n\t}\r\n}\r\n"},{"Ident":"nolankicks.kickscomponents","Path":"Code/RandomModel.cs","FileName":"RandomModel.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":56965,"Code":"using Sandbox;\r\nusing System;\r\nusing System.Collections.Generic;\r\n[Icon(\u0022shuffle\u0022)]\r\npublic sealed class RandomModel : Component\r\n{\r\n\t[Property] public List\u003CModel\u003E RandomModels { get; set; }\r\n\tprotected override void OnStart()\r\n\t{\r\n\t\tif (RandomModels.Count == 0) return;\r\n\t\tComponents.TryGet\u003CModelRenderer\u003E(out var modelRenderer, FindMode.InSelf);\r\n\t\tComponents.TryGet\u003CModelCollider\u003E(out var modelCollider, FindMode.InSelf);\r\n\t\tvar selectedModel = Game.Random.FromList(RandomModels);\r\n\t\tif (selectedModel is null) return;\r\n\t\tif (modelRenderer is not null)\r\n\t\t{\r\n\t\t\tmodelRenderer.Model = selectedModel;\r\n\t\t}\r\n\t\tif (modelCollider is not null)\r\n\t\t{\r\n\t\t\tmodelCollider.Model = selectedModel;\r\n\t\t}\r\n\t}\r\n}\r\n"},{"Ident":"nolankicks.kickscomponents","Path":"UnitTests/LibraryTest.cs","FileName":"LibraryTest.cs","PackageType":"library","CodeKind":"UnitTest","AssetVersionId":56965,"Code":"using Sandbox;\r\n\r\n[TestClass]\r\npublic partial class LibraryTests\r\n{\r\n\t[TestMethod]\r\n\tpublic void SceneTest()\r\n\t{\r\n\t\tvar scene = new Scene();\r\n\t\tusing ( scene.Push() )\r\n\t\t{\r\n\t\t\tvar go = new GameObject();\r\n\r\n\t\t\tAssert.AreEqual( 1, scene.Directory.GameObjectCount );\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"},{"Ident":"nolankicks.kickscomponents","Path":"Code/NavMeshComponent.cs","FileName":"NavMeshComponent.cs","PackageType":"library","CodeKind":"Game","AssetVersionId":56965,"Code":"using System.ComponentModel;\r\nusing Sandbox;\r\n\r\npublic sealed class NavMeshComponent : Sandbox.Component\r\n{\r\n\t[Property] public NavMeshAgent Agent { get; set; }\r\n\t[Property] public GameObject Target { get; set; }\r\n\r\n\tprotected override void OnFixedUpdate()\r\n\t{\r\n\t\tMoveToTarget();\r\n\t}\r\n\r\n\tvoid MoveToTarget()\r\n\t{\r\n\t\tif (Agent is null || Target is null) return;\r\n\t\tAgent.MoveTo(Target.Transform.Position);\r\n\t}\r\n}\r\n"}]}