| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- local PlayerEntityView = class("PlayerEntityView", require("EntityView"))
- local RoleViewSystem = require("RoleViewSystem")
- -- local UIPlayerView = require("UIPlayerView")
- function PlayerEntityView:ctor()
- self.moveState = 0
- self.roleViewSystem = RoleViewSystem:new()
- self.isUpdate = false
- end
- function PlayerEntityView:Dispose()
- if self.roleViewSystem then
- self.roleViewSystem:Dispose()
- end
- self.roleViewSystem = nil
- self.moveState = nil
- self.isUpdate = nil
- PlayerEntityView.super.Dispose(self)
- end
- function PlayerEntityView:EnterWorld()
- self.isUpdate = false
- PlayerEntityView.super.EnterWorld(self)
- end
- function PlayerEntityView:ExitWorld()
- -- if self.uiPlayerView then self.uiPlayerView:Dispose() end
- -- self.uiPlayerView = nil
- -- local uiAssetName = Constants.UI3DPath .. "/MainCity/UIPlayerView"
- -- if self.uiGo then ManagerContainer.ResMgr:RecycleGO(nil, uiAssetName, self.uiGo) end
- -- self.uiGo = nil
- if self.shadowGo then ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath, 'Common/FX_Yinying', self.shadowGo) end
- self.shadowGo = nil
- if self.animator then self.animator = nil end
- if self.roleViewSystem then self.roleViewSystem:Recycle() end
- PlayerEntityView.super.ExitWorld(self)
- self.isUpdate = false
- end
- function PlayerEntityView:CollectPreloadAssets()
- PlayerEntityView.super.CollectPreloadAssets(self)
- if self.roleViewSystem then self.roleViewSystem:StatisticsPreloadAssets(self.loadSystem) end
- -- local uiAssetName = Constants.UI3DPath .. "/MainCity/UIPlayerView"
- self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.EffectPath, 'Common/FX_Yinying')
- -- self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, uiAssetName)
- end
- function PlayerEntityView:InitGenerateView()
- -- 创建Model
- local modelGo = self.roleViewSystem:Create()
- local modelTrans = modelGo.transform
- modelTrans:SetParent(self.avatarTrans)
- modelTrans.localPosition = Vector3.zero
- modelTrans.localRotation = Quaternion.identity
- -- 删除Prefab上的默认的碰撞体 (临时)
- local colliders = modelGo:GetComponentsInChildren(typeof(UnityEngine.Collider))
- for i = 0, colliders.Length - 1 do
- UnityEngine.Component.Destroy(colliders[i])
- end
- -- 添加阴影
- local shadowGo = ManagerContainer.ResMgr:GetGoFromPool(Constants.EffectPath, 'Common/FX_Yinying')
- local shadowTrans = shadowGo.transform
- shadowTrans:SetParent(self.transform)
- shadowTrans.localPosition = Vector3.zero
- shadowTrans.localRotation = Quaternion.identity
- -- local uipoint = modelTrans:Find("ui_point")
- -- local uiPosition = uipoint.position
- -- 添加UI
- -- local uiAssetName = Constants.UI3DPath .. "/MainCity/UIPlayerView"
- -- local uiGo = ManagerContainer.ResMgr:GetGoFromPool(nil, uiAssetName)
- -- local uiTrans = uiGo.transform
- -- uiTrans:SetParent(self.transform)
- -- uiTrans.position = uiPosition
- -- uiTrans.rotation = Quaternion.identity
- -- local uiPlayerView = UIPlayerView:new(uiTrans, ManagerContainer.LuaMainCityMgr:GetMainCamera(), self.uid)
- self.animator = modelGo:GetComponent(Enum.TypeInfo.Animator)
- self.shadowGo = shadowGo
- -- self.uiGo = uiGo
- -- self.uiPlayerView = uiPlayerView
- if self.isUpdate then
- self:RefreshGenerateView()
- end
- end
- function PlayerEntityView:RefreshGenerateView()
- self.isUpdate = false
- end
- function PlayerEntityView:ForceRefreshGenerateView()
- self.isUpdate = true
- if self.isCreate then
- self:RefreshGenerateView()
- else
- self.loadSystem:Cancel()
- self:CollectPreloadAssets()
- self:BeginLoadAssets()
- end
- end
- function PlayerEntityView:GetName()
- return tostring(self.uid)
- end
- function PlayerEntityView:GetParent()
- return ManagerContainer.LuaGuildLobbyMgr:GetPlayerContainer()
- end
- function PlayerEntityView:SetPosition(pos)
- if self.pos:Equals(pos) then return end
- self.pos:Set(pos.x, pos.y, pos.z)
- if not self.transform then return end
- self.transform.position = self.pos
- end
- function PlayerEntityView:SetRotation(rot)
- if Quaternion.Equals(self.rot, rot) then return end
- self.rot:Set(rot.x, rot.y, rot.z, rot.w)
- if not self.avatarTrans then return end
- self.avatarTrans.rotation = self.rot
- end
- function PlayerEntityView:SetMoveState(moveState)
- if self.moveState == moveState then return end
- self.moveState = moveState
- self:_SetMoveState(moveState)
- end
- function PlayerEntityView:_SetMoveState(moveState)
- if not self.animator then return end
- if moveState == 1 then
- self.animator:CrossFade("f_walk", 0.1)
- elseif moveState == 2 then
- self.animator:CrossFade("f_run_1", 0.1)
- else
- self.animator:CrossFade("f_idle", 0.1)
- end
- end
- return PlayerEntityView
|