mirror of
https://git.mirrors.martin98.com/https://github.com/syoyo/tinygltf.git
synced 2025-07-05 23:25:13 +08:00
Suppress clang warnings.
Apply clang-format.
This commit is contained in:
parent
7518334044
commit
641b3ccf8c
442
tiny_gltf.h
442
tiny_gltf.h
@ -40,8 +40,8 @@
|
||||
#include <array>
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
@ -136,7 +136,7 @@ namespace tinygltf {
|
||||
#define TINYGLTF_SHADER_TYPE_FRAGMENT_SHADER (35632)
|
||||
|
||||
#define TINYGLTF_DOUBLE_EPS (1.e-12)
|
||||
#define TINYGLTF_DOUBLE_EQUAL(a,b) (abs((b)-(a))<TINYGLTF_DOUBLE_EPS)
|
||||
#define TINYGLTF_DOUBLE_EQUAL(a, b) (std::fabs((b) - (a)) < TINYGLTF_DOUBLE_EPS)
|
||||
|
||||
typedef enum {
|
||||
NULL_TYPE = 0,
|
||||
@ -194,9 +194,8 @@ static inline int32_t GetTypeSizeInBytes(uint32_t ty) {
|
||||
}
|
||||
|
||||
bool IsDataURI(const std::string &in);
|
||||
bool DecodeDataURI(std::vector<unsigned char> *out,
|
||||
std::string &mime_type, const std::string &in,
|
||||
size_t reqBytes, bool checkSize);
|
||||
bool DecodeDataURI(std::vector<unsigned char> *out, std::string &mime_type,
|
||||
const std::string &in, size_t reqBytes, bool checkSize);
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic push
|
||||
@ -472,14 +471,20 @@ struct Image {
|
||||
Value extras;
|
||||
ExtensionMap extensions;
|
||||
|
||||
// When this flag is true, data is stored to `image` in as-is format(e.g. jpeg compressed for "image/jpeg" mime)
|
||||
// This feature is good if you use custom image loader function.
|
||||
// (e.g. delayed decoding of images for faster glTF parsing)
|
||||
// Default parser for Image does not provide as-is loading feature at the moment.
|
||||
// (You can manipulate this by providing your own LoadImageData function)
|
||||
// When this flag is true, data is stored to `image` in as-is format(e.g. jpeg
|
||||
// compressed for "image/jpeg" mime) This feature is good if you use custom
|
||||
// image loader function. (e.g. delayed decoding of images for faster glTF
|
||||
// parsing) Default parser for Image does not provide as-is loading feature at
|
||||
// the moment. (You can manipulate this by providing your own LoadImageData
|
||||
// function)
|
||||
bool as_is;
|
||||
|
||||
Image() : as_is(false) { bufferView = -1; width = -1; height = -1; component = -1; }
|
||||
Image() : as_is(false) {
|
||||
bufferView = -1;
|
||||
width = -1;
|
||||
height = -1;
|
||||
component = -1;
|
||||
}
|
||||
bool operator==(const Image &) const;
|
||||
};
|
||||
|
||||
@ -588,11 +593,11 @@ struct PerspectiveCamera {
|
||||
double znear; // required. min > 0
|
||||
|
||||
PerspectiveCamera()
|
||||
: aspectRatio(0.0f),
|
||||
yfov(0.0f),
|
||||
zfar(0.0f) // 0 = use infinite projecton matrix
|
||||
: aspectRatio(0.0),
|
||||
yfov(0.0),
|
||||
zfar(0.0) // 0 = use infinite projecton matrix
|
||||
,
|
||||
znear(0.0f) {}
|
||||
znear(0.0) {}
|
||||
bool operator==(const PerspectiveCamera &) const;
|
||||
|
||||
ExtensionMap extensions;
|
||||
@ -605,7 +610,7 @@ struct OrthographicCamera {
|
||||
double zfar; // required. `zfar` must be greater than `znear`.
|
||||
double znear; // required
|
||||
|
||||
OrthographicCamera() : xmag(0.0f), ymag(0.0f), zfar(0.0f), znear(0.0f) {}
|
||||
OrthographicCamera() : xmag(0.0), ymag(0.0), zfar(0.0), znear(0.0) {}
|
||||
bool operator==(const OrthographicCamera &) const;
|
||||
|
||||
ExtensionMap extensions;
|
||||
@ -1081,53 +1086,42 @@ using nlohmann::json;
|
||||
namespace tinygltf {
|
||||
|
||||
// Equals function for Value, for recursivity
|
||||
bool Equals(const tinygltf::Value& one, const tinygltf::Value& other)
|
||||
{
|
||||
if (one.Type() != other.Type())
|
||||
return false;
|
||||
static bool Equals(const tinygltf::Value &one, const tinygltf::Value &other) {
|
||||
if (one.Type() != other.Type()) return false;
|
||||
|
||||
switch (one.Type())
|
||||
{
|
||||
switch (one.Type()) {
|
||||
case NULL_TYPE:
|
||||
return true;
|
||||
case BOOL_TYPE:
|
||||
return one.Get<bool>() == other.Get<bool>();
|
||||
case NUMBER_TYPE:
|
||||
return one.Get<double>() == other.Get<double>();
|
||||
return TINYGLTF_DOUBLE_EQUAL(one.Get<double>(), other.Get<double>());
|
||||
case INT_TYPE:
|
||||
return one.Get<int>() == other.Get<int>();
|
||||
case OBJECT_TYPE:
|
||||
{
|
||||
case OBJECT_TYPE: {
|
||||
auto oneObj = one.Get<tinygltf::Value::Object>();
|
||||
auto otherObj = other.Get<tinygltf::Value::Object>();
|
||||
if (oneObj.size() != otherObj.size())
|
||||
return false;
|
||||
for (auto& it : oneObj)
|
||||
{
|
||||
if (oneObj.size() != otherObj.size()) return false;
|
||||
for (auto &it : oneObj) {
|
||||
auto otherIt = otherObj.find(it.first);
|
||||
if (otherIt == otherObj.end())
|
||||
return false;
|
||||
if (otherIt == otherObj.end()) return false;
|
||||
|
||||
if (!Equals(it.second, otherIt->second))
|
||||
return false;
|
||||
if (!Equals(it.second, otherIt->second)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case ARRAY_TYPE:
|
||||
{
|
||||
if (one.Size() != other.Size())
|
||||
return false;
|
||||
for (int i = 0; i < one.Size(); ++i)
|
||||
if (Equals(one.Get(i), other.Get(i)))
|
||||
return false;
|
||||
case ARRAY_TYPE: {
|
||||
if (one.Size() != other.Size()) return false;
|
||||
for (int i = 0; i < int(one.Size()); ++i)
|
||||
if (Equals(one.Get(i), other.Get(i))) return false;
|
||||
return true;
|
||||
}
|
||||
case STRING_TYPE:
|
||||
return one.Get<std::string>() == other.Get<std::string>();
|
||||
case BINARY_TYPE:
|
||||
return one.Get<std::vector<unsigned char>>() == other.Get<std::vector<unsigned char>>();
|
||||
default:
|
||||
{
|
||||
return one.Get<std::vector<unsigned char> >() ==
|
||||
other.Get<std::vector<unsigned char> >();
|
||||
default: {
|
||||
// unhandled type
|
||||
return false;
|
||||
}
|
||||
@ -1137,173 +1131,117 @@ bool Equals(const tinygltf::Value& one, const tinygltf::Value& other)
|
||||
}
|
||||
|
||||
// Equals function for std::vector<double> using TINYGLTF_DOUBLE_EPSILON
|
||||
bool Equals(const std::vector<double>& one, const std::vector<double>& other)
|
||||
{
|
||||
if (one.size() != other.size())
|
||||
return false;
|
||||
for (int i = 0; i < one.size(); ++i)
|
||||
{
|
||||
if (!TINYGLTF_DOUBLE_EQUAL(one[i], other[i]))
|
||||
return false;
|
||||
static bool Equals(const std::vector<double> &one,
|
||||
const std::vector<double> &other) {
|
||||
if (one.size() != other.size()) return false;
|
||||
for (int i = 0; i < int(one.size()); ++i) {
|
||||
if (!TINYGLTF_DOUBLE_EQUAL(one[size_t(i)], other[size_t(i)])) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Accessor::operator==(const Accessor& other) const
|
||||
{
|
||||
return this->bufferView == other.bufferView
|
||||
&& this->byteOffset == other.byteOffset
|
||||
&& this->componentType == other.componentType
|
||||
&& this->count == other.count
|
||||
&& this->extras == other.extras
|
||||
&& Equals(this->maxValues, other.maxValues)
|
||||
&& Equals(this->minValues,other.minValues)
|
||||
&& this->name == other.name
|
||||
&& this->normalized == other.normalized
|
||||
&& this->type == other.type;
|
||||
bool Accessor::operator==(const Accessor &other) const {
|
||||
return this->bufferView == other.bufferView &&
|
||||
this->byteOffset == other.byteOffset &&
|
||||
this->componentType == other.componentType &&
|
||||
this->count == other.count && this->extras == other.extras &&
|
||||
Equals(this->maxValues, other.maxValues) &&
|
||||
Equals(this->minValues, other.minValues) && this->name == other.name &&
|
||||
this->normalized == other.normalized && this->type == other.type;
|
||||
}
|
||||
bool Animation::operator==(const Animation& other) const
|
||||
{
|
||||
return this->channels == other.channels
|
||||
&& this->extras == other.extras
|
||||
&& this->name == other.name
|
||||
&& this->samplers == other.samplers;
|
||||
bool Animation::operator==(const Animation &other) const {
|
||||
return this->channels == other.channels && this->extras == other.extras &&
|
||||
this->name == other.name && this->samplers == other.samplers;
|
||||
}
|
||||
bool AnimationChannel::operator==(const AnimationChannel& other) const
|
||||
{
|
||||
return this->extras == other.extras
|
||||
&& this->target_node == other.target_node
|
||||
&& this->target_path == other.target_path
|
||||
&& this->sampler == other.sampler;
|
||||
bool AnimationChannel::operator==(const AnimationChannel &other) const {
|
||||
return this->extras == other.extras &&
|
||||
this->target_node == other.target_node &&
|
||||
this->target_path == other.target_path &&
|
||||
this->sampler == other.sampler;
|
||||
}
|
||||
bool AnimationSampler::operator==(const AnimationSampler& other) const
|
||||
{
|
||||
return this->extras == other.extras
|
||||
&& this->input == other.input
|
||||
&& this->interpolation == other.interpolation
|
||||
&& this->output == other.output;
|
||||
bool AnimationSampler::operator==(const AnimationSampler &other) const {
|
||||
return this->extras == other.extras && this->input == other.input &&
|
||||
this->interpolation == other.interpolation &&
|
||||
this->output == other.output;
|
||||
}
|
||||
bool Asset::operator==(const Asset& other) const
|
||||
{
|
||||
return this->copyright == other.copyright
|
||||
&& this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& this->generator == other.generator
|
||||
&& this->minVersion == other.minVersion
|
||||
&& this->version == other.version;
|
||||
bool Asset::operator==(const Asset &other) const {
|
||||
return this->copyright == other.copyright &&
|
||||
this->extensions == other.extensions && this->extras == other.extras &&
|
||||
this->generator == other.generator &&
|
||||
this->minVersion == other.minVersion && this->version == other.version;
|
||||
}
|
||||
bool Buffer::operator==(const Buffer& other) const
|
||||
{
|
||||
return this->data == other.data
|
||||
&& this->extras == other.extras
|
||||
&& this->name == other.name
|
||||
&& this->uri == other.uri;
|
||||
bool Buffer::operator==(const Buffer &other) const {
|
||||
return this->data == other.data && this->extras == other.extras &&
|
||||
this->name == other.name && this->uri == other.uri;
|
||||
}
|
||||
bool BufferView::operator==(const BufferView& other) const
|
||||
{
|
||||
return this->buffer == other.buffer
|
||||
&& this->byteLength == other.byteLength
|
||||
&& this->byteOffset == other.byteOffset
|
||||
&& this->byteStride == other.byteStride
|
||||
&& this->name == other.name
|
||||
&& this->target == other.target
|
||||
&& this->extras == other.extras;
|
||||
bool BufferView::operator==(const BufferView &other) const {
|
||||
return this->buffer == other.buffer && this->byteLength == other.byteLength &&
|
||||
this->byteOffset == other.byteOffset &&
|
||||
this->byteStride == other.byteStride && this->name == other.name &&
|
||||
this->target == other.target && this->extras == other.extras;
|
||||
}
|
||||
bool Camera::operator==(const Camera& other) const
|
||||
{
|
||||
return this->name == other.name
|
||||
&& this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& this->orthographic == other.orthographic
|
||||
&& this->perspective == other.perspective
|
||||
&& this->type == other.type;
|
||||
bool Camera::operator==(const Camera &other) const {
|
||||
return this->name == other.name && this->extensions == other.extensions &&
|
||||
this->extras == other.extras &&
|
||||
this->orthographic == other.orthographic &&
|
||||
this->perspective == other.perspective && this->type == other.type;
|
||||
}
|
||||
bool Image::operator==(const Image& other) const
|
||||
{
|
||||
return this->bufferView == other.bufferView
|
||||
&& this->component == other.component
|
||||
&& this->extras == other.extras
|
||||
&& this->height == other.height
|
||||
&& this->image == other.image
|
||||
&& this->mimeType == other.mimeType
|
||||
&& this->name == other.name
|
||||
&& this->uri == other.uri
|
||||
&& this->width == other.width;
|
||||
bool Image::operator==(const Image &other) const {
|
||||
return this->bufferView == other.bufferView &&
|
||||
this->component == other.component && this->extras == other.extras &&
|
||||
this->height == other.height && this->image == other.image &&
|
||||
this->mimeType == other.mimeType && this->name == other.name &&
|
||||
this->uri == other.uri && this->width == other.width;
|
||||
}
|
||||
bool Light::operator==(const Light& other) const
|
||||
{
|
||||
return Equals(this->color, other.color)
|
||||
&& this->name == other.name
|
||||
&& this->type == other.type;
|
||||
bool Light::operator==(const Light &other) const {
|
||||
return Equals(this->color, other.color) && this->name == other.name &&
|
||||
this->type == other.type;
|
||||
}
|
||||
bool Material::operator==(const Material& other) const
|
||||
{
|
||||
return this->additionalValues == other.additionalValues
|
||||
&& this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& this->name == other.name
|
||||
&& this->values == other.values;
|
||||
bool Material::operator==(const Material &other) const {
|
||||
return this->additionalValues == other.additionalValues &&
|
||||
this->extensions == other.extensions && this->extras == other.extras &&
|
||||
this->name == other.name && this->values == other.values;
|
||||
}
|
||||
bool Mesh::operator==(const Mesh& other) const
|
||||
{
|
||||
return this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& this->name == other.name
|
||||
&& this->primitives == other.primitives
|
||||
&& this->targets == other.targets
|
||||
&& Equals(this->weights, other.weights);
|
||||
bool Mesh::operator==(const Mesh &other) const {
|
||||
return this->extensions == other.extensions && this->extras == other.extras &&
|
||||
this->name == other.name && this->primitives == other.primitives &&
|
||||
this->targets == other.targets && Equals(this->weights, other.weights);
|
||||
}
|
||||
bool Model::operator==(const Model& other) const
|
||||
{
|
||||
return this->accessors == other.accessors
|
||||
&& this->animations == other.animations
|
||||
&& this->asset == other.asset
|
||||
&& this->buffers == other.buffers
|
||||
&& this->bufferViews == other.bufferViews
|
||||
&& this->cameras == other.cameras
|
||||
&& this->defaultScene == other.defaultScene
|
||||
&& this->extensions == other.extensions
|
||||
&& this->extensionsRequired == other.extensionsRequired
|
||||
&& this->extensionsUsed == other.extensionsUsed
|
||||
&& this->extras == other.extras
|
||||
&& this->images == other.images
|
||||
&& this->lights == other.lights
|
||||
&& this->materials == other.materials
|
||||
&& this->meshes == other.meshes
|
||||
&& this->nodes == other.nodes
|
||||
&& this->samplers == other.samplers
|
||||
&& this->scenes == other.scenes
|
||||
&& this->skins == other.skins
|
||||
&& this->textures == other.textures;
|
||||
bool Model::operator==(const Model &other) const {
|
||||
return this->accessors == other.accessors &&
|
||||
this->animations == other.animations && this->asset == other.asset &&
|
||||
this->buffers == other.buffers &&
|
||||
this->bufferViews == other.bufferViews &&
|
||||
this->cameras == other.cameras &&
|
||||
this->defaultScene == other.defaultScene &&
|
||||
this->extensions == other.extensions &&
|
||||
this->extensionsRequired == other.extensionsRequired &&
|
||||
this->extensionsUsed == other.extensionsUsed &&
|
||||
this->extras == other.extras && this->images == other.images &&
|
||||
this->lights == other.lights && this->materials == other.materials &&
|
||||
this->meshes == other.meshes && this->nodes == other.nodes &&
|
||||
this->samplers == other.samplers && this->scenes == other.scenes &&
|
||||
this->skins == other.skins && this->textures == other.textures;
|
||||
}
|
||||
bool Node::operator==(const Node& other) const
|
||||
{
|
||||
return this->camera == other.camera
|
||||
&& this->children == other.children
|
||||
&& this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& Equals(this->matrix, other.matrix)
|
||||
&& this->mesh == other.mesh
|
||||
&& this->name == other.name
|
||||
&& Equals(this->rotation, other.rotation)
|
||||
&& Equals(this->scale, other.scale)
|
||||
&& this->skin == other.skin
|
||||
&& Equals(this->translation, other.translation)
|
||||
&& Equals(this->weights, other.weights);
|
||||
bool Node::operator==(const Node &other) const {
|
||||
return this->camera == other.camera && this->children == other.children &&
|
||||
this->extensions == other.extensions && this->extras == other.extras &&
|
||||
Equals(this->matrix, other.matrix) && this->mesh == other.mesh &&
|
||||
this->name == other.name && Equals(this->rotation, other.rotation) &&
|
||||
Equals(this->scale, other.scale) && this->skin == other.skin &&
|
||||
Equals(this->translation, other.translation) &&
|
||||
Equals(this->weights, other.weights);
|
||||
}
|
||||
bool OrthographicCamera::operator==(const OrthographicCamera& other) const
|
||||
{
|
||||
return this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& TINYGLTF_DOUBLE_EQUAL(this->xmag, other.xmag)
|
||||
&& TINYGLTF_DOUBLE_EQUAL(this->ymag, other.ymag)
|
||||
&& TINYGLTF_DOUBLE_EQUAL(this->zfar, other.zfar)
|
||||
&& TINYGLTF_DOUBLE_EQUAL(this->znear, other.znear);
|
||||
bool OrthographicCamera::operator==(const OrthographicCamera &other) const {
|
||||
return this->extensions == other.extensions && this->extras == other.extras &&
|
||||
TINYGLTF_DOUBLE_EQUAL(this->xmag, other.xmag) &&
|
||||
TINYGLTF_DOUBLE_EQUAL(this->ymag, other.ymag) &&
|
||||
TINYGLTF_DOUBLE_EQUAL(this->zfar, other.zfar) &&
|
||||
TINYGLTF_DOUBLE_EQUAL(this->znear, other.znear);
|
||||
}
|
||||
bool Parameter::operator==(const Parameter& other) const
|
||||
{
|
||||
if (this->bool_value != other.bool_value
|
||||
|| this->has_number_value != other.has_number_value)
|
||||
bool Parameter::operator==(const Parameter &other) const {
|
||||
if (this->bool_value != other.bool_value ||
|
||||
this->has_number_value != other.has_number_value)
|
||||
return false;
|
||||
|
||||
if (this->has_number_value)
|
||||
@ -1312,76 +1250,53 @@ bool Parameter::operator==(const Parameter& other) const
|
||||
|
||||
if (this->json_double_value.size() != other.json_double_value.size())
|
||||
return false;
|
||||
for (auto& it : this->json_double_value)
|
||||
{
|
||||
for (auto &it : this->json_double_value) {
|
||||
auto otherIt = other.json_double_value.find(it.first);
|
||||
if (otherIt==other.json_double_value.end())
|
||||
return false;
|
||||
if (otherIt == other.json_double_value.end()) return false;
|
||||
|
||||
if(!TINYGLTF_DOUBLE_EQUAL(it.second, otherIt->second))
|
||||
return false;
|
||||
if (!TINYGLTF_DOUBLE_EQUAL(it.second, otherIt->second)) return false;
|
||||
}
|
||||
|
||||
if (!Equals(this->number_array, other.number_array))
|
||||
return false;
|
||||
if (!Equals(this->number_array, other.number_array)) return false;
|
||||
|
||||
if (this->string_value != other.string_value)
|
||||
return false;
|
||||
if (this->string_value != other.string_value) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
bool PerspectiveCamera::operator==(const PerspectiveCamera& other) const
|
||||
{
|
||||
return TINYGLTF_DOUBLE_EQUAL(this->aspectRatio, other.aspectRatio)
|
||||
&& this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& TINYGLTF_DOUBLE_EQUAL(this->yfov, other.yfov)
|
||||
&& TINYGLTF_DOUBLE_EQUAL(this->zfar, other.zfar)
|
||||
&& TINYGLTF_DOUBLE_EQUAL(this->znear, other.znear);
|
||||
bool PerspectiveCamera::operator==(const PerspectiveCamera &other) const {
|
||||
return TINYGLTF_DOUBLE_EQUAL(this->aspectRatio, other.aspectRatio) &&
|
||||
this->extensions == other.extensions && this->extras == other.extras &&
|
||||
TINYGLTF_DOUBLE_EQUAL(this->yfov, other.yfov) &&
|
||||
TINYGLTF_DOUBLE_EQUAL(this->zfar, other.zfar) &&
|
||||
TINYGLTF_DOUBLE_EQUAL(this->znear, other.znear);
|
||||
}
|
||||
bool Primitive::operator==(const Primitive& other) const
|
||||
{
|
||||
return this->attributes == other.attributes
|
||||
&& this->extras == other.extras
|
||||
&& this->indices == other.indices
|
||||
&& this->material == other.material
|
||||
&& this->mode == other.mode
|
||||
&& this->targets == other.targets;
|
||||
bool Primitive::operator==(const Primitive &other) const {
|
||||
return this->attributes == other.attributes && this->extras == other.extras &&
|
||||
this->indices == other.indices && this->material == other.material &&
|
||||
this->mode == other.mode && this->targets == other.targets;
|
||||
}
|
||||
bool Sampler::operator==(const Sampler& other) const
|
||||
{
|
||||
return this->extras == other.extras
|
||||
&& this->magFilter == other.magFilter
|
||||
&& this->minFilter == other.minFilter
|
||||
&& this->name == other.name
|
||||
&& this->wrapR == other.wrapR
|
||||
&& this->wrapS == other.wrapS
|
||||
&& this->wrapT == other.wrapT;
|
||||
bool Sampler::operator==(const Sampler &other) const {
|
||||
return this->extras == other.extras && this->magFilter == other.magFilter &&
|
||||
this->minFilter == other.minFilter && this->name == other.name &&
|
||||
this->wrapR == other.wrapR && this->wrapS == other.wrapS &&
|
||||
this->wrapT == other.wrapT;
|
||||
}
|
||||
bool Scene::operator==(const Scene& other) const
|
||||
{
|
||||
return this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& this->name == other.name
|
||||
&& this->nodes == other.nodes;;
|
||||
bool Scene::operator==(const Scene &other) const {
|
||||
return this->extensions == other.extensions && this->extras == other.extras &&
|
||||
this->name == other.name && this->nodes == other.nodes;
|
||||
;
|
||||
}
|
||||
bool Skin::operator==(const Skin& other) const
|
||||
{
|
||||
return this->inverseBindMatrices == other.inverseBindMatrices
|
||||
&& this->joints == other.joints
|
||||
&& this->name == other.name
|
||||
&& this->skeleton == other.skeleton;
|
||||
bool Skin::operator==(const Skin &other) const {
|
||||
return this->inverseBindMatrices == other.inverseBindMatrices &&
|
||||
this->joints == other.joints && this->name == other.name &&
|
||||
this->skeleton == other.skeleton;
|
||||
}
|
||||
bool Texture::operator==(const Texture& other) const
|
||||
{
|
||||
return this->extensions == other.extensions
|
||||
&& this->extras == other.extras
|
||||
&& this->name == other.name
|
||||
&& this->sampler == other.sampler
|
||||
&& this->source == other.source;
|
||||
bool Texture::operator==(const Texture &other) const {
|
||||
return this->extensions == other.extensions && this->extras == other.extras &&
|
||||
this->name == other.name && this->sampler == other.sampler &&
|
||||
this->source == other.source;
|
||||
}
|
||||
bool Value::operator==(const Value& other) const
|
||||
{
|
||||
bool Value::operator==(const Value &other) const {
|
||||
return Equals(*this, other);
|
||||
}
|
||||
|
||||
@ -1588,8 +1503,8 @@ std::string base64_decode(std::string const &encoded_string) {
|
||||
|
||||
static bool LoadExternalFile(std::vector<unsigned char> *out, std::string *err,
|
||||
std::string *warn, const std::string &filename,
|
||||
const std::string &basedir, bool required, size_t reqBytes,
|
||||
bool checkSize, FsCallbacks *fs) {
|
||||
const std::string &basedir, bool required,
|
||||
size_t reqBytes, bool checkSize, FsCallbacks *fs) {
|
||||
if (fs == nullptr || fs->FileExists == nullptr ||
|
||||
fs->ExpandFilePath == nullptr || fs->ReadWholeFile == nullptr) {
|
||||
// This is a developer error, assert() ?
|
||||
@ -1621,7 +1536,8 @@ static bool LoadExternalFile(std::vector<unsigned char> *out, std::string *err,
|
||||
fs->ReadWholeFile(&buf, &fileReadErr, filepath, fs->user_data);
|
||||
if (!fileRead) {
|
||||
if (failMsgOut) {
|
||||
(*failMsgOut) += "File read error : " + filepath + " : " + fileReadErr + "\n";
|
||||
(*failMsgOut) +=
|
||||
"File read error : " + filepath + " : " + fileReadErr + "\n";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -1676,7 +1592,8 @@ bool LoadImageData(Image *image, std::string *err, std::string *warn,
|
||||
// image->uri references
|
||||
// an image file, it should be left as it is. Image loading should not be
|
||||
// mandatory (to support other formats)
|
||||
unsigned char *data = stbi_load_from_memory(bytes, size, &w, &h, &comp, req_comp);
|
||||
unsigned char *data =
|
||||
stbi_load_from_memory(bytes, size, &w, &h, &comp, req_comp);
|
||||
if (!data) {
|
||||
// NOTE: you can use `warn` instead of `err`
|
||||
if (err) {
|
||||
@ -1750,21 +1667,22 @@ bool WriteImageData(const std::string *basepath, const std::string *filename,
|
||||
|
||||
if (ext == "png") {
|
||||
if (!stbi_write_png_to_func(WriteToMemory_stbi, &data, image->width,
|
||||
image->height, image->component, &image->image[0],
|
||||
0)) {
|
||||
image->height, image->component,
|
||||
&image->image[0], 0)) {
|
||||
return false;
|
||||
}
|
||||
header = "data:image/png;base64,";
|
||||
} else if (ext == "jpg") {
|
||||
if (!stbi_write_jpg_to_func(WriteToMemory_stbi, &data, image->width,
|
||||
image->height, image->component, &image->image[0],
|
||||
100)) {
|
||||
image->height, image->component,
|
||||
&image->image[0], 100)) {
|
||||
return false;
|
||||
}
|
||||
header = "data:image/jpeg;base64,";
|
||||
} else if (ext == "bmp") {
|
||||
if (!stbi_write_bmp_to_func(WriteToMemory_stbi, &data, image->width,
|
||||
image->height, image->component, &image->image[0])) {
|
||||
image->height, image->component,
|
||||
&image->image[0])) {
|
||||
return false;
|
||||
}
|
||||
header = "data:image/bmp;base64,";
|
||||
@ -2018,9 +1936,8 @@ bool IsDataURI(const std::string &in) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DecodeDataURI(std::vector<unsigned char> *out,
|
||||
std::string &mime_type, const std::string &in,
|
||||
size_t reqBytes, bool checkSize) {
|
||||
bool DecodeDataURI(std::vector<unsigned char> *out, std::string &mime_type,
|
||||
const std::string &in, size_t reqBytes, bool checkSize) {
|
||||
std::string header = "data:application/octet-stream;base64,";
|
||||
std::string data;
|
||||
if (in.find(header) == 0) {
|
||||
@ -2632,8 +2549,8 @@ static bool ParseBuffer(Buffer *buffer, std::string *err, const json &o,
|
||||
}
|
||||
} else {
|
||||
// External .bin file.
|
||||
if (!LoadExternalFile(&buffer->data, err, /* warn */ nullptr, buffer->uri,
|
||||
basedir, true, bytes, true, fs)) {
|
||||
if (!LoadExternalFile(&buffer->data, err, /* warn */ nullptr,
|
||||
buffer->uri, basedir, true, bytes, true, fs)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -4269,7 +4186,8 @@ static void SerializeGltfAnimationSampler(AnimationSampler &sampler, json &o) {
|
||||
}
|
||||
|
||||
static void SerializeGltfAnimation(Animation &animation, json &o) {
|
||||
if(!animation.name.empty()) SerializeStringProperty("name", animation.name, o);
|
||||
if (!animation.name.empty())
|
||||
SerializeStringProperty("name", animation.name, o);
|
||||
json channels;
|
||||
for (unsigned int i = 0; i < animation.channels.size(); ++i) {
|
||||
json channel;
|
||||
|
Loading…
x
Reference in New Issue
Block a user