From 64e40057374224509a23ff36b66a49107cb67dfe Mon Sep 17 00:00:00 2001
From: pengjunwu <1263019465@qq.com>
Date: Thu, 7 Dec 2023 16:41:41 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9C=BA=E6=99=AF=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ProjectNLD/Assets/Art/Scene/SceneBrush.meta | 8 +
.../Assets/Art/Scene/SceneBrush/Brush.meta | 8 +
.../Art/Scene/SceneBrush/Brush/Editor.meta | 8 +
.../SceneBrush/Brush/Editor/pinetree_07.asset | 19 +
.../Brush/Editor/pinetree_07.asset.meta | 8 +
.../Brush/Editor/pinetree_07_green.asset | 19 +
.../Brush/Editor/pinetree_07_green.asset.meta | 8 +
.../Art/Scene/SceneBrush/Brush/Generated.meta | 8 +
.../SceneBrush/Brush/Generated/Materials.meta | 8 +
.../Brush/Generated/Materials/tree_branch.mat | 39 ++
.../Generated/Materials/tree_branch.mat.meta | 8 +
.../Generated/Materials/tree_branch_3080.mat | 39 ++
.../Materials/tree_branch_3080.mat.meta | 8 +
.../tree_branch_3080_transparent.mat | 36 ++
.../tree_branch_3080_transparent.mat.meta | 8 +
.../Generated/Materials/tree_branch_6424.mat | 39 ++
.../Materials/tree_branch_6424.mat.meta | 8 +
.../Materials/tree_branch_transparent.mat | 36 ++
.../tree_branch_transparent.mat.meta | 8 +
.../Brush/Generated/Materials/tree_leaves.mat | 39 ++
.../Generated/Materials/tree_leaves.mat.meta | 8 +
.../Generated/Materials/tree_leaves_2882.mat | 39 ++
.../Materials/tree_leaves_2882.mat.meta | 8 +
.../Generated/Materials/tree_leaves_8125.mat | 39 ++
.../Materials/tree_leaves_8125.mat.meta | 8 +
.../tree_leaves_8125_transparent.mat | 36 ++
.../tree_leaves_8125_transparent.mat.meta | 8 +
.../Materials/tree_leaves_transparent.mat | 36 ++
.../tree_leaves_transparent.mat.meta | 8 +
.../SceneBrush/Brush/Generated/Prefabs.meta | 8 +
.../Prefabs/pinetree_07_green.prefab | 86 +++++
.../Prefabs/pinetree_07_green.prefab.meta | 7 +
.../Prefabs/pinetree_07_green_3735.prefab | 86 +++++
.../pinetree_07_green_3735.prefab.meta | 7 +
.../Art/Scene/SceneBrush/SceneRenderInfo.meta | 8 +
.../pinetree_07_green_renderInfo.asset | 17 +
.../pinetree_07_green_renderInfo.asset.meta | 8 +
.../pinetree_07_renderInfo.asset | 17 +
.../pinetree_07_renderInfo.asset.meta | 8 +
.../Art/Scene/Trees/Prefab/pineTree.prefab | 4 +-
.../Framework/Render/SceneObjectRenderInfo.cs | 22 ++
.../Render/SceneObjectRenderInfo.cs.meta | 11 +
.../Assets/Code/Scripts/Gameplay/Scene.meta | 8 +
.../Scripts/Gameplay/Scene/NLDSceneManager.cs | 32 ++
.../Gameplay/Scene/NLDSceneManager.cs.meta | 11 +
.../Scripts/Gameplay/Scene/SceneObject.cs | 69 ++++
.../Gameplay/Scene/SceneObject.cs.meta | 11 +
.../Shaders/Scene/NLD_Scene_Opaque.shader | 6 +-
.../Scene/NLD_Scene_Transparent.shader | 6 +-
.../Assets/Editor/Scene/MaterialUtil.cs | 75 ++++
.../Assets/Editor/Scene/MaterialUtil.cs.meta | 11 +
.../Editor/Scene/NLDSceneManagerInspector.cs | 344 ++++++++++++++++++
.../Scene/NLDSceneManagerInspector.cs.meta | 11 +
.../Assets/Editor/Scene/SceneBrush.meta | 8 +
.../Editor/Scene/SceneBrush/SceneBrush.cs | 230 ++++++++++++
.../Scene/SceneBrush/SceneBrush.cs.meta | 11 +
.../Scene/SceneBrush/SceneBrushBuilding.cs | 8 +
.../SceneBrush/SceneBrushBuilding.cs.meta | 11 +
.../Editor/Scene/SceneBrush/SceneBrushTree.cs | 39 ++
.../Scene/SceneBrush/SceneBrushTree.cs.meta | 11 +
.../Assets/Editor/Scene/SceneBrushHelper.cs | 43 +++
.../Editor/Scene/SceneBrushHelper.cs.meta | 11 +
ProjectNLD/Assets/Editor/Scene/TreeUtil.cs | 80 ++++
.../Assets/Editor/Scene/TreeUtil.cs.meta | 11 +
ProjectNLD/Assets/Editor/Tools/EditorUtil.cs | 38 +-
.../Levels/Level_Tree/Level_Trees.unity | 125 +++----
.../Template/LevelDefault/LevelDefault.unity | 47 ++-
67 files changed, 2011 insertions(+), 87 deletions(-)
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07.asset
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07.asset.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07_green.asset
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07_green.asset.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080_transparent.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080_transparent.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_6424.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_6424.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_transparent.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_transparent.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_2882.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_2882.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125_transparent.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125_transparent.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_transparent.mat
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_transparent.mat.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green.prefab
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green.prefab.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green_3735.prefab
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green_3735.prefab.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_green_renderInfo.asset
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_green_renderInfo.asset.meta
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_renderInfo.asset
create mode 100644 ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_renderInfo.asset.meta
create mode 100644 ProjectNLD/Assets/Code/Scripts/Framework/Render/SceneObjectRenderInfo.cs
create mode 100644 ProjectNLD/Assets/Code/Scripts/Framework/Render/SceneObjectRenderInfo.cs.meta
create mode 100644 ProjectNLD/Assets/Code/Scripts/Gameplay/Scene.meta
create mode 100644 ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/NLDSceneManager.cs
create mode 100644 ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/NLDSceneManager.cs.meta
create mode 100644 ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/SceneObject.cs
create mode 100644 ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/SceneObject.cs.meta
create mode 100644 ProjectNLD/Assets/Editor/Scene/MaterialUtil.cs
create mode 100644 ProjectNLD/Assets/Editor/Scene/MaterialUtil.cs.meta
create mode 100644 ProjectNLD/Assets/Editor/Scene/NLDSceneManagerInspector.cs
create mode 100644 ProjectNLD/Assets/Editor/Scene/NLDSceneManagerInspector.cs.meta
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrush.meta
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrush.cs
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrush.cs.meta
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushBuilding.cs
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushBuilding.cs.meta
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushTree.cs
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushTree.cs.meta
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs
create mode 100644 ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs.meta
create mode 100644 ProjectNLD/Assets/Editor/Scene/TreeUtil.cs
create mode 100644 ProjectNLD/Assets/Editor/Scene/TreeUtil.cs.meta
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush.meta
new file mode 100644
index 00000000000..59990d64ddc
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9f658f3e28a7c9f46be1a494261d6c18
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush.meta
new file mode 100644
index 00000000000..d78e9e409c5
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8ff8a1ecaacc9f349898fd33baf59a23
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor.meta
new file mode 100644
index 00000000000..ece652e9983
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0cf880a22f837124c95a972787b0eca6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07.asset b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07.asset
new file mode 100644
index 00000000000..3d4b5e779e3
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: aa468074512439243a7e5a6df417772a, type: 3}
+ m_Name: pinetree_07
+ m_EditorClassIdentifier:
+ prefab: {fileID: 0}
+ renderInfo: {fileID: 11400000, guid: e9335ec60bc54ae4b8ddeceb4d030f03, type: 2}
+ useTGS: 0
+ radius: 1
+ isEraser: 0
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07.asset.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07.asset.meta
new file mode 100644
index 00000000000..8422fbc5061
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 48cac189b3375df49bcffcb365033814
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07_green.asset b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07_green.asset
new file mode 100644
index 00000000000..669aa533354
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07_green.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: aa468074512439243a7e5a6df417772a, type: 3}
+ m_Name: pinetree_07_green
+ m_EditorClassIdentifier:
+ prefab: {fileID: 0}
+ renderInfo: {fileID: 11400000, guid: 611328916df864a49b0e344b3f2d702f, type: 2}
+ useTGS: 0
+ radius: 1
+ isEraser: 0
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07_green.asset.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07_green.asset.meta
new file mode 100644
index 00000000000..68ed2bebd6c
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Editor/pinetree_07_green.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 27bb9514a35387d4d912663aae5fbbdd
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated.meta
new file mode 100644
index 00000000000..b2c71877666
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 545e80cdabc78024398cdeedadd72d18
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials.meta
new file mode 100644
index 00000000000..cb32fcd4f88
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7afce2eead227e14ca8ef68a13adbb83
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch.mat
new file mode 100644
index 00000000000..6f1dda14006
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch.mat
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_branch
+ m_Shader: {fileID: 4800000, guid: cdc1a657442dcd34ea53fadaa03d7cb4, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHA_TEST_ON
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _ALPHA_TEST: 1
+ - _AmbientMultiplier: 1
+ - _CutOff: 0.5
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch.mat.meta
new file mode 100644
index 00000000000..87aabe0d1e6
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 591ddc592f34e35458cd513c9fa03c8f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080.mat
new file mode 100644
index 00000000000..1db50f33a7b
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080.mat
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_branch_3080
+ m_Shader: {fileID: 4800000, guid: cdc1a657442dcd34ea53fadaa03d7cb4, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHA_TEST_ON
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _ALPHA_TEST: 1
+ - _AmbientMultiplier: 1
+ - _CutOff: 0.5
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080.mat.meta
new file mode 100644
index 00000000000..044bfaa9227
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 50960365a4b4f5049a786a2d7e659d3d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080_transparent.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080_transparent.mat
new file mode 100644
index 00000000000..ae04973d681
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080_transparent.mat
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_branch_3080_transparent
+ m_Shader: {fileID: 4800000, guid: 92e20a2352bfd4843854ef88177fea84, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AmbientMultiplier: 1
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080_transparent.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080_transparent.mat.meta
new file mode 100644
index 00000000000..bbaef9720e4
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_3080_transparent.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c3ae1e388f564354db0ac1caad373ee6
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_6424.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_6424.mat
new file mode 100644
index 00000000000..e18b33debc1
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_6424.mat
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_branch_6424
+ m_Shader: {fileID: 4800000, guid: cdc1a657442dcd34ea53fadaa03d7cb4, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHA_TEST_ON
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _ALPHA_TEST: 1
+ - _AmbientMultiplier: 1
+ - _CutOff: 0.5
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_6424.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_6424.mat.meta
new file mode 100644
index 00000000000..80e710db4a0
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_6424.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 06275e53e2ce9e64ea9fc263d0d467d5
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_transparent.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_transparent.mat
new file mode 100644
index 00000000000..9f737d74aa6
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_transparent.mat
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_branch_transparent
+ m_Shader: {fileID: 4800000, guid: 92e20a2352bfd4843854ef88177fea84, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AmbientMultiplier: 1
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_transparent.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_transparent.mat.meta
new file mode 100644
index 00000000000..3bfd908727e
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_branch_transparent.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c5c0ffab4b494c942b38a0877a5c0fa7
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves.mat
new file mode 100644
index 00000000000..ce95b05d24f
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves.mat
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_leaves
+ m_Shader: {fileID: 4800000, guid: cdc1a657442dcd34ea53fadaa03d7cb4, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHA_TEST_ON
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _ALPHA_TEST: 1
+ - _AmbientMultiplier: 1
+ - _CutOff: 0.5
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 0.84276724, g: 0.8414123, b: 0.2199675, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves.mat.meta
new file mode 100644
index 00000000000..70c1e9a968c
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 68326c9bb2fba294989c1e0c26a4e6fc
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_2882.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_2882.mat
new file mode 100644
index 00000000000..9981b9dcdd6
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_2882.mat
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_leaves_2882
+ m_Shader: {fileID: 4800000, guid: cdc1a657442dcd34ea53fadaa03d7cb4, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHA_TEST_ON
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _ALPHA_TEST: 1
+ - _AmbientMultiplier: 1
+ - _CutOff: 0.5
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 0.9056604, g: 0.6863652, b: 0.6863652, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_2882.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_2882.mat.meta
new file mode 100644
index 00000000000..4a228293c77
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_2882.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ca59b3cad95aa1643860fee53836090e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125.mat
new file mode 100644
index 00000000000..ffe70449d10
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125.mat
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_leaves_8125
+ m_Shader: {fileID: 4800000, guid: cdc1a657442dcd34ea53fadaa03d7cb4, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHA_TEST_ON
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _ALPHA_TEST: 1
+ - _AmbientMultiplier: 1
+ - _CutOff: 0.5
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 0.8867924, g: 0.48243734, b: 0.48243734, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125.mat.meta
new file mode 100644
index 00000000000..5a8aaaf5644
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c4ebd0e05fe8ed4479ddb6444c068ce4
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125_transparent.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125_transparent.mat
new file mode 100644
index 00000000000..17955e957ed
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125_transparent.mat
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_leaves_8125_transparent
+ m_Shader: {fileID: 4800000, guid: 92e20a2352bfd4843854ef88177fea84, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AmbientMultiplier: 1
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 0.8867924, g: 0.48243734, b: 0.48243734, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125_transparent.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125_transparent.mat.meta
new file mode 100644
index 00000000000..70503edae82
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_8125_transparent.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8092fa627f0ce6d4293dcba7d972d551
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_transparent.mat b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_transparent.mat
new file mode 100644
index 00000000000..932294b61f5
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_transparent.mat
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: tree_leaves_transparent
+ m_Shader: {fileID: 4800000, guid: 92e20a2352bfd4843854ef88177fea84, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: fd033de6625091e4b984090fd025f535, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AmbientMultiplier: 1
+ - _ShadowIntensity: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ m_BuildTextureStacks: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_transparent.mat.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_transparent.mat.meta
new file mode 100644
index 00000000000..6839abd70a4
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Materials/tree_leaves_transparent.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 314aebc3d8cb1f44a94e5fd938abe2ae
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs.meta
new file mode 100644
index 00000000000..be900955222
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: db4e9962296f60f45872c567b8af5c41
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green.prefab b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green.prefab
new file mode 100644
index 00000000000..d3caaa9e0bc
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green.prefab
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &4357363629614094773
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 9066999977269872205}
+ - component: {fileID: 5196018159892433211}
+ - component: {fileID: 4933581124988119049}
+ m_Layer: 0
+ m_Name: pinetree_07_green
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 4294967295
+ m_IsActive: 1
+--- !u!4 &9066999977269872205
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4357363629614094773}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 2.99, y: 0.69, z: -6.44}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5196018159892433211
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4357363629614094773}
+ m_Mesh: {fileID: 4335258, guid: d8fec4d55fba9b04e87c5c900271f2c5, type: 3}
+--- !u!23 &4933581124988119049
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4357363629614094773}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 06275e53e2ce9e64ea9fc263d0d467d5, type: 2}
+ - {fileID: 2100000, guid: ca59b3cad95aa1643860fee53836090e, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green.prefab.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green.prefab.meta
new file mode 100644
index 00000000000..f9ca249e951
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ae8d3db191abc3046856e1cee8d117f2
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green_3735.prefab b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green_3735.prefab
new file mode 100644
index 00000000000..f10f5a3481e
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green_3735.prefab
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1586667202083438961
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7931645060675964333}
+ - component: {fileID: 535055031937521122}
+ - component: {fileID: 137566954833917471}
+ m_Layer: 0
+ m_Name: pinetree_07_green_3735
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 4294967295
+ m_IsActive: 1
+--- !u!4 &7931645060675964333
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1586667202083438961}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 2.99, y: 0.69, z: -6.44}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &535055031937521122
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1586667202083438961}
+ m_Mesh: {fileID: 4335258, guid: d8fec4d55fba9b04e87c5c900271f2c5, type: 3}
+--- !u!23 &137566954833917471
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1586667202083438961}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 50960365a4b4f5049a786a2d7e659d3d, type: 2}
+ - {fileID: 2100000, guid: c4ebd0e05fe8ed4479ddb6444c068ce4, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green_3735.prefab.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green_3735.prefab.meta
new file mode 100644
index 00000000000..1ae5de0c384
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs/pinetree_07_green_3735.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 02de318a8e704f344be5127dc9ed5751
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo.meta
new file mode 100644
index 00000000000..b644b0f78c2
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 59830c507a8c9994b877a8eaa2d46f50
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_green_renderInfo.asset b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_green_renderInfo.asset
new file mode 100644
index 00000000000..589ba8fde43
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_green_renderInfo.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 478663069aaffb6448103ad45fb5e8c1, type: 3}
+ m_Name: pinetree_07_green_renderInfo
+ m_EditorClassIdentifier:
+ opaqueMaterial: []
+ transparentMaterial: []
+ meshes: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_green_renderInfo.asset.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_green_renderInfo.asset.meta
new file mode 100644
index 00000000000..45762b8c243
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_green_renderInfo.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 611328916df864a49b0e344b3f2d702f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_renderInfo.asset b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_renderInfo.asset
new file mode 100644
index 00000000000..b3c1706c1df
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_renderInfo.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 478663069aaffb6448103ad45fb5e8c1, type: 3}
+ m_Name: pinetree_07_renderInfo
+ m_EditorClassIdentifier:
+ opaqueMaterial: []
+ transparentMaterial: []
+ meshes: []
diff --git a/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_renderInfo.asset.meta b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_renderInfo.asset.meta
new file mode 100644
index 00000000000..18df21b38b7
--- /dev/null
+++ b/ProjectNLD/Assets/Art/Scene/SceneBrush/SceneRenderInfo/pinetree_07_renderInfo.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e9335ec60bc54ae4b8ddeceb4d030f03
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Art/Scene/Trees/Prefab/pineTree.prefab b/ProjectNLD/Assets/Art/Scene/Trees/Prefab/pineTree.prefab
index 135b37d55a4..269f9501790 100644
--- a/ProjectNLD/Assets/Art/Scene/Trees/Prefab/pineTree.prefab
+++ b/ProjectNLD/Assets/Art/Scene/Trees/Prefab/pineTree.prefab
@@ -27,8 +27,8 @@ Transform:
m_GameObject: {fileID: 1261262978292087713}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: -4.91, y: -0.00000035762787, z: 36.38}
- m_LocalScale: {x: 0.1, y: 0.1, z: 0.1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
diff --git a/ProjectNLD/Assets/Code/Scripts/Framework/Render/SceneObjectRenderInfo.cs b/ProjectNLD/Assets/Code/Scripts/Framework/Render/SceneObjectRenderInfo.cs
new file mode 100644
index 00000000000..f74cd88159d
--- /dev/null
+++ b/ProjectNLD/Assets/Code/Scripts/Framework/Render/SceneObjectRenderInfo.cs
@@ -0,0 +1,22 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Sirenix.OdinInspector;
+
+///
+/// 存储场景中物件渲染所需的基本数据,每个场景笔刷都会绑定一份该对象,可以用于在场景中标识某个笔刷刷上的游戏物体
+///
+public class SceneObjectRenderInfo : ScriptableObject
+{
+ [ReadOnly]
+ [LabelText("不透明材质")]
+ public List opaqueMaterial = new();
+
+ [ReadOnly]
+ [LabelText("半透明材质")]
+ public List transparentMaterial = new();
+
+ [ReadOnly]
+ [LabelText("网格")]
+ public List meshes = new();
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Code/Scripts/Framework/Render/SceneObjectRenderInfo.cs.meta b/ProjectNLD/Assets/Code/Scripts/Framework/Render/SceneObjectRenderInfo.cs.meta
new file mode 100644
index 00000000000..3f880374aae
--- /dev/null
+++ b/ProjectNLD/Assets/Code/Scripts/Framework/Render/SceneObjectRenderInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 478663069aaffb6448103ad45fb5e8c1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene.meta b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene.meta
new file mode 100644
index 00000000000..4e6e5bd9f04
--- /dev/null
+++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7b775a1e295e6204ca63e60f1bc00ec4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/NLDSceneManager.cs b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/NLDSceneManager.cs
new file mode 100644
index 00000000000..61dfb12017c
--- /dev/null
+++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/NLDSceneManager.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Sirenix.OdinInspector;
+
+public class NLDSceneManager : MonoBehaviour, IEnumerable
+{
+ [HideInInspector]
+ [SerializeField]
+ private List _sceneObjects = new();
+
+ public void AddSceneObject(SceneObject so)
+ {
+ if(_sceneObjects.Contains(so))
+ return;
+ _sceneObjects.Add(so);
+ }
+
+ public void RemoveSceneObject(SceneObject so)
+ {
+ var index = _sceneObjects.FindIndex(obj => obj == so);
+ if(index < 0)
+ return;
+ _sceneObjects.RemoveAt(index);
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ return _sceneObjects.GetEnumerator();
+ }
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/NLDSceneManager.cs.meta b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/NLDSceneManager.cs.meta
new file mode 100644
index 00000000000..da8ff119ce0
--- /dev/null
+++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/NLDSceneManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 46398fcea7ee9e54894dfc4e5364d137
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/SceneObject.cs b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/SceneObject.cs
new file mode 100644
index 00000000000..92f24711e0c
--- /dev/null
+++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/SceneObject.cs
@@ -0,0 +1,69 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Sirenix.OdinInspector;
+
+public enum ESceneObjectType
+{
+ None = 0,
+ Tree = 1, //树
+}
+
+///
+/// 场景中对象,可以方便地执行一些渲染上的效果,如半透,面片渲染等
+///
+public class SceneObject : MonoBehaviour
+{
+ #region Fields
+
+ [SerializeField]
+ [LabelText("是否半透")]
+ [OnValueChanged("Refresh")]
+ private bool _transparent;
+
+ [SerializeField]
+ [LabelText("是否使用面片")]
+ [OnValueChanged("Refresh")]
+ private bool _useSurface;
+
+ [ReadOnly]
+ [HideInInspector]
+ [SerializeField]
+ private SceneObjectRenderInfo _renderInfo;
+
+ #endregion
+
+ #region API
+
+ public bool Transparent
+ {
+ get => _transparent;
+ set
+ {
+ if (_transparent != value)
+ {
+ _transparent = value;
+ Refresh();
+ }
+ }
+ }
+
+ public bool UseSurface
+ {
+ get => _useSurface;
+ set
+ {
+ if (_useSurface != value)
+ {
+ _useSurface = value;
+ Refresh();
+ }
+ }
+ }
+
+ private void Refresh()
+ {
+ }
+
+ #endregion
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/SceneObject.cs.meta b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/SceneObject.cs.meta
new file mode 100644
index 00000000000..efd33075c66
--- /dev/null
+++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/Scene/SceneObject.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: af559d87428e7cc4ab1c48d151b613b7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Code/Shaders/Scene/NLD_Scene_Opaque.shader b/ProjectNLD/Assets/Code/Shaders/Scene/NLD_Scene_Opaque.shader
index ab8839f7da4..007fd157c0a 100644
--- a/ProjectNLD/Assets/Code/Shaders/Scene/NLD_Scene_Opaque.shader
+++ b/ProjectNLD/Assets/Code/Shaders/Scene/NLD_Scene_Opaque.shader
@@ -4,7 +4,7 @@
{
[Header(Main map)]
_MainTex ("MainTex", 2D) = "white" {}
- _BaseTint("Base Tint", color) = (1,1,1,1)
+ _Color("Base Tint", color) = (1,1,1,1)
_CutOff("Alpha测试值",Range(0,1)) = 0.5
_ShadowIntensity("阴影强度",Range(0,1)) = 1
@@ -45,7 +45,7 @@
SAMPLER(sampler_MainTex);
half4 _MainTex_ST;
- half4 _BaseTint;
+ half4 _Color;
half4 _BaseColorBottom;
half4 _BaseColorTop;
@@ -103,7 +103,7 @@
clip(baseColor.a - _CutOff);
#endif
- half3 albedo = baseColor * _BaseTint;
+ half3 albedo = baseColor * _Color;
half3 mainLightColor = mainLight.color.rgb;
//漫反射
half3 diffuse = saturate(dot(N, L)) * albedo * mainLightColor;
diff --git a/ProjectNLD/Assets/Code/Shaders/Scene/NLD_Scene_Transparent.shader b/ProjectNLD/Assets/Code/Shaders/Scene/NLD_Scene_Transparent.shader
index 570a209be27..ac7420430b3 100644
--- a/ProjectNLD/Assets/Code/Shaders/Scene/NLD_Scene_Transparent.shader
+++ b/ProjectNLD/Assets/Code/Shaders/Scene/NLD_Scene_Transparent.shader
@@ -5,7 +5,7 @@
{
[Header(Main map)]
_MainTex ("MainTex", 2D) = "white" {}
- _BaseTint("Base Tint", color) = (1,1,1,1)
+ _Color("Base Tint", color) = (1,1,1,1)
_ShadowIntensity("阴影强度",Range(0,1)) = 1
_AmbientMultiplier("环境光强度",Range(0,2)) = 1
@@ -43,7 +43,7 @@
SAMPLER(sampler_MainTex);
half4 _MainTex_ST;
- half4 _BaseTint;
+ half4 _Color;
half4 _BaseColorBottom;
half4 _BaseColorTop;
@@ -97,7 +97,7 @@
half4 baseColor = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv);
- half4 albedo = baseColor * _BaseTint;
+ half4 albedo = baseColor * _Color;
half3 mainLightColor = mainLight.color.rgb;
//漫反射
half3 diffuse = saturate(dot(N, L)) * albedo * mainLightColor;
diff --git a/ProjectNLD/Assets/Editor/Scene/MaterialUtil.cs b/ProjectNLD/Assets/Editor/Scene/MaterialUtil.cs
new file mode 100644
index 00000000000..7d99084e1b5
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/MaterialUtil.cs
@@ -0,0 +1,75 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+
+public class MaterialUtil
+{
+ //拷贝材质上的属性到另一个材质
+ public static void CopyMaterialProp(Material mat1, Material mat2)
+ {
+ mat2.mainTexture = mat1.mainTexture;
+ mat2.color = mat1.color;
+ }
+
+ //拷贝材质上的属性到新的指定shader材质
+ public static Material CopyMaterialWithShader(Material mat1, Shader shader = null)
+ {
+ shader = shader ? shader : mat1.shader;
+ var mat2 = new Material(shader)
+ {
+ name = mat1.name
+ };
+ CopyMaterialProp(mat1, mat2);
+ return mat2;
+ }
+
+ //以指定shader替换gameobject上的所有材质,此函数会新建材质
+ public static List ReplaceMaterialOnGameObject(GameObject go, Shader shader = null)
+ {
+ if (!EditorUtility.IsPersistent(go))
+ {
+ Debug.LogError($"当前gameobject不是asset中的预制体!");
+ return null;
+ }
+
+ List result = new();
+ var meshRenderers = go.GetComponentsInChildren();
+ foreach (var meshRenderer in meshRenderers)
+ {
+ var mats = meshRenderer.sharedMaterials;
+ for (int i = 0; i < mats.Length; i++)
+ {
+ mats[i] = CopyMaterialWithShader(mats[i], shader);
+ result.Add(mats[i]);
+ }
+
+ meshRenderer.sharedMaterials = mats;
+ }
+
+ return result;
+ }
+
+ public static List CreateMaterialWithShaderOnGameObject(GameObject go, Shader shader)
+ {
+ if (!EditorUtility.IsPersistent(go))
+ {
+ Debug.LogError($"当前gameobject不是asset中的预制体!");
+ return null;
+ }
+
+ List result = new();
+ var meshRenderers = go.GetComponentsInChildren();
+ foreach (var meshRenderer in meshRenderers)
+ {
+ var mats = meshRenderer.sharedMaterials;
+ for (int i = 0; i < mats.Length; i++)
+ {
+ var newMat = CopyMaterialWithShader(mats[i], shader);
+ result.Add(newMat);
+ }
+ }
+
+ return result;
+ }
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Editor/Scene/MaterialUtil.cs.meta b/ProjectNLD/Assets/Editor/Scene/MaterialUtil.cs.meta
new file mode 100644
index 00000000000..beaab2f7368
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/MaterialUtil.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 43560d9d31b7d0844876652d614e374d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Editor/Scene/NLDSceneManagerInspector.cs b/ProjectNLD/Assets/Editor/Scene/NLDSceneManagerInspector.cs
new file mode 100644
index 00000000000..ea3e15bcc1b
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/NLDSceneManagerInspector.cs
@@ -0,0 +1,344 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.IO;
+using Sirenix.OdinInspector.Editor;
+using UnityEditor;
+using UnityEngine;
+
+[CustomEditor(typeof(NLDSceneManager))]
+public class NLDSceneManagerInspector : Editor
+{
+ private const string SCENE_BRUSH_PATH = "Assets/Art/Scene/SceneBrush/Brush/Editor";
+ private const string SCENE_RENDER_INFO_PATH = "Assets/Art/Scene/SceneBrush/SceneRenderInfo";
+
+ private List _showBrushes = new();
+
+ private bool _isSelectingBrush;
+ private bool _isCreatingBrush;
+
+ private SceneBrush _currBrush;
+ private string _brushName;
+ private EBrushType _brushType;
+ private string _searchStr;
+
+ private bool _isDirty;
+ private Vector2 _scrollPosition;
+ private NLDSceneManager _sceneManager;
+
+ private PreviewRenderUtility _previewRenderUtility;
+
+ private GameObject Prefab => _currBrush != null ? _currBrush.prefab : null;
+
+ private void ValidateData()
+ {
+ if (_previewRenderUtility == null)
+ {
+ _previewRenderUtility = new PreviewRenderUtility();
+
+ //We set the previews camera to 6 units back, look towards the middle of the 'scene'
+
+ _previewRenderUtility.camera.transform.rotation = Quaternion.identity;
+ }
+ }
+
+ public override bool HasPreviewGUI()
+ {
+ ValidateData();
+ return true;
+ }
+
+ private void OnEnable()
+ {
+ RefreshData();
+ }
+
+ protected void OnDisable()
+ {
+ if (_previewRenderUtility != null)
+ {
+ _previewRenderUtility.Cleanup();
+ }
+ }
+
+ private void RefreshData()
+ {
+ RefreshAllBrush();
+ RefreshBrushToShow();
+ }
+
+ private void RefreshAllBrush()
+ {
+ SceneBrushHelper.RefreshAllBrush();
+ }
+
+ private void RefreshBrushToShow()
+ {
+ _showBrushes.Clear();
+ foreach (var brush in SceneBrushHelper.AllBrushes)
+ {
+ if (string.IsNullOrEmpty(_searchStr) || brush.name.ToLower().Contains(_searchStr.ToLower()))
+ {
+ _showBrushes.Add(brush);
+ }
+ }
+ }
+
+ private bool CheckCreateBrush()
+ {
+ if (string.IsNullOrEmpty(_brushName))
+ {
+ Debug.LogError("笔刷名为空!");
+ return false;
+ }
+
+ if (_brushType == EBrushType.None)
+ {
+ Debug.LogError("笔刷类型为空!");
+ return false;
+ }
+
+ foreach (var brush in SceneBrushHelper.AllBrushes)
+ {
+ var path = AssetDatabase.GetAssetPath(brush);
+ if (Path.GetFileNameWithoutExtension(path) == _brushName)
+ {
+ Debug.LogError("当前笔刷名字已存在,请重新命名!");
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private bool CheckPreview()
+ {
+ return Prefab != null;
+ }
+
+ public override void OnPreviewGUI(Rect r, GUIStyle background)
+ {
+ if (Event.current.type == EventType.Repaint && CheckPreview())
+ {
+ _previewRenderUtility.BeginPreview(r, background);
+ _previewRenderUtility.camera.farClipPlane = 100;
+ var meshRenderer = Prefab.GetComponent();
+ var meshFilter = Prefab.GetComponent();
+ if (meshRenderer == null || meshFilter == null || meshRenderer.sharedMaterials.Length == 0 ||
+ meshFilter.sharedMesh == null)
+ return;
+ var mesh = meshFilter.sharedMesh;
+ var bounds = meshRenderer.bounds;
+ var y = bounds.center.y;
+ var height = bounds.size.y + 1;
+ var fov = _previewRenderUtility.camera.fieldOfView;
+ var z = -(height / 2) / Mathf.Tan(Mathf.Deg2Rad * (fov / 2));
+ var cameraPos = new Vector3(0, y, z);
+ _previewRenderUtility.camera.transform.position = cameraPos;
+ var materials = meshRenderer.sharedMaterials;
+ for (int i = 0; i < mesh.subMeshCount; i++)
+ {
+ if (i < materials.Length)
+ _previewRenderUtility.DrawMesh(mesh, Matrix4x4.identity, materials[i], i);
+ }
+
+ _previewRenderUtility.camera.Render();
+
+ var result_render = _previewRenderUtility.EndPreview();
+ GUI.DrawTexture(r, result_render, ScaleMode.StretchToFill, false);
+ }
+ }
+
+ public override void OnInspectorGUI()
+ {
+ //base.OnInspectorGUI();
+ _isDirty = false;
+ DrawBrushSelecting();
+ DrawCreateBrush();
+ DrawBrush();
+ if (_isDirty)
+ AssetDatabase.SaveAssets();
+ }
+
+ private void DrawBrushSelecting()
+ {
+ if (_isSelectingBrush)
+ {
+ RefreshBrushToShow();
+ EditorGUI.BeginChangeCheck();
+ _searchStr = EditorGUILayout.TextField("搜索笔刷", _searchStr);
+ if (EditorGUI.EndChangeCheck())
+ {
+ //RefreshBrushToShow();
+ }
+
+ var scrollViewHeight = Mathf.Min(200, 30 * (_showBrushes.Count + 1) + 10);
+ _scrollPosition =
+ GUILayout.BeginScrollView(_scrollPosition, GUI.skin.box, GUILayout.Height(scrollViewHeight));
+ EditorGUILayout.BeginHorizontal(GUI.skin.label, GUILayout.Height(20));
+ EditorGUILayout.LabelField("笔刷名", GUILayout.Width(150));
+ EditorGUILayout.LabelField("笔刷类型", GUILayout.Width(150));
+ EditorGUILayout.EndHorizontal();
+ foreach (var brush in _showBrushes)
+ {
+ if (brush == _currBrush)
+ GUI.color = Color.cyan;
+ EditorGUILayout.BeginHorizontal(GUI.skin.box, GUILayout.Height(20));
+ EditorGUILayout.LabelField(brush.name, GUILayout.Width(150));
+ EditorGUILayout.LabelField(brush.brushType.ToString(), GUILayout.Width(150));
+ if (GUILayout.Button("选择"))
+ {
+ _currBrush = brush;
+ }
+
+ GUI.color = Color.white;
+ EditorGUILayout.EndHorizontal();
+ }
+
+ GUILayout.EndScrollView();
+ }
+
+ if (SceneBrushHelper.AllBrushes.Count > 0)
+ {
+ if (!_isSelectingBrush && GUILayout.Button("选择笔刷"))
+ {
+ _isSelectingBrush = true;
+ }
+
+ if (_isSelectingBrush && GUILayout.Button("选择完毕"))
+ {
+ _scrollPosition = Vector2.zero;
+ _isSelectingBrush = false;
+ }
+ }
+ else
+ {
+ _isSelectingBrush = false;
+ }
+ }
+
+ private void DrawCreateBrush()
+ {
+ if (!_isCreatingBrush)
+ {
+ if (GUILayout.Button("创建笔刷"))
+ {
+ _isCreatingBrush = true;
+ Repaint();
+ }
+ }
+ else
+ {
+ EditorGUILayout.BeginHorizontal();
+
+ EditorGUILayout.BeginVertical();
+ _brushName = EditorGUILayout.TextField("新建笔刷名", _brushName);
+ _brushType = (EBrushType)EditorGUILayout.EnumPopup("新建笔刷类型", _brushType);
+ EditorGUILayout.EndVertical();
+
+ EditorGUILayout.BeginVertical();
+ if (GUILayout.Button("创建"))
+ {
+ if (!CheckCreateBrush())
+ {
+ return;
+ }
+
+ var renderInfoName = $"{_brushName}_renderInfo";
+ var renderInfoPath = $"{SCENE_RENDER_INFO_PATH}/{renderInfoName}.asset";
+ EditorUtil.CreateAnUniqueAsset(CreateInstance(), renderInfoPath);
+ AssetDatabase.Refresh();
+ var renderInfo = AssetDatabase.LoadAssetAtPath(renderInfoPath);
+ renderInfo.name = renderInfoName;
+
+ var brushName = _brushName;
+ var brushPath = $"{SCENE_BRUSH_PATH}/{brushName}.asset";
+ switch (_brushType)
+ {
+ case EBrushType.Tree:
+ EditorUtil.CreateAnUniqueAsset(CreateInstance(), brushPath);
+ break;
+ case EBrushType.Building:
+ EditorUtil.CreateAnUniqueAsset(CreateInstance(), brushPath);
+ break;
+ default: break;
+ }
+
+ AssetDatabase.Refresh();
+ var brush = AssetDatabase.LoadAssetAtPath(brushPath);
+ brush.renderInfo = renderInfo;
+ brush.name = brushName;
+
+ EditorUtility.SetDirty(renderInfo);
+ EditorUtility.SetDirty(brush);
+ _isDirty = true;
+
+ _currBrush = brush;
+ _isCreatingBrush = false;
+ RefreshData();
+ }
+
+ if (GUILayout.Button("取消创建"))
+ {
+ _isCreatingBrush = false;
+ }
+
+ EditorGUILayout.EndVertical();
+
+ EditorGUILayout.EndHorizontal();
+ }
+ }
+
+ private void DrawBrush()
+ {
+ if (_currBrush != null)
+ {
+ GUI.enabled = false;
+ EditorGUILayout.ObjectField("当前笔刷:", _currBrush, typeof(SceneBrush), false);
+ EditorGUILayout.ObjectField("当前渲染信息:", _currBrush.renderInfo, typeof(SceneObjectRenderInfo), false);
+ GUI.enabled = true;
+
+ if (_currBrush.prefab != null)
+ GUI.enabled = false;
+ EditorGUI.BeginChangeCheck();
+ var prefab =
+ EditorGUILayout.ObjectField("笔刷预制:", _currBrush.prefab, typeof(GameObject), false) as GameObject;
+ if (EditorGUI.EndChangeCheck())
+ {
+ _currBrush.OnPrefabChanged(prefab);
+ }
+
+ GUI.enabled = true;
+
+ DrawBrushSettings();
+
+
+ if (GUILayout.Button("删除笔刷"))
+ {
+ _currBrush.OnDelete();
+ var path = AssetDatabase.GetAssetPath(_currBrush);
+ //DestroyImmediate(_currBrush,true);
+ AssetDatabase.DeleteAsset(path);
+ _currBrush = null;
+ RefreshData();
+ }
+ }
+ }
+
+ private void DrawBrushSettings()
+ {
+ if (_currBrush.Valid)
+ {
+ GUI.enabled = false;
+ EditorGUILayout.EnumPopup("笔刷类型", _currBrush.brushType);
+ GUI.enabled = true;
+
+ _currBrush.useTGS = EditorGUILayout.Toggle("对其网格", _currBrush.useTGS);
+ _currBrush.radius = EditorGUILayout.FloatField("笔刷半径", _currBrush.radius);
+ _currBrush.isEraser = EditorGUILayout.Toggle("擦子", _currBrush.isEraser);
+
+ _currBrush.OnInspectorGUI();
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Editor/Scene/NLDSceneManagerInspector.cs.meta b/ProjectNLD/Assets/Editor/Scene/NLDSceneManagerInspector.cs.meta
new file mode 100644
index 00000000000..4a2f57d9ac3
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/NLDSceneManagerInspector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0a2764b5e37eac94c95339d9c46ad5d2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrush.meta b/ProjectNLD/Assets/Editor/Scene/SceneBrush.meta
new file mode 100644
index 00000000000..6504b435cb2
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrush.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 620679bedc844cc4aab47e3e6fa40c9e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrush.cs b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrush.cs
new file mode 100644
index 00000000000..01fcd2f26b1
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrush.cs
@@ -0,0 +1,230 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using UnityEngine;
+using Sirenix.OdinInspector;
+using UnityEditor;
+
+public enum EBrushType
+{
+ None = 0,
+ Tree,
+ Building,
+}
+
+///
+/// 笔刷工具,每一个笔刷绑定了一个Prefab和一个SceneObjectRenderInfo
+/// 每一个笔刷就对应了一个具体外貌的游戏物体(如绿色的松树和白色的松树就需要两个笔刷)
+/// 需要继承自该类完成自己类型笔刷的逻辑
+///
+public abstract class SceneBrush : ScriptableObject
+{
+ #region Const
+
+ protected const string SCENE_BRUSH_GENERATED_PREFAB_PATH = "Assets/Art/Scene/SceneBrush/Brush/Generated/Prefabs";
+
+ protected const string SCENE_BRUSH_GENERATED_MATERIAL_PATH =
+ "Assets/Art/Scene/SceneBrush/Brush/Generated/Materials";
+
+ protected const string SCENE_TRANSPARENT_SHADER = "Assets/Code/Shaders/Scene/NLD_Scene_Transparent.shader";
+ protected const string SCENE_OPAQUE_SHADER = "Assets/Code/Shaders/Scene/NLD_Scene_Opaque.shader";
+
+ #endregion
+
+ #region Fields And Properties
+
+ [Sirenix.OdinInspector.ReadOnly]
+ public GameObject prefab;
+
+ [Sirenix.OdinInspector.ReadOnly]
+ public SceneObjectRenderInfo renderInfo;
+
+ public abstract EBrushType brushType { get; }
+
+ [HideInInspector]
+ public bool useTGS;
+
+ [HideInInspector]
+ public float radius = 1;
+
+ [HideInInspector]
+ public bool isEraser;
+
+ public bool Valid => prefab != null && renderInfo != null;
+
+ #endregion
+
+ #region MainLife
+
+ ///
+ /// 基类的该函数只能对应大部分的场景物件(如树木,石头等),建筑等特殊的需要重写该函数
+ ///
+ ///
+ public virtual void OnPrefabChanged(GameObject newPrefab)
+ {
+ if (newPrefab == null)
+ {
+ prefab = null;
+ return;
+ }
+
+ //预处理一下资源
+ PreProcessPrefab(newPrefab);
+ //如果当前预制体已经与其他笔刷绑定了,需要克隆当前预制体,因为笔刷和预制体一一对应
+ if (SceneBrushHelper.GetSceneBrushByPrefab(newPrefab) != null)
+ {
+ var clonedPrefab = ClonePrefab(newPrefab);
+ newPrefab = clonedPrefab;
+ }
+
+ prefab = newPrefab;
+ //后处理资源
+ PostProcessPrefab();
+ }
+
+ //预处理资源,如树是从TreeCreator制作的,但Unity已经不支持了,需要我们手动移除无用组件和材质并设置正确值
+ protected virtual void PreProcessPrefab(GameObject k_prefab)
+ {
+ }
+
+ //后处理资源,包括生成半透明材质,记录材质和网格信息
+ protected virtual void PostProcessPrefab()
+ {
+ //应用当前不透明材质到renderInfo上
+ ApplyOpaqueMaterial();
+ //创建透明材质并应用到renderInfo上
+ CreateTransparentMaterialAndApply();
+ //应用网格
+ ApplyMesh();
+ }
+
+ protected GameObject ClonePrefab(GameObject k_prefab)
+ {
+ if (k_prefab == null || !PrefabUtility.IsPartOfPrefabAsset(k_prefab))
+ {
+ Debug.LogError("克隆对象失败!");
+ return null;
+ }
+
+ var instance = PrefabUtility.InstantiatePrefab(k_prefab) as GameObject;
+ if (instance == null)
+ return null;
+ PrefabUtility.UnpackPrefabInstance(instance, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction);
+ var newPath =
+ EditorUtil.GetAssetUniquePath($"{SCENE_BRUSH_GENERATED_PREFAB_PATH}/{name}.prefab", out var assetName);
+ instance.name = assetName;
+ PrefabUtility.SaveAsPrefabAsset(instance, newPath);
+ DestroyImmediate(instance);
+ var newPrefab = AssetDatabase.LoadAssetAtPath(newPath);
+ //深拷贝材质
+ var mats = MaterialUtil.ReplaceMaterialOnGameObject(newPrefab);
+ if (mats == null)
+ return null;
+ foreach (var mat in mats)
+ {
+ EditorUtil.CreateAnUniqueAsset(mat, $"{SCENE_BRUSH_GENERATED_MATERIAL_PATH}/{mat.name}.mat");
+ }
+
+ AssetDatabase.Refresh();
+ return newPrefab;
+ }
+
+ protected void ApplyOpaqueMaterial()
+ {
+ var meshrenderers = prefab.GetComponentsInChildren();
+ List mats = new();
+ foreach (var meshRenderer in meshrenderers)
+ {
+ foreach (var mat in meshRenderer.sharedMaterials)
+ {
+ mats.Add(mat);
+ }
+ }
+
+ renderInfo.opaqueMaterial = mats;
+ }
+
+ protected void CreateTransparentMaterialAndApply()
+ {
+ if (prefab == null)
+ return;
+ var shader = AssetDatabase.LoadAssetAtPath(SCENE_TRANSPARENT_SHADER);
+ var mats = MaterialUtil.CreateMaterialWithShaderOnGameObject(prefab, shader);
+ if (mats == null)
+ return;
+ foreach (var mat in mats)
+ {
+ EditorUtil.CreateAnUniqueAsset(mat, $"{SCENE_BRUSH_GENERATED_MATERIAL_PATH}/{mat.name}_transparent.mat");
+ }
+
+ renderInfo.transparentMaterial = mats;
+ }
+
+ protected void ApplyMesh()
+ {
+ if (prefab == null)
+ return;
+ var meshFilters = prefab.GetComponentsInChildren();
+ List result = new();
+ foreach (var mf in meshFilters)
+ {
+ result.Add(mf.sharedMesh);
+ }
+
+ renderInfo.meshes = result;
+ }
+
+ public virtual void AfterDraw(List drawnObjects)
+ {
+ }
+
+ public virtual void OnClickOnGround()
+ {
+ }
+
+ public virtual void OnSwipeOnGround()
+ {
+ }
+
+ public virtual void OnDelete()
+ {
+ if (Valid)
+ {
+ foreach (var mat in renderInfo.transparentMaterial)
+ {
+ if (AssetDatabase.IsSubAsset(mat))
+ {
+ AssetDatabase.RemoveObjectFromAsset(mat);
+ }
+ else
+ {
+ //Object.DestroyImmediate(mat, true);
+ AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(mat));
+ }
+ }
+ }
+
+
+ var path = AssetDatabase.GetAssetPath(renderInfo);
+ //DestroyImmediate(renderInfo, true);
+ AssetDatabase.DeleteAsset(path);
+ }
+
+ #endregion
+
+ #region GUI
+
+ public virtual void OnInspectorGUI()
+ {
+ }
+
+ #endregion
+
+ #region Other
+
+ protected void DrawAPrefab(Vector3 position)
+ {
+ }
+
+ #endregion
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrush.cs.meta b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrush.cs.meta
new file mode 100644
index 00000000000..88020ed3921
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrush.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8ea875b7bd36b7d4fa66295a03a1cb24
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushBuilding.cs b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushBuilding.cs
new file mode 100644
index 00000000000..259b712cb23
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushBuilding.cs
@@ -0,0 +1,8 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class SceneBrushBuilding : SceneBrush
+{
+ public override EBrushType brushType => EBrushType.Building;
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushBuilding.cs.meta b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushBuilding.cs.meta
new file mode 100644
index 00000000000..2c6e4a94d77
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushBuilding.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 06ec76ff5ff34564c8002bad94ea3ed3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushTree.cs b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushTree.cs
new file mode 100644
index 00000000000..33c206bb870
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushTree.cs
@@ -0,0 +1,39 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+
+public class SceneBrushTree : SceneBrush
+{
+ public override EBrushType brushType => EBrushType.Tree;
+
+ public override void OnPrefabChanged(GameObject newPrefab)
+ {
+ }
+
+ protected override void PreProcessPrefab(GameObject k_prefab)
+ {
+ base.PreProcessPrefab(k_prefab);
+ TreeUtil.PostProcessTree(k_prefab);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+ if (Valid)
+ {
+ var branchMat = renderInfo.opaqueMaterial[0];
+ var leafMat = renderInfo.opaqueMaterial[1];
+ EditorGUI.BeginChangeCheck();
+ var branchColor = EditorGUILayout.ColorField("树枝颜色",branchMat.color);
+ var leafColor = EditorGUILayout.ColorField("树叶颜色",leafMat.color);
+ if (EditorGUI.EndChangeCheck())
+ {
+ branchMat.color = branchColor;
+ leafMat.color = leafColor;
+ renderInfo.transparentMaterial[0].color = branchColor;
+ renderInfo.transparentMaterial[1].color = leafColor;
+ }
+ }
+ }
+}
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushTree.cs.meta b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushTree.cs.meta
new file mode 100644
index 00000000000..b3c8217c5cb
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrush/SceneBrushTree.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: aa468074512439243a7e5a6df417772a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs b/ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs
new file mode 100644
index 00000000000..c9060169d74
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs
@@ -0,0 +1,43 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+
+public class SceneBrushHelper
+{
+ private const string SCENE_BRUSH_PATH = "Assets/Art/Scene/SceneBrush/Brush/Editor";
+
+ private static List _allBrushes;
+
+ public static List AllBrushes
+ {
+ get
+ {
+ if (_allBrushes == null)
+ {
+ RefreshAllBrush();
+ }
+
+ return _allBrushes;
+ }
+ }
+
+ public static void RefreshAllBrush()
+ {
+ _allBrushes = _allBrushes ?? new();
+ _allBrushes.Clear();
+ var guids = AssetDatabase.FindAssets("t:SceneBrush", new[] { SCENE_BRUSH_PATH });
+ foreach (var guid in guids)
+ {
+ var path = AssetDatabase.GUIDToAssetPath(guid);
+ var brush = AssetDatabase.LoadAssetAtPath(path);
+ _allBrushes.Add(brush);
+ }
+ }
+
+ public static SceneBrush GetSceneBrushByPrefab(GameObject prefab)
+ {
+ return AllBrushes.FirstOrDefault(brush => brush.prefab == prefab);
+ }
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs.meta b/ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs.meta
new file mode 100644
index 00000000000..bc25d986d53
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/SceneBrushHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 876f74ed02f7bfe4da0c693393216e81
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Editor/Scene/TreeUtil.cs b/ProjectNLD/Assets/Editor/Scene/TreeUtil.cs
new file mode 100644
index 00000000000..6868725c05b
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/TreeUtil.cs
@@ -0,0 +1,80 @@
+using System.Collections;
+using System.Collections.Generic;
+using SRF;
+using UnityEditor;
+using UnityEngine;
+
+public static class TreeUtil
+{
+ private const string TREE_OPAQUE_SHADER = "Assets/Code/Shaders/Scene/NLD_Scene_Opaque.shader";
+
+ [MenuItem("Assets/处理树资源")]
+ private static void PostProcessTree()
+ {
+ var selectedObj = Selection.activeGameObject;
+ if (selectedObj != null && EditorUtility.IsPersistent(selectedObj))
+ {
+ PostProcessTree(selectedObj);
+ }
+ }
+
+ //树是从Tree Creator生成的,目前Unity已经不支持了,需要将其中无用的资源删除并且新建材质
+ public static void PostProcessTree(GameObject tree)
+ {
+ if (tree.GetComponent() == null)
+ {
+ Debug.LogError($"当前对象上没有Tree组件,请确认{tree.name}是树!");
+ EditorGUIUtility.PingObject(tree);
+ return;
+ }
+
+ CreateOpaqueMaterial(tree);
+ RemoveUnUseComponent(tree);
+ RemoveTreeUselessSubAsset(tree);
+ EditorUtility.SetDirty(tree);
+ AssetDatabase.Refresh();
+ Debug.Log("处理成功!");
+ }
+
+ //为树创建不透明材质
+ private static void CreateOpaqueMaterial(GameObject tree)
+ {
+ var opaqueShader = AssetDatabase.LoadAssetAtPath(TREE_OPAQUE_SHADER);
+ if (opaqueShader == null)
+ {
+ Debug.LogError($"找不到shader:{TREE_OPAQUE_SHADER}");
+ return;
+ }
+
+ var mats = MaterialUtil.ReplaceMaterialOnGameObject(tree, opaqueShader);
+ mats[0].name = "tree_branch";
+ mats[1].name = "tree_leaves";
+ AssetDatabase.AddObjectToAsset(mats[0],tree);
+ AssetDatabase.AddObjectToAsset(mats[1],tree);
+ }
+
+ //移除tree组件
+ private static void RemoveUnUseComponent(GameObject tree)
+ {
+ var treeComponent = tree.GetComponent();
+ Object.DestroyImmediate(treeComponent, true);
+ }
+
+ //删除无用资源
+ private static void RemoveTreeUselessSubAsset(GameObject tree)
+ {
+ var assetPath = AssetDatabase.GetAssetPath(tree);
+ if (string.IsNullOrEmpty(assetPath))
+ return;
+ var allAssets = AssetDatabase.LoadAllAssetsAtPath(assetPath);
+ for (int i = allAssets.Length - 1; i >= 0; i--)
+ {
+ var asset = allAssets[i];
+ var assetName = asset.name.ToLower();
+ if (AssetDatabase.IsSubAsset(asset) && (assetName.Contains("optimized") || assetName.Contains("tree data")))
+ {
+ AssetDatabase.RemoveObjectFromAsset(asset);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Editor/Scene/TreeUtil.cs.meta b/ProjectNLD/Assets/Editor/Scene/TreeUtil.cs.meta
new file mode 100644
index 00000000000..5ea28461767
--- /dev/null
+++ b/ProjectNLD/Assets/Editor/Scene/TreeUtil.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 57d79aad84df82d41ae7a579ff1d13f0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectNLD/Assets/Editor/Tools/EditorUtil.cs b/ProjectNLD/Assets/Editor/Tools/EditorUtil.cs
index cc3c00ea177..f45749a33ef 100644
--- a/ProjectNLD/Assets/Editor/Tools/EditorUtil.cs
+++ b/ProjectNLD/Assets/Editor/Tools/EditorUtil.cs
@@ -14,6 +14,8 @@ using UnityEngine;
using System.IO;
using System.Diagnostics;
using System.Xml;
+using Debug = UnityEngine.Debug;
+using Random = UnityEngine.Random;
public static class EditorUtil
{
@@ -366,5 +368,39 @@ public static class EditorUtil
return finalPath;
}
-
+
+ //调用此函数可以保证你保存的asset的路径不会覆盖到其他asset,此函数会自动给asset重命名,所以限制是你不能将asset的名字作为你逻辑的数据
+ public static void CreateAnUniqueAsset(UnityEngine.Object asset, string path)
+ {
+ if (asset == null || string.IsNullOrEmpty(path))
+ {
+ Debug.LogError("输入参数不合法!");
+ return;
+ }
+
+ var savePath = GetAssetUniquePath(path, out var assetName);
+ asset.name = assetName;
+ AssetDatabase.CreateAsset(asset, savePath);
+ }
+
+ ///
+ /// 获取一个唯一的路径用于保存asset,假设传入的路径已经存在,则自动生成一个新的
+ ///
+ /// 尝试保存的路径
+ /// 第一个string是唯一路径,第二个string是asset的新名字
+ public static string GetAssetUniquePath(string assetPath, out string assetName)
+ {
+ assetName = Path.GetFileNameWithoutExtension(assetPath);
+ var extension = Path.GetExtension(assetPath);
+ var dir = Path.GetDirectoryName(assetPath);
+ var savedAsset = AssetDatabase.LoadAssetAtPath(assetPath);
+ if (savedAsset == null)
+ {
+ return assetPath;
+ }
+
+ assetName = $"{assetName}_{Random.Range(0, 10000)}";
+ var newAssetPath = $"{dir}/{assetName}{extension}";
+ return GetAssetUniquePath(newAssetPath, out assetName);
+ }
}
\ No newline at end of file
diff --git a/ProjectNLD/Assets/Scenes/Levels/Level_Tree/Level_Trees.unity b/ProjectNLD/Assets/Scenes/Levels/Level_Tree/Level_Trees.unity
index 1e682a13680..31209d3ee2e 100644
--- a/ProjectNLD/Assets/Scenes/Levels/Level_Tree/Level_Trees.unity
+++ b/ProjectNLD/Assets/Scenes/Levels/Level_Tree/Level_Trees.unity
@@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ m_IndirectSpecularColor: {r: 0.12731749, g: 0.13414757, b: 0.1210787, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
@@ -625,6 +625,51 @@ MonoBehaviour:
regions:
- positions: da000000db000000dc000000dd000000f6000000f5000000f4000000c0000000c1000000c2000000a8000000a7000000a6000000bf000000d9000000f30000000e0100000f01000010010000
initialCameraPosition: {x: 8, y: 11}
+--- !u!1 &80024553
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 80024554}
+ - component: {fileID: 80024555}
+ m_Layer: 0
+ m_Name: SceneManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &80024554
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 80024553}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 47.29607, y: 0.90512615, z: 14.606123}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &80024555
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 80024553}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 46398fcea7ee9e54894dfc4e5364d137, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _sceneObjects: []
--- !u!1 &482223122
GameObject:
m_ObjectHideFlags: 0
@@ -944,7 +989,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
maxCellsSqrt: 100
- _isDirty: 0
+ _isDirty: 1
mouseIsOver: 1
newInHierarchy: 0
_terrain: {fileID: 0}
@@ -5091,74 +5136,6 @@ Transform:
m_Children: []
m_Father: {fileID: 6361149766305631761}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1001 &2234429682673140914
-PrefabInstance:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_Modification:
- serializedVersion: 3
- m_TransformParent: {fileID: 3795476585137515725}
- m_Modifications:
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalPosition.x
- value: -4.91
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalPosition.y
- value: -0.00000035762787
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalPosition.z
- value: 36.38
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalRotation.w
- value: 1
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalRotation.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalRotation.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalRotation.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalEulerAnglesHint.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalEulerAnglesHint.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_LocalEulerAnglesHint.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 1261262978292087713, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- propertyPath: m_Name
- value: tree3 (23)
- objectReference: {fileID: 0}
- m_RemovedComponents: []
- m_RemovedGameObjects: []
- m_AddedGameObjects: []
- m_AddedComponents: []
- m_SourcePrefab: {fileID: 100100000, guid: 5c1f70249db1c48498ae0051ab23de31, type: 3}
--- !u!1 &2250153011520707945
GameObject:
m_ObjectHideFlags: 0
@@ -6659,12 +6636,6 @@ Transform:
m_Children: []
m_Father: {fileID: 5756968324359753022}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &3773390570170516250 stripped
-Transform:
- m_CorrespondingSourceObject: {fileID: 14590638047720827, guid: 5c1f70249db1c48498ae0051ab23de31,
- type: 3}
- m_PrefabInstance: {fileID: 2234429682673140914}
- m_PrefabAsset: {fileID: 0}
--- !u!4 &3776174004523833170
Transform:
m_ObjectHideFlags: 0
@@ -6698,7 +6669,6 @@ Transform:
m_Children:
- {fileID: 4483834804946207631}
- {fileID: 8545809471813741351}
- - {fileID: 3773390570170516250}
m_Father: {fileID: 482223123}
m_LocalEulerAnglesHint: {x: 0, y: 78.52, z: 0}
--- !u!1 &3814670437389299295
@@ -14406,3 +14376,4 @@ SceneRoots:
- {fileID: 1747868970}
- {fileID: 66431737}
- {fileID: 986161228}
+ - {fileID: 80024554}
diff --git a/ProjectNLD/Assets/Scenes/Levels/Template/LevelDefault/LevelDefault.unity b/ProjectNLD/Assets/Scenes/Levels/Template/LevelDefault/LevelDefault.unity
index a8f10124162..13bbeb66c21 100644
--- a/ProjectNLD/Assets/Scenes/Levels/Template/LevelDefault/LevelDefault.unity
+++ b/ProjectNLD/Assets/Scenes/Levels/Template/LevelDefault/LevelDefault.unity
@@ -123,6 +123,50 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
+--- !u!1 &45959904
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 45959906}
+ - component: {fileID: 45959905}
+ m_Layer: 0
+ m_Name: SceneManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &45959905
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 45959904}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 46398fcea7ee9e54894dfc4e5364d137, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!4 &45959906
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 45959904}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 47.29607, y: 0.90512615, z: 14.606123}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &66431736
GameObject:
m_ObjectHideFlags: 0
@@ -170,7 +214,7 @@ MonoBehaviour:
_camera: {fileID: 1846858571}
_groundMaterial: {fileID: 0}
_mapScale: {x: 52.78, y: 26.15}
- _gridWidthHeight: {x: 0, y: 0}
+ _gridWidthHeight: {x: 2, y: 2}
initialCameraPosition: {x: 0, y: 0}
_mapDataJson: {fileID: 0}
_mapData:
@@ -1084,3 +1128,4 @@ SceneRoots:
- {fileID: 1747868970}
- {fileID: 66431737}
- {fileID: 986161228}
+ - {fileID: 45959906}