PlayerEntityView.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. local PlayerEntityView = class("PlayerEntityView", require("EntityView"))
  2. local RoleViewSystem = require("RoleViewSystem")
  3. -- local UIPlayerView = require("UIPlayerView")
  4. function PlayerEntityView:ctor()
  5. self.moveState = 0
  6. self.roleViewSystem = RoleViewSystem:new()
  7. self.isUpdate = false
  8. end
  9. function PlayerEntityView:Dispose()
  10. if self.roleViewSystem then
  11. self.roleViewSystem:Dispose()
  12. end
  13. self.roleViewSystem = nil
  14. self.moveState = nil
  15. self.isUpdate = nil
  16. PlayerEntityView.super.Dispose(self)
  17. end
  18. function PlayerEntityView:EnterWorld()
  19. self.isUpdate = false
  20. PlayerEntityView.super.EnterWorld(self)
  21. end
  22. function PlayerEntityView:ExitWorld()
  23. -- if self.uiPlayerView then self.uiPlayerView:Dispose() end
  24. -- self.uiPlayerView = nil
  25. -- local uiAssetName = Constants.UI3DPath .. "/MainCity/UIPlayerView"
  26. -- if self.uiGo then ManagerContainer.ResMgr:RecycleGO(nil, uiAssetName, self.uiGo) end
  27. -- self.uiGo = nil
  28. if self.shadowGo then ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath, 'Common/FX_Yinying', self.shadowGo) end
  29. self.shadowGo = nil
  30. if self.animator then self.animator = nil end
  31. if self.roleViewSystem then self.roleViewSystem:Recycle() end
  32. PlayerEntityView.super.ExitWorld(self)
  33. self.isUpdate = false
  34. end
  35. function PlayerEntityView:CollectPreloadAssets()
  36. PlayerEntityView.super.CollectPreloadAssets(self)
  37. if self.roleViewSystem then self.roleViewSystem:StatisticsPreloadAssets(self.loadSystem) end
  38. -- local uiAssetName = Constants.UI3DPath .. "/MainCity/UIPlayerView"
  39. self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.EffectPath, 'Common/FX_Yinying')
  40. -- self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, uiAssetName)
  41. end
  42. function PlayerEntityView:InitGenerateView()
  43. -- 创建Model
  44. local modelGo = self.roleViewSystem:Create()
  45. local modelTrans = modelGo.transform
  46. modelTrans:SetParent(self.avatarTrans)
  47. modelTrans.localPosition = Vector3.zero
  48. modelTrans.localRotation = Quaternion.identity
  49. -- 删除Prefab上的默认的碰撞体 (临时)
  50. local colliders = modelGo:GetComponentsInChildren(typeof(UnityEngine.Collider))
  51. for i = 0, colliders.Length - 1 do
  52. UnityEngine.Component.Destroy(colliders[i])
  53. end
  54. -- 添加阴影
  55. local shadowGo = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath, 'Common/FX_Yinying')
  56. local shadowTrans = shadowGo.transform
  57. shadowTrans:SetParent(self.transform)
  58. shadowTrans.localPosition = Vector3.zero
  59. shadowTrans.localRotation = Quaternion.identity
  60. -- local uipoint = modelTrans:Find("ui_point")
  61. -- local uiPosition = uipoint.position
  62. -- 添加UI
  63. -- local uiAssetName = Constants.UI3DPath .. "/MainCity/UIPlayerView"
  64. -- local uiGo = ManagerContainer.ResMgr:GetGoFromPool(nil, uiAssetName)
  65. -- local uiTrans = uiGo.transform
  66. -- uiTrans:SetParent(self.transform)
  67. -- uiTrans.position = uiPosition
  68. -- uiTrans.rotation = Quaternion.identity
  69. -- local uiPlayerView = UIPlayerView:new(uiTrans, ManagerContainer.LuaMainCityMgr:GetMainCamera(), self.uid)
  70. self.animator = modelGo:GetComponent(Enum.TypeInfo.Animator)
  71. self.shadowGo = shadowGo
  72. -- self.uiGo = uiGo
  73. -- self.uiPlayerView = uiPlayerView
  74. if self.isUpdate then
  75. self:RefreshGenerateView()
  76. end
  77. end
  78. function PlayerEntityView:RefreshGenerateView()
  79. self.isUpdate = false
  80. end
  81. function PlayerEntityView:ForceRefreshGenerateView()
  82. self.isUpdate = true
  83. if self.isCreate then
  84. self:RefreshGenerateView()
  85. else
  86. self.loadSystem:Cancel()
  87. self:CollectPreloadAssets()
  88. self:BeginLoadAssets()
  89. end
  90. end
  91. function PlayerEntityView:GetName()
  92. return tostring(self.uid)
  93. end
  94. function PlayerEntityView:GetParent()
  95. return ManagerContainer.LuaGuildLobbyMgr:GetPlayerContainer()
  96. end
  97. function PlayerEntityView:SetPosition(pos)
  98. if self.pos:Equals(pos) then return end
  99. self.pos:Set(pos.x, pos.y, pos.z)
  100. if not self.transform then return end
  101. self.transform.position = self.pos
  102. end
  103. function PlayerEntityView:SetRotation(rot)
  104. if Quaternion.Equals(self.rot, rot) then return end
  105. self.rot:Set(rot.x, rot.y, rot.z, rot.w)
  106. if not self.avatarTrans then return end
  107. self.avatarTrans.rotation = self.rot
  108. end
  109. function PlayerEntityView:SetMoveState(moveState)
  110. if self.moveState == moveState then return end
  111. self.moveState = moveState
  112. self:_SetMoveState(moveState)
  113. end
  114. function PlayerEntityView:_SetMoveState(moveState)
  115. if not self.animator then return end
  116. if moveState == 1 then
  117. self.animator:CrossFade("f_walk", 0.1)
  118. elseif moveState == 2 then
  119. self.animator:CrossFade("f_run_1", 0.1)
  120. else
  121. self.animator:CrossFade("f_idle", 0.1)
  122. end
  123. end
  124. return PlayerEntityView