fix ext_feature_metadata schema url + regenerate

This commit is contained in:
Nithin Pranesh 2021-12-19 18:34:30 -05:00
parent 6e4b4b9faa
commit 1906b68bc6
12 changed files with 5764 additions and 203 deletions

View File

@ -3,27 +3,32 @@
#pragma once
#include "CesiumGltf/Library.h"
#include <CesiumUtility/ExtensibleObject.h>
#include <cstdint>
#include <unordered_map>
namespace CesiumGltf {
/**
* @brief KHR_draco_mesh_compression extension
*/
struct CESIUMGLTF_API ExtensionKhrDracoMeshCompression final : public CesiumUtility::ExtensibleObject {
static inline constexpr const char* TypeName = "ExtensionKhrDracoMeshCompression";
static inline constexpr const char* ExtensionName = "KHR_draco_mesh_compression";
/**
* @brief KHR_draco_mesh_compression extension
*/
struct CESIUMGLTF_API ExtensionKhrDracoMeshCompression final
: public CesiumUtility::ExtensibleObject {
static inline constexpr const char* TypeName =
"ExtensionKhrDracoMeshCompression";
static inline constexpr const char* ExtensionName =
"KHR_draco_mesh_compression";
/**
* @brief The index of the bufferView.
*/
int32_t bufferView = -1;
/**
* @brief The index of the bufferView.
*/
int32_t bufferView = -1;
/**
* @brief A dictionary object, where each key corresponds to an attribute and its unique attribute id stored in the compressed geometry.
*/
std::unordered_map<std::string, int32_t> attributes;
};
}
/**
* @brief A dictionary object, where each key corresponds to an attribute and
* its unique attribute id stored in the compressed geometry.
*/
std::unordered_map<std::string, int32_t> attributes;
};
} // namespace CesiumGltf

View File

@ -7,43 +7,48 @@
#include "CesiumGltf/Library.h"
#include "CesiumGltf/Schema.h"
#include "CesiumGltf/Statistics.h"
#include <CesiumUtility/ExtensibleObject.h>
#include <optional>
#include <string>
#include <unordered_map>
namespace CesiumGltf {
/**
* @brief glTF extension that assigns metadata to features in a model.
*/
struct CESIUMGLTF_API ExtensionModelExtFeatureMetadata final : public CesiumUtility::ExtensibleObject {
static inline constexpr const char* TypeName = "ExtensionModelExtFeatureMetadata";
static inline constexpr const char* ExtensionName = "EXT_feature_metadata";
/**
* @brief glTF extension that assigns metadata to features in a model.
*/
struct CESIUMGLTF_API ExtensionModelExtFeatureMetadata final
: public CesiumUtility::ExtensibleObject {
static inline constexpr const char* TypeName =
"ExtensionModelExtFeatureMetadata";
static inline constexpr const char* ExtensionName = "EXT_feature_metadata";
/**
* @brief An object defining classes and enums.
*/
std::optional<CesiumGltf::Schema> schema;
/**
* @brief An object defining classes and enums.
*/
std::optional<CesiumGltf::Schema> schema;
/**
* @brief The URI (or IRI) of the external schema file.
*/
std::optional<std::string> schemaUri;
/**
* @brief The URI (or IRI) of the external schema file.
*/
std::optional<std::string> schemaUri;
/**
* @brief An object containing statistics about features.
*/
std::optional<CesiumGltf::Statistics> statistics;
/**
* @brief An object containing statistics about features.
*/
std::optional<CesiumGltf::Statistics> statistics;
/**
* @brief A dictionary, where each key is a feature table ID and each value is an object defining the feature table.
*/
std::unordered_map<std::string, CesiumGltf::FeatureTable> featureTables;
/**
* @brief A dictionary, where each key is a feature table ID and each value is
* an object defining the feature table.
*/
std::unordered_map<std::string, CesiumGltf::FeatureTable> featureTables;
/**
* @brief A dictionary, where each key is a feature texture ID and each value is an object defining the feature texture.
*/
std::unordered_map<std::string, CesiumGltf::FeatureTexture> featureTextures;
};
}
/**
* @brief A dictionary, where each key is a feature texture ID and each value
* is an object defining the feature texture.
*/
std::unordered_map<std::string, CesiumGltf::FeatureTexture> featureTextures;
};
} // namespace CesiumGltf

View File

@ -0,0 +1,27 @@
// This file was generated by generate-classes.
// DO NOT EDIT THIS FILE!
#pragma once
#include "CesiumGltf/Library.h"
#include <CesiumUtility/ExtensibleObject.h>
#include <cstdint>
namespace CesiumGltf {
/**
* @brief glTF extension to specify textures using the KTX v2 images with Basis
* Universal supercompression.
*/
struct CESIUMGLTF_API ExtensionTextureBasisU final
: public CesiumUtility::ExtensibleObject {
static inline constexpr const char* TypeName = "ExtensionTextureBasisU";
static inline constexpr const char* ExtensionName = "KHR_texture_basisu";
/**
* @brief The index of the image which points to a KTX v2 resource with Basis
* Universal supercompression.
*/
int32_t source = -1;
};
} // namespace CesiumGltf

View File

@ -8,70 +8,89 @@
#include <CesiumJsonReader/IntegerJsonHandler.h>
namespace CesiumJsonReader {
class ExtensionReaderContext;
class ExtensionReaderContext;
}
namespace CesiumGltfReader {
class ExtensionKhrDracoMeshCompressionJsonHandler : public CesiumJsonReader::ExtensibleObjectJsonHandler, public CesiumJsonReader::IExtensionJsonHandler {
public:
using ValueType = CesiumGltf::ExtensionKhrDracoMeshCompression;
class ExtensionKhrDracoMeshCompressionJsonHandler
: public CesiumJsonReader::ExtensibleObjectJsonHandler,
public CesiumJsonReader::IExtensionJsonHandler {
public:
using ValueType = CesiumGltf::ExtensionKhrDracoMeshCompression;
static inline constexpr const char* ExtensionName = "KHR_draco_mesh_compression";
static inline constexpr const char* ExtensionName =
"KHR_draco_mesh_compression";
ExtensionKhrDracoMeshCompressionJsonHandler(const CesiumJsonReader::ExtensionReaderContext& context) noexcept;
void reset(IJsonHandler* pParentHandler, CesiumGltf::ExtensionKhrDracoMeshCompression* pObject);
ExtensionKhrDracoMeshCompressionJsonHandler(
const CesiumJsonReader::ExtensionReaderContext& context) noexcept;
void reset(
IJsonHandler* pParentHandler,
CesiumGltf::ExtensionKhrDracoMeshCompression* pObject);
virtual IJsonHandler* readObjectKey(const std::string_view& str) override;
virtual IJsonHandler* readObjectKey(const std::string_view& str) override;
virtual void reset(IJsonHandler* pParentHandler, CesiumUtility::ExtensibleObject& o, const std::string_view& extensionName) override;
virtual void reset(
IJsonHandler* pParentHandler,
CesiumUtility::ExtensibleObject& o,
const std::string_view& extensionName) override;
virtual IJsonHandler* readNull() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readNull();
};
virtual IJsonHandler* readBool(bool b) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readBool(b);
}
virtual IJsonHandler* readInt32(int32_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readInt32(i);
}
virtual IJsonHandler* readUint32(uint32_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readUint32(i);
}
virtual IJsonHandler* readInt64(int64_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readInt64(i);
}
virtual IJsonHandler* readUint64(uint64_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readUint64(i);
}
virtual IJsonHandler* readDouble(double d) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readDouble(d);
}
virtual IJsonHandler* readString(const std::string_view& str) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readString(str);
}
virtual IJsonHandler* readObjectStart() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readObjectStart();
}
virtual IJsonHandler* readObjectEnd() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readObjectEnd();
}
virtual IJsonHandler* readArrayStart() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readArrayStart();
}
virtual IJsonHandler* readArrayEnd() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readArrayEnd();
}
virtual void reportWarning(const std::string& warning, std::vector<std::string>&& context = std::vector<std::string>()) override {
CesiumJsonReader::ExtensibleObjectJsonHandler::reportWarning(warning, std::move(context));
}
protected:
IJsonHandler* readObjectKeyExtensionKhrDracoMeshCompression(const std::string& objectType, const std::string_view& str, CesiumGltf::ExtensionKhrDracoMeshCompression& o);
private:
CesiumGltf::ExtensionKhrDracoMeshCompression* _pObject = nullptr;
CesiumJsonReader::IntegerJsonHandler<int32_t> _bufferView;
CesiumJsonReader::DictionaryJsonHandler<int32_t, CesiumJsonReader::IntegerJsonHandler<int32_t>> _attributes;
virtual IJsonHandler* readNull() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readNull();
};
}
virtual IJsonHandler* readBool(bool b) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readBool(b);
}
virtual IJsonHandler* readInt32(int32_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readInt32(i);
}
virtual IJsonHandler* readUint32(uint32_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readUint32(i);
}
virtual IJsonHandler* readInt64(int64_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readInt64(i);
}
virtual IJsonHandler* readUint64(uint64_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readUint64(i);
}
virtual IJsonHandler* readDouble(double d) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readDouble(d);
}
virtual IJsonHandler* readString(const std::string_view& str) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readString(str);
}
virtual IJsonHandler* readObjectStart() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readObjectStart();
}
virtual IJsonHandler* readObjectEnd() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readObjectEnd();
}
virtual IJsonHandler* readArrayStart() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readArrayStart();
}
virtual IJsonHandler* readArrayEnd() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readArrayEnd();
}
virtual void reportWarning(
const std::string& warning,
std::vector<std::string>&& context =
std::vector<std::string>()) override {
CesiumJsonReader::ExtensibleObjectJsonHandler::reportWarning(
warning,
std::move(context));
}
protected:
IJsonHandler* readObjectKeyExtensionKhrDracoMeshCompression(
const std::string& objectType,
const std::string_view& str,
CesiumGltf::ExtensionKhrDracoMeshCompression& o);
private:
CesiumGltf::ExtensionKhrDracoMeshCompression* _pObject = nullptr;
CesiumJsonReader::IntegerJsonHandler<int32_t> _bufferView;
CesiumJsonReader::DictionaryJsonHandler<
int32_t,
CesiumJsonReader::IntegerJsonHandler<int32_t>>
_attributes;
};
} // namespace CesiumGltfReader

View File

@ -6,79 +6,100 @@
#include "FeatureTextureJsonHandler.h"
#include "SchemaJsonHandler.h"
#include "StatisticsJsonHandler.h"
#include <CesiumGltf/ExtensionModelExtFeatureMetadata.h>
#include <CesiumJsonReader/DictionaryJsonHandler.h>
#include <CesiumJsonReader/ExtensibleObjectJsonHandler.h>
#include <CesiumJsonReader/StringJsonHandler.h>
namespace CesiumJsonReader {
class ExtensionReaderContext;
class ExtensionReaderContext;
}
namespace CesiumGltfReader {
class ExtensionModelExtFeatureMetadataJsonHandler : public CesiumJsonReader::ExtensibleObjectJsonHandler, public CesiumJsonReader::IExtensionJsonHandler {
public:
using ValueType = CesiumGltf::ExtensionModelExtFeatureMetadata;
class ExtensionModelExtFeatureMetadataJsonHandler
: public CesiumJsonReader::ExtensibleObjectJsonHandler,
public CesiumJsonReader::IExtensionJsonHandler {
public:
using ValueType = CesiumGltf::ExtensionModelExtFeatureMetadata;
static inline constexpr const char* ExtensionName = "EXT_feature_metadata";
static inline constexpr const char* ExtensionName = "EXT_feature_metadata";
ExtensionModelExtFeatureMetadataJsonHandler(const CesiumJsonReader::ExtensionReaderContext& context) noexcept;
void reset(IJsonHandler* pParentHandler, CesiumGltf::ExtensionModelExtFeatureMetadata* pObject);
ExtensionModelExtFeatureMetadataJsonHandler(
const CesiumJsonReader::ExtensionReaderContext& context) noexcept;
void reset(
IJsonHandler* pParentHandler,
CesiumGltf::ExtensionModelExtFeatureMetadata* pObject);
virtual IJsonHandler* readObjectKey(const std::string_view& str) override;
virtual IJsonHandler* readObjectKey(const std::string_view& str) override;
virtual void reset(IJsonHandler* pParentHandler, CesiumUtility::ExtensibleObject& o, const std::string_view& extensionName) override;
virtual void reset(
IJsonHandler* pParentHandler,
CesiumUtility::ExtensibleObject& o,
const std::string_view& extensionName) override;
virtual IJsonHandler* readNull() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readNull();
};
virtual IJsonHandler* readBool(bool b) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readBool(b);
}
virtual IJsonHandler* readInt32(int32_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readInt32(i);
}
virtual IJsonHandler* readUint32(uint32_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readUint32(i);
}
virtual IJsonHandler* readInt64(int64_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readInt64(i);
}
virtual IJsonHandler* readUint64(uint64_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readUint64(i);
}
virtual IJsonHandler* readDouble(double d) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readDouble(d);
}
virtual IJsonHandler* readString(const std::string_view& str) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readString(str);
}
virtual IJsonHandler* readObjectStart() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readObjectStart();
}
virtual IJsonHandler* readObjectEnd() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readObjectEnd();
}
virtual IJsonHandler* readArrayStart() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readArrayStart();
}
virtual IJsonHandler* readArrayEnd() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readArrayEnd();
}
virtual void reportWarning(const std::string& warning, std::vector<std::string>&& context = std::vector<std::string>()) override {
CesiumJsonReader::ExtensibleObjectJsonHandler::reportWarning(warning, std::move(context));
}
protected:
IJsonHandler* readObjectKeyExtensionModelExtFeatureMetadata(const std::string& objectType, const std::string_view& str, CesiumGltf::ExtensionModelExtFeatureMetadata& o);
private:
CesiumGltf::ExtensionModelExtFeatureMetadata* _pObject = nullptr;
SchemaJsonHandler _schema;
CesiumJsonReader::StringJsonHandler _schemaUri;
StatisticsJsonHandler _statistics;
CesiumJsonReader::DictionaryJsonHandler<CesiumGltf::FeatureTable, FeatureTableJsonHandler> _featureTables;
CesiumJsonReader::DictionaryJsonHandler<CesiumGltf::FeatureTexture, FeatureTextureJsonHandler> _featureTextures;
virtual IJsonHandler* readNull() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readNull();
};
}
virtual IJsonHandler* readBool(bool b) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readBool(b);
}
virtual IJsonHandler* readInt32(int32_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readInt32(i);
}
virtual IJsonHandler* readUint32(uint32_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readUint32(i);
}
virtual IJsonHandler* readInt64(int64_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readInt64(i);
}
virtual IJsonHandler* readUint64(uint64_t i) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readUint64(i);
}
virtual IJsonHandler* readDouble(double d) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readDouble(d);
}
virtual IJsonHandler* readString(const std::string_view& str) override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readString(str);
}
virtual IJsonHandler* readObjectStart() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readObjectStart();
}
virtual IJsonHandler* readObjectEnd() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readObjectEnd();
}
virtual IJsonHandler* readArrayStart() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readArrayStart();
}
virtual IJsonHandler* readArrayEnd() override {
return CesiumJsonReader::ExtensibleObjectJsonHandler::readArrayEnd();
}
virtual void reportWarning(
const std::string& warning,
std::vector<std::string>&& context =
std::vector<std::string>()) override {
CesiumJsonReader::ExtensibleObjectJsonHandler::reportWarning(
warning,
std::move(context));
}
protected:
IJsonHandler* readObjectKeyExtensionModelExtFeatureMetadata(
const std::string& objectType,
const std::string_view& str,
CesiumGltf::ExtensionModelExtFeatureMetadata& o);
private:
CesiumGltf::ExtensionModelExtFeatureMetadata* _pObject = nullptr;
SchemaJsonHandler _schema;
CesiumJsonReader::StringJsonHandler _schemaUri;
StatisticsJsonHandler _statistics;
CesiumJsonReader::
DictionaryJsonHandler<CesiumGltf::FeatureTable, FeatureTableJsonHandler>
_featureTables;
CesiumJsonReader::DictionaryJsonHandler<
CesiumGltf::FeatureTexture,
FeatureTextureJsonHandler>
_featureTextures;
};
} // namespace CesiumGltfReader

View File

@ -10,18 +10,20 @@ namespace CesiumJsonReader {
class ExtensionReaderContext;
}
namespace CesiumGltf {
namespace CesiumGltfReader {
class ExtensionTextureBasisUJsonHandler
: public CesiumJsonReader::ExtensibleObjectJsonHandler,
public CesiumJsonReader::IExtensionJsonHandler {
public:
using ValueType = ExtensionTextureBasisU;
using ValueType = CesiumGltf::ExtensionTextureBasisU;
static inline constexpr const char* ExtensionName = "KHR_texture_basisu";
ExtensionTextureBasisUJsonHandler(
const CesiumJsonReader::ExtensionReaderContext& context) noexcept;
void reset(IJsonHandler* pParentHandler, ExtensionTextureBasisU* pObject);
void reset(
IJsonHandler* pParentHandler,
CesiumGltf::ExtensionTextureBasisU* pObject);
virtual IJsonHandler* readObjectKey(const std::string_view& str) override;
@ -79,10 +81,10 @@ protected:
IJsonHandler* readObjectKeyExtensionTextureBasisU(
const std::string& objectType,
const std::string_view& str,
ExtensionTextureBasisU& o);
CesiumGltf::ExtensionTextureBasisU& o);
private:
ExtensionTextureBasisU* _pObject = nullptr;
CesiumGltf::ExtensionTextureBasisU* _pObject = nullptr;
CesiumJsonReader::IntegerJsonHandler<int32_t> _source;
};
} // namespace CesiumGltf
} // namespace CesiumGltfReader

File diff suppressed because it is too large Load Diff

View File

@ -26,5 +26,8 @@ void registerExtensions(CesiumJsonReader::ExtensionReaderContext& context) {
context.registerExtension<
CesiumGltf::Model,
ExtensionModelExtFeatureMetadataJsonHandler>();
context.registerExtension<
CesiumGltf::Texture,
ExtensionTextureBasisUJsonHandler>();
}
} // namespace CesiumGltfReader

View File

@ -226,7 +226,7 @@ void postprocess(
if (options.decodeEmbeddedImages) {
CESIUM_TRACE("CesiumGltf::decodeEmbeddedImages");
for (Image& image : model.images) {
for (CesiumGltf::Image& image : model.images) {
// Ignore external images for now.
if (image.uri) {
continue;
@ -234,7 +234,8 @@ void postprocess(
const BufferView& bufferView =
Model::getSafe(model.bufferViews, image.bufferView);
const Buffer& buffer = Model::getSafe(model.buffers, bufferView.buffer);
const CesiumGltf::Buffer& buffer =
Model::getSafe(model.buffers, bufferView.buffer);
if (bufferView.byteOffset + bufferView.byteLength >
static_cast<int64_t>(buffer.cesium.data.size())) {
@ -329,13 +330,13 @@ Future<ModelReaderResult> GltfReader::resolveExternalData(
// Get a rough count of how many external buffers we may have.
// Some of these may be data uris though.
size_t uriBuffersCount = 0;
for (const Buffer& buffer : result.model->buffers) {
for (const CesiumGltf::Buffer& buffer : result.model->buffers) {
if (buffer.uri) {
++uriBuffersCount;
}
}
for (const Image& image : result.model->images) {
for (const CesiumGltf::Image& image : result.model->images) {
if (image.uri) {
++uriBuffersCount;
}
@ -359,7 +360,7 @@ Future<ModelReaderResult> GltfReader::resolveExternalData(
constexpr std::string_view dataPrefix = "data:";
constexpr size_t dataPrefixLength = dataPrefix.size();
for (Buffer& buffer : pResult->model->buffers) {
for (CesiumGltf::Buffer& buffer : pResult->model->buffers) {
if (buffer.uri && buffer.uri->substr(0, dataPrefixLength) != dataPrefix) {
resolvedBuffers.push_back(
pAssetAccessor
@ -387,7 +388,7 @@ Future<ModelReaderResult> GltfReader::resolveExternalData(
}
}
for (Image& image : pResult->model->images) {
for (CesiumGltf::Image& image : pResult->model->images) {
if (image.uri && image.uri->substr(0, dataPrefixLength) != dataPrefix) {
resolvedBuffers.push_back(
pAssetAccessor

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,498 @@
// This file was generated by generate-classes.
// DO NOT EDIT THIS FILE!
#pragma once
// forward declarations
namespace CesiumJsonWriter {
class JsonWriter;
class ExtensionWriterContext;
} // namespace CesiumJsonWriter
// forward declarations
namespace CesiumGltf {
struct ExtensionKhrDracoMeshCompression;
struct ExtensionModelExtFeatureMetadata;
struct ExtensionMeshPrimitiveExtFeatureMetadata;
struct ExtensionTextureBasisU;
struct FeatureIDTexture;
struct TextureAccessor;
struct TextureInfo;
struct FeatureIDAttribute;
struct FeatureIDs;
struct FeatureTexture;
struct FeatureTable;
struct FeatureTableProperty;
struct Statistics;
struct ClassStatistics;
struct PropertyStatistics;
struct Schema;
struct Enum;
struct EnumValue;
struct Class;
struct ClassProperty;
struct Model;
struct Texture;
struct Skin;
struct Scene;
struct Sampler;
struct Node;
struct Mesh;
struct MeshPrimitive;
struct Material;
struct MaterialOcclusionTextureInfo;
struct MaterialNormalTextureInfo;
struct MaterialPBRMetallicRoughness;
struct Image;
struct Camera;
struct CameraPerspective;
struct CameraOrthographic;
struct BufferView;
struct Buffer;
struct Asset;
struct Animation;
struct AnimationSampler;
struct AnimationChannel;
struct AnimationChannelTarget;
struct Accessor;
struct AccessorSparse;
struct AccessorSparseValues;
struct AccessorSparseIndices;
} // namespace CesiumGltf
namespace CesiumGltfWriter {
struct ExtensionKhrDracoMeshCompressionJsonWriter {
using ValueType = CesiumGltf::ExtensionKhrDracoMeshCompression;
static inline constexpr const char* ExtensionName =
"KHR_draco_mesh_compression";
static void write(
const CesiumGltf::ExtensionKhrDracoMeshCompression& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct ExtensionModelExtFeatureMetadataJsonWriter {
using ValueType = CesiumGltf::ExtensionModelExtFeatureMetadata;
static inline constexpr const char* ExtensionName = "EXT_feature_metadata";
static void write(
const CesiumGltf::ExtensionModelExtFeatureMetadata& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct ExtensionMeshPrimitiveExtFeatureMetadataJsonWriter {
using ValueType = CesiumGltf::ExtensionMeshPrimitiveExtFeatureMetadata;
static inline constexpr const char* ExtensionName = "EXT_feature_metadata";
static void write(
const CesiumGltf::ExtensionMeshPrimitiveExtFeatureMetadata& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct ExtensionTextureBasisUJsonWriter {
using ValueType = CesiumGltf::ExtensionTextureBasisU;
static inline constexpr const char* ExtensionName = "KHR_texture_basisu";
static void write(
const CesiumGltf::ExtensionTextureBasisU& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct FeatureIDTextureJsonWriter {
using ValueType = CesiumGltf::FeatureIDTexture;
static void write(
const CesiumGltf::FeatureIDTexture& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct TextureAccessorJsonWriter {
using ValueType = CesiumGltf::TextureAccessor;
static void write(
const CesiumGltf::TextureAccessor& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct TextureInfoJsonWriter {
using ValueType = CesiumGltf::TextureInfo;
static void write(
const CesiumGltf::TextureInfo& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct FeatureIDAttributeJsonWriter {
using ValueType = CesiumGltf::FeatureIDAttribute;
static void write(
const CesiumGltf::FeatureIDAttribute& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct FeatureIDsJsonWriter {
using ValueType = CesiumGltf::FeatureIDs;
static void write(
const CesiumGltf::FeatureIDs& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct FeatureTextureJsonWriter {
using ValueType = CesiumGltf::FeatureTexture;
static void write(
const CesiumGltf::FeatureTexture& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct FeatureTableJsonWriter {
using ValueType = CesiumGltf::FeatureTable;
static void write(
const CesiumGltf::FeatureTable& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct FeatureTablePropertyJsonWriter {
using ValueType = CesiumGltf::FeatureTableProperty;
static void write(
const CesiumGltf::FeatureTableProperty& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct StatisticsJsonWriter {
using ValueType = CesiumGltf::Statistics;
static void write(
const CesiumGltf::Statistics& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct ClassStatisticsJsonWriter {
using ValueType = CesiumGltf::ClassStatistics;
static void write(
const CesiumGltf::ClassStatistics& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct PropertyStatisticsJsonWriter {
using ValueType = CesiumGltf::PropertyStatistics;
static void write(
const CesiumGltf::PropertyStatistics& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct SchemaJsonWriter {
using ValueType = CesiumGltf::Schema;
static void write(
const CesiumGltf::Schema& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct EnumJsonWriter {
using ValueType = CesiumGltf::Enum;
static void write(
const CesiumGltf::Enum& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct EnumValueJsonWriter {
using ValueType = CesiumGltf::EnumValue;
static void write(
const CesiumGltf::EnumValue& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct ClassJsonWriter {
using ValueType = CesiumGltf::Class;
static void write(
const CesiumGltf::Class& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct ClassPropertyJsonWriter {
using ValueType = CesiumGltf::ClassProperty;
static void write(
const CesiumGltf::ClassProperty& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct ModelJsonWriter {
using ValueType = CesiumGltf::Model;
static void write(
const CesiumGltf::Model& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct TextureJsonWriter {
using ValueType = CesiumGltf::Texture;
static void write(
const CesiumGltf::Texture& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct SkinJsonWriter {
using ValueType = CesiumGltf::Skin;
static void write(
const CesiumGltf::Skin& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct SceneJsonWriter {
using ValueType = CesiumGltf::Scene;
static void write(
const CesiumGltf::Scene& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct SamplerJsonWriter {
using ValueType = CesiumGltf::Sampler;
static void write(
const CesiumGltf::Sampler& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct NodeJsonWriter {
using ValueType = CesiumGltf::Node;
static void write(
const CesiumGltf::Node& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct MeshJsonWriter {
using ValueType = CesiumGltf::Mesh;
static void write(
const CesiumGltf::Mesh& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct MeshPrimitiveJsonWriter {
using ValueType = CesiumGltf::MeshPrimitive;
static void write(
const CesiumGltf::MeshPrimitive& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct MaterialJsonWriter {
using ValueType = CesiumGltf::Material;
static void write(
const CesiumGltf::Material& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct MaterialOcclusionTextureInfoJsonWriter {
using ValueType = CesiumGltf::MaterialOcclusionTextureInfo;
static void write(
const CesiumGltf::MaterialOcclusionTextureInfo& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct MaterialNormalTextureInfoJsonWriter {
using ValueType = CesiumGltf::MaterialNormalTextureInfo;
static void write(
const CesiumGltf::MaterialNormalTextureInfo& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct MaterialPBRMetallicRoughnessJsonWriter {
using ValueType = CesiumGltf::MaterialPBRMetallicRoughness;
static void write(
const CesiumGltf::MaterialPBRMetallicRoughness& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct ImageJsonWriter {
using ValueType = CesiumGltf::Image;
static void write(
const CesiumGltf::Image& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct CameraJsonWriter {
using ValueType = CesiumGltf::Camera;
static void write(
const CesiumGltf::Camera& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct CameraPerspectiveJsonWriter {
using ValueType = CesiumGltf::CameraPerspective;
static void write(
const CesiumGltf::CameraPerspective& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct CameraOrthographicJsonWriter {
using ValueType = CesiumGltf::CameraOrthographic;
static void write(
const CesiumGltf::CameraOrthographic& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct BufferViewJsonWriter {
using ValueType = CesiumGltf::BufferView;
static void write(
const CesiumGltf::BufferView& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct BufferJsonWriter {
using ValueType = CesiumGltf::Buffer;
static void write(
const CesiumGltf::Buffer& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AssetJsonWriter {
using ValueType = CesiumGltf::Asset;
static void write(
const CesiumGltf::Asset& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AnimationJsonWriter {
using ValueType = CesiumGltf::Animation;
static void write(
const CesiumGltf::Animation& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AnimationSamplerJsonWriter {
using ValueType = CesiumGltf::AnimationSampler;
static void write(
const CesiumGltf::AnimationSampler& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AnimationChannelJsonWriter {
using ValueType = CesiumGltf::AnimationChannel;
static void write(
const CesiumGltf::AnimationChannel& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AnimationChannelTargetJsonWriter {
using ValueType = CesiumGltf::AnimationChannelTarget;
static void write(
const CesiumGltf::AnimationChannelTarget& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AccessorJsonWriter {
using ValueType = CesiumGltf::Accessor;
static void write(
const CesiumGltf::Accessor& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AccessorSparseJsonWriter {
using ValueType = CesiumGltf::AccessorSparse;
static void write(
const CesiumGltf::AccessorSparse& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AccessorSparseValuesJsonWriter {
using ValueType = CesiumGltf::AccessorSparseValues;
static void write(
const CesiumGltf::AccessorSparseValues& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
struct AccessorSparseIndicesJsonWriter {
using ValueType = CesiumGltf::AccessorSparseIndices;
static void write(
const CesiumGltf::AccessorSparseIndices& obj,
CesiumJsonWriter::JsonWriter& jsonWriter,
const CesiumJsonWriter::ExtensionWriterContext& context);
};
void registerExtensions(CesiumJsonWriter::ExtensionWriterContext& context);
} // namespace CesiumGltfWriter

View File

@ -43,7 +43,7 @@
{
"className": "ExtensionMeshPrimitiveExtFeatureMetadata",
"extensionName": "EXT_feature_metadata",
"schema": "Vendor/EXT_feature_metadata/schema/primitive.EXT_feature_metadata.schema.json",
"schema": "Vendor/EXT_feature_metadata/schema/mesh.primitive.EXT_feature_metadata.schema.json",
"attachTo": [
"mesh.primitive"
]