use serde::{Deserialize, Serialize};
use crate::schema::{
animated_properties::value::FloatValue,
helpers::{int_boolean::BoolInt, visual_object::VisualObject},
};
use super::visual::VisualLayer;
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
pub struct Layer {
#[serde(flatten)]
pub visual_object: VisualObject,
#[serde(rename = "ddd", default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub three_dimensional: Option<BoolInt>,
#[serde(rename = "hd", default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub hidden: Option<bool>,
#[serde(rename = "ty")]
pub layer_type: u8,
#[serde(rename = "ind")]
#[serde(skip_serializing_if = "Option::is_none")]
pub index: Option<usize>,
#[serde(rename = "parent")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_index: Option<usize>,
#[serde(rename = "sr")]
#[serde(skip_serializing_if = "Option::is_none")]
pub time_stretch: Option<f64>,
#[serde(rename = "ip")]
pub in_point: f64,
#[serde(rename = "op")]
pub out_point: f64,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "st")]
pub start_time: Option<f64>,
}