@@ -29,19 +29,19 @@ void Application::DrawMenu()
29
29
{
30
30
if (ImGui::MenuItem (" Plane" ))
31
31
{
32
- node_clicked = scene-> AddPrimitive (" plane" );
32
+ node_clicked = scene. AddPrimitive (" plane" );
33
33
}
34
34
if (ImGui::MenuItem (" Cube" ))
35
35
{
36
- node_clicked = scene-> AddPrimitive (" cube" );
36
+ node_clicked = scene. AddPrimitive (" cube" );
37
37
}
38
38
if (ImGui::MenuItem (" Sphere" ))
39
39
{
40
- node_clicked = scene-> AddPrimitive (" sphere" );
40
+ node_clicked = scene. AddPrimitive (" sphere" );
41
41
}
42
42
if (ImGui::MenuItem (" Cylinder" ))
43
43
{
44
- node_clicked = scene-> AddPrimitive (" cylinder" );
44
+ node_clicked = scene. AddPrimitive (" cylinder" );
45
45
}
46
46
if (ImGui::MenuItem (" Custom" ))
47
47
{
@@ -54,9 +54,9 @@ void Application::DrawMenu()
54
54
{
55
55
if (ImGui::MenuItem (" Directional Light" ))
56
56
{
57
- DirectionalLight* dir = new DirectionalLight ();
58
- strcpy (dir ->name , " directional light" );
59
- node_clicked = scene-> AddObject (dir );
57
+ std::shared_ptr< DirectionalLight> dirLight = std::make_shared< DirectionalLight> ();
58
+ strcpy (dirLight ->name , " directional light" );
59
+ node_clicked = scene. AddObject (dirLight );
60
60
}
61
61
ImGui::EndMenu ();
62
62
}
@@ -84,8 +84,8 @@ void Application::DrawInspector()
84
84
85
85
if (node_clicked != -1 )
86
86
{
87
- Object* object = scene-> objects [node_clicked];
88
-
87
+ std::shared_ptr< Object> object = scene. objects [node_clicked];
88
+
89
89
ImGui::Checkbox (" ##isEnabled" , &object->isEnabled );
90
90
ImGui::SameLine ();
91
91
ImGui::InputText (" ##name" , object->name , IM_ARRAYSIZE (object->name ));
@@ -98,7 +98,7 @@ void Application::DrawInspector()
98
98
99
99
if (object->GetType () == Type_Light)
100
100
{
101
- Light* light = ( Light*) object;
101
+ std::shared_ptr< Light> light = std::dynamic_pointer_cast< Light>( object) ;
102
102
103
103
ImGui::Text (" ------------Light------------" );
104
104
@@ -127,9 +127,9 @@ void Application::DrawHierarchy()
127
127
static ImGuiTreeNodeFlags base_flags = ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick | ImGuiTreeNodeFlags_SpanAvailWidth;
128
128
129
129
static int selection_mask = 0 ;
130
- for (int i = 0 ; i < scene-> objects .size (); i++)
130
+ for (int i = 0 ; i < scene. objects .size (); i++)
131
131
{
132
- Object* object = scene-> objects [i];
132
+ std::shared_ptr< Object> object = scene. objects [i];
133
133
ImGuiTreeNodeFlags node_flags = base_flags;
134
134
const bool is_selected = (selection_mask & (1 << i)) != 0 ;
135
135
if (is_selected)
@@ -159,7 +159,7 @@ void Application::DrawHierarchy()
159
159
160
160
if (ImGui::IsKeyPressed (ImGui::GetKeyIndex (ImGuiKey_Delete)))
161
161
{
162
- scene-> RemoveObject (node_clicked);
162
+ scene. RemoveObject (node_clicked);
163
163
node_clicked = -1 ;
164
164
}
165
165
}
@@ -182,9 +182,9 @@ void Application::DrawGizmo()
182
182
float windowHeight = (float )ImGui::GetWindowHeight ();
183
183
ImGuizmo::SetRect (ImGui::GetWindowPos ().x , ImGui::GetWindowPos ().y , windowWidth, windowHeight);
184
184
185
- Object* object = scene-> objects [node_clicked];
185
+ std::shared_ptr< Object> object = scene. objects [node_clicked];
186
186
187
- ImGuizmo::Manipulate (glm::value_ptr (scene-> camera -> view ), glm::value_ptr (scene-> camera -> projection ),
187
+ ImGuizmo::Manipulate (glm::value_ptr (scene. camera . view ), glm::value_ptr (scene. camera . projection ),
188
188
(ImGuizmo::OPERATION)gizmoType, ImGuizmo::LOCAL, glm::value_ptr (object->objectToWorld ));
189
189
190
190
if (ImGuizmo::IsUsing ())
@@ -214,19 +214,19 @@ void Application::ClickToSelect()
214
214
ScreenPosToWorldRay (
215
215
mouse.x , mouse.y ,
216
216
viewport.x , viewport.y ,
217
- camera-> view ,
218
- camera-> projection ,
217
+ camera. view ,
218
+ camera. projection ,
219
219
ray_origin,
220
220
ray_direction
221
221
);
222
222
223
223
node_clicked = -1 ;
224
- for (int i = 0 ; i < scene-> objects .size (); i++)
224
+ for (int i = 0 ; i < scene. objects .size (); i++)
225
225
{
226
- Object* object = scene-> objects [i];
226
+ std::shared_ptr< Object> object = scene. objects [i];
227
227
if (object->GetType () == Type_Mesh)
228
228
{
229
- Mesh* mesh = ( Mesh*) object;
229
+ std::shared_ptr< Mesh> mesh = std::dynamic_pointer_cast< Mesh>( object) ;
230
230
231
231
float intersection_distance; // Output of TestRayOBBIntersection()
232
232
@@ -262,15 +262,15 @@ void Application::DrawScene()
262
262
viewport = ImGui::GetWindowSize ();
263
263
windowPos = ImGui::GetWindowPos ();
264
264
265
- scene-> camera -> windowPos = glm::vec2 (windowPos.x , windowPos.y );
266
- scene-> camera -> viewport = glm::vec2 (viewport.x , viewport.y );
267
- openglRenderer-> viewport = glm::vec2 (viewport.x , viewport.y );
265
+ scene. camera . windowPos = glm::vec2 (windowPos.x , windowPos.y );
266
+ scene. camera . viewport = glm::vec2 (viewport.x , viewport.y );
267
+ openglRenderer. viewport = glm::vec2 (viewport.x , viewport.y );
268
268
269
269
// Because I use the texture from OpenGL, I need to invert the V from the UV.
270
270
if (postprocess)
271
- ImGui::Image ((ImTextureID)(intptr_t )openglRenderer-> outlineRT , viewport, ImVec2 (0 , 1 ), ImVec2 (1 , 0 ));
271
+ ImGui::Image ((ImTextureID)(intptr_t )openglRenderer. outlineRT , viewport, ImVec2 (0 , 1 ), ImVec2 (1 , 0 ));
272
272
else
273
- ImGui::Image ((ImTextureID)(intptr_t )openglRenderer-> renderTexture , viewport, ImVec2 (0 , 1 ), ImVec2 (1 , 0 ));
273
+ ImGui::Image ((ImTextureID)(intptr_t )openglRenderer. renderTexture , viewport, ImVec2 (0 , 1 ), ImVec2 (1 , 0 ));
274
274
275
275
ClickToSelect ();
276
276
@@ -288,13 +288,13 @@ void Application::DrawSceneCamera()
288
288
{
289
289
ImGui::Begin (" Scene Camera" , &showSceneCamera);
290
290
291
- ImGui::InputFloat3 (" Position" , (float *)&camera-> Position );
292
- ImGui::InputFloat (" Move Speed" , (float *)&camera-> speed );
293
- ImGui::InputFloat (" Sensitivity" , (float *)&camera-> sensitivity );
294
- ImGui::InputFloat (" Pan Speed" , (float *)&camera-> scenePanSpeed );
295
- ImGui::InputFloat (" Scroll Speed" , (float *)&camera-> sceneScrollSpeed );
291
+ ImGui::InputFloat3 (" Position" , (float *)&camera. Position );
292
+ ImGui::InputFloat (" Move Speed" , (float *)&camera. speed );
293
+ ImGui::InputFloat (" Sensitivity" , (float *)&camera. sensitivity );
294
+ ImGui::InputFloat (" Pan Speed" , (float *)&camera. scenePanSpeed );
295
+ ImGui::InputFloat (" Scroll Speed" , (float *)&camera. sceneScrollSpeed );
296
296
297
- ImGui::ColorEdit3 (" Background" , (float *)&camera-> clearColor );
297
+ ImGui::ColorEdit3 (" Background" , (float *)&camera. clearColor );
298
298
299
299
ImGui::Checkbox (" Post Process" , &postprocess);
300
300
@@ -308,7 +308,7 @@ void Application::DrawImage()
308
308
{
309
309
ImGui::SetNextWindowSize (window_size);
310
310
ImGui::Begin (" Render Result" , &showImage);
311
- ImGui::Image ((ImTextureID)(intptr_t )rasterizerRenderer-> renderTexture , content_size);
311
+ ImGui::Image ((ImTextureID)(intptr_t )rasterizerRenderer. renderTexture , content_size);
312
312
ImGui::End ();
313
313
}
314
314
}
@@ -319,20 +319,20 @@ void Application::DrawRasterizer()
319
319
{
320
320
ImGui::Begin (" Rasterizer" , &showRasterizer);
321
321
322
- ImGui::InputInt2 (" Size" , (int *)&rasterizerRenderer-> viewport );
322
+ ImGui::InputInt2 (" Size" , (int *)&rasterizerRenderer. viewport );
323
323
ImGui::SameLine ();
324
324
if (ImGui::Button (" Sync" ))
325
325
{
326
- rasterizerRenderer-> viewport .x = viewport.x ;
327
- rasterizerRenderer-> viewport .y = viewport.y ;
326
+ rasterizerRenderer. viewport .x = viewport.x ;
327
+ rasterizerRenderer. viewport .y = viewport.y ;
328
328
}
329
329
330
330
if (ImGui::Button (" rasterizer render" ))
331
331
{
332
- window_size = ImVec2 (rasterizerRenderer-> viewport .x + 20 , rasterizerRenderer-> viewport .y + 35 );
333
- content_size = ImVec2 (rasterizerRenderer-> viewport .x , rasterizerRenderer-> viewport .y );
332
+ window_size = ImVec2 (rasterizerRenderer. viewport .x + 20 , rasterizerRenderer. viewport .y + 35 );
333
+ content_size = ImVec2 (rasterizerRenderer. viewport .x , rasterizerRenderer. viewport .y );
334
334
335
- rasterizerRenderer-> Render (* scene);
335
+ rasterizerRenderer. Render (scene);
336
336
337
337
showImage = true ;
338
338
}
@@ -353,7 +353,7 @@ void Application::DrawCustomMeshPopup()
353
353
354
354
if (ImGui::Button (" Ok" ))
355
355
{
356
- node_clicked = scene-> AddPrimitive (customMeshName);
356
+ node_clicked = scene. AddPrimitive (customMeshName);
357
357
strcpy (customMeshName, " " );
358
358
showCustomMeshPopup = false ;
359
359
}
0 commit comments