diff --git a/CMakeLists.txt b/CMakeLists.txt index a43735a..63fb90c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,8 +45,6 @@ set(ThirdPartyIncludeDeps # Shared code by main executable and tests add_library(AnimTestbedCode OBJECT - src/SyncTrack.cc - src/SyncTrack.h src/ozzutils.cc src/AnimGraph/AnimGraphNodes.cc src/AnimGraph/AnimGraphNodes.h @@ -59,7 +57,9 @@ add_library(AnimTestbedCode OBJECT src/AnimGraph/AnimNode.cc src/AnimGraph/AnimNode.h src/AnimGraph/AnimGraphResource.cc - src/AnimGraph/AnimGraphResource.h) + src/AnimGraph/AnimGraphResource.h + src/AnimGraph/SyncTrack.cc + src/AnimGraph/SyncTrack.h) target_include_directories( AnimTestbedCode diff --git a/src/SyncTrack.h b/src/AnimGraph/SyncTrack.h similarity index 100% rename from src/SyncTrack.h rename to src/AnimGraph/SyncTrack.h diff --git a/src/AnimGraphEditor/AnimGraphEditor.cc b/src/AnimGraphEditor/AnimGraphEditor.cc index 817d836..8c1fc47 100644 --- a/src/AnimGraphEditor/AnimGraphEditor.cc +++ b/src/AnimGraphEditor/AnimGraphEditor.cc @@ -155,21 +155,7 @@ void SyncTrackEditor(SyncTrack* sync_track) { } ImGui::Text("Marker:"); - for (int i = 0; i < sync_track->m_num_intervals; i++) { - ImGui::Text("%2d:", i); - ImGui::SameLine(); - std::ostringstream marker_stream; - marker_stream << i; - ImGui::SliderFloat( - marker_stream.str().c_str(), - &sync_track->m_sync_markers[i], - 0.f, - 1.f); - } - - if (ImGui::Button("Update Intervals")) { - sync_track->CalcIntervals(); - } + ImGui::Text("TODO"); } void SkinnedMeshWidget(SkinnedMesh* skinned_mesh) { diff --git a/src/SkinnedMeshResource.cc b/src/SkinnedMeshResource.cc index 8c733c3..05f2546 100644 --- a/src/SkinnedMeshResource.cc +++ b/src/SkinnedMeshResource.cc @@ -9,34 +9,9 @@ #include "3rdparty/json/json.hpp" -inline void to_json(nlohmann::json& j, const SyncTrack& syncTrack) { - j["type"] = "SyncTrack"; - j["duration"] = syncTrack.m_duration; - for (int i = 0; i < syncTrack.m_num_intervals; i++) { - j["markers"][i] = syncTrack.m_sync_markers[i]; - } -} - -inline void from_json(const nlohmann::json& j, SyncTrack& syncTrack) { - if (!j.contains("type") || j["type"] != "SyncTrack") { - std::cerr << "Unable to parse SyncTrack: wrong json type!" << std::endl; - return; - } - - syncTrack.m_duration = j["duration"]; - syncTrack.m_num_intervals = j["markers"].size(); - - if (syncTrack.m_num_intervals > cSyncTrackMaxIntervals) { - std::cerr << "Invalid number of sync intervals: found " << syncTrack.m_num_intervals << " maximum is " << cSyncTrackMaxIntervals << "." << std::endl; - syncTrack = SyncTrack(); - } - - for (int i = 0; i < syncTrack.m_num_intervals; i++) { - syncTrack.m_sync_markers[i] = j["markers"].at(i); - } -} - -inline void to_json(nlohmann::json& j, const SkinnedMeshResource& skinnedMeshResource) { +inline void to_json( + nlohmann::json& j, + const SkinnedMeshResource& skinnedMeshResource) { j["type"] = "SkinnedMeshResource"; j["skeleton"]["file"] = skinnedMeshResource.m_skeleton_file; for (int i = 0; i < skinnedMeshResource.m_animation_files.size(); i++) { @@ -45,15 +20,18 @@ inline void to_json(nlohmann::json& j, const SkinnedMeshResource& skinnedMeshRes } } -inline void from_json(const nlohmann::json& j, SkinnedMeshResource& skinnedMeshResource) { +inline void from_json( + const nlohmann::json& j, + SkinnedMeshResource& skinnedMeshResource) { if (!j.contains("type") || j["type"] != "SkinnedMeshResource") { - std::cerr << "Unable to parse SkinnedMeshResource: wrong json type!" << std::endl; + std::cerr << "Unable to parse SkinnedMeshResource: wrong json type!" + << std::endl; return; } if (!j.contains("skeleton") || !j["skeleton"].contains("file")) { - std::cerr << "Unable to parse SkinnedMeshResource: no skeleton file found!" << std::endl; - + std::cerr << "Unable to parse SkinnedMeshResource: no skeleton file found!" + << std::endl; } skinnedMeshResource.m_skeleton_file = j["skeleton"]["file"]; @@ -62,13 +40,18 @@ inline void from_json(const nlohmann::json& j, SkinnedMeshResource& skinnedMeshR int num_animations = j["animations"].size(); for (int i = 0; i < num_animations; i++) { - if (!j["animations"][i].contains("file") || !j["animations"][i].contains("sync_track")) { - std::cerr << "Unable to parse SkinnedMeshResource: invalid animation definition" << std::endl; + if (!j["animations"][i].contains("file") + || !j["animations"][i].contains("sync_track")) { + std::cerr << "Unable to parse SkinnedMeshResource: invalid animation " + "definition" + << std::endl; return; } - skinnedMeshResource.m_animation_files.push_back(j["animations"][i]["file"]); - skinnedMeshResource.m_sync_tracks.push_back(j["animations"][i]["sync_track"].get()); + skinnedMeshResource.m_animation_files.push_back( + j["animations"][i]["file"]); + skinnedMeshResource.m_sync_tracks.push_back( + j["animations"][i]["sync_track"].get()); } } }