use serde::Deserialize; use crate::pb_components::action::Action; use crate::pb_components::condition::Conditions; #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase", deny_unknown_fields)] pub struct ConditionAction { pub condition: Conditions, pub action: Vec, } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase", deny_unknown_fields)] pub struct DelayChangeState { pub time: f32, pub new_state: String, } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase", deny_unknown_fields)] pub struct StateConfigs { pub duration: f32, pub state: String, } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase", deny_unknown_fields)] pub struct StateChangeBehaviors { pub state: String, pub action: Option>, pub condition_action: Option>, pub delay_change_state: Option } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase", deny_unknown_fields)] pub struct LockConfig { pub lock_type: Option, // TODO: Enum pub is_init_lock: Option, } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase", deny_unknown_fields)] pub struct EntityStateComponent { pub disabled: Option, pub r#type: Option, pub state: Option, pub state_change_condition: Option, pub state_change_behaviors: Option>, pub state_configs: Option>, pub cycle_states: Option>, pub prefab_performance_type: Option, pub lock_config: Option, pub instant_actions_on_state_change: Option, }