Skip to content

Commit 87ce892

Browse files
committed
only draw second renderer if were using the camera view, may need to verify its not double rendering
1 parent 909a316 commit 87ce892

File tree

3 files changed

+50
-31
lines changed

3 files changed

+50
-31
lines changed

include/DOM/CameraAnimationDOMNode.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ namespace CameraAnimation {
99
void CleanupPreview();
1010
void RenderPreview();
1111
void InitPreview();
12+
void SetPreviewActive();
13+
void SetPreviewInactive();
14+
bool GetPreviewActive();
1215
}
1316

1417
class LCameraAnimationDOMNode : public LBGRenderDOMNode

src/DOM/CameraAnimationDOMNode.cpp

Lines changed: 45 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,22 @@ static uint32_t mPreviewFbo { 0 }, mPreviewRbo { 0 }, mPreviewTex { 0 };
1111

1212
static glm::vec3 mEye, mCenter;
1313
static float mFovY { 90.0f };
14+
static bool Active { false };
1415

1516
namespace 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

91107
void 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(">"))

src/modes/EventMode.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,12 @@ void LEventMode::RenderGizmo(LEditorScene* renderer_scene){
107107

108108
void LEventMode::OnBecomeActive()
109109
{
110+
CameraAnimation::SetPreviewActive();
110111
std::cout << "[Booldozer]: Event mode switching in" << std::endl;
111-
112112
}
113113

114114
void LEventMode::OnBecomeInactive()
115115
{
116+
CameraAnimation::SetPreviewInactive();
116117
std::cout << "[Booldozer]: Event mode switching out" << std::endl;
117118
}

0 commit comments

Comments
 (0)