From 54fad068f41ba7b0d2f16699a3f774be2a0d84e9 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 14 二月 2019 12:02:50 +0800
Subject: [PATCH] 3335 配置表读取重构。

---
 Assets/Editor/Actor/ModelResourcesBuilder.cs |  108 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 80 insertions(+), 28 deletions(-)

diff --git a/Assets/Editor/Actor/ModelResourcesBuilder.cs b/Assets/Editor/Actor/ModelResourcesBuilder.cs
index 59586af..00ea869 100644
--- a/Assets/Editor/Actor/ModelResourcesBuilder.cs
+++ b/Assets/Editor/Actor/ModelResourcesBuilder.cs
@@ -1,12 +1,12 @@
-锘縰sing TableConfig;
+锘�
 using UnityEngine;
 using UnityEditor;
 
 public class ModelResourcesBuilder : ResourcesBuilder
 {
-    public void BuildModelRes(int id)
+    public void BuildModelRes(int id, bool isHighMesh = false)
     {
-        ModelResConfig _modelRes = Config.Instance.Get<ModelResConfig>(id);
+        ModelResConfig _modelRes = ModelResConfig.Get(id);
         if (_modelRes == null)
         {
             Debug.LogWarningFormat("瑕佺敓鎴愮殑ModelRes璧勬簮id: {0} 骞朵笉瀛樺湪浜庨厤缃〃涓�, 璇风‘璁ゆ槸鍚﹀~鍐欐湁閿�.", id);
@@ -15,62 +15,70 @@
         switch ((E_ModelResType)_modelRes.Type)
         {
             case E_ModelResType.Suit:
-                BuildClothes(id);
+                BuildClothes(id, isHighMesh);
                 break;
             case E_ModelResType.Wing:
-                BuildWing(id);
+                BuildWing(id, isHighMesh);
                 break;
             case E_ModelResType.Weapon:
-                BuildWeapon(id);
+                BuildWeapon(id, isHighMesh);
                 break;
             case E_ModelResType.Horse:
-                BuildHorse(id);
+                BuildHorse(id, isHighMesh);
                 break;
             case E_ModelResType.Secondary:
-                BuildSecondary(id);
+                BuildSecondary(id, isHighMesh);
+                break;
+            case E_ModelResType.Hand:
+                BuildHand(id, isHighMesh);
                 break;
         }
     }
 
-    public void BuildClothes(int id)
+    public void BuildClothes(int id, bool isHighMesh)
     {
         BuildAnimationClip(id);
         BuildAnimatorController(id, "Temple_AnimatorController_Hero", "animatorBuildConfig");
-        BuildPrefab(id, InstanceResourcesLoader.raceSuffix);
+        BuildPrefab(id, InstanceResourcesLoader.raceSuffix, isHighMesh);
     }
 
-    public void BuildWeapon(int id)
+    public void BuildWeapon(int id, bool isHighMesh)
     {
-        BuildPrefab(id, InstanceResourcesLoader.weaponSuffix);
+        BuildPrefab(id, InstanceResourcesLoader.weaponSuffix, isHighMesh);
     }
 
-    public void BuildSecondary(int id)
+    public void BuildSecondary(int id, bool isHighMesh)
     {
-        BuildPrefab(id, InstanceResourcesLoader.secondarySuffix);
+        BuildPrefab(id, InstanceResourcesLoader.secondarySuffix, isHighMesh);
     }
 
-    public void BuildHorse(int id)
+    public void BuildHand(int id, bool isHighMesh)
+    {
+        BuildPrefab(id, InstanceResourcesLoader.handSuffix, isHighMesh);
+    }
+
+    public void BuildHorse(int id, bool isHighMesh)
     {
         BuildAnimationClip(id);
         BuildAnimatorController(id, "Temple_AnimatorController_Horse", "animatorBuildConfig");
-        BuildPrefab(id, InstanceResourcesLoader.horseSuffix);
+        BuildPrefab(id, InstanceResourcesLoader.horseSuffix, isHighMesh);
     }
 
-    public void BuildWing(int id)
+    public void BuildWing(int id, bool isHighMesh)
     {
         BuildAnimationClip(id);
         BuildAnimatorController(id, "Temple_AnimatorController_Wing", "animatorBuildConfig_Wing");
-        BuildPrefab(id, InstanceResourcesLoader.wingSuffix);
+        BuildPrefab(id, InstanceResourcesLoader.wingSuffix, isHighMesh);
     }
 
-    private void BuildPrefab(int id, string suffix)
+    private void BuildPrefab(int id, string suffix, bool isHighMesh = false)
     {
         if (!IsBuildPrefab)
         {
             return;
         }
 
-        ModelResConfig _modelRes = Config.Instance.Get<ModelResConfig>(id);
+        ModelResConfig _modelRes = ModelResConfig.Get(id);
         string _path = _modelRes.ResourcesName;
         string _resName = _modelRes.ResourcesName;
         if (_path.IndexOf('/') != -1)
@@ -79,7 +87,33 @@
             _path = _path.Substring(0, _modelRes.ResourcesName.IndexOf('/'));
         }
 
-        BuildPrefab(_path, _resName, suffix);
+        if (suffix.Equals(InstanceResourcesLoader.raceSuffix))
+        {
+            HandleMaterial(_path, _resName, _modelRes.Material_Fight_Normal);
+            HandleMaterial(_path, _resName, _modelRes.Material_UI_Normal);
+            HandleMaterial(_path, _resName, _modelRes.Material_Fight_Suit);
+            HandleMaterial(_path, _resName, _modelRes.Material_UI_Suit);
+        }
+
+        BuildPrefab(_path, _resName, suffix, null, isHighMesh);
+    }
+
+    public static void HandleMaterial(string path, string bunedleName, string assetName)
+    {
+        if (string.IsNullOrEmpty(assetName))
+        {
+            return;
+        }
+
+        string _originalePath = string.Format("Assets/ART/Role/{0}/Materials/{1}.mat", path, assetName);
+        var _old = AssetDatabase.LoadAssetAtPath<Material>(_originalePath);
+        var _material = Object.Instantiate(_old);
+        AssetDatabase.CreateAsset(_material, "Assets/ResourcesOut/Mob/" + path + "/Materials/" + assetName + ".mat");
+        var _importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(_material));
+        _importer.assetBundleName = ResourcesPath.MOB_FOLDER_NAME
+            + (InstanceResourcesLoader.raceSuffix + bunedleName).ToLower();
+
+        EditorUtility.SetDirty(_material);
     }
 
     public static void BuildAnimationClip(int id)
@@ -89,7 +123,7 @@
             return;
         }
 
-        ModelResConfig _modelRes = Config.Instance.Get<ModelResConfig>(id);
+        ModelResConfig _modelRes = ModelResConfig.Get(id);
         string _path = _modelRes.ResourcesName;
         if (_path.IndexOf('/') != -1)
         {
@@ -101,12 +135,12 @@
 
     public static void BuildAnimatorController(int id, string templeName, string configName)
     {
-        if (!IsBuildAnimatorController)
+        if (!IsBuildAnimatorController && !IsBuildAnimatorUIController)
         {
             return;
         }
 
-        ModelResConfig _modelRes = Config.Instance.Get<ModelResConfig>(id);
+        ModelResConfig _modelRes = ModelResConfig.Get(id);
         string _path = _modelRes.ResourcesName;
         if (_path.IndexOf('/') != -1)
         {
@@ -114,10 +148,22 @@
         }
 
         BuildAnimatorController(_path, templeName, configName);
+
+        if (ResourcesBuilder.IsBuildAnimatorUIController)
+        {
+            BuildAnimatorController(_path, "Temple_AnimatorController_UI", "animatorBuildConfig", null);
+        }
     }
 
     protected override void OnSetupRenderer(string path, string resName, ref Renderer renderer)
-    {
+    {//Assets/ART/Role/A_Zs_Sb/Materials/A_Zs05_Sb.mat
+        string _originalPath = path;
+        
+        if (path.EndsWith("_Sb"))
+        {
+            path = path.Replace("_Sb", "");
+            resName = resName.Replace("_Sb", "");
+        }
         string _materialPath = string.Format("Assets/ART/Role/{0}/Materials/{1}.mat", path, resName);
 
         Material _material = AssetDatabase.LoadAssetAtPath<Material>(_materialPath);
@@ -128,9 +174,15 @@
 
         // 璁剧疆涓轰笉鎺ュ彈闃村奖
         renderer.receiveShadows = false;
-
-        renderer.materials = new Material[0];
-        renderer.sharedMaterial = AssetDatabase.LoadAssetAtPath<Material>(_materialPath);
+        if (_originalPath.Equals("A_Zs") || _originalPath.Equals("A_Fs"))
+        {
+            renderer.material = renderer.sharedMaterial = null;
+            renderer.materials = renderer.sharedMaterials = new Material[0];
+        }
+        else
+        {
+            renderer.material = renderer.sharedMaterial = AssetDatabase.LoadAssetAtPath<Material>(_materialPath);
+        }
 
         // 杩欓噷鏄缈呰唨鐨勭壒娈婂鐞�
         Transform _parent = renderer.transform.parent;

--
Gitblit v1.8.0