|
|
- ChangeSceneMovie = ChangeSceneMovie or BaseClass()
- local ChangeSceneMovie = ChangeSceneMovie
- local Time = Time
- function ChangeSceneMovie:__init()
- self.enabled = false
- self.show_type = 1
- ChangeSceneMovie.Instance = self
- end
-
- function ChangeSceneMovie:getInstance()
- if not ChangeSceneMovie.Instance then
- ChangeSceneMovie.New()
- end
- return ChangeSceneMovie.Instance
- end
-
- function ChangeSceneMovie:InitRenderTexture( )
- if not self.rect then
- self.rect = UnityEngine.Rect.New(0,0,ScreenWidth * 0.8,ScreenHeight * 0.8)
- end
- if not self.renderTexture then
- self.renderTexture = UnityEngine.RenderTexture.GetTemporary(self.rect.width,self.rect.height,0)
- end
- if not self.gameObject then
- self.gameObject = GameObject.New("ChangeSceneMovie")
- end
- self.parent = panelMgr:GetParent("Top")
- self.gameObject.transform:SetParent(self.parent)
- if not self.rawImage then
- self.rawImage = self.gameObject:AddComponent(typeof(UnityEngine.UI.RawImage))
- end
- self.rawImage.texture = self.renderTexture
- self.transform = self.gameObject.transform
- -- self.transform:SetAsFirstSibling()
- self.transform.anchorMin = Vector2(0,0)
- self.transform.anchorMax = Vector2(1,1)
- self.transform.localPosition = Vector3(0,0,-48000)
- self.transform.sizeDelta = Vector2(0,0)
- self.transform.localScale = Vector3(1,1,1)
- self.rawImage.raycastTarget = false
- self.gameObject:SetActive(false)
- end
-
- function ChangeSceneMovie:TryOpen(show_type, ignore_fire_event)
- -- self:InitRenderTexture()
- -- if self.enabled then return end
- self.enabled = true
- self.has_fire_event = false
- if ignore_fire_event then --单纯的展示,不需要派发切换场景完成事件
- self.has_fire_event = true
- end
-
- MainCamera.Instance:ShowEnterSceneEffect()
-
-
- -- local function on_load_finish( )
- -- if not self.has_fire_event then
- -- EventSystem.Fire(GlobalEventSystem,EventName.SCENE_LOAD_VIEW_COMPLETE, true)
- -- self.has_fire_event = true
- -- end
- -- end
- -- if self.load_scene_finish_id then
- -- GlobalEventSystem:UnBind(self.load_scene_finish_id)
- -- self.load_scene_finish_id = nil
- -- end
- -- self.load_scene_finish_id = GlobalEventSystem:Bind(EventName.NPC_LOAD_FINISH, on_load_finish)
- -- setTimeout(on_delay, 1)
- -- on_delay()
-
- local function on_close( )
- self:TryClose()
- end
- setTimeout(on_close, 2.5)
-
-
- --[[
- self.show_type = 1
- local mainCam = MainCamera.Instance
- -- mainCam.camera.targetTexture = self.renderTexture
- -- mainCam.camera:Render()
- -- mainCam.camera.targetTexture = nil
-
-
- self.gameObject:SetActive(true)
- if self.timer_id then
- GlobalTimerQuest:CancelQuest(self.timer_id)
- self.timer_id = false
- end
- if self.delay_show_type2_id then
- GlobalTimerQuest:CancelQuest(self.delay_show_type2_id)
- self.delay_show_type2_id = false
- end
-
- local function onComplete1()
- if self.curr_value < 0.9 then
- self.curr_value = self.curr_value + 0.015 * Time.deltaTime / 0.02
- ShaderTools.dissolve_mat:SetFloat("_DissolveThreshold", self.curr_value)
- if self.curr_value > 0.7 then
- if not self.has_fire_event then
- EventSystem.Fire(GlobalEventSystem,EventName.SCENE_LOAD_VIEW_COMPLETE, true)
- self.has_fire_event = true
- end
- end
- else
- if self.timer_id then
- GlobalTimerQuest:CancelQuest(self.timer_id)
- self.timer_id = false
- end
- self:TryClose()
- end
- end
- self.curr_value = 0.3
- if ShaderTools.dissolve_mat then
- self.rawImage.material = ShaderTools.dissolve_mat
- ShaderTools.dissolve_mat:SetFloat("_DissolveThreshold", self.curr_value)
- self.timer_id = GlobalTimerQuest:AddPeriodQuest(onComplete1, 0.03, -1)
-
- -- setTimeout(show_effect,0.5)
- end
- ]]
- end
-
- function ChangeSceneMovie:TryClose()
- if self.renderTexture then
- UnityEngine.RenderTexture.ReleaseTemporary(self.renderTexture)
- self.renderTexture = nil
- end
- self.enabled = false
- if not IsNull(self.gameObject) then
- self.gameObject:SetActive(false)
- end
- if self.timer_id then
- GlobalTimerQuest:CancelQuest(self.timer_id)
- self.timer_id = false
- end
- if self.delay_show_type2_id then
- GlobalTimerQuest:CancelQuest(self.delay_show_type2_id)
- self.delay_show_type2_id = false
- end
- if not self.has_fire_event then
- EventSystem.Fire(GlobalEventSystem,EventName.NOTICE_SCENE_LOAD_WILL_COMPLETE, true)
- self.has_fire_event = true
- end
- if self.load_scene_finish_id then
- GlobalEventSystem:UnBind(self.load_scene_finish_id)
- self.load_scene_finish_id = nil
- end
- end
|