using System.Numerics; using System.Runtime.CompilerServices; using BITFactory.Cutting; using BITKit; using BITKit.Mod; using Unity.Mathematics; namespace iFactory_Cutting.Mods.Examples { public sealed class NewNewMod : MyMod { public override string Name => "NewNew的新Mod"; public override string PackageName => "com.bitkit.2A051144-8BE3-4A1E-980B-6907B9480A2D"; } public sealed class ExampleModBrush : MyMod { public override string Name => "空的Mod"; public override string PackageName => "com.bitkit.test.brush"; public sealed class voidModBrush : CuttingToolBrush { public override string Name => "空的Mod笔刷"; [Export] public float radius = 1; public override unsafe void* GetExport(string name) { fixed (float* p = &radius) { return name == nameof(radius) ? p : base.GetExport(name); } } public override void HandlePoint(bool isPreview, float3 normal, float3 point) { cuttingTool.CutPlantSphere(isPreview,normal,point,radius); } } [Inject] private ICuttingToolService _cuttingToolService; private readonly voidModBrush _brush = new voidModBrush(); public override void OnInitialize() { base.OnInitialize(); BIT4Log.Log("ExampleModBrush.OnInitialize"); DI.Inject(this); } public override void OnInitialized() { base.OnInitialized(); _cuttingToolService.Register(_brush); } public override void OnDispose() { base.OnDispose(); _cuttingToolService.UnRegister(_brush); } } }