bmh/FlightSimulation/Plugins/CesiumForUnreal_5.4/Source/CesiumRuntime/Private/CreateGltfOptions.h
2025-02-07 22:52:32 +08:00

69 lines
2.4 KiB
C++

// Copyright 2020-2024 CesiumGS, Inc. and Contributors
#pragma once
#include "CesiumEncodedMetadataComponent.h"
#include "CesiumGltf/Mesh.h"
#include "CesiumGltf/MeshPrimitive.h"
#include "CesiumGltf/Model.h"
#include "CesiumGltf/Node.h"
#include "LoadGltfResult.h"
// TODO: internal documentation
namespace CreateGltfOptions {
struct CreateModelOptions {
const FCesiumFeaturesMetadataDescription* pFeaturesMetadataDescription =
nullptr;
CesiumGltf::Model* pModel = nullptr;
PRAGMA_DISABLE_DEPRECATION_WARNINGS
const FMetadataDescription* pEncodedMetadataDescription_DEPRECATED = nullptr;
PRAGMA_ENABLE_DEPRECATION_WARNINGS
bool alwaysIncludeTangents = false;
bool createPhysicsMeshes = true;
bool ignoreKhrMaterialsUnlit = false;
Cesium3DTilesSelection::TileLoadResult tileLoadResult;
public:
CreateModelOptions(Cesium3DTilesSelection::TileLoadResult&& tileLoadResult_)
: tileLoadResult(std::move(tileLoadResult_)) {
pModel = std::get_if<CesiumGltf::Model>(&this->tileLoadResult.contentKind);
}
CreateModelOptions(CreateModelOptions&& other)
: pFeaturesMetadataDescription(other.pFeaturesMetadataDescription),
pEncodedMetadataDescription_DEPRECATED(
other.pEncodedMetadataDescription_DEPRECATED),
alwaysIncludeTangents(other.alwaysIncludeTangents),
createPhysicsMeshes(other.createPhysicsMeshes),
ignoreKhrMaterialsUnlit(other.ignoreKhrMaterialsUnlit),
tileLoadResult(std::move(other.tileLoadResult)) {
pModel = std::get_if<CesiumGltf::Model>(&this->tileLoadResult.contentKind);
}
CreateModelOptions(const CreateModelOptions&) = delete;
CreateModelOptions& operator=(const CreateModelOptions&) = delete;
CreateModelOptions& operator=(CreateModelOptions&&) = delete;
};
struct CreateNodeOptions {
const CreateModelOptions* pModelOptions = nullptr;
const LoadGltfResult::LoadedModelResult* pHalfConstructedModelResult =
nullptr;
const CesiumGltf::Node* pNode = nullptr;
};
struct CreateMeshOptions {
const CreateNodeOptions* pNodeOptions = nullptr;
const LoadGltfResult::LoadedNodeResult* pHalfConstructedNodeResult = nullptr;
int32_t meshIndex = -1;
};
struct CreatePrimitiveOptions {
const CreateMeshOptions* pMeshOptions = nullptr;
const LoadGltfResult::LoadedMeshResult* pHalfConstructedMeshResult = nullptr;
int32_t primitiveIndex = -1;
};
} // namespace CreateGltfOptions