use serde::{Deserialize, Serialize};
use crate::enums::{ExportOrientation, FbxPreset, OutputFormat, TextureFormat};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
#[serde(deny_unknown_fields)]
pub struct ConvertModelRequest {
pub original_model_task_id: String,
pub format: OutputFormat,
#[serde(skip_serializing_if = "Option::is_none")]
pub quad: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub force_symmetry: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub face_limit: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub flatten_bottom: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub flatten_bottom_threshold: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub texture_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub texture_format: Option<TextureFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scale_factor: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pivot_to_center_bottom: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub with_animation: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pack_uv: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bake: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub part_names: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub export_vertex_colors: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fbx_preset: Option<FbxPreset>,
#[serde(skip_serializing_if = "Option::is_none")]
pub export_orientation: Option<ExportOrientation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub animate_in_place: Option<bool>,
}