From a5c79d5ad8739cfcaf3ba689e60af2dbd7b0fb7f Mon Sep 17 00:00:00 2001 From: omigamedev Date: Mon, 15 May 2017 21:38:44 +0100 Subject: [PATCH] update xcode project, skip drawing invisible layers, this will optimize animations --- data/layout.xml | 6 +++--- engine.xcodeproj/project.pbxproj | 28 +++++++++++++++++++++++++++- engine/node_canvas.cpp | 2 ++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/data/layout.xml b/data/layout.xml index 3561134..6872aad 100644 --- a/data/layout.xml +++ b/data/layout.xml @@ -54,9 +54,6 @@ - - - @@ -72,6 +69,9 @@ + + + diff --git a/engine.xcodeproj/project.pbxproj b/engine.xcodeproj/project.pbxproj index a734698..93a0cf6 100644 --- a/engine.xcodeproj/project.pbxproj +++ b/engine.xcodeproj/project.pbxproj @@ -7,6 +7,14 @@ objects = { /* Begin PBXBuildFile section */ + AD0E11971ECA20F200CDA6BB /* app_events.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11921ECA20F200CDA6BB /* app_events.cpp */; }; + AD0E11981ECA20F200CDA6BB /* app_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11931ECA20F200CDA6BB /* app_layout.cpp */; }; + AD0E11991ECA20F200CDA6BB /* app_shaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11941ECA20F200CDA6BB /* app_shaders.cpp */; }; + AD0E119A1ECA20F200CDA6BB /* node_scroll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11951ECA20F200CDA6BB /* node_scroll.cpp */; }; + AD0E119B1ECA215600CDA6BB /* node_scroll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11951ECA20F200CDA6BB /* node_scroll.cpp */; }; + AD0E119C1ECA215600CDA6BB /* app_events.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11921ECA20F200CDA6BB /* app_events.cpp */; }; + AD0E119D1ECA215600CDA6BB /* app_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11931ECA20F200CDA6BB /* app_layout.cpp */; }; + AD0E119E1ECA215600CDA6BB /* app_shaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11941ECA20F200CDA6BB /* app_shaders.cpp */; }; AD10637F1EC7ADFA002A525F /* node_border.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD1063511EC7ADFA002A525F /* node_border.cpp */; }; AD1063801EC7ADFA002A525F /* node_button_custom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD1063531EC7ADFA002A525F /* node_button_custom.cpp */; }; AD1063811EC7ADFA002A525F /* node_button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD1063551EC7ADFA002A525F /* node_button.cpp */; }; @@ -134,6 +142,11 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + AD0E11921ECA20F200CDA6BB /* app_events.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = app_events.cpp; sourceTree = ""; }; + AD0E11931ECA20F200CDA6BB /* app_layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = app_layout.cpp; sourceTree = ""; }; + AD0E11941ECA20F200CDA6BB /* app_shaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = app_shaders.cpp; sourceTree = ""; }; + AD0E11951ECA20F200CDA6BB /* node_scroll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = node_scroll.cpp; sourceTree = ""; }; + AD0E11961ECA20F200CDA6BB /* node_scroll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = node_scroll.h; sourceTree = ""; }; AD1063511EC7ADFA002A525F /* node_border.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = node_border.cpp; sourceTree = ""; }; AD1063521EC7ADFA002A525F /* node_border.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = node_border.h; sourceTree = ""; }; AD1063531EC7ADFA002A525F /* node_button_custom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = node_button_custom.cpp; sourceTree = ""; }; @@ -322,6 +335,8 @@ AD1063721EC7ADFA002A525F /* node_settings.h */, AD1063731EC7ADFA002A525F /* node_slider.cpp */, AD1063741EC7ADFA002A525F /* node_slider.h */, + AD0E11951ECA20F200CDA6BB /* node_scroll.cpp */, + AD0E11961ECA20F200CDA6BB /* node_scroll.h */, AD1063751EC7ADFA002A525F /* node_stroke_preview.cpp */, AD1063761EC7ADFA002A525F /* node_stroke_preview.h */, AD1063771EC7ADFA002A525F /* node_text_input.cpp */, @@ -374,6 +389,9 @@ AD29CC601EA2B214008C8BFA /* action.cpp */, AD29CC611EA2B214008C8BFA /* action.h */, AD58E0701E2A90EF006ACC15 /* app.cpp */, + AD0E11921ECA20F200CDA6BB /* app_events.cpp */, + AD0E11931ECA20F200CDA6BB /* app_layout.cpp */, + AD0E11941ECA20F200CDA6BB /* app_shaders.cpp */, AD58E0711E2A90EF006ACC15 /* app.h */, AD4C08CF1E89BD0F0051D85F /* asset.cpp */, AD4C08D01E89BD0F0051D85F /* asset.h */, @@ -394,7 +412,6 @@ ADB1C3DB1EA531B0009A65BD /* keymap.h */, AD8CF71F1E913F0500083FFD /* log.cpp */, AD8CF7201E913F0500083FFD /* log.h */, - AD58E0521E107411006ACC15 /* main.cpp */, AD95AEC51E41EDEC002DD03A /* pch.cpp */, AD58E06C1E2A78BD006ACC15 /* pch.h */, AD4C08D71E89BD0F0051D85F /* rtt.cpp */, @@ -407,6 +424,7 @@ AD58E06A1E2A774F006ACC15 /* texture.h */, ADB61C801E3D38450093280F /* util.cpp */, ADB61C811E3D38450093280F /* util.h */, + AD58E0521E107411006ACC15 /* main.cpp */, ); path = engine; sourceTree = ""; @@ -547,12 +565,15 @@ AD58E06F1E2A80BC006ACC15 /* shape.cpp in Sources */, AD58E0651E2A76FD006ACC15 /* shader.cpp in Sources */, AD4C08DA1E89BD0F0051D85F /* bezier.cpp in Sources */, + AD0E11991ECA20F200CDA6BB /* app_shaders.cpp in Sources */, AD10638F1EC7ADFA002A525F /* node_settings.cpp in Sources */, AD10638D1EC7ADFA002A525F /* node_panel_stroke.cpp in Sources */, AD1063841EC7ADFA002A525F /* node_color_quad.cpp in Sources */, AD1063881EC7ADFA002A525F /* node_image.cpp in Sources */, AD58E0761E3421F2006ACC15 /* YGNodeList.c in Sources */, AD744B6E1EBC9EF800B66E30 /* canvas_modes.cpp in Sources */, + AD0E11971ECA20F200CDA6BB /* app_events.cpp in Sources */, + AD0E119A1ECA20F200CDA6BB /* node_scroll.cpp in Sources */, AD10638E1EC7ADFA002A525F /* node_popup_menu.cpp in Sources */, ADB61C821E3D38450093280F /* util.cpp in Sources */, AD10637F1EC7ADFA002A525F /* node_border.cpp in Sources */, @@ -573,6 +594,7 @@ AD1063851EC7ADFA002A525F /* node_dialog_open.cpp in Sources */, AD58E0681E2A7741006ACC15 /* image.cpp in Sources */, AD1063901EC7ADFA002A525F /* node_slider.cpp in Sources */, + AD0E11981ECA20F200CDA6BB /* app_layout.cpp in Sources */, AD58E0771E3421F2006ACC15 /* Yoga.c in Sources */, AD4C08DB1E89BD0F0051D85F /* brush.cpp in Sources */, AD1063951EC7ADFA002A525F /* node.cpp in Sources */, @@ -603,12 +625,15 @@ ADD7D29A1EBF9E1C00D5A897 /* pch.cpp in Sources */, AD10639E1EC7AE92002A525F /* node_icon.cpp in Sources */, AD1063A71EC7AE92002A525F /* node_settings.cpp in Sources */, + AD0E119E1ECA215600CDA6BB /* app_shaders.cpp in Sources */, ADD7D29D1EBF9E1C00D5A897 /* main.cpp in Sources */, ADD7D29F1EBF9E1C00D5A897 /* app.cpp in Sources */, AD1063A41EC7AE92002A525F /* node_panel_layer.cpp in Sources */, AD1063AA1EC7AE92002A525F /* node_text_input.cpp in Sources */, + AD0E119B1ECA215600CDA6BB /* node_scroll.cpp in Sources */, ADD7D2941EBF9E1C00D5A897 /* asset.cpp in Sources */, ADD7D29B1EBF9E1C00D5A897 /* layout.cpp in Sources */, + AD0E119D1ECA215600CDA6BB /* app_layout.cpp in Sources */, AD1063991EC7AE92002A525F /* node_button.cpp in Sources */, ADD7D2931EBF9E1C00D5A897 /* log.cpp in Sources */, ADD7D2971EBF9E1C00D5A897 /* canvas.cpp in Sources */, @@ -630,6 +655,7 @@ ADD7D26F1EBF9AE300D5A897 /* main.m in Sources */, ADD7D2A01EBF9E1C00D5A897 /* image.cpp in Sources */, ADD7D2A11EBF9E1C00D5A897 /* texture.cpp in Sources */, + AD0E119C1ECA215600CDA6BB /* app_events.cpp in Sources */, ADD7D2961EBF9E1C00D5A897 /* brush.cpp in Sources */, AD1063A51EC7AE92002A525F /* node_panel_stroke.cpp in Sources */, ADD7D2911EBF9E1C00D5A897 /* event.cpp in Sources */, diff --git a/engine/node_canvas.cpp b/engine/node_canvas.cpp index 00ddfe0..9a15a16 100644 --- a/engine/node_canvas.cpp +++ b/engine/node_canvas.cpp @@ -92,6 +92,8 @@ void NodeCanvas::draw() ui::ShaderManager::u_int(kShaderUniform::Tex, 0); for (auto layer_index : m_canvas->m_order) { + if (m_canvas->m_layers[layer_index].m_opacity == .0f) + continue; int z = m_canvas->m_order.size() - layer_index; auto plane_mvp_z = proj * camera * glm::scale(glm::vec3(z)) * m_canvas->m_plane_transform[plane_index] * glm::translate(glm::vec3(0, 0, -1)); ui::ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z);