1612 lines
51 KiB
Plaintext
1612 lines
51 KiB
Plaintext
PhotographPanel = class("PhotographPanel", ContainerView)
|
|
autoImport("PhotographSingleFilterText")
|
|
autoImport("CarrierSubView")
|
|
autoImport("SceneRoleTopSymbol")
|
|
autoImport("FlyMessageView")
|
|
PhotographPanel.ViewType = UIViewType.FocusLayer
|
|
|
|
--聚焦
|
|
--任務拍照(景點 npc 固定點)
|
|
--普通、載具拍照 (景點)
|
|
|
|
|
|
PhotographPanel.FOCUS_VIEW_PORT_RANGE = {x={0.1,0.9},y={0.1,0.9}}
|
|
PhotographPanel.NEAR_FOCUS_DISTANCE = GameConfig.PhotographPanel and GameConfig.PhotographPanel.Near_Focus_Distance or 15
|
|
PhotographPanel.FAR_FOCUS_DISTANCE = GameConfig.PhotographPanel and GameConfig.PhotographPanel.Far_Focus_Distance or 40
|
|
-- PhotographPanel.TAKE_NEAR_FOCUS_DISTANCE = 15
|
|
PhotographPanel.ChangeCompositionDuration = 0.3
|
|
|
|
local PHOTOGRAPHER_StickArea = Rect(0,0,1,1)
|
|
|
|
PhotographPanel.taskCellRes = TaskCell
|
|
|
|
PhotographPanel.filterType ={
|
|
Text = 1,
|
|
Faction = 2,
|
|
Team = 3,
|
|
All = 4,
|
|
}
|
|
|
|
PhotographPanel.DefaultMode ={
|
|
SELFIE = 1,
|
|
PHOTOGRAPHER = 2,
|
|
}
|
|
|
|
PhotographPanel.TickType ={
|
|
Zoom = 1,
|
|
CheckFocus = 4,
|
|
CheckIfHasFocusCreature = 3,
|
|
CheckAnim = 5,
|
|
UpdateAxis = 2,
|
|
}
|
|
|
|
PhotographPanel.FocusStatus ={
|
|
Fit = 1,
|
|
Less = 2,
|
|
FarMore = 3,
|
|
}
|
|
|
|
PhotographPanel.PhotographMode ={
|
|
SELFIE = 1,
|
|
PHOTOGRAPHER = 2,
|
|
}
|
|
|
|
-- *顯示自己
|
|
-- *顯示隊友
|
|
-- *顯示公會
|
|
-- *顯示路人
|
|
-- *顯示魔物
|
|
-- *顯示NPC
|
|
-- *顯示界面[不勾選]
|
|
|
|
PhotographPanel.filters = {
|
|
{id=GameConfig.FilterType.PhotoFilter.Self},
|
|
{id=GameConfig.FilterType.PhotoFilter.Team},
|
|
{id=GameConfig.FilterType.PhotoFilter.Guild},
|
|
{id=GameConfig.FilterType.PhotoFilter.PassBy},
|
|
{id=GameConfig.FilterType.PhotoFilter.Monster},
|
|
{id=GameConfig.FilterType.PhotoFilter.Npc},
|
|
{id=GameConfig.FilterType.PhotoFilter.Text},
|
|
{id=FunctionSceneFilter.AllEffectFilter,text = ZhString.PhotoFilter_Effect},
|
|
{id=GameConfig.FilterType.PhotoFilter.PetTalk},
|
|
{id=GameConfig.FilterType.PhotoFilter.HunterPet},
|
|
}
|
|
|
|
local tempVector3 = LuaVector3.zero
|
|
local tempArray = {}
|
|
|
|
function PhotographPanel:Init()
|
|
self.compositionIndex = 1
|
|
self:initView()
|
|
self:initData()
|
|
self:addEventListener()
|
|
end
|
|
|
|
function PhotographPanel:changeTakeTypeBtnView( )
|
|
-- body
|
|
if(self.curPhotoMode == PhotographPanel.PhotographMode.SELFIE and self.hasLearnTakePicSkill)then
|
|
self:Show(self.takeTypeBtn)
|
|
else
|
|
self:Hide(self.takeTypeBtn)
|
|
end
|
|
-- printRed("changeTakeTypeBtnView",self.curPhotoMode,self.hasLearnTakePicSkill,PhotographPanel.PhotographMode.SELFIE)
|
|
end
|
|
|
|
function PhotographPanel:changeCameraDisView( )
|
|
-- body
|
|
if(self.curPhotoMode == PhotographPanel.PhotographMode.SELFIE and self.hasLearnChangeCameraSkill)then
|
|
self:Show(self.disScrollBar)
|
|
else
|
|
self:Hide(self.disScrollBar)
|
|
end
|
|
-- printRed("changeCameraDisView",self.curPhotoMode,self.hasLearnTakePicSkill,PhotographPanel.PhotographMode.SELFIE)
|
|
end
|
|
|
|
function PhotographPanel:initView( )
|
|
-- body
|
|
self.carrierSubView = self:AddSubView("CarrierSubView",CarrierSubView)
|
|
|
|
self.flyMessageView = self:AddSubView("FlyMessageView",FlyMessageView)
|
|
local filtersBg = self:FindChild("filterContentBg"):GetComponent(UISprite)
|
|
filtersBg.height = 49.15 * #PhotographPanel.filters+16
|
|
local girdView = self:FindChild("Grid"):GetComponent(UIGrid)
|
|
self.filterGridList = UIGridListCtrl.new(girdView,PhotographSingleFilterText,"PhotographSingleFilterText")
|
|
self.screenShotHelper = self.gameObject:GetComponent(ScreenShotHelper)
|
|
self.filterGridList:AddEventListener(MouseEvent.MouseClick,self.filterCellClick,self)
|
|
self.filterGridList:ResetDatas(PhotographPanel.filters)
|
|
|
|
self.filterBtn = self:FindChild("filterBtn")
|
|
self.quitBtn = self:FindChild("quitBtn")
|
|
self.takePicBtn = self:FindChild("takePicBtn")
|
|
|
|
self.fovScrollBar = self:FindChild("FovScrollBar")
|
|
self.fovScrollBarCpt = self:FindGO("BackGround",self.fovScrollBar):GetComponent(UICustomScrollBar)
|
|
|
|
self.disScrollBar = self:FindChild("DisScrollBar")
|
|
self.disScrollBarCpt = self:FindGO("BackGround",self.disScrollBar):GetComponent(UICustomScrollBar)
|
|
|
|
self.turnRightBtn = self:FindChild("turnRightBtn")
|
|
self.turnLeftBtn = self:FindChild("turnLeftBtn")
|
|
|
|
self.focusFrame = self:FindGO("focusFrame")
|
|
self.playRotating = self.focusFrame:GetComponent(BoxCollider)
|
|
|
|
self.photographResult = self:FindChild("photographResult")
|
|
self.whiteMask = self:FindChild("whiteMask")
|
|
|
|
self.focalLen = self:FindGO("focalLen")
|
|
self.focalLenLabel = self:FindGO("Label",self.focalLen):GetComponent(UILabel)
|
|
self:Hide(self.focalLen)
|
|
|
|
self.cameraDis = self:FindGO("Distance")
|
|
self.cameraDisLabel = self:FindGO("Label",self.cameraDis):GetComponent(UILabel)
|
|
self:Hide(self.cameraDis)
|
|
|
|
self.boliSp = self:FindComponent("boli", UISprite);
|
|
-- self.chatLabel=self:FindGO("chatLabel"):GetComponent(UILabel);
|
|
self:AddButtonEvent("filterBtn",nil)
|
|
|
|
-- self.watermarkLabel = self:FindGO("watermark"):GetComponent(UILabel)
|
|
|
|
self.emojiButton = self:FindGO("EmojiButton");
|
|
FunctionUnLockFunc.Me():RegisteEnterBtnByPanelID(PanelConfig.ChatEmojiView.id, self.emojiButton)
|
|
|
|
self.questPanel = self:FindGO("TaskQuestPanel")
|
|
|
|
self.takeTypeBtn = self:FindGO("takeTypeBtn")
|
|
self.callServentBtn = self:FindGO("callServentBtn")
|
|
self.servantEmojiButton = self:FindGO("ServantEmojiButton")
|
|
self:Hide(self.questPanel)
|
|
end
|
|
|
|
function PhotographPanel:initData( )
|
|
FunctionCameraEffect.Me():Pause()
|
|
-- body
|
|
self.cameraController = CameraController.Instance
|
|
if(not self.cameraController)then
|
|
printRed("cameraController is nil")
|
|
LeanTween.cancel(self.gameObject)
|
|
LeanTween.delayedCall(self.gameObject,0.1,function ( )
|
|
self:CloseSelf()
|
|
end)
|
|
return
|
|
end
|
|
local viewdata = self.viewdata.viewdata
|
|
if(viewdata)then
|
|
local id = viewdata.cameraId
|
|
if(id)then
|
|
printRed("PhotographPanel:from carrier cameraId:",id)
|
|
self.cameraId = id
|
|
end
|
|
end
|
|
self:checkQuest()
|
|
|
|
local skillid = GameConfig.PhotographAdSkill.copSkill
|
|
|
|
local skillData = Table_Skill[skillid]
|
|
|
|
if(skillData and SkillProxy.Instance:HasLearnedSkill(skillid))then
|
|
self.hasLearnTakePicSkill = true
|
|
end
|
|
|
|
skillid = GameConfig.PhotographAdSkill.cgDisSkill
|
|
|
|
skillData = Table_Skill[skillid]
|
|
|
|
if(skillData and SkillProxy.Instance:HasLearnedSkill(skillid))then
|
|
self.hasLearnChangeCameraSkill = true
|
|
end
|
|
|
|
self.channelNames=ChatRoomProxy.Instance.channelNames
|
|
|
|
Game.AreaTriggerManager:SetIgnore(true)
|
|
self:changeTurnBtnState(false)
|
|
self.focusSuccess = false
|
|
self.isShowFocalLen = false
|
|
self.hasNotifyServer = false
|
|
self.charid = nil
|
|
|
|
self.screenShotWidth = -1
|
|
self.screenShotHeight = 1080
|
|
self.textureFormat = TextureFormat.RGB24
|
|
self.texDepth = 24
|
|
self.antiAliasing = ScreenShot.AntiAliasing.None
|
|
|
|
self.photoSkillId = GameConfig.NewRole.flashskill
|
|
self.uiCm = NGUIUtil:GetCameraByLayername("SceneUI");
|
|
|
|
local servantID = Game.Myself.data.userdata:Get(UDEnum.SERVANTID)
|
|
if servantID ~= 0 then
|
|
self:Show(self.callServentBtn)
|
|
self:LoadServant()
|
|
else
|
|
self:Hide(self.callServentBtn)
|
|
end
|
|
|
|
self:initCameraData()
|
|
TimeTickManager.Me():CreateTick(0,100,self.updateScrollBar,self,PhotographPanel.TickType.Zoom)
|
|
TimeTickManager.Me():CreateTick(500,3000,self.checkIfHasFocusCreature,self,PhotographPanel.TickType.CheckIfHasFocusCreature)
|
|
|
|
TimeTickManager.Me():CreateTick(0,100,self.setTargetPositionAndSymbol,self,PhotographPanel.TickType.CheckFocus)
|
|
|
|
self.myId = Game.Myself.data.id
|
|
end
|
|
|
|
function PhotographPanel:checkQuest( )
|
|
-- body
|
|
-- self.viewdata.viewdata = {}
|
|
-- self.viewdata.viewdata.questData = QuestProxy.Instance:getQuestDataByIdAndType(40002)
|
|
if(self.viewdata.viewdata)then
|
|
self.questData = self.viewdata.viewdata.questData
|
|
-- printRed(self.questData)
|
|
if(self.questData)then
|
|
self.creatureId = self.questData.params.npc
|
|
self.questScenicSpotID = self.questData.params.spotId
|
|
local tarpos = self.questData.params.tarpos
|
|
if(not self.creatureId and tarpos)then
|
|
self.questTargetPosition = LuaVector3(tarpos[1],tarpos[2],tarpos[3])
|
|
end
|
|
local id = self.questData.params.cameraId
|
|
if(id)then
|
|
printRed("PhotographPanel:from quest cameraId:",id)
|
|
self.cameraId = id
|
|
end
|
|
self:showQuestTrace()
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:showQuestTrace( )
|
|
-- body
|
|
self:Show(self.questPanel)
|
|
local taskCell = self:FindGO("TaskCell")
|
|
local taskCellObj = Game.AssetManager_UI:CreateAsset(ResourcePathHelper.UICell("TaskQuestCell"), taskCell);
|
|
taskCellObj.transform.localPosition = LuaVector3.zero
|
|
local questCell = TaskQuestCell.new(taskCellObj)
|
|
questCell:AddEventListener(MouseEvent.MouseClick,self.questCellClick,self)
|
|
questCell:SetData(self.questData)
|
|
end
|
|
|
|
function PhotographPanel:questCellClick( )
|
|
-- body
|
|
-- printRed("PhotographPanel:questCellClick( )")
|
|
Game.InputManager.photograph:Exit()
|
|
-- self.cameraController:
|
|
self:setForceRotation()
|
|
if(self.curPhotoMode == PhotographPanel.PhotographMode.SELFIE)then
|
|
Game.InputManager.photograph:Enter(PhotographMode.SELFIE)
|
|
else
|
|
Game.InputManager.photograph:Enter(PhotographMode.PHOTOGRAPHER)
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:calFOVValue( zoom )
|
|
-- body
|
|
local value = 2*math.atan(21.635/zoom)*180/math.pi
|
|
return value
|
|
end
|
|
|
|
function PhotographPanel:calZoom( del )
|
|
-- body
|
|
local value = 21.635/math.tan(del/2/180*math.pi)
|
|
return value
|
|
end
|
|
|
|
function PhotographPanel:SetCompositionIndex(index)
|
|
self.compositionIndex = index
|
|
end
|
|
|
|
function PhotographPanel:MoveCompositionIndexToNext()
|
|
local index = self.compositionIndex + 1
|
|
if nil == self:GetComposition(index) then
|
|
index = 1
|
|
end
|
|
MsgManager.ShowMsgByIDTable(853, tostring(index))
|
|
self:SetCompositionIndex(index)
|
|
end
|
|
|
|
function PhotographPanel:GetComposition(index)
|
|
index = index or self.compositionIndex
|
|
if nil == self.cameraData or nil == self.cameraData.Composition then
|
|
return nil
|
|
end
|
|
return self.cameraData.Composition[index]
|
|
end
|
|
|
|
function PhotographPanel:ApplyComposition()
|
|
local composition = self:GetComposition()
|
|
if nil == composition then
|
|
return
|
|
end
|
|
if nil == self.cameraController then
|
|
return
|
|
end
|
|
|
|
local fo = self.cameraController.targetFocusOffset
|
|
local fvp = self.cameraController.targetFocusViewPort
|
|
|
|
fvp.x = composition[1]
|
|
fvp.y = composition[2]
|
|
|
|
self.cameraController:FocusTo(fo, fvp, PhotographPanel.ChangeCompositionDuration, nil)
|
|
end
|
|
|
|
function PhotographPanel:initCameraData( )
|
|
-- body
|
|
self.originFovMin = nil
|
|
self.originFovMax = nil
|
|
self.originAllowLowerThanFocus = nil
|
|
if(not self.cameraId)then
|
|
local currentMap = SceneProxy.Instance.currentScene
|
|
if(currentMap)then
|
|
self.cameraId = Table_Map[currentMap.mapID].Camera
|
|
end
|
|
end
|
|
if(not self.cameraId)then
|
|
self.cameraId = 1
|
|
end
|
|
self.cameraData = Table_Camera[self.cameraId]
|
|
if(not self.cameraData or not self.cameraController)then
|
|
return
|
|
end
|
|
|
|
local layer = LayerMask.NameToLayer("UI");
|
|
if(layer)then
|
|
self.uiCemera = UICamera.FindCameraForLayer(layer)
|
|
if(self.uiCemera)then
|
|
self.originUiCmTouchDragThreshold = self.uiCemera.touchDragThreshold
|
|
self.uiCemera.touchDragThreshold = 1
|
|
end
|
|
end
|
|
|
|
self.originInputTouchSenseInch = Game.InputManager.touchSenseInch
|
|
Game.InputManager.touchSenseInch = 0
|
|
Game.InputManager:ResetParams()
|
|
|
|
Game.InputManager.model = InputManager.Model.PHOTOGRAPH
|
|
self.originNearClipPlane = self.cameraController.activeCamera.nearClipPlane
|
|
self.originFarClipPlane = self.cameraController.activeCamera.farClipPlane
|
|
self.cameraController.activeCamera.nearClipPlane = self.cameraData.ClippingPlanes[1]
|
|
self.cameraController.activeCamera.farClipPlane = self.cameraData.ClippingPlanes[2]
|
|
|
|
self.originAllowLowerThanFocus = self.cameraController.allowLowerThanFocus
|
|
if(self.cameraData.Y_Limit == 1)then
|
|
self.cameraController.allowLowerThanFocus = false
|
|
elseif(self.cameraData.Y_Limit == 0)then
|
|
self.cameraController.allowLowerThanFocus = true
|
|
else
|
|
end
|
|
|
|
self.originFovMin = Game.InputManager.cameraFieldOfViewMin
|
|
self.originFovMax = Game.InputManager.cameraFieldOfViewMax
|
|
local minskillId = GameConfig.PhotographAdSkill.minViewPortSkill
|
|
local maxskillId = GameConfig.PhotographAdSkill.maxViewPortSkill
|
|
|
|
local skillData = Table_Skill[minskillId]
|
|
if(SkillProxy.Instance:HasLearnedSkill(minskillId) and skillData)then
|
|
self.fovMin = skillData.Logic_Param.minfov
|
|
self.fovMin = self.fovMin and self.fovMin or self.cameraData.Zoom[1]
|
|
else
|
|
self.fovMin = self.cameraData.Zoom[1]
|
|
end
|
|
|
|
skillData = Table_Skill[maxskillId]
|
|
if(SkillProxy.Instance:HasLearnedSkill(maxskillId) and skillData)then
|
|
self.fovMax = skillData.Logic_Param.maxfov
|
|
self.fovMax = self.fovMax and self.fovMax or self.cameraData.Zoom[2]
|
|
else
|
|
self.fovMax = self.cameraData.Zoom[2]
|
|
end
|
|
self.fovMinValue = self:calFOVValue(self.fovMax)
|
|
self.fovMaxValue = self:calFOVValue(self.fovMin)
|
|
Game.InputManager.cameraFieldOfViewMin = self.fovMinValue
|
|
Game.InputManager.cameraFieldOfViewMax = self.fovMaxValue
|
|
|
|
local danmaku = self.cameraData.Danmaku
|
|
if(not (danmaku == 1))then
|
|
self.flyMessageView:CloseUIWidgets()
|
|
end
|
|
|
|
local nearChat = self.cameraData.NearChat
|
|
if(not (nearChat == 1))then
|
|
|
|
end
|
|
|
|
local close = self.cameraData.Close
|
|
if(not (close == 1))then
|
|
self:Hide(self.quitBtn)
|
|
self.forbiddenClose = true
|
|
else
|
|
self:Show(self.quitBtn)
|
|
end
|
|
|
|
local Emoji = self.cameraData.Emoji or 0
|
|
local action = self.cameraData.Act or 0
|
|
self.actEmoj = Emoji*2 + action
|
|
if(self.actEmoj == 0)then
|
|
self:Hide(self.emojiButton)
|
|
end
|
|
|
|
local ferrisItem = self.cameraData.FerrisItem
|
|
if(not (ferrisItem == 1))then
|
|
|
|
else
|
|
|
|
end
|
|
|
|
local switchMode = self.cameraData.SwitchMode
|
|
local switchBtn = self:FindGO("modeSwitch")
|
|
if(switchMode ~= 1)then
|
|
self:Hide(switchBtn)
|
|
else
|
|
self:Show(switchBtn)
|
|
end
|
|
|
|
self:SetCompositionIndex(1)
|
|
local pgInfo = self.cameraController.photographInfo
|
|
if(pgInfo)then
|
|
self.originFocusViewPort = pgInfo.focusViewPort
|
|
local composition = self:GetComposition()
|
|
if nil ~= composition then
|
|
tempVector3:Set(composition[1],composition[2],self.cameraData.Radius)
|
|
else
|
|
tempVector3:Set(self.originFocusViewPort.x,self.originFocusViewPort.y,self.cameraData.Radius)
|
|
end
|
|
pgInfo.focusViewPort = tempVector3
|
|
|
|
local defaultZoom = self.cameraData.DefaultZoom
|
|
-- printRed("defaultZoom"..defaultZoom)
|
|
if(defaultZoom)then
|
|
self.originFieldOfView = pgInfo.fieldOfView
|
|
local fieldOfView = self:calFOVValue(defaultZoom)
|
|
-- printRed("fieldOfView"..fieldOfView)
|
|
pgInfo.fieldOfView = fieldOfView
|
|
end
|
|
end
|
|
local defaultDir = self.cameraData.DefaultDir
|
|
--轉向設定
|
|
if(#defaultDir == 0)then
|
|
if(self.questData)then
|
|
self:setTargetPositionAndSymbol()
|
|
self:calFOVByPos()
|
|
end
|
|
else
|
|
if(not self.forceRotation)then
|
|
self.forceRotation = LuaVector3.zero
|
|
end
|
|
self.forceRotation = LuaVector3( defaultDir[1],defaultDir[2],defaultDir[3])
|
|
end
|
|
|
|
|
|
local defaultRoleDir = self.cameraData.DefaultRoleDir
|
|
if(defaultRoleDir and #defaultRoleDir ~=0)then
|
|
local x,y,z = Game.Myself.assetRole:GetEulerAnglesXYZ()
|
|
local cx = defaultRoleDir[1] or 0
|
|
local cy = defaultRoleDir[2] or 0
|
|
local cz = defaultRoleDir[3] or 0
|
|
x = x+cx
|
|
y = y+cy
|
|
z = z+cz
|
|
self.forceRotation = LuaVector3( 0,y,z)
|
|
end
|
|
|
|
--是否儲存遮蔽設定
|
|
self.isNeedSaveSetting = self.cameraData.SaveSetting
|
|
self.isNeedSaveSetting = self.isNeedSaveSetting and self.isNeedSaveSetting ~= 0 or false
|
|
-- printRed("PhotographPanel:isNeedSaveSetting",self.isNeedSaveSetting)
|
|
|
|
local cells = self.filterGridList:GetCells()
|
|
if(self.isNeedSaveSetting)then
|
|
local filters = LocalSaveProxy.Instance:getPhotoFilterSetting(cells)
|
|
for j=1,#cells do
|
|
local single = cells[j]
|
|
-- printRed("fileid:",single.data.id,isFilter)
|
|
|
|
-- local isFilter = FunctionPlayerPrefs.Me():hasKey(key)
|
|
-- if(isFilter)then
|
|
local bFilter = filters[single.data.id]
|
|
single:setIsSelect(bFilter)
|
|
if(not bFilter) then
|
|
self:filterCellClick(single)
|
|
end
|
|
-- end
|
|
end
|
|
else
|
|
--預設遮蔽
|
|
self.defaultHide = self.cameraData.DefaultHide
|
|
if(self.defaultHide and #self.defaultHide>0)then
|
|
for i=1,#self.defaultHide do
|
|
local fileterItem = self.defaultHide[i]
|
|
for j=1,#cells do
|
|
local single = cells[j]
|
|
if(fileterItem == single.data.id)then
|
|
single:setIsSelect(false)
|
|
self:filterCellClick(single)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
self.originStickArea = Game.InputManager.forceJoystickArea
|
|
|
|
local StickArea = self.cameraData.StickArea
|
|
if(StickArea and #StickArea>1 and StickArea[1] >0 and StickArea[2]>0)then
|
|
self.selfieStickArea = Rect(0,0,StickArea[1],StickArea[2])
|
|
end
|
|
|
|
--controlled by the adventure skill
|
|
local defaultMode = self.cameraData.DefaultMode
|
|
if(defaultMode == PhotographPanel.DefaultMode.PHOTOGRAPHER)then
|
|
self:changePhotoMode(PhotographPanel.PhotographMode.PHOTOGRAPHER)
|
|
else
|
|
self:changePhotoMode(PhotographPanel.PhotographMode.SELFIE)
|
|
LeanTween.delayedCall(self.cameraDis,1,function ( )
|
|
-- body
|
|
self:updateDisScrollBar()
|
|
end)
|
|
end
|
|
end
|
|
|
|
local tempLuaQuaternion = LuaQuaternion.identity
|
|
|
|
function PhotographPanel:calFOVByPos( )
|
|
-- body
|
|
-- local topCp = SkillUtils.GetEffectPointGameObject(self.role, SkillConfig.ROLE_CP_HAIR);
|
|
|
|
local position
|
|
if(self.creatureGuid)then
|
|
local creatureObj = SceneCreatureProxy.FindCreature(self.creatureGuid)
|
|
if(creatureObj)then
|
|
local topFocusUI = creatureObj:GetSceneUI().roleTopUI.topFocusUI
|
|
position = topFocusUI:getPosition()
|
|
-- LogUtility.InfoFormat("calFOVByPos creatureGuid Pos = {0}",LogUtility.ToString(position))
|
|
end
|
|
elseif(self.symbol)then
|
|
position = self.symbol:getTarPosition()
|
|
-- LogUtility.InfoFormat("calFOVByPos self.symbol Pos = {0}",LogUtility.ToString(position))
|
|
end
|
|
if(position)then
|
|
local cpTransform = Game.Myself.assetRole:GetCPOrRoot(RoleDefines_CP.Hair)
|
|
-- if(cpTransform)then
|
|
tempVector3:Set(LuaGameObject.GetPosition(cpTransform))
|
|
LuaVector3.Better_Sub(position,tempVector3,tempVector3)
|
|
LuaQuaternion.Better_LookRotation(tempVector3,LuaVector3.up,tempLuaQuaternion)
|
|
if(not self.forceRotation)then
|
|
self.forceRotation = LuaVector3.zero
|
|
end
|
|
tempLuaQuaternion:Better_GetEulerAngles(tempVector3)
|
|
self.forceRotation = tempVector3:Clone()
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:resetCameraData( )
|
|
-- body
|
|
|
|
local cameraMode = FunctionPerformanceSetting.Me():GetCameraMode()
|
|
if cameraMode == 0 then
|
|
Game.InputManager.model = InputManager.Model.DEFAULT
|
|
elseif cameraMode == 1 then
|
|
Game.InputManager.model = InputManager.Model.FREE
|
|
else
|
|
Game.InputManager.model = InputManager.Model.PHOTOGRAPH
|
|
end
|
|
|
|
if nil ~= self.cameraController then
|
|
if(self.originAllowLowerThanFocus)then
|
|
self.cameraController.allowLowerThanFocus = self.originAllowLowerThanFocus
|
|
end
|
|
if(self.originNearClipPlane)then
|
|
self.cameraController.activeCamera.nearClipPlane = self.originNearClipPlane
|
|
self.cameraController.activeCamera.farClipPlane = self.originFarClipPlane
|
|
end
|
|
if(self.originFocusViewPort)then
|
|
self.cameraController.photographInfo.focusViewPort = self.originFocusViewPort
|
|
end
|
|
if(self.originFieldOfView)then
|
|
self.cameraController.photographInfo.fieldOfView = self.originFieldOfView
|
|
end
|
|
end
|
|
|
|
if(self.originStickArea)then
|
|
Game.InputManager.forceJoystickArea = self.originStickArea
|
|
end
|
|
|
|
if(self.originFovMax)then
|
|
Game.InputManager.cameraFieldOfViewMin = self.originFovMin
|
|
Game.InputManager.cameraFieldOfViewMax = self.originFovMax
|
|
end
|
|
end
|
|
|
|
-- function PhotographPanel:getFieldOfView( value )
|
|
-- -- body
|
|
-- for i=1,#GameConfig.PhotoFocalLength do
|
|
-- local single = GameConfig.PhotoFocalLength[i]
|
|
-- if(value > single.min and value < single.max)then
|
|
-- local tmp = single.value + (GameConfig.PhotoFocalLength[i-1].value - single.value)*((value - single.max)/(GameConfig.PhotoFocalLength[i-1].max - single.max))
|
|
-- return tmp
|
|
-- elseif(value == single.max)then
|
|
-- return single.value
|
|
-- end
|
|
-- end
|
|
-- end
|
|
|
|
function PhotographPanel:changeShowFocalLen( isShow )
|
|
-- body
|
|
if(Slua.IsNull(self.focalLen))then
|
|
return
|
|
end
|
|
local value = self.fovScrollBarCpt.value
|
|
local fieldOfView = (self.fovMax - self.fovMin) * value + self.fovMin
|
|
fieldOfView = math.floor(fieldOfView + 0.5)
|
|
self.focalLenLabel.text = fieldOfView.."mm"
|
|
|
|
if(self.isShowFocalLen ~= isShow and self.focalLen)then
|
|
self.focalLen:SetActive(isShow)
|
|
self.isShowFocalLen = isShow
|
|
if(isShow)then
|
|
LeanTween.cancel(self.focalLen)
|
|
LeanTween.delayedCall(self.focalLen,1,function ( )
|
|
-- body
|
|
self.isShowFocalLen = false
|
|
self:Hide(self.focalLen)
|
|
end)
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:changeShowDisLen( isShow )
|
|
-- body
|
|
local value = self.disScrollBarCpt.value
|
|
local cameraDis = (10 - 3) * value + 3
|
|
cameraDis = math.floor(cameraDis + 0.5)
|
|
self.cameraDisLabel.text = string.format(ZhString.PhotoCameraDisTip, cameraDis)
|
|
self.boliSp.height = 75 + value*(430 - 75)
|
|
if(self.isShowcameraDisLabel ~= isShow)then
|
|
self.cameraDis:SetActive(isShow)
|
|
self.isShowcameraDisLabel = isShow
|
|
if(isShow)then
|
|
LeanTween.cancel(self.cameraDis)
|
|
LeanTween.delayedCall(self.cameraDis,1,function ( )
|
|
-- body
|
|
self.isShowcameraDisLabel = false
|
|
self:Hide(self.cameraDis)
|
|
end)
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:addEventListener( )
|
|
|
|
self:AddButtonEvent("quitBtn",function ( go )
|
|
-- body
|
|
--SceneUIManager.Instance:ResetFlyingMessage()
|
|
FunctionBarrage.Me():ShutDown()
|
|
self:CloseSelf();
|
|
end)
|
|
|
|
self:AddClickEvent(self.takePicBtn,function ( go )
|
|
self:takePic()
|
|
AudioUtility.PlayOneShot2D_Path(ResourcePathHelper.AudioSEUI(AudioMap.UI.Picture));
|
|
end)
|
|
|
|
self:AddButtonEvent("modeSwitch",function ( go )
|
|
local mode = self.curPhotoMode == PhotographPanel.PhotographMode.SELFIE and PhotographPanel.PhotographMode.PHOTOGRAPHER or PhotographPanel.PhotographMode.SELFIE
|
|
|
|
local isDead = Game.Myself:IsDead()
|
|
if(isDead)then
|
|
MsgManager.ShowMsgByID(2500)
|
|
return
|
|
end
|
|
|
|
if(mode == PhotographPanel.PhotographMode.PHOTOGRAPHER)then
|
|
if(not SkillProxy.Instance:HasLearnedSkill(GameConfig.PhotographAdSkill.freeViewSkill))then
|
|
MsgManager.ShowMsgByID(557)
|
|
return
|
|
end
|
|
end
|
|
self:changePhotoMode(mode)
|
|
end)
|
|
|
|
self:AddClickEvent(self.emojiButton, function (go)
|
|
if(not self.isEmojiShow)then
|
|
self.isEmojiShow = true;
|
|
local forbidAction = self.actEmoj
|
|
if(self.actEmoj == 1 and self.curPhotoMode == PhotographPanel.PhotographMode.PHOTOGRAPHER)then
|
|
forbidAction = 0
|
|
elseif(self.actEmoj == 3 and self.curPhotoMode == PhotographPanel.PhotographMode.PHOTOGRAPHER)then
|
|
forbidAction = 1
|
|
end
|
|
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.ChatEmojiView, viewdata = {state = forbidAction}});
|
|
|
|
else
|
|
self.isEmojiShow = false;
|
|
self:sendNotification(UIEvent.CloseUI, UIViewType.ChatLayer);
|
|
end
|
|
end);
|
|
|
|
self:AddClickEvent(self.takeTypeBtn, function (go)
|
|
self:MoveCompositionIndexToNext()
|
|
self:ApplyComposition()
|
|
end);
|
|
|
|
self:AddClickEvent(self.callServentBtn, function (go)
|
|
self:TriggerServant()
|
|
end);
|
|
|
|
self:AddPressEvent(self.focusFrame,function ( obj,state )
|
|
-- body
|
|
self:changeTurnBtnState(state)
|
|
end)
|
|
|
|
self:AddDragEvent(self.focusFrame,function ( obj,delta )
|
|
-- body
|
|
local toY = Game.Myself:GetAngleY() - delta.x;
|
|
Game.Myself:Client_SetDirCmd(AI_CMD_SetAngleY.Mode.SetAngleY, toY,true)
|
|
end)
|
|
|
|
EventDelegate.Add(self.fovScrollBarCpt.onChange, function ( )
|
|
-- body
|
|
if not self.fovScrollBarCpt.isDragging or self:ObjIsNil(self.cameraController) then
|
|
return
|
|
end
|
|
local value = self.fovScrollBarCpt.value
|
|
local zoom = (self.fovMax - self.fovMin) * value + self.fovMin
|
|
local fieldOfView = self:calFOVValue(zoom)
|
|
self.cameraController:ResetFieldOfView(fieldOfView)
|
|
self:changeShowFocalLen(true)
|
|
end);
|
|
|
|
EventDelegate.Add(self.disScrollBarCpt.onChange, function ( )
|
|
-- body
|
|
if self:ObjIsNil(self.cameraController) then
|
|
return
|
|
end
|
|
local value = self.disScrollBarCpt.value
|
|
local focusViewPort = self.cameraController.focusViewPort
|
|
-- self:Log(focusViewPort.x,focusViewPort.y,focusViewPort.z)
|
|
local zoom = (10- 3) * value + 3
|
|
local port = LuaVector3(focusViewPort.x,focusViewPort.y,zoom)
|
|
self.cameraController:ResetFocusViewPort(port)
|
|
self:changeShowDisLen(true)
|
|
end);
|
|
|
|
self:AddClickEvent(self.servantEmojiButton, function ( go )
|
|
GameFacade.Instance:sendNotification(UIEvent.ShowUI,{viewname = "ServantEmojiView", npc = self.servant, npcId = self.servantId})
|
|
end)
|
|
|
|
self:AddListenEvt(SceneUserEvent.SceneAddPets, self.HandleAddServant)
|
|
end
|
|
|
|
function PhotographPanel:checkIfHasFocusCreature( )
|
|
-- body
|
|
-- printRed("checkIfHasFocusCreature")
|
|
local nearDis = GameConfig.PhotographPanel.Near_Focus_Distance_Monster
|
|
nearDis = nearDis and nearDis or PhotographPanel.NEAR_FOCUS_DISTANCE
|
|
-- self:Log("nearDis",nearDis)
|
|
local nearMonster = NSceneNpcProxy.Instance:FindNearNpcs(Game.Myself:GetPosition(),nearDis,function ( npc )
|
|
-- body
|
|
local pos = npc:GetPosition()
|
|
local cmd = FunctionPhoto.Me():GetCmd(PhotoCommandShowGhost)
|
|
-- self:Log("checkFocus",nearDis)
|
|
if(self:checkFocus(Game.Myself:GetPosition(),pos,nearDis) == PhotographPanel.FocusStatus.Fit)then
|
|
if(cmd and SkillProxy.Instance:HasLearnedSkill(GameConfig.PhotographAdSkill.gostSkill))then
|
|
cmd:GhostInSight(npc)
|
|
end
|
|
return true
|
|
else
|
|
if(cmd and SkillProxy.Instance:HasLearnedSkill(GameConfig.PhotographAdSkill.gostSkill))then
|
|
cmd:GhostOutSight(npc)
|
|
end
|
|
end
|
|
end)
|
|
-- printRed(#nearMonster)
|
|
local data = ReusableTable.CreateArray()
|
|
for i=1,#nearMonster do
|
|
table.insert(data,nearMonster[i].data.id)
|
|
-- printRed("guid----:"..nearMonster[i].id)
|
|
end
|
|
if(#data > 0)then
|
|
-- if(self.curPhotoMode == PhotographPanel.PhotographMode.PHOTOGRAPHER)then
|
|
ServiceNUserProxy.Instance:CallCameraFocus(data)
|
|
ReusableTable.DestroyArray(data)
|
|
-- else
|
|
-- self:playAction(nearMonster)
|
|
-- end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:getValidScenery( scenicSpotID )
|
|
-- body
|
|
local scenicSpot
|
|
if(scenicSpotID)then
|
|
scenicSpot = FunctionScenicSpot.Me():GetScenicSpot(scenicSpotID)
|
|
if(scenicSpot)then
|
|
local camera = self.cameraController.activeCamera
|
|
local viewport = camera:WorldToViewportPoint(scenicSpot.position)
|
|
-- print(string.format("<color=yellow>GetNearestScenicSpot: </color>[%d] viewPort=(%f,%f,%f)",
|
|
-- ss.ID, viewport.x, viewport.y, viewport.z))
|
|
if not( 0 < viewport.x and 1 > viewport.x
|
|
and 0 < viewport.y and 1 > viewport.y
|
|
and camera.nearClipPlane < viewport.z and camera.farClipPlane > viewport.z) then
|
|
scenicSpot = nil
|
|
end
|
|
end
|
|
else
|
|
local cameraPos = self.cameraController.activeCamera.transform.position
|
|
scenicSpot = FunctionScenicSpot.Me():GetNearestScenicSpot(cameraPos, self.cameraController.activeCamera)
|
|
end
|
|
|
|
if(scenicSpot)then
|
|
self.charid = scenicSpot.guid
|
|
local result = self:checkFocus(Game.Myself:GetPosition(),scenicSpot.position)
|
|
if(result ~= PhotographPanel.FocusStatus.FarMore )then
|
|
return scenicSpot
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:getValidCreature( )
|
|
-- body
|
|
local creatureObj = NSceneNpcProxy.Instance:FindNearestNpc(Game.Myself:GetPosition(),self.creatureId)
|
|
if(creatureObj)then
|
|
local result = self:checkFocus(Game.Myself:GetPosition(),creatureObj:GetPosition())
|
|
if(result ~= PhotographPanel.FocusStatus.FarMore)then
|
|
return creatureObj
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:removeCreatureTopFocusUI( )
|
|
-- body
|
|
if(self.creatureGuid)then
|
|
local creatureObj = SceneCreatureProxy.FindCreature(self.creatureGuid)
|
|
if(creatureObj)then
|
|
creatureObj:GetSceneUI().roleTopUI:DestroyTopFocusUI()
|
|
end
|
|
end
|
|
self.creatureGuid = nil
|
|
end
|
|
|
|
function PhotographPanel:removeSceneFocusUI( )
|
|
-- body
|
|
if(not self.symbol)then
|
|
return
|
|
end
|
|
if(self.symbol:Alive())then
|
|
ReusableObject.Destroy(self.symbol)
|
|
end
|
|
self.symbol = nil
|
|
end
|
|
|
|
local topFocusUIData = {}
|
|
|
|
function PhotographPanel:setTargetPositionAndSymbol( )
|
|
-- body
|
|
local symbol
|
|
if(self.creatureId)then
|
|
if(self.creatureGuid)then
|
|
local creatureObj = SceneCreatureProxy.FindCreature(self.creatureGuid)
|
|
if(creatureObj)then
|
|
local result = self:checkFocus(Game.Myself:GetPosition(),creatureObj:GetPosition())
|
|
if(result == PhotographPanel.FocusStatus.FarMore)then
|
|
--out of focus max distance
|
|
--exsit valid creature remove old focusUI add new focusUI
|
|
--not exsit valid creature
|
|
local validCreatureObj = self:getValidCreature()
|
|
if(validCreatureObj)then
|
|
self:removeCreatureTopFocusUI()
|
|
self.creatureGuid = validCreatureObj.data.id
|
|
symbol = validCreatureObj:GetSceneUI().roleTopUI:createOrGetTopFocusUI()
|
|
else
|
|
symbol = creatureObj:GetSceneUI().roleTopUI.topFocusUI
|
|
end
|
|
else
|
|
--in focus max distance change focus animation
|
|
symbol = creatureObj:GetSceneUI().roleTopUI.topFocusUI
|
|
end
|
|
else
|
|
--creature has gone !relook
|
|
--remove old focusUI
|
|
self:removeCreatureTopFocusUI()
|
|
creatureObj = self:getValidCreature()
|
|
if(creatureObj)then
|
|
self.creatureGuid = creatureObj.data.id
|
|
symbol = creatureObj:GetSceneUI().roleTopUI:createOrGetTopFocusUI()
|
|
end
|
|
end
|
|
else
|
|
creatureObj = self:getValidCreature()
|
|
if(creatureObj)then
|
|
self.creatureGuid = creatureObj.data.id
|
|
symbol = creatureObj:GetSceneUI().roleTopUI:createOrGetTopFocusUI()
|
|
-- self:Log("find creature by id",self.creatureId,self.creatureGuid)
|
|
else
|
|
-- self:Log("not creature by id",self.creatureId)
|
|
end
|
|
end
|
|
elseif(self.questTargetPosition)then
|
|
local result = self:checkFocus(Game.Myself:GetPosition(),self.questTargetPosition)
|
|
if(result ~= PhotographPanel.FocusStatus.FarMore)then
|
|
if(not self.symbol)then
|
|
TableUtility.ArrayClear(topFocusUIData)
|
|
topFocusUIData[1] = SceneTopFocusUI.FocusType.SceneObject
|
|
self.symbol = SceneTopFocusUI.CreateAsArray(topFocusUIData)
|
|
end
|
|
-- LogUtility.Info("questTargetPosition")
|
|
|
|
self.symbol:reSetFollowPos(self.questTargetPosition)
|
|
end
|
|
elseif(self.questScenicSpotID)then
|
|
local scenicSpot = self:getValidScenery(self.questScenicSpotID)
|
|
if(scenicSpot)then
|
|
local pos = scenicSpot.position
|
|
if(not self.symbol)then
|
|
TableUtility.ArrayClear(topFocusUIData)
|
|
topFocusUIData[1] = SceneTopFocusUI.FocusType.SceneObject
|
|
self.symbol = SceneTopFocusUI.CreateAsArray(topFocusUIData)
|
|
end
|
|
self.scenicSpotID = scenicSpot.ID
|
|
self.symbol:reSetFollowPos(pos)
|
|
end
|
|
end
|
|
--no focus target then find scenery around
|
|
if(not symbol)then
|
|
local scenicSpot = self:getValidScenery()
|
|
if(not self.symbol)then
|
|
if(scenicSpot)then
|
|
--no quest target or early scenery and has valid scenery
|
|
--create
|
|
local pos = scenicSpot.position
|
|
TableUtility.ArrayClear(topFocusUIData)
|
|
topFocusUIData[1] = SceneTopFocusUI.FocusType.SceneObject
|
|
self.symbol = SceneTopFocusUI.CreateAsArray(topFocusUIData)
|
|
self.symbol:reSetFollowPos(pos)
|
|
self.scenicSpotID = scenicSpot.ID
|
|
symbol = self.symbol
|
|
LogUtility.InfoFormat("creat 1 x:{0},y:{1},z:{2}",pos.x,pos.y,pos.z)
|
|
end
|
|
else
|
|
if(not self.questScenicSpotID and not self.questTargetPosition)then
|
|
local pos = self.symbol:getPosition()
|
|
if(scenicSpot and not pos:Equal(scenicSpot.position))then
|
|
local oldResult = self:checkFocus(Game.Myself:GetPosition(),pos)
|
|
local newResult = self:checkFocus(Game.Myself:GetPosition(),scenicSpot.position)
|
|
if(oldResult == PhotographPanel.FocusStatus.FarMore)then
|
|
--early target is out of max distance and has valid scenery or use pre symbol
|
|
pos = scenicSpot.position
|
|
self.symbol:reSetFollowPos(pos)
|
|
self.scenicSpotID = scenicSpot.ID
|
|
elseif(oldResult ~= PhotographPanel.FocusStatus.Fit and newResult ~= PhotographPanel.FocusStatus.FarMore)then
|
|
pos = scenicSpot.position
|
|
self.symbol:reSetFollowPos(pos)
|
|
self.scenicSpotID = scenicSpot.ID
|
|
elseif(self.scenicSpotID == scenicSpot.ID)then
|
|
pos = scenicSpot.position
|
|
self.symbol:reSetFollowPos(pos)
|
|
end
|
|
-- LogUtility.InfoFormat("creat 2 x:{0},y:{1},z:{2}",pos.x,pos.y,pos.z)
|
|
elseif(not scenicSpot)then
|
|
self:removeSceneFocusUI()
|
|
self.scenicSpotID = nil
|
|
end
|
|
end
|
|
symbol = self.symbol
|
|
end
|
|
end
|
|
|
|
if(symbol)then
|
|
self:changeFocusStatus(symbol)
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:getSceneFocusUI( )
|
|
-- body
|
|
local symbol
|
|
if(self.creatureGuid)then
|
|
local creatureObj = SceneCreatureProxy.FindCreature(self.creatureGuid)
|
|
if(creatureObj)then
|
|
symbol = creatureObj:GetSceneUI().roleTopUI.topFocusUI
|
|
end
|
|
elseif(self.symbol)then
|
|
symbol = self.symbol
|
|
end
|
|
return symbol
|
|
end
|
|
|
|
function PhotographPanel:checkFocus_N(creature,nearFocus)
|
|
local result
|
|
-- printRed("checkFocus")
|
|
local playerPos = Game.Myself:GetPosition()
|
|
local targetPosition = creature:GetPosition()
|
|
local distance = LuaVector3.Distance(playerPos,targetPosition)
|
|
local dis = nearFocus and nearFocus or PhotographPanel.NEAR_FOCUS_DISTANCE
|
|
local isFit = distance <= dis
|
|
if(isFit)then
|
|
-- local isVisible = viewport.x >0.2 and viewport.x <0.8 and viewport.y>0.2 and viewport.y < 0.8 and npcObj.roleAgent.visible
|
|
local viewportRange = PhotographPanel.FOCUS_VIEW_PORT_RANGE
|
|
local viewport = self.uiCm:WorldToViewportPoint(targetPosition)
|
|
local isVisible = viewport.x > viewportRange.x[1]
|
|
and viewport.x < viewportRange.x[2]
|
|
and viewport.y > viewportRange.y[1]
|
|
and viewport.y < viewportRange.y[2]
|
|
and viewport.z > self.uiCm.nearClipPlane
|
|
and viewport.z < self.uiCm.farClipPlane
|
|
-- helplog("0:",viewport.x,viewport.y,viewport.z)
|
|
|
|
if(isVisible)then
|
|
--滿足條件
|
|
return PhotographPanel.FocusStatus.Fit
|
|
end
|
|
if(creature.assetRole)then
|
|
local epTransform = creature.assetRole:GetEP(RoleDefines_EP.Middle)
|
|
if nil ~= epTransform then
|
|
tempVector3:Set(LuaGameObject.GetPosition(epTransform))
|
|
viewport = self.uiCm:WorldToViewportPoint(tempVector3)
|
|
isVisible = viewport.x > viewportRange.x[1]
|
|
and viewport.x < viewportRange.x[2]
|
|
and viewport.y > viewportRange.y[1]
|
|
and viewport.y < viewportRange.y[2]
|
|
and viewport.z > self.uiCm.nearClipPlane
|
|
and viewport.z < self.uiCm.farClipPlane
|
|
-- helplog("1:",viewport.x,viewport.y,viewport.z)
|
|
|
|
if(isVisible)then
|
|
--滿足條件
|
|
return PhotographPanel.FocusStatus.Fit
|
|
end
|
|
end
|
|
|
|
epTransform = creature.assetRole:GetEP(RoleDefines_EP.Top)
|
|
if nil ~= epTransform then
|
|
tempVector3:Set(LuaGameObject.GetPosition(epTransform))
|
|
viewport = self.uiCm:WorldToViewportPoint(tempVector3)
|
|
isVisible = viewport.x > viewportRange.x[1]
|
|
and viewport.x < viewportRange.x[2]
|
|
and viewport.y > viewportRange.y[1]
|
|
and viewport.y < viewportRange.y[2]
|
|
and viewport.z > self.uiCm.nearClipPlane
|
|
and viewport.z < self.uiCm.farClipPlane
|
|
-- helplog("2:",viewport.x,viewport.y,viewport.z)
|
|
if(isVisible)then
|
|
--滿足條件
|
|
return PhotographPanel.FocusStatus.Fit
|
|
end
|
|
end
|
|
end
|
|
return PhotographPanel.FocusStatus.Less
|
|
elseif(distance <= PhotographPanel.FAR_FOCUS_DISTANCE)then --小於40米
|
|
result = PhotographPanel.FocusStatus.Less
|
|
else
|
|
result = PhotographPanel.FocusStatus.FarMore
|
|
end
|
|
return result
|
|
end
|
|
|
|
function PhotographPanel:checkFocus(playerPos ,targetPosition,nearFocus)
|
|
-- body
|
|
local result
|
|
-- printRed("checkFocus")
|
|
local distance = LuaVector3.Distance(playerPos,targetPosition)
|
|
local dis = nearFocus and nearFocus or PhotographPanel.NEAR_FOCUS_DISTANCE
|
|
local isFit = distance <= dis
|
|
if(isFit)then
|
|
local viewport = self.uiCm:WorldToViewportPoint(targetPosition)
|
|
-- local isVisible = viewport.x >0.2 and viewport.x <0.8 and viewport.y>0.2 and viewport.y < 0.8 and npcObj.roleAgent.visible
|
|
local viewportRange = PhotographPanel.FOCUS_VIEW_PORT_RANGE
|
|
local isVisible = viewport.x > viewportRange.x[1]
|
|
and viewport.x < viewportRange.x[2]
|
|
and viewport.y > viewportRange.y[1]
|
|
and viewport.y < viewportRange.y[2]
|
|
and viewport.z > self.uiCm.nearClipPlane
|
|
and viewport.z < self.uiCm.farClipPlane
|
|
if(isVisible)then
|
|
--滿足條件
|
|
result = PhotographPanel.FocusStatus.Fit
|
|
else
|
|
result = PhotographPanel.FocusStatus.Less
|
|
end
|
|
elseif(distance <= PhotographPanel.FAR_FOCUS_DISTANCE)then --小於40米
|
|
result = PhotographPanel.FocusStatus.Less
|
|
else
|
|
result = PhotographPanel.FocusStatus.FarMore
|
|
end
|
|
return result
|
|
end
|
|
|
|
function PhotographPanel:changeFocusStatus( symbol )
|
|
-- body
|
|
if(not symbol)then
|
|
return
|
|
end
|
|
local status = self:checkFocus(Game.Myself:GetPosition(),symbol:getPosition())
|
|
|
|
if(self.status ~= status)then
|
|
if(status == PhotographPanel.FocusStatus.Fit)then
|
|
symbol:Show()
|
|
symbol:playFocusAnim()
|
|
self.focusSuccess = true
|
|
self:setTakePicEnable(true)
|
|
elseif(status == PhotographPanel.FocusStatus.Less)then
|
|
--聚焦框消失
|
|
self:setTakePicEnable(false)
|
|
symbol:Show()
|
|
symbol:playLostFocusAnim()
|
|
self.focusSuccess = false
|
|
else
|
|
self:setTakePicEnable(false)
|
|
symbol:Hide()
|
|
self.focusSuccess = false
|
|
end
|
|
self.status = status
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:setTakePicEnable( isEnabled )
|
|
-- body
|
|
if(self.questData)then
|
|
local box = self.takePicBtn:GetComponent(BoxCollider)
|
|
local sprite = self.takePicBtn:GetComponent(UISprite)
|
|
local icon = self:FindGO("icon",self.takePicBtn):GetComponent(UISprite)
|
|
local button = self.takePicBtn:GetComponent(UIButton)
|
|
if(isEnabled)then
|
|
button.isEnabled = true
|
|
else
|
|
button.isEnabled = false
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:updateScrollBar( )
|
|
if self.fovScrollBarCpt.isDragging or self:ObjIsNil(self.cameraController) then
|
|
return
|
|
end
|
|
|
|
if(Slua.IsNull(self.fovScrollBarCpt))then
|
|
return
|
|
end
|
|
local fieldOfView = self.cameraController.cameraFieldOfView
|
|
|
|
fieldOfView = Mathf.Clamp(fieldOfView, self.fovMinValue, self.fovMaxValue)
|
|
local fov = self:calZoom(fieldOfView)
|
|
local sclValue = (fov - self.fovMin)/(self.fovMax - self.fovMin)
|
|
sclValue = (math.floor(sclValue*100+0.5))/100
|
|
local barCptValue = (math.floor(self.fovScrollBarCpt.value*100+0.5))/100
|
|
if(sclValue ~= barCptValue)then
|
|
self.fovScrollBarCpt.value = sclValue
|
|
self:changeShowFocalLen(true)
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:updateDisScrollBar( )
|
|
if self.disScrollBarCpt.isDragging or self:ObjIsNil(self.cameraController) then
|
|
return
|
|
end
|
|
local dis = self.cameraController.focusViewPort.z
|
|
local sclValue = (dis - 3)/(10 - 3)
|
|
sclValue = (math.floor(sclValue*100+0.5))/100
|
|
local barCptValue = (math.floor(self.disScrollBarCpt.value*100+0.5))/100
|
|
if(sclValue ~= barCptValue)then
|
|
self.disScrollBarCpt.value = sclValue
|
|
self:changeShowDisLen(true)
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:changeTurnBtnState( visible )
|
|
self.turnRightBtn:SetActive(visible)
|
|
self.turnLeftBtn:SetActive(visible)
|
|
end
|
|
|
|
function PhotographPanel:OnEnter()
|
|
FunctionPhoto.Me():Launch()
|
|
end
|
|
|
|
function PhotographPanel:OnExit()
|
|
FunctionPhoto.Me():ShutDown()
|
|
TimeTickManager.Me():ClearTick(self)
|
|
self.needCheckReady = false
|
|
self.focusSuccess = false
|
|
|
|
FunctionSceneFilter.Me():EndFilter(GameConfig.FilterType.PhotoFilter)
|
|
FunctionSceneFilter.Me():EndFilter(FunctionSceneFilter.AllEffectFilter)
|
|
if(self.defaultHide)then
|
|
for i=1,#self.defaultHide do
|
|
local fileterItem = self.defaultHide[i]
|
|
FunctionSceneFilter.Me():EndFilter(fileterItem)
|
|
end
|
|
end
|
|
self:removeSceneFocusUI()
|
|
self:removeCreatureTopFocusUI()
|
|
if(self.cameraAxisY)then
|
|
Game.Myself:Client_SetDirCmd(AI_CMD_SetAngleY.Mode.SetAngleY, self.cameraAxisY)
|
|
|
|
-- self.role.rotation = Quaternion.Euler(0,self.cameraAxisY,0);
|
|
end
|
|
|
|
-- FunctionSceneFilter.Me():EndFilterByGroup(1)
|
|
-- FunctionSceneFilter.Me():EndFilterByGroup(4)
|
|
Game.AreaTriggerManager:SetIgnore(false)
|
|
if(self.isEmojiShow or self.chatroomShow)then
|
|
self:sendNotification(UIEvent.CloseUI, UIViewType.ChatLayer);
|
|
end
|
|
|
|
ServiceNUserProxy.Instance:CallStateChange(ProtoCommon_pb.ECREATURESTATUS_MIN)
|
|
self.super.OnExit(self)
|
|
|
|
FunctionCameraEffect.Me():Resume()
|
|
self:resetCameraData()
|
|
|
|
--SceneUIManager.Instance:ResetFlyingMessage()
|
|
FunctionBarrage.Me():ShutDown()
|
|
|
|
if(self.isNeedSaveSetting)then
|
|
local cells = self.filterGridList:GetCells()
|
|
local list = ReusableTable.CreateTable()
|
|
for j=1,#cells do
|
|
local single = cells[j]
|
|
-- printRed("filtersid:",single.data.id,single:getIsSelect())
|
|
local data = {}
|
|
data.id = single.data.id
|
|
data.isSelect = single:getIsSelect()
|
|
table.insert(list,data)
|
|
end
|
|
LocalSaveProxy.Instance:savePhotoFilterSetting(list)
|
|
ReusableTable.DestroyAndClearTable(list)
|
|
end
|
|
|
|
if(self.questData and not self.hasNotifyServer)then
|
|
local cmd = Game.AreaTrigger_Mission
|
|
if(cmd)then
|
|
cmd:ForceReCheck(self.questData.id)
|
|
end
|
|
printRed("self.questData and not self.hasNotifyServe")
|
|
end
|
|
|
|
if(self.uiCemera)then
|
|
self.uiCemera.touchDragThreshold = self.originUiCmTouchDragThreshold
|
|
end
|
|
|
|
if(self.originInputTouchSenseInch)then
|
|
Game.InputManager.touchSenseInch = self.originInputTouchSenseInch
|
|
Game.InputManager:ResetParams()
|
|
end
|
|
|
|
-- 女僕
|
|
if self.servant then
|
|
ServiceNUserProxy.Instance:CallShowServantUserCmd(false)
|
|
end
|
|
|
|
if(self.servantEffect)then
|
|
self.servantEffect:Destroy();
|
|
self.servantEffect = nil
|
|
end
|
|
|
|
self:CancelLeanTween()
|
|
end
|
|
|
|
function PhotographPanel:filterCellClick( obj)
|
|
-- body
|
|
local isSelect = obj:getIsSelect()
|
|
local id = obj.data.id
|
|
if(not isSelect) then
|
|
FunctionSceneFilter.Me():StartFilter(id)
|
|
if(id == GameConfig.FilterType.PhotoFilter.Guild or id == GameConfig.FilterType.PhotoFilter.Team) then
|
|
if(FunctionSceneFilter.Me():IsFilterBy(GameConfig.FilterType.PhotoFilter.Guild) and
|
|
FunctionSceneFilter.Me():IsFilterBy(GameConfig.FilterType.PhotoFilter.Team) ) then
|
|
FunctionSceneFilter.Me():StartFilter(GameConfig.FilterType.PhotoFilter.TeamAndGuild)
|
|
end
|
|
end
|
|
else
|
|
FunctionSceneFilter.Me():EndFilter(id)
|
|
if(id == GameConfig.FilterType.PhotoFilter.Guild or id == GameConfig.FilterType.PhotoFilter.Team) then
|
|
FunctionSceneFilter.Me():EndFilter(GameConfig.FilterType.PhotoFilter.TeamAndGuild)
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:setPhotoResultVisible( state )
|
|
-- body
|
|
self.photographResult:SetActive(state)
|
|
end
|
|
|
|
function PhotographPanel:preTakePic( )
|
|
-- body
|
|
|
|
local symbol = self:getSceneFocusUI()
|
|
if(symbol)then
|
|
symbol:Hide()
|
|
end
|
|
local nearDis = GameConfig.PhotographPanel.Near_Focus_Distance_Monster
|
|
nearDis = nearDis and nearDis or PhotographPanel.NEAR_FOCUS_DISTANCE
|
|
local nearMonster = NSceneNpcProxy.Instance:FindNearNpcs(Game.Myself:GetPosition(),nearDis,function ( npc )
|
|
-- body
|
|
if(self:checkFocus_N(npc,nearDis) == PhotographPanel.FocusStatus.Fit)then
|
|
return true
|
|
end
|
|
end)
|
|
|
|
|
|
local nearPlayers = NSceneUserProxy.Instance:FindNearUsers(Game.Myself:GetPosition(),nearDis,function ( npc )
|
|
-- body
|
|
if(self:checkFocus_N(npc,nearDis) == PhotographPanel.FocusStatus.Fit)then
|
|
return true
|
|
end
|
|
end)
|
|
|
|
local selfPos = Game.Myself:GetPosition()
|
|
if(self:checkFocus_N(Game.Myself,nearDis) == PhotographPanel.FocusStatus.Fit)then
|
|
nearPlayers[#nearPlayers+1] = Game.Myself
|
|
end
|
|
|
|
local phaseData = SkillPhaseData.Create(self.photoSkillId)
|
|
for i=1,#nearMonster do
|
|
-- helplog("nearMonster checkFocus_N:",nearMonster[i].data.id)
|
|
phaseData:AddTarget(nearMonster[i].data.id, 1, 1)
|
|
end
|
|
for i=1,#nearPlayers do
|
|
-- helplog("nearPlayers checkFocus_N:",nearPlayers[i].data.id)
|
|
phaseData:AddTarget(nearPlayers[i].data.id, 1, 1)
|
|
end
|
|
phaseData:SetSkillPhase(SkillPhase.Attack)
|
|
Game.Myself:Client_UseSkillHandler(0, phaseData)
|
|
phaseData:Destroy()
|
|
phaseData = nil
|
|
|
|
if(self.curPhotoMode == PhotographPanel.PhotographMode.PHOTOGRAPHER)then
|
|
ServiceNUserProxy.Instance:CallPhoto(Game.Myself.data.id)
|
|
end
|
|
if(self.focusSuccess )then
|
|
if(self.questData and not self.hasNotifyServer)then
|
|
local questData = self.questData
|
|
QuestProxy.Instance:notifyQuestState(questData.id,questData.staticData.FinishJump)
|
|
self.hasNotifyServer = true
|
|
end
|
|
-- if(self.scenicSpotID)then
|
|
-- FunctionScenicSpot.Me():InvalidateScenicSpot(self.scenicSpotID)
|
|
-- end
|
|
else
|
|
end
|
|
|
|
ResourceManager.Instance:GC()
|
|
MyLuaSrv.Instance:LuaManualGC()
|
|
end
|
|
|
|
function PhotographPanel:doneTakePic( )
|
|
-- body
|
|
local symbol = self:getSceneFocusUI()
|
|
if(symbol)then
|
|
symbol:Show()
|
|
end
|
|
|
|
if(symbol and self.focusSuccess )then
|
|
symbol:playStopFocusAnim()
|
|
end
|
|
-- self:Hide(self.watermarkLabel.gameObject)
|
|
end
|
|
|
|
function PhotographPanel:takePic( )
|
|
-- body
|
|
self:preTakePic()
|
|
|
|
local gmCm = NGUIUtil:GetCameraByLayername("Default");
|
|
local bgCm = NGUIUtil:GetCameraByLayername("SceneUIBackground");
|
|
local uiBgCm = NGUIUtil:GetCameraByLayername("UIBackground");
|
|
local _,_,anglez = LuaGameObject.GetEulerAngles(gmCm.transform)
|
|
anglez = GeometryUtils.UniformAngle(anglez)
|
|
local ui = NGUIUtil:GetCameraByLayername("UI");
|
|
-- self.screenShotHelper:Setting()
|
|
-- local cm = GameObject.Instantiate(ui)
|
|
-- cm.name = "PhotographPanel"
|
|
-- local layer = LayerMask.NameToLayer("PhotographPanel")
|
|
-- layer = BitUtil.lshift(1,layer)
|
|
-- cm.cullingMask = layer
|
|
self.screenShotHelper:Setting(self.screenShotWidth, self.screenShotHeight, self. textureFormat, self.texDepth, self.antiAliasing)
|
|
if(self.textInvisible)then
|
|
-- self.screenShotHelper:GetScreenShot(function ( texture )
|
|
-- -- body
|
|
-- self.infoTexture = texture
|
|
self.screenShotHelper:GetScreenShot(function ( texture )
|
|
local viewdata
|
|
if self.focusSuccess then -- body
|
|
viewdata = {charid = self.charid,forbiddenClose = self.forbiddenClose ,viewname = "PhotographResultPanel",anglez = anglez,cameraData =self.cameraData,questData = self.questData,texture = texture,arg = self.focalLenLabel.text,scenicSpotID = self.scenicSpotID}
|
|
else
|
|
viewdata = {charid = self.charid,forbiddenClose = self.forbiddenClose ,viewname = "PhotographResultPanel",anglez = anglez,cameraData =self.cameraData,texture = texture,arg = self.focalLenLabel.text}
|
|
end
|
|
self:sendNotification(UIEvent.ShowUI,viewdata)
|
|
|
|
self:doneTakePic()
|
|
-- GameObject.DestroyImmediate(cm.gameObject)
|
|
end,bgCm,uiBgCm,gmCm)
|
|
-- end,bgCm,uiBgCm,gmCm,cm)
|
|
else
|
|
-- self.screenShotHelper:GetScreenShot(function ( texture )
|
|
-- -- -- body
|
|
-- self.infoTexture = texture
|
|
self.screenShotHelper:GetScreenShot(function ( texture )
|
|
-- body
|
|
local viewdata
|
|
if self.focusSuccess then
|
|
viewdata = {charid = self.charid,forbiddenClose = self.forbiddenClose , viewname = "PhotographResultPanel",anglez = anglez,cameraData =self.cameraData, questData = self.questData,texture = texture,arg = self.focalLenLabel.text,scenicSpotID = self.scenicSpotID}
|
|
else
|
|
viewdata = {charid = self.charid,forbiddenClose = self.forbiddenClose ,viewname = "PhotographResultPanel",anglez = anglez,cameraData =self.cameraData,texture = texture,arg = self.focalLenLabel.text}
|
|
end
|
|
self:sendNotification(UIEvent.ShowUI,viewdata)
|
|
self:doneTakePic()
|
|
-- GameObject.DestroyImmediate(cm.gameObject)
|
|
end,bgCm,uiBgCm,gmCm,self.uiCm)
|
|
-- end,bgCm,uiBgCm,gmCm,self.uiCm,cm)
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:setForceRotation( )
|
|
-- body
|
|
self:calFOVByPos()
|
|
if nil ~= self.forceRotation then
|
|
Game.InputManager.photograph.useForceRotation = true
|
|
Game.InputManager.photograph.forceRotation = self.forceRotation
|
|
else
|
|
Game.InputManager.photograph.useForceRotation = false
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:changePhotoMode( mode )
|
|
-- body
|
|
if(self.curPhotoMode ~= mode )then
|
|
self.curPhotoMode = mode
|
|
self:setForceRotation()
|
|
if(self.curPhotoMode == PhotographPanel.PhotographMode.SELFIE)then
|
|
if(self.selfieStickArea)then
|
|
Game.InputManager.forceJoystickArea = self.selfieStickArea
|
|
end
|
|
Game.InputManager.photographMode = PhotographMode.SELFIE
|
|
self.curPhotoMode = PhotographPanel.PhotographMode.SELFIE
|
|
self.playRotating.enabled = true
|
|
TimeTickManager.Me():ClearTick(self,PhotographPanel.TickType.UpdateAxis)
|
|
ServiceNUserProxy.Instance:CallStateChange(ProtoCommon_pb.ECREATURESTATUS_SELF_PHOTO)
|
|
if(self.cameraAxisY)then
|
|
|
|
Game.Myself:Client_SetDirCmd(AI_CMD_SetAngleY.Mode.SetAngleY, self.cameraAxisY,true)
|
|
-- self.role.rotation = Quaternion.Euler(0,self.cameraAxisY,0);
|
|
self.cameraAxisY = nil
|
|
end
|
|
self.needCheckReady = false
|
|
self:endFilterInSelfieMode()
|
|
self:sendNotification(PhotographModeChangeEvent.ModeChangeEvent,self.actEmoj);
|
|
else
|
|
if(self.selfieStickArea)then
|
|
Game.InputManager.forceJoystickArea = PHOTOGRAPHER_StickArea
|
|
end
|
|
Game.InputManager.photographMode = PhotographMode.PHOTOGRAPHER
|
|
self.curPhotoMode = PhotographPanel.PhotographMode.PHOTOGRAPHER
|
|
self.playRotating.enabled = false
|
|
-- local site = GameConfig.EquipType[12].site
|
|
-- for i=1,#site do
|
|
-- local comp = BagProxy.Instance.roleEquip:GetEquipBySite(site[i])
|
|
-- if(comp)then
|
|
-- ServiceItemProxy.Instance:CallEquip(SceneItem_pb.EEQUIPOPER_OFF, nil, comp.id)
|
|
-- end
|
|
-- end
|
|
self.needCheckReady = true
|
|
ServiceNUserProxy.Instance:CallStateChange(ProtoCommon_pb.ECREATURESTATUS_PHOTO)
|
|
local forbidAction = self.actEmoj
|
|
if(self.actEmoj == 1 and self.curPhotoMode == PhotographPanel.PhotographMode.PHOTOGRAPHER)then
|
|
forbidAction = 0
|
|
elseif(self.actEmoj == 3 and self.curPhotoMode == PhotographPanel.PhotographMode.PHOTOGRAPHER)then
|
|
forbidAction = 1
|
|
end
|
|
self:sendNotification(PhotographModeChangeEvent.ModeChangeEvent,forbidAction);
|
|
TimeTickManager.Me():CreateTick(500,100,self.updateCameraAxis,self,PhotographPanel.TickType.UpdateAxis)
|
|
end
|
|
self:changeTakeTypeBtnView()
|
|
self:changeCameraDisView()
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:endFilterInSelfieMode( )
|
|
-- body
|
|
local cells = self.filterGridList:GetCells()
|
|
for i=1,#cells do
|
|
local single = cells[i]
|
|
if(GameConfig.FilterType.PhotoFilter.Self == single.data.id and single:getIsSelect())then
|
|
FunctionSceneFilter.Me():EndFilter(GameConfig.FilterType.PhotoFilter.Self)
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:updateCameraAxis( )
|
|
-- body
|
|
local axisY = self.uiCm.transform.rotation.eulerAngles.y%360
|
|
self.cameraAxisY = self.cameraAxisY or 0
|
|
local diff = math.abs(self.cameraAxisY - axisY)
|
|
if(diff > 5)then
|
|
--notify
|
|
ServiceNUserProxy.Instance:CallStateChange(ProtoCommon_pb.ECREATURESTATUS_PHOTO)
|
|
self.cameraAxisY = axisY
|
|
Game.Myself:Client_SetDirCmd(AI_CMD_SetAngleY.Mode.SetAngleY, self.cameraAxisY,true)
|
|
|
|
-- self.role.rotation = Quaternion.Euler(0,self.cameraAxisY,0);
|
|
end
|
|
if(self.needCheckReady)then
|
|
if(Game.InputManager.photograph.ready)then
|
|
self.needCheckReady = false
|
|
FunctionSceneFilter.Me():StartFilter(GameConfig.FilterType.PhotoFilter.Self)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- local tempRot = LuaQuaternion();
|
|
function PhotographPanel:LoadServant( )
|
|
-- self.myId = Game.Myself.data.id
|
|
-- if not self.servant then
|
|
-- ServiceNUserProxy.Instance:CallShowServantUserCmd(true)
|
|
-- end
|
|
end
|
|
|
|
function PhotographPanel:TriggerServant( )
|
|
if self.isServantCalled then
|
|
local animParams = Asset_Role.GetPlayActionParams("disappear", nil, 1)
|
|
animParams[6] = true
|
|
animParams[7] = function ()
|
|
-- self:CancelLeanTween()
|
|
-- self.delayHideNpcTween = LeanTween.delayedCall(0.3, function ()
|
|
|
|
-- end)
|
|
ServiceNUserProxy.Instance:CallShowServantUserCmd(false)
|
|
self:ShowServantEffect()
|
|
end
|
|
if(self.servant)then
|
|
self.servant:PlayActionRaw(animParams, true)
|
|
end
|
|
self.isServantCalled = false
|
|
self.servantEmojiButton:SetActive(false)
|
|
self.flyMessageView:ResetMainPos(false)
|
|
else
|
|
-- self:ShowServantEffect()
|
|
-- self.isServantCalled = true
|
|
-- self.servantEmojiButton:SetActive(true)
|
|
-- self.flyMessageView:ResetMainPos(true)
|
|
ServiceNUserProxy.Instance:CallShowServantUserCmd(true)
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:HandleAddServant(note)
|
|
local npcs = note.body;
|
|
if(not npcs)then
|
|
return
|
|
end
|
|
for _,npc in pairs(npcs)do
|
|
if(npc.data and npc.data.ownerID == self.myId)then
|
|
self.servant = npc.assetRole
|
|
self.servantId = npc.data.id
|
|
self.isServantCalled = true
|
|
self.servantEmojiButton:SetActive(true)
|
|
self.flyMessageView:ResetMainPos(true)
|
|
self:CancelLeanTween()
|
|
self.delayShowEffectTween = LeanTween.delayedCall(0.2, function ()
|
|
self:ShowServantEffect()
|
|
end)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:ShowServantEffect()
|
|
if self.servant then
|
|
local servantPos = self.servant.completeTransform.localPosition
|
|
local diffpos = LuaVector3(servantPos.x, servantPos.y + 0.5, servantPos.z)
|
|
Asset_Effect.PlayOneShotAt(EffectMap.Maps.ServantShow, diffpos)
|
|
-- self.servant:PlayEffectOneShotOn(EffectMap.Maps.ServantShow, RoleDefines_EP.Middle);
|
|
end
|
|
end
|
|
|
|
function PhotographPanel:CancelLeanTween()
|
|
if(self.delayShowEffectTween)then
|
|
self.delayShowEffectTween:cancel();
|
|
end
|
|
self.delayShowEffectTween = nil;
|
|
|
|
if(self.delayHideNpcTween)then
|
|
self.delayHideNpcTween:cancel();
|
|
end
|
|
self.delayHideNpcTween = nil;
|
|
end |