@@ -11,8 +11,22 @@ static uint32_t mPreviewFbo { 0 }, mPreviewRbo { 0 }, mPreviewTex { 0 };
1111
1212static glm::vec3 mEye , mCenter ;
1313static float mFovY { 90 .0f };
14+ static bool Active { false };
1415
1516namespace CameraAnimation {
17+ void SetPreviewActive (){
18+ Active = true ;
19+ }
20+
21+ void SetPreviewInactive (){
22+ Active = false ;
23+ }
24+
25+ bool GetPreviewActive (){
26+ return Active;
27+ }
28+
29+
1630 void InitPreview (){
1731 glGenFramebuffers (1 , &mPreviewFbo );
1832 glBindFramebuffer (GL_FRAMEBUFFER, mPreviewFbo );
@@ -50,35 +64,37 @@ namespace CameraAnimation {
5064 }
5165
5266 void RenderPreview (){
53- glBindFramebuffer (GL_FRAMEBUFFER, mPreviewFbo );
54- glBindRenderbuffer (GL_RENDERBUFFER, mPreviewRbo );
55-
56- glViewport (0 , 0 , 640 , 480 );
57- glClearColor (0 .100f , 0 .261f , 0 .402f , 1 .0f );
58- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
59-
60- auto scene = LEditorScene::GetEditorScene ();
61- auto eye = scene->Camera .GetEye ();
62- auto center = scene->Camera .GetCenter ();
63- auto fov = scene->Camera .Fovy ;
64- auto mode = scene->Camera .mCamMode ;
65- scene->Camera .mCamMode = ECamMode::ANIMATION;
66-
67- scene->Camera .SetEye (mEye );
68- scene->Camera .SetCenter (mCenter );
69- scene->Camera .Fovy = mFovY ;
70-
71- scene->Camera .UnRotate ();
72- scene->RenderSubmit (640 , 480 );
73- scene->Camera .ReRotate ();
74-
75- scene->Camera .mCamMode = mode;
76- scene->Camera .SetEye (eye);
77- scene->Camera .SetCenter (center);
78- scene->Camera .Fovy = fov;
79-
80- glBindFramebuffer (GL_FRAMEBUFFER, 0 );
81- glBindRenderbuffer (GL_RENDERBUFFER, 0 );
67+ if (Active){
68+ glBindFramebuffer (GL_FRAMEBUFFER, mPreviewFbo );
69+ glBindRenderbuffer (GL_RENDERBUFFER, mPreviewRbo );
70+
71+ glViewport (0 , 0 , 640 , 480 );
72+ glClearColor (0 .100f , 0 .261f , 0 .402f , 1 .0f );
73+ glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
74+
75+ auto scene = LEditorScene::GetEditorScene ();
76+ auto eye = scene->Camera .GetEye ();
77+ auto center = scene->Camera .GetCenter ();
78+ auto fov = scene->Camera .Fovy ;
79+ auto mode = scene->Camera .mCamMode ;
80+ scene->Camera .mCamMode = ECamMode::ANIMATION;
81+
82+ scene->Camera .SetEye (mEye );
83+ scene->Camera .SetCenter (mCenter );
84+ scene->Camera .Fovy = mFovY ;
85+
86+ scene->Camera .UnRotate ();
87+ scene->RenderSubmit (640 , 480 );
88+ scene->Camera .ReRotate ();
89+
90+ scene->Camera .mCamMode = mode;
91+ scene->Camera .SetEye (eye);
92+ scene->Camera .SetCenter (center);
93+ scene->Camera .Fovy = fov;
94+
95+ glBindFramebuffer (GL_FRAMEBUFFER, 0 );
96+ glBindRenderbuffer (GL_RENDERBUFFER, 0 );
97+ }
8298 }
8399
84100}
@@ -90,7 +106,6 @@ LCameraAnimationDOMNode::LCameraAnimationDOMNode(std::string name) : Super(name)
90106
91107void LCameraAnimationDOMNode::RenderDetailsUI (float dt, LSceneCamera* camera)
92108{
93-
94109 ImGui::Image (static_cast <uintptr_t >(mPreviewTex ), ImVec2 (640 , 480 ), {0 .0f , 1 .0f }, {1 .0f , 0 .0f });
95110
96111 if (ImGui::Button (" >" ))
0 commit comments