From 72d1f89b54fd165a20ff78e31a7d0f5ffc6555b3 Mon Sep 17 00:00:00 2001 From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:28:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewInputUnit/VIUBezierMobile.cs | 31 --- .../ViewInputUnit/VIUCameraMobile.cs | 27 --- .../ViewInputUnit/VIUCameraRotate.cs | 21 -- .../ViewInputUnit/VIUCameraScale.cs | 35 ---- .../ViewInputUnit/VIUDesignPointInsert.cs | 14 -- .../VIUDesignPointInsert.cs.meta | 11 -- .../ViewInputUnit/VIUDesignPointMobile.cs | 31 --- .../VIUDesignPointMobile.cs.meta | 11 -- .../ViewInputUnit/VIUEdgePointAdd.cs | 22 --- .../ViewInputUnit/VIUEdgePointAdd.cs.meta | 11 -- .../ViewInputUnit/VIUEdgePointMobile.cs | 31 --- .../ViewInputUnit/VIUEdgePointMobile.cs.meta | 11 -- .../ViewInputUnit/ViewInputUnit.cs | 18 -- .../ViewInputUnit/ViewInputUnit.cs.meta | 11 -- Assets/ModuleCore/ModuleAlgorithm.cs | 17 +- Assets/ModuleCore/ModuleAssets.cs | 19 +- Assets/ModuleCore/ModuleBuilder.cs | 19 ++ .../ModuleBuilder.cs.meta} | 2 +- Assets/ModuleCore/ModuleCore.cs | 77 ++++++-- .../ModuleInput.meta} | 2 +- Assets/ModuleCore/ModuleInput/ModuleInput.cs | 18 ++ .../ModuleInput/ModuleInput.cs.meta} | 2 +- .../ModuleCore/ModuleInput/ModuleUIInput.cs | 26 +++ .../ModuleInput/ModuleUIInput.cs.meta} | 2 +- Assets/ModuleCore/ModulePlateDesign.cs | 61 ------ Assets/ModuleCore/ModulePlateDesign.cs.meta | 11 -- Assets/ModuleCore/ModuleSending.cs | 21 ++ .../ModuleSending.cs.meta} | 2 +- .../ModuleUI.meta} | 2 +- Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs | 15 ++ .../ModuleCore/ModuleUI/ModuleUIPanel.cs.meta | 11 ++ Assets/ModuleCore/ModuleUIPage.cs | 3 + Assets/ModuleCore/ModuleUIWindow.cs | 4 + Assets/ModuleCore/ModuleViewCamera.cs | 46 +++-- Assets/ModuleCore/ModuleViewInput.cs | 45 ----- Assets/ModuleCore/ModuleViewInput.cs.meta | 11 -- Assets/ModuleCore/ModuleVisual.cs | 16 ++ Assets/ModuleCore/ModuleVisual.cs.meta | 11 ++ .../DataDesignPoint/DataDesignPoint.cs | 15 -- .../DataDesignPoint/DataDesignPoint.cs.meta | 11 -- .../DataDesignPoint/PrefabBezierPoint.cs | 29 --- .../DataDesignPoint/PrefabBezierPoint.cs.meta | 11 -- .../DataDesignPoint/PrefabDesignPoint.cs | 54 ----- .../DataDesignPoint/PrefabDesignPoint.cs.meta | 11 -- .../{DataDesignPoint.meta => DataFind.meta} | 2 +- Assets/ModuleData/DataFind/DataFindBezier.cs | 25 +++ .../DataFind/DataFindBezier.cs.meta | 11 ++ Assets/ModuleData/DataFind/DataFindPoint.cs | 25 +++ .../ModuleData/DataFind/DataFindPoint.cs.meta | 11 ++ Assets/ModuleData/DataInsertPoint.cs | 26 +++ Assets/ModuleData/DataInsertPoint.cs.meta | 11 ++ Assets/ModuleData/DataPlate/DataPlate.cs | 33 ++-- Assets/ModuleData/DataPlate/DataPoint.cs | 37 ++++ Assets/ModuleData/DataPlate/DataPoint.cs.meta | 11 ++ Assets/ModuleData/DataPlate/DataTriangle.cs | 12 ++ .../ModuleData/DataPlate/DataTriangle.cs.meta | 11 ++ Assets/ModuleData/DataPlate/PrefabPlate.cs | 61 ------ .../ModuleData/DataPlate/PrefabPlate.cs.meta | 11 -- .../ModuleData/DataPlate/PrefabPlateEdge.cs | 34 ---- .../DataPlate/PrefabPlateEdge.cs.meta | 11 -- Assets/ModuleData/DataPlatePresets.cs | 8 + Assets/ModuleData/DataPlatePresets.cs.meta | 11 ++ Assets/ModuleData/DataPolygon.cs | 33 ++++ Assets/ModuleData/DataPolygon.cs.meta | 11 ++ Assets/ModuleData/DataPresetsPlate.cs | 31 --- Assets/ModuleData/DataPresetsPlate.cs.meta | 11 -- Assets/ModuleData/DataUIMouseInput.cs | 10 + Assets/ModuleData/DataUIMouseInput.cs.meta | 11 ++ .../ModuleFunction/Algorithm/AlgorithmEdge.cs | 54 ----- .../Algorithm/AlgorithmEdge.cs.meta | 11 -- .../Algorithm/AlgorithmGenerateEdge.cs | 64 ------ .../Algorithm/AlgorithmGenerateEdge.cs.meta | 11 -- .../Algorithm/AlgorithmPolygon.cs | 186 ------------------ .../Assets/AssetsPresetsPlate.cs | 13 -- .../Assets/AssetsPresetsPlate.cs.meta | 11 -- Assets/ModuleFunction/EnumeratorAgent.cs | 9 - Assets/ModuleFunction/EnumeratorAgent.cs.meta | 11 -- .../{Algorithm.meta => ModuleAlgorithm.meta} | 2 +- .../ModuleAlgorithm/AlgorithmFindBezier.meta | 8 + .../AlgorithmFindBezier.cs | 40 ++++ .../AlgorithmFindBezier.cs.meta | 11 ++ .../ModuleAlgorithm/AlgorithmFindPoint.meta | 8 + .../AlgorithmFindPoint/AlgorithmFindPoint.cs | 49 +++++ .../AlgorithmFindPoint.cs.meta | 11 ++ .../ModuleAlgorithm/AlgorithmInsertPoint.meta | 8 + .../AlgorithmInsertPoint.cs | 74 +++++++ .../AlgorithmInsertPoint.cs.meta | 11 ++ .../ModuleAlgorithm/AlgorithmPolygon.meta | 8 + .../AlgorithmPolygon/AFAuriculareCutting.cs | 131 ++++++++++++ .../AFAuriculareCutting.cs.meta | 11 ++ .../AlgorithmPolygon/AFEdgePoint.cs | 76 +++++++ .../AlgorithmPolygon/AFEdgePoint.cs.meta | 11 ++ .../AlgorithmPolygon/AFMergeTriangles.cs | 95 +++++++++ .../AlgorithmPolygon/AFMergeTriangles.cs.meta | 11 ++ .../AlgorithmPolygon/AFSubdivision.cs | 35 ++++ .../AlgorithmPolygon/AFSubdivision.cs.meta | 11 ++ .../AlgorithmPolygon/AFTriangleMesh.cs | 37 ++++ .../AlgorithmPolygon/AFTriangleMesh.cs.meta | 11 ++ .../AlgorithmPolygon/AlgorithmPolygon.cs | 35 ++++ .../AlgorithmPolygon.cs.meta | 2 +- Assets/ModuleFunction/ModuleAssets.meta | 8 + .../ModuleAssets/AssetsPlate.cs | 35 ++++ .../ModuleAssets/AssetsPlate.cs.meta | 11 ++ .../ModuleAssets/AssetsPlatePresets.cs | 18 ++ .../ModuleAssets/AssetsPlatePresets.cs.meta | 11 ++ Assets/ModuleFunction/ModuleBuilder.meta | 8 + .../BuilderInsertPointToPoint.cs | 23 +++ .../BuilderInsertPointToPoint.cs.meta | 11 ++ .../BuilderPlatePresetsToPlate.cs | 42 ++++ .../BuilderPlatePresetsToPlate.cs.meta | 11 ++ Assets/ModuleFunction/ModuleInput.meta | 8 + .../ModuleInput/UIInputDesign.meta | 8 + .../UIInputDesign/IDesignBezier.cs | 36 ++++ .../UIInputDesign/IDesignBezier.cs.meta | 11 ++ .../UIInputDesign/IDesignInsert.cs | 26 +++ .../UIInputDesign/IDesignInsert.cs.meta | 11 ++ .../UIInputDesign/IDesignMobile.cs | 65 ++++++ .../UIInputDesign/IDesignMobile.cs.meta | 11 ++ .../UIInputDesign/IDesignScaleCamera.cs | 13 ++ .../UIInputDesign/IDesignScaleCamera.cs.meta | 11 ++ .../UIInputDesign/IDesignSelect.cs | 25 +++ .../UIInputDesign/IDesignSelect.cs.meta | 11 ++ .../UIInputDesign/UIInputDesign.cs | 101 ++++++++++ .../UIInputDesign/UIInputDesign.cs.meta | 11 ++ Assets/ModuleFunction/ModuleSending.meta | 8 + .../ModuleSending/SendingFindPoint.cs | 17 ++ .../ModuleSending/SendingFindPoint.cs.meta | 11 ++ .../ModuleSending/SendingPlate.cs | 17 ++ .../ModuleSending/SendingPlate.cs.meta | 11 ++ .../ModuleSending/SendingPoint.cs | 17 ++ .../ModuleSending/SendingPoint.cs.meta | 11 ++ Assets/ModuleFunction/ModuleUI.meta | 8 + .../ModuleUI/UIPageGarmentSewing.meta | 8 + .../UIPageGarmentSewing/UIPanelBaking.cs | 18 ++ .../UIPageGarmentSewing/UIPanelBaking.cs.meta | 11 ++ .../UIPageGarmentSewing/UIPanelDesign.cs | 68 +++++++ .../UIPageGarmentSewing/UIPanelDesign.cs.meta | 11 ++ .../UIPageGarmentSewing/UIPanelInspect.cs | 63 ++++++ .../UIPanelInspect.cs.meta | 11 ++ .../ModuleFunction/ModuleUI/UIPageGlobal.meta | 8 + .../ModuleUI/UIPageGlobal/UIPageGlobal.cs | 7 + .../UIPageGlobal/UIPageGlobal.cs.meta | 11 ++ Assets/ModuleFunction/ModuleViewCamera.meta | 8 + .../ModuleViewCamera/ViewCameraBaking.cs | 18 ++ .../ModuleViewCamera/ViewCameraBaking.cs.meta | 11 ++ .../ModuleViewCamera/ViewCameraDesign.cs | 55 ++++++ .../ModuleViewCamera/ViewCameraDesign.cs.meta | 11 ++ Assets/ModuleFunction/ModuleVisual.meta | 8 + .../ModuleVisual/VisualPlate.cs | 34 ++++ .../ModuleVisual/VisualPlate.cs.meta | 11 ++ .../ModuleVisual/VisualPoint.cs | 72 +++++++ .../ModuleVisual/VisualPoint.cs.meta | 11 ++ .../ModuleVisual/VisualPolygon.cs | 38 ++++ .../ModuleVisual/VisualPolygon.cs.meta | 11 ++ Assets/ModuleFunction/PlateDesign.meta | 8 - .../ModuleFunction/PlateDesign/PlateDesign.cs | 111 ----------- .../PlateDesign/PlateDesign.cs.meta | 11 -- Assets/ModuleFunction/SceneLoader.cs | 36 ---- Assets/ModuleFunction/SceneLoader.cs.meta | 11 -- Assets/ModuleFunction/UIPage.meta | 8 - .../UIPage/UIPageGarmentSewing.cs | 24 --- .../UIPage/UIPageGarmentSewing.cs.meta | 11 -- Assets/ModuleFunction/UIWindow.meta | 8 - .../UIWindow/UIWindowPresetsPlate.cs | 37 ---- .../UIWindow/UIWindowPresetsPlate.cs.meta | 11 -- Assets/ModuleFunction/VideoSystem.cs | 57 ------ Assets/ModuleFunction/VideoSystem.cs.meta | 11 -- Assets/ModuleFunction/ViewCamera.meta | 8 - .../ModuleFunction/ViewCamera/ViewCamera.cs | 42 ---- .../ViewCamera/ViewCamera.cs.meta | 11 -- .../ViewCamera/ViewCameraPlateBaking.cs | 9 - .../ViewCamera/ViewCameraPlateBaking.cs.meta | 11 -- .../ViewCamera/ViewCameraPlateDesign.cs | 9 - .../ViewCamera/ViewCameraPlateDesign.cs.meta | 11 -- Assets/ModuleFunction/ViewInput.meta | 8 - Assets/ModuleFunction/ViewInput/ViewInput.cs | 66 ------- .../ViewInput/ViewInput.cs.meta | 11 -- .../ViewInput/ViewInputPlateBaking.cs | 14 -- .../ViewInput/ViewInputPlateBaking.cs.meta | 11 -- .../ViewInput/ViewInputPlateDesign.cs | 18 -- .../ViewInput/ViewInputPlateDesign.cs.meta | 11 -- Assets/ModuleTools/DataPlateTool.cs | 74 ++----- Assets/ModuleTools/DataPlateTool.cs.meta | 2 +- Assets/ModuleTools/DataPointTool.cs | 9 + Assets/ModuleTools/DataPointTool.cs.meta | 11 ++ Assets/ModuleTools/LoopIndexTool.cs | 21 ++ Assets/ModuleTools/LoopIndexTool.cs.meta | 11 ++ .../UIComponent/PlateBaking/UIPlateBaking.cs | 128 ++++++------ .../UIComponent/PlateDesign/UIPlateDesign.cs | 96 --------- .../PlateDesign/UIPlateDesign.cs.meta | 11 -- .../PresetsPlate/UIPresetsPlateUnit.cs | 4 +- .../UIControl}/Assets.meta | 2 +- Packages/UIControl/Assets/Themes.meta | 8 + .../Assets/Themes/DefaultRuntimeTheme.tss | 30 +++ .../Themes/DefaultRuntimeTheme.tss.meta | 11 ++ Packages/UIControl/Assets/USS.meta | 8 + Packages/UIControl/Assets/USS/Dropdown.uss | 52 +++++ .../UIControl/Assets/USS/Dropdown.uss.meta | 11 ++ Packages/UIControl/Assets/USS/Foldout.uss | 43 ++++ .../UIControl/Assets/USS/Foldout.uss.meta | 11 ++ Packages/UIControl/Assets/USS/Fonts.uss | 2 + Packages/UIControl/Assets/USS/Fonts.uss.meta | 11 ++ Packages/UIControl/Assets/USS/InputField.uss | 49 +++++ .../UIControl/Assets/USS/InputField.uss.meta | 11 ++ Packages/UIControl/Assets/USS/PopupPrompt.uss | 101 ++++++++++ .../UIControl/Assets/USS/PopupPrompt.uss.meta | 11 ++ Packages/UIControl/Assets/USS/PopupWindow.uss | 95 +++++++++ .../UIControl/Assets/USS/PopupWindow.uss.meta | 11 ++ Packages/UIControl/Assets/USS/ScrollView.meta | 8 + .../Assets/USS/ScrollView/ScrollView.uss | 24 +++ .../Assets/USS/ScrollView/ScrollView.uss.meta | 11 ++ .../USS/ScrollView/ScrollViewHorizontal.uss | 30 +++ .../ScrollView/ScrollViewHorizontal.uss.meta | 11 ++ .../USS/ScrollView/ScrollViewVertical.uss | 32 +++ .../ScrollView/ScrollViewVertical.uss.meta | 11 ++ .../USS/ScrollView/ScrollerHorizontal.uss | 11 ++ .../ScrollView/ScrollerHorizontal.uss.meta | 11 ++ .../USS/ScrollView/ScrollerVertical.uss | 11 ++ .../USS/ScrollView/ScrollerVertical.uss.meta | 11 ++ Packages/UIControl/Assets/USS/Slider.uss | 129 ++++++++++++ Packages/UIControl/Assets/USS/Slider.uss.meta | 11 ++ Packages/UIControl/Assets/USS/Toggle.uss | 34 ++++ Packages/UIControl/Assets/USS/Toggle.uss.meta | 11 ++ Packages/UIControl/Editor.meta | 8 + Packages/UIControl/Editor/CreateUSS.cs | 80 ++++++++ Packages/UIControl/Editor/CreateUSS.cs.meta | 11 ++ .../Editor/MuHuaEditor.UIControl.asmdef | 18 ++ .../Editor/MuHuaEditor.UIControl.asmdef.meta | 7 + Packages/UIControl/Runtime.meta | 8 + Packages/UIControl/Runtime/InputField.meta | 8 + .../Runtime/InputField/MUFloatField.cs | 30 +++ .../Runtime/InputField/MUFloatField.cs.meta | 11 ++ .../Runtime/InputField/MULongField.cs | 28 +++ .../Runtime/InputField/MULongField.cs.meta | 11 ++ .../Runtime/InputField/MUTextField.cs | 55 ++++++ .../Runtime/InputField/MUTextField.cs.meta | 11 ++ Packages/UIControl/Runtime/MUDropdown.cs | 31 +++ Packages/UIControl/Runtime/MUDropdown.cs.meta | 11 ++ Packages/UIControl/Runtime/MUFoldout.cs | 95 +++++++++ Packages/UIControl/Runtime/MUFoldout.cs.meta | 11 ++ .../UIControl/Runtime/MUSliderHorizontal.cs | 186 ++++++++++++++++++ .../Runtime/MUSliderHorizontal.cs.meta | 11 ++ Packages/UIControl/Runtime/MUToggle.cs | 48 +++++ Packages/UIControl/Runtime/MUToggle.cs.meta | 11 ++ .../UIControl/Runtime/MuHua.UIControl.asmdef | 3 + .../Runtime/MuHua.UIControl.asmdef.meta | 7 + Packages/UIControl/Runtime/Popup.meta | 8 + .../UIControl/Runtime/Popup/MUPopupPrompt.cs | 65 ++++++ .../Runtime/Popup/MUPopupPrompt.cs.meta | 11 ++ .../UIControl/Runtime/Popup/MUPopupWindow.cs | 90 +++++++++ .../Runtime/Popup/MUPopupWindow.cs.meta | 11 ++ Packages/UIControl/Runtime/ScrollView.meta | 8 + .../Runtime/ScrollView/MUScrollView.cs | 33 ++++ .../Runtime/ScrollView/MUScrollView.cs.meta | 11 ++ .../ScrollView/MUScrollViewHorizontal.cs | 138 +++++++++++++ .../ScrollView/MUScrollViewHorizontal.cs.meta | 11 ++ .../ScrollView/MUScrollViewVertical.cs | 139 +++++++++++++ .../ScrollView/MUScrollViewVertical.cs.meta | 11 ++ .../ScrollView/MUScrollerHorizontal.cs | 105 ++++++++++ .../ScrollView/MUScrollerHorizontal.cs.meta | 11 ++ .../Runtime/ScrollView/MUScrollerVertical.cs | 105 ++++++++++ .../ScrollView/MUScrollerVertical.cs.meta | 11 ++ Packages/UIControl/Runtime/UIViewModel.meta | 8 + .../Runtime/UIViewModel/UIViewExtend.cs | 15 ++ .../Runtime/UIViewModel/UIViewExtend.cs.meta | 11 ++ .../Runtime/UIViewModel/UIViewModel.cs | 15 ++ .../Runtime/UIViewModel/UIViewModel.cs.meta | 11 ++ .../Runtime/UIViewModel/UIViewTemplate.cs | 15 ++ .../UIViewModel/UIViewTemplate.cs.meta | 11 ++ .../Runtime/UIViewModel/UIViewTool.cs | 30 +++ .../Runtime/UIViewModel/UIViewTool.cs.meta | 11 ++ Packages/UIControl/package.json | 11 ++ Packages/UIControl/package.json.meta | 7 + Packages/packages-lock.json | 7 +- 274 files changed, 4939 insertions(+), 1968 deletions(-) delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUBezierMobile.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUCameraMobile.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUCameraRotate.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUCameraScale.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUDesignPointInsert.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUDesignPointInsert.cs.meta delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUDesignPointMobile.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUDesignPointMobile.cs.meta delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUEdgePointAdd.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUEdgePointAdd.cs.meta delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUEdgePointMobile.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/VIUEdgePointMobile.cs.meta delete mode 100644 Assets/ModuleControl/ViewInputUnit/ViewInputUnit.cs delete mode 100644 Assets/ModuleControl/ViewInputUnit/ViewInputUnit.cs.meta create mode 100644 Assets/ModuleCore/ModuleBuilder.cs rename Assets/{ModuleControl/ViewInputUnit/VIUCameraRotate.cs.meta => ModuleCore/ModuleBuilder.cs.meta} (83%) rename Assets/{ModuleControl.meta => ModuleCore/ModuleInput.meta} (77%) create mode 100644 Assets/ModuleCore/ModuleInput/ModuleInput.cs rename Assets/{ModuleControl/ViewInputUnit/VIUCameraScale.cs.meta => ModuleCore/ModuleInput/ModuleInput.cs.meta} (83%) create mode 100644 Assets/ModuleCore/ModuleInput/ModuleUIInput.cs rename Assets/{ModuleControl/ViewInputUnit/VIUCameraMobile.cs.meta => ModuleCore/ModuleInput/ModuleUIInput.cs.meta} (83%) delete mode 100644 Assets/ModuleCore/ModulePlateDesign.cs delete mode 100644 Assets/ModuleCore/ModulePlateDesign.cs.meta create mode 100644 Assets/ModuleCore/ModuleSending.cs rename Assets/{ModuleControl/ViewInputUnit/VIUBezierMobile.cs.meta => ModuleCore/ModuleSending.cs.meta} (83%) rename Assets/{ModuleControl/ViewInputUnit.meta => ModuleCore/ModuleUI.meta} (77%) create mode 100644 Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs create mode 100644 Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs.meta delete mode 100644 Assets/ModuleCore/ModuleViewInput.cs delete mode 100644 Assets/ModuleCore/ModuleViewInput.cs.meta create mode 100644 Assets/ModuleCore/ModuleVisual.cs create mode 100644 Assets/ModuleCore/ModuleVisual.cs.meta delete mode 100644 Assets/ModuleData/DataDesignPoint/DataDesignPoint.cs delete mode 100644 Assets/ModuleData/DataDesignPoint/DataDesignPoint.cs.meta delete mode 100644 Assets/ModuleData/DataDesignPoint/PrefabBezierPoint.cs delete mode 100644 Assets/ModuleData/DataDesignPoint/PrefabBezierPoint.cs.meta delete mode 100644 Assets/ModuleData/DataDesignPoint/PrefabDesignPoint.cs delete mode 100644 Assets/ModuleData/DataDesignPoint/PrefabDesignPoint.cs.meta rename Assets/ModuleData/{DataDesignPoint.meta => DataFind.meta} (77%) create mode 100644 Assets/ModuleData/DataFind/DataFindBezier.cs create mode 100644 Assets/ModuleData/DataFind/DataFindBezier.cs.meta create mode 100644 Assets/ModuleData/DataFind/DataFindPoint.cs create mode 100644 Assets/ModuleData/DataFind/DataFindPoint.cs.meta create mode 100644 Assets/ModuleData/DataInsertPoint.cs create mode 100644 Assets/ModuleData/DataInsertPoint.cs.meta create mode 100644 Assets/ModuleData/DataPlate/DataPoint.cs create mode 100644 Assets/ModuleData/DataPlate/DataPoint.cs.meta create mode 100644 Assets/ModuleData/DataPlate/DataTriangle.cs create mode 100644 Assets/ModuleData/DataPlate/DataTriangle.cs.meta delete mode 100644 Assets/ModuleData/DataPlate/PrefabPlate.cs delete mode 100644 Assets/ModuleData/DataPlate/PrefabPlate.cs.meta delete mode 100644 Assets/ModuleData/DataPlate/PrefabPlateEdge.cs delete mode 100644 Assets/ModuleData/DataPlate/PrefabPlateEdge.cs.meta create mode 100644 Assets/ModuleData/DataPlatePresets.cs create mode 100644 Assets/ModuleData/DataPlatePresets.cs.meta create mode 100644 Assets/ModuleData/DataPolygon.cs create mode 100644 Assets/ModuleData/DataPolygon.cs.meta delete mode 100644 Assets/ModuleData/DataPresetsPlate.cs delete mode 100644 Assets/ModuleData/DataPresetsPlate.cs.meta create mode 100644 Assets/ModuleData/DataUIMouseInput.cs create mode 100644 Assets/ModuleData/DataUIMouseInput.cs.meta delete mode 100644 Assets/ModuleFunction/Algorithm/AlgorithmEdge.cs delete mode 100644 Assets/ModuleFunction/Algorithm/AlgorithmEdge.cs.meta delete mode 100644 Assets/ModuleFunction/Algorithm/AlgorithmGenerateEdge.cs delete mode 100644 Assets/ModuleFunction/Algorithm/AlgorithmGenerateEdge.cs.meta delete mode 100644 Assets/ModuleFunction/Algorithm/AlgorithmPolygon.cs delete mode 100644 Assets/ModuleFunction/Assets/AssetsPresetsPlate.cs delete mode 100644 Assets/ModuleFunction/Assets/AssetsPresetsPlate.cs.meta delete mode 100644 Assets/ModuleFunction/EnumeratorAgent.cs delete mode 100644 Assets/ModuleFunction/EnumeratorAgent.cs.meta rename Assets/ModuleFunction/{Algorithm.meta => ModuleAlgorithm.meta} (77%) create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier/AlgorithmFindBezier.cs create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier/AlgorithmFindBezier.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint/AlgorithmFindPoint.cs create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint/AlgorithmFindPoint.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint/AlgorithmInsertPoint.cs create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint/AlgorithmInsertPoint.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFAuriculareCutting.cs create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFAuriculareCutting.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFEdgePoint.cs create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFEdgePoint.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFMergeTriangles.cs create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFMergeTriangles.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFSubdivision.cs create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFSubdivision.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFTriangleMesh.cs create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFTriangleMesh.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AlgorithmPolygon.cs rename Assets/ModuleFunction/{Algorithm => ModuleAlgorithm/AlgorithmPolygon}/AlgorithmPolygon.cs.meta (83%) create mode 100644 Assets/ModuleFunction/ModuleAssets.meta create mode 100644 Assets/ModuleFunction/ModuleAssets/AssetsPlate.cs create mode 100644 Assets/ModuleFunction/ModuleAssets/AssetsPlate.cs.meta create mode 100644 Assets/ModuleFunction/ModuleAssets/AssetsPlatePresets.cs create mode 100644 Assets/ModuleFunction/ModuleAssets/AssetsPlatePresets.cs.meta create mode 100644 Assets/ModuleFunction/ModuleBuilder.meta create mode 100644 Assets/ModuleFunction/ModuleBuilder/BuilderInsertPointToPoint.cs create mode 100644 Assets/ModuleFunction/ModuleBuilder/BuilderInsertPointToPoint.cs.meta create mode 100644 Assets/ModuleFunction/ModuleBuilder/BuilderPlatePresetsToPlate.cs create mode 100644 Assets/ModuleFunction/ModuleBuilder/BuilderPlatePresetsToPlate.cs.meta create mode 100644 Assets/ModuleFunction/ModuleInput.meta create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign.meta create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignBezier.cs create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignBezier.cs.meta create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignInsert.cs create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignInsert.cs.meta create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignMobile.cs create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignMobile.cs.meta create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignScaleCamera.cs create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignScaleCamera.cs.meta create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignSelect.cs create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignSelect.cs.meta create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/UIInputDesign.cs create mode 100644 Assets/ModuleFunction/ModuleInput/UIInputDesign/UIInputDesign.cs.meta create mode 100644 Assets/ModuleFunction/ModuleSending.meta create mode 100644 Assets/ModuleFunction/ModuleSending/SendingFindPoint.cs create mode 100644 Assets/ModuleFunction/ModuleSending/SendingFindPoint.cs.meta create mode 100644 Assets/ModuleFunction/ModuleSending/SendingPlate.cs create mode 100644 Assets/ModuleFunction/ModuleSending/SendingPlate.cs.meta create mode 100644 Assets/ModuleFunction/ModuleSending/SendingPoint.cs create mode 100644 Assets/ModuleFunction/ModuleSending/SendingPoint.cs.meta create mode 100644 Assets/ModuleFunction/ModuleUI.meta create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing.meta create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelBaking.cs create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelBaking.cs.meta create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelDesign.cs create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelDesign.cs.meta create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelInspect.cs create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelInspect.cs.meta create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGlobal.meta create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGlobal/UIPageGlobal.cs create mode 100644 Assets/ModuleFunction/ModuleUI/UIPageGlobal/UIPageGlobal.cs.meta create mode 100644 Assets/ModuleFunction/ModuleViewCamera.meta create mode 100644 Assets/ModuleFunction/ModuleViewCamera/ViewCameraBaking.cs create mode 100644 Assets/ModuleFunction/ModuleViewCamera/ViewCameraBaking.cs.meta create mode 100644 Assets/ModuleFunction/ModuleViewCamera/ViewCameraDesign.cs create mode 100644 Assets/ModuleFunction/ModuleViewCamera/ViewCameraDesign.cs.meta create mode 100644 Assets/ModuleFunction/ModuleVisual.meta create mode 100644 Assets/ModuleFunction/ModuleVisual/VisualPlate.cs create mode 100644 Assets/ModuleFunction/ModuleVisual/VisualPlate.cs.meta create mode 100644 Assets/ModuleFunction/ModuleVisual/VisualPoint.cs create mode 100644 Assets/ModuleFunction/ModuleVisual/VisualPoint.cs.meta create mode 100644 Assets/ModuleFunction/ModuleVisual/VisualPolygon.cs create mode 100644 Assets/ModuleFunction/ModuleVisual/VisualPolygon.cs.meta delete mode 100644 Assets/ModuleFunction/PlateDesign.meta delete mode 100644 Assets/ModuleFunction/PlateDesign/PlateDesign.cs delete mode 100644 Assets/ModuleFunction/PlateDesign/PlateDesign.cs.meta delete mode 100644 Assets/ModuleFunction/SceneLoader.cs delete mode 100644 Assets/ModuleFunction/SceneLoader.cs.meta delete mode 100644 Assets/ModuleFunction/UIPage.meta delete mode 100644 Assets/ModuleFunction/UIPage/UIPageGarmentSewing.cs delete mode 100644 Assets/ModuleFunction/UIPage/UIPageGarmentSewing.cs.meta delete mode 100644 Assets/ModuleFunction/UIWindow.meta delete mode 100644 Assets/ModuleFunction/UIWindow/UIWindowPresetsPlate.cs delete mode 100644 Assets/ModuleFunction/UIWindow/UIWindowPresetsPlate.cs.meta delete mode 100644 Assets/ModuleFunction/VideoSystem.cs delete mode 100644 Assets/ModuleFunction/VideoSystem.cs.meta delete mode 100644 Assets/ModuleFunction/ViewCamera.meta delete mode 100644 Assets/ModuleFunction/ViewCamera/ViewCamera.cs delete mode 100644 Assets/ModuleFunction/ViewCamera/ViewCamera.cs.meta delete mode 100644 Assets/ModuleFunction/ViewCamera/ViewCameraPlateBaking.cs delete mode 100644 Assets/ModuleFunction/ViewCamera/ViewCameraPlateBaking.cs.meta delete mode 100644 Assets/ModuleFunction/ViewCamera/ViewCameraPlateDesign.cs delete mode 100644 Assets/ModuleFunction/ViewCamera/ViewCameraPlateDesign.cs.meta delete mode 100644 Assets/ModuleFunction/ViewInput.meta delete mode 100644 Assets/ModuleFunction/ViewInput/ViewInput.cs delete mode 100644 Assets/ModuleFunction/ViewInput/ViewInput.cs.meta delete mode 100644 Assets/ModuleFunction/ViewInput/ViewInputPlateBaking.cs delete mode 100644 Assets/ModuleFunction/ViewInput/ViewInputPlateBaking.cs.meta delete mode 100644 Assets/ModuleFunction/ViewInput/ViewInputPlateDesign.cs delete mode 100644 Assets/ModuleFunction/ViewInput/ViewInputPlateDesign.cs.meta create mode 100644 Assets/ModuleTools/DataPointTool.cs create mode 100644 Assets/ModuleTools/DataPointTool.cs.meta create mode 100644 Assets/ModuleTools/LoopIndexTool.cs create mode 100644 Assets/ModuleTools/LoopIndexTool.cs.meta delete mode 100644 Assets/UI Toolkit/UIComponent/PlateDesign/UIPlateDesign.cs delete mode 100644 Assets/UI Toolkit/UIComponent/PlateDesign/UIPlateDesign.cs.meta rename {Assets/ModuleFunction => Packages/UIControl}/Assets.meta (77%) create mode 100644 Packages/UIControl/Assets/Themes.meta create mode 100644 Packages/UIControl/Assets/Themes/DefaultRuntimeTheme.tss create mode 100644 Packages/UIControl/Assets/Themes/DefaultRuntimeTheme.tss.meta create mode 100644 Packages/UIControl/Assets/USS.meta create mode 100644 Packages/UIControl/Assets/USS/Dropdown.uss create mode 100644 Packages/UIControl/Assets/USS/Dropdown.uss.meta create mode 100644 Packages/UIControl/Assets/USS/Foldout.uss create mode 100644 Packages/UIControl/Assets/USS/Foldout.uss.meta create mode 100644 Packages/UIControl/Assets/USS/Fonts.uss create mode 100644 Packages/UIControl/Assets/USS/Fonts.uss.meta create mode 100644 Packages/UIControl/Assets/USS/InputField.uss create mode 100644 Packages/UIControl/Assets/USS/InputField.uss.meta create mode 100644 Packages/UIControl/Assets/USS/PopupPrompt.uss create mode 100644 Packages/UIControl/Assets/USS/PopupPrompt.uss.meta create mode 100644 Packages/UIControl/Assets/USS/PopupWindow.uss create mode 100644 Packages/UIControl/Assets/USS/PopupWindow.uss.meta create mode 100644 Packages/UIControl/Assets/USS/ScrollView.meta create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollView.uss create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollView.uss.meta create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollViewHorizontal.uss create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollViewHorizontal.uss.meta create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollViewVertical.uss create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollViewVertical.uss.meta create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollerHorizontal.uss create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollerHorizontal.uss.meta create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollerVertical.uss create mode 100644 Packages/UIControl/Assets/USS/ScrollView/ScrollerVertical.uss.meta create mode 100644 Packages/UIControl/Assets/USS/Slider.uss create mode 100644 Packages/UIControl/Assets/USS/Slider.uss.meta create mode 100644 Packages/UIControl/Assets/USS/Toggle.uss create mode 100644 Packages/UIControl/Assets/USS/Toggle.uss.meta create mode 100644 Packages/UIControl/Editor.meta create mode 100644 Packages/UIControl/Editor/CreateUSS.cs create mode 100644 Packages/UIControl/Editor/CreateUSS.cs.meta create mode 100644 Packages/UIControl/Editor/MuHuaEditor.UIControl.asmdef create mode 100644 Packages/UIControl/Editor/MuHuaEditor.UIControl.asmdef.meta create mode 100644 Packages/UIControl/Runtime.meta create mode 100644 Packages/UIControl/Runtime/InputField.meta create mode 100644 Packages/UIControl/Runtime/InputField/MUFloatField.cs create mode 100644 Packages/UIControl/Runtime/InputField/MUFloatField.cs.meta create mode 100644 Packages/UIControl/Runtime/InputField/MULongField.cs create mode 100644 Packages/UIControl/Runtime/InputField/MULongField.cs.meta create mode 100644 Packages/UIControl/Runtime/InputField/MUTextField.cs create mode 100644 Packages/UIControl/Runtime/InputField/MUTextField.cs.meta create mode 100644 Packages/UIControl/Runtime/MUDropdown.cs create mode 100644 Packages/UIControl/Runtime/MUDropdown.cs.meta create mode 100644 Packages/UIControl/Runtime/MUFoldout.cs create mode 100644 Packages/UIControl/Runtime/MUFoldout.cs.meta create mode 100644 Packages/UIControl/Runtime/MUSliderHorizontal.cs create mode 100644 Packages/UIControl/Runtime/MUSliderHorizontal.cs.meta create mode 100644 Packages/UIControl/Runtime/MUToggle.cs create mode 100644 Packages/UIControl/Runtime/MUToggle.cs.meta create mode 100644 Packages/UIControl/Runtime/MuHua.UIControl.asmdef create mode 100644 Packages/UIControl/Runtime/MuHua.UIControl.asmdef.meta create mode 100644 Packages/UIControl/Runtime/Popup.meta create mode 100644 Packages/UIControl/Runtime/Popup/MUPopupPrompt.cs create mode 100644 Packages/UIControl/Runtime/Popup/MUPopupPrompt.cs.meta create mode 100644 Packages/UIControl/Runtime/Popup/MUPopupWindow.cs create mode 100644 Packages/UIControl/Runtime/Popup/MUPopupWindow.cs.meta create mode 100644 Packages/UIControl/Runtime/ScrollView.meta create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollView.cs create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollView.cs.meta create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollViewHorizontal.cs create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollViewHorizontal.cs.meta create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollViewVertical.cs create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollViewVertical.cs.meta create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollerHorizontal.cs create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollerHorizontal.cs.meta create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollerVertical.cs create mode 100644 Packages/UIControl/Runtime/ScrollView/MUScrollerVertical.cs.meta create mode 100644 Packages/UIControl/Runtime/UIViewModel.meta create mode 100644 Packages/UIControl/Runtime/UIViewModel/UIViewExtend.cs create mode 100644 Packages/UIControl/Runtime/UIViewModel/UIViewExtend.cs.meta create mode 100644 Packages/UIControl/Runtime/UIViewModel/UIViewModel.cs create mode 100644 Packages/UIControl/Runtime/UIViewModel/UIViewModel.cs.meta create mode 100644 Packages/UIControl/Runtime/UIViewModel/UIViewTemplate.cs create mode 100644 Packages/UIControl/Runtime/UIViewModel/UIViewTemplate.cs.meta create mode 100644 Packages/UIControl/Runtime/UIViewModel/UIViewTool.cs create mode 100644 Packages/UIControl/Runtime/UIViewModel/UIViewTool.cs.meta create mode 100644 Packages/UIControl/package.json create mode 100644 Packages/UIControl/package.json.meta diff --git a/Assets/ModuleControl/ViewInputUnit/VIUBezierMobile.cs b/Assets/ModuleControl/ViewInputUnit/VIUBezierMobile.cs deleted file mode 100644 index e90ebb9..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUBezierMobile.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class VIUBezierMobile : ModuleViewInputUnit { - private Vector3 mousePosition; - private Vector3 originalPosition; - private readonly ModuleViewCamera viewCamera; - private ModulePlateDesign PlateDesign => ModuleCore.I.PlateDesign; - public VIUBezierMobile(ModuleViewCamera viewCamera) { - this.viewCamera = viewCamera; - } - public override void DownMouse(DataMouseInput data) { - PlateDesign.SelectBezierPoint(data.ScreenPosition); - if (!PlateDesign.IsValidBezierPoint) { return; } - mousePosition = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - originalPosition = PlateDesign.BezierPointPosition; - } - public override void DragMouse(DataMouseInput data) { - if (!PlateDesign.IsValidBezierPoint) { return; } - Vector3 current = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - Vector3 offset = current - mousePosition; - PlateDesign.ChangeBezierPoint(originalPosition + offset); - } - public override void ReleaseMouse(DataMouseInput data) { - PlateDesign.ReleaseBezierPoint(); - } - public override void ScrollWheel(DataMouseInput data) { - PlateDesign.ReleaseBezierPoint(); - } -} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUCameraMobile.cs b/Assets/ModuleControl/ViewInputUnit/VIUCameraMobile.cs deleted file mode 100644 index 67a1fad..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUCameraMobile.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class VIUCameraMobile : ModuleViewInputUnit { - private Vector3 mousePosition; - private Vector3 originalPosition; - private readonly ModuleViewCamera viewCamera; - public VIUCameraMobile(ModuleViewCamera viewCamera) { - this.viewCamera = viewCamera; - } - public override void DownMouse(DataMouseInput data) { - mousePosition = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - originalPosition = viewCamera.Position; - } - public override void DragMouse(DataMouseInput data) { - Vector3 current = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - Vector3 offset = current - mousePosition; - viewCamera.Position = originalPosition + offset; - } - public override void ReleaseMouse(DataMouseInput data) { - - } - public override void ScrollWheel(DataMouseInput data) { - - } -} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUCameraRotate.cs b/Assets/ModuleControl/ViewInputUnit/VIUCameraRotate.cs deleted file mode 100644 index 56b9a01..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUCameraRotate.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class VIUCameraRotate : ModuleViewInputUnit { - private float mouseRotate; - private float originalRotate; - private readonly ModuleViewCamera viewCamera; - public VIUCameraRotate(ModuleViewCamera viewCamera) { - this.viewCamera = viewCamera; - } - public override void DownMouse(DataMouseInput data) { - mouseRotate = viewCamera.ScreenToViewPosition(data.ScreenPosition).x; - originalRotate = viewCamera.EulerAngles.y; - } - public override void DragMouse(DataMouseInput data) { - float current = viewCamera.ScreenToViewPosition(data.ScreenPosition).x; - float offset = (current - mouseRotate) * 360; - viewCamera.EulerAngles = new Vector3(0, originalRotate - offset, 0); - } -} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUCameraScale.cs b/Assets/ModuleControl/ViewInputUnit/VIUCameraScale.cs deleted file mode 100644 index 3e48534..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUCameraScale.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class VIUCameraScale : ModuleViewInputUnit { - public enum ScaleType { Scale, Orthographic } - private readonly ScaleType scaleType; - private readonly ModuleViewCamera viewCamera; - public VIUCameraScale(ModuleViewCamera viewCamera, ScaleType scaleType = ScaleType.Scale) { - this.viewCamera = viewCamera; - this.scaleType = scaleType; - } - public override void DownMouse(DataMouseInput data) { - - } - public override void DragMouse(DataMouseInput data) { - - } - public override void ReleaseMouse(DataMouseInput data) { - - } - public override void ScrollWheel(DataMouseInput data) { - if (scaleType == ScaleType.Scale) { - float size = viewCamera.LocalScale.x + data.ScrollWheel; - size = Mathf.Clamp(size, 0.5f, 4); - Vector3 localScale = new Vector3(size, size, size); - viewCamera.LocalScale = Vector3.Lerp(viewCamera.LocalScale, localScale, Time.deltaTime * 20); - } - if (scaleType == ScaleType.Orthographic) { - float size = viewCamera.OrthographicSize + data.ScrollWheel; - size = Mathf.Clamp(size, 0.1f, 4); - viewCamera.OrthographicSize = Mathf.Lerp(viewCamera.OrthographicSize, size, Time.deltaTime * 20); - } - } -} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUDesignPointInsert.cs b/Assets/ModuleControl/ViewInputUnit/VIUDesignPointInsert.cs deleted file mode 100644 index 432fff1..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUDesignPointInsert.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class VIUDesignPointInsert : ModuleViewInputUnit { - private readonly ModuleViewCamera viewCamera; - private ModulePlateDesign PlateDesign => ModuleCore.I.PlateDesign; - public VIUDesignPointInsert(ModuleViewCamera viewCamera) { - this.viewCamera = viewCamera; - } - public override void DownMouse(DataMouseInput data) { - PlateDesign.InsertDesignPoint(data.ScreenPosition); - } -} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUDesignPointInsert.cs.meta b/Assets/ModuleControl/ViewInputUnit/VIUDesignPointInsert.cs.meta deleted file mode 100644 index 8079b18..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUDesignPointInsert.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8b8b6a3b0a7e1e649bdcd0615dfa80ed -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleControl/ViewInputUnit/VIUDesignPointMobile.cs b/Assets/ModuleControl/ViewInputUnit/VIUDesignPointMobile.cs deleted file mode 100644 index 5f1f467..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUDesignPointMobile.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class VIUDesignPointMobile : ModuleViewInputUnit { - private Vector3 mousePosition; - private Vector3 originalPosition; - private readonly ModuleViewCamera viewCamera; - private ModulePlateDesign PlateDesign => ModuleCore.I.PlateDesign; - public VIUDesignPointMobile(ModuleViewCamera viewCamera) { - this.viewCamera = viewCamera; - } - public override void DownMouse(DataMouseInput data) { - PlateDesign.SelectDesignPoint(data.ScreenPosition); - if (!PlateDesign.IsValidDesignPoint) { return; } - mousePosition = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - originalPosition = PlateDesign.DesignPointPosition; - } - public override void DragMouse(DataMouseInput data) { - if (!PlateDesign.IsValidDesignPoint) { return; } - Vector3 current = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - Vector3 offset = current - mousePosition; - PlateDesign.ChangeDesignPoint(originalPosition + offset); - } - public override void ReleaseMouse(DataMouseInput data) { - PlateDesign.ReleaseDesignPoint(); - } - public override void ScrollWheel(DataMouseInput data) { - PlateDesign.ReleaseDesignPoint(); - } -} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUDesignPointMobile.cs.meta b/Assets/ModuleControl/ViewInputUnit/VIUDesignPointMobile.cs.meta deleted file mode 100644 index d0e49fc..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUDesignPointMobile.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: eb31bfbd0ef82f24b823836852bd846c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleControl/ViewInputUnit/VIUEdgePointAdd.cs b/Assets/ModuleControl/ViewInputUnit/VIUEdgePointAdd.cs deleted file mode 100644 index 5f76fd7..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUEdgePointAdd.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class VIUEdgePointAdd : ModuleViewInputUnit { - private readonly ModuleViewCamera viewCamera; - private ModulePlateDesign PlateDesign => ModuleCore.I.PlateDesign; - public VIUEdgePointAdd(ModuleViewCamera viewCamera) { - this.viewCamera = viewCamera; - } - public override void DownMouse(DataMouseInput data) { - PlateDesign.InsertEdgePoint(data.ScreenPosition); - } - public override void MoveMouse(DataMouseInput data) { - //Vector3 position = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - //Vector3 worldPosition = position + viewCamera.CameraWorldPosition; - //worldPosition.z = 0; - //Collider2D[] colliders = Physics2D.OverlapCircleAll(worldPosition, range, DefaultLayerMask); - //if (colliders.Length == 0) { return; } - //edgePoint = colliders[0].GetComponentInParent(); - } -} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUEdgePointAdd.cs.meta b/Assets/ModuleControl/ViewInputUnit/VIUEdgePointAdd.cs.meta deleted file mode 100644 index b9e3745..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUEdgePointAdd.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0c0e8f369912dbb4e9d906ca3d14a628 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleControl/ViewInputUnit/VIUEdgePointMobile.cs b/Assets/ModuleControl/ViewInputUnit/VIUEdgePointMobile.cs deleted file mode 100644 index 057251d..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUEdgePointMobile.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class VIUEdgePointMobile : ModuleViewInputUnit { - private Vector3 mousePosition; - private Vector3 originalPosition; - private readonly ModuleViewCamera viewCamera; - private ModulePlateDesign PlateDesign => ModuleCore.I.PlateDesign; - public VIUEdgePointMobile(ModuleViewCamera viewCamera) { - this.viewCamera = viewCamera; - } - public override void DownMouse(DataMouseInput data) { - PlateDesign.SelectEdgePoint(data.ScreenPosition); - if (!PlateDesign.IsValidEdgePoint) { return; } - mousePosition = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - originalPosition = PlateDesign.EdgePointPosition; - } - public override void DragMouse(DataMouseInput data) { - if (!PlateDesign.IsValidEdgePoint) { return; } - Vector3 current = viewCamera.ScreenToWorldPosition(data.ScreenPosition); - Vector3 offset = current - mousePosition; - PlateDesign.ChangeEdgePoint(originalPosition + offset); - } - public override void ReleaseMouse(DataMouseInput data) { - PlateDesign.ReleaseEdgePoint(); - } - public override void ScrollWheel(DataMouseInput data) { - PlateDesign.ReleaseEdgePoint(); - } -} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUEdgePointMobile.cs.meta b/Assets/ModuleControl/ViewInputUnit/VIUEdgePointMobile.cs.meta deleted file mode 100644 index 9155460..0000000 --- a/Assets/ModuleControl/ViewInputUnit/VIUEdgePointMobile.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ae2a8f6a151f160479bd605f2c407a8d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleControl/ViewInputUnit/ViewInputUnit.cs b/Assets/ModuleControl/ViewInputUnit/ViewInputUnit.cs deleted file mode 100644 index 0e2a5b3..0000000 --- a/Assets/ModuleControl/ViewInputUnit/ViewInputUnit.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public abstract class ModuleViewInputUnit { - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; - /// 按下鼠标左键 - public virtual void DownMouse(DataMouseInput data) { } - /// 拖拽鼠标左键 - public virtual void DragMouse(DataMouseInput data) { } - /// 释放鼠标左键 - public virtual void ReleaseMouse(DataMouseInput data) { } - /// 移动鼠标 - public virtual void MoveMouse(DataMouseInput data) { } - /// 鼠标滚轮 - public virtual void ScrollWheel(DataMouseInput data) { } -} diff --git a/Assets/ModuleControl/ViewInputUnit/ViewInputUnit.cs.meta b/Assets/ModuleControl/ViewInputUnit/ViewInputUnit.cs.meta deleted file mode 100644 index 249b0c1..0000000 --- a/Assets/ModuleControl/ViewInputUnit/ViewInputUnit.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 15cfd3c63263fc14fbb47c12c18447ff -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleCore/ModuleAlgorithm.cs b/Assets/ModuleCore/ModuleAlgorithm.cs index e3732b7..694eebf 100644 --- a/Assets/ModuleCore/ModuleAlgorithm.cs +++ b/Assets/ModuleCore/ModuleAlgorithm.cs @@ -2,9 +2,24 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -public abstract class ModuleAlgorithm { +/// +/// 算法模块 +/// +/// +public abstract class ModuleAlgorithm : MonoBehaviour { + /// 必须要初始化 + protected abstract void Awake(); /// 核心模块 protected virtual ModuleCore ModuleCore => ModuleCore.I; + /// 执行算法 public abstract void Compute(Data data); } +/// +/// 单个算法函数 +/// +/// +public abstract class ModuleAlgorithmFunction { + /// 执行算法 + public abstract void Compute(Data data); +} \ No newline at end of file diff --git a/Assets/ModuleCore/ModuleAssets.cs b/Assets/ModuleCore/ModuleAssets.cs index 1a8a709..26cdc2f 100644 --- a/Assets/ModuleCore/ModuleAssets.cs +++ b/Assets/ModuleCore/ModuleAssets.cs @@ -3,14 +3,27 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +/// +/// 资源模块 +/// +/// 绑定的资源类型 public abstract class ModuleAssets : MonoBehaviour { - [SerializeField] protected List assets; - /// 资产列表 - public virtual List Assets => assets; /// 必须要初始化 protected abstract void Awake(); /// 核心模块 protected virtual ModuleCore ModuleCore => ModuleCore.I; + + /// 数据计数 + public abstract int Count { get; } + /// 数据列表 + public abstract List Datas { get; } + + /// 添加数据 + public abstract void Add(Data data); + /// 删除数据 + public abstract void Remove(Data data); + /// 查询数据 + public abstract Data Find(int index); /// 循环列表 public abstract void ForEach(Action action); } diff --git a/Assets/ModuleCore/ModuleBuilder.cs b/Assets/ModuleCore/ModuleBuilder.cs new file mode 100644 index 0000000..c30b7bb --- /dev/null +++ b/Assets/ModuleCore/ModuleBuilder.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 构造器 +/// 根据原型构造数据 +/// +/// +/// +public abstract class ModuleBuilder : MonoBehaviour { + /// 必须要初始化 + protected abstract void Awake(); + /// 核心模块 + protected virtual ModuleCore ModuleCore => ModuleCore.I; + + /// 根据原型构造数据 + public abstract Data To(Origin origin); +} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUCameraRotate.cs.meta b/Assets/ModuleCore/ModuleBuilder.cs.meta similarity index 83% rename from Assets/ModuleControl/ViewInputUnit/VIUCameraRotate.cs.meta rename to Assets/ModuleCore/ModuleBuilder.cs.meta index d486031..8c7437e 100644 --- a/Assets/ModuleControl/ViewInputUnit/VIUCameraRotate.cs.meta +++ b/Assets/ModuleCore/ModuleBuilder.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 535c46cee34ae5e49802e537ad5a7a13 +guid: 37fd3673cacd6294f8a1de0ddc48768a MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ModuleCore/ModuleCore.cs b/Assets/ModuleCore/ModuleCore.cs index 8eed6df..ae974c2 100644 --- a/Assets/ModuleCore/ModuleCore.cs +++ b/Assets/ModuleCore/ModuleCore.cs @@ -4,11 +4,16 @@ using System.Collections.Generic; using UnityEngine; using MuHua; +/// +/// 核心模块,实现业务逻辑 +/// public class ModuleCore : Module { #region 资产模块 - /// 预设模板资产 - public ModuleAssets PresetsPlateAssets; + /// 板片资产 + public ModuleAssets AssetsPlate; + /// 预设板片资产 + public ModuleAssets AssetsPlatePresets; #endregion #region 页面模块 @@ -20,27 +25,57 @@ public class ModuleCore : Module { public ModuleUIWindow PresetsPlateWindow; #endregion - #region 功能模块 - /// 代理模块 - public ModuleAgent ModuleAgent; - /// 根据设计点生成边缘算法模块 - public ModuleAlgorithm GenerateEdge = new AlgorithmGenerateEdge(); - /// 边缘排序算法模块 - public ModuleAlgorithm EdgeSort = new AlgorithmEdge(); - /// 多边形算法模块 - public ModuleAlgorithm Polygon = new AlgorithmPolygon(); - /// 板片设计模块 - public ModulePlateDesign PlateDesign; - /// 板片设计相机视图 - public ModuleViewCamera PlateDesignViewCamera; + #region 视图模块 + /// 设计视图相机模块 + public ModuleViewCamera ViewCameraDesign; /// 板片烘焙相机视图 - public ModuleViewCamera PlateBakingViewCamera; + public ModuleViewCamera ViewCameraBaking; #endregion - #region 控制模块 - /// 板片设计输入模块 - public ModuleViewInput PlateDesignViewInput; - /// 板片烘焙输入模块 - public ModuleViewInput PlateBakingViewInput; + #region 广播模块 + /// 广播板片数据模块 + public ModuleSending SendingPlate; + /// 广播板片数据点模块 + public ModuleSending SendingPoint; + /// 广播查询数据模块 + public ModuleSending SendingFindPoint; + #endregion + + #region 输入模块 + /// 设计UI输入模块 + public ModuleUIInput UIInputDesign; + #endregion + + #region 转换模块 + /// 预设板片转换板片 + public ModuleBuilder PlatePresetsToPlate; + /// 插入点数据转换板片上的点 + public ModuleBuilder InsertPointToPoint; + #endregion + + #region 可视模块 + /// 板片可视化内容生成模块 + public ModuleVisual VisualPlate; + /// 点可视化内容生成模块 + public ModuleVisual VisualPoint; + /// 多边形可视化内容生成模块 + public ModuleVisual VisualPolygon; + #endregion + + #region 算法模块 + + /// 查询点算法模块 + public ModuleAlgorithm AlgorithmFindPoint; + /// 查询贝塞尔点算法模块 + public ModuleAlgorithm AlgorithmFindBezier; + + /// 插入点算法模块 + public ModuleAlgorithm AlgorithmInsertPoint; + + /// 多边形算法模块 + public ModuleAlgorithm AlgorithmPolygon; + ///// 边缘排序算法模块 + //public ModuleAlgorithm EdgeSort = new AlgorithmEdge(); + #endregion } diff --git a/Assets/ModuleControl.meta b/Assets/ModuleCore/ModuleInput.meta similarity index 77% rename from Assets/ModuleControl.meta rename to Assets/ModuleCore/ModuleInput.meta index fcd831e..9ad8d3e 100644 --- a/Assets/ModuleControl.meta +++ b/Assets/ModuleCore/ModuleInput.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9e350a719b66eb849983fdce5dcb2025 +guid: 25f8d980388c4434381edd852a47ff9a folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleCore/ModuleInput/ModuleInput.cs b/Assets/ModuleCore/ModuleInput/ModuleInput.cs new file mode 100644 index 0000000..962ae83 --- /dev/null +++ b/Assets/ModuleCore/ModuleInput/ModuleInput.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ModuleInput : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUCameraScale.cs.meta b/Assets/ModuleCore/ModuleInput/ModuleInput.cs.meta similarity index 83% rename from Assets/ModuleControl/ViewInputUnit/VIUCameraScale.cs.meta rename to Assets/ModuleCore/ModuleInput/ModuleInput.cs.meta index 41dba13..5ae40de 100644 --- a/Assets/ModuleControl/ViewInputUnit/VIUCameraScale.cs.meta +++ b/Assets/ModuleCore/ModuleInput/ModuleInput.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e00fcc9528ea97040bcdee04b0279778 +guid: 890a3e1c641efcb418cc76bfb893d22e MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ModuleCore/ModuleInput/ModuleUIInput.cs b/Assets/ModuleCore/ModuleInput/ModuleUIInput.cs new file mode 100644 index 0000000..559d824 --- /dev/null +++ b/Assets/ModuleCore/ModuleInput/ModuleUIInput.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; + +/// +/// UI输入模块 +/// +/// +public abstract class ModuleUIInput : MonoBehaviour { + /// 必须要初始化 + protected abstract void Awake(); + /// 核心模块 + protected virtual ModuleCore ModuleCore => ModuleCore.I; + + /// 当前输入单元 + public abstract T Current { get; } + /// 改变输入单元时触发 + public abstract event Action OnChangeInput; + /// 改变输入单元 + public abstract void ChangeInput(T input); + + /// 绑定UI + public abstract void Binding(VisualElement element); +} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUCameraMobile.cs.meta b/Assets/ModuleCore/ModuleInput/ModuleUIInput.cs.meta similarity index 83% rename from Assets/ModuleControl/ViewInputUnit/VIUCameraMobile.cs.meta rename to Assets/ModuleCore/ModuleInput/ModuleUIInput.cs.meta index b271585..3fd17c8 100644 --- a/Assets/ModuleControl/ViewInputUnit/VIUCameraMobile.cs.meta +++ b/Assets/ModuleCore/ModuleInput/ModuleUIInput.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0ba32fb2f11bf1948bdaae8823a824b2 +guid: 41107ff888d44274e9593642528ccdd6 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ModuleCore/ModulePlateDesign.cs b/Assets/ModuleCore/ModulePlateDesign.cs deleted file mode 100644 index fb01ef4..0000000 --- a/Assets/ModuleCore/ModulePlateDesign.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public abstract class ModulePlateDesign : MonoBehaviour { - /// 必须初始化 - protected virtual void Awake() { - ModuleCore.PlateDesign = this; - } - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; - /// 视图相机模块 - protected virtual ModuleViewCamera ViewCamera => ModuleCore.PlateDesignViewCamera; - - /// 添加一个板片数据 - public abstract void AddData(DataPlate data); - - #region 边缘点操作 - /// 是否有效的边缘点 - public abstract bool IsValidEdgePoint { get; } - /// 返回当前边缘点位置 - public abstract Vector3 EdgePointPosition { get; } - /// 选中一个边缘点 - public abstract void SelectEdgePoint(Vector3 screenPosition); - /// 改变边缘点位置 - public abstract void ChangeEdgePoint(Vector3 localPosition); - /// 插入一个边缘点 - public abstract void InsertEdgePoint(Vector3 screenPosition); - /// 释放边缘点 - public abstract void ReleaseEdgePoint(); - #endregion - - #region 设计点操作 - /// 是否有效的设计点 - public abstract bool IsValidDesignPoint { get; } - /// 返回当前设计点位置 - public abstract Vector3 DesignPointPosition { get; } - /// 选中一个设计点 - public abstract void SelectDesignPoint(Vector3 screenPosition); - /// 改变设计点位置 - public abstract void ChangeDesignPoint(Vector3 localPosition); - /// 插入一个设计点 - public abstract void InsertDesignPoint(Vector3 screenPosition); - /// 释放设计点 - public abstract void ReleaseDesignPoint(); - #endregion - - #region 贝塞尔曲线操作 - /// 是否有效的贝塞尔点 - public abstract bool IsValidBezierPoint { get; } - /// 返回当前贝塞尔点位置 - public abstract Vector3 BezierPointPosition { get; } - /// 选中一个贝塞尔点 - public abstract void SelectBezierPoint(Vector3 screenPosition); - /// 改变贝塞尔点位置 - public abstract void ChangeBezierPoint(Vector3 localPosition); - /// 释放贝塞尔点 - public abstract void ReleaseBezierPoint(); - #endregion - -} diff --git a/Assets/ModuleCore/ModulePlateDesign.cs.meta b/Assets/ModuleCore/ModulePlateDesign.cs.meta deleted file mode 100644 index ed9c240..0000000 --- a/Assets/ModuleCore/ModulePlateDesign.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c5b9eb7c85f467e42a3632003cc5c1c7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleCore/ModuleSending.cs b/Assets/ModuleCore/ModuleSending.cs new file mode 100644 index 0000000..abcc607 --- /dev/null +++ b/Assets/ModuleCore/ModuleSending.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 发送模块 广播数据 +/// +public abstract class ModuleSending : MonoBehaviour { + /// 必须要初始化 + protected abstract void Awake(); + /// 核心模块 + protected virtual ModuleCore ModuleCore => ModuleCore.I; + + /// 当前输入单元 + public abstract T Current { get; } + /// 改变输入单元时触发 + public abstract event Action OnChange; + /// 改变输入单元 + public abstract void Change(T obj); +} diff --git a/Assets/ModuleControl/ViewInputUnit/VIUBezierMobile.cs.meta b/Assets/ModuleCore/ModuleSending.cs.meta similarity index 83% rename from Assets/ModuleControl/ViewInputUnit/VIUBezierMobile.cs.meta rename to Assets/ModuleCore/ModuleSending.cs.meta index 7879d56..75e50f5 100644 --- a/Assets/ModuleControl/ViewInputUnit/VIUBezierMobile.cs.meta +++ b/Assets/ModuleCore/ModuleSending.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a819c02b79cf50242803b88efbb134c1 +guid: eaecf945c01ab084aaa6cdb6ebcd7e0f MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ModuleControl/ViewInputUnit.meta b/Assets/ModuleCore/ModuleUI.meta similarity index 77% rename from Assets/ModuleControl/ViewInputUnit.meta rename to Assets/ModuleCore/ModuleUI.meta index 50353fc..b24516c 100644 --- a/Assets/ModuleControl/ViewInputUnit.meta +++ b/Assets/ModuleCore/ModuleUI.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f5ae9284505c4b940b508a7f812159eb +guid: 8d093e4c9062c4044bcb09ee5f5abb8b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs b/Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs new file mode 100644 index 0000000..4989928 --- /dev/null +++ b/Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; + +public abstract class ModuleUIPanel : MonoBehaviour { + /// 绑定的页面 + public ModuleUIPage ModuleUIPage; + /// 必须初始化 + public abstract void Awake(); + /// 核心模块 + protected virtual ModuleCore ModuleCore => ModuleCore.I; + + public abstract VisualElement Element { get; } +} diff --git a/Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs.meta b/Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs.meta new file mode 100644 index 0000000..5fe0b6f --- /dev/null +++ b/Assets/ModuleCore/ModuleUI/ModuleUIPanel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4ba0921b8d30f548ba33b96c76f2c48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/ModuleUIPage.cs b/Assets/ModuleCore/ModuleUIPage.cs index f3bd5ad..d62a652 100644 --- a/Assets/ModuleCore/ModuleUIPage.cs +++ b/Assets/ModuleCore/ModuleUIPage.cs @@ -3,6 +3,9 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; +/// +/// UI页面 +/// public abstract class ModuleUIPage : MonoBehaviour { public UIDocument document; /// 根目录文档 diff --git a/Assets/ModuleCore/ModuleUIWindow.cs b/Assets/ModuleCore/ModuleUIWindow.cs index ed9fd62..ec10b54 100644 --- a/Assets/ModuleCore/ModuleUIWindow.cs +++ b/Assets/ModuleCore/ModuleUIWindow.cs @@ -2,6 +2,10 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +/// +/// UI窗口 +/// +/// 窗口需要的数据类型 public abstract class ModuleUIWindow : MonoBehaviour { /// 绑定的页面 public ModuleUIPage ModuleUIPage; diff --git a/Assets/ModuleCore/ModuleViewCamera.cs b/Assets/ModuleCore/ModuleViewCamera.cs index f672428..c9393d3 100644 --- a/Assets/ModuleCore/ModuleViewCamera.cs +++ b/Assets/ModuleCore/ModuleViewCamera.cs @@ -2,32 +2,36 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +/// +/// 视图相机,把内容渲染到渲染纹理上 +/// public abstract class ModuleViewCamera : MonoBehaviour { - /// 视图空间位置 - public abstract Vector3 Position { get; set; } - /// 视图空间旋转 - public abstract Vector3 EulerAngles { get; set; } - /// 视图空间缩放 - public abstract Vector3 LocalScale { get; set; } - /// 相机正交大小 - public abstract float OrthographicSize { get; set; } - /// 当前视图空间的中心点 - public abstract Vector3 CurrentViewSpaceCenter { get; } - /// 相机的世界位置 - public abstract Vector3 CameraWorldPosition { get; } + /// 必须要初始化 + protected abstract void Awake(); + /// 核心模块 + protected virtual ModuleCore ModuleCore => ModuleCore.I; + + /// 视图位置 + public abstract Vector3 position { get; set; } + /// 视图旋转 + public abstract Vector3 eulerAngles { get; set; } + /// 视图缩放 + public abstract float scale { get; set; } /// 渲染纹理 public abstract RenderTexture RenderTexture { get; } - protected abstract void Awake(); - - protected virtual ModuleCore ModuleCore => ModuleCore.I; - /// 更新渲染纹理 public abstract void UpdateRenderTexture(int x, int y); + /// 屏幕坐标转换视图坐标(0-1) + public abstract Vector3 ScreenToViewPosition(Vector3 screenPosition); /// 屏幕坐标转换世界坐标 - public abstract Vector2 ScreenToWorldPosition(Vector2 screenPosition); - /// 屏幕坐标转换世界坐标 (0-1) - public abstract Vector2 ScreenToViewPosition(Vector2 screenPosition); - /// 从屏幕坐标发射一条射线 - public abstract Ray ScreenPointToRay(Vector2 screenPosition); + public abstract Vector3 ScreenToWorldPosition(Vector3 screenPosition); + /// 视图坐标(0-1)转换屏幕坐标 + public abstract Vector3 ViewToScreenPosition(Vector3 screenPosition); + /// 视图坐标(0-1)转换世界坐标 + public abstract Vector3 ViewToWorldPosition(Vector3 screenPosition); + /// 世界坐标转换屏幕坐标 + public abstract Vector3 WorldToScreenPosition(Vector3 screenPosition); + /// 世界坐标转换视图坐标(0-1) + public abstract Vector3 WorldToViewPosition(Vector3 screenPosition); } diff --git a/Assets/ModuleCore/ModuleViewInput.cs b/Assets/ModuleCore/ModuleViewInput.cs deleted file mode 100644 index 5d24c63..0000000 --- a/Assets/ModuleCore/ModuleViewInput.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public abstract class ModuleViewInput : MonoBehaviour { - /// 主键输入模块类型 - public abstract event Action OnInputType; - /// 必须要初始化 - protected abstract void Awake(); - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; - - public abstract void SetPrimaryKeyInput(T inputUnit) where T : ModuleViewInputUnit; - - /// 按下鼠标左键 - public abstract void DownLeftMouse(DataMouseInput data); - /// 拖拽鼠标左键 - public abstract void DragLeftMouse(DataMouseInput data); - /// 移动鼠标左键 - public abstract void MoveLeftMouse(DataMouseInput data); - /// 释放鼠标左键 - public abstract void ReleaseLeftMouse(DataMouseInput data); - - /// 按下鼠标右键 - public abstract void DownRightMouse(DataMouseInput data); - /// 拖拽鼠标右键 - public abstract void DragRightMouse(DataMouseInput data); - /// 移动鼠标右键 - public abstract void MoveRightMouse(DataMouseInput data); - /// 释放鼠标右键 - public abstract void ReleaseRightMouse(DataMouseInput data); - - /// 按下鼠标中键 - public abstract void DownMiddleMouse(DataMouseInput data); - /// 拖拽鼠标中键 - public abstract void DragMiddleMouse(DataMouseInput data); - /// 移动鼠标中键 - public abstract void MoveMiddleMouse(DataMouseInput data); - /// 释放鼠标中键 - public abstract void ReleaseMiddleMouse(DataMouseInput data); - - /// 鼠标滚轮 - public abstract void ScrollWheel(DataMouseInput data); -} \ No newline at end of file diff --git a/Assets/ModuleCore/ModuleViewInput.cs.meta b/Assets/ModuleCore/ModuleViewInput.cs.meta deleted file mode 100644 index 7dd80c3..0000000 --- a/Assets/ModuleCore/ModuleViewInput.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f56f94c154ec7d84eb464a1509810d78 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleCore/ModuleVisual.cs b/Assets/ModuleCore/ModuleVisual.cs new file mode 100644 index 0000000..e81b273 --- /dev/null +++ b/Assets/ModuleCore/ModuleVisual.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 生成可视化内容模块 +/// +public abstract class ModuleVisual : MonoBehaviour { + /// 必须要初始化 + protected abstract void Awake(); + /// 核心模块 + protected virtual ModuleCore ModuleCore => ModuleCore.I; + + /// 更新可视化 + public abstract void UpdateVisual(Data data); +} diff --git a/Assets/ModuleCore/ModuleVisual.cs.meta b/Assets/ModuleCore/ModuleVisual.cs.meta new file mode 100644 index 0000000..3a94ad9 --- /dev/null +++ b/Assets/ModuleCore/ModuleVisual.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 32a3e92bdd9f12a4dbaeadda30a66075 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleData/DataDesignPoint/DataDesignPoint.cs b/Assets/ModuleData/DataDesignPoint/DataDesignPoint.cs deleted file mode 100644 index 13bf1ed..0000000 --- a/Assets/ModuleData/DataDesignPoint/DataDesignPoint.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class DataDesignPoint { - public readonly DataPlate dataPlate; - public DataDesignPoint(DataPlate dataPlate) { this.dataPlate = dataPlate; } - - public int index; - public Vector2 postiton; - public Vector2 leftBezier;//贝塞尔曲线左(逆时针+) - public Vector2 rightBezier;//贝塞尔曲线右(顺时针-) - public List edgePoints = new List(); -} diff --git a/Assets/ModuleData/DataDesignPoint/DataDesignPoint.cs.meta b/Assets/ModuleData/DataDesignPoint/DataDesignPoint.cs.meta deleted file mode 100644 index e347f22..0000000 --- a/Assets/ModuleData/DataDesignPoint/DataDesignPoint.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 215036ac2145e9f45835ea28080aee53 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleData/DataDesignPoint/PrefabBezierPoint.cs b/Assets/ModuleData/DataDesignPoint/PrefabBezierPoint.cs deleted file mode 100644 index 776d37c..0000000 --- a/Assets/ModuleData/DataDesignPoint/PrefabBezierPoint.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class PrefabBezierPoint : MonoBehaviour { - public LineRenderer bezierLine; - private Vector2 position; - private DataDesignPoint value; - private Action callback; - public DataPlate DataPlate => value.dataPlate; - public Vector2 Position => position + value.postiton; - public void SetValue(DataDesignPoint value, Action callback) { - this.value = value; - this.callback = callback; - } - public void SetPosition(Vector2 position) { - this.position = position; - float lx = position.x * 50; - float ly = position.y * 50; - transform.localPosition = new Vector3(lx, ly, transform.localPosition.z); - bezierLine.SetPosition(1, position); - } - public void Change(Vector2 localPosition) { - Vector2 position = localPosition - value.postiton; - SetPosition(position); - callback?.Invoke(position); - } -} diff --git a/Assets/ModuleData/DataDesignPoint/PrefabBezierPoint.cs.meta b/Assets/ModuleData/DataDesignPoint/PrefabBezierPoint.cs.meta deleted file mode 100644 index 2b230ad..0000000 --- a/Assets/ModuleData/DataDesignPoint/PrefabBezierPoint.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1a3d9fd1b34a70c4ca6a4edaf6715131 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleData/DataDesignPoint/PrefabDesignPoint.cs b/Assets/ModuleData/DataDesignPoint/PrefabDesignPoint.cs deleted file mode 100644 index 97e7fac..0000000 --- a/Assets/ModuleData/DataDesignPoint/PrefabDesignPoint.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using MuHua; - -public class PrefabDesignPoint : MonoBehaviour, ITemplate { - public LineRenderer lineRenderer; - public EdgeCollider2D edgeCollider; - - public PrefabBezierPoint bezierPoint1; - public PrefabBezierPoint bezierPoint2; - - private DataDesignPoint value; - public int Index => value.index; - public Vector2 Position => value.postiton; - public List EdgePoints => value.edgePoints; - public DataPlate DataPlate => value.dataPlate; - public int MaxIndex => DataPlate.designPoints.Count; - public int NextIndex => DataPlateTool.NormalIndex(Index + 1, MaxIndex); - public void SetValue(DataDesignPoint value) { - this.value = value; - bezierPoint1.SetValue(value, (obj) => { value.leftBezier = obj; }); - bezierPoint2.SetValue(value, (obj) => { value.rightBezier = obj; }); - DataPlate.OnChangeDesignPoint += DataPlate_OnChangeDesignPoint; - DataPlate_OnChangeDesignPoint(Index); - } - private void OnDestroy() { - DataPlate.OnChangeDesignPoint -= DataPlate_OnChangeDesignPoint; - } - private void DataPlate_OnChangeDesignPoint(int index) { - if (index != Index) { return; } - transform.localPosition = Position; - //添加全部点 - int maxIndex = EdgePoints.Count + 1; - lineRenderer.positionCount = maxIndex; - Vector2[] vectors = new Vector2[maxIndex]; - for (int i = 0; i < EdgePoints.Count; i++) { - Vector2 position = EdgePoints[i] - Position; - lineRenderer.SetPosition(i, position); - vectors[i] = position; - } - //添加最后一个点 - int last = maxIndex - 1; - DataDesignPoint nextDesignPoint = DataPlate.FindDesignPoint(NextIndex); - Vector2 position2 = nextDesignPoint.postiton - Position; - lineRenderer.SetPosition(last, position2); - vectors[last] = position2; - //更新2D线段碰撞器 - edgeCollider.points = vectors; - //更新贝塞尔曲线 - bezierPoint1.SetPosition(value.leftBezier); - bezierPoint2.SetPosition(value.rightBezier); - } -} diff --git a/Assets/ModuleData/DataDesignPoint/PrefabDesignPoint.cs.meta b/Assets/ModuleData/DataDesignPoint/PrefabDesignPoint.cs.meta deleted file mode 100644 index 0e9bbfc..0000000 --- a/Assets/ModuleData/DataDesignPoint/PrefabDesignPoint.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 76c13895912b8cd48a099779cbd0af65 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleData/DataDesignPoint.meta b/Assets/ModuleData/DataFind.meta similarity index 77% rename from Assets/ModuleData/DataDesignPoint.meta rename to Assets/ModuleData/DataFind.meta index 560d014..39d3b75 100644 --- a/Assets/ModuleData/DataDesignPoint.meta +++ b/Assets/ModuleData/DataFind.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9ce7a65aa37a4934ba8d85a6136d8c32 +guid: 152682a505646cc41a3bb70493adf97d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleData/DataFind/DataFindBezier.cs b/Assets/ModuleData/DataFind/DataFindBezier.cs new file mode 100644 index 0000000..61943d0 --- /dev/null +++ b/Assets/ModuleData/DataFind/DataFindBezier.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataFindBezier { + + /// 有效的点 + public bool IsValid => plate != null && point != null; + + #region 输入 + /// 位置 (需要和点同一个坐标系) + public Vector3 position; + /// 板片数据 + public List datas; + #endregion + + #region 输出 + /// 是前点(-) + public bool isFront; + /// 查询到的板片 + public DataPlate plate; + /// 查询到的点 + public DataPoint point; + #endregion +} diff --git a/Assets/ModuleData/DataFind/DataFindBezier.cs.meta b/Assets/ModuleData/DataFind/DataFindBezier.cs.meta new file mode 100644 index 0000000..17bca0f --- /dev/null +++ b/Assets/ModuleData/DataFind/DataFindBezier.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 538ffda5b096d9d4cb1916697828a300 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleData/DataFind/DataFindPoint.cs b/Assets/ModuleData/DataFind/DataFindPoint.cs new file mode 100644 index 0000000..5910bcc --- /dev/null +++ b/Assets/ModuleData/DataFind/DataFindPoint.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataFindPoint { + + /// 有效的板片 + public bool IsValidPlate => plate != null; + /// 有效的点 + public bool IsValidPoint => point != null; + + #region 输入 + /// 位置 (需要和点同一个坐标系) + public Vector3 position; + /// 板片数据 + public List datas; + #endregion + + #region 输出 + /// 查询到的板片 + public DataPlate plate; + /// 查询到的点 + public DataPoint point; + #endregion +} diff --git a/Assets/ModuleData/DataFind/DataFindPoint.cs.meta b/Assets/ModuleData/DataFind/DataFindPoint.cs.meta new file mode 100644 index 0000000..f766160 --- /dev/null +++ b/Assets/ModuleData/DataFind/DataFindPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7f89410b01930c418b1df0a10a9f4cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleData/DataInsertPoint.cs b/Assets/ModuleData/DataInsertPoint.cs new file mode 100644 index 0000000..8d7735a --- /dev/null +++ b/Assets/ModuleData/DataInsertPoint.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataInsertPoint { + + /// 有效的 + public bool IsValid => plate != null && aPoint != null && bPoint != null; + + #region 输入 + /// 位置 (需要和点同一个坐标系) + public Vector3 position; + /// 板片数据 + public List datas; + #endregion + + #region 输出 + /// 执行操作的板片 + public DataPlate plate; + /// A点 + public DataPoint aPoint; + /// B点 + public DataPoint bPoint; + #endregion + +} diff --git a/Assets/ModuleData/DataInsertPoint.cs.meta b/Assets/ModuleData/DataInsertPoint.cs.meta new file mode 100644 index 0000000..c1f179c --- /dev/null +++ b/Assets/ModuleData/DataInsertPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25155dff8d9629a46a71219ab08dd82a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleData/DataPlate/DataPlate.cs b/Assets/ModuleData/DataPlate/DataPlate.cs index 0e165a8..c987a25 100644 --- a/Assets/ModuleData/DataPlate/DataPlate.cs +++ b/Assets/ModuleData/DataPlate/DataPlate.cs @@ -4,25 +4,30 @@ using System.Collections.Generic; using UnityEngine; public class DataPlate { - public Action OnChange; - public Action OnChangeDesignPoint; - public Action OnChangeEdgePoint; + #region 核心数据 /// 边缘平滑度 public float edgeSmooth = 0.01f; + /// 板片位置(本地坐标系) + public Vector3 position; /// 设计点 - public List designPoints = new List(); + public List points = new List(); + #endregion - /// 模型中心点偏移 - public Vector3 centerOffset; + #region 次要数据 + /// 平面网格 + public Mesh polygon; /// 边缘点 - public List edgePoints = new List(); + public List edgePoints = new List(); + #endregion + + #region 可视化数据 + /// 可视化对象 + public Transform transform; + /// 可视化多边形网格 + public MeshFilter polygonMeshFilter; + /// 可视化边缘线 + public LineRenderer edgeLineRenderer; + #endregion - //平面网格数据 - /// 顶点 - public List vertices = new List(); - /// UV - public List uv = new List(); - /// 三角形 - public List triangles = new List(); } \ No newline at end of file diff --git a/Assets/ModuleData/DataPlate/DataPoint.cs b/Assets/ModuleData/DataPlate/DataPoint.cs new file mode 100644 index 0000000..154813c --- /dev/null +++ b/Assets/ModuleData/DataPlate/DataPoint.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataPoint { + /// 绑定的板片 + public readonly DataPlate plate; + /// 初始化 + public DataPoint(DataPlate plate) => this.plate = plate; + + #region 核心数据 + /// 点前(-) 是否是曲线 + public bool isCurveFront; + /// 点后(+) 是否是曲线 + public bool isCurveAfter; + /// 设计点位置(本地坐标系) + public Vector3 position; + /// 贝塞尔曲线前(-) + public Vector3 frontBezier; + /// 贝塞尔曲线后(+) + public Vector3 afterBezier; + #endregion + + #region 可视化数据 + /// 可视化对象 + public Transform transform; + /// 可视化贝塞尔点前(-) + public Transform frontBezierTransform; + /// 可视化贝塞尔点后(+) + public Transform afterBezierTransform; + /// 可视化贝塞尔线前(-) + public LineRenderer frontBezierLineRenderer; + /// 可视化贝塞尔线后(+) + public LineRenderer afterBezierLineRenderer; + #endregion +} diff --git a/Assets/ModuleData/DataPlate/DataPoint.cs.meta b/Assets/ModuleData/DataPlate/DataPoint.cs.meta new file mode 100644 index 0000000..e74963c --- /dev/null +++ b/Assets/ModuleData/DataPlate/DataPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 753c1b80d6d80af4baaa095760bdc3f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleData/DataPlate/DataTriangle.cs b/Assets/ModuleData/DataPlate/DataTriangle.cs new file mode 100644 index 0000000..7d14dc3 --- /dev/null +++ b/Assets/ModuleData/DataPlate/DataTriangle.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataTriangle { + public Vector3 a; + public Vector3 b; + public Vector3 c; + public override string ToString() { + return $"{a} , {b} , {c}"; + } +} diff --git a/Assets/ModuleData/DataPlate/DataTriangle.cs.meta b/Assets/ModuleData/DataPlate/DataTriangle.cs.meta new file mode 100644 index 0000000..7bb3f0d --- /dev/null +++ b/Assets/ModuleData/DataPlate/DataTriangle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0119f0f1ae644424b8ed9bd212d86ec1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleData/DataPlate/PrefabPlate.cs b/Assets/ModuleData/DataPlate/PrefabPlate.cs deleted file mode 100644 index 789bc50..0000000 --- a/Assets/ModuleData/DataPlate/PrefabPlate.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using MuHua; - -public class PrefabPlate : MonoBehaviour, ITemplate { - public Transform DesignPointParent; - public Transform DesignPointTemplate; - public Transform PlateEdgeParent; - public Transform PlateEdgeTemplate; - - private DataPlate value; - private Vector3 localPosition; - - public MeshFilter MeshFilter => GetComponent(); - public MeshCollider MeshCollider => GetComponent(); - public ModuleViewCamera viewCamera => ModuleCore.I.PlateDesignViewCamera; - public void SetValue(DataPlate value) { - this.value = value; - localPosition = viewCamera.CurrentViewSpaceCenter; - value.OnChange += DataPlate_OnChange; - value.Compute(); - } - private void OnDestroy() { - value.OnChange -= DataPlate_OnChange; - } - public void DataPlate_OnChange() { - CreateDesignPoint(); - //CreatePrefabEdgePoint(); - CreatePolygonMesh(); - //重置坐标 - transform.localPosition = localPosition + value.centerOffset; - localPosition = transform.localPosition; - } - /// 生成设计点 - private void CreateDesignPoint() { - DesignPointParent.Instantiate(DesignPointTemplate, value.designPoints); - } - /// 生成边缘点 - private void CreatePrefabEdgePoint() { - PlateEdgeParent.DestroySon(PlateEdgeTemplate); - for (int i = 0; i < value.edgePoints.Count; i++) { - Transform temp = Instantiate(PlateEdgeTemplate, PlateEdgeParent); - temp.gameObject.SetActive(true); - PrefabPlateEdge plateEdge = temp.GetComponent(); - plateEdge.SetValue(i, value); - } - } - /// 生成网格 - private void CreatePolygonMesh() { - Mesh mesh = new Mesh(); - mesh.vertices = value.vertices.ToArray(); - mesh.uv = value.uv.ToArray(); - mesh.triangles = value.triangles.ToArray(); - mesh.RecalculateBounds(); - mesh.RecalculateNormals(); - mesh.RecalculateTangents(); - MeshFilter.mesh = mesh; - MeshCollider.sharedMesh = mesh; - } -} diff --git a/Assets/ModuleData/DataPlate/PrefabPlate.cs.meta b/Assets/ModuleData/DataPlate/PrefabPlate.cs.meta deleted file mode 100644 index 5f88010..0000000 --- a/Assets/ModuleData/DataPlate/PrefabPlate.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: efaf2ad171011c7448092aa48eaf41c4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleData/DataPlate/PrefabPlateEdge.cs b/Assets/ModuleData/DataPlate/PrefabPlateEdge.cs deleted file mode 100644 index 7b96e98..0000000 --- a/Assets/ModuleData/DataPlate/PrefabPlateEdge.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using MuHua; - -public class PrefabPlateEdge : MonoBehaviour { - public LineRenderer lineRenderer; - public EdgeCollider2D edgeCollider; - - [HideInInspector] public int index; - [HideInInspector] public DataPlate value; - - public int MaxIndex => value.edgePoints.Count; - public int NextIndex => DataPlateTool.NormalIndex(index + 1, MaxIndex); - public Vector3 CurrentPosition => value.FindEdgePoint(index); - public Vector3 NextPosition => value.FindEdgePoint(NextIndex); - public void SetValue(int index, DataPlate value) { - this.index = index; - this.value = value; - value.OnChangeEdgePoint += UpdateLineRenderer; - UpdateLineRenderer(index); - } - private void OnDestroy() { - value.OnChangeEdgePoint -= UpdateLineRenderer; - } - public void UpdateLineRenderer(int index) { - if (index != this.index && index != NextIndex) { return; } - transform.localPosition = CurrentPosition; - - Vector3 direction = NextPosition - CurrentPosition; - lineRenderer.SetPosition(1, direction); - edgeCollider.points = new Vector2[] { Vector2.zero, direction }; - } -} diff --git a/Assets/ModuleData/DataPlate/PrefabPlateEdge.cs.meta b/Assets/ModuleData/DataPlate/PrefabPlateEdge.cs.meta deleted file mode 100644 index 8cd7787..0000000 --- a/Assets/ModuleData/DataPlate/PrefabPlateEdge.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6e74baea99ddf044c8a16b4d0eacf8ca -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleData/DataPlatePresets.cs b/Assets/ModuleData/DataPlatePresets.cs new file mode 100644 index 0000000..ed553b0 --- /dev/null +++ b/Assets/ModuleData/DataPlatePresets.cs @@ -0,0 +1,8 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(fileName = "PresetsPlate", menuName = "数据模块/预设模板")] +public class DataPlatePresets : ScriptableObject { + public List designPoints; +} diff --git a/Assets/ModuleData/DataPlatePresets.cs.meta b/Assets/ModuleData/DataPlatePresets.cs.meta new file mode 100644 index 0000000..64fcd26 --- /dev/null +++ b/Assets/ModuleData/DataPlatePresets.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4c187df8599632449d401e9840a5bf9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleData/DataPolygon.cs b/Assets/ModuleData/DataPolygon.cs new file mode 100644 index 0000000..0470453 --- /dev/null +++ b/Assets/ModuleData/DataPolygon.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataPolygon { + private readonly DataPlate dataPlate; + public DataPolygon(DataPlate dataPlate) => this.dataPlate = dataPlate; + + /// 边缘平滑度 + public float edgeSmooth => dataPlate.edgeSmooth; + /// 设计点 + public List points => dataPlate.points; + /// 边缘点 + public List edgePoints { + get => dataPlate.edgePoints; + set => dataPlate.edgePoints = value; + } + /// 平面网格 + public Mesh polygon { + get => dataPlate.polygon; + set => dataPlate.polygon = value; + } + + #region 参数 + + #endregion + + #region 缓存 + /// 三角形 + public List triangles = new List(); + #endregion + +} diff --git a/Assets/ModuleData/DataPolygon.cs.meta b/Assets/ModuleData/DataPolygon.cs.meta new file mode 100644 index 0000000..1f54e21 --- /dev/null +++ b/Assets/ModuleData/DataPolygon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3de8098a0297b56429874d2696f59d43 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleData/DataPresetsPlate.cs b/Assets/ModuleData/DataPresetsPlate.cs deleted file mode 100644 index 6b81fa8..0000000 --- a/Assets/ModuleData/DataPresetsPlate.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -[CreateAssetMenu(fileName = "PresetsPlate", menuName = "数据模块/预设模板")] -public class DataPresetsPlate : ScriptableObject { - public List designPoints; - public DataPlate ToPlate() { - DataPlate data = new DataPlate(); - data.designPoints = new List(); - int maxIndex = designPoints.Count; - for (int i = 0; i < designPoints.Count; i++) { - Vector2 position = designPoints[i]; - int left = DataPlateTool.NormalIndex(i + 1, maxIndex); - int right = DataPlateTool.NormalIndex(i - 1, maxIndex); - Vector2 leftBezier = (designPoints[left] - position) * 0.5f; - Vector2 rightBezier = (designPoints[right] - position) * 0.5f; - DataDesignPoint designPoint = CreateDataDesignPoint(i, position, data); - designPoint.leftBezier = leftBezier; - designPoint.rightBezier = rightBezier; - data.designPoints.Add(designPoint); - } - return data; - } - private DataDesignPoint CreateDataDesignPoint(int index, Vector2 position, DataPlate data) { - DataDesignPoint designPoint = new DataDesignPoint(data); - designPoint.index = index; - designPoint.postiton = position; - return designPoint; - } -} diff --git a/Assets/ModuleData/DataPresetsPlate.cs.meta b/Assets/ModuleData/DataPresetsPlate.cs.meta deleted file mode 100644 index 3abaa47..0000000 --- a/Assets/ModuleData/DataPresetsPlate.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: de9e8e0217c52a447a49c55f818131ef -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleData/DataUIMouseInput.cs b/Assets/ModuleData/DataUIMouseInput.cs new file mode 100644 index 0000000..c784f2e --- /dev/null +++ b/Assets/ModuleData/DataUIMouseInput.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataUIMouseInput { + public float ScrollWheel; + public Vector3 ViewPosition; + public Vector3 WorldPosition; + public Vector3 ScreenPosition; +} diff --git a/Assets/ModuleData/DataUIMouseInput.cs.meta b/Assets/ModuleData/DataUIMouseInput.cs.meta new file mode 100644 index 0000000..cb30583 --- /dev/null +++ b/Assets/ModuleData/DataUIMouseInput.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa77786584d959a418d65b0eb3066b4d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/Algorithm/AlgorithmEdge.cs b/Assets/ModuleFunction/Algorithm/AlgorithmEdge.cs deleted file mode 100644 index a888d3c..0000000 --- a/Assets/ModuleFunction/Algorithm/AlgorithmEdge.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -/// -/// 算法:中心角度排序法 -/// 依据:??? -/// -public class AlgorithmEdge : ModuleAlgorithm { - /// 算法:中心角度排序法 - public AlgorithmEdge() { } - - public class EdgeAngle { - public float angle; - public Vector3 position; - } - - public override void Compute(DataPlate data) { - List edgePoints = data.edgePoints; - //计算多边形中心点 - float x = edgePoints.Average((v3) => v3.x); - float y = edgePoints.Average((v3) => v3.y); - Vector2 center = new Vector2(x, y); - //计算所有点的夹角 - Vector3 direction = edgePoints[0] - center; - List angleList = new List(); - for (int i = 0; i < edgePoints.Count; i++) { - Vector3 normal = edgePoints[i] - center; - EdgeAngle edgeAngle = new EdgeAngle(); - edgeAngle.angle = Angle(direction, normal); - edgeAngle.position = normal; - angleList.Add(edgeAngle); - } - data.centerOffset = center; - //排序 - angleList.Sort((x, y) => x.angle.CompareTo(y.angle)); - //把排序好的边缘点重新添加 - data.edgePoints = new List(); - for (int i = 0; i < angleList.Count; i++) { - data.edgePoints.Add(angleList[i].position); - } - } - /// - /// 计算两点夹角 - /// - /// 0度点位置 - /// 目标点 - /// - private float Angle(Vector3 direction, Vector3 position) { - float angle = Vector2.SignedAngle(direction, position); - return angle; - } -} diff --git a/Assets/ModuleFunction/Algorithm/AlgorithmEdge.cs.meta b/Assets/ModuleFunction/Algorithm/AlgorithmEdge.cs.meta deleted file mode 100644 index 3a9d8d8..0000000 --- a/Assets/ModuleFunction/Algorithm/AlgorithmEdge.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d17cdf61cce7657489b657640646a786 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleFunction/Algorithm/AlgorithmGenerateEdge.cs b/Assets/ModuleFunction/Algorithm/AlgorithmGenerateEdge.cs deleted file mode 100644 index 4b7ddda..0000000 --- a/Assets/ModuleFunction/Algorithm/AlgorithmGenerateEdge.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -/// -/// 算法:根据设计点来生成边缘点 -/// 依据:??? -/// -public class AlgorithmGenerateEdge : ModuleAlgorithm { - /// 算法:根据设计点来生成边缘点 - public AlgorithmGenerateEdge() { } - - public override void Compute(DataPlate data) { - data.edgePoints = new List(); - int maxIndex = data.designPoints.Count; - for (int i = 0; i < maxIndex; i++) { - DataDesignPoint designPoint = data.FindDesignPoint(i); - DataDesignPoint nextDesignPoint = data.FindDesignPoint(i + 1); - CreateStraightLine(data, designPoint, nextDesignPoint); - } - } - public void CreateStraightLine(DataPlate data, DataDesignPoint designPoint, DataDesignPoint nextDesignPoint) { - designPoint.edgePoints = new List(); - //方向,距离 - Vector2 direction = (nextDesignPoint.postiton - designPoint.postiton).normalized; - float distance = Vector2.Distance(nextDesignPoint.postiton, designPoint.postiton); - //求余,得商数 - int a = (int)(distance * 1000); - int b = (int)(data.edgeSmooth * 1000); - int quotient = Math.DivRem(a, b, out int remainder); - //点位间距 - float segment = distance / quotient; - Vector3 ap = designPoint.postiton; - Vector3 bp = designPoint.leftBezier + designPoint.postiton; - Vector3 cp = nextDesignPoint.rightBezier + nextDesignPoint.postiton; - Vector3 dp = nextDesignPoint.postiton; - for (int i = 0; i < quotient; i++) { - float t = segment * i / distance; - Vector2 position = ComputeBezier(ap, bp, cp, dp, t); - designPoint.edgePoints.Add(position); - } - data.edgePoints.AddRange(designPoint.edgePoints); - } - /// - /// - /// - /// 起点 - /// 起点的贝塞尔点 - /// 终点的贝塞尔点 - /// 终点 - /// 进度 - /// - public Vector3 ComputeBezier(Vector3 a, Vector3 b, Vector3 c, Vector3 d, float t) { - Vector3 aa = a + (b - a) * t; - Vector3 bb = b + (c - b) * t; - Vector3 cc = c + (d - c) * t; - - Vector3 aaa = aa + (bb - aa) * t; - Vector3 bbb = bb + (cc - bb) * t; - return aaa + (bbb - aaa) * t; - } - -} diff --git a/Assets/ModuleFunction/Algorithm/AlgorithmGenerateEdge.cs.meta b/Assets/ModuleFunction/Algorithm/AlgorithmGenerateEdge.cs.meta deleted file mode 100644 index f872f70..0000000 --- a/Assets/ModuleFunction/Algorithm/AlgorithmGenerateEdge.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3d0c7458fc5119243b7db98671184058 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleFunction/Algorithm/AlgorithmPolygon.cs b/Assets/ModuleFunction/Algorithm/AlgorithmPolygon.cs deleted file mode 100644 index 2ece9da..0000000 --- a/Assets/ModuleFunction/Algorithm/AlgorithmPolygon.cs +++ /dev/null @@ -1,186 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -/// -/// 算法:耳切法 -/// 依据:简单多边形的双耳定理 -/// -public class AlgorithmPolygon : ModuleAlgorithm { - /// 算法:耳切法 - public AlgorithmPolygon() { } - - public enum AngleType { - /// 平角 = 180 - StraightAngle = 0, - /// 优角 >180 - ReflexAngle = 1, - /// 劣角 <180 - InferiorAngle = 2 - } - - public class PointNode { - public int index; - public Vector2 Position; - public Vector2 PreviousPosition; - public Vector2 NextPosition; - } - - public class Triangle { - public Vector2 a; - public Vector2 b; - public Vector2 c; - } - - public override void Compute(DataPlate data) { - List edgePoints = new List(data.edgePoints); - List polygons = new List(); - Vector2[] allArray = edgePoints.ToArray(); - bool isClockWise = IsClockWise(allArray); - //耳切法生成三角形 - ComputeEarTriangle(polygons, edgePoints, allArray, isClockWise); - MergeTriangles(data, polygons); - } - /// 循环计算耳点 - public void ComputeEarTriangle(List polygons, List edgePoints, Vector2[] allArray, bool isClockWise) { - List temp = ComputeEarTriangle(edgePoints, allArray, isClockWise); - if (temp.Count == 0) { return; } - polygons.AddRange(temp); - ComputeEarTriangle(polygons, edgePoints, allArray, isClockWise); - } - /// 计算一个耳点 - public List ComputeEarTriangle(List edgePoints, Vector2[] allArray, bool isClockWise) { - Vector2[] array = edgePoints.ToArray(); - List polygons = new List(); - for (int i = 0; i < array.Length; i++) { - PointNode pointNode = CreatePointNode(i, array); - AngleType angleType = GetAngleType(pointNode, isClockWise); - // 等于180,不可能为耳点 - if (angleType == AngleType.StraightAngle) { continue; } - // 大于180,不可能为耳点 - if (angleType == AngleType.ReflexAngle) { continue; } - // 包含其他点,不可能为耳点 - if (IsInsideTriangle(pointNode, allArray)) { continue; } - // 包含其他耳点,不可能成为耳点 - if (!IsInsideEarTriangle(pointNode, edgePoints)) { continue; } - edgePoints.Remove(pointNode.Position); - polygons.Add(CreateTriangle(pointNode)); - } - return polygons; - } - /// 创建节点 - public PointNode CreatePointNode(int index, Vector2[] array) { - int maxIndex = array.Length; - PointNode pointNode = new PointNode(); - pointNode.index = index; - pointNode.PreviousPosition = array[NormalIndex(index - 1, maxIndex)]; - pointNode.Position = array[NormalIndex(index + 0, maxIndex)]; - pointNode.NextPosition = array[NormalIndex(index + 1, maxIndex)]; - return pointNode; - } - /// 计算三角形内是否包含其他点 - public bool IsInsideTriangle(PointNode node, Vector2[] array) { - for (int i = 0; i < array.Length; i++) { - if (array[i] == node.Position) { continue; } - if (array[i] == node.PreviousPosition) { continue; } - if (array[i] == node.NextPosition) { continue; } - if (IsInsideTriangle(node, array[i])) { return true; } - } - return false; - } - /// 计算三角形内是否包含其他点 - public bool IsInsideEarTriangle(PointNode node, List edgePoints) { - if (!edgePoints.Contains(node.Position)) { return false; } - if (!edgePoints.Contains(node.PreviousPosition)) { return false; } - if (!edgePoints.Contains(node.NextPosition)) { return false; } - return true; - } - /// 从节点创建三角形 - public Triangle CreateTriangle(PointNode node) { - Triangle triangle = new Triangle(); - triangle.a = node.Position; - triangle.b = node.PreviousPosition; - triangle.c = node.NextPosition; - return triangle; - } - /// 合并三角形 - public void MergeTriangles(DataPlate data, List polygons) { - //创建数据容器 - List vertices = new List(); - List uv = new List(); - List triangles = new List(); - //三角形合并 - for (int i = 0; i < polygons.Count; i++) { - Vector3 a = polygons[i].a; - int aIndex = vertices.Count - 1; - if (!vertices.Contains(a)) { vertices.Add(a); aIndex = vertices.Count - 1; } - else { aIndex = vertices.IndexOf(a); } - - Vector3 b = polygons[i].b; - int bIndex = vertices.Count - 1; - if (!vertices.Contains(b)) { vertices.Add(b); bIndex = vertices.Count - 1; } - else { bIndex = vertices.IndexOf(b); } - - Vector3 c = polygons[i].c; - int cIndex = vertices.Count - 1; - if (!vertices.Contains(c)) { vertices.Add(c); cIndex = vertices.Count - 1; } - else { cIndex = vertices.IndexOf(c); } - - triangles.Add(aIndex); - triangles.Add(bIndex); - triangles.Add(cIndex); - } - //展开uv (顶点去掉z坐标就是未缩放的平面UV) - for (int i = 0; i < vertices.Count; i++) { uv.Add(vertices[i]); } - //附加数据 - data.vertices = vertices; - data.uv = uv; - data.triangles = triangles; - } - - /// 头尾循环标准化索引 - public static int NormalIndex(int index, int maxIndex) { - if (maxIndex == 0) { Debug.LogError("错误索引:maxIndex = 0"); return 0; } - if (index < 0) { return NormalIndex(index + maxIndex, maxIndex); } - if (index >= maxIndex) { return NormalIndex(index - maxIndex, maxIndex); } - return index; - } - /// 当前的点方向是否为顺时针 - public static bool IsClockWise(Vector2[] array) { - // 通过计算叉乘来确定方向 - float sum = 0f; - double count = array.Length; - Vector3 va, vb; - for (int i = 0; i < array.Length; i++) { - va = array[i]; - vb = (i == count - 1) ? array[0] : array[i + 1]; - sum += va.x * vb.y - va.y * vb.x; - } - return sum < 0; - } - /// 判断角的类型 - public static AngleType GetAngleType(PointNode node, bool isClockWise) { - // 角度是否小于180 - // oa & ob 之间的夹角,(右手法则) - // 逆时针顺序是相反的 - Vector2 o = node.Position; - Vector2 a = node.PreviousPosition; - Vector2 b = node.NextPosition; - float f = (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x); - bool flag = isClockWise ? f > 0 : f < 0; - if (f == 0) { return AngleType.StraightAngle; } - else if (flag) { return AngleType.InferiorAngle; } - else { return AngleType.ReflexAngle; } - } - /// p点是否在点和其左右两个点组成的三角形内,或ca,cb边上 - public static bool IsInsideTriangle(PointNode node, Vector2 p) { - // p点是否在abc三角形内 - Vector2 a = node.PreviousPosition; - Vector2 b = node.NextPosition; - Vector2 c = node.Position; - float c1 = (b.x - a.x) * (p.y - b.y) - (b.y - a.y) * (p.x - b.x); - float c2 = (c.x - b.x) * (p.y - c.y) - (c.y - b.y) * (p.x - c.x); - float c3 = (a.x - c.x) * (p.y - a.y) - (a.y - c.y) * (p.x - a.x); - return (c1 > 0f && c2 >= 0f && c3 >= 0f) || (c1 < 0f && c2 <= 0f && c3 <= 0f); - } -} \ No newline at end of file diff --git a/Assets/ModuleFunction/Assets/AssetsPresetsPlate.cs b/Assets/ModuleFunction/Assets/AssetsPresetsPlate.cs deleted file mode 100644 index 416f846..0000000 --- a/Assets/ModuleFunction/Assets/AssetsPresetsPlate.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class AssetsPresetsPlate : ModuleAssets { - protected override void Awake() { - ModuleCore.PresetsPlateAssets = this; - } - public override void ForEach(Action action) { - assets.ForEach(action); - } -} diff --git a/Assets/ModuleFunction/Assets/AssetsPresetsPlate.cs.meta b/Assets/ModuleFunction/Assets/AssetsPresetsPlate.cs.meta deleted file mode 100644 index 1196253..0000000 --- a/Assets/ModuleFunction/Assets/AssetsPresetsPlate.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8198c73995924524d985c3beb338f033 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleFunction/EnumeratorAgent.cs b/Assets/ModuleFunction/EnumeratorAgent.cs deleted file mode 100644 index 5dcb36d..0000000 --- a/Assets/ModuleFunction/EnumeratorAgent.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class EnumeratorAgent : ModuleAgent { - protected override void Awake() { - ModuleCore.ModuleAgent = this; - } -} diff --git a/Assets/ModuleFunction/EnumeratorAgent.cs.meta b/Assets/ModuleFunction/EnumeratorAgent.cs.meta deleted file mode 100644 index 321d8be..0000000 --- a/Assets/ModuleFunction/EnumeratorAgent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e79a947f40825b54a8b65cb2714fbe6e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ModuleFunction/Algorithm.meta b/Assets/ModuleFunction/ModuleAlgorithm.meta similarity index 77% rename from Assets/ModuleFunction/Algorithm.meta rename to Assets/ModuleFunction/ModuleAlgorithm.meta index 31f3e44..aed5e56 100644 --- a/Assets/ModuleFunction/Algorithm.meta +++ b/Assets/ModuleFunction/ModuleAlgorithm.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: eda56199f140e8e41bde06c79efd4b8e +guid: f6fbfbc1731723a4babd9d4ee59ded5b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier.meta new file mode 100644 index 0000000..c74c086 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 46d78284a685f31429f5bd981c1f86c1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier/AlgorithmFindBezier.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier/AlgorithmFindBezier.cs new file mode 100644 index 0000000..c45e46a --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier/AlgorithmFindBezier.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 查询贝塞尔点算法 +/// +public class AlgorithmFindBezier : ModuleAlgorithm { + public readonly float FindRange = 0.01f; + + protected override void Awake() => ModuleCore.AlgorithmFindBezier = this; + + public override void Compute(DataFindBezier findBezier) { + List datas = findBezier.datas; + for (int i = 0; i < datas.Count; i++) { + if (FindPlatePoint(datas[i], findBezier)) { return; } + } + } + /// 查询匹配的点 + private bool FindPlatePoint(DataPlate plate, DataFindBezier findBezier) { + List points = plate.points; + Vector3 position = findBezier.position - plate.position; + for (int i = 0; i < points.Count; i++) { + float f = Vector3.Distance(points[i].frontBezier, position); + if (f <= FindRange && points[i].isCurveFront) { + findBezier.isFront = true; + findBezier.plate = plate; + findBezier.point = points[i]; + return true; + } + float a = Vector3.Distance(points[i].afterBezier, position); + if (a <= FindRange && points[i].isCurveAfter) { + findBezier.plate = plate; + findBezier.point = points[i]; + return true; + } + } + return false; + } +} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier/AlgorithmFindBezier.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier/AlgorithmFindBezier.cs.meta new file mode 100644 index 0000000..8888c89 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindBezier/AlgorithmFindBezier.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ecc5cf619be47744b8ac06557518014 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint.meta new file mode 100644 index 0000000..a080fc7 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd2aff163a310544886809b5b8590bb2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint/AlgorithmFindPoint.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint/AlgorithmFindPoint.cs new file mode 100644 index 0000000..80ee971 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint/AlgorithmFindPoint.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 查询点算法 +/// 转角法判断点是否在多边形内 +/// +public class AlgorithmFindPoint : ModuleAlgorithm { + public readonly float FindRange = 0.01f; + + protected override void Awake() => ModuleCore.AlgorithmFindPoint = this; + + public override void Compute(DataFindPoint findPoint) { + List datas = findPoint.datas; + for (int i = 0; i < datas.Count; i++) { + if (FindPlatePoint(datas[i], findPoint)) { return; } + if (FindPlateInside(datas[i], findPoint)) { findPoint.plate = datas[i]; } + } + } + + /// 查询匹配的点 + private bool FindPlatePoint(DataPlate plate, DataFindPoint findPoint) { + List points = plate.points; + Vector3 position = findPoint.position - plate.position; + for (int i = 0; i < points.Count; i++) { + float distance = Vector3.Distance(points[i].position, position); + if (distance > FindRange) { continue; } + findPoint.plate = plate; + findPoint.point = points[i]; + return true; + } + return false; + } + /// 转角法查询位置是否在板片内 + private bool FindPlateInside(DataPlate plate, DataFindPoint findPoint) { + DataPoint[] points = plate.points.ToArray(); + double angles = 0; + Vector3 position = findPoint.position - plate.position; + for (int i = 0; i < points.Length; i++) { + Vector3 a = points.LoopIndex(i + 0).position - position; + Vector3 b = points.LoopIndex(i + 1).position - position; + float angle = Vector2.SignedAngle(a, b); + angles += angle; + } + int normal = (int)(angles * 1000); + return normal > 0; + } +} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint/AlgorithmFindPoint.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint/AlgorithmFindPoint.cs.meta new file mode 100644 index 0000000..12eb3e2 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmFindPoint/AlgorithmFindPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 159a37d73c0c32e4cbb41b0767597000 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint.meta new file mode 100644 index 0000000..304b030 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce9e6ecaa5ce98843abd7070cf9adb82 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint/AlgorithmInsertPoint.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint/AlgorithmInsertPoint.cs new file mode 100644 index 0000000..40ea1da --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint/AlgorithmInsertPoint.cs @@ -0,0 +1,74 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 插入点算法 +/// +public class AlgorithmInsertPoint : ModuleAlgorithm { + public class Segment { + public DataPlate plate; + public DataPoint aPoint; + public DataPoint bPoint; + public float distance = float.MaxValue; + } + + protected override void Awake() => ModuleCore.AlgorithmInsertPoint = this; + + public override void Compute(DataInsertPoint insertPoint) { + List datas = insertPoint.datas; + List segments = new List(); + Vector3 position = insertPoint.position; + + for (int i = 0; i < datas.Count; i++) { + if (!FindSegment(datas[i], position, out Segment temp)) { continue; } + segments.Add(temp); + } + + if (segments.Count <= 0) { return; } + Segment segment = segments[0]; + for (int i = 0; i < segments.Count; i++) { + if (segment.distance < segments[i].distance) { continue; } + segment = segments[i]; + } + insertPoint.plate = segment.plate; + insertPoint.aPoint = segment.aPoint; + insertPoint.bPoint = segment.bPoint; + } + /// 查询匹配的线 + private bool FindSegment(DataPlate plate, Vector3 position, out Segment segment) { + List points = plate.points; + Vector3 c = position - plate.position; + segment = new Segment(); + segment.plate = plate; + for (int i = 0; i < points.Count; i++) { + Vector3 a = points.LoopIndex(i + 0).position; + Vector3 b = points.LoopIndex(i + 1).position; + float distance = ProjectDistance(a, b, c); + if (segment.distance < distance) { continue; } + segment.aPoint = points.LoopIndex(i + 0); + segment.bPoint = points.LoopIndex(i + 1); + segment.distance = distance; + } + return segment.distance != float.MaxValue; + } + + /// + /// 向量投影法 + /// 计算点c到线段ab最近的点 + /// + /// + /// + /// + /// 如果不在线段上返回 float.MaxValue + private float ProjectDistance(Vector3 a, Vector3 b, Vector3 c) { + Vector3 ab = b - a; + Vector3 ac = c - a; + Vector3 p = Vector3.Project(ac, ab); + //Debug.Log($"{a} , {b} , {c} , {p} , {ab.normalized} , {p.normalized} , {ab.normalized != p.normalized} , {ab.magnitude < p.magnitude}"); + if (ab.normalized != p.normalized) { return float.MaxValue; } + if (ab.magnitude < p.magnitude) { return float.MaxValue; } + //Debug.Log($"{a} , {b} , {c} , {Vector3.Distance(c, p)}"); + return Vector3.Distance(c, p + a); + } +} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint/AlgorithmInsertPoint.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint/AlgorithmInsertPoint.cs.meta new file mode 100644 index 0000000..3482fa0 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmInsertPoint/AlgorithmInsertPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6693b5fb3f035aa42bf27141ab05b01d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon.meta new file mode 100644 index 0000000..8f75a5c --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c315b7d2a7530784ab66ef5cc7d4d8b1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFAuriculareCutting.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFAuriculareCutting.cs new file mode 100644 index 0000000..cbb2113 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFAuriculareCutting.cs @@ -0,0 +1,131 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 多边形耳切法 +/// +public class AFAuriculareCutting : ModuleAlgorithmFunction { + public class Auriculare { + public int index; + public Vector3 aPoint;//+0 + public Vector3 bPoint;//-1 + public Vector3 cPoint;//+1 + } + + /// 多边形耳切法 + public AFAuriculareCutting() { } + + public override void Compute(DataPolygon data) { + List edgePoints = new List(data.edgePoints); + List triangles = new List(); + Vector3[] allArray = edgePoints.ToArray(); + bool isClockWise = IsClockWise(allArray); + //耳切法生成三角形 + ComputeAuriculare(triangles, edgePoints, allArray, isClockWise); + data.triangles = triangles; + } + + #region 函数 + /// 循环计算有效的耳点 + public static void ComputeAuriculare(List triangles, List edgePoints, Vector3[] allArray, bool isClockWise) { + List temp = ComputeAuriculare(edgePoints, allArray, isClockWise); + if (temp.Count == 0) { return; } + triangles.AddRange(temp); + ComputeAuriculare(triangles, edgePoints, allArray, isClockWise); + } + /// 计算一个有效的耳点 + public static List ComputeAuriculare(List edgePoints, Vector3[] allArray, bool isClockWise) { + Vector3[] array = edgePoints.ToArray(); + List polygons = new List(); + for (int i = 0; i < array.Length; i++) { + Auriculare auriculare = CreateAuriculare(i, array); + // 等于180,大于180,不可能为耳点 + if (!GetAngleType(auriculare, isClockWise)) { continue; } + // 包含其他点,不可能为耳点 + if (IsInsideTriangle(auriculare, allArray)) { continue; } + // 包含其他耳点,不可能成为耳点 + if (!IsInsideAuriculare(auriculare, edgePoints)) { continue; } + edgePoints.Remove(auriculare.aPoint); + polygons.Add(CreateAuriculareToTriangle(auriculare)); + } + return polygons; + } + /// 创建点 + public static Auriculare CreateAuriculare(int index, Vector3[] array) { + Auriculare auriculare = new Auriculare(); + auriculare.index = index; + auriculare.bPoint = array.LoopIndex(index - 1); + auriculare.aPoint = array.LoopIndex(index); + auriculare.cPoint = array.LoopIndex(index + 1); + return auriculare; + } + /// 计算三角形内是否包含其他点 + public static bool IsInsideTriangle(Auriculare auriculare, Vector3[] array) { + for (int i = 0; i < array.Length; i++) { + if (array[i] == auriculare.aPoint) { continue; } + if (array[i] == auriculare.bPoint) { continue; } + if (array[i] == auriculare.cPoint) { continue; } + if (IsInsideTriangle(auriculare, array[i])) { return true; } + } + return false; + } + /// 计算三角形内是否包含其他点 + public static bool IsInsideAuriculare(Auriculare auriculare, List edgePoints) { + if (!edgePoints.Contains(auriculare.aPoint)) { return false; } + if (!edgePoints.Contains(auriculare.bPoint)) { return false; } + if (!edgePoints.Contains(auriculare.cPoint)) { return false; } + return true; + } + /// 从节点创建三角形 + public static DataTriangle CreateAuriculareToTriangle(Auriculare auriculare) { + DataTriangle triangle = new DataTriangle(); + triangle.a = auriculare.aPoint; + triangle.b = auriculare.bPoint; + triangle.c = auriculare.cPoint; + return triangle; + } + #endregion + + #region 算法 + /// 当前的点方向是否为顺时针 + public static bool IsClockWise(Vector3[] array) { + // 通过计算叉乘来确定方向 + float sum = 0f; + double count = array.Length; + Vector3 va, vb; + for (int i = 0; i < array.Length; i++) { + va = array[i]; + vb = (i == count - 1) ? array[0] : array[i + 1]; + sum += va.x * vb.y - va.y * vb.x; + } + return sum < 0; + } + /// 判断角的类型 + public static bool GetAngleType(Auriculare auriculare, bool isClockWise) { + // 角度是否小于180 + // oa & ob 之间的夹角,(右手法则) + // 逆时针顺序是相反的 + Vector2 a = auriculare.aPoint; + Vector2 b = auriculare.bPoint; + Vector2 c = auriculare.cPoint; + float f = (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x); + bool flag = isClockWise ? f > 0 : f < 0; + if (f == 0) { return false;/*平角*/ } + else if (flag) { return true;/*劣角*/ } + else { return false;/*优角*/ } + } + /// p点是否在点a,b,c组成的三角形内,或边上 + public static bool IsInsideTriangle(Auriculare auriculare, Vector2 p) { + // p点是否在abc三角形内 + Vector2 a = auriculare.aPoint; + Vector2 b = auriculare.bPoint; + Vector2 c = auriculare.cPoint; + float c1 = (b.x - a.x) * (p.y - b.y) - (b.y - a.y) * (p.x - b.x); + float c2 = (c.x - b.x) * (p.y - c.y) - (c.y - b.y) * (p.x - c.x); + float c3 = (a.x - c.x) * (p.y - a.y) - (a.y - c.y) * (p.x - a.x); + return (c1 > 0f && c2 >= 0f && c3 >= 0f) || (c1 < 0f && c2 <= 0f && c3 <= 0f); + } + #endregion + +} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFAuriculareCutting.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFAuriculareCutting.cs.meta new file mode 100644 index 0000000..3441084 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFAuriculareCutting.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9b83b680d622b5409fb9f74a1eaaebf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFEdgePoint.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFEdgePoint.cs new file mode 100644 index 0000000..e35373d --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFEdgePoint.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 三阶贝塞尔曲线计算边缘点 +/// +public class AFEdgePoint : ModuleAlgorithmFunction { + + /// 三阶贝塞尔曲线计算边缘点 + public AFEdgePoint() { } + + public override void Compute(DataPolygon data) { + List points = new List(data.points); + List edgePoints = new List(); + for (int i = 0; i < points.Count; i++) { + DataPoint current = points.LoopIndex(i); + DataPoint next = points.LoopIndex(i + 1); + edgePoints.AddRange(CreateLine(current, next, data.edgeSmooth)); + } + data.edgePoints = edgePoints; + } + + #region 函数 + public List CreateLine(DataPoint current, DataPoint next, float edgeSmooth) { + List edgePoints = new List(); + //方向,距离 + Vector2 direction = (next.position - current.position).normalized; + float distance = Vector2.Distance(next.position, current.position); + //求余,得商数 + int quotient = Quotient(distance, edgeSmooth); + //点位间距 + float segment = distance / quotient; + //贝塞尔曲线点 + Vector3 ap = current.position; + Vector3 bp = current.isCurveAfter ? current.afterBezier : current.position; + Vector3 cp = next.isCurveFront ? next.frontBezier : next.position; + Vector3 dp = next.position; + for (int i = 0; i < quotient; i++) { + float t = segment * i / distance; + Vector2 position = ComputeBezier(ap, bp, cp, dp, t); + edgePoints.Add(position); + } + return edgePoints; + } + #endregion + + #region 算法 + /// 商数 + public static int Quotient(float distance, float edgeSmooth) { + int a = (int)(distance * 1000); + int b = (int)(edgeSmooth * 1000); + return Math.DivRem(a, b, out int remainder); + } + /// + /// 三阶贝塞尔算法 + /// + /// 起点 + /// 起点的贝塞尔点 + /// 终点的贝塞尔点 + /// 终点 + /// 进度 + /// 当前进度的曲线点 + public static Vector3 ComputeBezier(Vector3 a, Vector3 b, Vector3 c, Vector3 d, float t) { + Vector3 aa = a + (b - a) * t; + Vector3 bb = b + (c - b) * t; + Vector3 cc = c + (d - c) * t; + + Vector3 aaa = aa + (bb - aa) * t; + Vector3 bbb = bb + (cc - bb) * t; + return aaa + (bbb - aaa) * t; + } + #endregion + +} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFEdgePoint.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFEdgePoint.cs.meta new file mode 100644 index 0000000..f562be0 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFEdgePoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e88d537872f0dba44ae4bda829b08c42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFMergeTriangles.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFMergeTriangles.cs new file mode 100644 index 0000000..07959c8 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFMergeTriangles.cs @@ -0,0 +1,95 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 合并三角形 +/// +public class AFMergeTriangles : ModuleAlgorithmFunction { + public override void Compute(DataPolygon data) { + List triangles = new List(data.triangles); + index = 0; + MergeTriangles(triangles); + data.triangles = triangles; + ModuleCore.I.VisualPolygon.UpdateVisual(data); + } + private int index; + private int maxIndex; + /// 取一个三角形出来 匹配剩下的三角形 符合条件则合并 + private void MergeTriangles(List triangles) { + if (index > triangles.Count) { return; } + + DataTriangle aT = triangles[0]; + triangles.Remove(aT); + + maxIndex = triangles.Count; + for (int i = 0; i < triangles.Count; i++) { + DataTriangle bT = triangles[i]; + //ab同边 + if (MergeConditions(bT.a, bT.b, bT, ref aT)) { triangles.Remove(bT); continue; } + //bc同边 + if (MergeConditions(bT.b, bT.c, bT, ref aT)) { triangles.Remove(bT); continue; } + //ca同边 + if (MergeConditions(bT.c, bT.a, bT, ref aT)) { triangles.Remove(bT); continue; } + } + index = maxIndex == triangles.Count ? index + 1 : 0; + Debug.Log($"{index} , {maxIndex} , {triangles.Count}"); + + triangles.Add(aT); + MergeTriangles(triangles); + } + /// 匹配三角形 符合条件则合并 无法合并则返回 true + private bool MergeTriangles(List triangles, DataTriangle aT) { + for (int i = 0; i < triangles.Count; i++) { + DataTriangle bT = triangles[i]; + //ab同边 + if (MergeConditions(bT.a, bT.b, bT, ref aT)) { triangles.Remove(bT); } + //bc同边 + if (MergeConditions(bT.b, bT.c, bT, ref aT)) { triangles.Remove(bT); } + //ca同边 + if (MergeConditions(bT.c, bT.a, bT, ref aT)) { triangles.Remove(bT); } + } + return true; + } + /// 计算三角形内是否包含其他点 + private bool IsInsideTriangle(DataTriangle triangle, Vector3 point) { + if (triangle.a == point) { return true; } + if (triangle.b == point) { return true; } + if (triangle.c == point) { return true; } + return false; + } + //检测合并条件是否满足 + private bool MergeConditions(Vector3 a, Vector3 b, DataTriangle bT, ref DataTriangle aT) { + if (!IsInsideTriangle(aT, a, b, out Vector3 o)) { return false; } + if (!IsInsideTriangle(bT, a, b, out Vector3 c)) { return false; } + if (IsInsideTriangle(aT, c)) { return true; } + Vector3 oa = (o - a).normalized; + Vector3 ob = (o - b).normalized; + Vector3 oc = (o - c).normalized; + if (oc == oa) { aT.a = o; aT.b = b; aT.c = c; return true; } + if (oc == ob) { aT.a = o; aT.b = a; aT.c = c; return true; } + return false; + } + /// 计算三角形内是否包含其他点 + private bool IsInsideTriangle(DataTriangle triangle, Vector3 a, Vector3 b, out Vector3 o) { + if (triangle.a == a && triangle.b == b) { o = triangle.c; return true; } + if (triangle.a == b && triangle.b == a) { o = triangle.c; return true; } + if (triangle.a == a && triangle.c == b) { o = triangle.b; return true; } + if (triangle.a == b && triangle.c == a) { o = triangle.b; return true; } + if (triangle.b == a && triangle.c == b) { o = triangle.a; return true; } + if (triangle.b == b && triangle.c == a) { o = triangle.a; return true; } + o = a; return false; + } + + /// p点是否在点a,b,c组成的三角形内,或边上 + public static bool IsInsideTriangle(DataTriangle auriculare, Vector2 p) { + // p点是否在abc三角形内 + Vector2 a = auriculare.a; + Vector2 b = auriculare.b; + Vector2 c = auriculare.c; + float c1 = (b.x - a.x) * (p.y - b.y) - (b.y - a.y) * (p.x - b.x); + float c2 = (c.x - b.x) * (p.y - c.y) - (c.y - b.y) * (p.x - c.x); + float c3 = (a.x - c.x) * (p.y - a.y) - (a.y - c.y) * (p.x - a.x); + return (c1 > 0f && c2 >= 0f && c3 >= 0f) || (c1 < 0f && c2 <= 0f && c3 <= 0f); + } +} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFMergeTriangles.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFMergeTriangles.cs.meta new file mode 100644 index 0000000..7b68621 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFMergeTriangles.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45d3c753563f5be468680173acf8b1e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFSubdivision.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFSubdivision.cs new file mode 100644 index 0000000..8bec181 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFSubdivision.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class AFSubdivision : ModuleAlgorithmFunction { + public override void Compute(DataPolygon data) { + List triangles = new List(data.triangles); + List subdivision = new List(); + for (int i = 0; i < triangles.Count; i++) { + subdivision.AddRange(Subdivision(triangles[i])); + } + //subdivision.AddRange(Subdivision(triangles[121], data.edgeSmooth)); + + data.triangles = subdivision; + } + private List Subdivision(DataTriangle triangle) { + float ab = Vector3.Distance(triangle.a, triangle.b); + float bc = Vector3.Distance(triangle.b, triangle.c); + float ca = Vector3.Distance(triangle.c, triangle.a); + if (ab > bc && ab > ca && ab > 0.02f) { return Subdivision(triangle.c, triangle.a, triangle.b); } + if (bc > ab && bc > ca && bc > 0.02f) { return Subdivision(triangle.a, triangle.b, triangle.c); } + if (ca > bc && ca > ab && ca > 0.02f) { return Subdivision(triangle.b, triangle.c, triangle.a); } + + return new List { triangle }; + } + private List Subdivision(Vector3 a, Vector3 b, Vector3 c) { + Vector3 direction = b - c; + Vector3 d = c + direction * 0.5f; + + DataTriangle aT = new DataTriangle { a = a, b = d, c = c }; + DataTriangle bT = new DataTriangle { a = a, b = b, c = d }; + return new List { aT, bT, }; + } +} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFSubdivision.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFSubdivision.cs.meta new file mode 100644 index 0000000..e92ccd5 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFSubdivision.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb4aa74668cf2134eb322b3a40d74c29 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFTriangleMesh.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFTriangleMesh.cs new file mode 100644 index 0000000..31f0b12 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFTriangleMesh.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 三角形转换网格 +/// +public class AFTriangleMesh : ModuleAlgorithmFunction { + public override void Compute(DataPolygon data) { + List polygons = new List(data.triangles); + //创建数据容器 + List vertices = new List(); + List uv = new List(); + List triangles = new List(); + //三角形合并 + for (int i = 0; i < polygons.Count; i++) { + triangles.Add(AddIndexOf(vertices, polygons[i].a)); + triangles.Add(AddIndexOf(vertices, polygons[i].b)); + triangles.Add(AddIndexOf(vertices, polygons[i].c)); + } + Debug.Log(vertices.Count); + //展开uv (顶点去掉z坐标就是未缩放的平面UV) + for (int i = 0; i < vertices.Count; i++) { uv.Add(vertices[i]); } + //附加数据 + data.polygon = new Mesh(); + data.polygon.vertices = vertices.ToArray(); + data.polygon.uv = uv.ToArray(); + data.polygon.triangles = triangles.ToArray(); + data.polygon.RecalculateBounds(); + data.polygon.RecalculateNormals(); + } + //顶点列表不包含则添加点,获得索引 + private int AddIndexOf(List vertices, Vector3 a) { + if (!vertices.Contains(a)) { vertices.Add(a); } + return vertices.IndexOf(a); + } +} diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFTriangleMesh.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFTriangleMesh.cs.meta new file mode 100644 index 0000000..5d1b789 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AFTriangleMesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e215bacbb6d0216408afb679ae863360 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AlgorithmPolygon.cs b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AlgorithmPolygon.cs new file mode 100644 index 0000000..3cadc8e --- /dev/null +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AlgorithmPolygon.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 散列点生成多边形算法 +/// +public class AlgorithmPolygon : ModuleAlgorithm { + private ModuleAlgorithmFunction EdgePoint = new AFEdgePoint(); + private ModuleAlgorithmFunction Cutting = new AFAuriculareCutting(); + private ModuleAlgorithmFunction Subdivision = new AFSubdivision(); + private ModuleAlgorithmFunction TriangleMesh = new AFTriangleMesh(); + + protected override void Awake() => ModuleCore.AlgorithmPolygon = this; + + public override void Compute(DataPlate data) { + DataPolygon polygon = new DataPolygon(data); + //计算边缘点 + EdgePoint.Compute(polygon); + //切割三角形 + Cutting.Compute(polygon); + //合并三角形 + Subdivision.Compute(polygon); + Subdivision.Compute(polygon); + Subdivision.Compute(polygon); + Subdivision.Compute(polygon); + Subdivision.Compute(polygon); + Subdivision.Compute(polygon); + Subdivision.Compute(polygon); + Subdivision.Compute(polygon); + Subdivision.Compute(polygon); + //三角形转换网格 + TriangleMesh.Compute(polygon); + } +} diff --git a/Assets/ModuleFunction/Algorithm/AlgorithmPolygon.cs.meta b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AlgorithmPolygon.cs.meta similarity index 83% rename from Assets/ModuleFunction/Algorithm/AlgorithmPolygon.cs.meta rename to Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AlgorithmPolygon.cs.meta index 1169029..49eb151 100644 --- a/Assets/ModuleFunction/Algorithm/AlgorithmPolygon.cs.meta +++ b/Assets/ModuleFunction/ModuleAlgorithm/AlgorithmPolygon/AlgorithmPolygon.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ad1a08fdeb67d3048a88c3668e3b6764 +guid: ef8ce839dfa79ff4d825f55925c48e7c MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ModuleFunction/ModuleAssets.meta b/Assets/ModuleFunction/ModuleAssets.meta new file mode 100644 index 0000000..7f3f4a0 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAssets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f504da41bfc887044b129dc255e092c2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAssets/AssetsPlate.cs b/Assets/ModuleFunction/ModuleAssets/AssetsPlate.cs new file mode 100644 index 0000000..da9a5ba --- /dev/null +++ b/Assets/ModuleFunction/ModuleAssets/AssetsPlate.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class AssetsPlate : ModuleAssets { + private List dataPlates = new List(); + + /// 视图相机模块 + private ModuleViewCamera ViewCameraDesign => ModuleCore.ViewCameraDesign; + + public override int Count => dataPlates.Count; + public override List Datas => dataPlates; + + protected override void Awake() => ModuleCore.AssetsPlate = this; + + public override void Add(DataPlate data) { + if (dataPlates.Contains(data)) { return; } + dataPlates.Add(data); + //初始化参数 + data.position = ViewCameraDesign.position; + //生成可视化内容 + data.UpdateVisual(); + } + public override void Remove(DataPlate data) { + if (!dataPlates.Contains(data)) { return; } + dataPlates.Remove(data); + } + public override DataPlate Find(int index) { + return dataPlates.LoopIndex(index); + } + public override void ForEach(Action action) { + dataPlates.ForEach(action); + } +} diff --git a/Assets/ModuleFunction/ModuleAssets/AssetsPlate.cs.meta b/Assets/ModuleFunction/ModuleAssets/AssetsPlate.cs.meta new file mode 100644 index 0000000..6888932 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAssets/AssetsPlate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1f4341af37c4904b8274f65dd58e837 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleAssets/AssetsPlatePresets.cs b/Assets/ModuleFunction/ModuleAssets/AssetsPlatePresets.cs new file mode 100644 index 0000000..604b36a --- /dev/null +++ b/Assets/ModuleFunction/ModuleAssets/AssetsPlatePresets.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class AssetsPlatePresets : ModuleAssets { + [SerializeField] private List assets; + + public override int Count => assets.Count; + public override List Datas => assets; + + protected override void Awake() => ModuleCore.AssetsPlatePresets = this; + + public override void Add(DataPlatePresets data) => assets.Add(data); + public override void Remove(DataPlatePresets data) => assets.Remove(data); + public override DataPlatePresets Find(int index) => assets.LoopIndex(index); + public override void ForEach(Action action) => assets.ForEach(action); +} diff --git a/Assets/ModuleFunction/ModuleAssets/AssetsPlatePresets.cs.meta b/Assets/ModuleFunction/ModuleAssets/AssetsPlatePresets.cs.meta new file mode 100644 index 0000000..d35a1f3 --- /dev/null +++ b/Assets/ModuleFunction/ModuleAssets/AssetsPlatePresets.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 321aee0b32d39984085ac96e402e9c0b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleBuilder.meta b/Assets/ModuleFunction/ModuleBuilder.meta new file mode 100644 index 0000000..10ebdcb --- /dev/null +++ b/Assets/ModuleFunction/ModuleBuilder.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3aff7fb266b16b642b5658e558c0c924 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleBuilder/BuilderInsertPointToPoint.cs b/Assets/ModuleFunction/ModuleBuilder/BuilderInsertPointToPoint.cs new file mode 100644 index 0000000..5c04b01 --- /dev/null +++ b/Assets/ModuleFunction/ModuleBuilder/BuilderInsertPointToPoint.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class BuilderInsertPointToPoint : ModuleBuilder { + + protected override void Awake() => ModuleCore.InsertPointToPoint = this; + + public override DataPoint To(DataInsertPoint insertPoint) { + Vector3 position = insertPoint.position - insertPoint.plate.position; + + DataPoint point = new DataPoint(insertPoint.plate); + point.frontBezier = DataPointTool.DefaultBezier(position, insertPoint.aPoint.position); + point.position = position; + point.afterBezier = DataPointTool.DefaultBezier(position, insertPoint.bPoint.position); + + int index = insertPoint.plate.points.IndexOf(insertPoint.aPoint); + insertPoint.plate.points.Insert(index + 1, point); + insertPoint.plate.UpdateVisual(); + + return point; + } +} diff --git a/Assets/ModuleFunction/ModuleBuilder/BuilderInsertPointToPoint.cs.meta b/Assets/ModuleFunction/ModuleBuilder/BuilderInsertPointToPoint.cs.meta new file mode 100644 index 0000000..e06afca --- /dev/null +++ b/Assets/ModuleFunction/ModuleBuilder/BuilderInsertPointToPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 992dfa55aae34c040a024d7743bb1a8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleBuilder/BuilderPlatePresetsToPlate.cs b/Assets/ModuleFunction/ModuleBuilder/BuilderPlatePresetsToPlate.cs new file mode 100644 index 0000000..2a605db --- /dev/null +++ b/Assets/ModuleFunction/ModuleBuilder/BuilderPlatePresetsToPlate.cs @@ -0,0 +1,42 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class BuilderPlatePresetsToPlate : ModuleBuilder { + + protected override void Awake() => ModuleCore.PlatePresetsToPlate = this; + + public override DataPlate To(DataPlatePresets origin) { + DataPlate dataPlate = new DataPlate(); + dataPlate.points = ToDataPoint(dataPlate, origin.designPoints); + return dataPlate; + } + + private List ToDataPoint(DataPlate dataPlate, List list) { + List points = new List(); + + int maxIndex = list.Count - 1; + + DataPoint start = new DataPoint(dataPlate); + start.frontBezier = list[0] + DataPointTool.DefaultBezier(list[0], list[maxIndex]); + start.position = list[0]; + start.afterBezier = list[0] + DataPointTool.DefaultBezier(list[0], list[1]); + points.Add(start); + + for (int i = 1; i < maxIndex; i++) { + DataPoint dataPoint = new DataPoint(dataPlate); + dataPoint.frontBezier = list[i] + DataPointTool.DefaultBezier(list[i], list[i - 1]); + dataPoint.position = list[i]; + dataPoint.afterBezier = list[i] + DataPointTool.DefaultBezier(list[i], list[i + 1]); + points.Add(dataPoint); + } + + DataPoint end = new DataPoint(dataPlate); + end.frontBezier = list[maxIndex] + DataPointTool.DefaultBezier(list[maxIndex], list[maxIndex - 1]); + end.position = list[maxIndex]; + end.afterBezier = list[maxIndex] + DataPointTool.DefaultBezier(list[maxIndex], list[0]); + points.Add(end); + + return points; + } +} diff --git a/Assets/ModuleFunction/ModuleBuilder/BuilderPlatePresetsToPlate.cs.meta b/Assets/ModuleFunction/ModuleBuilder/BuilderPlatePresetsToPlate.cs.meta new file mode 100644 index 0000000..4bf8450 --- /dev/null +++ b/Assets/ModuleFunction/ModuleBuilder/BuilderPlatePresetsToPlate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 476a9d6720db7284fae46d62e046095d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleInput.meta b/Assets/ModuleFunction/ModuleInput.meta new file mode 100644 index 0000000..5b467d4 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c91717fb961009a48af8b39c62eb5171 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign.meta b/Assets/ModuleFunction/ModuleInput/UIInputDesign.meta new file mode 100644 index 0000000..5d928e7 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6cbb5db737acfe4fae588472773f05f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignBezier.cs b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignBezier.cs new file mode 100644 index 0000000..fdee6f8 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignBezier.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class IDesignBezier : UIInputDesignUnit { + /// 板片资产 + public ModuleAssets AssetsPlate => ModuleCore.AssetsPlate; + /// 查询点算法模块 + public ModuleAlgorithm AlgorithmFindBezier => ModuleCore.AlgorithmFindBezier; + + private Vector3 mousePosition; + private Vector3 originalPosition; + private DataFindBezier findBezier; + private void FindPoint(Vector3 localPosition) { + findBezier = new DataFindBezier(); + findBezier.position = localPosition; + findBezier.datas = AssetsPlate.Datas; + AlgorithmFindBezier.Compute(findBezier); + } + + public override void MouseDown(DataUIMouseInput data) { + FindPoint(data.WorldPosition); + if (!findBezier.IsValid) { return; } + mousePosition = data.ScreenPosition; + originalPosition = findBezier.isFront ? findBezier.point.frontBezier : findBezier.point.afterBezier; + } + public override void MouseDrag(DataUIMouseInput data) { + if (!findBezier.IsValid) { return; } + Vector3 original = ViewCamera.ScreenToWorldPosition(mousePosition); + Vector3 current = data.WorldPosition; + Vector3 offset = current - original; + if (findBezier.isFront) { findBezier.point.frontBezier = originalPosition + offset; } + else { findBezier.point.afterBezier = originalPosition + offset; } + findBezier.plate.UpdateVisual(); + } +} diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignBezier.cs.meta b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignBezier.cs.meta new file mode 100644 index 0000000..c4f9fea --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignBezier.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4c272ae3cc78a54c819d6b6194a75a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignInsert.cs b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignInsert.cs new file mode 100644 index 0000000..3781054 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignInsert.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class IDesignInsert : UIInputDesignUnit { + /// 板片资产 + public ModuleAssets AssetsPlate => ModuleCore.AssetsPlate; + /// 插入点算法模块 + public ModuleAlgorithm AlgorithmInsertPoint => ModuleCore.AlgorithmInsertPoint; + /// 插入点数据转换板片上的点 + public ModuleBuilder InsertPointToPoint => ModuleCore.InsertPointToPoint; + + private DataInsertPoint insertPoint; + private void FindPoint(Vector3 localPosition) { + insertPoint = new DataInsertPoint(); + insertPoint.position = localPosition; + insertPoint.datas = AssetsPlate.Datas; + AlgorithmInsertPoint.Compute(insertPoint); + } + + public override void MouseDown(DataUIMouseInput data) { + FindPoint(data.WorldPosition); + if (!insertPoint.IsValid) { return; } + InsertPointToPoint.To(insertPoint); + } +} diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignInsert.cs.meta b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignInsert.cs.meta new file mode 100644 index 0000000..c2337a1 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignInsert.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6572c7ebab448a94d880fca85c728132 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignMobile.cs b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignMobile.cs new file mode 100644 index 0000000..ee96520 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignMobile.cs @@ -0,0 +1,65 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class IDesignMobile : UIInputDesignUnit { + /// 板片资产 + public ModuleAssets AssetsPlate => ModuleCore.AssetsPlate; + /// 查询点算法模块 + public ModuleAlgorithm AlgorithmFindPoint => ModuleCore.AlgorithmFindPoint; + /// 广播查询数据模块 + public ModuleSending SendingFindPoint => ModuleCore.SendingFindPoint; + + private Vector3 mousePosition; + private Vector3 originalPosition; + private DataFindPoint findPoint; + private void FindPoint(Vector3 localPosition) { + findPoint = new DataFindPoint(); + findPoint.position = localPosition; + findPoint.datas = AssetsPlate.Datas; + AlgorithmFindPoint.Compute(findPoint); + } + + public override void MouseDown(DataUIMouseInput data) { + FindPoint(data.WorldPosition); + SendingFindPoint.Change(findPoint); + if (findPoint.IsValidPoint) { RecordPoint(data.ScreenPosition); return; } + if (findPoint.IsValidPlate) { RecordPlate(data.ScreenPosition); return; } + RecordCamera(data.ScreenPosition); + } + public override void MouseDrag(DataUIMouseInput data) { + Vector3 original = ViewCamera.ScreenToWorldPosition(mousePosition); + Vector3 current = data.WorldPosition; + Vector3 offset = current - original; + + if (findPoint.IsValidPoint) { MobilePoint(offset); return; } + if (findPoint.IsValidPlate) { MobilePlate(offset); return; } + MobileCamera(offset); + } + + private void RecordPoint(Vector3 screenPosition) { + mousePosition = screenPosition; + originalPosition = findPoint.point.position; + } + private void MobilePoint(Vector3 offset) { + findPoint.point.position = originalPosition + offset; + findPoint.plate.UpdateVisual(); + } + + private void RecordPlate(Vector3 screenPosition) { + mousePosition = screenPosition; + originalPosition = findPoint.plate.position; + } + private void MobilePlate(Vector3 offset) { + findPoint.plate.position = originalPosition + offset; + findPoint.plate.UpdateVisual(); + } + + private void RecordCamera(Vector3 screenPosition) { + mousePosition = screenPosition; + originalPosition = ViewCamera.position; + } + private void MobileCamera(Vector3 offset) { + ViewCamera.position = originalPosition - offset; + } +} diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignMobile.cs.meta b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignMobile.cs.meta new file mode 100644 index 0000000..b78bf78 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignMobile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebe339780ad7e11478aefbb1a97b9b51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignScaleCamera.cs b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignScaleCamera.cs new file mode 100644 index 0000000..d108de1 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignScaleCamera.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class IDesignScaleCamera : UIInputDesignUnit { + public readonly float Min = 0.1f; + public readonly float Max = 4f; + public override void ScrollWheel(DataUIMouseInput data) { + float size = ViewCamera.scale + data.ScrollWheel; + size = Mathf.Clamp(size, Min, Max); + ViewCamera.scale = Mathf.Lerp(ViewCamera.scale, size, Time.deltaTime * 20); + } +} diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignScaleCamera.cs.meta b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignScaleCamera.cs.meta new file mode 100644 index 0000000..9fa9e7e --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignScaleCamera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d241a760e6fc5d45bc735f6f3fbf881 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignSelect.cs b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignSelect.cs new file mode 100644 index 0000000..ac75c03 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignSelect.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class IDesignSelect : UIInputDesignUnit { + /// 板片资产 + public ModuleAssets AssetsPlate => ModuleCore.AssetsPlate; + /// 查询点算法模块 + public ModuleAlgorithm AlgorithmFindPoint => ModuleCore.AlgorithmFindPoint; + /// 广播查询数据模块 + public ModuleSending SendingFindPoint => ModuleCore.SendingFindPoint; + + private DataFindPoint findPoint; + private void FindPoint(Vector3 localPosition) { + findPoint = new DataFindPoint(); + findPoint.position = localPosition; + findPoint.datas = AssetsPlate.Datas; + AlgorithmFindPoint.Compute(findPoint); + } + + public override void MouseDown(DataUIMouseInput data) { + FindPoint(data.WorldPosition); + SendingFindPoint.Change(findPoint); + } +} diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignSelect.cs.meta b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignSelect.cs.meta new file mode 100644 index 0000000..d567f3a --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/IDesignSelect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ae4eed99f97b5e40a3ab2ee36fbd7ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/UIInputDesign.cs b/Assets/ModuleFunction/ModuleInput/UIInputDesign/UIInputDesign.cs new file mode 100644 index 0000000..75f0ad7 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/UIInputDesign.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; + +/// +/// 设计输入模块 +/// +public class UIInputDesign : ModuleUIInput { + private bool isDownMouseLeft; + private bool isDownMouseRight; + private bool isDownMouseMiddle; + private UIInputDesignUnit leftInputUnit; + private UIInputDesignUnit rightInputUnit; + private UIInputDesignUnit middleInputUnit; + private UIInputDesignUnit scrollInputUnit; + + /// 设计视图相机模块 + protected ModuleViewCamera ViewCamera => ModuleCore.ViewCameraDesign; + + public override UIInputDesignUnit Current => leftInputUnit; + public override event Action OnChangeInput; + public override void ChangeInput(UIInputDesignUnit input) { + leftInputUnit = input; + OnChangeInput?.Invoke(input); + } + + protected override void Awake() { + ModuleCore.UIInputDesign = this; + rightInputUnit = new IDesignMobile(); + middleInputUnit = new IDesignScaleCamera(); + scrollInputUnit = new IDesignScaleCamera(); + } + + public override void Binding(VisualElement element) { + element.RegisterCallback(MouseDown); + element.RegisterCallback(MouseMove); + element.RegisterCallback(MouseRelease); + element.RegisterCallback(MouseRelease); + element.RegisterCallback(ScrollWheel); + } + + private void MouseDown(MouseDownEvent evt) { + DataUIMouseInput data = CreateData(evt.localMousePosition, 0); + if (evt.button == 0) { leftInputUnit.MouseDown(data); isDownMouseLeft = true; } + if (evt.button == 1) { rightInputUnit.MouseDown(data); isDownMouseRight = true; } + if (evt.button == 2) { middleInputUnit.MouseDown(data); isDownMouseMiddle = true; } + } + private void MouseMove(MouseMoveEvent evt) { + DataUIMouseInput data = CreateData(evt.localMousePosition, 0); + if (isDownMouseLeft) { leftInputUnit.MouseDrag(data); } + if (isDownMouseRight) { rightInputUnit.MouseDrag(data); } + if (isDownMouseMiddle) { middleInputUnit.MouseDrag(data); } + if (evt.button == 0) { leftInputUnit.MouseMove(data); } + if (evt.button == 1) { rightInputUnit.MouseMove(data); } + if (evt.button == 2) { middleInputUnit.MouseMove(data); } + } + private void MouseRelease(MouseUpEvent evt) { + DataUIMouseInput data = CreateData(evt.localMousePosition, 0); + leftInputUnit.MouseRelease(data); isDownMouseLeft = false; + rightInputUnit.MouseRelease(data); isDownMouseRight = false; + middleInputUnit.MouseRelease(data); isDownMouseMiddle = false; + } + private void MouseRelease(MouseOutEvent evt) { + DataUIMouseInput data = CreateData(evt.localMousePosition, 0); + leftInputUnit.MouseRelease(data); isDownMouseLeft = false; + rightInputUnit.MouseRelease(data); isDownMouseRight = false; + middleInputUnit.MouseRelease(data); isDownMouseMiddle = false; + } + private void ScrollWheel(WheelEvent evt) { + DataUIMouseInput data = CreateData(evt.localMousePosition, evt.delta.y); + scrollInputUnit.ScrollWheel(data); + } + + private DataUIMouseInput CreateData(Vector2 localMousePosition, float scrollWheel) { + DataUIMouseInput data = new DataUIMouseInput(); + data.ScrollWheel = scrollWheel; + data.ViewPosition = ViewCamera.ScreenToViewPosition(localMousePosition); + data.WorldPosition = ViewCamera.ScreenToWorldPosition(localMousePosition); + data.ScreenPosition = localMousePosition; + return data; + } +} +public abstract class UIInputDesignUnit { + /// 核心模块 + protected virtual ModuleCore ModuleCore => ModuleCore.I; + /// 设计视图相机模块 + protected ModuleViewCamera ViewCamera => ModuleCore.ViewCameraDesign; + + /// 按下鼠标 + public virtual void MouseDown(DataUIMouseInput data) { } + /// 拖拽鼠标 + public virtual void MouseDrag(DataUIMouseInput data) { } + /// 移动鼠标 + public virtual void MouseMove(DataUIMouseInput data) { } + /// 释放鼠标 + public virtual void MouseRelease(DataUIMouseInput data) { } + /// 鼠标滚轮 + public virtual void ScrollWheel(DataUIMouseInput data) { } +} \ No newline at end of file diff --git a/Assets/ModuleFunction/ModuleInput/UIInputDesign/UIInputDesign.cs.meta b/Assets/ModuleFunction/ModuleInput/UIInputDesign/UIInputDesign.cs.meta new file mode 100644 index 0000000..ee854d5 --- /dev/null +++ b/Assets/ModuleFunction/ModuleInput/UIInputDesign/UIInputDesign.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9cf538c2c848fc4ca95d1f860f11acc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleSending.meta b/Assets/ModuleFunction/ModuleSending.meta new file mode 100644 index 0000000..80ea55f --- /dev/null +++ b/Assets/ModuleFunction/ModuleSending.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f004983677b94854a81359ae3a4fc1db +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleSending/SendingFindPoint.cs b/Assets/ModuleFunction/ModuleSending/SendingFindPoint.cs new file mode 100644 index 0000000..450a6cb --- /dev/null +++ b/Assets/ModuleFunction/ModuleSending/SendingFindPoint.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SendingFindPoint : ModuleSending { + private DataFindPoint findPoint; + + public override DataFindPoint Current => findPoint; + public override event Action OnChange; + public override void Change(DataFindPoint findPoint) { + this.findPoint = findPoint; + OnChange?.Invoke(findPoint); + } + + protected override void Awake() => ModuleCore.SendingFindPoint = this; +} diff --git a/Assets/ModuleFunction/ModuleSending/SendingFindPoint.cs.meta b/Assets/ModuleFunction/ModuleSending/SendingFindPoint.cs.meta new file mode 100644 index 0000000..4b446b5 --- /dev/null +++ b/Assets/ModuleFunction/ModuleSending/SendingFindPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e4ee0e36af29af418b3610ad98cf21b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleSending/SendingPlate.cs b/Assets/ModuleFunction/ModuleSending/SendingPlate.cs new file mode 100644 index 0000000..8d5b036 --- /dev/null +++ b/Assets/ModuleFunction/ModuleSending/SendingPlate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SendingPlate : ModuleSending { + private DataPlate dataPlate; + + public override DataPlate Current => dataPlate; + public override event Action OnChange; + public override void Change(DataPlate dataPlate) { + this.dataPlate = dataPlate; + OnChange?.Invoke(dataPlate); + } + + protected override void Awake() => ModuleCore.SendingPlate = this; +} diff --git a/Assets/ModuleFunction/ModuleSending/SendingPlate.cs.meta b/Assets/ModuleFunction/ModuleSending/SendingPlate.cs.meta new file mode 100644 index 0000000..b908bd1 --- /dev/null +++ b/Assets/ModuleFunction/ModuleSending/SendingPlate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dcf91dd8e722ae845823651d7bc71333 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleSending/SendingPoint.cs b/Assets/ModuleFunction/ModuleSending/SendingPoint.cs new file mode 100644 index 0000000..c9ed56c --- /dev/null +++ b/Assets/ModuleFunction/ModuleSending/SendingPoint.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SendingPoint : ModuleSending { + private DataPoint dataPoint; + + public override DataPoint Current => dataPoint; + public override event Action OnChange; + public override void Change(DataPoint dataPoint) { + this.dataPoint = dataPoint; + OnChange?.Invoke(dataPoint); + } + + protected override void Awake() => ModuleCore.SendingPoint = this; +} diff --git a/Assets/ModuleFunction/ModuleSending/SendingPoint.cs.meta b/Assets/ModuleFunction/ModuleSending/SendingPoint.cs.meta new file mode 100644 index 0000000..f6965d3 --- /dev/null +++ b/Assets/ModuleFunction/ModuleSending/SendingPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ffb8e2a96363fce4aadc0da4ba2a1ed9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleUI.meta b/Assets/ModuleFunction/ModuleUI.meta new file mode 100644 index 0000000..70aa93f --- /dev/null +++ b/Assets/ModuleFunction/ModuleUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3063fa7c3cf9fc547b47b9b541920f5d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing.meta b/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing.meta new file mode 100644 index 0000000..fa0bfb2 --- /dev/null +++ b/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 739c91aa6278a1d42ac00a82ac36616c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelBaking.cs b/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelBaking.cs new file mode 100644 index 0000000..a7f0c8f --- /dev/null +++ b/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelBaking.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class UIPanelBaking : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelBaking.cs.meta b/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelBaking.cs.meta new file mode 100644 index 0000000..64a40a8 --- /dev/null +++ b/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelBaking.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a1ee2e53bd64f2449c39cdf466cf48f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelDesign.cs b/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelDesign.cs new file mode 100644 index 0000000..86604cf --- /dev/null +++ b/Assets/ModuleFunction/ModuleUI/UIPageGarmentSewing/UIPanelDesign.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; + +public class UIPanelDesign : ModuleUIPanel { + + #region UI元素 + public override VisualElement Element => ModuleUIPage.Q("PlateDesign"); + public VisualElement Rendering => Element.Q("Rendering"); + public Button Button1 => Element.Q