From bf3359abacfaece5e8c779ccd9e91b21d12af2ca Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期六, 27 四月 2019 15:00:42 +0800
Subject: [PATCH] 3335 BossShow添加支持当前角色模型

---
 System/BossShow/ShowActor.cs |   64 ++++++++++++++++++++++++++++----
 1 files changed, 56 insertions(+), 8 deletions(-)

diff --git a/System/BossShow/ShowActor.cs b/System/BossShow/ShowActor.cs
index 72d8741..9a67f3a 100644
--- a/System/BossShow/ShowActor.cs
+++ b/System/BossShow/ShowActor.cs
@@ -50,8 +50,16 @@
         this.m_Index = index;
         this.m_Instance = instanceid;
 
-        m_NpcCfg = NPCConfig.Get(npcID);
-        Appear(index, _actorShowConfig);
+        if (npcId == 1)
+        {
+            Appear(index, _actorShowConfig);
+        }
+        else
+        {
+            m_NpcCfg = NPCConfig.Get(npcID);
+            Appear(index, _actorShowConfig);
+        }
+        
     }
 
     public void Appear(int index, ActorShowConfig _actorShowConfig)
@@ -60,10 +68,21 @@
         this.actorShowModel = _actorShowConfig;
         if (m_Model == null)
         {
-            m_Model = GameObjectPoolManager.Instance.RequestNpcGameObject(m_NpcId);
-            m_Animator = m_Model.AddMissingComponent<Animator>();
-            m_CacheLayer = m_Model.layer;
-            m_Model.gameObject.SetLayer(LayerUtility.BossShow, true);
+            if (npcId != 1)
+            {
+                m_Model = GameObjectPoolManager.Instance.RequestNpcGameObject(m_NpcId);
+                m_Animator = m_Model.AddMissingComponent<Animator>();
+                m_CacheLayer = m_Model.layer;
+                m_Model.gameObject.SetLayer(LayerUtility.BossShow, true);
+            }
+            else
+            {
+                var hero = PlayerDatas.Instance.hero;
+                m_Model = GameObject.Instantiate(hero.ClothedModel) as GameObject;
+                m_Animator = m_Model.AddMissingComponent<Animator>();
+                m_CacheLayer = m_Model.layer;
+                m_Model.gameObject.SetLayer(LayerUtility.BossShow, true);
+            }
         }
         m_Model.SetActive(true);
         m_Model.transform.position = new Vector3((float)actorShowModel.PosX[m_Index] / 200, 0, (float)actorShowModel.PosY[m_Index] / 200);
@@ -85,7 +104,21 @@
         }
 
         m_Model.transform.rotation = MathUtility.GetClientRotationFromAngle(actorShowModel.NpcFace[m_Index]);
-        var controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerShowSuffix, actorShowModel.mob[m_Index]);
+        RuntimeAnimatorController controller = null;
+        if (npcId == 1)
+        {
+            var job = PlayerDatas.Instance.baseData.Job;
+            var _controllerName = "A_Zs";
+            if (job == 2)
+            {
+                _controllerName = "A_Fs";
+            }
+            controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerShowSuffix, _controllerName);
+        }
+        else
+        {
+            controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerShowSuffix, actorShowModel.mob[m_Index]);
+        }
         if (controller != null)
         {
             m_CacheAnimator = m_Animator.runtimeAnimatorController;
@@ -116,7 +149,7 @@
             }
         }
         RequestCircleShadow();
-        if (shadow)
+        if (shadow && m_NpcId != 1)
         {
             shadow.transform.localScale = m_NpcCfg.IsBoss == 1 ? Vector3.one * 3 : Vector3.one;
             shadow.gameObject.SetLayer(LayerUtility.BossShow, true);
@@ -172,4 +205,19 @@
 
         RecyleCircleShadow();
     }
+
+    public void Destroy()
+    {
+        if (m_Model != null)
+        {
+            GameObject.Destroy(m_Model);
+            m_Model = null;
+        }
+        if (sfxController != null)
+        {
+            SFXPlayUtility.Instance.Release(sfxController);
+            sfxController = null;
+        }
+        RecyleCircleShadow();
+    }
 }

--
Gitblit v1.8.0