Path: blob/master/modules/gltf/gltf_template_convert.h
10277 views
/**************************************************************************/1/* gltf_template_convert.h */2/**************************************************************************/3/* This file is part of: */4/* GODOT ENGINE */5/* https://godotengine.org */6/**************************************************************************/7/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */8/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */9/* */10/* Permission is hereby granted, free of charge, to any person obtaining */11/* a copy of this software and associated documentation files (the */12/* "Software"), to deal in the Software without restriction, including */13/* without limitation the rights to use, copy, modify, merge, publish, */14/* distribute, sublicense, and/or sell copies of the Software, and to */15/* permit persons to whom the Software is furnished to do so, subject to */16/* the following conditions: */17/* */18/* The above copyright notice and this permission notice shall be */19/* included in all copies or substantial portions of the Software. */20/* */21/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */22/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */23/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */24/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */25/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */26/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */27/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */28/**************************************************************************/2930#pragma once3132#include "core/templates/hash_set.h"33#include "core/variant/array.h"34#include "core/variant/dictionary.h"35#include "core/variant/typed_array.h"3637namespace GLTFTemplateConvert {38template <typename T>39static Array to_array(const Vector<T> &p_inp) {40Array ret;41for (int i = 0; i < p_inp.size(); i++) {42ret.push_back(p_inp[i]);43}44return ret;45}4647template <typename T>48static TypedArray<T> to_array(const HashSet<T> &p_inp) {49TypedArray<T> ret;50typename HashSet<T>::Iterator elem = p_inp.begin();51while (elem) {52ret.push_back(*elem);53++elem;54}55return ret;56}5758template <typename T>59static void set_from_array(Vector<T> &r_out, const Array &p_inp) {60r_out.clear();61for (int i = 0; i < p_inp.size(); i++) {62r_out.push_back(p_inp[i]);63}64}6566template <typename T>67static void set_from_array(HashSet<T> &r_out, const TypedArray<T> &p_inp) {68r_out.clear();69for (int i = 0; i < p_inp.size(); i++) {70r_out.insert(p_inp[i]);71}72}7374template <typename K, typename V>75static Dictionary to_dictionary(const HashMap<K, V> &p_inp) {76Dictionary ret;77for (const KeyValue<K, V> &E : p_inp) {78ret[E.key] = E.value;79}80return ret;81}8283template <typename K, typename V>84static void set_from_dictionary(HashMap<K, V> &r_out, const Dictionary &p_inp) {85r_out.clear();86for (const KeyValue<Variant, Variant> &kv : p_inp) {87r_out[kv.key] = kv.value;88}89}90} //namespace GLTFTemplateConvert919293