From a466065ac6d3580a7081f6ed4e6dcf76771d34b8 Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Wed, 12 Jul 2023 01:21:47 -0400 Subject: [PATCH] Progress towards finding transform corruption when drawing after loading scene --- Editor/resources/Models/Camera.gltf | 67 ++++++++++++++----- Editor/src/Misc/GizmoDrawer.cpp | 2 +- Editor/src/Windows/EditorInterface.cpp | 2 +- Nuake/src/Core/Physics/DynamicWorld.cpp | 7 +- Nuake/src/Rendering/Camera.cpp | 24 ++++++- Nuake/src/Rendering/Camera.h | 1 + .../src/Scene/Components/TransformComponent.h | 33 ++++++++- Nuake/src/Scene/Systems/TransformSystem.cpp | 9 ++- 8 files changed, 117 insertions(+), 28 deletions(-) diff --git a/Editor/resources/Models/Camera.gltf b/Editor/resources/Models/Camera.gltf index b1df5287..472b79b8 100644 --- a/Editor/resources/Models/Camera.gltf +++ b/Editor/resources/Models/Camera.gltf @@ -8,7 +8,8 @@ { "name" : "Scene", "nodes" : [ - 0 + 0, + 1 ] } ], @@ -16,6 +17,12 @@ { "mesh" : 0, "name" : "Cube", + "rotation" : [ + 0, + 0, + 0.027799464762210846, + 0.9996135234832764 + ], "scale" : [ 0.21287661790847778, 0.14901362359523773, @@ -26,12 +33,26 @@ 0, 0 ] + }, + { + "name" : "Camera", + "rotation" : [ + 0.483536034822464, + 0.33687159419059753, + -0.20870360732078552, + 0.7804827094078064 + ], + "translation" : [ + 7.358891487121582, + 4.958309173583984, + 6.925790786743164 + ] } ], "materials" : [ { "doubleSided" : true, - "name" : "Material", + "name" : "Material.001", "pbrMetallicRoughness" : { "baseColorFactor" : [ 0.800000011920929, @@ -46,15 +67,16 @@ ], "meshes" : [ { - "name" : "Cube", + "name" : "Cube.001", "primitives" : [ { "attributes" : { "POSITION" : 0, "NORMAL" : 1, - "TEXCOORD_0" : 2 + "TANGENT" : 2, + "TEXCOORD_0" : 3 }, - "indices" : 3, + "indices" : 4, "material" : 0 } ] @@ -64,7 +86,7 @@ { "bufferView" : 0, "componentType" : 5126, - "count" : 143, + "count" : 170, "max" : [ 0.2293514609336853, 0.20000004768371582, @@ -80,17 +102,23 @@ { "bufferView" : 1, "componentType" : 5126, - "count" : 143, + "count" : 170, "type" : "VEC3" }, { "bufferView" : 2, "componentType" : 5126, - "count" : 143, - "type" : "VEC2" + "count" : 170, + "type" : "VEC4" }, { "bufferView" : 3, + "componentType" : 5126, + "count" : 170, + "type" : "VEC2" + }, + { + "bufferView" : 4, "componentType" : 5123, "count" : 204, "type" : "SCALAR" @@ -99,29 +127,34 @@ "bufferViews" : [ { "buffer" : 0, - "byteLength" : 1716, + "byteLength" : 2040, "byteOffset" : 0 }, { "buffer" : 0, - "byteLength" : 1716, - "byteOffset" : 1716 + "byteLength" : 2040, + "byteOffset" : 2040 }, { "buffer" : 0, - "byteLength" : 1144, - "byteOffset" : 3432 + "byteLength" : 2720, + "byteOffset" : 4080 + }, + { + "buffer" : 0, + "byteLength" : 1360, + "byteOffset" : 6800 }, { "buffer" : 0, "byteLength" : 408, - "byteOffset" : 4576 + "byteOffset" : 8160 } ], "buffers" : [ { - "byteLength" : 4984, - "uri" : "data:application/octet-stream;base64,gL4uvlzOvj1czr69gL4uvlzOvj1czr69gL4uvlzOvj1czr69gL4uvljOvr1czr69gL4uvljOvr1czr69gL4uvljOvr1czr69gL4uvljOvr1czr69gL4uvlzOvj1czr49gL4uvlzOvj1czr49gL4uvlzOvj1czr49gL4uvlzOvj1czr49gL4uvljOvr1czr49gL4uvljOvr1czr49gL4uvljOvr1czr49gL4uvljOvr1czr49psW9vnSJNL50iTS+psW9vnSJNL50iTS+psW9vnSJNL50iTS+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDo+Jh65vkB4Or5AeDo+Jh65vkB4Or5AeDo+Jh65vkB4Or5AeDo+psW9vnSJNL50iTQ+psW9vnSJNL50iTQ+psW9vnSJNL50iTQ+Jh65vkR4Oj5AeDo+Jh65vkR4Oj5AeDo+Jh65vkR4Oj5AeDo+Jh65vkR4Oj5AeDo+psW9vnSJND50iTQ+psW9vnSJND50iTQ+psW9vnSJND50iTQ+psW9vnSJND50iTS+psW9vnSJND50iTS+psW9vnSJND50iTS+Jh65vkR4Oj5AeDq+Jh65vkR4Oj5AeDq+Jh65vkR4Oj5AeDq+Jh65vkR4Oj5AeDq+ALZhPrCnQz7MzEy+ALZhPrCnQz7MzEy+ALZhPrCnQz7MzEy+ALZhPrCnQz7MzEy+ALZhPtDMTD6wp0O+ALZhPtDMTD6wp0O+ALZhPtDMTD6wp0O+ALZhPtDMTD6wp0O+HNtqPrCnQz6wp0O+HNtqPrCnQz6wp0O+HNtqPrCnQz6wp0O+HNtqPrCnQz6wp0O+ALZhPszMTL6wp0O+ALZhPszMTL6wp0O+ALZhPszMTL6wp0O+ALZhPszMTL6wp0O+ALZhPqynQ77MzEy+ALZhPqynQ77MzEy+ALZhPqynQ77MzEy+ALZhPqynQ77MzEy+HNtqPqynQ76wp0O+HNtqPqynQ76wp0O+HNtqPqynQ76wp0O+HNtqPqynQ76wp0O+HNtqPrCnQz6wp0M+HNtqPrCnQz6wp0M+HNtqPrCnQz6wp0M+HNtqPrCnQz6wp0M+ALZhPtDMTD6wp0M+ALZhPtDMTD6wp0M+ALZhPtDMTD6wp0M+ALZhPtDMTD6wp0M+ALZhPrCnQz7MzEw+ALZhPrCnQz7MzEw+ALZhPrCnQz7MzEw+ALZhPrCnQz7MzEw+HNtqPqynQ76wp0M+HNtqPqynQ76wp0M+HNtqPqynQ76wp0M+HNtqPqynQ76wp0M+ALZhPqynQ77MzEw+ALZhPqynQ77MzEw+ALZhPqynQ77MzEw+ALZhPqynQ77MzEw+ALZhPszMTL6wp0M+ALZhPszMTL6wp0M+ALZhPszMTL6wp0M+ALZhPszMTL6wp0M+gL4uvqynQ76wp0O+gL4uvqynQ76wp0O+gL4uvqynQ76wp0O+gL4uvqynQ76wp0O+gL4uvqynQ76wp0O+ZJklvqynQ77MzEy+ZJklvqynQ77MzEy+ZJklvqynQ77MzEy+ZJklvqynQ77MzEy+ZJklvszMTL6wp0O+ZJklvszMTL6wp0O+ZJklvszMTL6wp0O+ZJklvszMTL6wp0O+ZJklvszMTL6wp0M+ZJklvszMTL6wp0M+ZJklvszMTL6wp0M+ZJklvszMTL6wp0M+ZJklvqynQ77MzEw+ZJklvqynQ77MzEw+ZJklvqynQ77MzEw+ZJklvqynQ77MzEw+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+ZJklvrCnQz7MzEw+ZJklvrCnQz7MzEw+ZJklvrCnQz7MzEw+ZJklvrCnQz7MzEw+ZJklvtDMTD6wp0M+ZJklvtDMTD6wp0M+ZJklvtDMTD6wp0M+ZJklvtDMTD6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+ZJklvtDMTD6wp0O+ZJklvtDMTD6wp0O+ZJklvtDMTD6wp0O+ZJklvtDMTD6wp0O+ZJklvrCnQz7MzEy+ZJklvrCnQz7MzEy+ZJklvrCnQz7MzEy+ZJklvrCnQz7MzEy+AACAvwAAAAAAAACARTPYPgAAAACLDmi/SzPYPooOaD8AAACAAACAvwAAAAAAAACA//9/vwAAAAAAAACARTPYPgAAAACLDmi/RjPYPowOaL8AAACAAACAvwAAAABDvo+0AACAvwAAAAAAAACARTPYPgAAAACLDmg/SzPYPooOaD8AAACAAACAvwAAAABDvo+0//9/vwAAAAAAAACARTPYPgAAAACLDmg/RjPYPowOaL8AAACAAACAvwAAAAAAAACAW5cJvwAAAACQ4Ve/TpcJv5nhV78AAACAW5cJvwAAAACQ4Ve/TpcJv5nhV78AAACARTPYPgAAAACLDmi/RjPYPowOaL8AAACAW5cJvwAAAACQ4Vc/TpcJv5nhV78AAACARTPYPgAAAACLDmg/RjPYPowOaL8AAACAAACAvwAAAAAAAACAW5cJvwAAAACQ4Vc/TpcJv5nhV78AAACAkpcJv2zhVz8AAACAW5cJvwAAAACQ4Vc/RTPYPgAAAACLDmg/SzPYPooOaD8AAACAAACAvwAAAAAAAACAkpcJv2zhVz8AAACAW5cJvwAAAACQ4Vc/AACAvwAAAAAAAACAkpcJv2zhVz8AAACAW5cJvwAAAACQ4Ve/kpcJv2zhVz8AAACAW5cJvwAAAACQ4Ve/RTPYPgAAAACLDmi/SzPYPooOaD8AAACAAAAAAAAAAAAAAIC/AAAAAM0ENT8ZBTW/Tc0TPxTNEz9NzRO/8AQ1PwAAAAD3BDW/AAAAAM0ENT8ZBTW/AAAAAAAAgD8AAACATc0TPxTNEz9NzRO/HAU1P8oENT8AAACATc0TPxTNEz9NzRO/8AQ1PwAAAAD3BDW/HAU1P8oENT8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAM0ENb8ZBTW/Tc0TPxTNE79NzRO/HAU1P8oENb8AAACAAAAAAM0ENb8ZBTW/AAAAAAAAAAAAAIC/Tc0TPxTNE79NzRO/8AQ1PwAAAAD3BDW/Tc0TPxTNE79NzRO/8AQ1PwAAAAD3BDW/HAU1P8oENb8AAACAAACAPwAAAAAAAACATc0TPxTNEz9NzRM/8AQ1PwAAAAD3BDU/HAU1P8oENT8AAACAAACAPwAAAAAAAACAAAAAAM0ENT8ZBTU/AAAAAAAAgD8AAACATc0TPxTNEz9NzRM/HAU1P8oENT8AAACAAAAAAAAAAAAAAIA/AAAAAM0ENT8ZBTU/Tc0TPxTNEz9NzRM/8AQ1PwAAAAD3BDU/Tc0TPxTNE79NzRM/8AQ1PwAAAAD3BDU/HAU1P8oENb8AAACAAACAPwAAAAAAAACAAAAAAM0ENb8ZBTU/AAAAAAAAAAAAAIA/Tc0TPxTNE79NzRM/8AQ1PwAAAAD3BDU/AAAAAAAAgL8AAACAAAAAAM0ENb8ZBTU/Tc0TPxTNE79NzRM/HAU1P8oENb8AAACAAACAvwAAAAAAAACA//9/vwAAAAAAAACAHAU1v8oENb8AAACA8AQ1vwAAAAD3BDW/Tc0TvxTNE79NzRO/8AQ1vwAAAAD3BDW/Tc0TvxTNE79NzRO/AAAAAM0ENb8ZBTW/AAAAAAAAAAAAAIC/HAU1v8oENb8AAACATc0TvxTNE79NzRO/AAAAAAAAgL8AAACAAAAAAM0ENb8ZBTW/HAU1v8oENb8AAACATc0TvxTNE79NzRM/AAAAAAAAgL8AAACAAAAAAM0ENb8ZBTU/8AQ1vwAAAAD3BDU/Tc0TvxTNE79NzRM/AAAAAM0ENb8ZBTU/AAAAAAAAAAAAAIA/AACAvwAAAABDvo+0//9/vwAAAAAAAACAHAU1v8oENb8AAACA8AQ1vwAAAAD3BDU/Tc0TvxTNE79NzRM/8AQ1vwAAAAD3BDU/Tc0TvxTNEz9NzRM/AAAAAAAAAAAAAIA/AAAAAM0ENT8ZBTU/HAU1v8oENT8AAACATc0TvxTNEz9NzRM/AAAAAM0ENT8ZBTU/AAAAAAAAgD8AAACAAACAvwAAAABDvo+0AACAvwAAAAAAAACAHAU1v8oENT8AAACA8AQ1vwAAAAD3BDU/Tc0TvxTNEz9NzRM/AACAvwAAAAAAAACAAACAvwAAAAAAAACAHAU1v8oENT8AAACA8AQ1vwAAAAD3BDW/Tc0TvxTNEz9NzRO/HAU1v8oENT8AAACATc0TvxTNEz9NzRO/AAAAAM0ENT8ZBTW/AAAAAAAAgD8AAACA8AQ1vwAAAAD3BDW/Tc0TvxTNEz9NzRO/AAAAAAAAAAAAAIC/AAAAAM0ENT8ZBTW/H+gOP+EXUT8f6A4/4RdRPx/oDj/hF1E/wS/iPuEXUT/BL+I+4RdRP8Ev4j7hF1E/wS/iPuEXUT8f6A4/H+huPx/oDj8f6G4/H+gOPx/obj8f6A4/H+huP8Ev4j4f6G4/wS/iPh/obj/BL+I+H+huP8Ev4j4f6G4/hMrjPkPlUT+EyuM+Q+VRP4TK4z5D5VE/wS/iPuEXUT/BL+I+4RdRP8Ev4j7hF1E/wS/iPuEXUT/CL+I+H+huP8Ev4j4f6G4/wi/iPh/obj/BL+I+H+huP4TK4z69Gm4/hMrjPr0abj+EyuM+vRpuPx/oDj8f6G4/H+gOPx/obj8f6A4/H+huPx/oDj8f6G4/vBoOP70abj+8Gg4/vRpuP7waDj+9Gm4/vBoOP0PlUT+8Gg4/Q+VRP7waDj9D5VE/H+gOP+EXUT8g6A4/4RdRPyDoDj/hF1E/H+gOP+EXUT80kh4/zG0BPzSSHj/MbQE/NJIeP8xtAT80kh4/zG0BPwAAID/MbQE/zG0hP2Yk/T4AACA/zG0BP8xtIT9mJP0+NJIePwAAAD8zkh4/aCT9PjOSHj9oJP0+M5IeP2gk/T5mJL0+aCT9PmYkvT5oJP0+ZiS9Pmgk/T5mJL0+aCT9PmYkvT4AAAA/mdvCPs1tAT9mJL0+AAAAP5nbwj7NbQE/AADAPmgk/T6Z28I+ZiT9Ppnbwj5mJP0+mdvCPmYk/T4BACA/mtuCPjSSHj+Y24I+NJIeP5jbgj40kh4/mNuCPgEAID/QSHo+zG0hP5rbgj4AACA/mtuCPsxtIT+a24I+M5IeP8xIej4zkh4/zEh6Ps1tIT8AAIA+M5IeP8xIej6Z28I+AACAPpnbwj6a24I+mdvCPprbgj6Z28I+mtuCPmYkvT4AAIA+mdvCPsxIej4AAMA+0Eh6Ppnbwj7MSHo+ZyS9Ppjbgj5nJL0+mNuCPgAAwD7QSHo+ZyS9Ppjbgj6Z28I+zW1BP5rbwj7NbUE/AAAAPmgk/T6Z28I+zW1BP5nbwj4AAEA/mdvCPjSSPj8AAMA+NJI+PzK3BT4AAAA/mdvCPjSSPj8ytwU+ZiT9PgAAwD40kj4/MrcFPmYk/T4ytwU+ZiT9PjK3BT6a24I+MrcFPprbgj4ytwU+mtuCPjK3BT6a24I+mdvCPoDmtjsytwU+AACAPjK3BT4AAIA+mdvCPoDmtjua28I+M5J+P5nbwj4zkn4/AAAAPprbgj6Y28I+AAAAAAAAAD6a24I+NJIePwDmtjs0kh4/AOa2OzSSHj8A5rY7NJIePwDmtjs0kl4/mNuCPgAAID8A5rY7AAAgPwDmtjs0kl4/mNuCPjOSHj8zkn4/M5IePzOSfj8AAGA/mtuCPjSSHj8AAAAANJIePwAAAAAzkh4/zG1BPzOSHj/NbUE/AABgP2gk/T4zkh4/zG1BPwAAYD9mJP0+M5JeP2gk/T4AAGA/aCT9PgEAID8zkj4/M5JeP2gk/T4zkh4/NJI+PzOSXj8AAAA/M5IePzSSPj8zkh4/NJI+P2YANwBXAGYAVwBqAAwABABcAAwAXABxAA0ACQAfAA0AHwAYAFQASwB3AFQAdwBvADAAigB8ADAAfABIAEIANgBGAEIARgBSAAMAAACCAAMAggBbAAAACAB+AAAAfgCDAAcACwBwAAcAcAB9AAEABQAUAAEAFAApABoAIQAkABoAJAAPAAoAAgAqAAoAKgAgABMAFwAcABMAHAARABYAHgAjABYAIwAbACgAEgAQACgAEAAmAB0AJwAlAB0AJQAiAAYADgAZAAYAGQAVAC0AMQAzADkAPQA/AEMASQBNAE8AVQBZAF8AYQBlAGkAbQB0AHYAegCBAIYAiACMAGQAaAByAGQAcgBdADgAZwBiADgAYgA7ADQAQAA+ADQAPgAuAGwAdQCAAGwAgABzAE4AVgBQAE4AUABEAIsAYABeAIsAXgCFAEcAewB4AEcAeABMADIASgBFADIARQA1AGsAWABTAGsAUwBuAHkAhwCEAHkAhAB/AIkALwAsAIkALACOAFoAOgBBAFoAQQBRAGMAjQArAGMAKwA8AA==" + "byteLength" : 8568, + "uri" : "data:application/octet-stream;base64,gL4uvlzOvj1czr69gL4uvlzOvj1czr69gL4uvlzOvj1czr69gL4uvlzOvj1czr69gL4uvlzOvj1czr69gL4uvljOvr1czr69gL4uvljOvr1czr69gL4uvljOvr1czr69gL4uvljOvr1czr69gL4uvljOvr1czr69gL4uvljOvr1czr69gL4uvlzOvj1czr49gL4uvlzOvj1czr49gL4uvlzOvj1czr49gL4uvlzOvj1czr49gL4uvlzOvj1czr49gL4uvljOvr1czr49gL4uvljOvr1czr49gL4uvljOvr1czr49gL4uvljOvr1czr49gL4uvljOvr1czr49psW9vnSJNL50iTS+psW9vnSJNL50iTS+psW9vnSJNL50iTS+psW9vnSJNL50iTS+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDq+Jh65vkB4Or5AeDo+Jh65vkB4Or5AeDo+Jh65vkB4Or5AeDo+Jh65vkB4Or5AeDo+Jh65vkB4Or5AeDo+Jh65vkB4Or5AeDo+psW9vnSJNL50iTQ+psW9vnSJNL50iTQ+psW9vnSJNL50iTQ+psW9vnSJNL50iTQ+Jh65vkR4Oj5AeDo+Jh65vkR4Oj5AeDo+Jh65vkR4Oj5AeDo+Jh65vkR4Oj5AeDo+Jh65vkR4Oj5AeDo+psW9vnSJND50iTQ+psW9vnSJND50iTQ+psW9vnSJND50iTQ+psW9vnSJND50iTQ+psW9vnSJND50iTS+psW9vnSJND50iTS+psW9vnSJND50iTS+Jh65vkR4Oj5AeDq+Jh65vkR4Oj5AeDq+Jh65vkR4Oj5AeDq+Jh65vkR4Oj5AeDq+Jh65vkR4Oj5AeDq+Jh65vkR4Oj5AeDq+ALZhPrCnQz7MzEy+ALZhPrCnQz7MzEy+ALZhPrCnQz7MzEy+ALZhPrCnQz7MzEy+ALZhPtDMTD6wp0O+ALZhPtDMTD6wp0O+ALZhPtDMTD6wp0O+ALZhPtDMTD6wp0O+ALZhPtDMTD6wp0O+HNtqPrCnQz6wp0O+HNtqPrCnQz6wp0O+HNtqPrCnQz6wp0O+HNtqPrCnQz6wp0O+ALZhPszMTL6wp0O+ALZhPszMTL6wp0O+ALZhPszMTL6wp0O+ALZhPszMTL6wp0O+ALZhPqynQ77MzEy+ALZhPqynQ77MzEy+ALZhPqynQ77MzEy+ALZhPqynQ77MzEy+HNtqPqynQ76wp0O+HNtqPqynQ76wp0O+HNtqPqynQ76wp0O+HNtqPqynQ76wp0O+HNtqPqynQ76wp0O+HNtqPqynQ76wp0O+HNtqPrCnQz6wp0M+HNtqPrCnQz6wp0M+HNtqPrCnQz6wp0M+HNtqPrCnQz6wp0M+HNtqPrCnQz6wp0M+HNtqPrCnQz6wp0M+ALZhPtDMTD6wp0M+ALZhPtDMTD6wp0M+ALZhPtDMTD6wp0M+ALZhPtDMTD6wp0M+ALZhPrCnQz7MzEw+ALZhPrCnQz7MzEw+ALZhPrCnQz7MzEw+ALZhPrCnQz7MzEw+HNtqPqynQ76wp0M+HNtqPqynQ76wp0M+HNtqPqynQ76wp0M+HNtqPqynQ76wp0M+ALZhPqynQ77MzEw+ALZhPqynQ77MzEw+ALZhPqynQ77MzEw+ALZhPqynQ77MzEw+ALZhPszMTL6wp0M+ALZhPszMTL6wp0M+ALZhPszMTL6wp0M+ALZhPszMTL6wp0M+ALZhPszMTL6wp0M+gL4uvqynQ76wp0O+gL4uvqynQ76wp0O+gL4uvqynQ76wp0O+gL4uvqynQ76wp0O+gL4uvqynQ76wp0O+ZJklvqynQ77MzEy+ZJklvqynQ77MzEy+ZJklvqynQ77MzEy+ZJklvqynQ77MzEy+ZJklvszMTL6wp0O+ZJklvszMTL6wp0O+ZJklvszMTL6wp0O+ZJklvszMTL6wp0O+ZJklvszMTL6wp0O+ZJklvszMTL6wp0M+ZJklvszMTL6wp0M+ZJklvszMTL6wp0M+ZJklvszMTL6wp0M+ZJklvqynQ77MzEw+ZJklvqynQ77MzEw+ZJklvqynQ77MzEw+ZJklvqynQ77MzEw+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+gL4uvqynQ76wp0M+ZJklvrCnQz7MzEw+ZJklvrCnQz7MzEw+ZJklvrCnQz7MzEw+ZJklvrCnQz7MzEw+ZJklvtDMTD6wp0M+ZJklvtDMTD6wp0M+ZJklvtDMTD6wp0M+ZJklvtDMTD6wp0M+ZJklvtDMTD6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0M+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+gL4uvrCnQz6wp0O+ZJklvtDMTD6wp0O+ZJklvtDMTD6wp0O+ZJklvtDMTD6wp0O+ZJklvtDMTD6wp0O+ZJklvrCnQz7MzEy+ZJklvrCnQz7MzEy+ZJklvrCnQz7MzEy+ZJklvrCnQz7MzEy+AACAvwAAAACMRFu0AACAvwAAAAAAAACAQjPYPgAAAACLDmi/RjPYPgAAAACJDmi/SDPYPosOaD8AAACAAACAvwAAAACMRFu0AACAvwAAAABp1dU0AACAvwAAAAAAAACAQjPYPgAAAACLDmi/RDPYPosOaL8AAACARTPYPosOaL8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAQjPYPgAAAACLDmg/SDPYPosOaD8AAACASTPYPooOaD8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAQjPYPgAAAACLDmg/RjPYPgAAAACJDmg/RTPYPosOaL8AAACAAACAvwAAAAAAAACAU5cJvwAAAACV4Ve/TJcJvwAAAACa4Ve/bZcJv4XhV78AAACAU5cJvwAAAACV4Ve/bZcJv4XhV78AAACAKJcJv7DhV78AAACAQjPYPgAAAACLDmi/RjPYPgAAAACJDmi/RDPYPosOaL8AAACAiZcJvwAAAAB04Vc/OJcJvwAAAACm4Vc/KJcJv7DhV78AAACARjPYPgAAAACJDmg/RDPYPosOaL8AAACARTPYPosOaL8AAACAAACAvwAAAAAAAACAiZcJvwAAAAB04Vc/bZcJv4XhV78AAACAKJcJv7DhV78AAACAm5cJv2jhVz8AAACAOJcJvwAAAACm4Vc/QjPYPgAAAACLDmg/RjPYPgAAAACJDmg/STPYPooOaD8AAACAAACAvwAAAAAAAACAnJcJv2fhVz8AAACAiZcJvwAAAAB04Vc/OJcJvwAAAACm4Vc/AACAvwAAAAAAAACAgpcJv3fhVz8AAACATJcJvwAAAACa4Ve/gpcJv3fhVz8AAACAU5cJvwAAAACV4Ve/TJcJvwAAAACa4Ve/RjPYPgAAAACJDmi/SDPYPosOaD8AAACASTPYPooOaD8AAACAAAAAAAAAAAAAAIC/AAAAAM0ENT8ZBTW/Tc0TPxTNEz9NzRO/8AQ1PwAAAAD3BDW/AAAAAM0ENT8ZBTW/AAAAAAAAgD8AAACATc0TPxTNEz9NzRO/EAU1P9cENT8AAACAKQU1P70ENT8AAACATc0TPxTNEz9NzRO/8AQ1PwAAAAD3BDW/EAU1P9cENT8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAM0ENb8ZBTW/Tc0TPxTNE79NzRO/KQU1P70ENb8AAACAAAAAAM0ENb8ZBTW/AAAAAAAAAAAAAIC/Tc0TPxTNE79NzRO/8AQ1PwAAAAD3BDW/Tc0TPxTNE79NzRO/8AQ1PwAAAAD3BDW/EAU1P9cENb8AAACAKQU1P70ENb8AAACA//9/PwAAAAAAAACAAACAPwAAAAAAAACATc0TPxTNEz9NzRM/8AQ1PwAAAAD3BDU/EAU1P9cENT8AAACAKQU1P70ENT8AAACA//9/PwAAAAAAAACAAACAPwAAAAAAAACAAAAAAM0ENT8ZBTU/AAAAAAAAgD8AAACATc0TPxTNEz9NzRM/KQU1P70ENT8AAACAAAAAAAAAAAAAAIA/AAAAAM0ENT8ZBTU/Tc0TPxTNEz9NzRM/8AQ1PwAAAAD3BDU/Tc0TPxTNE79NzRM/8AQ1PwAAAAD3BDU/EAU1P9cENb8AAACA//9/PwAAAAAAAACAAAAAAM0ENb8ZBTU/AAAAAAAAAAAAAIA/Tc0TPxTNE79NzRM/8AQ1PwAAAAD3BDU/AAAAAAAAgL8AAACAAAAAAM0ENb8ZBTU/Tc0TPxTNE79NzRM/EAU1P9cENb8AAACAKQU1P70ENb8AAACAAACAvwAAAABp1dU0AACAvwAAAAAAAACAEAU1v9cENb8AAACA8AQ1vwAAAAD3BDW/Tc0TvxTNE79NzRO/8AQ1vwAAAAD3BDW/Tc0TvxTNE79NzRO/AAAAAM0ENb8ZBTW/AAAAAAAAAAAAAIC/KQU1v70ENb8AAACAEAU1v9cENb8AAACATc0TvxTNE79NzRO/AAAAAAAAgL8AAACAAAAAAM0ENb8ZBTW/KQU1v70ENb8AAACATc0TvxTNE79NzRM/AAAAAAAAgL8AAACAAAAAAM0ENb8ZBTU/8AQ1vwAAAAD3BDU/Tc0TvxTNE79NzRM/AAAAAM0ENb8ZBTU/AAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAACAvwAAAAAAAACAKQU1v70ENb8AAACAEAU1v9cENb8AAACA8AQ1vwAAAAD3BDU/Tc0TvxTNE79NzRM/8AQ1vwAAAAD3BDU/Tc0TvxTNEz9NzRM/AAAAAAAAAAAAAIA/AAAAAM0ENT8ZBTU/KQU1v70ENT8AAACAEAU1v9cENT8AAACATc0TvxTNEz9NzRM/AAAAAM0ENT8ZBTU/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAEAU1v9cENT8AAACA8AQ1vwAAAAD3BDU/Tc0TvxTNEz9NzRM/AACAvwAAAACMRFu0AACAvwAAAABp1dU0AACAvwAAAAAAAACAKQU1v70ENT8AAACAEAU1v9cENT8AAACA8AQ1vwAAAAD3BDW/Tc0TvxTNEz9NzRO/KQU1v70ENT8AAACATc0TvxTNEz9NzRO/AAAAAM0ENT8ZBTW/AAAAAAAAgD8AAACA8AQ1vwAAAAD3BDW/Tc0TvxTNEz9NzRO/AAAAAAAAAAAAAIC/AAAAAM0ENT8ZBTW/AAAAAAAAgD8AAACAAACAPwAAAAAAAIA/yvuSswAAgD8AAIA/AAAAAAAAAIAAAIC/AACAPwAAAAAAAACAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAACAPwAAAIAAAIA/RjLoKQAAgD/r/Yo0AACAPwAAAAAAAIA/AAAAgAAAgD8AAIA/AAAAAAAAAIAAAIC/AACAPwAAAAAAAACAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAgD8AAACAAACAPwAAgD8AAAAAAAAAgAAAgL8AAIA/AAAAAAAAAIAAAIC/AACAPwAAAAAAAACAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAACAP877krMAAIA/AACAPwAAAAAAAACAAACAvwAAgD8AAAAAAAAAgAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAACAPwAAAIAAAIA/ye5Iv3YQAD/TNLu+AACAPwAAAAAAAIA/AAAAgAAAgD/K7ki/dhAAP9M0u74AAIA/41pKvyv4AD+qYrI+AACAPwAAgD8AAAAAAAAAgAAAgL8AAIA/AAAAAAAAAIAAAIC/AACAPwAAAAAAAACAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAA//9/PwAAAIAAAIA/41pKvyv4AD+qYrI+AACAPwAAgD8AAAAAAAAAgAAAgL8AAIA/AAAAAAAAAIAAAIC/AACAPwAAAAAAAACAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAACAPwAAAIAAAIA/yu5Iv3cQAD/VNLu+AACAP+NaSr8r+AA/qmKyPgAAgD9iYEo/Q/wAP+A9sr4AAIA/AAAAAAAAgD8AAACAAACAPwAAgD8AAAAAAAAAgAAAgL8AAIA/AAAAAAAAAIAAAIC/AACAPwAAAAAAAACAAACAvwAAAAAAAIA/AAAAgAAAgD+07kg/pRAAP7Q0u74AAIA/AAAAAP//fz8AAACAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAACAPwAAAIAAAIA/CBRLP6FuAT8Zsq0+AACAPwAAAAAAAIA/AAAAgAAAgD+yWko/gvgAP4pisj4AAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAIA/AAAAgAAAgD8AAIA/AAAAAAAAAIAAAIC/AACAPwAAAAAAAACAAACAvwAAgD8AAAAAAAAAgAAAgL/ZegO0AACAPwAAAIAAAIA/NIYqtBgFNT/NBDU/AACAP6DAOLQZBTU/zwQ1PwAAgD/hsAW0AACAP92wBbQAAIA/AAAAABkFNT/NBDU/AACAP///f78AAAAAGy4gMQAAgD+gwDi0GAU1P88ENT8AAIA/1gQ1vxEFNT8xXv22AACAP74ENb8qBTU/iqL4NgAAgD+gwDi0GQU1P88ENT8AAIA/qg8AtP//fz+mDwC0AACAP9YENb8QBTU/MV79tgAAgD8AAAAAAACAP5b7hTQAAIA/AACAPwAAAACS+4U0AACAPwAAgD9JWbSx/Vi0MQAAgD/PBDU/GAU1P6DAOLQAAIA/vAQ1PykFNT+Aovi2AACAPwAAgD8AAAAAAAAAgAAAgD/XeoO0AACAPwAAAIAAAIA/zwQ1PxkFNT+gwDi0AACAPyhaADT//38/JFoANAAAgD/PBDU/GQU1P6DAOLQAAIA/X/sFNAAAgD9b+wU0AACAP9cENT8QBTU/OV79NgAAgD++BDU/KwU1P4Ki+LYAAIA/AAAAAAAAgD/ZeoO0AACAPwAAAAAAAIA/lvuFNAAAgD/PBDU/GQU1v6DAODQAAIC/srAFNAAAgD+usAW0AACAP9YENb8QBTU/Ml79tgAAgD++BDW/KwU1P4ui+DYAAIA/AAAAAAAAgD/ZeoO0AACAPwAAAAAAAIA/lvuFNAAAgD8FCvi2GQU1P80ENb8AAIA/AACAvwAAAADXeoO0AACAP88ENT8YBTW/oMA4NAAAgL+8BDW/KQU1P4mi+DYAAIA/AAAAAAAAgD8AAACAAACAPzVe/bYZBTU/zAQ1vwAAgD/PBDU/GQU1v6DAODQAAIC/3+ACNP//fz/b4AK0AACAPwAAgD8AAAAAAAAAgAAAgL989DMx//9/P3f0M7EAAIA/1gQ1Pw8FNT83Xv02AACAPwAAAAAAAIA/2XqDtAAAgD8AAIA/iyqDtFMqg7QAAIA/13oDNAAAgD8AAACAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAACAPwAAAIAAAIA///9/PwAAAABhLyAxAACAPwAAgD/y+4W0ufuFtAAAgD8AAIA/AAAAAAAAAIAAAIC/2AQ1PxEFNT85Xv02AACAP74ENT8qBTU/gqL4tgAAgD9GMugpAACAP+v9ijQAAIA/AAAAAAAAgD8RgBCzAACAP9YENT8PBTW/M179tgAAgD+79DOx//9/P7b0MzEAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAIA/AAAAgAAAgD8AAIA/AAAAAAAAAIAAAIC/AACAPy4qg7T3KYM0AACAP9V6A7QAAIA/AAAAgAAAgD++BDU/KgU1vwAAAIAAAIA/2AQ1PxEFNb81Xv22AACAPwAAgD8AAAAAAAAAgAAAgL///38/AAAAABsuIDEAAIA/AACAP5T7hbRb+4U0AACAP7wENT8pBTW/AAAAgAAAgD/PBDU/GAU1v6DAOLQAAIA/AACAPwAAAADXeoO0AACAPwAAgD/IWbSxe1m0sQAAgD9/WbQx//9/P3pZtDEAAIA/zwQ1PxkFNb+gwDi0AACAPwAAgD8AAAAAAAAAgAAAgD/ZeoM0AACAPwAAAIAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAIA/JRGrswAAgD++BDU/KwU1vwAAAIAAAIA/1wQ1PxAFNb82Xv22AACAPwAAAAAAAIA/AAAAgAAAgD/PBDU/GQU1v6DAOLQAAIA/vfuFNAAAgD+5+4U0AACAP6DAODQZBTU/zwQ1vwAAgD/begM0AACAPwAAAIAAAIA/NoYqtBkFNT/NBDW/AACAP74ENb8qBTW/AAAAgAAAgD/YBDW/EQU1vzVe/TYAAIA/oMA4NBgFNT/PBDW/AACAPwAAAAAZBTU/zAQ1vwAAgD///3+/AAAAAGEvIDEAAIA/AAAAAP//fz8NgJCyAACAPwAAAAD//38/DYCQsgAAgD/WBDW/DwU1vzJe/TYAAIA/ViqDNP//fz9SKoM0AACAP6DAODQZBTU/zwQ1vwAAgD8AAAAA//9/PwAAAIAAAIA/RjLoKQAAgD/r/Yo0AACAPwAAAAD//38/IRGrswAAgD++BDW/KwU1vwAAAIAAAIA/1wQ1vxAFNb80Xv02AACAP+GwBbQAAIA/3bAFNAAAgD+PBDU/WAU1P/jbATcAAIC/vAQ1vykFNb8AAACAAACAP48ENT9XBTU/99sBNwAAgL8CCvi2GAU1P80ENT8AAIA/AACAvwAAAACS+4U0AACAPw7hArT//38/CuECNAAAgD+PBDU/WAU1P/jbATcAAIC/AAAAAAAAgD8AAACAAACAPzVe/bYZBTU/zQQ1PwAAgD8f6A4/4RdRPx/oDj/hF1E/H+gOP+EXUT8f6A4/4RdRPx/oDj/hF1E/wS/iPuEXUT/BL+I+4RdRP8Ev4j7hF1E/wS/iPuEXUT/BL+I+4RdRP8Ev4j7hF1E/H+gOPx/obj8f6A4/H+huPx/oDj8f6G4/H+gOPx/obj8f6A4/H+huP8Ev4j4f6G4/wS/iPh/obj/BL+I+H+huP8Ev4j4f6G4/wS/iPh/obj+EyuM+Q+VRP4TK4z5D5VE/hMrjPkPlUT+EyuM+Q+VRP8Ev4j7hF1E/wS/iPuEXUT/BL+I+4RdRP8Ev4j7hF1E/wS/iPuEXUT/BL+I+4RdRP8Iv4j4f6G4/wi/iPh/obj/BL+I+H+huP8Iv4j4f6G4/wS/iPh/obj/BL+I+H+huP4TK4z69Gm4/hMrjPr0abj+EyuM+vRpuP4TK4z69Gm4/H+gOPx/obj8f6A4/H+huPx/oDj8f6G4/H+gOPx/obj8f6A4/H+huP7waDj+9Gm4/vBoOP70abj+8Gg4/vRpuP7waDj+9Gm4/vBoOP0PlUT+8Gg4/Q+VRP7waDj9D5VE/H+gOP+EXUT8g6A4/4RdRPyDoDj/hF1E/IOgOP+EXUT8f6A4/4RdRPx/oDj/hF1E/NJIeP8xtAT80kh4/zG0BPzSSHj/MbQE/NJIeP8xtAT8AACA/zG0BP8xtIT9mJP0+AAAgP8xtAT/MbSE/ZiT9PsxtIT9mJP0+NJIePwAAAD8zkh4/aCT9PjOSHj9oJP0+M5IeP2gk/T5mJL0+aCT9PmYkvT5oJP0+ZiS9Pmgk/T5mJL0+aCT9PmYkvT4AAAA/mdvCPs1tAT9mJL0+AAAAP5nbwj7NbQE/AADAPmgk/T6Z28I+ZiT9Ppnbwj5mJP0+mdvCPmYk/T6Z28I+ZiT9Ppnbwj5mJP0+AQAgP5rbgj40kh4/mNuCPjSSHj+Y24I+NJIeP5jbgj40kh4/mNuCPjSSHj+Y24I+AQAgP9BIej7MbSE/mtuCPgAAID+a24I+zG0hP5rbgj4zkh4/zEh6PjOSHj/MSHo+zW0hPwAAgD4zkh4/zEh6Ppnbwj4AAIA+mdvCPprbgj6Z28I+mtuCPpnbwj6a24I+ZiS9PgAAgD6Z28I+zEh6PgAAwD7QSHo+mdvCPsxIej5nJL0+mNuCPmckvT6Y24I+AADAPtBIej5nJL0+mNuCPmckvT6Y24I+mdvCPs1tQT+a28I+zW1BPwAAAD5oJP0+mdvCPs1tQT+Z28I+AABAP5nbwj40kj4/AADAPjSSPj8ytwU+AAAAP5nbwj40kj4/MrcFPmYk/T4ytwU+ZiT9PgAAwD40kj4/MrcFPmYk/T4ytwU+ZiT9PjK3BT6a24I+MrcFPprbgj4ytwU+mtuCPjK3BT6a24I+mdvCPoDmtjsytwU+AACAPjK3BT4AAIA+mdvCPoDmtjua28I+M5J+P5nbwj4zkn4/AAAAPprbgj4AAAA+mtuCPpjbwj4AAAAAAAAAPprbgj40kh4/AOa2OzSSHj8A5rY7NJIePwDmtjs0kh4/AOa2OzSSXj+Y24I+NJJeP5jbgj4AACA/AOa2OwAAID8A5rY7NJJeP5jbgj4zkh4/M5J+PzOSHj8zkn4/AABgP5rbgj40kh4/AAAAADSSHj8AAAAAM5IeP8xtQT8zkh4/zG1BPzOSHj/NbUE/AABgP2gk/T4AAGA/aCT9PjOSHj/MbUE/AABgP2Yk/T4zkl4/aCT9PgAAYD9oJP0+AQAgPzOSPj8zkl4/aCT9PjOSHj80kj4/M5JePwAAAD8zkh4/NJI+PzOSHj80kj4/fQBIAGwAfQBsAIEAEQAHAHIAEQByAIgAEgANACsAEwAsACIAaQBgAI8AaQCPAIYAQAClAJUAQACVAF0AVQBHAFsAVABaAGcABQAAAJsABgCcAHEAAQAMAJcAAQCXAJ0ACwAQAIcACwCHAJYAAgAIABwAAwAdADgAJQAuADIAJQAyABUADgAEADkADwA6AC0AGwAhACgAGgAnABgAIAAqADEAHwAwACYANgAZABYANwAXADQAKQA1ADMAKQAzAC8ACgAUACQACQAjAB4APQBBAEQASgBOAFAAVgBeAGIAZABqAG4AdQB3AHwAgACEAIwAjgCTAJoAoQCjAKcAegB/AIkAewCKAHMASQB+AHgASQB4AEwARQBRAE8ARQBPAD4AgwCNAJkAgwCZAIsAYwBrAGUAYwBlAFcApgB2AHQApgB0AKAAXACUAJAAXACQAGEAQwBfAFkAQgBYAEYAggBtAGgAggBoAIUAkQCiAJ4AkgCfAJgApAA/ADwApAA8AKkAcABLAFMAbwBSAGYAeQCoADsAeQA7AE0A" } ] } diff --git a/Editor/src/Misc/GizmoDrawer.cpp b/Editor/src/Misc/GizmoDrawer.cpp index 3a9524ee..2618377b 100644 --- a/Editor/src/Misc/GizmoDrawer.cpp +++ b/Editor/src/Misc/GizmoDrawer.cpp @@ -259,7 +259,7 @@ void GizmoDrawer::DrawGizmos(Ref scene) flatShader->SetUniformVec4("u_Color", Vector4(0.0f, 1.0f, 0.4f, 1.0f)); const auto scaledTransform = glm::scale(transformComponent.GetGlobalTransform(), Vector3(0.25f, 0.25f, 0.25f)); - renderList.AddToRenderList(_gizmos["player"]->GetMeshes()[0], scaledTransform); + //renderList.AddToRenderList(_gizmos["player"]->GetMeshes()[0], scaledTransform); renderList.Flush(flatShader, true); } diff --git a/Editor/src/Windows/EditorInterface.cpp b/Editor/src/Windows/EditorInterface.cpp index de1c716b..dd0d65c5 100644 --- a/Editor/src/Windows/EditorInterface.cpp +++ b/Editor/src/Windows/EditorInterface.cpp @@ -215,7 +215,7 @@ namespace Nuake { ImGuizmo::DecomposeMatrixToComponents(glm::value_ptr(localTransform), glm::value_ptr(pos), glm::value_ptr(rotation), glm::value_ptr(scale)); tc.Translation = pos; - //tc.Rotation = rotation; + tc.Rotation = rotation; tc.Scale = scale; tc.LocalTransform = localTransform; diff --git a/Nuake/src/Core/Physics/DynamicWorld.cpp b/Nuake/src/Core/Physics/DynamicWorld.cpp index a5b18354..1d674c8a 100644 --- a/Nuake/src/Core/Physics/DynamicWorld.cpp +++ b/Nuake/src/Core/Physics/DynamicWorld.cpp @@ -370,17 +370,16 @@ namespace Nuake transformComponent.SetLocalPosition(pos); transformComponent.SetLocalRotation(Quat(bodyRotation.GetW(), bodyRotation.GetX(), bodyRotation.GetY(), bodyRotation.GetZ())); transformComponent.SetLocalTransform(transform); - transformComponent.Dirty = false; + transformComponent.Dirty = true; } } - + void DynamicWorld::SyncCharactersTransforms() { // TODO(ANTO): Finish this to connect updated jolt transforms back to the entity. // The problem was that I dont know yet how to go from jolt body ptr to the entity // Combinations of find and iterators etc. I do not have the brain power rn zzz. // const auto& bodyInterface = _JoltPhysicsSystem->GetBodyInterface(); - for (const auto& e : _registeredCharacters) { Entity entity { (entt::entity)e.first, Engine::GetCurrentScene().get()}; @@ -407,7 +406,7 @@ namespace Nuake transformComponent.SetLocalPosition(pos); transformComponent.SetLocalRotation(Quat(bodyRotation.GetW(), bodyRotation.GetX(), bodyRotation.GetY(), bodyRotation.GetZ())); transformComponent.SetLocalTransform(transform); - transformComponent.Dirty = false; + transformComponent.Dirty = true; } } diff --git a/Nuake/src/Rendering/Camera.cpp b/Nuake/src/Rendering/Camera.cpp index 5b3249e6..0910ad3e 100644 --- a/Nuake/src/Rendering/Camera.cpp +++ b/Nuake/src/Rendering/Camera.cpp @@ -55,6 +55,20 @@ namespace Nuake //Up = glm::normalize(glm::cross(Direction, Right)); } + void Camera::SetDirection(const Quat& direction) + { + //cam->cameraDirection.x = cos(glm::radians(Yaw)) * cos(glm::radians(Pitch)); + //cam->cameraDirection.y = sin(glm::radians(Pitch)); + //cam->cameraDirection.z = sin(glm::radians(Yaw)) * cos(glm::radians(Pitch)); + //cam->cameraFront = glm::normalize(cam->cameraDirection); + //cam->cameraRight = glm::normalize(glm::cross(cam->up, cam->cameraFront)); + + //glm::quatLookAt(); + //Direction = glm::normalize(direction); + //Right = glm::normalize(glm::cross(Vector3(0, 1, 0), Direction)); + //Up = glm::normalize(glm::cross(Direction, Right)); + } + Vector3 Camera::GetTranslation() { return Translation; } @@ -72,7 +86,7 @@ namespace Nuake Matrix4 Camera::GetTransform() { - glm::mat4 tr = lookAt(Translation, Translation + Direction, Vector3(0, 1, 0)); + glm::mat4 tr = lookAt(Translation, Translation + glm::normalize(Direction), Vector3(0, 1, 0)); return tr; } @@ -98,6 +112,8 @@ namespace Nuake BEGIN_SERIALIZE(); SERIALIZE_VAL(m_Type); SERIALIZE_VAL(AspectRatio); + SERIALIZE_VEC3(Translation) + SERIALIZE_VEC3(Direction) SERIALIZE_VAL(Fov); SERIALIZE_VAL(Exposure); SERIALIZE_VAL(Speed); @@ -109,6 +125,12 @@ namespace Nuake BEGIN_DESERIALIZE(); j = j["CameraInstance"]; this->m_Type = (CAMERA_TYPE)j["m_Type"]; + if(j.contains("Translation")) + DESERIALIZE_VEC3(j["Translation"], Translation); + + if (j.contains("Direction")) + DESERIALIZE_VEC3(j["Direction"], Direction); + this->AspectRatio = j["AspectRatio"]; this->Fov = j["Fov"]; this->Exposure = j["Exposure"]; diff --git a/Nuake/src/Rendering/Camera.h b/Nuake/src/Rendering/Camera.h index c52c9361..2ed7c504 100644 --- a/Nuake/src/Rendering/Camera.h +++ b/Nuake/src/Rendering/Camera.h @@ -44,6 +44,7 @@ namespace Nuake void OnWindowResize(float x, float y); void SetDirection(Vector3 direction); + void SetDirection(const Quat& direction); Vector3 GetTranslation(); Vector3 GetDirection(); diff --git a/Nuake/src/Scene/Components/TransformComponent.h b/Nuake/src/Scene/Components/TransformComponent.h index 2cdea3fd..dbc8062f 100644 --- a/Nuake/src/Scene/Components/TransformComponent.h +++ b/Nuake/src/Scene/Components/TransformComponent.h @@ -46,11 +46,13 @@ namespace Nuake json Serialize() { - Rotation = glm::normalize(Rotation); BEGIN_SERIALIZE(); SERIALIZE_VAL_LBL("Type", "TransformComponent"); SERIALIZE_VEC3(Translation); + SERIALIZE_VEC3(GlobalTranslation); SERIALIZE_VEC4(Rotation); + SERIALIZE_VEC4(GlobalRotation); + SERIALIZE_VEC3(GlobalScale); SERIALIZE_VEC3(Scale); END_SERIALIZE(); } @@ -59,6 +61,16 @@ namespace Nuake { BEGIN_DESERIALIZE(); this->Translation = Vector3(j["Translation"]["x"], j["Translation"]["y"], j["Translation"]["z"]); + + if (j.contains("GlobalTranslation")) + { + float x = j["GlobalTranslation"]["x"]; + float y = j["GlobalTranslation"]["y"]; + float z = j["GlobalTranslation"]["z"]; + + this->GlobalTranslation = Vector3(x, y, z); + } + if (j.contains("Rotation")) { float w = j["Rotation"]["w"]; @@ -68,6 +80,25 @@ namespace Nuake this->Rotation = Quat(w, x, y, z); } + + if (j.contains("GlobalRotation")) + { + float w = j["GlobalRotation"]["w"]; + float x = j["GlobalRotation"]["x"]; + float y = j["GlobalRotation"]["y"]; + float z = j["GlobalRotation"]["z"]; + + this->GlobalRotation = Quat(w, x, y, z); + } + + if (j.contains("GlobalScale")) + { + float x = j["GlobalScale"]["x"]; + float y = j["GlobalScale"]["y"]; + float z = j["GlobalScale"]["z"]; + + this->GlobalScale = Vector3(x, y, z); + } this->Scale = Vector3(j["Scale"]["x"], j["Scale"]["y"], j["Scale"]["z"]); diff --git a/Nuake/src/Scene/Systems/TransformSystem.cpp b/Nuake/src/Scene/Systems/TransformSystem.cpp index c9e776ae..479a2327 100644 --- a/Nuake/src/Scene/Systems/TransformSystem.cpp +++ b/Nuake/src/Scene/Systems/TransformSystem.cpp @@ -109,10 +109,13 @@ namespace Nuake Matrix4 cameraTransform = camera.CameraInstance->GetTransformRotation(); camera.CameraInstance->Translation = transform.GlobalTranslation; - const auto& globalRotation = transform.GetGlobalRotation(); - auto& forward = QuatToDirection(globalRotation); + const auto& globalTransform = transform.GetGlobalTransform(); + const auto& forwardTransform = Vector3(globalTransform[0][2], globalTransform[1][2], globalTransform[2][2]); + //const auto& globalRotation = transform.GetGlobalRotation(); + //auto& forward = QuatToDirection(globalRotation); //forward *= -1.0; - camera.CameraInstance->SetDirection(forward); + //f/orward.z *= -1.0f; + camera.CameraInstance->SetDirection(forwardTransform); } } }