Index: chrome/browser/android/vr_shell/gltf_asset.cc |
diff --git a/chrome/browser/android/vr_shell/gltf_asset.cc b/chrome/browser/android/vr_shell/gltf_asset.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f4ee1fc2668ad26b60fab343d0596b90ff5e03ca |
--- /dev/null |
+++ b/chrome/browser/android/vr_shell/gltf_asset.cc |
@@ -0,0 +1,109 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/android/vr_shell/gltf_asset.h" |
+ |
+#include <unordered_map> |
+ |
+#include "base/logging.h" |
+ |
+namespace vr_shell { |
+ |
+namespace gltf { |
+ |
+const std::unordered_map<std::string, Type> kTypeMap = { |
+ {"SCALAR", SCALAR}, {"VEC2", VEC2}, {"VEC3", VEC3}, {"VEC4", VEC4}, |
+ {"MAT2", MAT2}, {"MAT3", MAT3}, {"MAT4", MAT4}, |
+}; |
+ |
+Type GetType(const std::string& type) { |
+ auto it = kTypeMap.find(type); |
+ if (it == kTypeMap.end()) |
+ return UNKNOWN; |
+ return it->second; |
+} |
+ |
+Mesh::Primitive::Primitive() : indices(nullptr), mode(4) {} |
+ |
+Mesh::Primitive::~Primitive() = default; |
+ |
+Mesh::Mesh() {} |
+ |
+Mesh::~Mesh() = default; |
+ |
+Node::Node() {} |
+ |
+Node::~Node() = default; |
+ |
+Scene::Scene() {} |
+ |
+Scene::~Scene() = default; |
+ |
+Asset::Asset() : scene_(nullptr) {} |
+ |
+Asset::~Asset() = default; |
+ |
+std::size_t Asset::AddBuffer(std::unique_ptr<Buffer> buffer) { |
+ auto index = buffers_.size(); |
+ buffers_.push_back(std::move(buffer)); |
+ return index; |
+} |
+ |
+std::size_t Asset::AddBufferView(std::unique_ptr<BufferView> buffer_view) { |
+ auto index = buffer_views_.size(); |
+ buffer_views_.push_back(std::move(buffer_view)); |
+ return index; |
+} |
+ |
+std::size_t Asset::AddAccessor(std::unique_ptr<Accessor> accessor) { |
+ auto index = accessors_.size(); |
+ accessors_.push_back(std::move(accessor)); |
+ return index; |
+} |
+ |
+std::size_t Asset::AddMesh(std::unique_ptr<Mesh> mesh) { |
+ auto index = meshes_.size(); |
+ meshes_.push_back(std::move(mesh)); |
+ return index; |
+} |
+ |
+std::size_t Asset::AddNode(std::unique_ptr<Node> node) { |
+ auto index = nodes_.size(); |
+ nodes_.push_back(std::move(node)); |
+ return index; |
+} |
+ |
+std::size_t Asset::AddScene(std::unique_ptr<Scene> scene) { |
+ auto index = scenes_.size(); |
+ scenes_.push_back(std::move(scene)); |
+ return index; |
+} |
+ |
+const Buffer* Asset::GetBuffer(std::size_t id) const { |
+ return id < buffers_.size() ? buffers_[id].get() : nullptr; |
+} |
+ |
+const BufferView* Asset::GetBufferView(std::size_t id) const { |
+ return id < buffer_views_.size() ? buffer_views_[id].get() : nullptr; |
+} |
+ |
+const Accessor* Asset::GetAccessor(std::size_t id) const { |
+ return id < accessors_.size() ? accessors_[id].get() : nullptr; |
+} |
+ |
+const Mesh* Asset::GetMesh(std::size_t id) const { |
+ return id < meshes_.size() ? meshes_[id].get() : nullptr; |
+} |
+ |
+const Node* Asset::GetNode(std::size_t id) const { |
+ return id < nodes_.size() ? nodes_[id].get() : nullptr; |
+} |
+ |
+const Scene* Asset::GetScene(std::size_t id) const { |
+ return id < scenes_.size() ? scenes_[id].get() : nullptr; |
+} |
+ |
+} // namespace gltf |
+ |
+} // namespace vr_shell |