This commit is contained in:
CortexCore 2024-03-05 15:27:29 +08:00
parent 7766082e9d
commit 2c8dfd3c86
45 changed files with 6760 additions and 138 deletions

View File

@ -2352,7 +2352,6 @@ MonoBehaviour:
- rid: 3736623274279305216
- rid: 3736623274279305217
- rid: 3736623274279305218
- rid: 3736623274279305219
- rid: 3736623274279305220
loadLocalPackageOnStart: 1
references:
@ -2390,10 +2389,6 @@ MonoBehaviour:
type: {class: Reference, ns: BITKit, asm: BITKit}
data:
value: System.dll
- rid: 3736623274279305219
type: {class: Reference, ns: BITKit, asm: BITKit}
data:
value: System.Linq.dll
- rid: 3736623274279305220
type: {class: Reference, ns: BITKit, asm: BITKit}
data:
@ -9746,6 +9741,7 @@ Transform:
m_Children:
- {fileID: 1198269870}
- {fileID: 324953849}
- {fileID: 495300441}
- {fileID: 2087774128}
- {fileID: 1237214210}
- {fileID: 1228132877}
@ -10246,6 +10242,68 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4489127147763580709, guid: d14be1a56b99bf544873c5036097bd21, type: 3}
m_PrefabInstance: {fileID: 493196758}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &495300440
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 475671028}
m_Modifications:
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4133803532130016016, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
propertyPath: m_Name
value: UXContextMenu
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
--- !u!4 &495300441 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3097860720836592501, guid: c1713b68ecd4afe42a625ebb0d0638d6, type: 3}
m_PrefabInstance: {fileID: 495300440}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &496017006
PrefabInstance:
m_ObjectHideFlags: 0
@ -24410,6 +24468,7 @@ GameObject:
- component: {fileID: 1237214214}
- component: {fileID: 1237214215}
- component: {fileID: 1237214216}
- component: {fileID: 1237214217}
m_Layer: 0
m_Name: CuttingPanel
m_TagString: Untagged
@ -24603,6 +24662,20 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
document: {fileID: 1237214209}
--- !u!114 &1237214217
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1237214207}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9f42749e7d8caa64c8db10aa8554e974, type: 3}
m_Name:
m_EditorClassIdentifier:
defaultTexture: {fileID: 0}
worldImage: {fileID: 1354611256}
--- !u!1 &1238623440
GameObject:
m_ObjectHideFlags: 0
@ -26429,6 +26502,78 @@ Transform:
m_CorrespondingSourceObject: {fileID: 775197342873461764, guid: db2d086fe2ffee04dbb1f233c83f567a, type: 3}
m_PrefabInstance: {fileID: 1351894160}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1354611254
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1354611255}
- component: {fileID: 1354611257}
- component: {fileID: 1354611256}
m_Layer: 5
m_Name: RawImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1354611255
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1354611254}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0.02}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1538010304}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -0}
m_SizeDelta: {x: 1, y: 1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1354611256
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1354611254}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 2800000, guid: 83d6032243d653847999ca08250080a1, type: 3}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!222 &1354611257
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1354611254}
m_CullTransparentMesh: 1
--- !u!1001 &1363149856
PrefabInstance:
m_ObjectHideFlags: 0
@ -29382,6 +29527,66 @@ Transform:
m_CorrespondingSourceObject: {fileID: 8599469349454154211, guid: 9f0beeaea1b73af4095c93b67341a366, type: 3}
m_PrefabInstance: {fileID: 1523455616}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1538010302
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1538010304}
- component: {fileID: 1538010303}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!223 &1538010303
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1538010302}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 2
m_Camera: {fileID: 420814444}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &1538010304
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1538010302}
m_LocalRotation: {x: 0.70710576, y: -0, z: -0, w: 0.7071079}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1354611255}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 1}
m_SizeDelta: {x: 2, y: 2}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1001 &1541124407
PrefabInstance:
m_ObjectHideFlags: 0
@ -42525,6 +42730,7 @@ SceneRoots:
- {fileID: 123695859}
- {fileID: 1460504354}
- {fileID: 1859425352}
- {fileID: 1538010304}
- {fileID: 375808614}
- {fileID: 1548654985}
- {fileID: 2104798764}

View File

@ -0,0 +1,78 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using AnotherFileBrowser.Windows;
using BITKit;
using BITKit.IO;
using BITKit.UX;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
using Button = UnityEngine.UIElements.Button;
using Image = UnityEngine.UI.Image;
using Slider = UnityEngine.UIElements.Slider;
namespace BITFactory.Cutting.UX
{
public class UXReferenceImage : MonoBehaviour
{
[SerializeField] private Texture2D defaultTexture;
[SerializeField] private RawImage worldImage;
[UXBindPath("pick-image-button")] private Button pickImageButton;
[UXBindPath("reference-image")] private VisualElement referenceImage;
[UXBindPath("2d-opacity-slider")] private Slider opacitySlider;
[UXBindPath("3d-opacity-slider")] private Slider worldOpacitySlider;
private void Start()
{
UXUtils.Inject(this);
opacitySlider.RegisterValueChangedCallback(x => { referenceImage.SetOpacity(x.newValue); });
worldOpacitySlider.RegisterValueChangedCallback(x =>
{
worldImage.color = new Color(1, 1, 1, x.newValue);
});
referenceImage.SetOpacity(0);
worldImage.color = new Color(1, 1, 1, 0);
opacitySlider.SetValueWithoutNotify(0);
worldOpacitySlider.SetValueWithoutNotify(0);
if (defaultTexture)
{
worldImage.texture = defaultTexture;
referenceImage.style.backgroundImage = defaultTexture;
}
pickImageButton.clicked += PickImage;
}
private void PickImage()
{
new Thread(() =>
{
new FileBrowser().OpenFileBrowser(new BrowserProperties(),PickImage);
}).Start();
}
private async void PickImage(string path)
{
await UniTask.SwitchToMainThread();
if (destroyCancellationToken.IsCancellationRequested) return;
var texture = new Texture2D(2, 2);
if (texture.LoadImage(await System.IO.File.ReadAllBytesAsync(path)) is false)
{
Alert.Print("无法加载图片", "请检查选择的文件是否为图片");
return;
}
worldImage.texture = texture;
referenceImage.style.backgroundImage = texture;
}
}
}

View File

@ -16,7 +16,8 @@
"GUID:90b448749ba9be04ebf2eb5953b53caf",
"GUID:2846c2d80db507f4485a0387d75322e4",
"GUID:f602b6f914f91d4499383d874af1decd",
"GUID:a0d51f691919122479ddf08b0a310ccc"
"GUID:a0d51f691919122479ddf08b0a310ccc",
"GUID:a11ff146d38b27a44af87b4b4d9c4ecb"
],
"includePlatforms": [],
"excludePlatforms": [],

View File

@ -3,9 +3,18 @@
<ui:Template name="Template_MaterialBoard" src="project://database/Assets/Artists/UX/Template_MaterialBoard.uxml?fileID=9197481963319205126&amp;guid=9aa61a4d8ecb80547b4e57b7e4d01500&amp;type=3#Template_MaterialBoard" />
<Style src="project://database/Assets/BITKit/Unity/UX/Common/Common.uss?fileID=7433441132597879392&amp;guid=a3a69d3518fd02b489e721f3c5b0b539&amp;type=3#Common" />
<Style src="project://database/Assets/Artists/UX/CuttingPanel.uss?fileID=7433441132597879392&amp;guid=114425baa6f9b77488ae3597936f2944&amp;type=3#CuttingPanel" />
<ui:VisualElement picking-mode="Ignore" class="root">
<ui:VisualElement name="reference-image" picking-mode="Ignore" class="flex-center" style="width: 256px; height: 256px; background-image: url(&quot;project://database/Assets/BITKit/Unity/Art/Icons/Icon_Settings.png?fileID=2800000&amp;guid=83d6032243d653847999ca08250080a1&amp;type=3#Icon_Settings&quot;);" />
</ui:VisualElement>
<ui:VisualElement name="bg" picking-mode="Ignore" class="photo-mode" style="flex-grow: 1;">
<ui:VisualElement picking-mode="Ignore" style="background-image: url(&apos;project://database/Assets/BITKit/Unity/Art/Backgrounds/BG_Gradient_Half.png?fileID=2800000&amp;guid=901684d8a74b397439bb9c11b92d0cc7&amp;type=3#BG_Gradient_Half&apos;); -unity-background-image-tint-color: rgb(0, 0, 0); position: absolute; left: 0; top: 0; bottom: 0; right: 82%;" />
<ui:VisualElement picking-mode="Ignore" style="background-image: url(&apos;project://database/Assets/BITKit/Unity/Art/Backgrounds/BG_Gradient_Half.png?fileID=2800000&amp;guid=901684d8a74b397439bb9c11b92d0cc7&amp;type=3#BG_Gradient_Half&apos;); -unity-background-image-tint-color: rgb(0, 0, 0); position: absolute; left: 82%; top: 0; bottom: 0; right: 0; rotate: 180deg;" />
<ui:VisualElement picking-mode="Ignore" style="background-image: url(&quot;project://database/Assets/BITKit/Unity/Art/Backgrounds/BG_Gradient_Half.png?fileID=2800000&amp;guid=901684d8a74b397439bb9c11b92d0cc7&amp;type=3#BG_Gradient_Half&quot;); -unity-background-image-tint-color: rgb(0, 0, 0); position: absolute; left: 0; top: 0; bottom: 0; right: 82%;" />
<ui:VisualElement picking-mode="Ignore" style="background-image: url(&quot;project://database/Assets/BITKit/Unity/Art/Backgrounds/BG_Gradient_Half.png?fileID=2800000&amp;guid=901684d8a74b397439bb9c11b92d0cc7&amp;type=3#BG_Gradient_Half&quot;); -unity-background-image-tint-color: rgb(0, 0, 0); position: absolute; left: 82%; top: 0; bottom: 0; right: 0; rotate: 180deg;" />
</ui:VisualElement>
<ui:VisualElement name="LB" picking-mode="Ignore" class="root" style="top: 0; left: 64px; bottom: 64px; align-items: flex-start; justify-content: flex-end;">
<ui:VisualElement picking-mode="Ignore" style="flex-direction: row; border-bottom-width: 1px; border-left-color: rgba(255, 255, 255, 0.5); border-right-color: rgba(255, 255, 255, 0.5); border-top-color: rgba(255, 255, 255, 0.5); border-bottom-color: rgba(255, 255, 255, 0.5);">
<ui:Label tabindex="-1" text="[按住 鼠标中键]&#10;[鼠标左键]&#10;[Shift+WASD]" parse-escape-sequences="true" display-tooltip-when-elided="true" picking-mode="Ignore" />
<ui:Label tabindex="-1" text="旋转视角&#10;使用笔刷操作&#10;移动视角" parse-escape-sequences="true" display-tooltip-when-elided="true" picking-mode="Ignore" />
</ui:VisualElement>
</ui:VisualElement>
<ui:VisualElement picking-mode="Ignore" name="L" class="root theme-dark photo-mode">
<ui:VisualElement picking-mode="Ignore" style="margin-top: auto; margin-right: auto; margin-bottom: auto; margin-left: 64px; min-width: 64px; flex-direction: row; align-items: center;">
@ -66,6 +75,15 @@
</ui:VisualElement>
<ui:VisualElement picking-mode="Ignore" name="R" class="root theme-dark photo-mode">
<ui:VisualElement picking-mode="Ignore" style="margin-top: auto; margin-right: 64px; margin-bottom: auto; margin-left: auto; flex-direction: row; align-items: stretch; width: auto; height: 512px; min-width: 256px;">
<ui:VisualElement>
<ui:Label tabindex="-1" text="辅助功能" parse-escape-sequences="true" display-tooltip-when-elided="true" class="tl" />
<ui:Label tabindex="-1" text="参考图形" parse-escape-sequences="true" display-tooltip-when-elided="true" class="tm" />
<ui:Button text="选择图像" parse-escape-sequences="true" display-tooltip-when-elided="true" name="pick-image-button" tooltip="复制到剪贴板" />
<ui:Label tabindex="-1" text="屏幕空间不透明度" parse-escape-sequences="true" display-tooltip-when-elided="true" />
<ui:Slider high-value="1" name="2d-opacity-slider" style="width: 128px;" />
<ui:Label tabindex="-1" text="3D空间不透明度" parse-escape-sequences="true" display-tooltip-when-elided="true" />
<ui:Slider high-value="1" name="3d-opacity-slider" style="width: 128px;" />
</ui:VisualElement>
<ui:VisualElement picking-mode="Ignore">
<ui:Label tabindex="-1" text="用户指令" parse-escape-sequences="true" display-tooltip-when-elided="true" class="tl" />
<ui:Button text="导出切割数据" parse-escape-sequences="true" display-tooltip-when-elided="true" name="export-button" tooltip="复制到剪贴板" />
@ -116,7 +134,7 @@
<ui:VisualElement picking-mode="Ignore">
<ui:VisualElement picking-mode="Ignore" style="flex-direction: row;">
<ui:VisualElement name="VisualElement" style="width: 48px; height: 48px; background-color: rgba(32, 32, 32, 0);">
<ui:VisualElement name="VisualElement" class="root" style="background-image: url(&apos;project://database/Assets/BITKit/Unity/Art/Icons/EditorIcons/processed/d_Prefab%20Icon.png?fileID=2800000&amp;guid=4bf02adfc0d27c542bc29a373f850f5f&amp;type=3#d_Prefab Icon&apos;); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px;" />
<ui:VisualElement name="VisualElement" class="root" style="background-image: url(&quot;project://database/Assets/BITKit/Unity/Art/Icons/EditorIcons/processed/d_Prefab%20Icon.png?fileID=2800000&amp;guid=4bf02adfc0d27c542bc29a373f850f5f&amp;type=3#d_Prefab Icon&quot;); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px;" />
</ui:VisualElement>
<ui:Label tabindex="-1" text="更换切削板" parse-escape-sequences="true" display-tooltip-when-elided="true" class="tl" />
</ui:VisualElement>

View File

@ -45,7 +45,7 @@ namespace BITKit
#if NET5_0_OR_GREATER
Log($"[{DateTime.Now}]{typeof(T).Name}:{x}");
#else
Log($"{typeof(T).Name}:{x}");
Log($"<color=#add8e6ff><b>{typeof(T).Name}</b></color>:{x}");
#endif
currentType = typeof(T);
@ -69,7 +69,7 @@ namespace BITKit
#endif
public static void Warning<T>(object x)
{
Warning($"{typeof(T).Name}:{x}");
Warning($"<color=#ffa500ff><b>{typeof(T).Name}</b></color>:{x}");
}
}
}

View File

@ -7,4 +7,8 @@ namespace BITKit.Mod
{
public string FolderPath;
}
public struct UninstallPackageCommand
{
public string PackageName;
}
}

View File

@ -122,9 +122,9 @@ namespace BITKit
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
StandardErrorEncoding = System.Text.Encoding.UTF8,
StandardInputEncoding = System.Text.Encoding.UTF8,
StandardOutputEncoding = System.Text.Encoding.UTF8,
StandardErrorEncoding = System.Text.Encoding.GetEncoding("gb2312"),
StandardInputEncoding = System.Text.Encoding.GetEncoding("gb2312"),
StandardOutputEncoding = System.Text.Encoding.GetEncoding("gb2312"),
};
var process = new Process()
{

File diff suppressed because one or more lines are too long

View File

@ -22,6 +22,11 @@ namespace BITKit.Console
{
public class BITConsole : MonoBehaviour
{
[RuntimeInitializeOnLoadMethod]
private static void Reload()
{
Application.logMessageReceivedThreaded += EnqueueLog;
}
private class CommandSelector
{
public VisualElement Container { get; set; }
@ -163,17 +168,6 @@ namespace BITKit.Console
}
private void OnEnable()
{
Application.logMessageReceived += EnqueueLog;
}
private void OnDisable()
{
Application.logMessageReceived -= EnqueueLog;
}
private void OnNextLine()
{
if (outputString.Count is not 0 && outputString.Last() != string.Empty)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,16 @@
{
"name": "I18N",
"rootNamespace": "",
"references": [],
"includePlatforms": [],
"excludePlatforms": [
"Editor"
],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

Binary file not shown.

View File

@ -2,6 +2,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
#if UNITY_EDITOR
using UnityEditor;
@ -17,6 +18,15 @@ namespace BITKit.Mod
[SerializeField] private bool loadLocalPackageOnStart;
private async void Start()
{
if (Application.isEditor is false)
{
BIT4Log.Log<UnityModService>($"UnityPlayer所在位置:{Application.dataPath}");
BIT4Log.Log<UnityModService>($"{nameof(System.Linq)}位于{typeof(Enumerable).Assembly.Location}");
}
foreach (var x in referencedAssemblies)
{
var dllName = x.Value.Contains(".dll") ? x.Value : $"{x.Value}.dll";

View File

@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using BITKit.Net.LAN;
using Cysharp.Threading.Tasks;
@ -23,8 +24,10 @@ namespace BITKit.Mod
_broadcaster.StartListen();
}
private void OnReceive(EndPoint arg1, byte[] bytes)
private async void OnReceive(EndPoint arg1, byte[] bytes)
{
await UniTask.SwitchToMainThread();
if(destroyCancellationToken.IsCancellationRequested) return;
var command = BITBinary.ReadAsValue(bytes);
switch (command)
{
@ -32,6 +35,17 @@ namespace BITKit.Mod
BIT4Log.Log<UnityWorkshopClient>($"收到加载命令:{loadFromFolderCommand.FolderPath}");
ModService.LoadFromPackage(loadFromFolderCommand.FolderPath).Forget();
break;
case UninstallPackageCommand uninstallPackageCommand:
BIT4Log.Log<UnityWorkshopClient>($"收到卸载命令:{uninstallPackageCommand.PackageName}");
var mod = ModService.Mods.SingleOrDefault(x=>x.PackageName == uninstallPackageCommand.PackageName);
if (mod is null)
{
BIT4Log.Warning<UnityWorkshopClient>($"未找到包:{uninstallPackageCommand.PackageName}");
return;
}
ModService.UnLoad(mod);
ModService.UnInstall(mod);
break;
default:
BIT4Log.Log<UnityWorkshopClient>($"未知命令:{command}");
break;

View File

@ -99,15 +99,26 @@ namespace BITKit.UX
{
await UniTask.SwitchToMainThread();
if (destroyCancellationToken.IsCancellationRequested) return;
_modContainers.GetOrAdd(obj.Name,_=> Create(obj));
var container = _modContainers.GetOrAdd(obj.Name,_=> Create(obj));
container.visualElement.RegisterCallback<MouseDownEvent>(x =>
{
if (x.button != 1) return;
ContextMenuBuilder.Create().BuildAction("卸载", () =>
{
ModService.UnLoad(obj);
ModService.UnInstall(obj);
}).Build();
});
}
private async void OnModUnLoaded(IMod obj)
{
await UniTask.SwitchToMainThread();
if (destroyCancellationToken.IsCancellationRequested) return;
var container = _modContainers.GetOrAdd(obj.Name,_=> Create(obj));
container.toggle.SetValueWithoutNotify(false);
//var container = _modContainers.GetOrAdd(obj.Name,_=> Create(obj));
if(_modContainers.TryGetValue(obj.Name,out var container))
{
container.toggle.SetValueWithoutNotify(false);
}
}
private async void OnModLoaded(IMod obj)

View File

@ -27,9 +27,9 @@ namespace BITKit
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError =true,
StandardErrorEncoding = System.Text.Encoding.UTF8,
StandardInputEncoding = System.Text.Encoding.UTF8,
StandardOutputEncoding = System.Text.Encoding.UTF8,
StandardErrorEncoding = System.Text.Encoding.GetEncoding("gb2312"),
//StandardInputEncoding = System.Text.Encoding.GetEncoding("gb2312"),
StandardOutputEncoding = System.Text.Encoding.GetEncoding("gb2312"),
};
if(arguments != null)
{

View File

@ -5,7 +5,7 @@
<ui:VisualElement name="Console" class="Console" style="width: 1024px; height: 768px; border-top-left-radius: 16px; border-bottom-left-radius: 16px; border-top-right-radius: 16px; border-bottom-right-radius: 16px; padding-left: 16px; padding-right: 16px; padding-top: 8px; padding-bottom: 8px; margin-left: auto; margin-right: auto; margin-top: auto; margin-bottom: auto;">
<ui:Label text="Console" display-tooltip-when-elided="true" class="Console-Text" />
<ui:ScrollView name="context-scrollview" class="Console-ScrollView" style="height: auto; flex-grow: 1; display: flex;">
<ui:Label text="This is Console&#10;This is &lt;size=24&gt;Rich Text&lt;/size&gt;&#10;This is &lt;color=yellow&gt;Warning&lt;/color&gt;&#10;This is &lt;color=red&gt;Error&lt;/color&gt;&#10;This is loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong text&#10;This is Console&#10;This is &lt;size=24&gt;Rich Text&lt;/size&gt;&#10;This is &lt;color=yellow&gt;Warning&lt;/color&gt;&#10;This is &lt;color=red&gt;Error&lt;/color&gt;&#10;This is loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong text&#10;This is Console&#10;This is &lt;size=24&gt;Rich Text&lt;/size&gt;&#10;This is &lt;color=yellow&gt;Warning&lt;/color&gt;&#10;This is &lt;color=red&gt;Error&lt;/color&gt;&#10;This is loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong text&#10;This is Console&#10;This is &lt;size=24&gt;Rich Text&lt;/size&gt;&#10;This is &lt;color=yellow&gt;Warning&lt;/color&gt;&#10;This is &lt;color=red&gt;Error&lt;/color&gt;&#10;This is loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong text&#10;This is Console&#10;This is &lt;size=24&gt;Rich Text&lt;/size&gt;&#10;This is &lt;color=yellow&gt;Warning&lt;/color&gt;&#10;This is &lt;color=red&gt;Error&lt;/color&gt;&#10;This is loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong text" display-tooltip-when-elided="true" name="Text" class="Console-Text" style="padding-left: 8px; padding-right: 8px; padding-top: 4px; padding-bottom: 4px; white-space: normal;" />
<ui:Label text="This is Console&#10;This is &lt;size=24&gt;Rich Text&lt;/size&gt;&#10;This is &lt;color=yellow&gt;Warning&lt;/color&gt;&#10;This is &lt;color=red&gt;Error&lt;/color&gt;&#10;This is loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong text&#10;This is Console&#10;This is &lt;size=24&gt;Rich Text&lt;/size&gt;&#10;This is &lt;color=yellow&gt;Warning&lt;/color&gt;&#10;This is &lt;color=red&gt;Error&lt;/color&gt;&#10;This is loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong text&#10;&lt;color=#add8e6ff&gt;&lt;b&gt;TypeName&lt;/b&gt;&lt;/color&gt;:MyMessage" display-tooltip-when-elided="true" name="Text" enable-rich-text="true" parse-escape-sequences="false" class="Console-Text" style="padding-left: 8px; padding-right: 8px; padding-top: 4px; padding-bottom: 4px; white-space: normal;" />
</ui:ScrollView>
<ui:TextField picking-mode="Ignore" value="filler text" text="filler text" name="TextField" class="Console-TextField" style="height: 48px;" />
</ui:VisualElement>

View File

@ -58,7 +58,7 @@ TabBar Button:disabled {
padding-top: 32px;
padding-bottom: 32px;
-unity-font-definition: initial;
-unity-font: url('project://database/Assets/BITKit/Unity/Art/Fonts/TTF/SourceHanMono/SourceHanMono-Regular.ttc?fileID=12800000&guid=170bacfb8afc52a468d956884ff0be08&type=3#SourceHanMono-Regular');
-unity-font: url("project://database/Assets/BITKit/Unity/Art/Fonts/TTF/SourceHanMono/SourceHanMono-Regular.ttc?fileID=12800000&guid=170bacfb8afc52a468d956884ff0be08&type=3#SourceHanMono-Regular");
}
.pa-64 {
@ -107,7 +107,7 @@ TabBar Button:disabled {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
-unity-font-definition: initial;
-unity-font: url('project://database/Assets/BITKit/Unity/Art/Fonts/TTF/SourceHanMono/SourceHanMono-Regular.ttc?fileID=12800000&guid=170bacfb8afc52a468d956884ff0be08&type=3#SourceHanMono-Regular');
-unity-font: url("project://database/Assets/BITKit/Unity/Art/Fonts/TTF/SourceHanMono/SourceHanMono-Regular.ttc?fileID=12800000&guid=170bacfb8afc52a468d956884ff0be08&type=3#SourceHanMono-Regular");
padding-left: 6px;
padding-right: 6px;
padding-top: 6px;
@ -138,7 +138,7 @@ TabBar Button:disabled {
}
.unity-text-element {
-unity-font-definition: url('project://database/Assets/BITKit/Unity/Art/Fonts/SDF/SourceHanMono-Regular%20SDF.asset?fileID=11400000&guid=b3753d022dd4b4545b0e5f3f6e9a997f&type=2#Assets/BITKit/Unity/Art/Fonts/SDF/SourceHanMono-Regular SDF.asset');
-unity-font-definition: url("project://database/Assets/BITKit/Unity/Art/Fonts/SDF/Roboto-Regular%20SDF.asset?fileID=11400000&guid=5b449e7b33d231a4085b869a8ae2c94c&type=2#Roboto-Regular SDF");
}
#unity-text-input .unity-text-element {
@ -147,12 +147,12 @@ TabBar Button:disabled {
.theme-light .unity-text-element {
color: rgb(31, 31, 31);
-unity-font: url('project://database/Assets/BITKit/Unity/Art/Fonts/TTF/SourceHanMono/SourceHanMono-Medium.ttc?fileID=12800000&guid=c8058440fb1ea26488e022a5ee5b3b35&type=3#SourceHanMono-Medium');
-unity-font: url("project://database/Assets/BITKit/Unity/Art/Fonts/TTF/SourceHanMono/SourceHanMono-Medium.ttc?fileID=12800000&guid=c8058440fb1ea26488e022a5ee5b3b35&type=3#SourceHanMono-Medium");
}
.theme-dark .unity-text-element {
color: rgb(231, 231, 231);
-unity-font: url('project://database/Assets/BITKit/Unity/Art/Fonts/TTF/SourceHanMono/SourceHanMono-Medium.ttc?fileID=12800000&guid=c8058440fb1ea26488e022a5ee5b3b35&type=3#SourceHanMono-Medium');
-unity-font: url("project://database/Assets/BITKit/Unity/Art/Fonts/TTF/SourceHanMono/SourceHanMono-Medium.ttc?fileID=12800000&guid=c8058440fb1ea26488e022a5ee5b3b35&type=3#SourceHanMono-Medium");
}
.theme-dark DropdownField > VisualElement > VisualElement {

View File

@ -0,0 +1,33 @@
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEngine;
namespace BITKit
{
public class Helper_I18N : MonoBehaviour
{
[PostProcessBuild(1)]
public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
{
return;
var folder = Path.Combine(Path.GetDirectoryName(EditorApplication.applicationPath), "Data",
"MonoBleedingEdge", "lib", "mono", "unityjit-win32");
var list = new List<string>()
{
"I18N.CJK.dll", "I18N.dll", "I18N.MidEast.dll", "I18N.Other.dll", "I18N.Rare.dll", "I18N.West.dll"
};
foreach (var name in list)
{
var fileInfo = new FileInfo(Path.Combine(folder, name));
var copyPath = Path.Combine(Path.GetDirectoryName(pathToBuiltProject),
$"{Application.productName}_Data", "Plugins", "x86_64", name);
fileInfo.CopyTo(copyPath);
Debug.Log($"已复制{name}到{copyPath}");
}
}
}
}

View File

@ -0,0 +1,46 @@
using System;
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using System.Text;
using UnityEngine.TestTools;
using System.Linq;
using UnityEditor;
using Random = UnityEngine.Random;
namespace BITKit
{
public class MiscTest
{
[Test]
public static void CheckPath()
{
var reportBuilder = new StringBuilder();
reportBuilder.AppendLine($"{nameof(EditorApplication.applicationPath)}:{EditorApplication.applicationPath}");
reportBuilder.AppendLine($"{nameof(Application.dataPath)}:{Application.dataPath}");
reportBuilder.AppendLine($"{nameof(Environment.CurrentDirectory)}:{Environment.CurrentDirectory}");
reportBuilder.AppendLine($"{nameof(Application.streamingAssetsPath)}:{Application.streamingAssetsPath}");
reportBuilder.AppendLine($"{nameof(Application.persistentDataPath)}:{Application.persistentDataPath}");
reportBuilder.AppendLine($"{nameof(Application.temporaryCachePath)}:{Application.temporaryCachePath}");
reportBuilder.AppendLine($"{nameof(Application.consoleLogPath)}:{Application.consoleLogPath}");
reportBuilder.AppendLine($"{nameof(Application.installerName)}:{Application.installerName}");
reportBuilder.AppendLine($"{nameof(Application.companyName)}:{Application.companyName}");
reportBuilder.AppendLine($"{nameof(Application.productName)}:{Application.productName}");
reportBuilder.AppendLine($"{nameof(Application.version)}:{Application.version}");
reportBuilder.AppendLine($"{nameof(Application.unityVersion)}:{Application.unityVersion}");
reportBuilder.AppendLine($"{nameof(Application.identifier)}:{Application.identifier}");
reportBuilder.AppendLine($"{nameof(Application.internetReachability)}:{Application.internetReachability}");
reportBuilder.AppendLine($"{nameof(Application.systemLanguage)}:{Application.systemLanguage}");
reportBuilder.AppendLine($"{nameof(Application.platform)}:{Application.platform}");
reportBuilder.AppendLine($"{nameof(Application.isMobilePlatform)}:{Application.isMobilePlatform}");
reportBuilder.AppendLine($"{nameof(Application.isConsolePlatform)}:{Application.isConsolePlatform}");
reportBuilder.AppendLine($"{nameof(Application.isEditor)}:{Application.isEditor}");
reportBuilder.AppendLine($"{nameof(Application.isFocused)}:{Application.isFocused}");
reportBuilder.AppendLine($"{nameof(Application.isPlaying)}:{Application.isPlaying}");
reportBuilder.AppendLine($"{nameof(Application.isBatchMode)}:{Application.isBatchMode}");
Debug.Log(reportBuilder.ToString());
}
}
}

View File

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using BITKit;
using BITKit.CommandPattern;
@ -17,6 +18,12 @@ namespace BITFactory.Cutting.Mod
public override string PackageName { get; set; } = "iFactory.Cutting.Mod.auto_save_images";
public override string Name { get; set; } = "自动保存导出数据";
public override string Description { get; set; } =
@"""
,
export_{Timestamp}.cfg
""";
[Inject] private ICuttingTool _cuttingTool;
[Inject] private IUXDialogue _dialogue;
@ -38,40 +45,26 @@ namespace BITFactory.Cutting.Mod
var commands = obj.OfType<ICuttingCommand>().ToArray();
var stringBuilder = new System.Text.StringBuilder();
var path = Path.Combine(FolderPath, $"export_{DateTime.Now.Ticks}.cfg");
stringBuilder.AppendLine($"导出时间: {DateTime.Now},导出命令数量: {commands.Length}");
stringBuilder.AppendLine($"导出时间: {DateTime.Now},导出命令数量: {obj.Length},有效命名数量: {commands.Length}");
foreach (var command in commands)
{
if(command is CuttingPointCommand pointCommand)
switch (command)
{
stringBuilder.AppendLine(
$"切削点: {pointCommand.PlanePoint.x} {pointCommand.PlanePoint.y} {pointCommand.PlanePoint.z}");
case CuttingPointCommand pointCommand:
stringBuilder.AppendLine(
$"切削点: {pointCommand.PlanePoint.x} {pointCommand.PlanePoint.y} {pointCommand.PlanePoint.z}");
break;
case CuttingLineCommand lineCommand:
stringBuilder.AppendLine($"切削线:{lineCommand.Line.Length}");
foreach (var linePos in lineCommand.Line)
{
stringBuilder.AppendLine($"切削线点: {linePos.x} {linePos.y} {linePos.z}");
}
break;
default:
stringBuilder.AppendLine($"{command.Name}:{command.GetType().FullName}");
break;
}
else if(command is CuttingLineCommand lineCommand)
{
stringBuilder.AppendLine($"切削线:{lineCommand.Line.Length}");
foreach (var linePos in lineCommand.Line)
{
stringBuilder.AppendLine($"切削线点: {linePos.x} {linePos.y} {linePos.z}");
}
}
else
{
stringBuilder.AppendLine($"{command.Name}:{command}");
}
// switch (command)
// {
// case CuttingPointCommand pointCommand:
// stringBuilder.AppendLine(
// $"切削点: {pointCommand.PlanePoint.x} {pointCommand.PlanePoint.y} {pointCommand.PlanePoint.z}");
// break;
// case CuttingLineCommand lineCommand:
// stringBuilder.AppendLine($"切削线:{lineCommand.Line.Length}");
// foreach (var linePos in lineCommand.Line)
// {
// stringBuilder.AppendLine($"切削线点: {linePos.x} {linePos.y} {linePos.z}");
// }
// break;
// }
}
File.WriteAllText(path, stringBuilder.ToString());

View File

@ -1,66 +0,0 @@
导出时间: 2024/3/4 17:26:34,导出命令数量: 65
切削球:X[0.27]Y[1.00]Z[-0.18]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.17]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.16]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.15]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.13]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.12]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.05]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.04]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.25]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.23]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.22]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.20]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.19]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.04]Y[1.00]Z[-0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.04]Y[1.00]Z[-0.18]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.04]Y[1.00]Z[-0.17]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.03]Y[1.00]Z[-0.16]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.03]Y[1.00]Z[-0.15]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.03]Y[1.00]Z[-0.14]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.03]Y[1.00]Z[-0.12]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.03]Y[1.00]Z[-0.11]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.03]Y[1.00]Z[-0.09]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.02]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.02]Y[1.00]Z[-0.07]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.02]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.04]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.05]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.06]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.20]Y[1.00]Z[0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.11]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.13]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.14]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.16]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.17]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.19]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.21]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[0.22]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.20]Y[1.00]Z[0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.19]Y[1.00]Z[0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.18]Y[1.00]Z[0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.16]Y[1.00]Z[0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.15]Y[1.00]Z[0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.14]Y[1.00]Z[0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.13]Y[1.00]Z[0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.08]Y[1.00]Z[0.11]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.08]Y[1.00]Z[0.12]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.08]Y[1.00]Z[0.13]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.08]Y[1.00]Z[0.15]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.07]Y[1.00]Z[0.16]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.07]Y[1.00]Z[0.18]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.07]Y[1.00]Z[0.19]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.07]Y[1.00]Z[0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.08]Y[1.00]Z[0.21]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.09]Y[1.00]Z[0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.11]Y[1.00]Z[0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.12]Y[1.00]Z[0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.13]Y[1.00]Z[0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.14]Y[1.00]Z[0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.15]Y[1.00]Z[0.19]R[0.01]:BITFactory.Cutting.CuttingSphereCommand

View File

@ -0,0 +1,48 @@
导出时间: 2024/3/4 23:35:49,导出命令数量: 47,有效命名数量: 47
切削球:X[0.26]Y[1.00]Z[-0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.22]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.21]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.19]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.17]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.16]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.15]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.13]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.12]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.11]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.24]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.23]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.21]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.20]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.19]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.01]Y[1.00]Z[-0.19]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.01]Y[1.00]Z[-0.17]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.01]Y[1.00]Z[-0.16]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.02]Y[1.00]Z[-0.14]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.02]Y[1.00]Z[-0.13]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.02]Y[1.00]Z[-0.11]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.02]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.03]Y[1.00]Z[-0.09]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.03]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.01]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.00]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.01]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.02]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.03]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.04]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.17]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.15]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.13]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.12]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.11]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.09]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[-0.05]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.11]Y[1.00]Z[-0.05]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.12]Y[1.00]Z[-0.05]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.14]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.16]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.17]Y[1.00]Z[-0.07]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.19]Y[1.00]Z[-0.07]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.20]Y[1.00]Z[-0.07]R[0.01]:BITFactory.Cutting.CuttingSphereCommand

View File

@ -0,0 +1,43 @@
导出时间: 2024/3/5 0:58:33,导出命令数量: 42
切削球:X[0.32]Y[1.00]Z[-0.23]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.31]Y[1.00]Z[-0.22]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.31]Y[1.00]Z[-0.20]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.31]Y[1.00]Z[-0.18]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.31]Y[1.00]Z[-0.17]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.31]Y[1.00]Z[-0.15]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.31]Y[1.00]Z[-0.13]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.30]Y[1.00]Z[-0.11]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.30]Y[1.00]Z[-0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.30]Y[1.00]Z[-0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.29]Y[1.00]Z[-0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.29]Y[1.00]Z[-0.05]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.28]Y[1.00]Z[-0.04]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.27]Y[1.00]Z[-0.02]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.26]Y[1.00]Z[-0.01]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.25]Y[1.00]Z[-0.01]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.24]Y[1.00]Z[-0.01]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.22]Y[1.00]Z[0.00]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.20]Y[1.00]Z[0.00]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.19]Y[1.00]Z[0.00]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.18]Y[1.00]Z[0.00]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.17]Y[1.00]Z[0.01]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.15]Y[1.00]Z[0.01]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.14]Y[1.00]Z[0.01]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.02]Y[1.00]Z[-0.05]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.02]Y[1.00]Z[-0.04]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.01]Y[1.00]Z[-0.03]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.01]Y[1.00]Z[-0.01]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.00]Y[1.00]Z[0.01]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.00]Y[1.00]Z[0.02]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.00]Y[1.00]Z[0.04]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.00]Y[1.00]Z[0.05]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[0.00]Y[1.00]Z[0.06]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.01]Y[1.00]Z[0.08]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.02]Y[1.00]Z[0.09]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.03]Y[1.00]Z[0.09]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.04]Y[1.00]Z[0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.06]Y[1.00]Z[0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.07]Y[1.00]Z[0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.08]Y[1.00]Z[0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand
切削球:X[-0.10]Y[1.00]Z[0.10]R[0.01]:BITFactory.Cutting.CuttingSphereCommand

View File

@ -139,7 +139,7 @@ PlayerSettings:
loadStoreDebugModeEnabled: 0
visionOSBundleVersion: 1.0
tvOSBundleVersion: 1.0
bundleVersion: 0.82
bundleVersion: 1.5
preloadedAssets:
- {fileID: 11400000, guid: 6c3ca1ca26aa7d84eaa7fee9094d9164, type: 2}
metroInputSource: 0
@ -283,7 +283,14 @@ PlayerSettings:
AndroidMinifyDebug: 0
AndroidValidateAppBundleSize: 1
AndroidAppBundleSizeToValidate: 150
m_BuildTargetIcons: []
m_BuildTargetIcons:
- m_BuildTarget:
m_Icons:
- serializedVersion: 2
m_Icon: {fileID: 2800000, guid: 2abb3796c35c2cb41924191ce0adb5a7, type: 3}
m_Width: 128
m_Height: 128
m_Kind: 0
m_BuildTargetPlatformIcons: []
m_BuildTargetBatching:
- m_BuildTarget: Standalone

View File

@ -2,7 +2,7 @@
![](https://img.shields.io/badge/Unity-2022.3.14f1-green)
![](https://img.shields.io/badge/Build-0.03-blue)
![](https://img.shields.io/badge/Build-1.5-blue)
![](https://img.shields.io/badge/Code-Eclair-yellow)
@ -103,6 +103,16 @@
**操作系统:** 仅限于64位`Windows 10`,`Windows 11`或以上
## 更新日志
### 2024年3月5日
- 更改动态编译器从`MCS`更改为`Roslyn`
- 添加了在左下角的`按键提示`
- 添加了位于菜单右侧的`辅助功能`
- 添加了基于世界空间的辅助3D参考
- 添加了基于屏幕空间的辅助2D参考
- 添加了位于上方的`创意工坊`快速访问按钮
- Mod管理器添加了`卸载`按钮,在列表中右键点击Mod可以卸载
- Mod管理器添加了`重载`按钮,可以快速重载Mod,用于快速调试
- 更改默认Mod图标
### 2024年1月25日
- 添加了运行时`MonoBleedingEdge`支持,可以在运行时动态编译`.cs`
- 添加了运行时安装`MonoBleedingEdge`支持