// This file was generated by generate-classes.
// DO NOT EDIT THIS FILE!
#pragma once

#include "CesiumGltf/ExtensionKhrGaussianSplattingHintsValue.h"
#include "CesiumGltf/Library.h"
#include <CesiumUtility/ExtensibleObject.h>
#include <optional>
#include <string>

namespace CesiumGltf {
    /**
     * @brief Data for a 3D Gaussian Splat primitive.
     */
    struct CESIUMGLTF_API ExtensionKhrGaussianSplatting final : public CesiumUtility::ExtensibleObject {
        static inline constexpr const char* TypeName = "ExtensionKhrGaussianSplatting";
        static inline constexpr const char* ExtensionName = "KHR_gaussian_splatting";

        /**
         * @brief The shape of the Gaussian to render. Gaussians may be available in different shapes, so this is a freeform field that defaults to ellipsoid. See the extension specification for futher known types.
         */
        std::string shape = "ellipsoid";

        /**
         * @brief Optional rendering hints for rendering the 3D Gaussian splats. Renderers are free to ignore any of these.
         */
        std::optional<CesiumGltf::ExtensionKhrGaussianSplattingHintsValue> hints;

    };
}
