From 9b1a4e6536a2f04bd86fede0f3db01714532a0ac Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 10:00:08 +0200 Subject: [PATCH 01/35] feat(macro): remove concept generation on host --- crates/ecs/src/generated.rs | 248 ------------------ .../package_macro_common/src/concepts.rs | 24 +- 2 files changed, 7 insertions(+), 265 deletions(-) diff --git a/crates/ecs/src/generated.rs b/crates/ecs/src/generated.rs index c0660e859f..497e8b34e8 100644 --- a/crates/ecs/src/generated.rs +++ b/crates/ecs/src/generated.rs @@ -94,120 +94,6 @@ mod raw { use std::time::Duration; components ! ("camera" , { # [doc = "**Active camera**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\n\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Active camera"] , Description ["The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough)."]] active_camera : f32 , # [doc = "**Aspect ratio**: The aspect ratio of this camera.\n\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Aspect ratio"] , Description ["The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window."]] aspect_ratio : f32 , # [doc = "**Aspect ratio from window**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Aspect ratio from window"] , Description ["If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component."]] aspect_ratio_from_window : EntityId , # [doc = "**Far plane**: The far plane of this camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Far plane"] , Description ["The far plane of this camera, measured in meters."]] far : f32 , # [doc = "**Fog**: If attached, this camera will see/render fog.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog"] , Description ["If attached, this camera will see/render fog."]] fog : () , # [doc = "**Field of View Y**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Field of View Y"] , Description ["The field of view of this camera in the Y/vertical direction, measured in radians."]] fovy : f32 , # [doc = "**Near plane**: The near plane of this camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Near plane"] , Description ["The near plane of this camera, measured in meters."]] near : f32 , # [doc = "**Orthographic projection**: If attached, this camera will use a standard orthographic projection matrix.\n\nEnsure that the `orthographic_` components are set, including `left`, right`, `top` and `bottom`, as well as `near` and `far`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic projection"] , Description ["If attached, this camera will use a standard orthographic projection matrix.\nEnsure that the `orthographic_` components are set, including `left`, right`, `top` and `bottom`, as well as `near` and `far`."]] orthographic : () , # [doc = "**Orthographic bottom**: The bottom bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic bottom"] , Description ["The bottom bound for this `orthographic` camera."]] orthographic_bottom : f32 , # [doc = "**Orthographic from window**: The bounds of this orthographic camera will be updated to match the window automatically. Should point to an entity with a `window_logical_size` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic from window"] , Description ["The bounds of this orthographic camera will be updated to match the window automatically. Should point to an entity with a `window_logical_size` component."]] orthographic_from_window : EntityId , # [doc = "**Orthographic left**: The left bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic left"] , Description ["The left bound for this `orthographic` camera."]] orthographic_left : f32 , # [doc = "**Orthographic right**: The right bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic right"] , Description ["The right bound for this `orthographic` camera."]] orthographic_right : f32 , # [doc = "**Orthographic top**: The top bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic top"] , Description ["The top bound for this `orthographic` camera."]] orthographic_top : f32 , # [doc = "**Perspective projection**: If attached, this camera will use a standard perspective projection matrix.\n\nEnsure that `near` and `far` are set.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Perspective projection"] , Description ["If attached, this camera will use a standard perspective projection matrix.\nEnsure that `near` and `far` are set."]] perspective : () , # [doc = "**Perspective-infinite-reverse projection**: If attached, this camera will use a perspective-infinite-reverse projection matrix.\n\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Perspective-infinite-reverse projection"] , Description ["If attached, this camera will use a perspective-infinite-reverse projection matrix.\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set."]] perspective_infinite_reverse : () , # [doc = "**Projection**: The projection matrix of this camera.\n\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Projection"] , Description ["The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`."]] projection : Mat4 , # [doc = "**Projection-view**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Projection-view"] , Description ["The composition of the projection and view (inverse-local-to-world) matrices."]] projection_view : Mat4 , # [doc = "**Shadows far plane**: The far plane for the shadow camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Shadows far plane"] , Description ["The far plane for the shadow camera, measured in meters."]] shadows_far : f32 , }); } - #[doc = r" Auto-generated concept definitions. Concepts are collections of components that describe some form of gameplay concept."] - #[doc = r""] - #[doc = r" They do not have any runtime representation outside of the components that compose them."] - pub mod concepts { - use crate::{Component, Entity, EntityId}; - use glam::{ - IVec2, IVec3, IVec4, Mat4, Quat, UVec2, UVec3, UVec4, Vec2, Vec3, Vec4, - }; - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] - pub fn make_camera() -> Entity { - Entity :: new () . with_merge (crate :: generated :: raw :: ambient_core :: transform :: concepts :: make_transformable ()) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: near () , 0.1f32) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: projection () , Mat4 :: from_cols_array (& [1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 ,])) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: projection_view () , Mat4 :: from_cols_array (& [1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 ,])) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: active_camera () , 0f32) . with (crate :: generated :: raw :: ambient_core :: transform :: components :: local_to_world () , Mat4 :: from_cols_array (& [1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 ,])) . with (crate :: generated :: raw :: ambient_core :: transform :: components :: inv_local_to_world () , Mat4 :: from_cols_array (& [1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 ,])) - } - #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] - pub fn is_camera(world: &crate::World, id: EntityId) -> bool { - crate :: generated :: raw :: ambient_core :: transform :: concepts :: is_transformable (world , id) && world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: near () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: projection () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: projection_view () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: active_camera () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: transform :: components :: local_to_world () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: transform :: components :: inv_local_to_world () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn camera() -> ( - Component, - Component, - Component, - Component, - Component, - Component, - ) { - (crate :: generated :: raw :: ambient_core :: camera :: components :: near () , crate :: generated :: raw :: ambient_core :: camera :: components :: projection () , crate :: generated :: raw :: ambient_core :: camera :: components :: projection_view () , crate :: generated :: raw :: ambient_core :: camera :: components :: active_camera () , crate :: generated :: raw :: ambient_core :: transform :: components :: local_to_world () , crate :: generated :: raw :: ambient_core :: transform :: components :: inv_local_to_world ()) - } - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - pub fn make_perspective_common_camera() -> Entity { - Entity::new() - .with_merge( - crate::generated::raw::ambient_core::camera::concepts::make_camera(), - ) - .with( - crate::generated::raw::ambient_core::camera::components::fovy(), - 1f32, - ) - .with( - crate::generated::raw::ambient_core::camera::components::aspect_ratio(), - 1f32, - ) - } - #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - pub fn is_perspective_common_camera(world: &crate::World, id: EntityId) -> bool { - crate :: generated :: raw :: ambient_core :: camera :: concepts :: is_camera (world , id) && world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: fovy () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: aspect_ratio () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn perspective_common_camera() -> (Component, Component) { - ( - crate::generated::raw::ambient_core::camera::components::fovy(), - crate::generated::raw::ambient_core::camera::components::aspect_ratio(), - ) - } - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - pub fn make_perspective_camera() -> Entity { - Entity :: new () . with_merge (crate :: generated :: raw :: ambient_core :: camera :: concepts :: make_perspective_common_camera ()) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: perspective () , ()) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: far () , 1000f32) - } - #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - pub fn is_perspective_camera(world: &crate::World, id: EntityId) -> bool { - crate :: generated :: raw :: ambient_core :: camera :: concepts :: is_perspective_common_camera (world , id) && world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: perspective () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: far () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn perspective_camera() -> (Component<()>, Component) { - ( - crate::generated::raw::ambient_core::camera::components::perspective(), - crate::generated::raw::ambient_core::camera::components::far(), - ) - } - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - pub fn make_perspective_infinite_reverse_camera() -> Entity { - Entity :: new () . with_merge (crate :: generated :: raw :: ambient_core :: camera :: concepts :: make_perspective_common_camera ()) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: perspective_infinite_reverse () , ()) - } - #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - pub fn is_perspective_infinite_reverse_camera( - world: &crate::World, - id: EntityId, - ) -> bool { - crate :: generated :: raw :: ambient_core :: camera :: concepts :: is_perspective_common_camera (world , id) && world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: perspective_infinite_reverse () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn perspective_infinite_reverse_camera() -> (Component<()>) { - (crate :: generated :: raw :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) - } - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - pub fn make_orthographic_camera() -> Entity { - Entity :: new () . with_merge (crate :: generated :: raw :: ambient_core :: camera :: concepts :: make_camera ()) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic () , ()) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_left () , - 1f32) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_right () , 1f32) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_top () , 1f32) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_bottom () , - 1f32) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: near () , - 1f32) . with (crate :: generated :: raw :: ambient_core :: camera :: components :: far () , 1f32) - } - #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - pub fn is_orthographic_camera(world: &crate::World, id: EntityId) -> bool { - crate :: generated :: raw :: ambient_core :: camera :: concepts :: is_camera (world , id) && world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_left () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_right () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_top () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_bottom () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: near () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: camera :: components :: far () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn orthographic_camera() -> ( - Component<()>, - Component, - Component, - Component, - Component, - Component, - Component, - ) { - (crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic () , crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_left () , crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_right () , crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_top () , crate :: generated :: raw :: ambient_core :: camera :: components :: orthographic_bottom () , crate :: generated :: raw :: ambient_core :: camera :: components :: near () , crate :: generated :: raw :: ambient_core :: camera :: components :: far ()) - } - } } #[allow(unused)] pub mod ecs { @@ -624,29 +510,6 @@ mod raw { use std::time::Duration; components ! ("physics" , { # [doc = "**Angular velocity**: Angular velocity (radians/second) of this entity in the physics scene.\n\nUpdating this component will update the entity's angular velocity in the physics scene.\n\n\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like improper physics or collisions failing.\n\n\n\nIf you need to adjust the velocity each frame, consider applying an impulse using `physics` functions instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Angular velocity"] , Description ["Angular velocity (radians/second) of this entity in the physics scene.\nUpdating this component will update the entity's angular velocity in the physics scene.\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like improper physics or collisions failing.\n\nIf you need to adjust the velocity each frame, consider applying an impulse using `physics` functions instead."]] angular_velocity : Vec3 , # [doc = "**Cube collider**: If attached, this entity will have a cube physics collider.\n\n`x, y, z` is the size of the cube.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cube collider"] , Description ["If attached, this entity will have a cube physics collider.\n`x, y, z` is the size of the cube."]] cube_collider : Vec3 , # [doc = "**Character controller height**: The height of the physics character controller attached to this entity.\n\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Character controller height"] , Description ["The height of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider."]] character_controller_height : f32 , # [doc = "**Character controller radius**: The radius of the physics character controller attached to this entity.\n\nIf an entity has both this and a `character_controller_height`, it will be given a physical character collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Character controller radius"] , Description ["The radius of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_height`, it will be given a physical character collider."]] character_controller_radius : f32 , # [doc = "**Collider from URL**: This entity will load its physics collider from the URL.\n\nThe value is the URL to load from.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Collider from URL"] , Description ["This entity will load its physics collider from the URL.\nThe value is the URL to load from."]] collider_from_url : String , # [doc = "**Collider loaded**: This component is automatically attached to an entity once the collider has been loaded (through e.g. `collider_from_url`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Collider loaded"] , Description ["This component is automatically attached to an entity once the collider has been loaded (through e.g. `collider_from_url`)."]] collider_loaded : () , # [doc = "**Collider loads**: Contains all colliders that were loaded in this physics tick.\n\n*Attributes*: Debuggable, Networked, Resource, Store"] @ [Debuggable , Networked , Resource , Store , Name ["Collider loads"] , Description ["Contains all colliders that were loaded in this physics tick."]] collider_loads : Vec :: < EntityId > , # [doc = "**Contact offset**: Contact offset (in meters) of this entity in the physics scene.\n\nUpdating this component will update the entity's contact offset for each attached shape in the physics scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Contact offset"] , Description ["Contact offset (in meters) of this entity in the physics scene.\nUpdating this component will update the entity's contact offset for each attached shape in the physics scene."]] contact_offset : f32 , # [doc = "**Density**: The density of this entity.\n\nThis is used to update the `mass` when the entity is rescaled.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 1.0"] @ [Debuggable , Networked , Store , Name ["Density"] , Description ["The density of this entity.\nThis is used to update the `mass` when the entity is rescaled."]] density : f32 , # [doc = "**Dynamic**: If this is true, the entity will be dynamic (i.e. be able to move). Otherwise, it will be static.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Dynamic"] , Description ["If this is true, the entity will be dynamic (i.e. be able to move). Otherwise, it will be static."]] dynamic : bool , # [doc = "**Kinematic**: If attached, and this entity is dynamic, this entity will also be kinematic (i.e. unable to be affected by other entities motion). Otherwise, it will receive forces normally.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Kinematic"] , Description ["If attached, and this entity is dynamic, this entity will also be kinematic (i.e. unable to be affected by other entities motion). Otherwise, it will receive forces normally."]] kinematic : () , # [doc = "**Linear velocity**: Linear velocity (meters/second) of this entity in the physics scene.\n\nUpdating this component will update the entity's linear velocity in the physics scene.\n\n\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like gravity not working or collisions failing.\n\n\n\nIf you need to adjust the velocity each frame, consider applying a force using `physics` functions instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Linear velocity"] , Description ["Linear velocity (meters/second) of this entity in the physics scene.\nUpdating this component will update the entity's linear velocity in the physics scene.\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like gravity not working or collisions failing.\n\nIf you need to adjust the velocity each frame, consider applying a force using `physics` functions instead."]] linear_velocity : Vec3 , # [doc = "**Make physics static**: All physics objects will be made static when loaded.\n\n*Attributes*: Debuggable, Networked, Resource, Store"] @ [Debuggable , Networked , Resource , Store , Name ["Make physics static"] , Description ["All physics objects will be made static when loaded."]] make_physics_static : bool , # [doc = "**Mass**: The mass of this entity, measured in kilograms.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 1.0"] @ [Debuggable , Networked , Store , Name ["Mass"] , Description ["The mass of this entity, measured in kilograms."]] mass : f32 , # [doc = "**Physics controlled**: If attached, this entity will be controlled by physics.\n\nNote that this requires the entity to have a collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Physics controlled"] , Description ["If attached, this entity will be controlled by physics.\nNote that this requires the entity to have a collider."]] physics_controlled : () , # [doc = "**Plane collider**: If attached, this entity will have a plane physics collider. A plane is an infinite, flat surface. If you need a bounded flat surface, consider using a cube collider instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Plane collider"] , Description ["If attached, this entity will have a plane physics collider. A plane is an infinite, flat surface. If you need a bounded flat surface, consider using a cube collider instead."]] plane_collider : () , # [doc = "**Rest offset**: Rest offset (in meters) of this entity in the physics scene.\n\nUpdating this component will update the entity's rest offset for each attached shape in the physics scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Rest offset"] , Description ["Rest offset (in meters) of this entity in the physics scene.\nUpdating this component will update the entity's rest offset for each attached shape in the physics scene."]] rest_offset : f32 , # [doc = "**Sphere collider**: If attached, this entity will have a sphere physics collider.\n\nThe value corresponds to the radius of the sphere.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sphere collider"] , Description ["If attached, this entity will have a sphere physics collider.\nThe value corresponds to the radius of the sphere."]] sphere_collider : f32 , # [doc = "**Unit mass**: The mass of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit mass"] , Description ["The mass of a character/unit."]] unit_mass : f32 , # [doc = "**Unit velocity**: The velocity of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit velocity"] , Description ["The velocity of a character/unit."]] unit_velocity : Vec3 , # [doc = "**Unit yaw**: The yaw of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit yaw"] , Description ["The yaw of a character/unit."]] unit_yaw : f32 , # [doc = "**Visualize collider**: If attached, the collider will be rendered.\n\n\n\n**Note**: this will continuously overwrite the `local_gizmos` component.\n\n\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Visualize collider"] , Description ["If attached, the collider will be rendered.\n\n**Note**: this will continuously overwrite the `local_gizmos` component.\n"]] visualize_collider : () , }); } - #[doc = r" Auto-generated concept definitions. Concepts are collections of components that describe some form of gameplay concept."] - #[doc = r""] - #[doc = r" They do not have any runtime representation outside of the components that compose them."] - pub mod concepts { - use crate::{Component, Entity, EntityId}; - use glam::{ - IVec2, IVec3, IVec4, Mat4, Quat, UVec2, UVec3, UVec4, Vec2, Vec3, Vec4, - }; - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] - pub fn make_character_controller() -> Entity { - Entity :: new () . with (crate :: generated :: raw :: ambient_core :: physics :: components :: character_controller_height () , 2f32) . with (crate :: generated :: raw :: ambient_core :: physics :: components :: character_controller_radius () , 0.5f32) . with (crate :: generated :: raw :: ambient_core :: physics :: components :: physics_controlled () , ()) - } - #[doc = "Checks if the entity is a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] - pub fn is_character_controller(world: &crate::World, id: EntityId) -> bool { - world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: physics :: components :: character_controller_height () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: physics :: components :: character_controller_radius () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: physics :: components :: physics_controlled () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Character Controller* as a tuple.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn character_controller() -> (Component, Component, Component<()>) { - (crate :: generated :: raw :: ambient_core :: physics :: components :: character_controller_height () , crate :: generated :: raw :: ambient_core :: physics :: components :: character_controller_radius () , crate :: generated :: raw :: ambient_core :: physics :: components :: physics_controlled ()) - } - } } #[allow(unused)] pub mod player { @@ -698,83 +561,6 @@ mod raw { use std::time::Duration; components ! ("primitives" , { # [doc = "**Cube**: If attached to an entity, the entity will be converted to a cube primitive.\n\nThe cube is unit-sized (i.e. 0.5 metres out to each side).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cube"] , Description ["If attached to an entity, the entity will be converted to a cube primitive.\nThe cube is unit-sized (i.e. 0.5 metres out to each side)."]] cube : () , # [doc = "**Quad**: If attached to an entity, the entity will be converted to a quad primitive.\n\nThe quad is unit-sized on the XY axes, and flat on the Z axis (i.e. 0.5 metres out to the XY axes).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Quad"] , Description ["If attached to an entity, the entity will be converted to a quad primitive.\nThe quad is unit-sized on the XY axes, and flat on the Z axis (i.e. 0.5 metres out to the XY axes)."]] quad : () , # [doc = "**Sphere**: If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\n\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sphere"] , Description ["If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`)."]] sphere : () , # [doc = "**Sphere radius**: Set the radius of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 0.5"] @ [Debuggable , Networked , Store , Name ["Sphere radius"] , Description ["Set the radius of a `sphere` entity."]] sphere_radius : f32 , # [doc = "**Sphere sectors**: Set the longitudinal sectors of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 36"] @ [Debuggable , Networked , Store , Name ["Sphere sectors"] , Description ["Set the longitudinal sectors of a `sphere` entity."]] sphere_sectors : u32 , # [doc = "**Sphere stacks**: Set the latitudinal stacks of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 18"] @ [Debuggable , Networked , Store , Name ["Sphere stacks"] , Description ["Set the latitudinal stacks of a `sphere` entity."]] sphere_stacks : u32 , # [doc = "**Torus**: If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\n\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus"] , Description ["If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`)."]] torus : () , # [doc = "**Torus inner radius**: Set the inner radius of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus inner radius"] , Description ["Set the inner radius of a `torus` entity, spanning XY-plane."]] torus_inner_radius : f32 , # [doc = "**Torus outer radius**: Set the outer radius of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus outer radius"] , Description ["Set the outer radius of a `torus` entity, spanning XY-plane."]] torus_outer_radius : f32 , # [doc = "**Torus loops**: Set the loops of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus loops"] , Description ["Set the loops of a `torus` entity, spanning XY-plane."]] torus_loops : u32 , # [doc = "**Torus slices**: Set the slices of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus slices"] , Description ["Set the slices of a `torus` entity, spanning XY-plane."]] torus_slices : u32 , # [doc = "**Capsule**: If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\n\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule"] , Description ["If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`)."]] capsule : () , # [doc = "**Capsule radius**: Set the radius of a `capsule` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule radius"] , Description ["Set the radius of a `capsule` entity, spanning XY-plane."]] capsule_radius : f32 , # [doc = "**Capsule half-height**: Set the half-height of the `capsule` entity, spanning Z-axis, excluding the caps.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule half-height"] , Description ["Set the half-height of the `capsule` entity, spanning Z-axis, excluding the caps."]] capsule_half_height : f32 , # [doc = "**Capsule rings**: Set the number of sections between the caps.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule rings"] , Description ["Set the number of sections between the caps."]] capsule_rings : u32 , # [doc = "**Capsule latitudes**: Set the number of latitudinal sections. Should be even.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule latitudes"] , Description ["Set the number of latitudinal sections. Should be even."]] capsule_latitudes : u32 , # [doc = "**Capsule longitudes**: Set the number of longitudinal sections.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule longitudes"] , Description ["Set the number of longitudinal sections."]] capsule_longitudes : u32 , }); } - #[doc = r" Auto-generated concept definitions. Concepts are collections of components that describe some form of gameplay concept."] - #[doc = r""] - #[doc = r" They do not have any runtime representation outside of the components that compose them."] - pub mod concepts { - use crate::{Component, Entity, EntityId}; - use glam::{ - IVec2, IVec3, IVec4, Mat4, Quat, UVec2, UVec3, UVec4, Vec2, Vec3, Vec4, - }; - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Sphere*.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] - pub fn make_sphere() -> Entity { - Entity :: new () . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: sphere () , ()) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: sphere_radius () , 0.5f32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: sphere_sectors () , 36u32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: sphere_stacks () , 18u32) - } - #[doc = "Checks if the entity is a *Sphere*.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] - pub fn is_sphere(world: &crate::World, id: EntityId) -> bool { - world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: sphere () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: sphere_radius () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: sphere_sectors () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: sphere_stacks () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Sphere* as a tuple.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn sphere() -> ( - Component<()>, - Component, - Component, - Component, - ) { - ( - crate::generated::raw::ambient_core::primitives::components::sphere(), - crate::generated::raw::ambient_core::primitives::components::sphere_radius( - ), - crate::generated::raw::ambient_core::primitives::components::sphere_sectors( - ), - crate::generated::raw::ambient_core::primitives::components::sphere_stacks( - ), - ) - } - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] - pub fn make_capsule() -> Entity { - Entity :: new () . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule () , ()) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_radius () , 0.5f32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_half_height () , 0.5f32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_rings () , 0u32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_latitudes () , 16u32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_longitudes () , 32u32) - } - #[doc = "Checks if the entity is a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] - pub fn is_capsule(world: &crate::World, id: EntityId) -> bool { - world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_radius () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_half_height () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_rings () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_latitudes () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_longitudes () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Capsule* as a tuple.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn capsule() -> ( - Component<()>, - Component, - Component, - Component, - Component, - Component, - ) { - (crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule () , crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_radius () , crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_half_height () , crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_rings () , crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_latitudes () , crate :: generated :: raw :: ambient_core :: primitives :: components :: capsule_longitudes ()) - } - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] - pub fn make_torus() -> Entity { - Entity :: new () . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus () , ()) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_inner_radius () , 0.25f32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_outer_radius () , 0.35f32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_slices () , 32u32) . with (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_loops () , 16u32) - } - #[doc = "Checks if the entity is a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] - pub fn is_torus(world: &crate::World, id: EntityId) -> bool { - world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_inner_radius () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_outer_radius () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_slices () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_loops () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Torus* as a tuple.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn torus() -> ( - Component<()>, - Component, - Component, - Component, - Component, - ) { - (crate :: generated :: raw :: ambient_core :: primitives :: components :: torus () , crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_inner_radius () , crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_outer_radius () , crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_slices () , crate :: generated :: raw :: ambient_core :: primitives :: components :: torus_loops ()) - } - } } #[allow(unused)] pub mod procedurals { @@ -951,40 +737,6 @@ mod raw { use std::time::Duration; components ! ("transform" , { # [doc = "**Cylindrical billboard Z**: If attached, this ensures this entity is always aligned with the camera, except on the Z-axis.\n\nThis is useful for decorations that the player will be looking at from roughly the same altitude.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cylindrical billboard Z"] , Description ["If attached, this ensures this entity is always aligned with the camera, except on the Z-axis.\nThis is useful for decorations that the player will be looking at from roughly the same altitude."]] cylindrical_billboard_z : () , # [doc = "**Euler rotation**: The Euler rotation of this entity in ZYX order.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Euler rotation"] , Description ["The Euler rotation of this entity in ZYX order."]] euler_rotation : Vec3 , # [doc = "**Inverse Local to World**: Converts a world position to a local position.\n\nThis is automatically updated.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Inverse Local to World"] , Description ["Converts a world position to a local position.\nThis is automatically updated."]] inv_local_to_world : Mat4 , # [doc = "**Local to Parent**: Transformation from the entity's local space to the parent's space.\n\n*Attributes*: Debuggable, Networked, Store, MaybeResource"] @ [Debuggable , Networked , Store , MaybeResource , Name ["Local to Parent"] , Description ["Transformation from the entity's local space to the parent's space."]] local_to_parent : Mat4 , # [doc = "**Local to World**: Transformation from the entity's local space to worldspace.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Local to World"] , Description ["Transformation from the entity's local space to worldspace."]] local_to_world : Mat4 , # [doc = "**Look-at target**: The position that this entity should be looking at.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Look-at target"] , Description ["The position that this entity should be looking at."]] lookat_target : Vec3 , # [doc = "**Look-at up**: When combined with `lookat_target`, the up vector for this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Look-at up"] , Description ["When combined with `lookat_target`, the up vector for this entity."]] lookat_up : Vec3 , # [doc = "**Mesh to Local**: Transformation from mesh-space to the entity's local space.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Mesh to Local"] , Description ["Transformation from mesh-space to the entity's local space."]] mesh_to_local : Mat4 , # [doc = "**Mesh to World**: Transformation from mesh-space to world space.\n\nThis is automatically updated when `mesh_to_local` and `local_to_world` change.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Mesh to World"] , Description ["Transformation from mesh-space to world space.\nThis is automatically updated when `mesh_to_local` and `local_to_world` change."]] mesh_to_world : Mat4 , # [doc = "**Reset scale**: If attached to a transform hierarchy, the scale will be reset at that point, with only rotation/translation considered.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Reset scale"] , Description ["If attached to a transform hierarchy, the scale will be reset at that point, with only rotation/translation considered."]] reset_scale : () , # [doc = "**Rotation**: The rotation of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Rotation"] , Description ["The rotation of this entity."]] rotation : Quat , # [doc = "**Scale**: The scale of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scale"] , Description ["The scale of this entity."]] scale : Vec3 , # [doc = "**Spherical billboard**: If attached, this ensures that this entity is always aligned with the camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Spherical billboard"] , Description ["If attached, this ensures that this entity is always aligned with the camera."]] spherical_billboard : () , # [doc = "**Translation**: The translation/position of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Translation"] , Description ["The translation/position of this entity."]] translation : Vec3 , }); } - #[doc = r" Auto-generated concept definitions. Concepts are collections of components that describe some form of gameplay concept."] - #[doc = r""] - #[doc = r" They do not have any runtime representation outside of the components that compose them."] - pub mod concepts { - use crate::{Component, Entity, EntityId}; - use glam::{ - IVec2, IVec3, IVec4, Mat4, Quat, UVec2, UVec3, UVec4, Vec2, Vec3, Vec4, - }; - #[allow(clippy::approx_constant)] - #[doc = "Makes a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - pub fn make_transformable() -> Entity { - Entity :: new () . with (crate :: generated :: raw :: ambient_core :: transform :: components :: translation () , Vec3 :: new (0f32 , 0f32 , 0f32 ,)) . with (crate :: generated :: raw :: ambient_core :: transform :: components :: rotation () , Quat :: from_xyzw (0f32 , 0f32 , 0f32 , 1f32 ,)) . with (crate :: generated :: raw :: ambient_core :: transform :: components :: scale () , Vec3 :: new (1f32 , 1f32 , 1f32 ,)) . with (crate :: generated :: raw :: ambient_core :: transform :: components :: local_to_world () , Mat4 :: from_cols_array (& [1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 , 0f32 , 0f32 , 0f32 , 0f32 , 1f32 ,])) - } - #[doc = "Checks if the entity is a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - pub fn is_transformable(world: &crate::World, id: EntityId) -> bool { - world . has_components (id , & { let mut set = crate :: ComponentSet :: new () ; set . insert (crate :: generated :: raw :: ambient_core :: transform :: components :: translation () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: transform :: components :: rotation () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: transform :: components :: scale () . desc ()) ; set . insert (crate :: generated :: raw :: ambient_core :: transform :: components :: local_to_world () . desc ()) ; set }) - } - #[doc = "Returns the components that comprise *Transformable* as a tuple.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - #[allow(clippy::type_complexity)] - pub fn transformable() -> ( - Component, - Component, - Component, - Component, - ) { - ( - crate::generated::raw::ambient_core::transform::components::translation(), - crate::generated::raw::ambient_core::transform::components::rotation(), - crate::generated::raw::ambient_core::transform::components::scale(), - crate::generated::raw::ambient_core::transform::components::local_to_world( - ), - ) - } - } } #[allow(unused)] pub mod wasm { diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index 0af4c01f2b..c04ef79eb3 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -10,6 +10,11 @@ pub fn generate( type_printer: &TypePrinter, scope: &Scope, ) -> anyhow::Result { + let Some(guest_api_path) = context.guest_api_path() else { + // Concept generation is not supported on the host. + return Ok(quote! {}); + }; + let concepts = scope .concepts .values() @@ -31,28 +36,13 @@ pub fn generate( return Ok(quote! {}); } - let inner = match context { - Context::Host => quote! { - use glam::{Vec2, Vec3, Vec4, UVec2, UVec3, UVec4, IVec2, IVec3, IVec4, Mat4, Quat}; - use crate::{EntityId, Entity, Component}; - #(#concepts)* - }, - - Context::GuestApi | Context::GuestUser => { - let api_path = context.guest_api_path().unwrap(); - quote! { - use #api_path::prelude::*; - #(#concepts)* - } - } - }; - Ok(quote! { /// Auto-generated concept definitions. Concepts are collections of components that describe some form of gameplay concept. /// /// They do not have any runtime representation outside of the components that compose them. pub mod concepts { - #inner + use #guest_api_path::prelude::*; + #(#concepts)* } }) } From f8fbf3f6ae7d5da2018a876aaa13437082d4de84 Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 10:21:54 +0200 Subject: [PATCH 02/35] feat(package): disable "optional" as an identifier --- shared_crates/package/src/concept.rs | 18 ++++++++++++++++++ shared_crates/package/src/identifier.rs | 3 +++ 2 files changed, 21 insertions(+) diff --git a/shared_crates/package/src/concept.rs b/shared_crates/package/src/concept.rs index 2bb4c108ba..c0481f89f2 100644 --- a/shared_crates/package/src/concept.rs +++ b/shared_crates/package/src/concept.rs @@ -11,3 +11,21 @@ pub struct Concept { pub extends: Vec, pub components: IndexMap, } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn cannot_use_optional_as_component_name() { + let concept = r#" + [components] + optional = "lol" + "#; + + assert_eq!( + toml::from_str::(concept).unwrap_err().message(), + "the item identifier `optional` is not a valid snake_case identifier (identifier `optional` is reserved) or a valid PascalCase identifier (identifier `optional` must start with an uppercase ASCII character)" + ); + } +} diff --git a/shared_crates/package/src/identifier.rs b/shared_crates/package/src/identifier.rs index ba8b616026..3f08cd3bad 100644 --- a/shared_crates/package/src/identifier.rs +++ b/shared_crates/package/src/identifier.rs @@ -558,11 +558,14 @@ impl ToTokens for PascalCaseIdentifier { static RESERVED_SNAKE_CASE_IDENTIFIERS: Lazy> = Lazy::new(|| { HashSet::from_iter([ + // Rust keywords "as", "break", "const", "continue", "crate", "else", "extern", "false", "fn", "for", "if", "impl", "in", "let", "loop", "match", "mod", "move", "mut", "pub", "ref", "return", "self", "static", "struct", "super", "trait", "true", "type", "unsafe", "use", "where", "while", "async", "await", "dyn", "abstract", "become", "box", "do", "final", "macro", "override", "priv", "typeof", "unsized", "virtual", "yield", "try", + // Identifiers reserved for use by Ambient codegen + "optional", ]) }); static RESERVED_PASCAL_CASE_IDENTIFIERS: Lazy> = From 2b0e9e7f4aa54c733126b34b60dc4458f9d93339 Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 12:18:04 +0200 Subject: [PATCH 03/35] feat(package): switch to new concept format --- docs/src/reference/ecs.md | 47 ++++---- docs/src/reference/package.md | 39 ++++-- schema/schema/camera.toml | 73 ++++++------ schema/schema/physics.toml | 10 +- schema/schema/primitives.toml | 42 +++---- schema/schema/transform.toml | 12 +- shared_crates/package/src/concept.rs | 21 +++- shared_crates/package/src/manifest.rs | 109 ++++++++++------- .../package_macro_common/src/concepts.rs | 31 +++-- .../package_semantic/src/component.rs | 2 +- shared_crates/package_semantic/src/concept.rs | 111 ++++++++++++------ shared_crates/package_semantic/src/lib.rs | 2 +- shared_crates/package_semantic/src/printer.rs | 16 ++- shared_crates/package_semantic/src/scope.rs | 4 +- shared_crates/package_semantic/src/value.rs | 6 +- 15 files changed, 332 insertions(+), 193 deletions(-) diff --git a/docs/src/reference/ecs.md b/docs/src/reference/ecs.md index 25bf6171b4..6139287625 100644 --- a/docs/src/reference/ecs.md +++ b/docs/src/reference/ecs.md @@ -114,38 +114,43 @@ In addition to specifying components in the query, you can also specify componen Concepts are defined in the package manifest, and are used to define a collection of components that correspond to some concept in the game world. For example, a `Player` concept might be defined as a collection of components that describe the player's health, inventory, and position. -Concepts have an ID (specified as the name of their TOML table), a name, a description, and a list of components with defaults. Additionally, they can extend other concepts, which will cause them to inherit the components and defaults of the concept they extend. +Concepts have an ID (specified as the name of their TOML table), a name, a description, and required/optional components. Additionally, they can extend other concepts, which will cause them to inherit the components of the concepts they extend. Anything that is defined in the concept will override the definition in the concept it extends. + +Required components must be present for an entity to satisfy a concept, while optional components are not required and can be used to provide additional information about the entity. As an example, a `CharacterAnimation` concept may require components to drive it, but can offer optional components as a way of configuring which animations should be used. + +When specifying a concept's components, the following optional parameters are available: + +- `suggested`: A suggested default for the value of the component. This is shown in documentation. +- `description`: A description of the component in the context of the concept, which may be different to the component's description. This can be used to clarify how a component may be used within a concept. This is shown in documentation. + +These do not need to be specified, but are useful for providing additional information about the component. For illustration, here are two concepts that are defined as part of Ambient's default manifest: ```toml -[concepts.transformable] +[concepts.Transformable] name = "Transformable" description = "Can be translated, rotated and scaled." -[concepts.transformable.components] -translation = [0.0, 0.0, 0.0] -scale = [1.0, 1.0, 1.0] -rotation = [0.0, 0.0, 0.0, 1.0] +[concepts.Transformable.components.required] +translation = { suggested = [0.0, 0.0, 0.0] } +scale = { suggested = [1.0, 1.0, 1.0] } +rotation = { suggested = [0.0, 0.0, 0.0, 1.0] } -[concepts.camera] +[concepts.Camera] name = "Camera" description = "Base components for a camera. You will need other components to make a fully-functioning camera." -extends = ["transform::transformable"] - -[concepts.camera.components] -near = 0.1 -projection = [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] -projection_view = [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] -active_camera = 0.0 -"transform::local_to_world" = [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] -"transform::inv_local_to_world" = [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] +extends = ["transform::Transformable"] + +[concepts.Camera.components.required] +near = { suggested = 0.1 } +projection = { suggested = "Identity" } +projection_view = { suggested = "Identity" } +active_camera = {} +"transform::local_to_world" = { suggested = "Identity" } +"transform::inv_local_to_world" = { suggested = "Identity", description = "Used to calculate the view matrix" } ``` In this example, the "camera" concept contains all of the components from a transformable, as well as components of its own. This means that any entity that has the "camera" concept will also have the components from the "transformable" concept. -Concepts are exposed to your Rust code in three ways, using `camera` as an example: - -- `camera()`: returns a tuple of the components that are part of the `camera` concept. This can be used within queries to query for entities that have the `camera` concept. -- `make_camera()`: makes a `Entity` with the components of the `camera` concept, which can then be spawned. -- `is_camera(id)`: returns true if the entity with the given ID contains all of the components of the `camera` concept. +**TODO**: Rewrite the Rust codegen expansion here diff --git a/docs/src/reference/package.md b/docs/src/reference/package.md index c38adf3a4d..cb28ebd582 100644 --- a/docs/src/reference/package.md +++ b/docs/src/reference/package.md @@ -201,30 +201,43 @@ attributes = ["Debuggable"] The `concepts` section contains custom concepts defined by the package. Concepts are used to define a set of components that can be attached to an entity. -This is a TOML table, where the keys are the concept IDs (`SnakeCaseIdentifier`), and the values are the concept definitions. +This is a TOML table, where the keys are the concept IDs (`CamelCaseIdentifier`), and the values are the concept definitions. -| Property | Type | Description | -| ------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | `String` | _Optional_. A human-readable name for the concept. | -| `description` | `String` | _Optional_. A human-readable description of the concept. | -| `extends` | `String[]` | _Optional_. An array of concepts to extend. Must be defined in this package manifest. | -| `components` | `Map` | _Required_. An object containing the components and their default values.

`Mat4` and `Quat` support `Identity` as a string, which will use the relevant identity value for that type.

`F32` and `F64` support `PI`, `FRAC_PI_2`, `-PI`, and `-FRAC_PI_2` as string values, which correspond to pi (~3.14), half-pi (~1.57), and negative versions respectively. | +| Property | Type | Description | +| --------------------- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | `String` | _Optional_. A human-readable name for the concept. | +| `description` | `String` | _Optional_. A human-readable description of the concept. | +| `extends` | `String[]` | _Optional_. An array of concepts to extend. Must be defined in this package manifest. | +| `components.required` | `Map` | _Required_. An object containing the required components for this concept, and any associated information about the use of the component in this concept (see below). | +| `components.optional` | `Map` | _Optional_. An object containing the optional components for this concept, and any associated information about the use of the component in this concept (see below). These components do not need to be specified to satisfy a concept, but may provide additional control or information if available. | -The `components` is an object where the keys are `ItemPath`s of components defined in the package manifest, and the values are the default values for those components in the concept. +The `components` is an object where the keys are `ItemPath`s of components defined in the package manifest, and the values are `ConceptValue`s. + +`ConceptValue`s are a TOML table with the following properties: + +| Property | Type | Description | +| ------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `description` | `String` | _Optional_. A human-readable description of the component in the context of the concept, which may be different to the component's description. | +| `suggested` | `toml::Value` | _Optional_. If specified, the suggested value for this component in this concept. This is merely a suggestion, but must match the type of the component.

`Mat4` and `Quat` support `Identity` as a string, which will use the relevant identity value for that type.

`F32` and `F64` support `PI`, `FRAC_PI_2`, `-PI`, and `-FRAC_PI_2` as string values, which correspond to pi (~3.14), half-pi (~1.57), and negative versions respectively. | #### Example ```toml -[concepts.concept1] +[concepts.Concept1] name = "Concept 1" description = "The best" -[concepts.Concept1.components] -cool_component = 0 +[concepts.Concept1.components.required] +cool_component = {} # A concept that extends `concept1` and has both `cool_component` and `cool_component2`. -[concepts.concept2] +[concepts.Concept2] extends = ["Concept1"] -components = { cool_component2 = 1 } + +[concepts.Concept2.components.required] +cool_component2 = { suggested = 42 } + +[concepts.Concept2.components.optional] +cool_component3 = { suggested = 42 } ``` ### Messages / `[messages]` diff --git a/schema/schema/camera.toml b/schema/schema/camera.toml index cd93c35978..fedc01baa0 100644 --- a/schema/schema/camera.toml +++ b/schema/schema/camera.toml @@ -127,55 +127,56 @@ attributes = ["Debuggable", "Networked", "Store"] # Concepts -[concepts.camera] +[concepts.Camera] name = "Camera" description = "Base components for a camera. You will need other components to make a fully-functioning camera." -extends = ["transform::transformable"] - -[concepts.camera.components] -near = 0.1 -projection = "Identity" -projection_view = "Identity" -active_camera = 0.0 -"transform::local_to_world" = "Identity" -"transform::inv_local_to_world" = "Identity" - -[concepts.perspective_common_camera] +extends = ["transform::Transformable"] + +# TODO: remove suggested active_camera and sync with docs once suggestions are no longer necessary +[concepts.Camera.components.required] +near = { suggested = 0.1 } +projection = { suggested = "Identity" } +projection_view = { suggested = "Identity" } +active_camera = { suggested = 0.0 } +"transform::local_to_world" = { suggested = "Identity" } +"transform::inv_local_to_world" = { suggested = "Identity" } + +[concepts.PerspectiveCommonCamera] name = "Perspective Common Camera" description = "Base components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`." -extends = ["camera"] +extends = ["Camera"] -[concepts.perspective_common_camera.components] -fovy = 1.0 -aspect_ratio = 1.0 +[concepts.PerspectiveCommonCamera.components.required] +fovy = { suggested = 1.0 } +aspect_ratio = { suggested = 1.0 } -[concepts.perspective_camera] +[concepts.PerspectiveCamera] name = "Perspective Camera" description = "A perspective camera." -extends = ["perspective_common_camera"] +extends = ["PerspectiveCommonCamera"] -[concepts.perspective_camera.components] -perspective = {} -far = 1000.0 +[concepts.PerspectiveCamera.components.required] +perspective = { suggested = {} } +far = { suggested = 1000.0 } -[concepts.perspective_infinite_reverse_camera] +[concepts.PerspectiveInfiniteReverseCamera] name = "Perspective-Infinite-Reverse Camera" description = "A perspective-infinite-reverse camera. This is recommended for most use-cases." -extends = ["perspective_common_camera"] +extends = ["PerspectiveCommonCamera"] -[concepts.perspective_infinite_reverse_camera.components] -perspective_infinite_reverse = {} +[concepts.PerspectiveInfiniteReverseCamera.components.required] +perspective_infinite_reverse = { suggested = {} } -[concepts.orthographic_camera] +[concepts.OrthographicCamera] name = "Orthographic Camera" description = "An orthographic camera." -extends = ["camera"] - -[concepts.orthographic_camera.components] -orthographic = {} -orthographic_left = -1.0 -orthographic_right = 1.0 -orthographic_top = 1.0 -orthographic_bottom = -1.0 -near = -1.0 -far = 1.0 +extends = ["Camera"] + +[concepts.OrthographicCamera.components.required] +orthographic = { suggested = {} } +orthographic_left = { suggested = -1.0 } +orthographic_right = { suggested = 1.0 } +orthographic_top = { suggested = 1.0 } +orthographic_bottom = { suggested = -1.0 } +near = { suggested = -1.0 } +far = { suggested = 1.0 } diff --git a/schema/schema/physics.toml b/schema/schema/physics.toml index 9543893f4b..6dd1f120bc 100644 --- a/schema/schema/physics.toml +++ b/schema/schema/physics.toml @@ -173,11 +173,11 @@ description = """If attached, the collider will be rendered. """ attributes = ["Debuggable", "Networked"] -[concepts.character_controller] +[concepts.CharacterController] name = "Character Controller" description = "A capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule." -[concepts.character_controller.components] -character_controller_height = 2.0 -character_controller_radius = 0.5 -physics_controlled = {} \ No newline at end of file +[concepts.CharacterController.components.required] +character_controller_height = { suggested = 2.0 } +character_controller_radius = { suggested = 0.5 } +physics_controlled = { suggested = {} } \ No newline at end of file diff --git a/schema/schema/primitives.toml b/schema/schema/primitives.toml index 0069676c50..d2bba7c4c0 100644 --- a/schema/schema/primitives.toml +++ b/schema/schema/primitives.toml @@ -129,35 +129,35 @@ attributes = ["Debuggable", "Networked", "Store"] # Concepts -[concepts.sphere] +[concepts.Sphere] name = "Sphere" description = "A primitive sphere." -[concepts.sphere.components] -sphere = {} -sphere_radius = 0.5 -sphere_sectors = 36 -sphere_stacks = 18 +[concepts.Sphere.components.required] +sphere = { suggested = {} } +sphere_radius = { suggested = 0.5 } +sphere_sectors = { suggested = 36 } +sphere_stacks = { suggested = 18 } -[concepts.capsule] +[concepts.Capsule] name = "Capsule" description = "A primitive capsule. Defined as a cylinder capped by hemispheres." -[concepts.capsule.components] -capsule = {} -capsule_radius = 0.5 -capsule_half_height = 0.5 -capsule_rings = 0 -capsule_latitudes = 16 -capsule_longitudes = 32 +[concepts.Capsule.components.required] +capsule = { suggested = {} } +capsule_radius = { suggested = 0.5 } +capsule_half_height = { suggested = 0.5 } +capsule_rings = { suggested = 0 } +capsule_latitudes = { suggested = 16 } +capsule_longitudes = { suggested = 32 } -[concepts.torus] +[concepts.Torus] name = "Torus" description = "A primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution." -[concepts.torus.components] -torus = {} -torus_inner_radius = 0.25 -torus_outer_radius = 0.35 -torus_slices = 32 -torus_loops = 16 +[concepts.Torus.components.required] +torus = { suggested = {} } +torus_inner_radius = { suggested = 0.25 } +torus_outer_radius = { suggested = 0.35 } +torus_slices = { suggested = 32 } +torus_loops = { suggested = 16 } diff --git a/schema/schema/transform.toml b/schema/schema/transform.toml index 3dd47de200..02bc4f3a93 100644 --- a/schema/schema/transform.toml +++ b/schema/schema/transform.toml @@ -97,12 +97,12 @@ attributes = ["Debuggable", "Networked", "Store"] # Concepts -[concepts.transformable] +[concepts.Transformable] name = "Transformable" description = "Can be translated, rotated and scaled." -[concepts.transformable.components] -translation = [0.0, 0.0, 0.0] -rotation = [0.0, 0.0, 0.0, 1.0] -scale = [1.0, 1.0, 1.0] -local_to_world = "Identity" +[concepts.Transformable.components.required] +translation = { suggested = [0.0, 0.0, 0.0] } +rotation = { suggested = [0.0, 0.0, 0.0, 1.0] } +scale = { suggested = [1.0, 1.0, 1.0] } +local_to_world = { suggested = "Identity" } diff --git a/shared_crates/package/src/concept.rs b/shared_crates/package/src/concept.rs index c0481f89f2..7397d039ab 100644 --- a/shared_crates/package/src/concept.rs +++ b/shared_crates/package/src/concept.rs @@ -9,7 +9,22 @@ pub struct Concept { pub description: Option, #[serde(default)] pub extends: Vec, - pub components: IndexMap, + pub components: Components, +} + +#[derive(Deserialize, Debug, Clone, PartialEq, Serialize)] +pub struct Components { + pub required: IndexMap, + #[serde(default)] + pub optional: IndexMap, +} + +#[derive(Deserialize, Debug, Clone, PartialEq, Serialize, Default)] +pub struct ConceptValue { + #[serde(default)] + pub description: Option, + #[serde(default)] + pub suggested: Option, } #[cfg(test)] @@ -19,8 +34,8 @@ mod tests { #[test] fn cannot_use_optional_as_component_name() { let concept = r#" - [components] - optional = "lol" + [components.required] + optional = {} "#; assert_eq!( diff --git a/shared_crates/package/src/manifest.rs b/shared_crates/package/src/manifest.rs index 32b2731108..967e94128a 100644 --- a/shared_crates/package/src/manifest.rs +++ b/shared_crates/package/src/manifest.rs @@ -200,9 +200,9 @@ mod tests { use url::Url; use crate::{ - Build, BuildRust, Component, ComponentType, Concept, ContainerType, Dependency, Enum, - Identifier, ItemPathBuf, Manifest, ManifestParseError, Package, PackageId, - PascalCaseIdentifier, SnakeCaseIdentifier, + Build, BuildRust, Component, ComponentType, Components, Concept, ConceptValue, + ContainerType, Dependency, Enum, Identifier, ItemPathBuf, Manifest, ManifestParseError, + Package, PackageId, PascalCaseIdentifier, SnakeCaseIdentifier, }; use semver::Version; @@ -273,11 +273,11 @@ mod tests { [components] cell = { type = "i32", name = "Cell", description = "The ID of the cell this player is in", attributes = ["store"] } - [concepts.cell] + [concepts.Cell] name = "Cell" description = "A cell object" - [concepts.cell.components] - cell = 0 + [concepts.Cell.components.required] + cell = {} "#; assert_eq!( @@ -305,12 +305,15 @@ mod tests { } )]), concepts: IndexMap::from_iter([( - ipb("cell"), + ipb("Cell"), Concept { name: Some("Cell".to_string()), description: Some("A cell object".to_string()), extends: vec![], - components: IndexMap::from_iter([(ipb("cell"), toml::Value::Integer(0))]) + components: Components { + required: IndexMap::from_iter([(ipb("cell"), ConceptValue::default())]), + optional: Default::default() + } } )]), messages: Default::default(), @@ -374,15 +377,18 @@ mod tests { "core::transform::spherical_billboard" = { type = "empty", name = "Spherical billboard", description = "" } "core::transform::translation" = { type = "vec3", name = "Translation", description = "" } - [concepts."ns::transformable"] + [concepts."ns::Transformable"] name = "Transformable" description = "Can be translated, rotated and scaled." - [concepts."ns::transformable".components] + [concepts."ns::Transformable".components.required] # This is intentionally out of order to ensure that order is preserved - "core::transform::translation" = [0, 0, 0] - "core::transform::scale" = [1, 1, 1] - "core::transform::rotation" = [0, 0, 0, 1] + "core::transform::translation" = { suggested = [0, 0, 0] } + "core::transform::scale" = { suggested = [1, 1, 1] } + "core::transform::rotation" = { suggested = [0, 0, 0, 1] } + + [concepts."ns::Transformable".components.optional] + "core::transform::inv_local_to_world" = { description = "If specified, will be automatically updated" } "#; let manifest = Manifest::parse(TOML).unwrap(); @@ -443,38 +449,58 @@ mod tests { ), ]), concepts: IndexMap::from_iter([( - ipb("ns::transformable"), + ipb("ns::Transformable"), Concept { name: Some("Transformable".to_string()), description: Some("Can be translated, rotated and scaled.".to_string()), extends: vec![], - components: IndexMap::from_iter([ - ( - ipb("core::transform::translation"), - Value::Array(vec![ - Value::Integer(0), - Value::Integer(0), - Value::Integer(0) - ]) - ), - ( - ipb("core::transform::scale"), - Value::Array(vec![ - Value::Integer(1), - Value::Integer(1), - Value::Integer(1) - ]) - ), - ( - ipb("core::transform::rotation"), - Value::Array(vec![ - Value::Integer(0), - Value::Integer(0), - Value::Integer(0), - Value::Integer(1) - ]) - ), - ]) + components: Components { + required: IndexMap::from_iter([ + ( + ipb("core::transform::translation"), + ConceptValue { + suggested: Some(Value::Array(vec![ + Value::Integer(0), + Value::Integer(0), + Value::Integer(0) + ])), + ..Default::default() + } + ), + ( + ipb("core::transform::scale"), + ConceptValue { + suggested: Some(Value::Array(vec![ + Value::Integer(1), + Value::Integer(1), + Value::Integer(1) + ])), + ..Default::default() + } + ), + ( + ipb("core::transform::rotation"), + ConceptValue { + suggested: Some(Value::Array(vec![ + Value::Integer(0), + Value::Integer(0), + Value::Integer(0), + Value::Integer(1) + ])), + ..Default::default() + } + ), + ]), + optional: IndexMap::from_iter([( + ipb("core::transform::inv_local_to_world"), + ConceptValue { + description: Some( + "If specified, will be automatically updated".to_string() + ), + ..Default::default() + }, + )]) + } } )]), messages: Default::default(), @@ -491,6 +517,7 @@ mod tests { .unwrap() .1 .components + .required .keys() .collect::>(), vec![ diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index c04ef79eb3..74a25f2286 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -75,17 +75,26 @@ fn generate_make( .collect::>()?; let components = concept - .components + .required_components .iter() .map(|(id, default)| { let path = context.get_path(items, None, id.as_resolved().unwrap())?; - let default = value_to_token_stream(items, default.as_resolved().unwrap())?; + let default = value_to_token_stream( + items, + default + .suggested + .as_ref() + .expect("TEMP: suggested required") + .as_resolved() + .unwrap(), + )?; Ok(quote! { with(#path(), #default) }) }) .collect::>>()?; Ok(quote! { #[allow(clippy::approx_constant)] + #[allow(non_snake_case)] #[doc = #make_comment] pub fn #make_ident() -> Entity { Entity::new() @@ -117,7 +126,7 @@ fn generate_is( .collect::>()?; let components = concept - .components + .required_components .iter() .map(|(id, _)| { let path = context.get_path(items, None, id.as_resolved().unwrap())?; @@ -128,6 +137,7 @@ fn generate_is( Ok(match context { Context::Host => quote! { #[doc = #is_comment] + #[allow(non_snake_case)] pub fn #is_ident(world: &crate::World, id: EntityId) -> bool { #(#extends(world, id) && )* world.has_components(id, &{ let mut set = crate::ComponentSet::new(); @@ -138,6 +148,7 @@ fn generate_is( }, Context::GuestApi | Context::GuestUser => quote! { #[doc = #is_comment] + #[allow(non_snake_case)] pub fn #is_ident(id: EntityId) -> bool { #(#extends(id) && )* entity::has_components(id, &[ #(&#components),* @@ -164,7 +175,7 @@ fn generate_concept( // TODO: include extends in component list let components = concept - .components + .required_components .iter() .map(|(id, _)| { let path = context.get_path(items, None, id.as_resolved().unwrap())?; @@ -173,7 +184,7 @@ fn generate_concept( .collect::>>()?; let fn_ret = concept - .components + .required_components .iter() .map(|(id, _)| { let component = &*items.get(id.as_resolved().unwrap()); @@ -184,6 +195,7 @@ fn generate_concept( Ok(quote! { #[doc = #fn_comment] #[allow(clippy::type_complexity)] + #[allow(non_snake_case)] pub fn #fn_ident() -> (#(Component<#fn_ret>),*) { (#(#components),*) } @@ -210,7 +222,7 @@ pub fn generate_component_list_doc_comment( use std::fmt::Write; let padding = " ".repeat(level * 2); - for (id, value) in &concept.components { + for (id, value) in &concept.required_components { let component = &*items.get(id.as_resolved().unwrap()); let component_path = items.fully_qualified_display_path(component, None, None); @@ -223,7 +235,12 @@ pub fn generate_component_list_doc_comment( .unwrap() .clone() ), - value.as_resolved().unwrap() + value + .suggested + .as_ref() + .expect("TEMP: suggested required") + .as_resolved() + .unwrap() )?; } for concept_id in &concept.extends { diff --git a/shared_crates/package_semantic/src/component.rs b/shared_crates/package_semantic/src/component.rs index 0cdcab396c..6b7fb787ab 100644 --- a/shared_crates/package_semantic/src/component.rs +++ b/shared_crates/package_semantic/src/component.rs @@ -89,7 +89,7 @@ impl Resolve for Component { self.attributes = attributes; if let Some(default) = &mut self.default { - default.resolve(items, type_id)?; + default.resolve_in_place(items, type_id)?; } Ok(self) diff --git a/shared_crates/package_semantic/src/concept.rs b/shared_crates/package_semantic/src/concept.rs index 2cb871f78d..681015bef0 100644 --- a/shared_crates/package_semantic/src/concept.rs +++ b/shared_crates/package_semantic/src/concept.rs @@ -1,4 +1,4 @@ -use ambient_package::ItemPathBuf; +use ambient_package::{Identifier, ItemPathBuf}; use anyhow::Context as AnyhowContext; use indexmap::IndexMap; @@ -7,6 +7,8 @@ use crate::{ ResolvableValue, Resolve, StandardDefinitions, }; +type ComponentMap = IndexMap, ConceptValue>; + #[derive(Clone, PartialEq, Debug)] pub struct Concept { data: ItemData, @@ -14,7 +16,8 @@ pub struct Concept { pub name: Option, pub description: Option, pub extends: Vec>, - pub components: IndexMap, ResolvableValue>, + pub required_components: ComponentMap, + pub optional_components: ComponentMap, } impl Item for Concept { const TYPE: ItemType = ItemType::Concept; @@ -70,36 +73,10 @@ impl Resolve for Concept { } self.extends = extends; - let mut components = IndexMap::new(); - for (resolvable_component, resolvable_value) in &self.components { - let component_id = match resolvable_component { - ResolvableItemId::Unresolved(path) => context - .get_component_id(items, path.as_path()) - .map_err(|e| e.into_owned()) - .with_context(|| { - format!( - "Failed to get component `{}` for concept `{}", - path, self.data.id - ) - })?, - ResolvableItemId::Resolved(id) => *id, - }; - let component_type = { - let component = items.resolve(context, definitions, component_id)?; - component.type_.as_resolved().with_context(|| { - format!( - "Failed to get type for component `{}` for concept `{}`", - component.data().id, - self.data.id - ) - })? - }; - - let mut value = resolvable_value.clone(); - value.resolve(items, component_type)?; - components.insert(ResolvableItemId::Resolved(component_id), value); + for components in [&mut self.required_components, &mut self.optional_components] { + *components = + resolve_components(&self.data.id, items, context, definitions, components)?; } - self.components = components; Ok(self) } @@ -115,16 +92,84 @@ impl Concept { .iter() .map(|v| ResolvableItemId::Unresolved(v.clone())) .collect(), - components: value + required_components: value + .components + .required + .iter() + .map(|(k, v)| { + ( + ResolvableItemId::Unresolved(k.clone()), + ConceptValue::from_package(v), + ) + }) + .collect(), + optional_components: value .components + .optional .iter() .map(|(k, v)| { ( ResolvableItemId::Unresolved(k.clone()), - ResolvableValue::Unresolved(v.clone()), + ConceptValue::from_package(v), ) }) .collect(), } } } + +#[derive(Clone, PartialEq, Debug)] +pub struct ConceptValue { + pub description: Option, + pub suggested: Option, +} +impl ConceptValue { + pub(crate) fn from_package(value: &ambient_package::ConceptValue) -> Self { + ConceptValue { + description: value.description.clone(), + suggested: value.suggested.clone().map(ResolvableValue::Unresolved), + } + } +} + +fn resolve_components( + concept_id: &Identifier, + items: &mut ItemMap, + context: &Context, + definitions: &StandardDefinitions, + unresolved_components: &ComponentMap, +) -> anyhow::Result { + let mut components = IndexMap::new(); + for (resolvable_component, resolvable_value) in unresolved_components { + let component_id = match resolvable_component { + ResolvableItemId::Unresolved(path) => context + .get_component_id(items, path.as_path()) + .map_err(|e| e.into_owned()) + .with_context(|| { + format!( + "Failed to get component `{}` for concept `{}", + path, concept_id + ) + })?, + ResolvableItemId::Resolved(id) => *id, + }; + let component_type = { + let component = items.resolve(context, definitions, component_id)?; + component.type_.as_resolved().with_context(|| { + format!( + "Failed to get type for component `{}` for concept `{}`", + component.data().id, + concept_id + ) + })? + }; + + let mut value = resolvable_value.clone(); + if let Some(suggested) = value.suggested.as_mut() { + suggested.resolve_in_place(items, component_type)?; + } + components.insert(ResolvableItemId::Resolved(component_id), value); + } + + Ok(components) +} diff --git a/shared_crates/package_semantic/src/lib.rs b/shared_crates/package_semantic/src/lib.rs index 739062b7f9..543e25f298 100644 --- a/shared_crates/package_semantic/src/lib.rs +++ b/shared_crates/package_semantic/src/lib.rs @@ -320,7 +320,7 @@ impl Semantic { items .get_or_create_scope_mut(scope_id, scope_path) .concepts - .insert(item.as_snake().map_err(|e| e.to_owned())?.clone(), value); + .insert(item.as_pascal().map_err(|e| e.to_owned())?.clone(), value); } for (path, message) in manifest.messages.iter() { diff --git a/shared_crates/package_semantic/src/printer.rs b/shared_crates/package_semantic/src/printer.rs index 52bed78c83..d7434bf824 100644 --- a/shared_crates/package_semantic/src/printer.rs +++ b/shared_crates/package_semantic/src/printer.rs @@ -192,10 +192,22 @@ impl Printer { println!(); p.print_indent(); - println!("components:"); + println!("required components:"); p.with_indent(|p| { - for (component, value) in concept.components.iter() { + for (component, value) in concept.required_components.iter() { + p.print_indent(); + println!("{}: {:?}", write_resolvable_id(items, component)?, value,); + } + + Ok(()) + })?; + + p.print_indent(); + println!("optional components:"); + + p.with_indent(|p| { + for (component, value) in concept.optional_components.iter() { p.print_indent(); println!("{}: {:?}", write_resolvable_id(items, component)?, value,); } diff --git a/shared_crates/package_semantic/src/scope.rs b/shared_crates/package_semantic/src/scope.rs index c4f575f7e4..0228e0ff7a 100644 --- a/shared_crates/package_semantic/src/scope.rs +++ b/shared_crates/package_semantic/src/scope.rs @@ -16,7 +16,7 @@ pub struct Scope { pub imports: IndexMap>, pub scopes: IndexMap>, pub components: IndexMap>, - pub concepts: IndexMap>, + pub concepts: IndexMap>, pub messages: IndexMap>, pub types: IndexMap>, pub attributes: IndexMap>, @@ -303,7 +303,7 @@ fn get_concept_id( .get_scope(self_scope_id, scope) .ok()? .concepts - .get(item.as_snake().ok()?) + .get(item.as_pascal().ok()?) .copied() } diff --git a/shared_crates/package_semantic/src/value.rs b/shared_crates/package_semantic/src/value.rs index 43f8a72893..9aceaecafc 100644 --- a/shared_crates/package_semantic/src/value.rs +++ b/shared_crates/package_semantic/src/value.rs @@ -23,7 +23,11 @@ pub enum ResolvableValue { Resolved(Value), } impl ResolvableValue { - pub(crate) fn resolve(&mut self, items: &ItemMap, id: ItemId) -> anyhow::Result<()> { + pub(crate) fn resolve_in_place( + &mut self, + items: &ItemMap, + id: ItemId, + ) -> anyhow::Result<()> { if let Self::Unresolved(value) = self { *self = Self::Resolved(Value::from_toml(value, items, id)?); } From d3d06ae343882a2f60f04a5e461a63dc2331121d Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 12:18:24 +0200 Subject: [PATCH 04/35] temp(guest): camel-case concepts --- guest/rust/api_core/src/ecs.rs | 56 +++++++ guest/rust/api_core/src/internal/generated.rs | 140 +++++++++++------- guest/rust/api_core/src/prelude.rs | 4 +- .../examples/assets/basic_model/src/server.rs | 9 +- .../assets/material_overriding/src/server.rs | 13 +- .../rust/examples/assets/unity/src/server.rs | 11 +- .../examples/basics/multiplayer/src/server.rs | 9 +- .../examples/basics/physics/src/server.rs | 17 ++- .../examples/basics/primitives/src/server.rs | 33 ++--- .../examples/basics/skinmesh/src/client.rs | 17 +-- .../first_person_camera/src/server.rs | 21 ++- .../third_person_camera/src/client.rs | 5 +- .../third_person_camera/src/server.rs | 20 +-- .../intermediate/clientside/src/client.rs | 5 +- .../intermediate/clientside/src/server.rs | 4 +- .../dependencies/deps/code/src/server.rs | 4 +- .../intermediate/dependencies/src/server.rs | 5 +- .../intermediate/messaging/src/client.rs | 9 +- .../intermediate/messaging/src/server.rs | 4 +- .../intermediate/screen_ray/src/client.rs | 5 +- .../intermediate/screen_ray/src/server.rs | 6 +- .../examples/rendering/decals/src/server.rs | 5 +- .../rust/examples/rendering/fog/src/client.rs | 14 +- .../examples/rendering/image/src/server.rs | 9 +- .../rendering/instancing/src/server.rs | 11 +- .../procedural_generation/src/client.rs | 21 ++- .../examples/rendering/raw_text/src/server.rs | 9 +- .../examples/rendering/samplers/src/server.rs | 11 +- .../rust/examples/rendering/sun/src/server.rs | 19 ++- .../rendering/transparency/src/client.rs | 11 +- .../games/afps/core/fpsmodel/src/client.rs | 4 +- .../games/afps/core/fpsmodel/src/server.rs | 19 ++- .../games/afps/core/fpsrule/src/server.rs | 11 +- .../games/afps/mods/scene/src/server.rs | 12 +- .../games/afps/mods/spraypaint/src/server.rs | 8 +- .../games/afps/mods/zombie/src/server.rs | 10 +- .../packages/games/arkanoid/src/client.rs | 4 +- .../packages/games/arkanoid/src/server.rs | 16 +- .../rust/packages/games/minigolf/ambient.toml | 22 +-- .../packages/games/minigolf/src/server.rs | 32 ++-- guest/rust/packages/games/pong/src/client.rs | 4 +- guest/rust/packages/games/pong/src/server.rs | 12 +- .../packages/games/tangent/core/src/client.rs | 8 +- .../packages/games/tangent/core/src/server.rs | 10 +- .../packages/games/tictactoe/src/server.rs | 9 +- .../rust/packages/tools/editor/src/server.rs | 4 +- 46 files changed, 384 insertions(+), 308 deletions(-) diff --git a/guest/rust/api_core/src/ecs.rs b/guest/rust/api_core/src/ecs.rs index 4528803ed0..1c0b2c3dce 100644 --- a/guest/rust/api_core/src/ecs.rs +++ b/guest/rust/api_core/src/ecs.rs @@ -9,3 +9,59 @@ pub use crate::internal::component::{ #[doc(hidden)] pub use crate::internal::wit::component::Value as WitComponentValue; +use crate::prelude::EntityId; + +/// Concepts are defined in the package manifest, and are used to define a collection of components that correspond to some concept in the game world. +/// +/// For example, a `Camera` concept might describe a camera in the game world, and have a `near` and `projection` component. +pub trait Concept { + /// Creates an entity with the components defined by this concept. + fn make(&self) -> Entity; + + /// If the entity with `id` exists and has the components defined by this concept, returns this concept with all of the values of the components in the entity. + /// + /// # Examples + /// ``` + /// if let Some(camera) = Camera::get_spawned(id) { + /// println!("{}", camera.near); + /// } + /// ``` + fn get_spawned(id: EntityId) -> Option + where + Self: Sized; + /// If the `entity` has the components defined by this concept, returns this concept with all of the values of the components in the entity. + /// + /// # Examples + /// ``` + /// if let Some(camera) = Camera::get_unspawned(ent) { + /// println!("{}", camera.near); + /// } + /// ``` + fn get_unspawned(entity: Entity) -> Option + where + Self: Sized; + + /// Returns `Some(id)` if `id` exists and contains the components defined by this concept. + /// + /// # Examples + /// ``` + /// if let Some(id) = Camera::contained_by_spawned(id) { + /// // ... + /// } + /// ``` + fn contained_by_spawned(id: EntityId) -> Option; + /// Returns `Some(entity)` if contains the components defined by this concept. + /// + /// # Examples + /// ``` + /// if let Some(ent) = Camera::contained_by_unspawned(ent) { + /// // ... + /// } + /// ``` + fn contained_by_unspawned(entity: Entity) -> Option; +} +impl From for Entity { + fn from(concept: T) -> Self { + concept.make() + } +} diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 2ca67a9bf2..52227142a1 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -498,10 +498,11 @@ mod raw { pub mod concepts { use crate::prelude::*; #[allow(clippy::approx_constant)] - #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] - pub fn make_camera() -> Entity { + #[allow(non_snake_case)] + #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] + pub fn make_Camera() -> Entity { Entity::new() - .with_merge(crate::ambient_core::transform::concepts::make_transformable()) + .with_merge(crate::ambient_core::transform::concepts::make_Transformable()) .with(crate::ambient_core::camera::components::near(), 0.1f32) .with( crate::ambient_core::camera::components::projection(), @@ -536,9 +537,10 @@ mod raw { ]), ) } - #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] - pub fn is_camera(id: EntityId) -> bool { - crate::ambient_core::transform::concepts::is_transformable(id) + #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] + #[allow(non_snake_case)] + pub fn is_Camera(id: EntityId) -> bool { + crate::ambient_core::transform::concepts::is_Transformable(id) && entity::has_components( id, &[ @@ -551,9 +553,10 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] + #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn camera() -> ( + #[allow(non_snake_case)] + pub fn Camera() -> ( Component, Component, Component, @@ -571,19 +574,21 @@ mod raw { ) } #[allow(clippy::approx_constant)] - #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - pub fn make_perspective_common_camera() -> Entity { + #[allow(non_snake_case)] + #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + pub fn make_PerspectiveCommonCamera() -> Entity { Entity::new() - .with_merge(crate::ambient_core::camera::concepts::make_camera()) + .with_merge(crate::ambient_core::camera::concepts::make_Camera()) .with(crate::ambient_core::camera::components::fovy(), 1f32) .with( crate::ambient_core::camera::components::aspect_ratio(), 1f32, ) } - #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - pub fn is_perspective_common_camera(id: EntityId) -> bool { - crate::ambient_core::camera::concepts::is_camera(id) + #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[allow(non_snake_case)] + pub fn is_PerspectiveCommonCamera(id: EntityId) -> bool { + crate::ambient_core::camera::concepts::is_Camera(id) && entity::has_components( id, &[ @@ -592,27 +597,30 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn perspective_common_camera() -> (Component, Component) { + #[allow(non_snake_case)] + pub fn PerspectiveCommonCamera() -> (Component, Component) { ( crate::ambient_core::camera::components::fovy(), crate::ambient_core::camera::components::aspect_ratio(), ) } #[allow(clippy::approx_constant)] - #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - pub fn make_perspective_camera() -> Entity { + #[allow(non_snake_case)] + #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + pub fn make_PerspectiveCamera() -> Entity { Entity::new() .with_merge( - crate::ambient_core::camera::concepts::make_perspective_common_camera(), + crate::ambient_core::camera::concepts::make_PerspectiveCommonCamera(), ) .with(crate::ambient_core::camera::components::perspective(), ()) .with(crate::ambient_core::camera::components::far(), 1000f32) } - #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - pub fn is_perspective_camera(id: EntityId) -> bool { - crate::ambient_core::camera::concepts::is_perspective_common_camera(id) + #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[allow(non_snake_case)] + pub fn is_PerspectiveCamera(id: EntityId) -> bool { + crate::ambient_core::camera::concepts::is_PerspectiveCommonCamera(id) && entity::has_components( id, &[ @@ -621,40 +629,45 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn perspective_camera() -> (Component<()>, Component) { + #[allow(non_snake_case)] + pub fn PerspectiveCamera() -> (Component<()>, Component) { ( crate::ambient_core::camera::components::perspective(), crate::ambient_core::camera::components::far(), ) } #[allow(clippy::approx_constant)] - #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - pub fn make_perspective_infinite_reverse_camera() -> Entity { + #[allow(non_snake_case)] + #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + pub fn make_PerspectiveInfiniteReverseCamera() -> Entity { Entity::new() .with_merge( - crate::ambient_core::camera::concepts::make_perspective_common_camera(), + crate::ambient_core::camera::concepts::make_PerspectiveCommonCamera(), ) .with( crate::ambient_core::camera::components::perspective_infinite_reverse(), (), ) } - #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] - pub fn is_perspective_infinite_reverse_camera(id: EntityId) -> bool { - crate :: ambient_core :: camera :: concepts :: is_perspective_common_camera (id) && entity :: has_components (id , & [& crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()]) + #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[allow(non_snake_case)] + pub fn is_PerspectiveInfiniteReverseCamera(id: EntityId) -> bool { + crate :: ambient_core :: camera :: concepts :: is_PerspectiveCommonCamera (id) && entity :: has_components (id , & [& crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()]) } - #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::perspective_common_camera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn perspective_infinite_reverse_camera() -> (Component<()>) { + #[allow(non_snake_case)] + pub fn PerspectiveInfiniteReverseCamera() -> (Component<()>) { (crate::ambient_core::camera::components::perspective_infinite_reverse()) } #[allow(clippy::approx_constant)] - #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - pub fn make_orthographic_camera() -> Entity { + #[allow(non_snake_case)] + #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + pub fn make_OrthographicCamera() -> Entity { Entity::new() - .with_merge(crate::ambient_core::camera::concepts::make_camera()) + .with_merge(crate::ambient_core::camera::concepts::make_Camera()) .with(crate::ambient_core::camera::components::orthographic(), ()) .with( crate::ambient_core::camera::components::orthographic_left(), @@ -675,9 +688,10 @@ mod raw { .with(crate::ambient_core::camera::components::near(), -1f32) .with(crate::ambient_core::camera::components::far(), 1f32) } - #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] - pub fn is_orthographic_camera(id: EntityId) -> bool { - crate::ambient_core::camera::concepts::is_camera(id) + #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[allow(non_snake_case)] + pub fn is_OrthographicCamera(id: EntityId) -> bool { + crate::ambient_core::camera::concepts::is_Camera(id) && entity::has_components( id, &[ @@ -691,9 +705,10 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn orthographic_camera() -> ( + #[allow(non_snake_case)] + pub fn OrthographicCamera() -> ( Component<()>, Component, Component, @@ -1612,8 +1627,9 @@ mod raw { pub mod concepts { use crate::prelude::*; #[allow(clippy::approx_constant)] + #[allow(non_snake_case)] #[doc = "Makes a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] - pub fn make_character_controller() -> Entity { + pub fn make_CharacterController() -> Entity { Entity::new() .with( crate::ambient_core::physics::components::character_controller_height(), @@ -1629,7 +1645,8 @@ mod raw { ) } #[doc = "Checks if the entity is a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] - pub fn is_character_controller(id: EntityId) -> bool { + #[allow(non_snake_case)] + pub fn is_CharacterController(id: EntityId) -> bool { entity::has_components( id, &[ @@ -1643,7 +1660,8 @@ mod raw { } #[doc = "Returns the components that comprise *Character Controller* as a tuple.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn character_controller() -> (Component, Component, Component<()>) { + #[allow(non_snake_case)] + pub fn CharacterController() -> (Component, Component, Component<()>) { ( crate::ambient_core::physics::components::character_controller_height(), crate::ambient_core::physics::components::character_controller_radius(), @@ -1833,8 +1851,9 @@ mod raw { pub mod concepts { use crate::prelude::*; #[allow(clippy::approx_constant)] + #[allow(non_snake_case)] #[doc = "Makes a *Sphere*.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] - pub fn make_sphere() -> Entity { + pub fn make_Sphere() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::sphere(), ()) .with( @@ -1851,7 +1870,8 @@ mod raw { ) } #[doc = "Checks if the entity is a *Sphere*.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] - pub fn is_sphere(id: EntityId) -> bool { + #[allow(non_snake_case)] + pub fn is_Sphere(id: EntityId) -> bool { entity::has_components( id, &[ @@ -1864,7 +1884,8 @@ mod raw { } #[doc = "Returns the components that comprise *Sphere* as a tuple.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn sphere() -> ( + #[allow(non_snake_case)] + pub fn Sphere() -> ( Component<()>, Component, Component, @@ -1878,8 +1899,9 @@ mod raw { ) } #[allow(clippy::approx_constant)] + #[allow(non_snake_case)] #[doc = "Makes a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] - pub fn make_capsule() -> Entity { + pub fn make_Capsule() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::capsule(), ()) .with( @@ -1904,7 +1926,8 @@ mod raw { ) } #[doc = "Checks if the entity is a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] - pub fn is_capsule(id: EntityId) -> bool { + #[allow(non_snake_case)] + pub fn is_Capsule(id: EntityId) -> bool { entity::has_components( id, &[ @@ -1919,7 +1942,8 @@ mod raw { } #[doc = "Returns the components that comprise *Capsule* as a tuple.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn capsule() -> ( + #[allow(non_snake_case)] + pub fn Capsule() -> ( Component<()>, Component, Component, @@ -1937,8 +1961,9 @@ mod raw { ) } #[allow(clippy::approx_constant)] + #[allow(non_snake_case)] #[doc = "Makes a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] - pub fn make_torus() -> Entity { + pub fn make_Torus() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::torus(), ()) .with( @@ -1959,7 +1984,8 @@ mod raw { ) } #[doc = "Checks if the entity is a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] - pub fn is_torus(id: EntityId) -> bool { + #[allow(non_snake_case)] + pub fn is_Torus(id: EntityId) -> bool { entity::has_components( id, &[ @@ -1973,7 +1999,8 @@ mod raw { } #[doc = "Returns the components that comprise *Torus* as a tuple.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn torus() -> ( + #[allow(non_snake_case)] + pub fn Torus() -> ( Component<()>, Component, Component, @@ -2498,8 +2525,9 @@ mod raw { pub mod concepts { use crate::prelude::*; #[allow(clippy::approx_constant)] + #[allow(non_snake_case)] #[doc = "Makes a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - pub fn make_transformable() -> Entity { + pub fn make_Transformable() -> Entity { Entity::new() .with( crate::ambient_core::transform::components::translation(), @@ -2522,7 +2550,8 @@ mod raw { ) } #[doc = "Checks if the entity is a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - pub fn is_transformable(id: EntityId) -> bool { + #[allow(non_snake_case)] + pub fn is_Transformable(id: EntityId) -> bool { entity::has_components( id, &[ @@ -2535,7 +2564,8 @@ mod raw { } #[doc = "Returns the components that comprise *Transformable* as a tuple.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(clippy::type_complexity)] - pub fn transformable() -> ( + #[allow(non_snake_case)] + pub fn Transformable() -> ( Component, Component, Component, diff --git a/guest/rust/api_core/src/prelude.rs b/guest/rust/api_core/src/prelude.rs index d19829a823..860984abef 100644 --- a/guest/rust/api_core/src/prelude.rs +++ b/guest/rust/api_core/src/prelude.rs @@ -1,6 +1,8 @@ pub use crate::{ asset, - ecs::{change_query, despawn_query, query, spawn_query, Component, Entity, QueryEvent}, + ecs::{ + change_query, despawn_query, query, spawn_query, Component, Concept, Entity, QueryEvent, + }, entity, global::*, main, message, diff --git a/guest/rust/examples/assets/basic_model/src/server.rs b/guest/rust/examples/assets/basic_model/src/server.rs index 7c70896ac8..64a5b50f4b 100644 --- a/guest/rust/examples/assets/basic_model/src/server.rs +++ b/guest/rust/examples/assets/basic_model/src/server.rs @@ -2,13 +2,12 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, prefab::components::prefab_from_url, transform::{ components::{lookat_target, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -20,7 +19,7 @@ use packages::this::assets; pub async fn main() { // Camera Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(2., 2., 2.)) @@ -29,7 +28,7 @@ pub async fn main() { // Model Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("Cube.glb")) .spawn(); } diff --git a/guest/rust/examples/assets/material_overriding/src/server.rs b/guest/rust/examples/assets/material_overriding/src/server.rs index f61953cb87..45429d7514 100644 --- a/guest/rust/examples/assets/material_overriding/src/server.rs +++ b/guest/rust/examples/assets/material_overriding/src/server.rs @@ -2,15 +2,14 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, prefab::components::{prefab_from_url, spawned}, primitives::components::quad, rendering::components::{cast_shadows, light_ambient, light_diffuse, sun}, transform::{ components::{lookat_target, rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -21,7 +20,7 @@ use packages::this::{assets, components::is_the_best}; #[main] pub async fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(2., 2., 1.)) @@ -29,13 +28,13 @@ pub async fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 2.0) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-1.)) .with(main_scene(), ()) @@ -44,7 +43,7 @@ pub async fn main() { .spawn(); let model = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cast_shadows(), ()) .with(prefab_from_url(), assets::url("Teapot.glb")) .with(is_the_best(), true) diff --git a/guest/rust/examples/assets/unity/src/server.rs b/guest/rust/examples/assets/unity/src/server.rs index 8ab063442c..35ccfdab8c 100644 --- a/guest/rust/examples/assets/unity/src/server.rs +++ b/guest/rust/examples/assets/unity/src/server.rs @@ -2,15 +2,14 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, prefab::components::prefab_from_url, primitives::components::quad, rendering::components::cast_shadows, transform::{ components::{lookat_target, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -20,7 +19,7 @@ use packages::this::assets; #[main] pub fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), Vec3::ONE * 5. + Vec3::Z * 1.5) @@ -28,13 +27,13 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 100.) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cast_shadows(), ()) .with( prefab_from_url(), diff --git a/guest/rust/examples/basics/multiplayer/src/server.rs b/guest/rust/examples/basics/multiplayer/src/server.rs index a3fa088124..a2e8e3adee 100644 --- a/guest/rust/examples/basics/multiplayer/src/server.rs +++ b/guest/rust/examples/basics/multiplayer/src/server.rs @@ -2,15 +2,14 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, player::components::is_player, primitives::components::cube, rendering::components::color, transform::{ components::{lookat_target, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -19,7 +18,7 @@ use ambient_api::{ #[main] pub fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), Vec3::ONE * 5.) @@ -30,7 +29,7 @@ pub fn main() { // For each player joining, spawn a random colored box somewhere for _ in players { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), rand::random()) .with(color(), rand::random::().extend(1.0)) diff --git a/guest/rust/examples/basics/physics/src/server.rs b/guest/rust/examples/basics/physics/src/server.rs index 13b07850e5..64197a6620 100644 --- a/guest/rust/examples/basics/physics/src/server.rs +++ b/guest/rust/examples/basics/physics/src/server.rs @@ -2,8 +2,7 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, messages::{Collision, Frame}, physics::components::{ @@ -15,7 +14,7 @@ use ambient_api::{ rendering::components::{cast_shadows, color}, transform::{ components::{lookat_target, rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -26,7 +25,7 @@ use packages::this::{assets, messages::Bonk}; #[main] pub async fn main() { let camera = Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(5., 5., 4.)) @@ -34,7 +33,7 @@ pub async fn main() { .spawn(); let cube = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(visualize_collider(), ()) .with(physics_controlled(), ()) @@ -50,13 +49,17 @@ pub async fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("shape.glb")) .spawn(); Collision::subscribe(move |msg| { println!("Bonk! {:?} collided", msg.ids); - Bonk {emitter: cube, listener: camera}.send_client_broadcast_unreliable(); + Bonk { + emitter: cube, + listener: camera, + } + .send_client_broadcast_unreliable(); }); Frame::subscribe(move |_| { diff --git a/guest/rust/examples/basics/primitives/src/server.rs b/guest/rust/examples/basics/primitives/src/server.rs index 0ee2a74dec..a54e5a3287 100644 --- a/guest/rust/examples/basics/primitives/src/server.rs +++ b/guest/rust/examples/basics/primitives/src/server.rs @@ -2,8 +2,7 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, primitives::{ components::{ @@ -11,12 +10,12 @@ use ambient_api::{ capsule_rings, cube, quad, sphere_radius, sphere_sectors, sphere_stacks, torus_inner_radius, torus_loops, torus_outer_radius, torus_slices, }, - concepts::{make_capsule, make_sphere, make_torus}, + concepts::{make_Capsule, make_Sphere, make_Torus}, }, rendering::components::color, transform::{ components::{lookat_target, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -25,7 +24,7 @@ use ambient_api::{ #[main] pub fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(5., 5., 6.)) @@ -33,14 +32,14 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with(color(), vec4(1., 0., 0., 1.)) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), vec3(2., 0., 0.5)) .with(scale(), Vec3::ONE) @@ -48,8 +47,8 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) - .with_merge(make_sphere()) + .with_merge(make_Transformable()) + .with_merge(make_Sphere()) .with(sphere_radius(), 1.0) .with(sphere_sectors(), 12) .with(sphere_stacks(), 6) @@ -58,22 +57,22 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) - .with_merge(make_sphere()) + .with_merge(make_Transformable()) + .with_merge(make_Sphere()) .with(translation(), vec3(2., 2., 0.25)) .with(color(), vec4(1., 1., 0., 1.)) .spawn(); Entity::new() - .with_merge(make_transformable()) - .with_merge(make_capsule()) + .with_merge(make_Transformable()) + .with_merge(make_Capsule()) .with(translation(), vec3(-2.0, 2.0, 1.0)) .with(color(), vec4(1.0, 0.25, 0.0, 1.0)) .spawn(); Entity::new() - .with_merge(make_transformable()) - .with_merge(make_capsule()) + .with_merge(make_Transformable()) + .with_merge(make_Capsule()) .with(capsule_radius(), 0.25) .with(capsule_half_height(), 0.25) .with(capsule_rings(), 0) @@ -84,8 +83,8 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) - .with_merge(make_torus()) + .with_merge(make_Transformable()) + .with_merge(make_Torus()) .with(torus_inner_radius(), 0.25) .with(torus_outer_radius(), 0.5) .with(torus_slices(), 32) diff --git a/guest/rust/examples/basics/skinmesh/src/client.rs b/guest/rust/examples/basics/skinmesh/src/client.rs index 19c1abf0e9..81490d343b 100644 --- a/guest/rust/examples/basics/skinmesh/src/client.rs +++ b/guest/rust/examples/basics/skinmesh/src/client.rs @@ -4,17 +4,16 @@ use ambient_api::{ animation::components::apply_animation_player, app::components::{main_scene, name}, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, layout::components::space_between_items, model::components::model_loaded, prefab::components::prefab_from_url, - primitives::{components::quad, concepts::make_sphere}, + primitives::{components::quad, concepts::make_Sphere}, rendering::components::color, transform::{ components::{local_to_parent, lookat_target, reset_scale, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -24,7 +23,7 @@ use packages::this::assets; #[main] pub async fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(2., 2., 3.0)) @@ -32,7 +31,7 @@ pub async fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with(color(), vec4(0.5, 0.5, 0.5, 1.)) @@ -40,7 +39,7 @@ pub async fn main() { .spawn(); let unit_id = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("Peasant Man.fbx")) .with(name(), "Peasant".to_string()) .spawn(); @@ -61,8 +60,8 @@ pub async fn main() { // This demonstrates how to attach an entity to a bone let left_foot = animation::get_bone_by_bind_id(unit_id, &BindId::LeftFoot).unwrap(); let ball = Entity::new() - .with_merge(make_transformable()) - .with_merge(make_sphere()) + .with_merge(make_Transformable()) + .with_merge(make_Sphere()) .with(scale(), vec3(0.3, 0.3, 0.3)) .with(color(), vec4(0.0, 1.0, 0.0, 1.0)) .with(local_to_parent(), Default::default()) diff --git a/guest/rust/examples/controllers/first_person_camera/src/server.rs b/guest/rust/examples/controllers/first_person_camera/src/server.rs index 9e02d6035a..eab9454dd8 100644 --- a/guest/rust/examples/controllers/first_person_camera/src/server.rs +++ b/guest/rust/examples/controllers/first_person_camera/src/server.rs @@ -2,23 +2,22 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, ecs::components::{children, parent}, physics::{ components::{plane_collider, sphere_collider}, - concepts::make_character_controller, + concepts::make_CharacterController, }, player::components::{is_player, user_id}, primitives::{ components::{cube, quad}, - concepts::make_sphere, + concepts::make_Sphere, }, rendering::components::color, transform::{ components::{local_to_parent, rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -33,7 +32,7 @@ use std::f32::consts::{PI, TAU}; #[main] pub fn main() { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with(color(), vec4(1., 0., 0., 1.)) @@ -41,8 +40,8 @@ pub fn main() { .spawn(); let ball = Entity::new() - .with_merge(make_transformable()) - .with_merge(make_sphere()) + .with_merge(make_Transformable()) + .with_merge(make_Sphere()) .with(sphere_collider(), 0.5) .with(translation(), vec3(5., 5., 1.)) .spawn(); @@ -50,7 +49,7 @@ pub fn main() { spawn_query((is_player(), user_id())).bind(move |players| { for (id, (_, uid)) in players { let head = Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(user_id(), uid) @@ -62,8 +61,8 @@ pub fn main() { entity::add_components( id, Entity::new() - .with_merge(make_transformable()) - .with_merge(make_character_controller()) + .with_merge(make_Transformable()) + .with_merge(make_CharacterController()) .with(cube(), ()) .with(player_movement_direction(), Vec2::default()) .with(color(), Vec4::ONE) diff --git a/guest/rust/examples/controllers/third_person_camera/src/client.rs b/guest/rust/examples/controllers/third_person_camera/src/client.rs index 2456031226..033607f452 100644 --- a/guest/rust/examples/controllers/third_person_camera/src/client.rs +++ b/guest/rust/examples/controllers/third_person_camera/src/client.rs @@ -2,8 +2,7 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, messages::Frame, player::components::{is_player, local_user_id, user_id}, @@ -29,7 +28,7 @@ fn main() { if user == local_user_id { eprintln!("Attaching camera to player {}", user); let camera = Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(user_id(), user) diff --git a/guest/rust/examples/controllers/third_person_camera/src/server.rs b/guest/rust/examples/controllers/third_person_camera/src/server.rs index 466b69739b..defd574af5 100644 --- a/guest/rust/examples/controllers/third_person_camera/src/server.rs +++ b/guest/rust/examples/controllers/third_person_camera/src/server.rs @@ -3,17 +3,17 @@ use ambient_api::{ app::components::main_scene, physics::{ components::{plane_collider, sphere_collider}, - concepts::make_character_controller, + concepts::make_CharacterController, }, player::components::is_player, primitives::{ components::{cube, quad}, - concepts::make_sphere, + concepts::make_Sphere, }, rendering::components::{color, fog_density, light_diffuse, sky, sun}, transform::{ components::{rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -28,7 +28,7 @@ use packages::this::{ #[main] pub fn main() { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.0) .with(color(), vec4(1.0, 0.0, 0.0, 1.0)) @@ -36,15 +36,15 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) - .with_merge(make_sphere()) + .with_merge(make_Transformable()) + .with_merge(make_Sphere()) .with(color(), vec4(0.5, 0.0, 1.0, 1.0)) .with(sphere_collider(), 0.5) .with(translation(), vec3(5.0, 5.0, 1.0)) .spawn(); // Spawn a sun - make_transformable() + make_Transformable() .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-1.0)) .with(light_diffuse(), Vec3::ONE) @@ -53,15 +53,15 @@ pub fn main() { .spawn(); // And an atmosphere to go with id - make_transformable().with(sky(), ()).spawn(); + make_Transformable().with(sky(), ()).spawn(); spawn_query(is_player()).bind(move |players| { for (id, _) in players { entity::add_components( id, Entity::new() - .with_merge(make_transformable()) - .with_merge(make_character_controller()) + .with_merge(make_Transformable()) + .with_merge(make_CharacterController()) .with(player_movement_direction(), Vec2::ZERO) .with(player_mouse_delta_x(), 0.0) .with(player_scroll(), 0.0) diff --git a/guest/rust/examples/intermediate/clientside/src/client.rs b/guest/rust/examples/intermediate/clientside/src/client.rs index cc98c629c6..2a0a93873c 100644 --- a/guest/rust/examples/intermediate/clientside/src/client.rs +++ b/guest/rust/examples/intermediate/clientside/src/client.rs @@ -2,8 +2,7 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, messages::Frame, primitives::components::cube, @@ -22,7 +21,7 @@ pub async fn main() { .unwrap(); let id = Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), Vec3::ONE * 5.) diff --git a/guest/rust/examples/intermediate/clientside/src/server.rs b/guest/rust/examples/intermediate/clientside/src/server.rs index 042deb556e..d551580ea4 100644 --- a/guest/rust/examples/intermediate/clientside/src/server.rs +++ b/guest/rust/examples/intermediate/clientside/src/server.rs @@ -2,7 +2,7 @@ use ambient_api::{ core::{ primitives::components::cube, rendering::components::color, - transform::{components::translation, concepts::make_transformable}, + transform::{components::translation, concepts::make_Transformable}, }, prelude::*, }; @@ -20,7 +20,7 @@ pub fn main() { for y in 0..2 * side_length + 1 { for x in 0..2 * side_length + 1 { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(grid_position(), IVec2::new(x, y)) .with(color(), Vec4::ONE) diff --git a/guest/rust/examples/intermediate/dependencies/deps/code/src/server.rs b/guest/rust/examples/intermediate/dependencies/deps/code/src/server.rs index a41d365605..ee80945536 100644 --- a/guest/rust/examples/intermediate/dependencies/deps/code/src/server.rs +++ b/guest/rust/examples/intermediate/dependencies/deps/code/src/server.rs @@ -3,7 +3,7 @@ use ambient_api::{ prefab::components::prefab_from_url, transform::{ components::{rotation, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -20,7 +20,7 @@ use packages::{ pub fn main() { Spawn::subscribe(|_, msg| { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(spawned_by_us(), ()) .with(prefab_from_url(), assets::url("Teapot.glb")) .with(spin_direction(), msg.spin_direction) diff --git a/guest/rust/examples/intermediate/dependencies/src/server.rs b/guest/rust/examples/intermediate/dependencies/src/server.rs index 6c284551ea..6e68824a1c 100644 --- a/guest/rust/examples/intermediate/dependencies/src/server.rs +++ b/guest/rust/examples/intermediate/dependencies/src/server.rs @@ -2,8 +2,7 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, transform::components::{lookat_target, translation}, }, @@ -20,7 +19,7 @@ use packages::{ #[main] pub async fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), Vec3::ONE * 5.) diff --git a/guest/rust/examples/intermediate/messaging/src/client.rs b/guest/rust/examples/intermediate/messaging/src/client.rs index 82a0e5dc4c..77a6838a24 100644 --- a/guest/rust/examples/intermediate/messaging/src/client.rs +++ b/guest/rust/examples/intermediate/messaging/src/client.rs @@ -7,14 +7,13 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, primitives::components::cube, rendering::components::color, transform::{ components::{lookat_target, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -35,7 +34,7 @@ pub fn main() { // 0 Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), Vec3::ONE * 5.) @@ -52,7 +51,7 @@ pub fn main() { let source_reliable = data.source_reliable; Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with( translation(), diff --git a/guest/rust/examples/intermediate/messaging/src/server.rs b/guest/rust/examples/intermediate/messaging/src/server.rs index f1945baeb0..d94ca0793c 100644 --- a/guest/rust/examples/intermediate/messaging/src/server.rs +++ b/guest/rust/examples/intermediate/messaging/src/server.rs @@ -9,7 +9,7 @@ use ambient_api::{ rendering::components::color, transform::{ components::{scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -58,7 +58,7 @@ pub fn main() { .send_client_broadcast_reliable(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with( translation(), diff --git a/guest/rust/examples/intermediate/screen_ray/src/client.rs b/guest/rust/examples/intermediate/screen_ray/src/client.rs index 767b99a702..525d64c1a5 100644 --- a/guest/rust/examples/intermediate/screen_ray/src/client.rs +++ b/guest/rust/examples/intermediate/screen_ray/src/client.rs @@ -2,8 +2,7 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, messages::Frame, rendering::components::color, @@ -16,7 +15,7 @@ use packages::this::messages::{Input, WorldPosition}; #[main] pub fn main() { let camera = Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), Vec3::ONE * 5.) diff --git a/guest/rust/examples/intermediate/screen_ray/src/server.rs b/guest/rust/examples/intermediate/screen_ray/src/server.rs index 5fe59180ef..313ae4d75c 100644 --- a/guest/rust/examples/intermediate/screen_ray/src/server.rs +++ b/guest/rust/examples/intermediate/screen_ray/src/server.rs @@ -2,7 +2,7 @@ use ambient_api::{ core::{ physics::components::plane_collider, primitives::components::{cube, quad}, - transform::{components::translation, concepts::make_transformable}, + transform::{components::translation, concepts::make_Transformable}, }, prelude::*, }; @@ -11,13 +11,13 @@ use packages::this::messages::{Input, WorldPosition}; #[main] pub fn main() { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(plane_collider(), ()) .spawn(); let cube_id = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .spawn(); diff --git a/guest/rust/examples/rendering/decals/src/server.rs b/guest/rust/examples/rendering/decals/src/server.rs index 6f8d38014e..b0a97adecb 100644 --- a/guest/rust/examples/rendering/decals/src/server.rs +++ b/guest/rust/examples/rendering/decals/src/server.rs @@ -2,8 +2,7 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, primitives::components::{cube, quad}, rendering::components::{color, decal_from_url, transparency_group}, @@ -21,7 +20,7 @@ use core::f32::consts::PI; pub fn main() { // Camera. Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(translation(), vec3(1.0, 1.0, 2.0)) .with(lookat_target(), vec3(0.0, 0.0, 0.0)) diff --git a/guest/rust/examples/rendering/fog/src/client.rs b/guest/rust/examples/rendering/fog/src/client.rs index 6c29c632b0..6b2a281178 100644 --- a/guest/rust/examples/rendering/fog/src/client.rs +++ b/guest/rust/examples/rendering/fog/src/client.rs @@ -3,7 +3,7 @@ use ambient_api::{ app::components::main_scene, camera::{ components::{aspect_ratio_from_window, fog}, - concepts::make_perspective_infinite_reverse_camera, + concepts::make_PerspectiveInfiniteReverseCamera, }, primitives::components::{cube, quad}, rendering::components::{ @@ -12,7 +12,7 @@ use ambient_api::{ }, transform::{ components::{lookat_target, rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -21,7 +21,7 @@ use ambient_api::{ #[main] fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(fog(), ()) @@ -30,7 +30,7 @@ fn main() { .spawn(); let sun = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-1.)) .with(main_scene(), ()) @@ -41,12 +41,12 @@ fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sky(), ()) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 1000.) .with(color(), vec4(1., 0., 0., 1.)) @@ -54,7 +54,7 @@ fn main() { for i in 0..10 { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), vec3(0., 1. * (2f32).powi(i), 1.)) .with(scale(), Vec3::ONE * 2.) diff --git a/guest/rust/examples/rendering/image/src/server.rs b/guest/rust/examples/rendering/image/src/server.rs index 11b3c24865..2a58c7dcc5 100644 --- a/guest/rust/examples/rendering/image/src/server.rs +++ b/guest/rust/examples/rendering/image/src/server.rs @@ -2,14 +2,13 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, primitives::components::quad, rendering::components::pbr_material_from_url, transform::{ components::{lookat_target, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -18,7 +17,7 @@ use ambient_api::{ #[main] pub fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(translation(), vec3(5., 5., 6.)) .with(lookat_target(), vec3(0., 0., 2.)) @@ -26,7 +25,7 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with( diff --git a/guest/rust/examples/rendering/instancing/src/server.rs b/guest/rust/examples/rendering/instancing/src/server.rs index 553cb041da..a95929546f 100644 --- a/guest/rust/examples/rendering/instancing/src/server.rs +++ b/guest/rust/examples/rendering/instancing/src/server.rs @@ -4,14 +4,13 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, prefab::components::prefab_from_url, rendering::components::{cast_shadows, light_ambient, light_diffuse, sun}, transform::{ components::{lookat_target, rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, entity::set_component, @@ -24,7 +23,7 @@ use packages::this::{assets, components::instance_index}; #[main] pub async fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), Vec3::ONE * 5.) @@ -49,7 +48,7 @@ pub async fn main() { }; Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(translation(), (vec3(x, y, z) - 0.5) * 7.0) .with(instance_index(), uvec3(i, j, k)) .with(scale(), Vec3::ONE * 0.2) @@ -61,7 +60,7 @@ pub async fn main() { } Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-1.)) .with(main_scene(), ()) diff --git a/guest/rust/examples/rendering/procedural_generation/src/client.rs b/guest/rust/examples/rendering/procedural_generation/src/client.rs index 4ab95b3001..123330fb0f 100644 --- a/guest/rust/examples/rendering/procedural_generation/src/client.rs +++ b/guest/rust/examples/rendering/procedural_generation/src/client.rs @@ -3,18 +3,17 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, primitives::{ components::{cube, quad, sphere_radius}, - concepts::make_sphere, + concepts::make_Sphere, }, procedurals::components::{procedural_material, procedural_mesh}, rendering::components::{cast_shadows, color, light_diffuse, sun}, transform::{ components::{lookat_target, rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -35,7 +34,7 @@ const WAVE_FREQUENCY: f32 = 0.5 * TAU; fn make_camera() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(0.0, 3.0, 4.0) * 2.0) @@ -59,7 +58,7 @@ fn App(_hooks: &mut Hooks, sun_id: EntityId) -> Element { fn make_lighting() { let sun_id = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sun(), 0.0) .with( rotation(), @@ -89,7 +88,7 @@ fn make_lighting() { fn make_simple_cube(t: Vec3, s: Vec3, c: Vec4) { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), t) .with(scale(), s) @@ -100,8 +99,8 @@ fn make_simple_cube(t: Vec3, s: Vec3, c: Vec4) { fn make_simple_sphere(t: Vec3, r: f32, c: Vec4) { Entity::new() - .with_merge(make_transformable()) - .with_merge(make_sphere()) + .with_merge(make_Transformable()) + .with_merge(make_Sphere()) .with(translation(), t) .with(sphere_radius(), r) .with(color(), c) @@ -122,7 +121,7 @@ fn make_coordinate_system() { fn make_ground() { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(color(), vec4(0.25, 1.0, 0.25, 1.0)) .with(translation(), vec3(0.0, 0.0, -0.5)) @@ -257,7 +256,7 @@ fn make_procedural( transparent, }); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(procedural_mesh(), mesh) .with(procedural_material(), material) .with(translation(), world_translation) diff --git a/guest/rust/examples/rendering/raw_text/src/server.rs b/guest/rust/examples/rendering/raw_text/src/server.rs index cb1343332c..e72915714a 100644 --- a/guest/rust/examples/rendering/raw_text/src/server.rs +++ b/guest/rust/examples/rendering/raw_text/src/server.rs @@ -2,8 +2,7 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, rendering::components::color, text::components::text, @@ -11,7 +10,7 @@ use ambient_api::{ components::{ local_to_world, lookat_target, mesh_to_local, mesh_to_world, scale, translation, }, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -20,7 +19,7 @@ use ambient_api::{ #[main] pub fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(5., 5., 4.)) @@ -28,7 +27,7 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(text(), "Hello world".to_string()) .with(color(), vec4(1., 1., 1., 1.)) .with(translation(), vec3(0., 0., 0.01)) diff --git a/guest/rust/examples/rendering/samplers/src/server.rs b/guest/rust/examples/rendering/samplers/src/server.rs index e56f015ff7..69a3d40a24 100644 --- a/guest/rust/examples/rendering/samplers/src/server.rs +++ b/guest/rust/examples/rendering/samplers/src/server.rs @@ -2,13 +2,12 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, prefab::components::prefab_from_url, transform::{ components::{lookat_target, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -18,7 +17,7 @@ use packages::this::assets; #[main] pub fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(2.0, 2.0, 4.0)) @@ -26,13 +25,13 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(translation(), vec3(-1.25, 0.0, 0.0)) .with(prefab_from_url(), assets::url("quad-linear.glb")) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(translation(), vec3(1.25, 0.0, 0.0)) .with(prefab_from_url(), assets::url("quad-nearest.glb")) .spawn(); diff --git a/guest/rust/examples/rendering/sun/src/server.rs b/guest/rust/examples/rendering/sun/src/server.rs index da14055add..8adcb4434f 100644 --- a/guest/rust/examples/rendering/sun/src/server.rs +++ b/guest/rust/examples/rendering/sun/src/server.rs @@ -2,18 +2,17 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, messages::Frame, primitives::{ components::{quad, sphere_radius}, - concepts::make_sphere, + concepts::make_Sphere, }, rendering::components::{cast_shadows, color, fog_density, light_diffuse, sky, sun, water}, transform::{ components::{lookat_target, rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -22,7 +21,7 @@ use ambient_api::{ #[main] pub fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(5., 5., 2.)) @@ -30,7 +29,7 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 20.) .with(color(), vec4(1., 0., 0., 1.)) @@ -38,18 +37,18 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(water(), ()) .with(scale(), Vec3::ONE * 2000.) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sky(), ()) .spawn(); Entity::new() - .with_merge(make_sphere()) + .with_merge(make_Sphere()) .with(cast_shadows(), ()) .with(sphere_radius(), 1.) .with(translation(), vec3(0., 0., 1.)) @@ -57,7 +56,7 @@ pub fn main() { .spawn(); let sun = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Quat::IDENTITY) .with(main_scene(), ()) diff --git a/guest/rust/examples/rendering/transparency/src/client.rs b/guest/rust/examples/rendering/transparency/src/client.rs index 1434f96095..2590a3516b 100644 --- a/guest/rust/examples/rendering/transparency/src/client.rs +++ b/guest/rust/examples/rendering/transparency/src/client.rs @@ -2,14 +2,13 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, primitives::components::{cube, quad}, rendering::components::{color, transparency_group}, transform::{ components::{lookat_target, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -18,7 +17,7 @@ use ambient_api::{ #[main] fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(5., 5., 4.)) @@ -26,14 +25,14 @@ fn main() { .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with(color(), vec4(1., 0., 0., 1.)) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), vec3(0., 0., 1.)) .with(scale(), Vec3::ONE * 2.) diff --git a/guest/rust/packages/games/afps/core/fpsmodel/src/client.rs b/guest/rust/packages/games/afps/core/fpsmodel/src/client.rs index 107161552b..1c425d532f 100644 --- a/guest/rust/packages/games/afps/core/fpsmodel/src/client.rs +++ b/guest/rust/packages/games/afps/core/fpsmodel/src/client.rs @@ -8,7 +8,7 @@ use ambient_api::{ rendering::components::color, //pbr_material_from_url transform::{ components::{local_to_parent, reset_scale, rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -35,7 +35,7 @@ pub fn main() { } let hand = hand.unwrap(); let gun = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("red.glb")) .with(translation(), vec3(-0.06, 0.2, 0.0)) .with( diff --git a/guest/rust/packages/games/afps/core/fpsmodel/src/server.rs b/guest/rust/packages/games/afps/core/fpsmodel/src/server.rs index 32e967ed8d..776248fd33 100644 --- a/guest/rust/packages/games/afps/core/fpsmodel/src/server.rs +++ b/guest/rust/packages/games/afps/core/fpsmodel/src/server.rs @@ -3,15 +3,15 @@ use ambient_api::{ app::components::main_scene, camera::{ components::{aspect_ratio_from_window, fovy}, - concepts::make_perspective_infinite_reverse_camera, + concepts::make_PerspectiveInfiniteReverseCamera, }, ecs::components::{children, parent}, - physics::concepts::make_character_controller, + physics::concepts::make_CharacterController, player::components::{is_player, user_id}, prefab::components::prefab_from_url, transform::{ components::{local_to_parent, local_to_world, rotation, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, entity::set_component, @@ -36,13 +36,16 @@ pub async fn main() { spawn_query((is_player(), user_id())).bind(move |players| { for (id, (_, uid)) in players { run_async(async move { - if entity::wait_for_component(id, player_name()).await.is_none() { + if entity::wait_for_component(id, player_name()) + .await + .is_none() + { // entity deleted return; } let cam = Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), -Vec3::Z * 4.) @@ -65,7 +68,7 @@ pub async fn main() { set_component(cam, parent(), head); let model = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("Y Bot.fbx")) .with( rotation(), @@ -77,8 +80,8 @@ pub async fn main() { entity::add_components( id, Entity::new() - .with_merge(make_transformable()) - .with_merge(make_character_controller()) + .with_merge(make_Transformable()) + .with_merge(make_CharacterController()) .with(basic_character_animations(), model) // adjust the initial position .with(local_to_world(), Default::default()) diff --git a/guest/rust/packages/games/afps/core/fpsrule/src/server.rs b/guest/rust/packages/games/afps/core/fpsrule/src/server.rs index 68f7d8c5c4..516da77faa 100644 --- a/guest/rust/packages/games/afps/core/fpsrule/src/server.rs +++ b/guest/rust/packages/games/afps/core/fpsrule/src/server.rs @@ -12,7 +12,7 @@ use ambient_api::{ rendering::components::{cast_shadows, color}, transform::{ components::{rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -32,7 +32,10 @@ pub fn main() { spawn_query(is_player()).bind(|results| { for (id, ()) in results { run_async(async move { - if entity::wait_for_component(id, player_name()).await.is_none() { + if entity::wait_for_component(id, player_name()) + .await + .is_none() + { // entity deleted return; } @@ -63,7 +66,7 @@ pub fn main() { // println!("laser length: {}", laser_length); // let laser_center = (hit.position + msg.ray_origin) / 2.0; // let laser = Entity::new() - // .with_merge(make_transformable()) + // .with_merge(make_Transformable()) // .with(cube(), ()) // .with(scale(), vec3(0.01, 0.01, laser_length * 0.6)) // .with(translation(), laser_center) @@ -100,7 +103,7 @@ pub fn main() { let rot = Quat::from_rotation_y(random::() * PI) * Quat::from_rotation_x(random::() * PI); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(rotation(), rot) .with(physics_controlled(), ()) diff --git a/guest/rust/packages/games/afps/mods/scene/src/server.rs b/guest/rust/packages/games/afps/mods/scene/src/server.rs index e61f57ce46..79764d34f2 100644 --- a/guest/rust/packages/games/afps/mods/scene/src/server.rs +++ b/guest/rust/packages/games/afps/mods/scene/src/server.rs @@ -5,12 +5,12 @@ use ambient_api::{ // prefab::components::prefab_from_url, primitives::{ components::{cube, quad}, - concepts::make_sphere, + concepts::make_Sphere, }, rendering::components::{cast_shadows, color, fog_density, light_diffuse, sky, sun}, transform::{ components::{rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -26,7 +26,7 @@ pub async fn main() { .with(scale(), Vec3::ONE * 1000.) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sky(), ()) .spawn(); // Entity::new() @@ -37,7 +37,7 @@ pub async fn main() { // .with(dynamic(), true) // .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sun(), Default::default()) .with(rotation(), Quat::from_rotation_y(-0.6)) .with(main_scene(), ()) @@ -48,7 +48,7 @@ pub async fn main() { for _ in 0..40 { let pos = random::() * 100. - 50.; Entity::new() - .with_merge(make_sphere()) + .with_merge(make_Sphere()) .with(cast_shadows(), ()) .with(cube(), ()) .with(translation(), vec3(pos.x, pos.y, 0.0)) @@ -70,7 +70,7 @@ pub async fn main() { for _ in 0..60 { let pos = random::() * 100. - 50.; Entity::new() - .with_merge(make_sphere()) + .with_merge(make_Sphere()) .with(cast_shadows(), ()) .with(cube(), ()) .with(translation(), vec3(pos.x, pos.y, 0.0)) diff --git a/guest/rust/packages/games/afps/mods/spraypaint/src/server.rs b/guest/rust/packages/games/afps/mods/spraypaint/src/server.rs index 1552795b06..86f902f8f7 100644 --- a/guest/rust/packages/games/afps/mods/spraypaint/src/server.rs +++ b/guest/rust/packages/games/afps/mods/spraypaint/src/server.rs @@ -1,6 +1,6 @@ // use ambient_api::{ // components::core::{primitives::cube, transform::translation}, -// concepts::make_transformable, +// concepts::make_Transformable, // physics, // prelude::*, // }; @@ -12,7 +12,7 @@ use ambient_api::{ rendering::components::decal_from_url, transform::{ components::{scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -47,13 +47,13 @@ pub fn main() { let decal_url = assets::url("pipeline.toml/0/mat.json"); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(translation(), hit.position) .with(decal_from_url(), decal_url) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("claymore.glb")) .with(claymore(), msg.source) .with(translation(), hit.position + vec3(0., 0., 0.15)) diff --git a/guest/rust/packages/games/afps/mods/zombie/src/server.rs b/guest/rust/packages/games/afps/mods/zombie/src/server.rs index 7369fdd9db..b62a07965c 100644 --- a/guest/rust/packages/games/afps/mods/zombie/src/server.rs +++ b/guest/rust/packages/games/afps/mods/zombie/src/server.rs @@ -4,12 +4,12 @@ use ambient_api::{ core::{ app::components::name, ecs::components::{children, parent}, - physics::concepts::make_character_controller, + physics::concepts::make_CharacterController, player::components::is_player, prefab::components::prefab_from_url, transform::{ components::{local_to_parent, local_to_world, rotation, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -40,7 +40,7 @@ pub async fn main() { for character_url in chars { let zombie = Entity::new().spawn(); - let model = make_transformable() + let model = make_Transformable() .with(prefab_from_url(), character_url) .with(parent(), zombie) .with(local_to_parent(), Default::default()) @@ -49,8 +49,8 @@ pub async fn main() { entity::add_components( zombie, - make_transformable() - .with_merge(make_character_controller()) + make_Transformable() + .with_merge(make_CharacterController()) .with( translation(), vec3(-8.0 * random::(), -8.0 * random::(), 1.3), diff --git a/guest/rust/packages/games/arkanoid/src/client.rs b/guest/rust/packages/games/arkanoid/src/client.rs index 1801bce0c8..097be8e5ec 100644 --- a/guest/rust/packages/games/arkanoid/src/client.rs +++ b/guest/rust/packages/games/arkanoid/src/client.rs @@ -5,7 +5,7 @@ use ambient_api::{ components::{ orthographic_bottom, orthographic_left, orthographic_right, orthographic_top, }, - concepts::make_orthographic_camera, + concepts::make_OrthographicCamera, }, messages::Frame, }, @@ -35,7 +35,7 @@ async fn main() { bgm_player.play(url_from_server.clone()); }); - let camera_id = make_orthographic_camera().with(main_scene(), ()).spawn(); + let camera_id = make_OrthographicCamera().with(main_scene(), ()).spawn(); Frame::subscribe(move |_| { let input = input::get(); diff --git a/guest/rust/packages/games/arkanoid/src/server.rs b/guest/rust/packages/games/arkanoid/src/server.rs index 10a6a8437c..12ede2df91 100644 --- a/guest/rust/packages/games/arkanoid/src/server.rs +++ b/guest/rust/packages/games/arkanoid/src/server.rs @@ -6,9 +6,9 @@ use ambient_api::{ messages::Frame, physics::components::linear_velocity, player::components::{is_player, user_id}, - primitives::{components::cube, concepts::make_sphere}, + primitives::{components::cube, concepts::make_Sphere}, rendering::components::color, - transform::{components::*, concepts::make_transformable}, + transform::{components::*, concepts::make_Transformable}, }, prelude::*, }; @@ -24,7 +24,7 @@ use packages::this::{ fn spawn_enemies(enemies: &mut Vec, y_pos: f32, color: Vec3) { for i in 0..7 { enemies.push( - make_transformable() + make_Transformable() .with(cube(), ()) .with(scale(), vec3(PADDLE_WIDTH, PADDLE_HEIGHT / 2., 1.)) .with(translation(), vec3(-1. + (i as f32 / 3.), y_pos, 0.)) @@ -64,14 +64,14 @@ pub fn main() { spawn_enemies(&mut enemies, 0.5, vec3(0.6, 0.8, 0.2)); //Spawn field - make_transformable() + make_Transformable() .with(cube(), ()) .with(scale(), vec3(X_BOUNDARY * 2.5, Y_BOUNDARY * 2.3, 1.)) .with(translation(), vec3(0., 0., 1.0)) .with(self::color(), vec4(1., 1., 1., 1.)) .spawn(); - make_transformable() + make_Transformable() .with(cube(), ()) .with( scale(), @@ -81,15 +81,15 @@ pub fn main() { .with(self::color(), vec4(0., 0., 0., 1.)) .spawn(); - let paddle = make_transformable() + let paddle = make_Transformable() .with(cube(), ()) .with(scale(), vec3(PADDLE_WIDTH, PADDLE_HEIGHT, 1.)) .with(translation(), vec3(0., -0.9, 0.)) .with(self::color(), vec4(0., 1., 1., 1.)) .spawn(); - let ball = make_transformable() - .with_merge(make_sphere()) + let ball = make_Transformable() + .with_merge(make_Sphere()) .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) .with(translation(), vec3(0., -0.9 + BALL_RADIUS, 0.)) .with(self::color(), vec4(1., 1., 1., 1.)) diff --git a/guest/rust/packages/games/minigolf/ambient.toml b/guest/rust/packages/games/minigolf/ambient.toml index 02859d55fe..60f50ec75e 100644 --- a/guest/rust/packages/games/minigolf/ambient.toml +++ b/guest/rust/packages/games/minigolf/ambient.toml @@ -34,24 +34,24 @@ player_camera_radius = { type = "F32", name = "Player Camera Radius", descriptio player_camera_rotation = { type = "Vec2", name = "Player Camera Rotation", description = "The rotation (radians) of a player's camera" } player_camera_state = { type = "EntityId", name = "Player Camera State", description = "EntityId of a player's camera state" } -[concepts.player_state] +[concepts.PlayerState] name = "Player State" description = "A player's state" -[concepts.player_state.components] -player_restore_point = [-5.0, 0.0, 20.0] -player_stroke_count = 0 -player_color = [1.0, 1.0, 1.0, 1.0] +[concepts.PlayerState.components.required] +player_restore_point = { suggested = [-5.0, 0.0, 20.0] } +player_stroke_count = { suggested = 0 } +player_color = { suggested = [1.0, 1.0, 1.0, 1.0] } -[concepts.player_camera_state] +[concepts.PlayerCameraState] name = "Player Camera State" description = "A player's camera state" -[concepts.player_camera_state.components] -player_camera_pivot = [0.0, 0.0, 8.0] -player_camera_position = [0.0, 0.0, 0.0] -player_camera_radius = 15.0 -player_camera_rotation = ["PI", 0.610865] +[concepts.PlayerCameraState.components.required] +player_camera_pivot = { suggested = [0.0, 0.0, 8.0] } +player_camera_position = { suggested = [0.0, 0.0, 0.0] } +player_camera_radius = { suggested = 15.0 } +player_camera_rotation = { suggested = ["PI", 0.610865] } [messages.Input] description = "Player input" diff --git a/guest/rust/packages/games/minigolf/src/server.rs b/guest/rust/packages/games/minigolf/src/server.rs index eee8ae7348..a617bfbf23 100644 --- a/guest/rust/packages/games/minigolf/src/server.rs +++ b/guest/rust/packages/games/minigolf/src/server.rs @@ -3,7 +3,7 @@ use ambient_api::{ app::components::main_scene, camera::{ components::{active_camera, aspect_ratio_from_window}, - concepts::make_perspective_infinite_reverse_camera, + concepts::make_PerspectiveInfiniteReverseCamera, }, ecs::components::children, messages::Collision, @@ -21,7 +21,7 @@ use ambient_api::{ inv_local_to_world, local_to_parent, local_to_world, mesh_to_local, mesh_to_world, rotation, scale, spherical_billboard, translation, }, - concepts::make_transformable, + concepts::make_Transformable, }, }, entity::resources, @@ -34,7 +34,7 @@ use packages::this::{ player_indicator, player_indicator_arrow, player_restore_point, player_shoot_requested, player_stroke_count, player_text, player_text_container, }, - concepts::{make_player_camera_state, make_player_state}, + concepts::{make_PlayerCameraState, make_PlayerState}, messages::{Bonk, Hit, Input}, }; use utils::CameraState; @@ -44,12 +44,12 @@ mod utils; const BALL_RADIUS: f32 = 0.34; fn create_environment() { - make_transformable() + make_Transformable() .with(water(), ()) .with(scale(), Vec3::ONE * 2000.) .spawn(); - make_transformable() + make_Transformable() .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-45_f32.to_radians())) .with(light_diffuse(), Vec3::ONE) @@ -57,14 +57,14 @@ fn create_environment() { .with(main_scene(), ()) .spawn(); - make_transformable().with(sky(), ()).spawn(); + make_Transformable().with(sky(), ()).spawn(); - make_transformable() + make_Transformable() .with(prefab_from_url(), assets::url("level.glb")) .with(translation(), Vec3::Z * -0.25) .spawn(); - make_transformable() + make_Transformable() .with(model_from_url(), assets::url("fan.glb")) .with(collider_from_url(), assets::url("fan.glb")) .with(kinematic(), ()) @@ -76,7 +76,7 @@ fn create_environment() { } fn make_golf_ball() -> Entity { - make_transformable() + make_Transformable() .with(is_ball(), ()) .with(physics_controlled(), ()) .with(dynamic(), true) @@ -119,12 +119,12 @@ pub fn main() { // 80 + 22.5; pseudo random color, with 16 being unique entity::mutate_component(resources(), next_player_hue(), |h| *h += 102.5); - entity::add_components(player, make_player_state()); + entity::add_components(player, make_PlayerState()); - let camera_state = make_player_camera_state().spawn(); + let camera_state = make_PlayerCameraState().spawn(); entity::add_component(player, player_camera_state(), camera_state); - make_perspective_infinite_reverse_camera() + make_PerspectiveInfiniteReverseCamera() .with(aspect_ratio_from_window(), EntityId::resources()) .with(user_id(), player_user_id.clone()) .with(player_camera_state(), camera_state) @@ -148,7 +148,7 @@ pub fn main() { entity::add_component( player, player_text_container(), - make_transformable() + make_Transformable() .with(main_scene(), ()) .with(local_to_world(), Default::default()) .with(spherical_billboard(), ()) @@ -170,7 +170,7 @@ pub fn main() { entity::add_component( player, player_indicator(), - make_transformable() + make_Transformable() .with(color(), next_color) .with(user_id(), player_user_id.clone()) .with(model_from_url(), assets::url("indicator.glb")) @@ -180,7 +180,7 @@ pub fn main() { entity::add_component( player, player_indicator_arrow(), - make_transformable() + make_Transformable() .with(color(), next_color) .with(user_id(), player_user_id.clone()) .with(model_from_url(), assets::url("indicator_arrow.glb")) @@ -191,7 +191,7 @@ pub fn main() { } }); - let flag = make_transformable() + let flag = make_Transformable() .with(model_from_url(), assets::url("flag.glb")) .with(collider_from_url(), assets::url("flag.glb")) .with(dynamic(), true) diff --git a/guest/rust/packages/games/pong/src/client.rs b/guest/rust/packages/games/pong/src/client.rs index 3a0d881e7b..bc9a65913c 100644 --- a/guest/rust/packages/games/pong/src/client.rs +++ b/guest/rust/packages/games/pong/src/client.rs @@ -5,7 +5,7 @@ use ambient_api::{ components::{ orthographic_bottom, orthographic_left, orthographic_right, orthographic_top, }, - concepts::make_orthographic_camera, + concepts::make_OrthographicCamera, }, messages::Frame, }, @@ -30,7 +30,7 @@ async fn main() { bgm_player.set_amplitude(0.2); bgm_player.play(url_from_server); - let camera_id = make_orthographic_camera().with(main_scene(), ()).spawn(); + let camera_id = make_OrthographicCamera().with(main_scene(), ()).spawn(); Frame::subscribe(move |_| { let input = input::get(); diff --git a/guest/rust/packages/games/pong/src/server.rs b/guest/rust/packages/games/pong/src/server.rs index 7c3abbc4ec..9999ed47c6 100644 --- a/guest/rust/packages/games/pong/src/server.rs +++ b/guest/rust/packages/games/pong/src/server.rs @@ -5,9 +5,9 @@ use ambient_api::{ messages::Frame, physics::components::linear_velocity, player::components::{is_player, user_id}, - primitives::{components::cube, concepts::make_sphere}, + primitives::{components::cube, concepts::make_Sphere}, rendering::components::color, - transform::{components::*, concepts::make_transformable}, + transform::{components::*, concepts::make_Transformable}, }, prelude::*, }; @@ -22,7 +22,7 @@ use constants::*; fn spawn_paddle(left: bool, paddle_color: Vec3) -> EntityId { let x = X_BOUNDARY + PADDLE_WIDTH / 2.; - make_transformable() + make_Transformable() .with(cube(), ()) .with(scale(), vec3(PADDLE_WIDTH, PADDLE_LENGTH, 1.)) .with(translation(), vec3(if left { -x } else { x }, 0., 0.)) @@ -46,7 +46,7 @@ pub fn main() { entity::add_component(entity::synchronized_resources(), track_audio_url(), bgm_url); // Spawn field, paddles and ball - make_transformable() + make_Transformable() .with(cube(), ()) .with(scale(), vec3(X_BOUNDARY * 2., Y_BOUNDARY * 2., 1.)) .with(translation(), vec3(0., 0., 1.)) @@ -56,8 +56,8 @@ pub fn main() { spawn_paddle(true, vec3(255., 0., 0.)), spawn_paddle(false, vec3(0., 255., 0.)), ]; - let ball = make_transformable() - .with_merge(make_sphere()) + let ball = make_Transformable() + .with_merge(make_Sphere()) .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) .with(translation(), vec3(0., 0., -1.)) .with(color(), vec4(255., 255., 255., 1.)) diff --git a/guest/rust/packages/games/tangent/core/src/client.rs b/guest/rust/packages/games/tangent/core/src/client.rs index 1fe79ec765..df9cdcf39c 100644 --- a/guest/rust/packages/games/tangent/core/src/client.rs +++ b/guest/rust/packages/games/tangent/core/src/client.rs @@ -3,7 +3,7 @@ use ambient_api::{ app::components::{main_scene, name}, camera::{ components::{aspect_ratio_from_window, fog, fovy}, - concepts::make_perspective_infinite_reverse_camera, + concepts::make_PerspectiveInfiniteReverseCamera, }, ecs::components::{children, parent}, messages::Frame, @@ -16,7 +16,7 @@ use ambient_api::{ local_to_parent, local_to_world, lookat_target, mesh_to_local, mesh_to_world, rotation, scale, translation, }, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -33,7 +33,7 @@ const RENDER_DEBUG: bool = false; #[main] pub fn main() { let camera_id = Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(fog(), ()) @@ -44,7 +44,7 @@ pub fn main() { spawn_query(vehicle()).bind(move |vehicles| { for (id, _) in vehicles { let hud_id = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(local_to_world(), Default::default()) .with(local_to_parent(), Default::default()) .with(mesh_to_local(), Default::default()) diff --git a/guest/rust/packages/games/tangent/core/src/server.rs b/guest/rust/packages/games/tangent/core/src/server.rs index 911345ec72..0d80890f54 100644 --- a/guest/rust/packages/games/tangent/core/src/server.rs +++ b/guest/rust/packages/games/tangent/core/src/server.rs @@ -13,7 +13,7 @@ use ambient_api::{ }, transform::{ components::{rotation, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -70,7 +70,7 @@ pub fn main() { fn make_water() { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(water(), ()) .with(physics_controlled(), ()) .with(plane_collider(), ()) @@ -81,12 +81,12 @@ fn make_water() { fn make_sun() { Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sky(), ()) .spawn(); Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Default::default()) .with(main_scene(), ()) @@ -102,7 +102,7 @@ fn vehicle_creation_and_destruction() { spawn_query(is_player()).bind(|players| { for (player_id, ()) in players { let vehicle_id = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cast_shadows(), ()) .with(linear_velocity(), Default::default()) .with(angular_velocity(), Default::default()) diff --git a/guest/rust/packages/games/tictactoe/src/server.rs b/guest/rust/packages/games/tictactoe/src/server.rs index a085c07b50..2f65250d87 100644 --- a/guest/rust/packages/games/tictactoe/src/server.rs +++ b/guest/rust/packages/games/tictactoe/src/server.rs @@ -2,15 +2,14 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, }, player::components::is_player, primitives::components::cube, rendering::components::color, transform::{ components::{lookat_target, scale, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -27,7 +26,7 @@ use packages::this::{ #[main] pub fn main() { Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), entity::resources()) .with(main_scene(), ()) .with(translation(), vec3(SIZE as f32, SIZE as f32, SIZE as f32)) @@ -42,7 +41,7 @@ pub fn main() { for y in 0..SIZE { for x in 0..SIZE { let id = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), vec3(x as f32, y as f32, 0.)) .with(scale(), vec3(0.6, 0.6, 0.6)) diff --git a/guest/rust/packages/tools/editor/src/server.rs b/guest/rust/packages/tools/editor/src/server.rs index f1e52185d1..f5a4903839 100644 --- a/guest/rust/packages/tools/editor/src/server.rs +++ b/guest/rust/packages/tools/editor/src/server.rs @@ -5,7 +5,7 @@ use ambient_api::{ app::components::{main_scene, name}, camera::{ components::{active_camera, aspect_ratio_from_window}, - concepts::make_perspective_infinite_reverse_camera, + concepts::make_PerspectiveInfiniteReverseCamera, }, physics::components::dynamic, player::components::user_id, @@ -58,7 +58,7 @@ pub fn main() { .unwrap_or_else(|| vec2(0.0, PI / 2.)); let camera_id = Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(user_id(), player_user_id) From d79d881de5694283662e74e6f3e6f01a75de9a7a Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 14:03:11 +0200 Subject: [PATCH 05/35] feat(semantic): ensure resolves only occur once --- .../package_semantic/src/attribute.rs | 4 +++ .../package_semantic/src/component.rs | 9 +++++ shared_crates/package_semantic/src/concept.rs | 35 +++++++++++-------- shared_crates/package_semantic/src/item.rs | 11 ++++-- shared_crates/package_semantic/src/lib.rs | 1 + shared_crates/package_semantic/src/message.rs | 8 +++++ shared_crates/package_semantic/src/package.rs | 9 ++++- shared_crates/package_semantic/src/scope.rs | 15 +++++--- shared_crates/package_semantic/src/type_.rs | 4 +++ 9 files changed, 73 insertions(+), 23 deletions(-) diff --git a/shared_crates/package_semantic/src/attribute.rs b/shared_crates/package_semantic/src/attribute.rs index 6dfcaf3d50..7e1ecf45c2 100644 --- a/shared_crates/package_semantic/src/attribute.rs +++ b/shared_crates/package_semantic/src/attribute.rs @@ -44,4 +44,8 @@ impl Resolve for Attribute { ) -> anyhow::Result { Ok(self) } + + fn already_resolved(&self) -> bool { + true + } } diff --git a/shared_crates/package_semantic/src/component.rs b/shared_crates/package_semantic/src/component.rs index 6b7fb787ab..5461bcf0af 100644 --- a/shared_crates/package_semantic/src/component.rs +++ b/shared_crates/package_semantic/src/component.rs @@ -15,6 +15,8 @@ pub struct Component { pub type_: ResolvableItemId, pub attributes: Vec>, pub default: Option, + + resolved: bool, } impl Item for Component { const TYPE: ItemType = ItemType::Component; @@ -92,8 +94,14 @@ impl Resolve for Component { default.resolve_in_place(items, type_id)?; } + self.resolved = true; + Ok(self) } + + fn already_resolved(&self) -> bool { + self.resolved + } } impl Component { pub(crate) fn from_package(data: ItemData, value: &ambient_package::Component) -> Self { @@ -111,6 +119,7 @@ impl Component { .default .as_ref() .map(|v| ResolvableValue::Unresolved(v.clone())), + resolved: false, } } } diff --git a/shared_crates/package_semantic/src/concept.rs b/shared_crates/package_semantic/src/concept.rs index 681015bef0..9f088d8f2c 100644 --- a/shared_crates/package_semantic/src/concept.rs +++ b/shared_crates/package_semantic/src/concept.rs @@ -12,6 +12,7 @@ type ComponentMap = IndexMap, ConceptValue>; #[derive(Clone, PartialEq, Debug)] pub struct Concept { data: ItemData, + resolved: bool, pub name: Option, pub description: Option, @@ -55,21 +56,18 @@ impl Resolve for Concept { ) -> anyhow::Result { let mut extends = vec![]; for extend in &self.extends { - extends.push(match extend { - ResolvableItemId::Unresolved(path) => { - let id = context - .get_concept_id(items, path.as_path()) - .map_err(|e| e.into_owned()) - .with_context(|| { - format!( - "Failed to resolve concept `{}` for concept `{}", - path, self.data.id - ) - })?; - ResolvableItemId::Resolved(id) - } - t => t.clone(), - }); + extends.push(ResolvableItemId::Resolved(match extend { + ResolvableItemId::Unresolved(path) => context + .get_concept_id(items, path.as_path()) + .map_err(|e| e.into_owned()) + .with_context(|| { + format!( + "Failed to resolve concept `{}` for concept `{}`", + path, self.data.id + ) + })?, + ResolvableItemId::Resolved(id) => *id, + })); } self.extends = extends; @@ -78,8 +76,14 @@ impl Resolve for Concept { resolve_components(&self.data.id, items, context, definitions, components)?; } + self.resolved = true; + Ok(self) } + + fn already_resolved(&self) -> bool { + self.resolved + } } impl Concept { pub(crate) fn from_package(data: ItemData, value: &ambient_package::Concept) -> Self { @@ -114,6 +118,7 @@ impl Concept { ) }) .collect(), + resolved: false, } } } diff --git a/shared_crates/package_semantic/src/item.rs b/shared_crates/package_semantic/src/item.rs index fdc590a383..9b8f34627f 100644 --- a/shared_crates/package_semantic/src/item.rs +++ b/shared_crates/package_semantic/src/item.rs @@ -101,9 +101,12 @@ impl ItemMap { definitions: &StandardDefinitions, id: ItemId, ) -> anyhow::Result<&mut T> { - let item = self.get(id).clone(); - let new_item = item.resolve(self, context, definitions, id)?; - self.insert(id, new_item); + let item = self.get(id); + if !item.already_resolved() { + let item = item.clone(); + let new_item = item.resolve(self, context, definitions, id)?; + self.insert(id, new_item); + } Ok(self.get_mut(id)) } @@ -326,6 +329,8 @@ pub(crate) trait Resolve: Item { definitions: &StandardDefinitions, self_id: ItemId, ) -> anyhow::Result; + + fn already_resolved(&self) -> bool; } pub struct ItemId(Ulid, PhantomData); diff --git a/shared_crates/package_semantic/src/lib.rs b/shared_crates/package_semantic/src/lib.rs index 543e25f298..858006ac91 100644 --- a/shared_crates/package_semantic/src/lib.rs +++ b/shared_crates/package_semantic/src/lib.rs @@ -135,6 +135,7 @@ impl Semantic { dependencies: HashMap::new(), scope_id, dependent_package_id, + resolved: false, }; let id = self.items.add(package); diff --git a/shared_crates/package_semantic/src/message.rs b/shared_crates/package_semantic/src/message.rs index b85f58c6c7..e6677d7bf6 100644 --- a/shared_crates/package_semantic/src/message.rs +++ b/shared_crates/package_semantic/src/message.rs @@ -13,6 +13,8 @@ pub struct Message { pub description: Option, pub fields: IndexMap>, + + resolved: bool, } impl Item for Message { @@ -65,9 +67,14 @@ impl Resolve for Message { ); } self.fields = fields; + self.resolved = true; Ok(self) } + + fn already_resolved(&self) -> bool { + self.resolved + } } impl Message { @@ -80,6 +87,7 @@ impl Message { .iter() .map(|(k, v)| (k.clone(), ResolvableItemId::Unresolved(v.clone()))) .collect(), + resolved: false, } } } diff --git a/shared_crates/package_semantic/src/package.rs b/shared_crates/package_semantic/src/package.rs index 56475037c4..700fd82345 100644 --- a/shared_crates/package_semantic/src/package.rs +++ b/shared_crates/package_semantic/src/package.rs @@ -153,6 +153,8 @@ pub struct Package { pub scope_id: ItemId, /// The package that this package was imported from, if any pub dependent_package_id: Option>, + + pub(super) resolved: bool, } impl Item for Package { const TYPE: ItemType = ItemType::Package; @@ -183,15 +185,20 @@ impl Item for Package { } impl Resolve for Package { fn resolve( - self, + mut self, items: &mut ItemMap, context: &Context, definitions: &StandardDefinitions, _self_id: ItemId, ) -> anyhow::Result { items.resolve(context, definitions, self.scope_id)?; + self.resolved = true; Ok(self) } + + fn already_resolved(&self) -> bool { + self.resolved + } } #[derive(Clone, PartialEq, Debug)] diff --git a/shared_crates/package_semantic/src/scope.rs b/shared_crates/package_semantic/src/scope.rs index 0228e0ff7a..fc7ae61bd5 100644 --- a/shared_crates/package_semantic/src/scope.rs +++ b/shared_crates/package_semantic/src/scope.rs @@ -20,6 +20,8 @@ pub struct Scope { pub messages: IndexMap>, pub types: IndexMap>, pub attributes: IndexMap>, + + resolved: bool, } impl std::fmt::Debug for Scope { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { @@ -79,7 +81,7 @@ impl Item for Scope { /// of their children, so we need to clone the scope to avoid a double-borrow. impl Resolve for Scope { fn resolve( - self, + mut self, items: &mut ItemMap, context: &Context, definitions: &StandardDefinitions, @@ -101,17 +103,21 @@ impl Resolve for Scope { let mut context = context.clone(); context.push(self_id); - for id in self.scopes.values() { - items.resolve(&context, definitions, *id)?; - } + resolve(items, &context, definitions, &self.scopes)?; resolve(items, &context, definitions, &self.components)?; resolve(items, &context, definitions, &self.concepts)?; resolve(items, &context, definitions, &self.messages)?; resolve(items, &context, definitions, &self.types)?; resolve(items, &context, definitions, &self.attributes)?; + self.resolved = true; + Ok(self) } + + fn already_resolved(&self) -> bool { + self.resolved + } } impl Scope { /// Creates a new empty scope with the specified data. @@ -125,6 +131,7 @@ impl Scope { messages: Default::default(), types: Default::default(), attributes: Default::default(), + resolved: false, } } diff --git a/shared_crates/package_semantic/src/type_.rs b/shared_crates/package_semantic/src/type_.rs index 9f9e2245c4..4631480f69 100644 --- a/shared_crates/package_semantic/src/type_.rs +++ b/shared_crates/package_semantic/src/type_.rs @@ -98,6 +98,10 @@ impl Resolve for Type { ) -> anyhow::Result { Ok(self) } + + fn already_resolved(&self) -> bool { + true + } } #[derive(Clone, PartialEq, Eq, Debug)] From 85780ff66c86b95a280642bb2d215290ee8132b1 Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 14:17:45 +0200 Subject: [PATCH 06/35] feat(semantic): resolve all dependencies first --- shared_crates/package_semantic/src/package.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/shared_crates/package_semantic/src/package.rs b/shared_crates/package_semantic/src/package.rs index 700fd82345..dec8fe5747 100644 --- a/shared_crates/package_semantic/src/package.rs +++ b/shared_crates/package_semantic/src/package.rs @@ -191,6 +191,12 @@ impl Resolve for Package { definitions: &StandardDefinitions, _self_id: ItemId, ) -> anyhow::Result { + // Ensure all dependencies are resolved first, so that we can use them + // when resolving ourselves + for dependency in self.dependencies.values_mut() { + items.resolve(context, definitions, dependency.id)?; + } + items.resolve(context, definitions, self.scope_id)?; self.resolved = true; Ok(self) From 4f9e2221f4f6cb23f5c96aa5986e5dd61b6ccdf6 Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 16:26:49 +0200 Subject: [PATCH 07/35] refactor(semantic): remove Context, shuffle around --- app/src/cli/build.rs | 2 +- crates/package_semantic_native/src/lib.rs | 2 +- .../games/afps/core/fpsmodel/src/server.rs | 2 +- shared_crates/package_macro_common/src/lib.rs | 2 +- .../examples/parse_manifest.rs | 2 +- .../package_semantic/src/attribute.rs | 12 +- .../package_semantic/src/component.rs | 34 ++- shared_crates/package_semantic/src/concept.rs | 34 ++- shared_crates/package_semantic/src/item.rs | 36 +-- shared_crates/package_semantic/src/lib.rs | 200 ++++++++++++++++- shared_crates/package_semantic/src/message.rs | 15 +- shared_crates/package_semantic/src/package.rs | 15 +- shared_crates/package_semantic/src/scope.rs | 206 +----------------- shared_crates/package_semantic/src/type_.rs | 13 +- 14 files changed, 251 insertions(+), 324 deletions(-) diff --git a/app/src/cli/build.rs b/app/src/cli/build.rs index 3bfd023589..e7b6dfc55f 100644 --- a/app/src/cli/build.rs +++ b/app/src/cli/build.rs @@ -105,7 +105,7 @@ pub async fn build< .add_package(RetrievableFile::Url(main_manifest_url.0.clone()), None) .await?; semantic - .resolve() + .resolve_all() .context("Failed to resolve dependencies for pre-build")?; semantic diff --git a/crates/package_semantic_native/src/lib.rs b/crates/package_semantic_native/src/lib.rs index 909cfa9212..5aa31425e6 100644 --- a/crates/package_semantic_native/src/lib.rs +++ b/crates/package_semantic_native/src/lib.rs @@ -215,7 +215,7 @@ pub async fn add_to_semantic_and_register_components( .add_package(RetrievableFile::Url(url.0.clone()), None) .await?; - semantic.resolve()?; + semantic.resolve_all()?; ComponentRegistry::get_mut().add_external(all_defined_components(semantic)?); Ok(id) diff --git a/guest/rust/packages/games/afps/core/fpsmodel/src/server.rs b/guest/rust/packages/games/afps/core/fpsmodel/src/server.rs index 776248fd33..6508531f5c 100644 --- a/guest/rust/packages/games/afps/core/fpsmodel/src/server.rs +++ b/guest/rust/packages/games/afps/core/fpsmodel/src/server.rs @@ -55,7 +55,7 @@ pub async fn main() { .spawn(); let head = Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(local_to_parent(), Default::default()) .with(parent(), id) .with(translation(), Vec3::Z * 2.) diff --git a/shared_crates/package_macro_common/src/lib.rs b/shared_crates/package_macro_common/src/lib.rs index 78d14dfe9c..8344ee8ebc 100644 --- a/shared_crates/package_macro_common/src/lib.rs +++ b/shared_crates/package_macro_common/src/lib.rs @@ -27,7 +27,7 @@ pub async fn generate_code( None }; - semantic.resolve()?; + semantic.resolve_all()?; let items = &semantic.items; let root_scope = &*semantic.root_scope(); diff --git a/shared_crates/package_semantic/examples/parse_manifest.rs b/shared_crates/package_semantic/examples/parse_manifest.rs index d7c7788eef..218cadfdda 100644 --- a/shared_crates/package_semantic/examples/parse_manifest.rs +++ b/shared_crates/package_semantic/examples/parse_manifest.rs @@ -24,7 +24,7 @@ async fn main() -> anyhow::Result<()> { let mut printer = Printer::new(); if should_resolve { - semantic.resolve()?; + semantic.resolve_all()?; } printer.print(&semantic)?; diff --git a/shared_crates/package_semantic/src/attribute.rs b/shared_crates/package_semantic/src/attribute.rs index 7e1ecf45c2..1400da039c 100644 --- a/shared_crates/package_semantic/src/attribute.rs +++ b/shared_crates/package_semantic/src/attribute.rs @@ -1,8 +1,6 @@ use ambient_package::ItemPathBuf; -use crate::{ - Context, Item, ItemData, ItemId, ItemMap, ItemType, ItemValue, Resolve, StandardDefinitions, -}; +use crate::{Item, ItemData, ItemId, ItemType, ItemValue, Resolve, Semantic}; #[derive(Clone, PartialEq, Debug)] pub struct Attribute { @@ -35,13 +33,7 @@ impl Item for Attribute { } } impl Resolve for Attribute { - fn resolve( - self, - _items: &mut ItemMap, - _context: &Context, - _definitions: &StandardDefinitions, - _self_id: ItemId, - ) -> anyhow::Result { + fn resolve(self, _semantic: &mut Semantic, _self_id: ItemId) -> anyhow::Result { Ok(self) } diff --git a/shared_crates/package_semantic/src/component.rs b/shared_crates/package_semantic/src/component.rs index 5461bcf0af..af7066617e 100644 --- a/shared_crates/package_semantic/src/component.rs +++ b/shared_crates/package_semantic/src/component.rs @@ -2,8 +2,8 @@ use ambient_package::ItemPathBuf; use anyhow::Context as AnyhowContext; use crate::{ - Attribute, Context, Item, ItemData, ItemId, ItemMap, ItemType, ItemValue, ResolvableItemId, - ResolvableValue, Resolve, StandardDefinitions, Type, + Attribute, Item, ItemData, ItemId, ItemType, ItemValue, ResolvableItemId, ResolvableValue, + Resolve, Semantic, Type, }; #[derive(Clone, PartialEq, Debug)] @@ -45,22 +45,18 @@ impl Item for Component { } } impl Resolve for Component { - fn resolve( - mut self, - items: &mut ItemMap, - context: &Context, - definitions: &StandardDefinitions, - _self_id: ItemId, - ) -> anyhow::Result { + fn resolve(mut self, semantic: &mut Semantic, _self_id: ItemId) -> anyhow::Result { + let parent_id = self.data.parent_id.unwrap(); + let type_id = match &self.type_ { - ResolvableItemId::Unresolved(ty) => { - context.get_type_id(items, ty).with_context(|| { + ResolvableItemId::Unresolved(ty) => semantic + .get_contextual_type_id(parent_id, ty) + .with_context(|| { format!( "Failed to resolve type `{ty:?}` for component `{}`", self.data.id ) - })? - } + })?, ResolvableItemId::Resolved(id) => *id, }; self.type_ = ResolvableItemId::Resolved(type_id); @@ -69,8 +65,8 @@ impl Resolve for Component { for attribute in &self.attributes { attributes.push(match attribute { ResolvableItemId::Unresolved(path) => { - let id = context - .get_attribute_id(items, path.as_path()) + let id = semantic + .get_contextual_attribute_id(parent_id, path.as_path()) .map_err(|e| e.into_owned()) .with_context(|| { format!( @@ -85,13 +81,15 @@ impl Resolve for Component { } // If this is an enum, emit the `Enum` attribute - if items.get(type_id).inner.as_enum().is_some() { - attributes.push(ResolvableItemId::Resolved(definitions.attributes.enum_)); + if semantic.items.get(type_id).inner.as_enum().is_some() { + attributes.push(ResolvableItemId::Resolved( + semantic.standard_definitions.attributes.enum_, + )); } self.attributes = attributes; if let Some(default) = &mut self.default { - default.resolve_in_place(items, type_id)?; + default.resolve_in_place(&semantic.items, type_id)?; } self.resolved = true; diff --git a/shared_crates/package_semantic/src/concept.rs b/shared_crates/package_semantic/src/concept.rs index 9f088d8f2c..56f2436585 100644 --- a/shared_crates/package_semantic/src/concept.rs +++ b/shared_crates/package_semantic/src/concept.rs @@ -3,8 +3,8 @@ use anyhow::Context as AnyhowContext; use indexmap::IndexMap; use crate::{ - Component, Context, Item, ItemData, ItemId, ItemMap, ItemType, ItemValue, ResolvableItemId, - ResolvableValue, Resolve, StandardDefinitions, + Component, Item, ItemData, ItemId, ItemType, ItemValue, ResolvableItemId, ResolvableValue, + Resolve, Scope, Semantic, }; type ComponentMap = IndexMap, ConceptValue>; @@ -47,18 +47,14 @@ impl Item for Concept { } } impl Resolve for Concept { - fn resolve( - mut self, - items: &mut ItemMap, - context: &Context, - definitions: &StandardDefinitions, - _self_id: ItemId, - ) -> anyhow::Result { + fn resolve(mut self, semantic: &mut Semantic, _self_id: ItemId) -> anyhow::Result { + let parent_id = self.data.parent_id.unwrap(); + let mut extends = vec![]; for extend in &self.extends { extends.push(ResolvableItemId::Resolved(match extend { - ResolvableItemId::Unresolved(path) => context - .get_concept_id(items, path.as_path()) + ResolvableItemId::Unresolved(path) => semantic + .get_contextual_concept_id(parent_id, path.as_path()) .map_err(|e| e.into_owned()) .with_context(|| { format!( @@ -72,8 +68,7 @@ impl Resolve for Concept { self.extends = extends; for components in [&mut self.required_components, &mut self.optional_components] { - *components = - resolve_components(&self.data.id, items, context, definitions, components)?; + *components = resolve_components(parent_id, &self.data.id, semantic, components)?; } self.resolved = true; @@ -138,17 +133,16 @@ impl ConceptValue { } fn resolve_components( + parent_id: ItemId, concept_id: &Identifier, - items: &mut ItemMap, - context: &Context, - definitions: &StandardDefinitions, + semantic: &mut Semantic, unresolved_components: &ComponentMap, ) -> anyhow::Result { let mut components = IndexMap::new(); for (resolvable_component, resolvable_value) in unresolved_components { let component_id = match resolvable_component { - ResolvableItemId::Unresolved(path) => context - .get_component_id(items, path.as_path()) + ResolvableItemId::Unresolved(path) => semantic + .get_contextual_component_id(parent_id, path.as_path()) .map_err(|e| e.into_owned()) .with_context(|| { format!( @@ -159,7 +153,7 @@ fn resolve_components( ResolvableItemId::Resolved(id) => *id, }; let component_type = { - let component = items.resolve(context, definitions, component_id)?; + let component = semantic.resolve(component_id)?; component.type_.as_resolved().with_context(|| { format!( "Failed to get type for component `{}` for concept `{}`", @@ -171,7 +165,7 @@ fn resolve_components( let mut value = resolvable_value.clone(); if let Some(suggested) = value.suggested.as_mut() { - suggested.resolve_in_place(items, component_type)?; + suggested.resolve_in_place(&semantic.items, component_type)?; } components.insert(ResolvableItemId::Resolved(component_id), value); } diff --git a/shared_crates/package_semantic/src/item.rs b/shared_crates/package_semantic/src/item.rs index 9b8f34627f..53d823fa6b 100644 --- a/shared_crates/package_semantic/src/item.rs +++ b/shared_crates/package_semantic/src/item.rs @@ -9,15 +9,12 @@ use ambient_std::topological_sort::{topological_sort, TopologicalSortable}; use thiserror::Error; use ulid::Ulid; -use crate::{ - Attribute, Component, Concept, Context, Message, Package, Scope, StandardDefinitions, Type, - TypeInner, -}; +use crate::{Attribute, Component, Concept, Message, Package, Scope, Type, TypeInner}; #[derive(Error, Debug)] pub enum GetScopeError { #[error( - "failed to find scope `{segment}` in scope `{scope_path}` while searching for `{path:?}`" + "Failed to find scope `{segment}` in scope `{scope_path}` while searching for `{path:?}`" )] NotFound { segment: SnakeCaseIdentifier, @@ -94,22 +91,6 @@ impl ItemMap { self.items.insert(id.0, item.into_item_value()); } - /// Resolve the item with the given id by cloning it, avoiding borrowing issues. - pub(crate) fn resolve( - &mut self, - context: &Context, - definitions: &StandardDefinitions, - id: ItemId, - ) -> anyhow::Result<&mut T> { - let item = self.get(id); - if !item.already_resolved() { - let item = item.clone(); - let new_item = item.resolve(self, context, definitions, id)?; - self.insert(id, new_item); - } - Ok(self.get_mut(id)) - } - pub fn get_vec_id(&self, id: ItemId) -> ItemId { self.vec_items.get(&id).copied().unwrap() } @@ -320,19 +301,6 @@ pub trait Item: Clone { fn data(&self) -> &ItemData; } -/// This item supports being resolved by cloning. -pub(crate) trait Resolve: Item { - fn resolve( - self, - items: &mut ItemMap, - context: &Context, - definitions: &StandardDefinitions, - self_id: ItemId, - ) -> anyhow::Result; - - fn already_resolved(&self) -> bool; -} - pub struct ItemId(Ulid, PhantomData); impl std::hash::Hash for ItemId { fn hash(&self, state: &mut H) { diff --git a/shared_crates/package_semantic/src/lib.rs b/shared_crates/package_semantic/src/lib.rs index 858006ac91..c38af8fb6d 100644 --- a/shared_crates/package_semantic/src/lib.rs +++ b/shared_crates/package_semantic/src/lib.rs @@ -8,18 +8,18 @@ use anyhow::Context as AnyhowContext; use async_recursion::async_recursion; use ambient_package::{ - BuildMetadata, Identifier, Manifest, PascalCaseIdentifier, SnakeCaseIdentifier, + BuildMetadata, ComponentType, Identifier, ItemPath, ItemPathBuf, Manifest, + PascalCaseIdentifier, SnakeCaseIdentifier, }; use ambient_shared_types::primitive_component_definitions; mod scope; -pub use scope::{Context, Scope}; +pub use scope::Scope; mod package; pub use package::{Dependency, LocalOrRemote, Package, PackageLocator, RetrievableFile}; mod item; -use item::Resolve; pub use item::{ Item, ItemData, ItemId, ItemMap, ItemSource, ItemType, ItemValue, ResolvableItemId, }; @@ -37,6 +37,7 @@ mod primitive_type; pub use primitive_type::PrimitiveType; mod type_; +use thiserror::Error; pub use type_::{Enum, Type, TypeInner}; mod message; @@ -187,7 +188,7 @@ impl Semantic { Ok(id) } - pub fn resolve(&mut self) -> anyhow::Result<()> { + pub fn resolve_all(&mut self) -> anyhow::Result<()> { let mut seen_locators = HashMap::new(); for locator in self.packages.keys() { if let Some(present) = seen_locators.insert(locator.id.clone(), locator.clone()) { @@ -212,12 +213,9 @@ impl Semantic { } } - for package_id in self.packages.values().copied() { - self.items.resolve( - &Context::new(self.root_scope_id), - &self.standard_definitions, - package_id, - )?; + let package_ids = self.packages.values().copied().collect::>(); + for package_id in package_ids { + self.resolve(package_id)?; } Ok(()) @@ -231,6 +229,100 @@ impl Semantic { self.root_scope().scopes.get(name).copied() } } +impl Semantic { + /// Resolve the item with the given id by cloning it, avoiding borrowing issues. + pub(crate) fn resolve(&mut self, id: ItemId) -> anyhow::Result<&mut T> { + let item = self.items.get(id); + if !item.already_resolved() { + let item = item.clone(); + let new_item = item.resolve(self, id)?; + self.items.insert(id, new_item); + } + Ok(self.items.get_mut(id)) + } + + /// Walks upwards from `start_scope` to find the first type located at `path`. + fn get_contextual( + &self, + start_scope: ItemId, + getter: impl Fn(ItemId) -> Option>, + ) -> Option> { + let mut context_scope_id = Some(start_scope); + while let Some(scope_id) = context_scope_id { + if let Some(id) = getter(scope_id) { + return Some(id); + } + context_scope_id = self.items.get(scope_id).data().parent_id; + } + if let Some(id) = getter(self.root_scope_id) { + return Some(id); + } + None + } + + /// Walks upwards from `start_scope` to find the first type located at `path`. + pub(crate) fn get_contextual_type_id( + &self, + start_scope: ItemId, + component_type: &ComponentType, + ) -> Option> { + self.get_contextual(start_scope, |scope_id| match component_type { + ComponentType::Item(id) => get_type_id(&self.items, scope_id, id.as_path()), + ComponentType::Contained { + type_, + element_type, + } => get_type_id(&self.items, scope_id, element_type.as_path()).map(|id| match type_ { + ambient_package::ContainerType::Vec => self.items.get_vec_id(id), + ambient_package::ContainerType::Option => self.items.get_option_id(id), + }), + }) + } + + /// Walks upwards from `start_scope` to find the first attribute located at `path`. + pub(crate) fn get_contextual_attribute_id<'a>( + &self, + start_scope: ItemId, + path: ItemPath<'a>, + ) -> Result, ContextGetError<'a>> { + self.get_contextual(start_scope, |scope_id| { + get_attribute_id(&self.items, scope_id, path) + }) + .ok_or_else(|| ContextGetError::NotFound { + path, + type_: ItemType::Attribute, + }) + } + + /// Walks upwards from `start_scope` to find the first concept located at `path`. + pub(crate) fn get_contextual_concept_id<'a>( + &self, + start_scope: ItemId, + path: ItemPath<'a>, + ) -> Result, ContextGetError<'a>> { + self.get_contextual(start_scope, |scope_id| { + get_concept_id(&self.items, scope_id, path) + }) + .ok_or_else(|| ContextGetError::NotFound { + path, + type_: ItemType::Concept, + }) + } + + /// Walks upwards from `start_scope` to find the first component located at `path`. + pub(crate) fn get_contextual_component_id<'a>( + &self, + start_scope: ItemId, + path: ItemPath<'a>, + ) -> Result, ContextGetError<'a>> { + self.get_contextual(start_scope, |scope_id| { + get_component_id(&self.items, scope_id, path) + }) + .ok_or_else(|| ContextGetError::NotFound { + path, + type_: ItemType::Component, + }) + } +} impl Semantic { #[cfg_attr(not(target_os = "unknown"), async_recursion)] #[cfg_attr(target_os = "unknown", async_recursion(?Send))] @@ -455,3 +547,91 @@ pub fn package_dependency_to_retrievable_file( } }) } + +/// This item supports being resolved by cloning. +pub(crate) trait Resolve: Item { + fn resolve(self, items: &mut Semantic, self_id: ItemId) -> anyhow::Result; + fn already_resolved(&self) -> bool; +} + +fn get_type_id( + items: &ItemMap, + self_scope_id: ItemId, + path: ItemPath, +) -> Option> { + let (scope, item) = path.scope_and_item(); + items + .get_scope(self_scope_id, scope) + .ok()? + .types + .get(item.as_pascal().ok()?) + .copied() +} + +fn get_attribute_id( + items: &ItemMap, + self_scope_id: ItemId, + path: ItemPath, +) -> Option> { + let (scope, item) = path.scope_and_item(); + items + .get_scope(self_scope_id, scope) + .ok()? + .attributes + .get(item.as_pascal().ok()?) + .copied() +} + +fn get_concept_id( + items: &ItemMap, + self_scope_id: ItemId, + path: ItemPath, +) -> Option> { + let (scope, item) = path.scope_and_item(); + items + .get_scope(self_scope_id, scope) + .ok()? + .concepts + .get(item.as_pascal().ok()?) + .copied() +} + +fn get_component_id( + items: &ItemMap, + self_scope_id: ItemId, + path: ItemPath, +) -> Option> { + let (scope, item) = path.scope_and_item(); + items + .get_scope(self_scope_id, scope) + .ok()? + .components + .get(item.as_snake().ok()?) + .copied() +} + +#[derive(Error, Debug)] +pub enum ContextGetError<'a> { + #[error("Failed to find {path} ({type_})")] + NotFound { path: ItemPath<'a>, type_: ItemType }, +} +impl ContextGetError<'_> { + pub fn into_owned(self) -> ContextGetOwnedError { + self.into() + } +} +#[derive(Error, Debug)] +pub enum ContextGetOwnedError { + #[error("Failed to find {path} ({type_})")] + NotFound { path: ItemPathBuf, type_: ItemType }, +} +impl From> for ContextGetOwnedError { + fn from(error: ContextGetError) -> Self { + match error { + ContextGetError::NotFound { path, type_ } => Self::NotFound { + path: path.to_owned(), + type_, + }, + } + } +} diff --git a/shared_crates/package_semantic/src/message.rs b/shared_crates/package_semantic/src/message.rs index e6677d7bf6..aa56ba2b8f 100644 --- a/shared_crates/package_semantic/src/message.rs +++ b/shared_crates/package_semantic/src/message.rs @@ -3,8 +3,7 @@ use anyhow::Context as AnyhowContext; use indexmap::IndexMap; use crate::{ - Context, Item, ItemData, ItemId, ItemMap, ItemType, ItemValue, ResolvableItemId, Resolve, - StandardDefinitions, Type, + Item, ItemData, ItemId, ItemType, ItemValue, ResolvableItemId, Resolve, Semantic, Type, }; #[derive(Clone, PartialEq, Debug)] @@ -44,20 +43,16 @@ impl Item for Message { } } impl Resolve for Message { - fn resolve( - mut self, - items: &mut ItemMap, - context: &Context, - _definitions: &StandardDefinitions, - _self_id: ItemId, - ) -> anyhow::Result { + fn resolve(mut self, semantic: &mut Semantic, _self_id: ItemId) -> anyhow::Result { + let parent_id = self.data.parent_id.unwrap(); + let mut fields = IndexMap::new(); for (name, type_) in &self.fields { fields.insert( name.clone(), match type_ { ResolvableItemId::Unresolved(path) => { - let id = context.get_type_id(items, path).with_context(|| { + let id = semantic.get_contextual_type_id(parent_id, path).with_context(|| { format!("Failed to resolve type `{path:?}` for field `{name}` of message `{}`", self.data.id) })?; ResolvableItemId::Resolved(id) diff --git a/shared_crates/package_semantic/src/package.rs b/shared_crates/package_semantic/src/package.rs index dec8fe5747..bf37ecd78d 100644 --- a/shared_crates/package_semantic/src/package.rs +++ b/shared_crates/package_semantic/src/package.rs @@ -10,8 +10,7 @@ use anyhow::Context as AnyhowContext; use url::Url; use crate::{ - item::Resolve, schema, util::read_file, Context, Item, ItemData, ItemId, ItemMap, ItemType, - ItemValue, Scope, StandardDefinitions, + schema, util::read_file, Item, ItemData, ItemId, ItemType, ItemValue, Resolve, Scope, Semantic, }; use semver::Version; @@ -184,20 +183,14 @@ impl Item for Package { } } impl Resolve for Package { - fn resolve( - mut self, - items: &mut ItemMap, - context: &Context, - definitions: &StandardDefinitions, - _self_id: ItemId, - ) -> anyhow::Result { + fn resolve(mut self, semantic: &mut Semantic, _self_id: ItemId) -> anyhow::Result { // Ensure all dependencies are resolved first, so that we can use them // when resolving ourselves for dependency in self.dependencies.values_mut() { - items.resolve(context, definitions, dependency.id)?; + semantic.resolve(dependency.id)?; } - items.resolve(context, definitions, self.scope_id)?; + semantic.resolve(self.scope_id)?; self.resolved = true; Ok(self) } diff --git a/shared_crates/package_semantic/src/scope.rs b/shared_crates/package_semantic/src/scope.rs index fc7ae61bd5..d74cd20634 100644 --- a/shared_crates/package_semantic/src/scope.rs +++ b/shared_crates/package_semantic/src/scope.rs @@ -1,12 +1,9 @@ -use ambient_package::{ - ComponentType, ItemPath, ItemPathBuf, PascalCaseIdentifier, SnakeCaseIdentifier, -}; +use ambient_package::{PascalCaseIdentifier, SnakeCaseIdentifier}; use indexmap::IndexMap; -use thiserror::Error; use crate::{ Attribute, Component, Concept, Item, ItemData, ItemId, ItemMap, ItemType, ItemValue, Message, - Package, Resolve, StandardDefinitions, Type, + Package, Resolve, Semantic, Type, }; #[derive(Clone, PartialEq)] @@ -80,35 +77,24 @@ impl Item for Scope { /// Scope uses `ResolveClone` because scopes can be accessed during resolution /// of their children, so we need to clone the scope to avoid a double-borrow. impl Resolve for Scope { - fn resolve( - mut self, - items: &mut ItemMap, - context: &Context, - definitions: &StandardDefinitions, - self_id: ItemId, - ) -> anyhow::Result { + fn resolve(mut self, semantic: &mut Semantic, _self_id: ItemId) -> anyhow::Result { fn resolve( - items: &mut ItemMap, - context: &Context, - definitions: &StandardDefinitions, + semantic: &mut Semantic, item_ids: &IndexMap>, ) -> anyhow::Result<()> { for id in item_ids.values().copied() { - items.resolve(context, definitions, id)?; + semantic.resolve(id)?; } Ok(()) } - let mut context = context.clone(); - context.push(self_id); - - resolve(items, &context, definitions, &self.scopes)?; - resolve(items, &context, definitions, &self.components)?; - resolve(items, &context, definitions, &self.concepts)?; - resolve(items, &context, definitions, &self.messages)?; - resolve(items, &context, definitions, &self.types)?; - resolve(items, &context, definitions, &self.attributes)?; + resolve(semantic, &self.scopes)?; + resolve(semantic, &self.components)?; + resolve(semantic, &self.concepts)?; + resolve(semantic, &self.messages)?; + resolve(semantic, &self.types)?; + resolve(semantic, &self.attributes)?; self.resolved = true; @@ -157,173 +143,3 @@ impl Scope { visit_recursive_inner(self, items, &mut visitor) } } - -#[derive(Error, Debug)] -pub enum ContextGetError<'a> { - #[error("Failed to find {path} ({type_})")] - NotFound { path: ItemPath<'a>, type_: ItemType }, -} -impl ContextGetError<'_> { - pub fn into_owned(self) -> ContextGetOwnedError { - self.into() - } -} -#[derive(Error, Debug)] -pub enum ContextGetOwnedError { - #[error("Failed to find {path} ({type_})")] - NotFound { path: ItemPathBuf, type_: ItemType }, -} -impl From> for ContextGetOwnedError { - fn from(error: ContextGetError) -> Self { - match error { - ContextGetError::NotFound { path, type_ } => Self::NotFound { - path: path.to_owned(), - type_, - }, - } - } -} - -#[derive(Clone, PartialEq, Debug)] -pub struct Context(Vec>); -impl Context { - pub(crate) fn new(root_scope: ItemId) -> Self { - Self(vec![root_scope]) - } - - fn push(&mut self, scope: ItemId) { - self.0.push(scope); - } - - pub(crate) fn get_type_id( - &self, - items: &ItemMap, - component_type: &ComponentType, - ) -> Option> { - for &scope_id in self.0.iter().rev() { - match component_type { - ComponentType::Item(id) => { - if let Some(id) = get_type_id(items, scope_id, id.as_path()) { - return Some(id); - } - } - ComponentType::Contained { - type_, - element_type, - } => { - if let Some(id) = get_type_id(items, scope_id, element_type.as_path()) { - return Some(match type_ { - ambient_package::ContainerType::Vec => items.get_vec_id(id), - ambient_package::ContainerType::Option => items.get_option_id(id), - }); - } - } - } - } - None - } - - pub(crate) fn get_attribute_id<'a>( - &self, - items: &ItemMap, - path: ItemPath<'a>, - ) -> Result, ContextGetError<'a>> { - for &scope_id in self.0.iter().rev() { - if let Some(id) = get_attribute_id(items, scope_id, path) { - return Ok(id); - } - } - Err(ContextGetError::NotFound { - path, - type_: ItemType::Attribute, - }) - } - - pub(crate) fn get_concept_id<'a>( - &self, - items: &ItemMap, - path: ItemPath<'a>, - ) -> Result, ContextGetError<'a>> { - for &scope_id in self.0.iter().rev() { - if let Some(id) = get_concept_id(items, scope_id, path) { - return Ok(id); - } - } - Err(ContextGetError::NotFound { - path, - type_: ItemType::Concept, - }) - } - - pub(crate) fn get_component_id<'a>( - &self, - items: &ItemMap, - path: ItemPath<'a>, - ) -> Result, ContextGetError<'a>> { - for &scope_id in self.0.iter().rev() { - if let Some(id) = get_component_id(items, scope_id, path) { - return Ok(id); - } - } - Err(ContextGetError::NotFound { - path, - type_: ItemType::Component, - }) - } -} - -fn get_type_id( - items: &ItemMap, - self_scope_id: ItemId, - path: ItemPath, -) -> Option> { - let (scope, item) = path.scope_and_item(); - items - .get_scope(self_scope_id, scope) - .ok()? - .types - .get(item.as_pascal().ok()?) - .copied() -} - -fn get_attribute_id( - items: &ItemMap, - self_scope_id: ItemId, - path: ItemPath, -) -> Option> { - let (scope, item) = path.scope_and_item(); - items - .get_scope(self_scope_id, scope) - .ok()? - .attributes - .get(item.as_pascal().ok()?) - .copied() -} - -fn get_concept_id( - items: &ItemMap, - self_scope_id: ItemId, - path: ItemPath, -) -> Option> { - let (scope, item) = path.scope_and_item(); - items - .get_scope(self_scope_id, scope) - .ok()? - .concepts - .get(item.as_pascal().ok()?) - .copied() -} - -fn get_component_id( - items: &ItemMap, - self_scope_id: ItemId, - path: ItemPath, -) -> Option> { - let (scope, item) = path.scope_and_item(); - items - .get_scope(self_scope_id, scope) - .ok()? - .components - .get(item.as_snake().ok()?) - .copied() -} diff --git a/shared_crates/package_semantic/src/type_.rs b/shared_crates/package_semantic/src/type_.rs index 4631480f69..88e9244f0e 100644 --- a/shared_crates/package_semantic/src/type_.rs +++ b/shared_crates/package_semantic/src/type_.rs @@ -1,10 +1,7 @@ use ambient_package::{ComponentType, PascalCaseIdentifier}; use indexmap::IndexMap; -use crate::{ - Context, Item, ItemData, ItemId, ItemMap, ItemType, ItemValue, PrimitiveType, Resolve, - StandardDefinitions, -}; +use crate::{Item, ItemData, ItemId, ItemType, ItemValue, PrimitiveType, Resolve, Semantic}; #[derive(Clone, PartialEq, Eq, Debug)] pub struct Type { @@ -89,13 +86,7 @@ impl Item for Type { } } impl Resolve for Type { - fn resolve( - self, - _items: &mut ItemMap, - _context: &Context, - _definitions: &StandardDefinitions, - _self_id: ItemId, - ) -> anyhow::Result { + fn resolve(self, _semantic: &mut Semantic, _self_id: ItemId) -> anyhow::Result { Ok(self) } From a394e3b3b660dde4c5844156fca7da193f9c34cb Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 17:02:09 +0200 Subject: [PATCH 08/35] feat(semantic): concept include comps from extend --- guest/rust/api_core/src/internal/generated.rs | 494 +++++++++++++++--- .../package_macro_common/src/concepts.rs | 88 +--- shared_crates/package_semantic/src/concept.rs | 41 +- 3 files changed, 469 insertions(+), 154 deletions(-) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 52227142a1..4184c3a753 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -499,10 +499,28 @@ mod raw { use crate::prelude::*; #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] + #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] pub fn make_Camera() -> Entity { Entity::new() - .with_merge(crate::ambient_core::transform::concepts::make_Transformable()) + .with( + crate::ambient_core::transform::components::translation(), + Vec3::new(0f32, 0f32, 0f32), + ) + .with( + crate::ambient_core::transform::components::rotation(), + Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::scale(), + Vec3::new(1f32, 1f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) .with(crate::ambient_core::camera::components::near(), 0.1f32) .with( crate::ambient_core::camera::components::projection(), @@ -522,13 +540,6 @@ mod raw { crate::ambient_core::camera::components::active_camera(), 0f32, ) - .with( - crate::ambient_core::transform::components::local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) .with( crate::ambient_core::transform::components::inv_local_to_world(), Mat4::from_cols_array(&[ @@ -537,137 +548,434 @@ mod raw { ]), ) } - #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] + #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Camera(id: EntityId) -> bool { - crate::ambient_core::transform::concepts::is_Transformable(id) - && entity::has_components( - id, - &[ - &crate::ambient_core::camera::components::near(), - &crate::ambient_core::camera::components::projection(), - &crate::ambient_core::camera::components::projection_view(), - &crate::ambient_core::camera::components::active_camera(), - &crate::ambient_core::transform::components::local_to_world(), - &crate::ambient_core::transform::components::inv_local_to_world(), - ], - ) - } - #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n}\n```\n"] + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::translation(), + &crate::ambient_core::transform::components::rotation(), + &crate::ambient_core::transform::components::scale(), + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + ], + ) + } + #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn Camera() -> ( + Component, + Component, + Component, + Component, Component, Component, Component, Component, Component, - Component, ) { ( + crate::ambient_core::transform::components::translation(), + crate::ambient_core::transform::components::rotation(), + crate::ambient_core::transform::components::scale(), + crate::ambient_core::transform::components::local_to_world(), crate::ambient_core::camera::components::near(), crate::ambient_core::camera::components::projection(), crate::ambient_core::camera::components::projection_view(), crate::ambient_core::camera::components::active_camera(), - crate::ambient_core::transform::components::local_to_world(), crate::ambient_core::transform::components::inv_local_to_world(), ) } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] pub fn make_PerspectiveCommonCamera() -> Entity { Entity::new() - .with_merge(crate::ambient_core::camera::concepts::make_Camera()) + .with( + crate::ambient_core::transform::components::translation(), + Vec3::new(0f32, 0f32, 0f32), + ) + .with( + crate::ambient_core::transform::components::rotation(), + Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::scale(), + Vec3::new(1f32, 1f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with(crate::ambient_core::camera::components::near(), 0.1f32) + .with( + crate::ambient_core::camera::components::projection(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with( + crate::ambient_core::camera::components::projection_view(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with( + crate::ambient_core::camera::components::active_camera(), + 0f32, + ) + .with( + crate::ambient_core::transform::components::inv_local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) .with(crate::ambient_core::camera::components::fovy(), 1f32) .with( crate::ambient_core::camera::components::aspect_ratio(), 1f32, ) } - #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveCommonCamera(id: EntityId) -> bool { - crate::ambient_core::camera::concepts::is_Camera(id) - && entity::has_components( - id, - &[ - &crate::ambient_core::camera::components::fovy(), - &crate::ambient_core::camera::components::aspect_ratio(), - ], - ) + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::translation(), + &crate::ambient_core::transform::components::rotation(), + &crate::ambient_core::transform::components::scale(), + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::fovy(), + &crate::ambient_core::camera::components::aspect_ratio(), + ], + ) } - #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn PerspectiveCommonCamera() -> (Component, Component) { + pub fn PerspectiveCommonCamera() -> ( + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + ) { ( + crate::ambient_core::transform::components::translation(), + crate::ambient_core::transform::components::rotation(), + crate::ambient_core::transform::components::scale(), + crate::ambient_core::transform::components::local_to_world(), + crate::ambient_core::camera::components::near(), + crate::ambient_core::camera::components::projection(), + crate::ambient_core::camera::components::projection_view(), + crate::ambient_core::camera::components::active_camera(), + crate::ambient_core::transform::components::inv_local_to_world(), crate::ambient_core::camera::components::fovy(), crate::ambient_core::camera::components::aspect_ratio(), ) } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] pub fn make_PerspectiveCamera() -> Entity { Entity::new() - .with_merge( - crate::ambient_core::camera::concepts::make_PerspectiveCommonCamera(), + .with( + crate::ambient_core::transform::components::translation(), + Vec3::new(0f32, 0f32, 0f32), + ) + .with( + crate::ambient_core::transform::components::rotation(), + Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::scale(), + Vec3::new(1f32, 1f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with(crate::ambient_core::camera::components::near(), 0.1f32) + .with( + crate::ambient_core::camera::components::projection(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with( + crate::ambient_core::camera::components::projection_view(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with( + crate::ambient_core::camera::components::active_camera(), + 0f32, + ) + .with( + crate::ambient_core::transform::components::inv_local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with(crate::ambient_core::camera::components::fovy(), 1f32) + .with( + crate::ambient_core::camera::components::aspect_ratio(), + 1f32, ) .with(crate::ambient_core::camera::components::perspective(), ()) .with(crate::ambient_core::camera::components::far(), 1000f32) } - #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveCamera(id: EntityId) -> bool { - crate::ambient_core::camera::concepts::is_PerspectiveCommonCamera(id) - && entity::has_components( - id, - &[ - &crate::ambient_core::camera::components::perspective(), - &crate::ambient_core::camera::components::far(), - ], - ) + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::translation(), + &crate::ambient_core::transform::components::rotation(), + &crate::ambient_core::transform::components::scale(), + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::fovy(), + &crate::ambient_core::camera::components::aspect_ratio(), + &crate::ambient_core::camera::components::perspective(), + &crate::ambient_core::camera::components::far(), + ], + ) } - #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn PerspectiveCamera() -> (Component<()>, Component) { + pub fn PerspectiveCamera() -> ( + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component<()>, + Component, + ) { ( + crate::ambient_core::transform::components::translation(), + crate::ambient_core::transform::components::rotation(), + crate::ambient_core::transform::components::scale(), + crate::ambient_core::transform::components::local_to_world(), + crate::ambient_core::camera::components::near(), + crate::ambient_core::camera::components::projection(), + crate::ambient_core::camera::components::projection_view(), + crate::ambient_core::camera::components::active_camera(), + crate::ambient_core::transform::components::inv_local_to_world(), + crate::ambient_core::camera::components::fovy(), + crate::ambient_core::camera::components::aspect_ratio(), crate::ambient_core::camera::components::perspective(), crate::ambient_core::camera::components::far(), ) } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] pub fn make_PerspectiveInfiniteReverseCamera() -> Entity { Entity::new() - .with_merge( - crate::ambient_core::camera::concepts::make_PerspectiveCommonCamera(), + .with( + crate::ambient_core::transform::components::translation(), + Vec3::new(0f32, 0f32, 0f32), + ) + .with( + crate::ambient_core::transform::components::rotation(), + Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::scale(), + Vec3::new(1f32, 1f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with(crate::ambient_core::camera::components::near(), 0.1f32) + .with( + crate::ambient_core::camera::components::projection(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with( + crate::ambient_core::camera::components::projection_view(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with( + crate::ambient_core::camera::components::active_camera(), + 0f32, + ) + .with( + crate::ambient_core::transform::components::inv_local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with(crate::ambient_core::camera::components::fovy(), 1f32) + .with( + crate::ambient_core::camera::components::aspect_ratio(), + 1f32, ) .with( crate::ambient_core::camera::components::perspective_infinite_reverse(), (), ) } - #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveInfiniteReverseCamera(id: EntityId) -> bool { - crate :: ambient_core :: camera :: concepts :: is_PerspectiveCommonCamera (id) && entity :: has_components (id , & [& crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()]) + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::translation(), + &crate::ambient_core::transform::components::rotation(), + &crate::ambient_core::transform::components::scale(), + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::fovy(), + &crate::ambient_core::camera::components::aspect_ratio(), + &crate::ambient_core::camera::components::perspective_infinite_reverse( + ), + ], + ) } - #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n \"ambient_core::camera::PerspectiveCommonCamera\": { // Concept.\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n },\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn PerspectiveInfiniteReverseCamera() -> (Component<()>) { - (crate::ambient_core::camera::components::perspective_infinite_reverse()) + pub fn PerspectiveInfiniteReverseCamera() -> ( + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component, + Component<()>, + ) { + ( + crate::ambient_core::transform::components::translation(), + crate::ambient_core::transform::components::rotation(), + crate::ambient_core::transform::components::scale(), + crate::ambient_core::transform::components::local_to_world(), + crate::ambient_core::camera::components::near(), + crate::ambient_core::camera::components::projection(), + crate::ambient_core::camera::components::projection_view(), + crate::ambient_core::camera::components::active_camera(), + crate::ambient_core::transform::components::inv_local_to_world(), + crate::ambient_core::camera::components::fovy(), + crate::ambient_core::camera::components::aspect_ratio(), + crate::ambient_core::camera::components::perspective_infinite_reverse(), + ) } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] pub fn make_OrthographicCamera() -> Entity { Entity::new() - .with_merge(crate::ambient_core::camera::concepts::make_Camera()) + .with( + crate::ambient_core::transform::components::translation(), + Vec3::new(0f32, 0f32, 0f32), + ) + .with( + crate::ambient_core::transform::components::rotation(), + Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::scale(), + Vec3::new(1f32, 1f32, 1f32), + ) + .with( + crate::ambient_core::transform::components::local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with(crate::ambient_core::camera::components::near(), -1f32) + .with( + crate::ambient_core::camera::components::projection(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with( + crate::ambient_core::camera::components::projection_view(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) + .with( + crate::ambient_core::camera::components::active_camera(), + 0f32, + ) + .with( + crate::ambient_core::transform::components::inv_local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + ) .with(crate::ambient_core::camera::components::orthographic(), ()) .with( crate::ambient_core::camera::components::orthographic_left(), @@ -685,32 +993,46 @@ mod raw { crate::ambient_core::camera::components::orthographic_bottom(), -1f32, ) - .with(crate::ambient_core::camera::components::near(), -1f32) .with(crate::ambient_core::camera::components::far(), 1f32) } - #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_OrthographicCamera(id: EntityId) -> bool { - crate::ambient_core::camera::concepts::is_Camera(id) - && entity::has_components( - id, - &[ - &crate::ambient_core::camera::components::orthographic(), - &crate::ambient_core::camera::components::orthographic_left(), - &crate::ambient_core::camera::components::orthographic_right(), - &crate::ambient_core::camera::components::orthographic_top(), - &crate::ambient_core::camera::components::orthographic_bottom(), - &crate::ambient_core::camera::components::near(), - &crate::ambient_core::camera::components::far(), - ], - ) - } - #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n \"ambient_core::camera::Camera\": { // Concept.\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::transform::Transformable\": { // Concept.\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n },\n },\n}\n```\n"] + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::translation(), + &crate::ambient_core::transform::components::rotation(), + &crate::ambient_core::transform::components::scale(), + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::orthographic(), + &crate::ambient_core::camera::components::orthographic_left(), + &crate::ambient_core::camera::components::orthographic_right(), + &crate::ambient_core::camera::components::orthographic_top(), + &crate::ambient_core::camera::components::orthographic_bottom(), + &crate::ambient_core::camera::components::far(), + ], + ) + } + #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn OrthographicCamera() -> ( - Component<()>, + Component, + Component, + Component, + Component, Component, + Component, + Component, + Component, + Component, + Component<()>, Component, Component, Component, @@ -718,12 +1040,20 @@ mod raw { Component, ) { ( + crate::ambient_core::transform::components::translation(), + crate::ambient_core::transform::components::rotation(), + crate::ambient_core::transform::components::scale(), + crate::ambient_core::transform::components::local_to_world(), + crate::ambient_core::camera::components::near(), + crate::ambient_core::camera::components::projection(), + crate::ambient_core::camera::components::projection_view(), + crate::ambient_core::camera::components::active_camera(), + crate::ambient_core::transform::components::inv_local_to_world(), crate::ambient_core::camera::components::orthographic(), crate::ambient_core::camera::components::orthographic_left(), crate::ambient_core::camera::components::orthographic_right(), crate::ambient_core::camera::components::orthographic_top(), crate::ambient_core::camera::components::orthographic_bottom(), - crate::ambient_core::camera::components::near(), crate::ambient_core::camera::components::far(), ) } diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index 74a25f2286..130a5521b5 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -62,18 +62,6 @@ fn generate_make( ); let make_ident = quote::format_ident!("make_{}", name); - let extends: Vec<_> = concept - .extends - .iter() - .map(|id| { - let path = context.get_path(items, Some("make_"), id.as_resolved().unwrap())?; - - Ok(quote! { - with_merge(#path()) - }) - }) - .collect::>()?; - let components = concept .required_components .iter() @@ -98,7 +86,6 @@ fn generate_make( #[doc = #make_comment] pub fn #make_ident() -> Entity { Entity::new() - #(.#extends)* #(.#components)* } }) @@ -119,12 +106,6 @@ fn generate_is( ); let is_ident = quote::format_ident!("is_{}", name); - let extends: Vec<_> = concept - .extends - .iter() - .map(|id| context.get_path(items, Some("is_"), id.as_resolved().unwrap())) - .collect::>()?; - let components = concept .required_components .iter() @@ -139,7 +120,7 @@ fn generate_is( #[doc = #is_comment] #[allow(non_snake_case)] pub fn #is_ident(world: &crate::World, id: EntityId) -> bool { - #(#extends(world, id) && )* world.has_components(id, &{ + world.has_components(id, &{ let mut set = crate::ComponentSet::new(); #(set.insert(#components.desc());)* set @@ -150,7 +131,7 @@ fn generate_is( #[doc = #is_comment] #[allow(non_snake_case)] pub fn #is_ident(id: EntityId) -> bool { - #(#extends(id) && )* entity::has_components(id, &[ + entity::has_components(id, &[ #(&#components),* ]) } @@ -173,7 +154,6 @@ fn generate_concept( ); let fn_ident = quote::format_ident!("{}", name); - // TODO: include extends in component list let components = concept .required_components .iter() @@ -208,56 +188,32 @@ pub fn generate_component_list_doc_comment( context: Context, concept: &Concept, ) -> anyhow::Result { - let mut output = "*Definition*:\n\n```ignore\n{\n".to_string(); + use std::fmt::Write; - fn write_level( - items: &ItemMap, + let mut output = "*Definition*:\n\n```ignore\n{\n".to_string(); - type_printer: &TypePrinter, - context: Context, - concept: &Concept, - output: &mut String, - level: usize, - ) -> anyhow::Result<()> { - use std::fmt::Write; + for (id, value) in &concept.required_components { + let component = &*items.get(id.as_resolved().unwrap()); + let component_path = items.fully_qualified_display_path(component, None, None); - let padding = " ".repeat(level * 2); - for (id, value) in &concept.required_components { - let component = &*items.get(id.as_resolved().unwrap()); - let component_path = items.fully_qualified_display_path(component, None, None); - - writeln!( - output, - "{padding}\"{component_path}\": {} = {},", - SemiprettyTokenStream( - type_printer - .get(context, items, None, component.type_.as_resolved().unwrap()) - .unwrap() - .clone() - ), - value - .suggested - .as_ref() - .expect("TEMP: suggested required") - .as_resolved() + writeln!( + output, + " \"{component_path}\": {} = {},", + SemiprettyTokenStream( + type_printer + .get(context, items, None, component.type_.as_resolved().unwrap()) .unwrap() - )?; - } - for concept_id in &concept.extends { - let concept_id = concept_id.as_resolved().unwrap(); - let concept = &*items.get(concept_id); - let concept_path = items.fully_qualified_display_path(concept, None, None); - - writeln!(output, "{padding}\"{concept_path}\": {{ // Concept.")?; - write_level(items, type_printer, context, concept, output, level + 1)?; - writeln!(output, "{padding}}},")?; - } - - Ok(()) + .clone() + ), + value + .suggested + .as_ref() + .expect("TEMP: suggested required") + .as_resolved() + .unwrap() + )?; } - write_level(items, type_printer, context, concept, &mut output, 1)?; - output += "}\n```\n"; Ok(output) diff --git a/shared_crates/package_semantic/src/concept.rs b/shared_crates/package_semantic/src/concept.rs index 56f2436585..c28a4b2ea7 100644 --- a/shared_crates/package_semantic/src/concept.rs +++ b/shared_crates/package_semantic/src/concept.rs @@ -52,7 +52,7 @@ impl Resolve for Concept { let mut extends = vec![]; for extend in &self.extends { - extends.push(ResolvableItemId::Resolved(match extend { + extends.push(match extend { ResolvableItemId::Unresolved(path) => semantic .get_contextual_concept_id(parent_id, path.as_path()) .map_err(|e| e.into_owned()) @@ -63,12 +63,41 @@ impl Resolve for Concept { ) })?, ResolvableItemId::Resolved(id) => *id, - })); + }); } - self.extends = extends; - - for components in [&mut self.required_components, &mut self.optional_components] { - *components = resolve_components(parent_id, &self.data.id, semantic, components)?; + self.extends = extends + .iter() + .copied() + .map(ResolvableItemId::Resolved) + .collect(); + + let component_extractors: [fn(&mut Concept) -> &mut ComponentMap; 2] = [ + |c| &mut c.required_components, + |c| &mut c.optional_components, + ]; + + let our_id = self.data.id.clone(); + for extractor in component_extractors { + let mut new_components = ComponentMap::new(); + + // Add all components from our extended concepts + for extend_id in &extends { + let extend = semantic.resolve(*extend_id)?; + let extend_components = extractor(extend); + new_components.extend( + extend_components + .iter() + .map(|(k, v)| (k.clone(), v.clone())), + ); + } + + let components = extractor(&mut self); + + // Add our components + new_components.extend(components.iter().map(|(k, v)| (k.clone(), v.clone()))); + + // Resolve anything that needs to be resolved + *components = resolve_components(parent_id, &our_id, semantic, &new_components)?; } self.resolved = true; From 2460c32a472ae68427d79299cda345adfd6fce10 Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 17:03:17 +0200 Subject: [PATCH 09/35] chore: fix guest build --- .../rust/examples/assets/generate_pipeline/src/server.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/guest/rust/examples/assets/generate_pipeline/src/server.rs b/guest/rust/examples/assets/generate_pipeline/src/server.rs index 7c70896ac8..1c02c244bf 100644 --- a/guest/rust/examples/assets/generate_pipeline/src/server.rs +++ b/guest/rust/examples/assets/generate_pipeline/src/server.rs @@ -3,12 +3,12 @@ use ambient_api::{ app::components::main_scene, camera::{ components::aspect_ratio_from_window, - concepts::make_perspective_infinite_reverse_camera, + concepts::make_PerspectiveInfiniteReverseCamera, }, prefab::components::prefab_from_url, transform::{ components::{lookat_target, translation}, - concepts::make_transformable, + concepts::make_Transformable, }, }, prelude::*, @@ -20,7 +20,7 @@ use packages::this::assets; pub async fn main() { // Camera Entity::new() - .with_merge(make_perspective_infinite_reverse_camera()) + .with_merge(make_PerspectiveInfiniteReverseCamera()) .with(aspect_ratio_from_window(), EntityId::resources()) .with(main_scene(), ()) .with(translation(), vec3(2., 2., 2.)) @@ -29,7 +29,7 @@ pub async fn main() { // Model Entity::new() - .with_merge(make_transformable()) + .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("Cube.glb")) .spawn(); } From ba30a7e2073a4015e2470f99af46a4e032b66206 Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 17:06:43 +0200 Subject: [PATCH 10/35] chore(semantic): clippy fixes --- shared_crates/package_semantic/src/item.rs | 2 +- shared_crates/package_semantic/src/lib.rs | 10 +++---- shared_crates/package_semantic/src/printer.rs | 29 +++++++++---------- shared_crates/package_semantic/src/scope.rs | 2 +- shared_crates/package_semantic/src/value.rs | 6 ++-- 5 files changed, 23 insertions(+), 26 deletions(-) diff --git a/shared_crates/package_semantic/src/item.rs b/shared_crates/package_semantic/src/item.rs index 53d823fa6b..493b73e223 100644 --- a/shared_crates/package_semantic/src/item.rs +++ b/shared_crates/package_semantic/src/item.rs @@ -123,7 +123,7 @@ impl ItemMap { .copied() .ok_or_else(|| GetScopeError::NotFound { segment: segment.clone(), - scope_path: self.fully_qualified_display_path(&*scope, None, None), + scope_path: self.fully_qualified_display_path(scope, None, None), path: path.to_vec(), })?; } diff --git a/shared_crates/package_semantic/src/lib.rs b/shared_crates/package_semantic/src/lib.rs index c38af8fb6d..9dae73d0b5 100644 --- a/shared_crates/package_semantic/src/lib.rs +++ b/shared_crates/package_semantic/src/lib.rs @@ -206,8 +206,8 @@ impl Semantic { anyhow::bail!( "package conflict found:\n - {present}{}\n\n - {locator}{}\n\n{}", - imported_by(&self.items, &present_package), - imported_by(&self.items, &locator_package), + imported_by(&self.items, present_package), + imported_by(&self.items, locator_package), "the system does not currently support multiple versions of the same package in the dependency tree" ); } @@ -287,7 +287,7 @@ impl Semantic { self.get_contextual(start_scope, |scope_id| { get_attribute_id(&self.items, scope_id, path) }) - .ok_or_else(|| ContextGetError::NotFound { + .ok_or(ContextGetError::NotFound { path, type_: ItemType::Attribute, }) @@ -302,7 +302,7 @@ impl Semantic { self.get_contextual(start_scope, |scope_id| { get_concept_id(&self.items, scope_id, path) }) - .ok_or_else(|| ContextGetError::NotFound { + .ok_or(ContextGetError::NotFound { path, type_: ItemType::Concept, }) @@ -317,7 +317,7 @@ impl Semantic { self.get_contextual(start_scope, |scope_id| { get_component_id(&self.items, scope_id, path) }) - .ok_or_else(|| ContextGetError::NotFound { + .ok_or(ContextGetError::NotFound { path, type_: ItemType::Component, }) diff --git a/shared_crates/package_semantic/src/printer.rs b/shared_crates/package_semantic/src/printer.rs index d7434bf824..6e59a6ff1e 100644 --- a/shared_crates/package_semantic/src/printer.rs +++ b/shared_crates/package_semantic/src/printer.rs @@ -15,14 +15,14 @@ impl Printer { let items = &semantic.items; println!("root_scope:"); self.with_indent(|p| { - p.print_scope(items, &items.get(semantic.root_scope_id))?; + p.print_scope(items, items.get(semantic.root_scope_id))?; Ok(()) })?; println!("packages:"); self.with_indent(|p| { for id in semantic.packages.values() { - p.print_package(items, &items.get(*id))?; + p.print_package(items, items.get(*id))?; } Ok(()) })?; @@ -46,7 +46,7 @@ impl Printer { "dependent: {}", package .dependent_package_id - .map(|id| fully_qualified_display_path_ambient_style(items, &*items.get(id))) + .map(|id| fully_qualified_display_path_ambient_style(items, items.get(id))) .unwrap_or_default() ); @@ -62,17 +62,14 @@ impl Printer { println!( "{}: {} ({:?})", name, - fully_qualified_display_path_ambient_style( - items, - &*items.get(dependency.id) - ), + fully_qualified_display_path_ambient_style(items, items.get(dependency.id)), dependency.enabled ); } Ok(()) })?; - p.print_scope(items, &items.get(package.scope_id))?; + p.print_scope(items, items.get(package.scope_id))?; Ok(()) })?; @@ -93,7 +90,7 @@ impl Printer { p.with_indent(|p| { for (import_name, package_id) in &scope.imports { let package_path = - fully_qualified_display_path_ambient_style(items, &*items.get(*package_id)); + fully_qualified_display_path_ambient_style(items, items.get(*package_id)); p.print_indent(); println!("{import_name} => {package_path}"); } @@ -101,27 +98,27 @@ impl Printer { })?; for id in scope.components.values() { - p.print_component(items, &items.get(*id))?; + p.print_component(items, items.get(*id))?; } for id in scope.concepts.values() { - p.print_concept(items, &items.get(*id))?; + p.print_concept(items, items.get(*id))?; } for id in scope.messages.values() { - p.print_message(items, &items.get(*id))?; + p.print_message(items, items.get(*id))?; } for id in scope.types.values() { - p.print_type(items, &items.get(*id))?; + p.print_type(items, items.get(*id))?; } for id in scope.attributes.values() { - p.print_attribute(items, &items.get(*id))?; + p.print_attribute(items, items.get(*id))?; } for id in scope.scopes.values() { - p.print_scope(items, &items.get(*id))?; + p.print_scope(items, items.get(*id))?; } Ok(()) @@ -311,7 +308,7 @@ fn write_resolvable_id( Ok(match r { ResolvableItemId::Unresolved(unresolved) => format!("unresolved({:?})", unresolved), ResolvableItemId::Resolved(resolved) => { - fully_qualified_display_path_ambient_style(items, &*items.get(*resolved)) + fully_qualified_display_path_ambient_style(items, items.get(*resolved)) } }) } diff --git a/shared_crates/package_semantic/src/scope.rs b/shared_crates/package_semantic/src/scope.rs index d74cd20634..715e53e28c 100644 --- a/shared_crates/package_semantic/src/scope.rs +++ b/shared_crates/package_semantic/src/scope.rs @@ -134,7 +134,7 @@ impl Scope { visitor(scope)?; for scope in scope.scopes.values().copied() { - visit_recursive_inner(&items.get(scope), items, visitor)?; + visit_recursive_inner(items.get(scope), items, visitor)?; } Ok(()) diff --git a/shared_crates/package_semantic/src/value.rs b/shared_crates/package_semantic/src/value.rs index 9aceaecafc..07b180d3cf 100644 --- a/shared_crates/package_semantic/src/value.rs +++ b/shared_crates/package_semantic/src/value.rs @@ -236,11 +236,11 @@ impl Value { items: &ItemMap, ty_id: ItemId, ) -> anyhow::Result { - let ty = &*items.get(ty_id); + let ty = items.get(ty_id); Ok(match &ty.inner { TypeInner::Primitive(pt) => Self::Scalar(ScalarValue::from_toml(value, *pt)?), TypeInner::Vec(v) => { - let inner_ty = &*items.get(*v); + let inner_ty = items.get(*v); let inner_ty = inner_ty.inner.as_primitive().with_context(|| { format!("Expected primitive type, got {:?}", inner_ty.inner) })?; @@ -256,7 +256,7 @@ impl Value { ) } TypeInner::Option(o) => { - let inner_ty = &*items.get(*o); + let inner_ty = items.get(*o); let inner_ty = inner_ty.inner.as_primitive().with_context(|| { format!("Expected primitive type, got {:?}", inner_ty.inner) })?; From f2e21e395763a5156c35d42ee0b31c099da2de1e Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 17:24:39 +0200 Subject: [PATCH 11/35] refactor(macro): move old code out --- guest/rust/api_core/src/internal/generated.rs | 21 +- .../package_macro_common/src/concepts.rs | 276 +++++++++--------- 2 files changed, 157 insertions(+), 140 deletions(-) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 4184c3a753..943ee9dcb8 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -569,7 +569,7 @@ mod raw { #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn Camera() -> ( + pub fn tuple_Camera() -> ( Component, Component, Component, @@ -671,7 +671,7 @@ mod raw { #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn PerspectiveCommonCamera() -> ( + pub fn tuple_PerspectiveCommonCamera() -> ( Component, Component, Component, @@ -781,7 +781,7 @@ mod raw { #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn PerspectiveCamera() -> ( + pub fn tuple_PerspectiveCamera() -> ( Component, Component, Component, @@ -897,7 +897,7 @@ mod raw { #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn PerspectiveInfiniteReverseCamera() -> ( + pub fn tuple_PerspectiveInfiniteReverseCamera() -> ( Component, Component, Component, @@ -1022,7 +1022,7 @@ mod raw { #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn OrthographicCamera() -> ( + pub fn tuple_OrthographicCamera() -> ( Component, Component, Component, @@ -1991,7 +1991,8 @@ mod raw { #[doc = "Returns the components that comprise *Character Controller* as a tuple.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn CharacterController() -> (Component, Component, Component<()>) { + pub fn tuple_CharacterController() -> (Component, Component, Component<()>) + { ( crate::ambient_core::physics::components::character_controller_height(), crate::ambient_core::physics::components::character_controller_radius(), @@ -2215,7 +2216,7 @@ mod raw { #[doc = "Returns the components that comprise *Sphere* as a tuple.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn Sphere() -> ( + pub fn tuple_Sphere() -> ( Component<()>, Component, Component, @@ -2273,7 +2274,7 @@ mod raw { #[doc = "Returns the components that comprise *Capsule* as a tuple.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn Capsule() -> ( + pub fn tuple_Capsule() -> ( Component<()>, Component, Component, @@ -2330,7 +2331,7 @@ mod raw { #[doc = "Returns the components that comprise *Torus* as a tuple.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn Torus() -> ( + pub fn tuple_Torus() -> ( Component<()>, Component, Component, @@ -2895,7 +2896,7 @@ mod raw { #[doc = "Returns the components that comprise *Transformable* as a tuple.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn Transformable() -> ( + pub fn tuple_Transformable() -> ( Component, Component, Component, diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index 130a5521b5..4854a808f5 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -21,13 +21,9 @@ pub fn generate( .filter_map(|c| context.extract_item_if_relevant(items, *c)) .map(|concept| { let concept = &*concept; - let make_concept = generate_make(items, type_printer, context, concept)?; - let is_concept = generate_is(items, type_printer, context, concept)?; - let concept_fn = generate_concept(items, type_printer, context, concept)?; + let old = old::generate(items, type_printer, context, concept)?; Ok(quote! { - #make_concept - #is_concept - #concept_fn + #old }) }) .collect::>>()?; @@ -47,139 +43,159 @@ pub fn generate( }) } -fn generate_make( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - concept: &Concept, -) -> anyhow::Result { - let name = concept.data().id.as_str(); - let make_comment = format!( - "Makes a *{}*.\n\n{}\n\n{}", - concept.name.as_deref().unwrap_or(name), - concept.description.as_ref().unwrap_or(&"".to_string()), - generate_component_list_doc_comment(items, type_printer, context, concept)? - ); - let make_ident = quote::format_ident!("make_{}", name); - - let components = concept - .required_components - .iter() - .map(|(id, default)| { - let path = context.get_path(items, None, id.as_resolved().unwrap())?; - let default = value_to_token_stream( - items, - default - .suggested - .as_ref() - .expect("TEMP: suggested required") - .as_resolved() - .unwrap(), - )?; - Ok(quote! { with(#path(), #default) }) - }) - .collect::>>()?; - - Ok(quote! { - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = #make_comment] - pub fn #make_ident() -> Entity { - Entity::new() - #(.#components)* - } - }) -} +mod old { + use super::*; -fn generate_is( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - concept: &Concept, -) -> anyhow::Result { - let name = concept.data().id.as_str(); - let is_comment = format!( - "Checks if the entity is a *{}*.\n\n{}\n\n{}", - concept.name.as_deref().unwrap_or(name), - concept.description.as_ref().unwrap_or(&"".to_string()), - generate_component_list_doc_comment(items, type_printer, context, concept)?, - ); - let is_ident = quote::format_ident!("is_{}", name); - - let components = concept - .required_components - .iter() - .map(|(id, _)| { - let path = context.get_path(items, None, id.as_resolved().unwrap())?; - Ok(quote! { #path() }) + pub(super) fn generate( + items: &ItemMap, + type_printer: &TypePrinter, + context: Context, + concept: &Concept, + ) -> anyhow::Result { + let make_concept = generate_make(items, type_printer, context, concept)?; + let is_concept = generate_is(items, type_printer, context, concept)?; + let concept_fn = generate_concept(items, type_printer, context, concept)?; + Ok(quote! { + #make_concept + #is_concept + #concept_fn }) - .collect::>>()?; + } - Ok(match context { - Context::Host => quote! { - #[doc = #is_comment] - #[allow(non_snake_case)] - pub fn #is_ident(world: &crate::World, id: EntityId) -> bool { - world.has_components(id, &{ - let mut set = crate::ComponentSet::new(); - #(set.insert(#components.desc());)* - set - }) - } - }, - Context::GuestApi | Context::GuestUser => quote! { - #[doc = #is_comment] + fn generate_make( + items: &ItemMap, + type_printer: &TypePrinter, + context: Context, + concept: &Concept, + ) -> anyhow::Result { + let name = concept.data().id.as_str(); + let make_comment = format!( + "Makes a *{}*.\n\n{}\n\n{}", + concept.name.as_deref().unwrap_or(name), + concept.description.as_ref().unwrap_or(&"".to_string()), + generate_component_list_doc_comment(items, type_printer, context, concept)? + ); + let make_ident = quote::format_ident!("make_{}", name); + + let components = concept + .required_components + .iter() + .map(|(id, default)| { + let path = context.get_path(items, None, id.as_resolved().unwrap())?; + let default = value_to_token_stream( + items, + default + .suggested + .as_ref() + .expect("TEMP: suggested required") + .as_resolved() + .unwrap(), + )?; + Ok(quote! { with(#path(), #default) }) + }) + .collect::>>()?; + + Ok(quote! { + #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - pub fn #is_ident(id: EntityId) -> bool { - entity::has_components(id, &[ - #(&#components),* - ]) + #[doc = #make_comment] + pub fn #make_ident() -> Entity { + Entity::new() + #(.#components)* } - }, - }) -} - -fn generate_concept( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - concept: &Concept, -) -> anyhow::Result { - let name = concept.data().id.as_str(); - let fn_comment = format!( - "Returns the components that comprise *{}* as a tuple.\n\n{}\n\n{}", - concept.name.as_deref().unwrap_or(name), - concept.description.as_ref().unwrap_or(&"".to_string()), - generate_component_list_doc_comment(items, type_printer, context, concept)?, - ); - let fn_ident = quote::format_ident!("{}", name); - - let components = concept - .required_components - .iter() - .map(|(id, _)| { - let path = context.get_path(items, None, id.as_resolved().unwrap())?; - Ok(quote! { #path() }) }) - .collect::>>()?; + } - let fn_ret = concept - .required_components - .iter() - .map(|(id, _)| { - let component = &*items.get(id.as_resolved().unwrap()); - type_printer.get(context, items, None, component.type_.as_resolved().unwrap()) + fn generate_is( + items: &ItemMap, + type_printer: &TypePrinter, + context: Context, + concept: &Concept, + ) -> anyhow::Result { + let name = concept.data().id.as_str(); + let is_comment = format!( + "Checks if the entity is a *{}*.\n\n{}\n\n{}", + concept.name.as_deref().unwrap_or(name), + concept.description.as_ref().unwrap_or(&"".to_string()), + generate_component_list_doc_comment(items, type_printer, context, concept)?, + ); + let is_ident = quote::format_ident!("is_{}", name); + + let components = concept + .required_components + .iter() + .map(|(id, _)| { + let path = context.get_path(items, None, id.as_resolved().unwrap())?; + Ok(quote! { #path() }) + }) + .collect::>>()?; + + Ok(match context { + Context::Host => quote! { + #[doc = #is_comment] + #[allow(non_snake_case)] + pub fn #is_ident(world: &crate::World, id: EntityId) -> bool { + world.has_components(id, &{ + let mut set = crate::ComponentSet::new(); + #(set.insert(#components.desc());)* + set + }) + } + }, + Context::GuestApi | Context::GuestUser => quote! { + #[doc = #is_comment] + #[allow(non_snake_case)] + pub fn #is_ident(id: EntityId) -> bool { + entity::has_components(id, &[ + #(&#components),* + ]) + } + }, }) - .collect::>>()?; + } - Ok(quote! { - #[doc = #fn_comment] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn #fn_ident() -> (#(Component<#fn_ret>),*) { - (#(#components),*) - } - }) + fn generate_concept( + items: &ItemMap, + type_printer: &TypePrinter, + context: Context, + concept: &Concept, + ) -> anyhow::Result { + let name = concept.data().id.as_str(); + let fn_comment = format!( + "Returns the components that comprise *{}* as a tuple.\n\n{}\n\n{}", + concept.name.as_deref().unwrap_or(name), + concept.description.as_ref().unwrap_or(&"".to_string()), + generate_component_list_doc_comment(items, type_printer, context, concept)?, + ); + let fn_ident = quote::format_ident!("tuple_{}", name); + + let components = concept + .required_components + .iter() + .map(|(id, _)| { + let path = context.get_path(items, None, id.as_resolved().unwrap())?; + Ok(quote! { #path() }) + }) + .collect::>>()?; + + let fn_ret = concept + .required_components + .iter() + .map(|(id, _)| { + let component = &*items.get(id.as_resolved().unwrap()); + type_printer.get(context, items, None, component.type_.as_resolved().unwrap()) + }) + .collect::>>()?; + + Ok(quote! { + #[doc = #fn_comment] + #[allow(clippy::type_complexity)] + #[allow(non_snake_case)] + pub fn #fn_ident() -> (#(Component<#fn_ret>),*) { + (#(#components),*) + } + }) + } } pub fn generate_component_list_doc_comment( From 74f0158cd66e3c075189aa6bb0030f6454ca09cd Mon Sep 17 00:00:00 2001 From: Philpax Date: Thu, 7 Sep 2023 18:20:47 +0200 Subject: [PATCH 12/35] wip(macro): start on new concept gen --- guest/rust/api_core/src/internal/generated.rs | 184 ++++++++++++++++++ .../package_macro_common/src/concepts.rs | 74 +++++++ 2 files changed, 258 insertions(+) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 943ee9dcb8..1f42acc270 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -497,6 +497,26 @@ mod raw { #[doc = r" They do not have any runtime representation outside of the components that compose them."] pub mod concepts { use crate::prelude::*; + pub struct Camera { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + translation: Vec3, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + rotation: Quat, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + scale: Vec3, + #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] + local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] + near: f32, + #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] + projection: Mat4, + #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] + projection_view: Mat4, + #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] + active_camera: f32, + #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] + inv_local_to_world: Mat4, + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] @@ -592,6 +612,30 @@ mod raw { crate::ambient_core::transform::components::inv_local_to_world(), ) } + pub struct PerspectiveCommonCamera { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + translation: Vec3, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + rotation: Quat, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + scale: Vec3, + #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] + local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] + near: f32, + #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] + projection: Mat4, + #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] + projection_view: Mat4, + #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] + active_camera: f32, + #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] + inv_local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::fovy`\n\n**Suggested value**: `1f32`\n\n**Component description**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n"] + fovy: f32, + #[doc = "**Component**: `ambient_core::camera::aspect_ratio`\n\n**Suggested value**: `1f32`\n\n**Component description**: The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n"] + aspect_ratio: f32, + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] @@ -698,6 +742,34 @@ mod raw { crate::ambient_core::camera::components::aspect_ratio(), ) } + pub struct PerspectiveCamera { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + translation: Vec3, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + rotation: Quat, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + scale: Vec3, + #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] + local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] + near: f32, + #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] + projection: Mat4, + #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] + projection_view: Mat4, + #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] + active_camera: f32, + #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] + inv_local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::fovy`\n\n**Suggested value**: `1f32`\n\n**Component description**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n"] + fovy: f32, + #[doc = "**Component**: `ambient_core::camera::aspect_ratio`\n\n**Suggested value**: `1f32`\n\n**Component description**: The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n"] + aspect_ratio: f32, + #[doc = "**Component**: `ambient_core::camera::perspective`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this camera will use a standard perspective projection matrix.\nEnsure that `near` and `far` are set.\n\n"] + perspective: (), + #[doc = "**Component**: `ambient_core::camera::far`\n\n**Suggested value**: `1000f32`\n\n**Component description**: The far plane of this camera, measured in meters.\n\n"] + far: f32, + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] @@ -812,6 +884,32 @@ mod raw { crate::ambient_core::camera::components::far(), ) } + pub struct PerspectiveInfiniteReverseCamera { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + translation: Vec3, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + rotation: Quat, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + scale: Vec3, + #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] + local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] + near: f32, + #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] + projection: Mat4, + #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] + projection_view: Mat4, + #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] + active_camera: f32, + #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] + inv_local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::fovy`\n\n**Suggested value**: `1f32`\n\n**Component description**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n"] + fovy: f32, + #[doc = "**Component**: `ambient_core::camera::aspect_ratio`\n\n**Suggested value**: `1f32`\n\n**Component description**: The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n"] + aspect_ratio: f32, + #[doc = "**Component**: `ambient_core::camera::perspective_infinite_reverse`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this camera will use a perspective-infinite-reverse projection matrix.\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set.\n\n"] + perspective_infinite_reverse: (), + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] @@ -926,6 +1024,38 @@ mod raw { crate::ambient_core::camera::components::perspective_infinite_reverse(), ) } + pub struct OrthographicCamera { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + translation: Vec3, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + rotation: Quat, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + scale: Vec3, + #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] + local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `-1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] + near: f32, + #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] + projection: Mat4, + #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] + projection_view: Mat4, + #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] + active_camera: f32, + #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] + inv_local_to_world: Mat4, + #[doc = "**Component**: `ambient_core::camera::orthographic`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this camera will use a standard orthographic projection matrix.\nEnsure that the `orthographic_` components are set, including `left`, right`, `top` and `bottom`, as well as `near` and `far`.\n\n"] + orthographic: (), + #[doc = "**Component**: `ambient_core::camera::orthographic_left`\n\n**Suggested value**: `-1f32`\n\n**Component description**: The left bound for this `orthographic` camera.\n\n"] + orthographic_left: f32, + #[doc = "**Component**: `ambient_core::camera::orthographic_right`\n\n**Suggested value**: `1f32`\n\n**Component description**: The right bound for this `orthographic` camera.\n\n"] + orthographic_right: f32, + #[doc = "**Component**: `ambient_core::camera::orthographic_top`\n\n**Suggested value**: `1f32`\n\n**Component description**: The top bound for this `orthographic` camera.\n\n"] + orthographic_top: f32, + #[doc = "**Component**: `ambient_core::camera::orthographic_bottom`\n\n**Suggested value**: `-1f32`\n\n**Component description**: The bottom bound for this `orthographic` camera.\n\n"] + orthographic_bottom: f32, + #[doc = "**Component**: `ambient_core::camera::far`\n\n**Suggested value**: `1f32`\n\n**Component description**: The far plane of this camera, measured in meters.\n\n"] + far: f32, + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] @@ -1956,6 +2086,14 @@ mod raw { #[doc = r" They do not have any runtime representation outside of the components that compose them."] pub mod concepts { use crate::prelude::*; + pub struct CharacterController { + #[doc = "**Component**: `ambient_core::physics::character_controller_height`\n\n**Suggested value**: `2f32`\n\n**Component description**: The height of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider.\n\n"] + character_controller_height: f32, + #[doc = "**Component**: `ambient_core::physics::character_controller_radius`\n\n**Suggested value**: `0.5f32`\n\n**Component description**: The radius of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_height`, it will be given a physical character collider.\n\n"] + character_controller_radius: f32, + #[doc = "**Component**: `ambient_core::physics::physics_controlled`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this entity will be controlled by physics.\nNote that this requires the entity to have a collider.\n\n"] + physics_controlled: (), + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] @@ -2181,6 +2319,16 @@ mod raw { #[doc = r" They do not have any runtime representation outside of the components that compose them."] pub mod concepts { use crate::prelude::*; + pub struct Sphere { + #[doc = "**Component**: `ambient_core::primitives::sphere`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`).\n\n"] + sphere: (), + #[doc = "**Component**: `ambient_core::primitives::sphere_radius`\n\n**Suggested value**: `0.5f32`\n\n**Component description**: Set the radius of a `sphere` entity.\n\n"] + sphere_radius: f32, + #[doc = "**Component**: `ambient_core::primitives::sphere_sectors`\n\n**Suggested value**: `36u32`\n\n**Component description**: Set the longitudinal sectors of a `sphere` entity.\n\n"] + sphere_sectors: u32, + #[doc = "**Component**: `ambient_core::primitives::sphere_stacks`\n\n**Suggested value**: `18u32`\n\n**Component description**: Set the latitudinal stacks of a `sphere` entity.\n\n"] + sphere_stacks: u32, + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Sphere*.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] @@ -2229,6 +2377,20 @@ mod raw { crate::ambient_core::primitives::components::sphere_stacks(), ) } + pub struct Capsule { + #[doc = "**Component**: `ambient_core::primitives::capsule`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`).\n\n"] + capsule: (), + #[doc = "**Component**: `ambient_core::primitives::capsule_radius`\n\n**Suggested value**: `0.5f32`\n\n**Component description**: Set the radius of a `capsule` entity, spanning XY-plane.\n\n"] + capsule_radius: f32, + #[doc = "**Component**: `ambient_core::primitives::capsule_half_height`\n\n**Suggested value**: `0.5f32`\n\n**Component description**: Set the half-height of the `capsule` entity, spanning Z-axis, excluding the caps.\n\n"] + capsule_half_height: f32, + #[doc = "**Component**: `ambient_core::primitives::capsule_rings`\n\n**Suggested value**: `0u32`\n\n**Component description**: Set the number of sections between the caps.\n\n"] + capsule_rings: u32, + #[doc = "**Component**: `ambient_core::primitives::capsule_latitudes`\n\n**Suggested value**: `16u32`\n\n**Component description**: Set the number of latitudinal sections. Should be even.\n\n"] + capsule_latitudes: u32, + #[doc = "**Component**: `ambient_core::primitives::capsule_longitudes`\n\n**Suggested value**: `32u32`\n\n**Component description**: Set the number of longitudinal sections.\n\n"] + capsule_longitudes: u32, + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] @@ -2291,6 +2453,18 @@ mod raw { crate::ambient_core::primitives::components::capsule_longitudes(), ) } + pub struct Torus { + #[doc = "**Component**: `ambient_core::primitives::torus`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`).\n\n"] + torus: (), + #[doc = "**Component**: `ambient_core::primitives::torus_inner_radius`\n\n**Suggested value**: `0.25f32`\n\n**Component description**: Set the inner radius of a `torus` entity, spanning XY-plane.\n\n"] + torus_inner_radius: f32, + #[doc = "**Component**: `ambient_core::primitives::torus_outer_radius`\n\n**Suggested value**: `0.35f32`\n\n**Component description**: Set the outer radius of a `torus` entity, spanning XY-plane.\n\n"] + torus_outer_radius: f32, + #[doc = "**Component**: `ambient_core::primitives::torus_slices`\n\n**Suggested value**: `32u32`\n\n**Component description**: Set the slices of a `torus` entity, spanning XY-plane.\n\n"] + torus_slices: u32, + #[doc = "**Component**: `ambient_core::primitives::torus_loops`\n\n**Suggested value**: `16u32`\n\n**Component description**: Set the loops of a `torus` entity, spanning XY-plane.\n\n"] + torus_loops: u32, + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] @@ -2855,6 +3029,16 @@ mod raw { #[doc = r" They do not have any runtime representation outside of the components that compose them."] pub mod concepts { use crate::prelude::*; + pub struct Transformable { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + translation: Vec3, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + rotation: Quat, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + scale: Vec3, + #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] + local_to_world: Mat4, + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] #[doc = "Makes a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index 4854a808f5..b353ab5e2d 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -21,8 +21,10 @@ pub fn generate( .filter_map(|c| context.extract_item_if_relevant(items, *c)) .map(|concept| { let concept = &*concept; + let new = new::generate(items, type_printer, context, concept)?; let old = old::generate(items, type_printer, context, concept)?; Ok(quote! { + #new #old }) }) @@ -43,6 +45,78 @@ pub fn generate( }) } +mod new { + use super::*; + + pub(super) fn generate( + items: &ItemMap, + type_printer: &TypePrinter, + context: Context, + concept: &Concept, + ) -> anyhow::Result { + use std::fmt::Write; + + let name = &concept.data().id; + + let required_components = concept + .required_components + .iter() + .map(|(id, value)| { + let component_item_id = id.as_resolved().unwrap(); + + let component = items.get(component_item_id); + let component_id = &component.data.id; + + let component_ty = type_printer.get( + context, + items, + None, + component.type_.as_resolved().unwrap(), + )?; + + let mut doc_comment = String::new(); + + writeln!( + doc_comment, + "**Component**: `{}`", + items.fully_qualified_display_path(component, None, None) + )?; + writeln!(doc_comment)?; + + if let Some(value) = value.suggested.as_ref().and_then(|v| v.as_resolved()) { + writeln!( + doc_comment, + "**Suggested value**: `{}`", + SemiprettyTokenStream(value_to_token_stream(items, value)?) + )?; + writeln!(doc_comment)?; + } + + if let Some(description) = &value.description { + writeln!(doc_comment, "**Description**: {description}")?; + writeln!(doc_comment)?; + } + + if let Some(description) = &component.description { + writeln!(doc_comment, "**Component description**: {}", description)?; + writeln!(doc_comment)?; + } + + Ok(quote! { + #[doc = #doc_comment] + #component_id: #component_ty + }) + }) + .collect::>>()?; + + Ok(quote! { + pub struct #name { + #(#required_components),* + } + }) + } +} + mod old { use super::*; From b1f8aa9b2a3142926f8e5ab0d6e843018953c493 Mon Sep 17 00:00:00 2001 From: Philpax Date: Fri, 8 Sep 2023 11:59:22 +0200 Subject: [PATCH 13/35] feat(macro): improve doc comment --- guest/rust/api_core/src/internal/generated.rs | 224 +++++++++--------- .../package_macro_common/src/concepts.rs | 20 +- 2 files changed, 130 insertions(+), 114 deletions(-) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 1f42acc270..fbfcbb7d92 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -499,27 +499,27 @@ mod raw { use crate::prelude::*; pub struct Camera { #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - translation: Vec3, + pub translation: Vec3, #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - rotation: Quat, + pub rotation: Quat, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - scale: Vec3, + pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] - local_to_world: Mat4, + pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] - near: f32, + pub near: f32, #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] - projection: Mat4, + pub projection: Mat4, #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] - projection_view: Mat4, + pub projection_view: Mat4, #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] - active_camera: f32, + pub active_camera: f32, #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] - inv_local_to_world: Mat4, + pub inv_local_to_world: Mat4, } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] pub fn make_Camera() -> Entity { Entity::new() .with( @@ -568,7 +568,7 @@ mod raw { ]), ) } - #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Camera(id: EntityId) -> bool { entity::has_components( @@ -586,7 +586,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Camera() -> ( @@ -614,31 +614,31 @@ mod raw { } pub struct PerspectiveCommonCamera { #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - translation: Vec3, + pub translation: Vec3, #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - rotation: Quat, + pub rotation: Quat, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - scale: Vec3, + pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] - local_to_world: Mat4, + pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] - near: f32, + pub near: f32, #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] - projection: Mat4, + pub projection: Mat4, #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] - projection_view: Mat4, + pub projection_view: Mat4, #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] - active_camera: f32, + pub active_camera: f32, #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] - inv_local_to_world: Mat4, + pub inv_local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::fovy`\n\n**Suggested value**: `1f32`\n\n**Component description**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n"] - fovy: f32, + pub fovy: f32, #[doc = "**Component**: `ambient_core::camera::aspect_ratio`\n\n**Suggested value**: `1f32`\n\n**Component description**: The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n"] - aspect_ratio: f32, + pub aspect_ratio: f32, } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] + #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] pub fn make_PerspectiveCommonCamera() -> Entity { Entity::new() .with( @@ -692,7 +692,7 @@ mod raw { 1f32, ) } - #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveCommonCamera(id: EntityId) -> bool { entity::has_components( @@ -712,7 +712,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_PerspectiveCommonCamera() -> ( @@ -744,35 +744,35 @@ mod raw { } pub struct PerspectiveCamera { #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - translation: Vec3, + pub translation: Vec3, #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - rotation: Quat, + pub rotation: Quat, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - scale: Vec3, + pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] - local_to_world: Mat4, + pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] - near: f32, + pub near: f32, #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] - projection: Mat4, + pub projection: Mat4, #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] - projection_view: Mat4, + pub projection_view: Mat4, #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] - active_camera: f32, + pub active_camera: f32, #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] - inv_local_to_world: Mat4, + pub inv_local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::fovy`\n\n**Suggested value**: `1f32`\n\n**Component description**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n"] - fovy: f32, + pub fovy: f32, #[doc = "**Component**: `ambient_core::camera::aspect_ratio`\n\n**Suggested value**: `1f32`\n\n**Component description**: The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n"] - aspect_ratio: f32, + pub aspect_ratio: f32, #[doc = "**Component**: `ambient_core::camera::perspective`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this camera will use a standard perspective projection matrix.\nEnsure that `near` and `far` are set.\n\n"] - perspective: (), + pub perspective: (), #[doc = "**Component**: `ambient_core::camera::far`\n\n**Suggested value**: `1000f32`\n\n**Component description**: The far plane of this camera, measured in meters.\n\n"] - far: f32, + pub far: f32, } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] + #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] pub fn make_PerspectiveCamera() -> Entity { Entity::new() .with( @@ -828,7 +828,7 @@ mod raw { .with(crate::ambient_core::camera::components::perspective(), ()) .with(crate::ambient_core::camera::components::far(), 1000f32) } - #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveCamera(id: EntityId) -> bool { entity::has_components( @@ -850,7 +850,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_PerspectiveCamera() -> ( @@ -886,33 +886,33 @@ mod raw { } pub struct PerspectiveInfiniteReverseCamera { #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - translation: Vec3, + pub translation: Vec3, #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - rotation: Quat, + pub rotation: Quat, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - scale: Vec3, + pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] - local_to_world: Mat4, + pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] - near: f32, + pub near: f32, #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] - projection: Mat4, + pub projection: Mat4, #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] - projection_view: Mat4, + pub projection_view: Mat4, #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] - active_camera: f32, + pub active_camera: f32, #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] - inv_local_to_world: Mat4, + pub inv_local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::fovy`\n\n**Suggested value**: `1f32`\n\n**Component description**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n"] - fovy: f32, + pub fovy: f32, #[doc = "**Component**: `ambient_core::camera::aspect_ratio`\n\n**Suggested value**: `1f32`\n\n**Component description**: The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n"] - aspect_ratio: f32, + pub aspect_ratio: f32, #[doc = "**Component**: `ambient_core::camera::perspective_infinite_reverse`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this camera will use a perspective-infinite-reverse projection matrix.\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set.\n\n"] - perspective_infinite_reverse: (), + pub perspective_infinite_reverse: (), } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] + #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] pub fn make_PerspectiveInfiniteReverseCamera() -> Entity { Entity::new() .with( @@ -970,7 +970,7 @@ mod raw { (), ) } - #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveInfiniteReverseCamera(id: EntityId) -> bool { entity::has_components( @@ -992,7 +992,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_PerspectiveInfiniteReverseCamera() -> ( @@ -1026,39 +1026,39 @@ mod raw { } pub struct OrthographicCamera { #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - translation: Vec3, + pub translation: Vec3, #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - rotation: Quat, + pub rotation: Quat, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - scale: Vec3, + pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] - local_to_world: Mat4, + pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `-1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] - near: f32, + pub near: f32, #[doc = "**Component**: `ambient_core::camera::projection`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n"] - projection: Mat4, + pub projection: Mat4, #[doc = "**Component**: `ambient_core::camera::projection_view`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n"] - projection_view: Mat4, + pub projection_view: Mat4, #[doc = "**Component**: `ambient_core::camera::active_camera`\n\n**Suggested value**: `0f32`\n\n**Component description**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n"] - active_camera: f32, + pub active_camera: f32, #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] - inv_local_to_world: Mat4, + pub inv_local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::orthographic`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this camera will use a standard orthographic projection matrix.\nEnsure that the `orthographic_` components are set, including `left`, right`, `top` and `bottom`, as well as `near` and `far`.\n\n"] - orthographic: (), + pub orthographic: (), #[doc = "**Component**: `ambient_core::camera::orthographic_left`\n\n**Suggested value**: `-1f32`\n\n**Component description**: The left bound for this `orthographic` camera.\n\n"] - orthographic_left: f32, + pub orthographic_left: f32, #[doc = "**Component**: `ambient_core::camera::orthographic_right`\n\n**Suggested value**: `1f32`\n\n**Component description**: The right bound for this `orthographic` camera.\n\n"] - orthographic_right: f32, + pub orthographic_right: f32, #[doc = "**Component**: `ambient_core::camera::orthographic_top`\n\n**Suggested value**: `1f32`\n\n**Component description**: The top bound for this `orthographic` camera.\n\n"] - orthographic_top: f32, + pub orthographic_top: f32, #[doc = "**Component**: `ambient_core::camera::orthographic_bottom`\n\n**Suggested value**: `-1f32`\n\n**Component description**: The bottom bound for this `orthographic` camera.\n\n"] - orthographic_bottom: f32, + pub orthographic_bottom: f32, #[doc = "**Component**: `ambient_core::camera::far`\n\n**Suggested value**: `1f32`\n\n**Component description**: The far plane of this camera, measured in meters.\n\n"] - far: f32, + pub far: f32, } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] + #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] pub fn make_OrthographicCamera() -> Entity { Entity::new() .with( @@ -1125,7 +1125,7 @@ mod raw { ) .with(crate::ambient_core::camera::components::far(), 1f32) } - #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] + #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_OrthographicCamera(id: EntityId) -> bool { entity::has_components( @@ -1149,7 +1149,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] + #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_OrthographicCamera() -> ( @@ -2088,15 +2088,15 @@ mod raw { use crate::prelude::*; pub struct CharacterController { #[doc = "**Component**: `ambient_core::physics::character_controller_height`\n\n**Suggested value**: `2f32`\n\n**Component description**: The height of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider.\n\n"] - character_controller_height: f32, + pub character_controller_height: f32, #[doc = "**Component**: `ambient_core::physics::character_controller_radius`\n\n**Suggested value**: `0.5f32`\n\n**Component description**: The radius of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_height`, it will be given a physical character collider.\n\n"] - character_controller_radius: f32, + pub character_controller_radius: f32, #[doc = "**Component**: `ambient_core::physics::physics_controlled`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this entity will be controlled by physics.\nNote that this requires the entity to have a collider.\n\n"] - physics_controlled: (), + pub physics_controlled: (), } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] + #[doc = "Makes a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] pub fn make_CharacterController() -> Entity { Entity::new() .with( @@ -2112,7 +2112,7 @@ mod raw { (), ) } - #[doc = "Checks if the entity is a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] + #[doc = "Checks if the entity is a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] #[allow(non_snake_case)] pub fn is_CharacterController(id: EntityId) -> bool { entity::has_components( @@ -2126,7 +2126,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Character Controller* as a tuple.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] + #[doc = "Returns the components that comprise *Character Controller* as a tuple.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_CharacterController() -> (Component, Component, Component<()>) @@ -2321,17 +2321,17 @@ mod raw { use crate::prelude::*; pub struct Sphere { #[doc = "**Component**: `ambient_core::primitives::sphere`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`).\n\n"] - sphere: (), + pub sphere: (), #[doc = "**Component**: `ambient_core::primitives::sphere_radius`\n\n**Suggested value**: `0.5f32`\n\n**Component description**: Set the radius of a `sphere` entity.\n\n"] - sphere_radius: f32, + pub sphere_radius: f32, #[doc = "**Component**: `ambient_core::primitives::sphere_sectors`\n\n**Suggested value**: `36u32`\n\n**Component description**: Set the longitudinal sectors of a `sphere` entity.\n\n"] - sphere_sectors: u32, + pub sphere_sectors: u32, #[doc = "**Component**: `ambient_core::primitives::sphere_stacks`\n\n**Suggested value**: `18u32`\n\n**Component description**: Set the latitudinal stacks of a `sphere` entity.\n\n"] - sphere_stacks: u32, + pub sphere_stacks: u32, } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Sphere*.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] + #[doc = "Makes a *Sphere*.\n\nA primitive sphere.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] pub fn make_Sphere() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::sphere(), ()) @@ -2348,7 +2348,7 @@ mod raw { 18u32, ) } - #[doc = "Checks if the entity is a *Sphere*.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] + #[doc = "Checks if the entity is a *Sphere*.\n\nA primitive sphere.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Sphere(id: EntityId) -> bool { entity::has_components( @@ -2361,7 +2361,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Sphere* as a tuple.\n\nA primitive sphere.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] + #[doc = "Returns the components that comprise *Sphere* as a tuple.\n\nA primitive sphere.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Sphere() -> ( @@ -2379,21 +2379,21 @@ mod raw { } pub struct Capsule { #[doc = "**Component**: `ambient_core::primitives::capsule`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`).\n\n"] - capsule: (), + pub capsule: (), #[doc = "**Component**: `ambient_core::primitives::capsule_radius`\n\n**Suggested value**: `0.5f32`\n\n**Component description**: Set the radius of a `capsule` entity, spanning XY-plane.\n\n"] - capsule_radius: f32, + pub capsule_radius: f32, #[doc = "**Component**: `ambient_core::primitives::capsule_half_height`\n\n**Suggested value**: `0.5f32`\n\n**Component description**: Set the half-height of the `capsule` entity, spanning Z-axis, excluding the caps.\n\n"] - capsule_half_height: f32, + pub capsule_half_height: f32, #[doc = "**Component**: `ambient_core::primitives::capsule_rings`\n\n**Suggested value**: `0u32`\n\n**Component description**: Set the number of sections between the caps.\n\n"] - capsule_rings: u32, + pub capsule_rings: u32, #[doc = "**Component**: `ambient_core::primitives::capsule_latitudes`\n\n**Suggested value**: `16u32`\n\n**Component description**: Set the number of latitudinal sections. Should be even.\n\n"] - capsule_latitudes: u32, + pub capsule_latitudes: u32, #[doc = "**Component**: `ambient_core::primitives::capsule_longitudes`\n\n**Suggested value**: `32u32`\n\n**Component description**: Set the number of longitudinal sections.\n\n"] - capsule_longitudes: u32, + pub capsule_longitudes: u32, } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] + #[doc = "Makes a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] pub fn make_Capsule() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::capsule(), ()) @@ -2418,7 +2418,7 @@ mod raw { 32u32, ) } - #[doc = "Checks if the entity is a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] + #[doc = "Checks if the entity is a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Capsule(id: EntityId) -> bool { entity::has_components( @@ -2433,7 +2433,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Capsule* as a tuple.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] + #[doc = "Returns the components that comprise *Capsule* as a tuple.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Capsule() -> ( @@ -2455,19 +2455,19 @@ mod raw { } pub struct Torus { #[doc = "**Component**: `ambient_core::primitives::torus`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`).\n\n"] - torus: (), + pub torus: (), #[doc = "**Component**: `ambient_core::primitives::torus_inner_radius`\n\n**Suggested value**: `0.25f32`\n\n**Component description**: Set the inner radius of a `torus` entity, spanning XY-plane.\n\n"] - torus_inner_radius: f32, + pub torus_inner_radius: f32, #[doc = "**Component**: `ambient_core::primitives::torus_outer_radius`\n\n**Suggested value**: `0.35f32`\n\n**Component description**: Set the outer radius of a `torus` entity, spanning XY-plane.\n\n"] - torus_outer_radius: f32, + pub torus_outer_radius: f32, #[doc = "**Component**: `ambient_core::primitives::torus_slices`\n\n**Suggested value**: `32u32`\n\n**Component description**: Set the slices of a `torus` entity, spanning XY-plane.\n\n"] - torus_slices: u32, + pub torus_slices: u32, #[doc = "**Component**: `ambient_core::primitives::torus_loops`\n\n**Suggested value**: `16u32`\n\n**Component description**: Set the loops of a `torus` entity, spanning XY-plane.\n\n"] - torus_loops: u32, + pub torus_loops: u32, } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] + #[doc = "Makes a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] pub fn make_Torus() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::torus(), ()) @@ -2488,7 +2488,7 @@ mod raw { 16u32, ) } - #[doc = "Checks if the entity is a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] + #[doc = "Checks if the entity is a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Torus(id: EntityId) -> bool { entity::has_components( @@ -2502,7 +2502,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Torus* as a tuple.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] + #[doc = "Returns the components that comprise *Torus* as a tuple.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Torus() -> ( @@ -3031,17 +3031,17 @@ mod raw { use crate::prelude::*; pub struct Transformable { #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - translation: Vec3, + pub translation: Vec3, #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - rotation: Quat, + pub rotation: Quat, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - scale: Vec3, + pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] - local_to_world: Mat4, + pub local_to_world: Mat4, } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Makes a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] pub fn make_Transformable() -> Entity { Entity::new() .with( @@ -3064,7 +3064,7 @@ mod raw { ]), ) } - #[doc = "Checks if the entity is a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Checks if the entity is a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Transformable(id: EntityId) -> bool { entity::has_components( @@ -3077,7 +3077,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Transformable* as a tuple.\n\nCan be translated, rotated and scaled.\n\n*Definition*:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Returns the components that comprise *Transformable* as a tuple.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Transformable() -> ( diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index b353ab5e2d..a2bb058547 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -104,7 +104,7 @@ mod new { Ok(quote! { #[doc = #doc_comment] - #component_id: #component_ty + pub #component_id: #component_ty }) }) .collect::>>()?; @@ -280,7 +280,23 @@ pub fn generate_component_list_doc_comment( ) -> anyhow::Result { use std::fmt::Write; - let mut output = "*Definition*:\n\n```ignore\n{\n".to_string(); + let mut output = String::new(); + + if !concept.extends.is_empty() { + output.push_str("**Extends**: "); + for (i, id) in concept.extends.iter().enumerate() { + let extend = items.get(id.as_resolved().unwrap()); + if i != 0 { + output.push_str(", "); + } + + output.push_str(&items.fully_qualified_display_path(extend, None, None)); + } + writeln!(output)?; + writeln!(output)?; + } + + output.push_str("**Definition**:\n\n```ignore\n{\n"); for (id, value) in &concept.required_components { let component = &*items.get(id.as_resolved().unwrap()); From 761796241689d67e9f2ac29af99011bb1282ef45 Mon Sep 17 00:00:00 2001 From: Philpax Date: Fri, 8 Sep 2023 14:52:57 +0200 Subject: [PATCH 14/35] feat(macro): impl optional, stub trait for concept --- guest/rust/api_core/src/internal/generated.rs | 509 +++++++++++------- schema/schema/transform.toml | 6 +- .../package_macro_common/src/concepts.rs | 208 +++++-- shared_crates/package_semantic/src/lib.rs | 2 +- 4 files changed, 471 insertions(+), 254 deletions(-) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index fbfcbb7d92..0582daef20 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -497,13 +497,9 @@ mod raw { #[doc = r" They do not have any runtime representation outside of the components that compose them."] pub mod concepts { use crate::prelude::*; + #[doc = "**Camera**: Base components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: `ambient_core::transform::Transformable`"] + #[derive(Clone, Debug)] pub struct Camera { - #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - pub translation: Vec3, - #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - pub rotation: Quat, - #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] @@ -516,24 +512,41 @@ mod raw { pub active_camera: f32, #[doc = "**Component**: `ambient_core::transform::inv_local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Converts a world position to a local position.\nThis is automatically updated.\n\n"] pub inv_local_to_world: Mat4, + #[doc = r" Optional components."] + pub optional: CameraOptional, + } + #[doc = "Optional part of [Camera]."] + #[derive(Clone, Debug, Default)] + pub struct CameraOptional { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + pub translation: Option, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + pub rotation: Option, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + pub scale: Option, + } + impl crate::ecs::Concept for Camera { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] pub fn make_Camera() -> Entity { Entity::new() - .with( - crate::ambient_core::transform::components::translation(), - Vec3::new(0f32, 0f32, 0f32), - ) - .with( - crate::ambient_core::transform::components::rotation(), - Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), - ) - .with( - crate::ambient_core::transform::components::scale(), - Vec3::new(1f32, 1f32, 1f32), - ) .with( crate::ambient_core::transform::components::local_to_world(), Mat4::from_cols_array(&[ @@ -568,15 +581,12 @@ mod raw { ]), ) } - #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Camera(id: EntityId) -> bool { entity::has_components( id, &[ - &crate::ambient_core::transform::components::translation(), - &crate::ambient_core::transform::components::rotation(), - &crate::ambient_core::transform::components::scale(), &crate::ambient_core::transform::components::local_to_world(), &crate::ambient_core::camera::components::near(), &crate::ambient_core::camera::components::projection(), @@ -586,13 +596,10 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Camera() -> ( - Component, - Component, - Component, Component, Component, Component, @@ -601,9 +608,6 @@ mod raw { Component, ) { ( - crate::ambient_core::transform::components::translation(), - crate::ambient_core::transform::components::rotation(), - crate::ambient_core::transform::components::scale(), crate::ambient_core::transform::components::local_to_world(), crate::ambient_core::camera::components::near(), crate::ambient_core::camera::components::projection(), @@ -612,13 +616,9 @@ mod raw { crate::ambient_core::transform::components::inv_local_to_world(), ) } + #[doc = "**Perspective Common Camera**: Base components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: `ambient_core::camera::Camera`"] + #[derive(Clone, Debug)] pub struct PerspectiveCommonCamera { - #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - pub translation: Vec3, - #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - pub rotation: Quat, - #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] @@ -635,24 +635,41 @@ mod raw { pub fovy: f32, #[doc = "**Component**: `ambient_core::camera::aspect_ratio`\n\n**Suggested value**: `1f32`\n\n**Component description**: The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n"] pub aspect_ratio: f32, + #[doc = r" Optional components."] + pub optional: PerspectiveCommonCameraOptional, + } + #[doc = "Optional part of [PerspectiveCommonCamera]."] + #[derive(Clone, Debug, Default)] + pub struct PerspectiveCommonCameraOptional { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + pub translation: Option, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + pub rotation: Option, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + pub scale: Option, + } + impl crate::ecs::Concept for PerspectiveCommonCamera { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] + #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] pub fn make_PerspectiveCommonCamera() -> Entity { Entity::new() - .with( - crate::ambient_core::transform::components::translation(), - Vec3::new(0f32, 0f32, 0f32), - ) - .with( - crate::ambient_core::transform::components::rotation(), - Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), - ) - .with( - crate::ambient_core::transform::components::scale(), - Vec3::new(1f32, 1f32, 1f32), - ) .with( crate::ambient_core::transform::components::local_to_world(), Mat4::from_cols_array(&[ @@ -692,15 +709,12 @@ mod raw { 1f32, ) } - #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveCommonCamera(id: EntityId) -> bool { entity::has_components( id, &[ - &crate::ambient_core::transform::components::translation(), - &crate::ambient_core::transform::components::rotation(), - &crate::ambient_core::transform::components::scale(), &crate::ambient_core::transform::components::local_to_world(), &crate::ambient_core::camera::components::near(), &crate::ambient_core::camera::components::projection(), @@ -712,13 +726,10 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_PerspectiveCommonCamera() -> ( - Component, - Component, - Component, Component, Component, Component, @@ -729,9 +740,6 @@ mod raw { Component, ) { ( - crate::ambient_core::transform::components::translation(), - crate::ambient_core::transform::components::rotation(), - crate::ambient_core::transform::components::scale(), crate::ambient_core::transform::components::local_to_world(), crate::ambient_core::camera::components::near(), crate::ambient_core::camera::components::projection(), @@ -742,13 +750,9 @@ mod raw { crate::ambient_core::camera::components::aspect_ratio(), ) } + #[doc = "**Perspective Camera**: A perspective camera.\n\n**Extends**: `ambient_core::camera::PerspectiveCommonCamera`"] + #[derive(Clone, Debug)] pub struct PerspectiveCamera { - #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - pub translation: Vec3, - #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - pub rotation: Quat, - #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] @@ -769,24 +773,41 @@ mod raw { pub perspective: (), #[doc = "**Component**: `ambient_core::camera::far`\n\n**Suggested value**: `1000f32`\n\n**Component description**: The far plane of this camera, measured in meters.\n\n"] pub far: f32, + #[doc = r" Optional components."] + pub optional: PerspectiveCameraOptional, + } + #[doc = "Optional part of [PerspectiveCamera]."] + #[derive(Clone, Debug, Default)] + pub struct PerspectiveCameraOptional { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + pub translation: Option, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + pub rotation: Option, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + pub scale: Option, + } + impl crate::ecs::Concept for PerspectiveCamera { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] + #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] pub fn make_PerspectiveCamera() -> Entity { Entity::new() - .with( - crate::ambient_core::transform::components::translation(), - Vec3::new(0f32, 0f32, 0f32), - ) - .with( - crate::ambient_core::transform::components::rotation(), - Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), - ) - .with( - crate::ambient_core::transform::components::scale(), - Vec3::new(1f32, 1f32, 1f32), - ) .with( crate::ambient_core::transform::components::local_to_world(), Mat4::from_cols_array(&[ @@ -828,15 +849,12 @@ mod raw { .with(crate::ambient_core::camera::components::perspective(), ()) .with(crate::ambient_core::camera::components::far(), 1000f32) } - #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveCamera(id: EntityId) -> bool { entity::has_components( id, &[ - &crate::ambient_core::transform::components::translation(), - &crate::ambient_core::transform::components::rotation(), - &crate::ambient_core::transform::components::scale(), &crate::ambient_core::transform::components::local_to_world(), &crate::ambient_core::camera::components::near(), &crate::ambient_core::camera::components::projection(), @@ -850,13 +868,10 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_PerspectiveCamera() -> ( - Component, - Component, - Component, Component, Component, Component, @@ -869,9 +884,6 @@ mod raw { Component, ) { ( - crate::ambient_core::transform::components::translation(), - crate::ambient_core::transform::components::rotation(), - crate::ambient_core::transform::components::scale(), crate::ambient_core::transform::components::local_to_world(), crate::ambient_core::camera::components::near(), crate::ambient_core::camera::components::projection(), @@ -884,13 +896,9 @@ mod raw { crate::ambient_core::camera::components::far(), ) } + #[doc = "**Perspective-Infinite-Reverse Camera**: A perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: `ambient_core::camera::PerspectiveCommonCamera`"] + #[derive(Clone, Debug)] pub struct PerspectiveInfiniteReverseCamera { - #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - pub translation: Vec3, - #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - pub rotation: Quat, - #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `0.1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] @@ -909,24 +917,41 @@ mod raw { pub aspect_ratio: f32, #[doc = "**Component**: `ambient_core::camera::perspective_infinite_reverse`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this camera will use a perspective-infinite-reverse projection matrix.\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set.\n\n"] pub perspective_infinite_reverse: (), + #[doc = r" Optional components."] + pub optional: PerspectiveInfiniteReverseCameraOptional, + } + #[doc = "Optional part of [PerspectiveInfiniteReverseCamera]."] + #[derive(Clone, Debug, Default)] + pub struct PerspectiveInfiniteReverseCameraOptional { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + pub translation: Option, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + pub rotation: Option, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + pub scale: Option, + } + impl crate::ecs::Concept for PerspectiveInfiniteReverseCamera { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] + #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] pub fn make_PerspectiveInfiniteReverseCamera() -> Entity { Entity::new() - .with( - crate::ambient_core::transform::components::translation(), - Vec3::new(0f32, 0f32, 0f32), - ) - .with( - crate::ambient_core::transform::components::rotation(), - Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), - ) - .with( - crate::ambient_core::transform::components::scale(), - Vec3::new(1f32, 1f32, 1f32), - ) .with( crate::ambient_core::transform::components::local_to_world(), Mat4::from_cols_array(&[ @@ -970,15 +995,12 @@ mod raw { (), ) } - #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] + #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] #[allow(non_snake_case)] pub fn is_PerspectiveInfiniteReverseCamera(id: EntityId) -> bool { entity::has_components( id, &[ - &crate::ambient_core::transform::components::translation(), - &crate::ambient_core::transform::components::rotation(), - &crate::ambient_core::transform::components::scale(), &crate::ambient_core::transform::components::local_to_world(), &crate::ambient_core::camera::components::near(), &crate::ambient_core::camera::components::projection(), @@ -992,13 +1014,10 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] + #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_PerspectiveInfiniteReverseCamera() -> ( - Component, - Component, - Component, Component, Component, Component, @@ -1010,9 +1029,6 @@ mod raw { Component<()>, ) { ( - crate::ambient_core::transform::components::translation(), - crate::ambient_core::transform::components::rotation(), - crate::ambient_core::transform::components::scale(), crate::ambient_core::transform::components::local_to_world(), crate::ambient_core::camera::components::near(), crate::ambient_core::camera::components::projection(), @@ -1024,13 +1040,9 @@ mod raw { crate::ambient_core::camera::components::perspective_infinite_reverse(), ) } + #[doc = "**Orthographic Camera**: An orthographic camera.\n\n**Extends**: `ambient_core::camera::Camera`"] + #[derive(Clone, Debug)] pub struct OrthographicCamera { - #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - pub translation: Vec3, - #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - pub rotation: Quat, - #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - pub scale: Vec3, #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] pub local_to_world: Mat4, #[doc = "**Component**: `ambient_core::camera::near`\n\n**Suggested value**: `-1f32`\n\n**Component description**: The near plane of this camera, measured in meters.\n\n"] @@ -1055,24 +1067,41 @@ mod raw { pub orthographic_bottom: f32, #[doc = "**Component**: `ambient_core::camera::far`\n\n**Suggested value**: `1f32`\n\n**Component description**: The far plane of this camera, measured in meters.\n\n"] pub far: f32, + #[doc = r" Optional components."] + pub optional: OrthographicCameraOptional, + } + #[doc = "Optional part of [OrthographicCamera]."] + #[derive(Clone, Debug, Default)] + pub struct OrthographicCameraOptional { + #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] + pub translation: Option, + #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] + pub rotation: Option, + #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] + pub scale: Option, + } + impl crate::ecs::Concept for OrthographicCamera { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] + #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] pub fn make_OrthographicCamera() -> Entity { Entity::new() - .with( - crate::ambient_core::transform::components::translation(), - Vec3::new(0f32, 0f32, 0f32), - ) - .with( - crate::ambient_core::transform::components::rotation(), - Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), - ) - .with( - crate::ambient_core::transform::components::scale(), - Vec3::new(1f32, 1f32, 1f32), - ) .with( crate::ambient_core::transform::components::local_to_world(), Mat4::from_cols_array(&[ @@ -1125,15 +1154,12 @@ mod raw { ) .with(crate::ambient_core::camera::components::far(), 1f32) } - #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] + #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_OrthographicCamera(id: EntityId) -> bool { entity::has_components( id, &[ - &crate::ambient_core::transform::components::translation(), - &crate::ambient_core::transform::components::rotation(), - &crate::ambient_core::transform::components::scale(), &crate::ambient_core::transform::components::local_to_world(), &crate::ambient_core::camera::components::near(), &crate::ambient_core::camera::components::projection(), @@ -1149,13 +1175,10 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] + #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_OrthographicCamera() -> ( - Component, - Component, - Component, Component, Component, Component, @@ -1170,9 +1193,6 @@ mod raw { Component, ) { ( - crate::ambient_core::transform::components::translation(), - crate::ambient_core::transform::components::rotation(), - crate::ambient_core::transform::components::scale(), crate::ambient_core::transform::components::local_to_world(), crate::ambient_core::camera::components::near(), crate::ambient_core::camera::components::projection(), @@ -2086,6 +2106,8 @@ mod raw { #[doc = r" They do not have any runtime representation outside of the components that compose them."] pub mod concepts { use crate::prelude::*; + #[doc = "**Character Controller**: A capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule."] + #[derive(Clone, Debug)] pub struct CharacterController { #[doc = "**Component**: `ambient_core::physics::character_controller_height`\n\n**Suggested value**: `2f32`\n\n**Component description**: The height of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider.\n\n"] pub character_controller_height: f32, @@ -2094,9 +2116,26 @@ mod raw { #[doc = "**Component**: `ambient_core::physics::physics_controlled`\n\n**Suggested value**: `()`\n\n**Component description**: If attached, this entity will be controlled by physics.\nNote that this requires the entity to have a collider.\n\n"] pub physics_controlled: (), } + impl crate::ecs::Concept for CharacterController { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] + #[doc = "Makes a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] pub fn make_CharacterController() -> Entity { Entity::new() .with( @@ -2112,7 +2151,7 @@ mod raw { (), ) } - #[doc = "Checks if the entity is a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] + #[doc = "Checks if the entity is a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] #[allow(non_snake_case)] pub fn is_CharacterController(id: EntityId) -> bool { entity::has_components( @@ -2126,7 +2165,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Character Controller* as a tuple.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] + #[doc = "Returns the components that comprise *Character Controller* as a tuple.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_CharacterController() -> (Component, Component, Component<()>) @@ -2319,6 +2358,8 @@ mod raw { #[doc = r" They do not have any runtime representation outside of the components that compose them."] pub mod concepts { use crate::prelude::*; + #[doc = "**Sphere**: A primitive sphere."] + #[derive(Clone, Debug)] pub struct Sphere { #[doc = "**Component**: `ambient_core::primitives::sphere`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`).\n\n"] pub sphere: (), @@ -2329,9 +2370,26 @@ mod raw { #[doc = "**Component**: `ambient_core::primitives::sphere_stacks`\n\n**Suggested value**: `18u32`\n\n**Component description**: Set the latitudinal stacks of a `sphere` entity.\n\n"] pub sphere_stacks: u32, } + impl crate::ecs::Concept for Sphere { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Sphere*.\n\nA primitive sphere.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] + #[doc = "Makes a *Sphere*.\n\nA primitive sphere.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] pub fn make_Sphere() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::sphere(), ()) @@ -2348,7 +2406,7 @@ mod raw { 18u32, ) } - #[doc = "Checks if the entity is a *Sphere*.\n\nA primitive sphere.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] + #[doc = "Checks if the entity is a *Sphere*.\n\nA primitive sphere.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Sphere(id: EntityId) -> bool { entity::has_components( @@ -2361,7 +2419,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Sphere* as a tuple.\n\nA primitive sphere.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] + #[doc = "Returns the components that comprise *Sphere* as a tuple.\n\nA primitive sphere.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Sphere() -> ( @@ -2377,6 +2435,8 @@ mod raw { crate::ambient_core::primitives::components::sphere_stacks(), ) } + #[doc = "**Capsule**: A primitive capsule. Defined as a cylinder capped by hemispheres."] + #[derive(Clone, Debug)] pub struct Capsule { #[doc = "**Component**: `ambient_core::primitives::capsule`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`).\n\n"] pub capsule: (), @@ -2391,9 +2451,26 @@ mod raw { #[doc = "**Component**: `ambient_core::primitives::capsule_longitudes`\n\n**Suggested value**: `32u32`\n\n**Component description**: Set the number of longitudinal sections.\n\n"] pub capsule_longitudes: u32, } + impl crate::ecs::Concept for Capsule { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] + #[doc = "Makes a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] pub fn make_Capsule() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::capsule(), ()) @@ -2418,7 +2495,7 @@ mod raw { 32u32, ) } - #[doc = "Checks if the entity is a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] + #[doc = "Checks if the entity is a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Capsule(id: EntityId) -> bool { entity::has_components( @@ -2433,7 +2510,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Capsule* as a tuple.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] + #[doc = "Returns the components that comprise *Capsule* as a tuple.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Capsule() -> ( @@ -2453,6 +2530,8 @@ mod raw { crate::ambient_core::primitives::components::capsule_longitudes(), ) } + #[doc = "**Torus**: A primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution."] + #[derive(Clone, Debug)] pub struct Torus { #[doc = "**Component**: `ambient_core::primitives::torus`\n\n**Suggested value**: `()`\n\n**Component description**: If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`).\n\n"] pub torus: (), @@ -2465,9 +2544,26 @@ mod raw { #[doc = "**Component**: `ambient_core::primitives::torus_loops`\n\n**Suggested value**: `16u32`\n\n**Component description**: Set the loops of a `torus` entity, spanning XY-plane.\n\n"] pub torus_loops: u32, } + impl crate::ecs::Concept for Torus { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } + } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] + #[doc = "Makes a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] pub fn make_Torus() -> Entity { Entity::new() .with(crate::ambient_core::primitives::components::torus(), ()) @@ -2488,7 +2584,7 @@ mod raw { 16u32, ) } - #[doc = "Checks if the entity is a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] + #[doc = "Checks if the entity is a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Torus(id: EntityId) -> bool { entity::has_components( @@ -2502,7 +2598,7 @@ mod raw { ], ) } - #[doc = "Returns the components that comprise *Torus* as a tuple.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] + #[doc = "Returns the components that comprise *Torus* as a tuple.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] pub fn tuple_Torus() -> ( @@ -3029,69 +3125,66 @@ mod raw { #[doc = r" They do not have any runtime representation outside of the components that compose them."] pub mod concepts { use crate::prelude::*; + #[doc = "**Transformable**: Can be translated, rotated and scaled."] + #[derive(Clone, Debug)] pub struct Transformable { + #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] + pub local_to_world: Mat4, + #[doc = r" Optional components."] + pub optional: TransformableOptional, + } + #[doc = "Optional part of [Transformable]."] + #[derive(Clone, Debug, Default)] + pub struct TransformableOptional { #[doc = "**Component**: `ambient_core::transform::translation`\n\n**Suggested value**: `Vec3::new(0f32, 0f32, 0f32, )`\n\n**Component description**: The translation/position of this entity.\n\n"] - pub translation: Vec3, + pub translation: Option, #[doc = "**Component**: `ambient_core::transform::rotation`\n\n**Suggested value**: `Quat::from_xyzw(0f32, 0f32, 0f32, 1f32, )`\n\n**Component description**: The rotation of this entity.\n\n"] - pub rotation: Quat, + pub rotation: Option, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] - pub scale: Vec3, - #[doc = "**Component**: `ambient_core::transform::local_to_world`\n\n**Suggested value**: `Mat4::from_cols_array(&[1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, ])`\n\n**Component description**: Transformation from the entity's local space to worldspace.\n\n"] - pub local_to_world: Mat4, + pub scale: Option, + } + impl crate::ecs::Concept for Transformable { + fn make(&self) -> Entity { + Entity::new() + } + fn get_spawned(id: EntityId) -> Option { + None + } + fn get_unspawned(entity: Entity) -> Option { + None + } + fn contained_by_spawned(id: EntityId) -> Option { + None + } + fn contained_by_unspawned(entity: Entity) -> Option { + None + } } #[allow(clippy::approx_constant)] #[allow(non_snake_case)] - #[doc = "Makes a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Makes a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] pub fn make_Transformable() -> Entity { - Entity::new() - .with( - crate::ambient_core::transform::components::translation(), - Vec3::new(0f32, 0f32, 0f32), - ) - .with( - crate::ambient_core::transform::components::rotation(), - Quat::from_xyzw(0f32, 0f32, 0f32, 1f32), - ) - .with( - crate::ambient_core::transform::components::scale(), - Vec3::new(1f32, 1f32, 1f32), - ) - .with( - crate::ambient_core::transform::components::local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) + Entity::new().with( + crate::ambient_core::transform::components::local_to_world(), + Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, + 0f32, 0f32, 0f32, 1f32, + ]), + ) } - #[doc = "Checks if the entity is a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Checks if the entity is a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(non_snake_case)] pub fn is_Transformable(id: EntityId) -> bool { entity::has_components( id, - &[ - &crate::ambient_core::transform::components::translation(), - &crate::ambient_core::transform::components::rotation(), - &crate::ambient_core::transform::components::scale(), - &crate::ambient_core::transform::components::local_to_world(), - ], + &[&crate::ambient_core::transform::components::local_to_world()], ) } - #[doc = "Returns the components that comprise *Transformable* as a tuple.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n\n```ignore\n{\n \"ambient_core::transform::translation\": Vec3 = Vec3(0.0, 0.0, 0.0),\n \"ambient_core::transform::rotation\": Quat = Quat(0.0, 0.0, 0.0, 1.0),\n \"ambient_core::transform::scale\": Vec3 = Vec3(1.0, 1.0, 1.0),\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] + #[doc = "Returns the components that comprise *Transformable* as a tuple.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] #[allow(clippy::type_complexity)] #[allow(non_snake_case)] - pub fn tuple_Transformable() -> ( - Component, - Component, - Component, - Component, - ) { - ( - crate::ambient_core::transform::components::translation(), - crate::ambient_core::transform::components::rotation(), - crate::ambient_core::transform::components::scale(), - crate::ambient_core::transform::components::local_to_world(), - ) + pub fn tuple_Transformable() -> (Component) { + (crate::ambient_core::transform::components::local_to_world()) } } } diff --git a/schema/schema/transform.toml b/schema/schema/transform.toml index 02bc4f3a93..d69f5af05f 100644 --- a/schema/schema/transform.toml +++ b/schema/schema/transform.toml @@ -102,7 +102,9 @@ name = "Transformable" description = "Can be translated, rotated and scaled." [concepts.Transformable.components.required] +local_to_world = { suggested = "Identity" } + +[concepts.Transformable.components.optional] translation = { suggested = [0.0, 0.0, 0.0] } rotation = { suggested = [0.0, 0.0, 0.0, 1.0] } -scale = { suggested = [1.0, 1.0, 1.0] } -local_to_world = { suggested = "Identity" } +scale = { suggested = [1.0, 1.0, 1.0] } \ No newline at end of file diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index a2bb058547..fe855f9239 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -1,4 +1,10 @@ -use ambient_package_semantic::{Concept, Item, ItemMap, ScalarValue, Scope, Value}; +use std::fmt::Write; + +use ambient_package::Identifier; +use ambient_package_semantic::{ + Component, Concept, ConceptValue, Item, ItemId, ItemMap, ScalarValue, Scope, Value, +}; + use proc_macro2::TokenStream; use quote::quote; @@ -21,7 +27,7 @@ pub fn generate( .filter_map(|c| context.extract_item_if_relevant(items, *c)) .map(|concept| { let concept = &*concept; - let new = new::generate(items, type_printer, context, concept)?; + let new = new::generate(items, type_printer, context, &guest_api_path, concept)?; let old = old::generate(items, type_printer, context, concept)?; Ok(quote! { #new @@ -46,75 +52,193 @@ pub fn generate( } mod new { + use super::*; pub(super) fn generate( items: &ItemMap, type_printer: &TypePrinter, context: Context, + guest_api_path: &TokenStream, concept: &Concept, ) -> anyhow::Result { - use std::fmt::Write; - - let name = &concept.data().id; + let concept_id = &concept.data().id; let required_components = concept .required_components .iter() .map(|(id, value)| { let component_item_id = id.as_resolved().unwrap(); + let ComponentField { + doc_comment, + component_id, + component_ty, + } = component_to_field(items, type_printer, context, component_item_id, value)?; - let component = items.get(component_item_id); - let component_id = &component.data.id; - - let component_ty = type_printer.get( - context, - items, - None, - component.type_.as_resolved().unwrap(), - )?; + Ok(quote! { + #[doc = #doc_comment] + pub #component_id: #component_ty + }) + }) + .collect::>>()?; - let mut doc_comment = String::new(); + let mut doc_comment = String::new(); + write!( + doc_comment, + "**{}**", + concept.name.as_deref().unwrap_or(concept_id.as_str()) + )?; + if let Some(description) = &concept.description { + write!(doc_comment, ": {}", description)?; + } + writeln!(doc_comment)?; + writeln!(doc_comment)?; + + if !concept.extends.is_empty() { + write!(doc_comment, "**Extends**: ")?; + for (i, id) in concept.extends.iter().enumerate() { + let extend = items.get(id.as_resolved().unwrap()); + if i != 0 { + doc_comment.push_str(", "); + } - writeln!( + write!( doc_comment, - "**Component**: `{}`", - items.fully_qualified_display_path(component, None, None) + "`{}`", + &items.fully_qualified_display_path(extend, None, None) )?; - writeln!(doc_comment)?; + } + writeln!(doc_comment)?; + writeln!(doc_comment)?; + } - if let Some(value) = value.suggested.as_ref().and_then(|v| v.as_resolved()) { - writeln!( + let doc_comment = doc_comment.trim(); + + let (optional_ref, optional_concept_def) = if !concept.optional_components.is_empty() { + let concept_optional_id = quote::format_ident!("{}Optional", concept_id.as_str()); + + let optional_components = concept + .optional_components + .iter() + .map(|(id, value)| { + let component_item_id = id.as_resolved().unwrap(); + let ComponentField { doc_comment, - "**Suggested value**: `{}`", - SemiprettyTokenStream(value_to_token_stream(items, value)?) - )?; - writeln!(doc_comment)?; + component_id, + component_ty, + } = component_to_field(items, type_printer, context, component_item_id, value)?; + + Ok(quote! { + #[doc = #doc_comment] + pub #component_id: Option<#component_ty> + }) + }) + .collect::>>()?; + + let doc_comment = format!("Optional part of [{}].", concept_id); + + ( + Some(quote! { + /// Optional components. + pub optional: #concept_optional_id, + }), + Some(quote! { + #[doc = #doc_comment] + #[derive(Clone, Debug, Default)] + pub struct #concept_optional_id { + #(#optional_components),* + } + }), + ) + } else { + (None, None) + }; + + Ok(quote! { + #[doc = #doc_comment] + #[derive(Clone, Debug)] + pub struct #concept_id { + #(#required_components,)* + #optional_ref + } + #optional_concept_def + impl #guest_api_path::ecs::Concept for #concept_id { + fn make(&self) -> Entity { + Entity::new() } - if let Some(description) = &value.description { - writeln!(doc_comment, "**Description**: {description}")?; - writeln!(doc_comment)?; + fn get_spawned(id: EntityId) -> Option { + None } - if let Some(description) = &component.description { - writeln!(doc_comment, "**Component description**: {}", description)?; - writeln!(doc_comment)?; + fn get_unspawned(entity: Entity) -> Option { + None } - Ok(quote! { - #[doc = #doc_comment] - pub #component_id: #component_ty - }) - }) - .collect::>>()?; + fn contained_by_spawned(id: EntityId) -> Option { + None + } - Ok(quote! { - pub struct #name { - #(#required_components),* + fn contained_by_unspawned(entity: Entity) -> Option { + None + } } }) } + + struct ComponentField<'a> { + doc_comment: String, + component_id: &'a Identifier, + component_ty: TokenStream, + } + + fn component_to_field<'a>( + items: &'a ItemMap, + type_printer: &TypePrinter, + context: Context, + component_item_id: ItemId, + value: &ConceptValue, + ) -> anyhow::Result> { + let component = items.get(component_item_id); + let component_id = &component.data.id; + + let component_ty = + type_printer.get(context, items, None, component.type_.as_resolved().unwrap())?; + + let mut doc_comment = String::new(); + + writeln!( + doc_comment, + "**Component**: `{}`", + items.fully_qualified_display_path(component, None, None) + )?; + writeln!(doc_comment)?; + + if let Some(value) = value.suggested.as_ref().and_then(|v| v.as_resolved()) { + writeln!( + doc_comment, + "**Suggested value**: `{}`", + SemiprettyTokenStream(value_to_token_stream(items, value)?) + )?; + writeln!(doc_comment)?; + } + + if let Some(description) = &value.description { + writeln!(doc_comment, "**Description**: {description}")?; + writeln!(doc_comment)?; + } + + if let Some(description) = &component.description { + writeln!(doc_comment, "**Component description**: {}", description)?; + writeln!(doc_comment)?; + } + + Ok(ComponentField { + doc_comment, + component_id, + component_ty, + }) + } } mod old { @@ -278,8 +402,6 @@ pub fn generate_component_list_doc_comment( context: Context, concept: &Concept, ) -> anyhow::Result { - use std::fmt::Write; - let mut output = String::new(); if !concept.extends.is_empty() { @@ -296,7 +418,7 @@ pub fn generate_component_list_doc_comment( writeln!(output)?; } - output.push_str("**Definition**:\n\n```ignore\n{\n"); + output.push_str("**Definition**:\n```ignore\n{\n"); for (id, value) in &concept.required_components { let component = &*items.get(id.as_resolved().unwrap()); diff --git a/shared_crates/package_semantic/src/lib.rs b/shared_crates/package_semantic/src/lib.rs index 9dae73d0b5..e773a367b1 100644 --- a/shared_crates/package_semantic/src/lib.rs +++ b/shared_crates/package_semantic/src/lib.rs @@ -28,7 +28,7 @@ mod component; pub use component::Component; mod concept; -pub use concept::Concept; +pub use concept::{Concept, ConceptValue}; mod attribute; pub use attribute::Attribute; From 1da74f7f72efa8987f1107a20a15ae7c61a3e74a Mon Sep 17 00:00:00 2001 From: Philpax Date: Fri, 8 Sep 2023 17:31:36 +0200 Subject: [PATCH 15/35] feat(macro): finish implementing concept trait --- guest/rust/api_core/src/ecs.rs | 16 +- .../api_core/src/internal/component/entity.rs | 7 + guest/rust/api_core/src/internal/generated.rs | 1065 +++++++++++++++-- .../package_macro_common/src/concepts.rs | 318 +++-- 4 files changed, 1215 insertions(+), 191 deletions(-) diff --git a/guest/rust/api_core/src/ecs.rs b/guest/rust/api_core/src/ecs.rs index 1c0b2c3dce..c62e070c0a 100644 --- a/guest/rust/api_core/src/ecs.rs +++ b/guest/rust/api_core/src/ecs.rs @@ -16,7 +16,7 @@ use crate::prelude::EntityId; /// For example, a `Camera` concept might describe a camera in the game world, and have a `near` and `projection` component. pub trait Concept { /// Creates an entity with the components defined by this concept. - fn make(&self) -> Entity; + fn make(self) -> Entity; /// If the entity with `id` exists and has the components defined by this concept, returns this concept with all of the values of the components in the entity. /// @@ -37,28 +37,28 @@ pub trait Concept { /// println!("{}", camera.near); /// } /// ``` - fn get_unspawned(entity: Entity) -> Option + fn get_unspawned(entity: &Entity) -> Option where Self: Sized; - /// Returns `Some(id)` if `id` exists and contains the components defined by this concept. + /// Returns true if `id` exists and contains the components defined by this concept. /// /// # Examples /// ``` - /// if let Some(id) = Camera::contained_by_spawned(id) { + /// if Camera::contained_by_spawned(id) { /// // ... /// } /// ``` - fn contained_by_spawned(id: EntityId) -> Option; - /// Returns `Some(entity)` if contains the components defined by this concept. + fn contained_by_spawned(id: EntityId) -> bool; + /// Returns true if contains the components defined by this concept. /// /// # Examples /// ``` - /// if let Some(ent) = Camera::contained_by_unspawned(ent) { + /// if Camera::contained_by_unspawned(ent) { /// // ... /// } /// ``` - fn contained_by_unspawned(entity: Entity) -> Option; + fn contained_by_unspawned(entity: &Entity) -> bool; } impl From for Entity { fn from(concept: T) -> Self { diff --git a/guest/rust/api_core/src/internal/component/entity.rs b/guest/rust/api_core/src/internal/component/entity.rs index b59be5798d..23a1dae6af 100644 --- a/guest/rust/api_core/src/internal/component/entity.rs +++ b/guest/rust/api_core/src/internal/component/entity.rs @@ -23,6 +23,13 @@ impl Entity { self.0.contains_key(&component.index()) } + /// Returns true if this has all of `components`. + pub fn has_components(&self, components: &[&dyn UntypedComponent]) -> bool { + components + .iter() + .all(|component| self.0.contains_key(&component.index())) + } + /// Gets the data for `component` in this, if it exists. pub fn get(&self, component: Component) -> Option { T::from_value(self.0.get(&component.index())?.clone()) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 0582daef20..019b09cd9a 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -526,20 +526,134 @@ mod raw { pub scale: Option, } impl crate::ecs::Concept for Camera { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity::new() + .with( + crate::ambient_core::transform::components::local_to_world(), + self.local_to_world, + ) + .with(crate::ambient_core::camera::components::near(), self.near) + .with( + crate::ambient_core::camera::components::projection(), + self.projection, + ) + .with( + crate::ambient_core::camera::components::projection_view(), + self.projection_view, + ) + .with( + crate::ambient_core::camera::components::active_camera(), + self.active_camera, + ) + .with( + crate::ambient_core::transform::components::inv_local_to_world(), + self.inv_local_to_world, + ); + if let Some(translation) = self.optional.translation { + entity.set( + crate::ambient_core::transform::components::translation(), + translation, + ); + } + if let Some(rotation) = self.optional.rotation { + entity.set( + crate::ambient_core::transform::components::rotation(), + rotation, + ); + } + if let Some(scale) = self.optional.scale { + entity.set(crate::ambient_core::transform::components::scale(), scale); + } + entity } fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::local_to_world(), + )?, + near: entity::get_component( + id, + crate::ambient_core::camera::components::near(), + )?, + projection: entity::get_component( + id, + crate::ambient_core::camera::components::projection(), + )?, + projection_view: entity::get_component( + id, + crate::ambient_core::camera::components::projection_view(), + )?, + active_camera: entity::get_component( + id, + crate::ambient_core::camera::components::active_camera(), + )?, + inv_local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + optional: CameraOptional { + translation: entity::get_component( + id, + crate::ambient_core::transform::components::translation(), + ), + rotation: entity::get_component( + id, + crate::ambient_core::transform::components::rotation(), + ), + scale: entity::get_component( + id, + crate::ambient_core::transform::components::scale(), + ), + }, + }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + local_to_world: entity + .get(crate::ambient_core::transform::components::local_to_world())?, + near: entity.get(crate::ambient_core::camera::components::near())?, + projection: entity + .get(crate::ambient_core::camera::components::projection())?, + projection_view: entity + .get(crate::ambient_core::camera::components::projection_view())?, + active_camera: entity + .get(crate::ambient_core::camera::components::active_camera())?, + inv_local_to_world: entity.get( + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + optional: CameraOptional { + translation: entity + .get(crate::ambient_core::transform::components::translation()), + rotation: entity + .get(crate::ambient_core::transform::components::rotation()), + scale: entity + .get(crate::ambient_core::transform::components::scale()), + }, + }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + ], + ) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + ]) } } #[allow(clippy::approx_constant)] @@ -649,20 +763,154 @@ mod raw { pub scale: Option, } impl crate::ecs::Concept for PerspectiveCommonCamera { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity::new() + .with( + crate::ambient_core::transform::components::local_to_world(), + self.local_to_world, + ) + .with(crate::ambient_core::camera::components::near(), self.near) + .with( + crate::ambient_core::camera::components::projection(), + self.projection, + ) + .with( + crate::ambient_core::camera::components::projection_view(), + self.projection_view, + ) + .with( + crate::ambient_core::camera::components::active_camera(), + self.active_camera, + ) + .with( + crate::ambient_core::transform::components::inv_local_to_world(), + self.inv_local_to_world, + ) + .with(crate::ambient_core::camera::components::fovy(), self.fovy) + .with( + crate::ambient_core::camera::components::aspect_ratio(), + self.aspect_ratio, + ); + if let Some(translation) = self.optional.translation { + entity.set( + crate::ambient_core::transform::components::translation(), + translation, + ); + } + if let Some(rotation) = self.optional.rotation { + entity.set( + crate::ambient_core::transform::components::rotation(), + rotation, + ); + } + if let Some(scale) = self.optional.scale { + entity.set(crate::ambient_core::transform::components::scale(), scale); + } + entity } fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::local_to_world(), + )?, + near: entity::get_component( + id, + crate::ambient_core::camera::components::near(), + )?, + projection: entity::get_component( + id, + crate::ambient_core::camera::components::projection(), + )?, + projection_view: entity::get_component( + id, + crate::ambient_core::camera::components::projection_view(), + )?, + active_camera: entity::get_component( + id, + crate::ambient_core::camera::components::active_camera(), + )?, + inv_local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + fovy: entity::get_component( + id, + crate::ambient_core::camera::components::fovy(), + )?, + aspect_ratio: entity::get_component( + id, + crate::ambient_core::camera::components::aspect_ratio(), + )?, + optional: PerspectiveCommonCameraOptional { + translation: entity::get_component( + id, + crate::ambient_core::transform::components::translation(), + ), + rotation: entity::get_component( + id, + crate::ambient_core::transform::components::rotation(), + ), + scale: entity::get_component( + id, + crate::ambient_core::transform::components::scale(), + ), + }, + }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + local_to_world: entity + .get(crate::ambient_core::transform::components::local_to_world())?, + near: entity.get(crate::ambient_core::camera::components::near())?, + projection: entity + .get(crate::ambient_core::camera::components::projection())?, + projection_view: entity + .get(crate::ambient_core::camera::components::projection_view())?, + active_camera: entity + .get(crate::ambient_core::camera::components::active_camera())?, + inv_local_to_world: entity.get( + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + fovy: entity.get(crate::ambient_core::camera::components::fovy())?, + aspect_ratio: entity + .get(crate::ambient_core::camera::components::aspect_ratio())?, + optional: PerspectiveCommonCameraOptional { + translation: entity + .get(crate::ambient_core::transform::components::translation()), + rotation: entity + .get(crate::ambient_core::transform::components::rotation()), + scale: entity + .get(crate::ambient_core::transform::components::scale()), + }, + }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::fovy(), + &crate::ambient_core::camera::components::aspect_ratio(), + ], + ) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::fovy(), + &crate::ambient_core::camera::components::aspect_ratio(), + ]) } } #[allow(clippy::approx_constant)] @@ -787,20 +1035,174 @@ mod raw { pub scale: Option, } impl crate::ecs::Concept for PerspectiveCamera { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity::new() + .with( + crate::ambient_core::transform::components::local_to_world(), + self.local_to_world, + ) + .with(crate::ambient_core::camera::components::near(), self.near) + .with( + crate::ambient_core::camera::components::projection(), + self.projection, + ) + .with( + crate::ambient_core::camera::components::projection_view(), + self.projection_view, + ) + .with( + crate::ambient_core::camera::components::active_camera(), + self.active_camera, + ) + .with( + crate::ambient_core::transform::components::inv_local_to_world(), + self.inv_local_to_world, + ) + .with(crate::ambient_core::camera::components::fovy(), self.fovy) + .with( + crate::ambient_core::camera::components::aspect_ratio(), + self.aspect_ratio, + ) + .with( + crate::ambient_core::camera::components::perspective(), + self.perspective, + ) + .with(crate::ambient_core::camera::components::far(), self.far); + if let Some(translation) = self.optional.translation { + entity.set( + crate::ambient_core::transform::components::translation(), + translation, + ); + } + if let Some(rotation) = self.optional.rotation { + entity.set( + crate::ambient_core::transform::components::rotation(), + rotation, + ); + } + if let Some(scale) = self.optional.scale { + entity.set(crate::ambient_core::transform::components::scale(), scale); + } + entity } fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::local_to_world(), + )?, + near: entity::get_component( + id, + crate::ambient_core::camera::components::near(), + )?, + projection: entity::get_component( + id, + crate::ambient_core::camera::components::projection(), + )?, + projection_view: entity::get_component( + id, + crate::ambient_core::camera::components::projection_view(), + )?, + active_camera: entity::get_component( + id, + crate::ambient_core::camera::components::active_camera(), + )?, + inv_local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + fovy: entity::get_component( + id, + crate::ambient_core::camera::components::fovy(), + )?, + aspect_ratio: entity::get_component( + id, + crate::ambient_core::camera::components::aspect_ratio(), + )?, + perspective: entity::get_component( + id, + crate::ambient_core::camera::components::perspective(), + )?, + far: entity::get_component( + id, + crate::ambient_core::camera::components::far(), + )?, + optional: PerspectiveCameraOptional { + translation: entity::get_component( + id, + crate::ambient_core::transform::components::translation(), + ), + rotation: entity::get_component( + id, + crate::ambient_core::transform::components::rotation(), + ), + scale: entity::get_component( + id, + crate::ambient_core::transform::components::scale(), + ), + }, + }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + local_to_world: entity + .get(crate::ambient_core::transform::components::local_to_world())?, + near: entity.get(crate::ambient_core::camera::components::near())?, + projection: entity + .get(crate::ambient_core::camera::components::projection())?, + projection_view: entity + .get(crate::ambient_core::camera::components::projection_view())?, + active_camera: entity + .get(crate::ambient_core::camera::components::active_camera())?, + inv_local_to_world: entity.get( + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + fovy: entity.get(crate::ambient_core::camera::components::fovy())?, + aspect_ratio: entity + .get(crate::ambient_core::camera::components::aspect_ratio())?, + perspective: entity + .get(crate::ambient_core::camera::components::perspective())?, + far: entity.get(crate::ambient_core::camera::components::far())?, + optional: PerspectiveCameraOptional { + translation: entity + .get(crate::ambient_core::transform::components::translation()), + rotation: entity + .get(crate::ambient_core::transform::components::rotation()), + scale: entity + .get(crate::ambient_core::transform::components::scale()), + }, + }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::fovy(), + &crate::ambient_core::camera::components::aspect_ratio(), + &crate::ambient_core::camera::components::perspective(), + &crate::ambient_core::camera::components::far(), + ], + ) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::fovy(), + &crate::ambient_core::camera::components::aspect_ratio(), + &crate::ambient_core::camera::components::perspective(), + &crate::ambient_core::camera::components::far(), + ]) } } #[allow(clippy::approx_constant)] @@ -931,20 +1333,47 @@ mod raw { pub scale: Option, } impl crate::ecs::Concept for PerspectiveInfiniteReverseCamera { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity :: new () . with (crate :: ambient_core :: transform :: components :: local_to_world () , self . local_to_world) . with (crate :: ambient_core :: camera :: components :: near () , self . near) . with (crate :: ambient_core :: camera :: components :: projection () , self . projection) . with (crate :: ambient_core :: camera :: components :: projection_view () , self . projection_view) . with (crate :: ambient_core :: camera :: components :: active_camera () , self . active_camera) . with (crate :: ambient_core :: transform :: components :: inv_local_to_world () , self . inv_local_to_world) . with (crate :: ambient_core :: camera :: components :: fovy () , self . fovy) . with (crate :: ambient_core :: camera :: components :: aspect_ratio () , self . aspect_ratio) . with (crate :: ambient_core :: camera :: components :: perspective_infinite_reverse () , self . perspective_infinite_reverse) ; + if let Some(translation) = self.optional.translation { + entity.set( + crate::ambient_core::transform::components::translation(), + translation, + ); + } + if let Some(rotation) = self.optional.rotation { + entity.set( + crate::ambient_core::transform::components::rotation(), + rotation, + ); + } + if let Some(scale) = self.optional.scale { + entity.set(crate::ambient_core::transform::components::scale(), scale); + } + entity } fn get_spawned(id: EntityId) -> Option { - None + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , } }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity . get (crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , } }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity :: has_components (id , & [& crate :: ambient_core :: transform :: components :: local_to_world () , & crate :: ambient_core :: camera :: components :: near () , & crate :: ambient_core :: camera :: components :: projection () , & crate :: ambient_core :: camera :: components :: projection_view () , & crate :: ambient_core :: camera :: components :: active_camera () , & crate :: ambient_core :: transform :: components :: inv_local_to_world () , & crate :: ambient_core :: camera :: components :: fovy () , & crate :: ambient_core :: camera :: components :: aspect_ratio () , & crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()]) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::fovy(), + &crate::ambient_core::camera::components::aspect_ratio(), + &crate::ambient_core::camera::components::perspective_infinite_reverse( + ), + ]) } } #[allow(clippy::approx_constant)] @@ -1081,20 +1510,204 @@ mod raw { pub scale: Option, } impl crate::ecs::Concept for OrthographicCamera { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity::new() + .with( + crate::ambient_core::transform::components::local_to_world(), + self.local_to_world, + ) + .with(crate::ambient_core::camera::components::near(), self.near) + .with( + crate::ambient_core::camera::components::projection(), + self.projection, + ) + .with( + crate::ambient_core::camera::components::projection_view(), + self.projection_view, + ) + .with( + crate::ambient_core::camera::components::active_camera(), + self.active_camera, + ) + .with( + crate::ambient_core::transform::components::inv_local_to_world(), + self.inv_local_to_world, + ) + .with( + crate::ambient_core::camera::components::orthographic(), + self.orthographic, + ) + .with( + crate::ambient_core::camera::components::orthographic_left(), + self.orthographic_left, + ) + .with( + crate::ambient_core::camera::components::orthographic_right(), + self.orthographic_right, + ) + .with( + crate::ambient_core::camera::components::orthographic_top(), + self.orthographic_top, + ) + .with( + crate::ambient_core::camera::components::orthographic_bottom(), + self.orthographic_bottom, + ) + .with(crate::ambient_core::camera::components::far(), self.far); + if let Some(translation) = self.optional.translation { + entity.set( + crate::ambient_core::transform::components::translation(), + translation, + ); + } + if let Some(rotation) = self.optional.rotation { + entity.set( + crate::ambient_core::transform::components::rotation(), + rotation, + ); + } + if let Some(scale) = self.optional.scale { + entity.set(crate::ambient_core::transform::components::scale(), scale); + } + entity } fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::local_to_world(), + )?, + near: entity::get_component( + id, + crate::ambient_core::camera::components::near(), + )?, + projection: entity::get_component( + id, + crate::ambient_core::camera::components::projection(), + )?, + projection_view: entity::get_component( + id, + crate::ambient_core::camera::components::projection_view(), + )?, + active_camera: entity::get_component( + id, + crate::ambient_core::camera::components::active_camera(), + )?, + inv_local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + orthographic: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic(), + )?, + orthographic_left: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic_left(), + )?, + orthographic_right: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic_right(), + )?, + orthographic_top: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic_top(), + )?, + orthographic_bottom: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic_bottom(), + )?, + far: entity::get_component( + id, + crate::ambient_core::camera::components::far(), + )?, + optional: OrthographicCameraOptional { + translation: entity::get_component( + id, + crate::ambient_core::transform::components::translation(), + ), + rotation: entity::get_component( + id, + crate::ambient_core::transform::components::rotation(), + ), + scale: entity::get_component( + id, + crate::ambient_core::transform::components::scale(), + ), + }, + }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + local_to_world: entity + .get(crate::ambient_core::transform::components::local_to_world())?, + near: entity.get(crate::ambient_core::camera::components::near())?, + projection: entity + .get(crate::ambient_core::camera::components::projection())?, + projection_view: entity + .get(crate::ambient_core::camera::components::projection_view())?, + active_camera: entity + .get(crate::ambient_core::camera::components::active_camera())?, + inv_local_to_world: entity.get( + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + orthographic: entity + .get(crate::ambient_core::camera::components::orthographic())?, + orthographic_left: entity + .get(crate::ambient_core::camera::components::orthographic_left())?, + orthographic_right: entity.get( + crate::ambient_core::camera::components::orthographic_right(), + )?, + orthographic_top: entity + .get(crate::ambient_core::camera::components::orthographic_top())?, + orthographic_bottom: entity.get( + crate::ambient_core::camera::components::orthographic_bottom(), + )?, + far: entity.get(crate::ambient_core::camera::components::far())?, + optional: OrthographicCameraOptional { + translation: entity + .get(crate::ambient_core::transform::components::translation()), + rotation: entity + .get(crate::ambient_core::transform::components::rotation()), + scale: entity + .get(crate::ambient_core::transform::components::scale()), + }, + }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components( + id, + &[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::orthographic(), + &crate::ambient_core::camera::components::orthographic_left(), + &crate::ambient_core::camera::components::orthographic_right(), + &crate::ambient_core::camera::components::orthographic_top(), + &crate::ambient_core::camera::components::orthographic_bottom(), + &crate::ambient_core::camera::components::far(), + ], + ) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::transform::components::local_to_world(), + &crate::ambient_core::camera::components::near(), + &crate::ambient_core::camera::components::projection(), + &crate::ambient_core::camera::components::projection_view(), + &crate::ambient_core::camera::components::active_camera(), + &crate::ambient_core::transform::components::inv_local_to_world(), + &crate::ambient_core::camera::components::orthographic(), + &crate::ambient_core::camera::components::orthographic_left(), + &crate::ambient_core::camera::components::orthographic_right(), + &crate::ambient_core::camera::components::orthographic_top(), + &crate::ambient_core::camera::components::orthographic_bottom(), + &crate::ambient_core::camera::components::far(), + ]) } } #[allow(clippy::approx_constant)] @@ -2117,20 +2730,27 @@ mod raw { pub physics_controlled: (), } impl crate::ecs::Concept for CharacterController { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity :: new () . with (crate :: ambient_core :: physics :: components :: character_controller_height () , self . character_controller_height) . with (crate :: ambient_core :: physics :: components :: character_controller_radius () , self . character_controller_radius) . with (crate :: ambient_core :: physics :: components :: physics_controlled () , self . physics_controlled) ; + entity } fn get_spawned(id: EntityId) -> Option { - None + Some (Self { character_controller_height : entity :: get_component (id , crate :: ambient_core :: physics :: components :: character_controller_height ()) ? , character_controller_radius : entity :: get_component (id , crate :: ambient_core :: physics :: components :: character_controller_radius ()) ? , physics_controlled : entity :: get_component (id , crate :: ambient_core :: physics :: components :: physics_controlled ()) ? , }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some (Self { character_controller_height : entity . get (crate :: ambient_core :: physics :: components :: character_controller_height ()) ? , character_controller_radius : entity . get (crate :: ambient_core :: physics :: components :: character_controller_radius ()) ? , physics_controlled : entity . get (crate :: ambient_core :: physics :: components :: physics_controlled ()) ? , }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity :: has_components (id , & [& crate :: ambient_core :: physics :: components :: character_controller_height () , & crate :: ambient_core :: physics :: components :: character_controller_radius () , & crate :: ambient_core :: physics :: components :: physics_controlled ()]) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::physics::components::character_controller_height( + ), + &crate::ambient_core::physics::components::character_controller_radius( + ), + &crate::ambient_core::physics::components::physics_controlled(), + ]) } } #[allow(clippy::approx_constant)] @@ -2371,20 +2991,77 @@ mod raw { pub sphere_stacks: u32, } impl crate::ecs::Concept for Sphere { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity::new() + .with( + crate::ambient_core::primitives::components::sphere(), + self.sphere, + ) + .with( + crate::ambient_core::primitives::components::sphere_radius(), + self.sphere_radius, + ) + .with( + crate::ambient_core::primitives::components::sphere_sectors(), + self.sphere_sectors, + ) + .with( + crate::ambient_core::primitives::components::sphere_stacks(), + self.sphere_stacks, + ); + entity } fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + sphere: entity::get_component( + id, + crate::ambient_core::primitives::components::sphere(), + )?, + sphere_radius: entity::get_component( + id, + crate::ambient_core::primitives::components::sphere_radius(), + )?, + sphere_sectors: entity::get_component( + id, + crate::ambient_core::primitives::components::sphere_sectors(), + )?, + sphere_stacks: entity::get_component( + id, + crate::ambient_core::primitives::components::sphere_stacks(), + )?, + }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + sphere: entity + .get(crate::ambient_core::primitives::components::sphere())?, + sphere_radius: entity + .get(crate::ambient_core::primitives::components::sphere_radius())?, + sphere_sectors: entity.get( + crate::ambient_core::primitives::components::sphere_sectors(), + )?, + sphere_stacks: entity + .get(crate::ambient_core::primitives::components::sphere_stacks())?, + }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components( + id, + &[ + &crate::ambient_core::primitives::components::sphere(), + &crate::ambient_core::primitives::components::sphere_radius(), + &crate::ambient_core::primitives::components::sphere_sectors(), + &crate::ambient_core::primitives::components::sphere_stacks(), + ], + ) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::primitives::components::sphere(), + &crate::ambient_core::primitives::components::sphere_radius(), + &crate::ambient_core::primitives::components::sphere_sectors(), + &crate::ambient_core::primitives::components::sphere_stacks(), + ]) } } #[allow(clippy::approx_constant)] @@ -2452,20 +3129,104 @@ mod raw { pub capsule_longitudes: u32, } impl crate::ecs::Concept for Capsule { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity::new() + .with( + crate::ambient_core::primitives::components::capsule(), + self.capsule, + ) + .with( + crate::ambient_core::primitives::components::capsule_radius(), + self.capsule_radius, + ) + .with( + crate::ambient_core::primitives::components::capsule_half_height(), + self.capsule_half_height, + ) + .with( + crate::ambient_core::primitives::components::capsule_rings(), + self.capsule_rings, + ) + .with( + crate::ambient_core::primitives::components::capsule_latitudes(), + self.capsule_latitudes, + ) + .with( + crate::ambient_core::primitives::components::capsule_longitudes(), + self.capsule_longitudes, + ); + entity } fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + capsule: entity::get_component( + id, + crate::ambient_core::primitives::components::capsule(), + )?, + capsule_radius: entity::get_component( + id, + crate::ambient_core::primitives::components::capsule_radius(), + )?, + capsule_half_height: entity::get_component( + id, + crate::ambient_core::primitives::components::capsule_half_height(), + )?, + capsule_rings: entity::get_component( + id, + crate::ambient_core::primitives::components::capsule_rings(), + )?, + capsule_latitudes: entity::get_component( + id, + crate::ambient_core::primitives::components::capsule_latitudes(), + )?, + capsule_longitudes: entity::get_component( + id, + crate::ambient_core::primitives::components::capsule_longitudes(), + )?, + }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + capsule: entity + .get(crate::ambient_core::primitives::components::capsule())?, + capsule_radius: entity.get( + crate::ambient_core::primitives::components::capsule_radius(), + )?, + capsule_half_height: entity.get( + crate::ambient_core::primitives::components::capsule_half_height(), + )?, + capsule_rings: entity + .get(crate::ambient_core::primitives::components::capsule_rings())?, + capsule_latitudes: entity.get( + crate::ambient_core::primitives::components::capsule_latitudes(), + )?, + capsule_longitudes: entity.get( + crate::ambient_core::primitives::components::capsule_longitudes(), + )?, + }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components( + id, + &[ + &crate::ambient_core::primitives::components::capsule(), + &crate::ambient_core::primitives::components::capsule_radius(), + &crate::ambient_core::primitives::components::capsule_half_height(), + &crate::ambient_core::primitives::components::capsule_rings(), + &crate::ambient_core::primitives::components::capsule_latitudes(), + &crate::ambient_core::primitives::components::capsule_longitudes(), + ], + ) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::primitives::components::capsule(), + &crate::ambient_core::primitives::components::capsule_radius(), + &crate::ambient_core::primitives::components::capsule_half_height(), + &crate::ambient_core::primitives::components::capsule_rings(), + &crate::ambient_core::primitives::components::capsule_latitudes(), + &crate::ambient_core::primitives::components::capsule_longitudes(), + ]) } } #[allow(clippy::approx_constant)] @@ -2545,20 +3306,90 @@ mod raw { pub torus_loops: u32, } impl crate::ecs::Concept for Torus { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity::new() + .with( + crate::ambient_core::primitives::components::torus(), + self.torus, + ) + .with( + crate::ambient_core::primitives::components::torus_inner_radius(), + self.torus_inner_radius, + ) + .with( + crate::ambient_core::primitives::components::torus_outer_radius(), + self.torus_outer_radius, + ) + .with( + crate::ambient_core::primitives::components::torus_slices(), + self.torus_slices, + ) + .with( + crate::ambient_core::primitives::components::torus_loops(), + self.torus_loops, + ); + entity } fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + torus: entity::get_component( + id, + crate::ambient_core::primitives::components::torus(), + )?, + torus_inner_radius: entity::get_component( + id, + crate::ambient_core::primitives::components::torus_inner_radius(), + )?, + torus_outer_radius: entity::get_component( + id, + crate::ambient_core::primitives::components::torus_outer_radius(), + )?, + torus_slices: entity::get_component( + id, + crate::ambient_core::primitives::components::torus_slices(), + )?, + torus_loops: entity::get_component( + id, + crate::ambient_core::primitives::components::torus_loops(), + )?, + }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + torus: entity + .get(crate::ambient_core::primitives::components::torus())?, + torus_inner_radius: entity.get( + crate::ambient_core::primitives::components::torus_inner_radius(), + )?, + torus_outer_radius: entity.get( + crate::ambient_core::primitives::components::torus_outer_radius(), + )?, + torus_slices: entity + .get(crate::ambient_core::primitives::components::torus_slices())?, + torus_loops: entity + .get(crate::ambient_core::primitives::components::torus_loops())?, + }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components( + id, + &[ + &crate::ambient_core::primitives::components::torus(), + &crate::ambient_core::primitives::components::torus_inner_radius(), + &crate::ambient_core::primitives::components::torus_outer_radius(), + &crate::ambient_core::primitives::components::torus_slices(), + &crate::ambient_core::primitives::components::torus_loops(), + ], + ) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::primitives::components::torus(), + &crate::ambient_core::primitives::components::torus_inner_radius(), + &crate::ambient_core::primitives::components::torus_outer_radius(), + &crate::ambient_core::primitives::components::torus_slices(), + &crate::ambient_core::primitives::components::torus_loops(), + ]) } } #[allow(clippy::approx_constant)] @@ -3144,20 +3975,74 @@ mod raw { pub scale: Option, } impl crate::ecs::Concept for Transformable { - fn make(&self) -> Entity { - Entity::new() + fn make(self) -> Entity { + let mut entity = Entity::new().with( + crate::ambient_core::transform::components::local_to_world(), + self.local_to_world, + ); + if let Some(translation) = self.optional.translation { + entity.set( + crate::ambient_core::transform::components::translation(), + translation, + ); + } + if let Some(rotation) = self.optional.rotation { + entity.set( + crate::ambient_core::transform::components::rotation(), + rotation, + ); + } + if let Some(scale) = self.optional.scale { + entity.set(crate::ambient_core::transform::components::scale(), scale); + } + entity } fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::local_to_world(), + )?, + optional: TransformableOptional { + translation: entity::get_component( + id, + crate::ambient_core::transform::components::translation(), + ), + rotation: entity::get_component( + id, + crate::ambient_core::transform::components::rotation(), + ), + scale: entity::get_component( + id, + crate::ambient_core::transform::components::scale(), + ), + }, + }) } - fn get_unspawned(entity: Entity) -> Option { - None + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + local_to_world: entity + .get(crate::ambient_core::transform::components::local_to_world())?, + optional: TransformableOptional { + translation: entity + .get(crate::ambient_core::transform::components::translation()), + rotation: entity + .get(crate::ambient_core::transform::components::rotation()), + scale: entity + .get(crate::ambient_core::transform::components::scale()), + }, + }) } - fn contained_by_spawned(id: EntityId) -> Option { - None + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components( + id, + &[&crate::ambient_core::transform::components::local_to_world()], + ) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + &crate::ambient_core::transform::components::local_to_world(), + ]) } } #[allow(clippy::approx_constant)] diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index fe855f9239..135fd0268d 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -52,7 +52,6 @@ pub fn generate( } mod new { - use super::*; pub(super) fn generate( @@ -63,133 +62,263 @@ mod new { concept: &Concept, ) -> anyhow::Result { let concept_id = &concept.data().id; + let concept_optional_id = quote::format_ident!("{}Optional", concept_id.as_str()); let required_components = concept .required_components .iter() .map(|(id, value)| { - let component_item_id = id.as_resolved().unwrap(); - let ComponentField { - doc_comment, - component_id, - component_ty, - } = component_to_field(items, type_printer, context, component_item_id, value)?; - - Ok(quote! { - #[doc = #doc_comment] - pub #component_id: #component_ty - }) + component_to_field( + items, + type_printer, + context, + id.as_resolved().unwrap(), + value, + ) }) .collect::>>()?; - let mut doc_comment = String::new(); - write!( - doc_comment, - "**{}**", - concept.name.as_deref().unwrap_or(concept_id.as_str()) - )?; - if let Some(description) = &concept.description { - write!(doc_comment, ": {}", description)?; - } - writeln!(doc_comment)?; - writeln!(doc_comment)?; - - if !concept.extends.is_empty() { - write!(doc_comment, "**Extends**: ")?; - for (i, id) in concept.extends.iter().enumerate() { - let extend = items.get(id.as_resolved().unwrap()); - if i != 0 { - doc_comment.push_str(", "); - } + let optional_components = concept + .optional_components + .iter() + .map(|(id, value)| { + component_to_field( + items, + type_printer, + context, + id.as_resolved().unwrap(), + value, + ) + }) + .collect::>>()?; + let struct_def = { + let doc_comment = { + let mut doc_comment = String::new(); write!( doc_comment, - "`{}`", - &items.fully_qualified_display_path(extend, None, None) + "**{}**", + concept.name.as_deref().unwrap_or(concept_id.as_str()) )?; - } - writeln!(doc_comment)?; - writeln!(doc_comment)?; - } - - let doc_comment = doc_comment.trim(); - - let (optional_ref, optional_concept_def) = if !concept.optional_components.is_empty() { - let concept_optional_id = quote::format_ident!("{}Optional", concept_id.as_str()); + if let Some(description) = &concept.description { + write!(doc_comment, ": {}", description)?; + } + writeln!(doc_comment)?; + writeln!(doc_comment)?; + + if !concept.extends.is_empty() { + write!(doc_comment, "**Extends**: ")?; + for (i, id) in concept.extends.iter().enumerate() { + let extend = items.get(id.as_resolved().unwrap()); + if i != 0 { + doc_comment.push_str(", "); + } + + write!( + doc_comment, + "`{}`", + &items.fully_qualified_display_path(extend, None, None) + )?; + } + writeln!(doc_comment)?; + writeln!(doc_comment)?; + } + doc_comment.trim().to_string() + }; - let optional_components = concept - .optional_components + let components = required_components .iter() - .map(|(id, value)| { - let component_item_id = id.as_resolved().unwrap(); - let ComponentField { - doc_comment, - component_id, - component_ty, - } = component_to_field(items, type_printer, context, component_item_id, value)?; - - Ok(quote! { - #[doc = #doc_comment] - pub #component_id: Option<#component_ty> - }) - }) - .collect::>>()?; + .map(|component| component.to_field_definition(false)); - let doc_comment = format!("Optional part of [{}].", concept_id); - - ( + let optional_ref = if !optional_components.is_empty() { Some(quote! { /// Optional components. pub optional: #concept_optional_id, - }), - Some(quote! { - #[doc = #doc_comment] - #[derive(Clone, Debug, Default)] - pub struct #concept_optional_id { - #(#optional_components),* - } - }), - ) + }) + } else { + None + }; + + quote! { + #[doc = #doc_comment] + #[derive(Clone, Debug)] + pub struct #concept_id { + #(#components)* + #optional_ref + } + } + }; + + let optional_struct_def = if !optional_components.is_empty() { + let doc_comment = format!("Optional part of [{}].", concept_id); + + let components = optional_components + .iter() + .map(|component| component.to_field_definition(true)); + + Some(quote! { + #[doc = #doc_comment] + #[derive(Clone, Debug, Default)] + pub struct #concept_optional_id { + #(#components)* + } + }) } else { - (None, None) + None }; - Ok(quote! { - #[doc = #doc_comment] - #[derive(Clone, Debug)] - pub struct #concept_id { - #(#required_components,)* - #optional_ref - } - #optional_concept_def - impl #guest_api_path::ecs::Concept for #concept_id { - fn make(&self) -> Entity { - Entity::new() + let make = { + let required = required_components.iter().map(|c| { + let path = &c.path; + let field_name = &c.id; + + quote! { with(#path(), self.#field_name) } + }); + + let optional = optional_components.iter().map(|c| { + let path = &c.path; + let field_name = &c.id; + + quote! { + if let Some(#field_name) = self.optional.#field_name { + entity.set(#path(), #field_name); + } + } + }); + + quote! { + fn make(self) -> Entity { + let mut entity = Entity::new() + #(.#required)*; + + #(#optional)* + + entity } + } + }; + + let get_spawned = { + let required_components = required_components.iter().map(|c| { + c.with_id_and_path(|f, p| quote! { #f: entity::get_component(id, #p())?, }) + }); + let optional = if optional_components.is_empty() { + None + } else { + let optional_components = optional_components.iter().map(|c| { + c.with_id_and_path(|f, p| quote! { #f: entity::get_component(id, #p()), }) + }); + + Some(quote! { + optional: #concept_optional_id { + #(#optional_components)* + } + }) + }; + + quote! { fn get_spawned(id: EntityId) -> Option { - None + Some(Self { + #(#required_components)* + #optional + }) } + } + }; + + let get_unspawned = { + let required_components = required_components + .iter() + .map(|c| c.with_id_and_path(|f, p| quote! { #f: entity.get(#p())?, })); + + let optional = if optional_components.is_empty() { + None + } else { + let optional_components = optional_components + .iter() + .map(|c| c.with_id_and_path(|f, p| quote! { #f: entity.get(#p()), })); - fn get_unspawned(entity: Entity) -> Option { - None + Some(quote! { + optional: #concept_optional_id { + #(#optional_components)* + } + }) + }; + + quote! { + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + #(#required_components)* + #optional + }) } + } + }; + + let contained_by = { + let required_paths = required_components + .iter() + .map(|c| &c.path) + .collect::>(); - fn contained_by_spawned(id: EntityId) -> Option { - None + quote! { + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components(id, &[ + #(&#required_paths()),* + ]) } - fn contained_by_unspawned(entity: Entity) -> Option { - None + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + #(&#required_paths()),* + ]) } } + }; + + Ok(quote! { + #struct_def + #optional_struct_def + impl #guest_api_path::ecs::Concept for #concept_id { + #make + #get_spawned + #get_unspawned + #contained_by + } }) } struct ComponentField<'a> { doc_comment: String, - component_id: &'a Identifier, - component_ty: TokenStream, + id: &'a Identifier, + ty: TokenStream, + path: TokenStream, + } + impl ComponentField<'_> { + fn to_field_definition(&self, use_option: bool) -> TokenStream { + let doc = &self.doc_comment; + let id = self.id; + let ty = &self.ty; + + let ty = if use_option { + quote! { Option<#ty> } + } else { + ty.clone() + }; + + quote! { + #[doc = #doc] + pub #id: #ty, + } + } + + fn with_id_and_path( + &self, + f: impl Fn(&Identifier, &TokenStream) -> TokenStream, + ) -> TokenStream { + f(self.id, &self.path) + } } fn component_to_field<'a>( @@ -233,10 +362,13 @@ mod new { writeln!(doc_comment)?; } + let component_path = context.get_path(items, None, component_item_id)?; + Ok(ComponentField { doc_comment, - component_id, - component_ty, + id: component_id, + ty: component_ty, + path: component_path, }) } } From bfd86e5d53330799f82b5f5b47ced572c2934274 Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 12:06:08 +0200 Subject: [PATCH 16/35] fix(macro): handle core imports in user correctly --- .../package_macro_common/src/context.rs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/shared_crates/package_macro_common/src/context.rs b/shared_crates/package_macro_common/src/context.rs index bc8702978d..bd1c6b3743 100644 --- a/shared_crates/package_macro_common/src/context.rs +++ b/shared_crates/package_macro_common/src/context.rs @@ -53,8 +53,26 @@ impl Context { ItemType::Package => "packages::", }; let prefix = format!("{type_namespace}{}", prefix.unwrap_or_default()); - let path = - make_path(&items.fully_qualified_display_path(&*item, None, Some(prefix.as_str()))); + let fully_qualified_display_path = + items.fully_qualified_display_path(&*item, None, Some(prefix.as_str())); + + // Bad, lazy hack to remap `ambient_core` to a valid API path. + // Without this, `ambient_core::transform::lookat_target` will get emitted as + // `ambient_api::core::ambient_core::transform::components::lookat_target` + // instead of + // `ambient_api::core::transform::components::lookat_target` + let fully_qualified_display_path = if matches!( + (self, item.data().source), + (Context::GuestUser, ItemSource::Ambient) + ) { + fully_qualified_display_path + .strip_prefix("ambient_core::") + .unwrap_or(&fully_qualified_display_path) + } else { + &fully_qualified_display_path + }; + + let path = make_path(&fully_qualified_display_path); Ok(quote! { #path_prefix #path }) } From af5a16ed9f19680ab72b8eef7fe6966eb20768bf Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 12:32:59 +0200 Subject: [PATCH 17/35] feat(macro): delete old concept code --- guest/rust/api_core/src/internal/generated.rs | 689 ------------------ .../package_macro_common/src/concepts.rs | 208 ------ 2 files changed, 897 deletions(-) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 019b09cd9a..d987e3c763 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -656,80 +656,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - pub fn make_Camera() -> Entity { - Entity::new() - .with( - crate::ambient_core::transform::components::local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::near(), 0.1f32) - .with( - crate::ambient_core::camera::components::projection(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::projection_view(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::active_camera(), - 0f32, - ) - .with( - crate::ambient_core::transform::components::inv_local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - } - #[doc = "Checks if the entity is a *Camera*.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_Camera(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::transform::components::local_to_world(), - &crate::ambient_core::camera::components::near(), - &crate::ambient_core::camera::components::projection(), - &crate::ambient_core::camera::components::projection_view(), - &crate::ambient_core::camera::components::active_camera(), - &crate::ambient_core::transform::components::inv_local_to_world(), - ], - ) - } - #[doc = "Returns the components that comprise *Camera* as a tuple.\n\nBase components for a camera. You will need other components to make a fully-functioning camera.\n\n**Extends**: ambient_core::transform::Transformable\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_Camera() -> ( - Component, - Component, - Component, - Component, - Component, - Component, - ) { - ( - crate::ambient_core::transform::components::local_to_world(), - crate::ambient_core::camera::components::near(), - crate::ambient_core::camera::components::projection(), - crate::ambient_core::camera::components::projection_view(), - crate::ambient_core::camera::components::active_camera(), - crate::ambient_core::transform::components::inv_local_to_world(), - ) - } #[doc = "**Perspective Common Camera**: Base components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: `ambient_core::camera::Camera`"] #[derive(Clone, Debug)] pub struct PerspectiveCommonCamera { @@ -913,91 +839,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] - pub fn make_PerspectiveCommonCamera() -> Entity { - Entity::new() - .with( - crate::ambient_core::transform::components::local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::near(), 0.1f32) - .with( - crate::ambient_core::camera::components::projection(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::projection_view(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::active_camera(), - 0f32, - ) - .with( - crate::ambient_core::transform::components::inv_local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::fovy(), 1f32) - .with( - crate::ambient_core::camera::components::aspect_ratio(), - 1f32, - ) - } - #[doc = "Checks if the entity is a *Perspective Common Camera*.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_PerspectiveCommonCamera(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::transform::components::local_to_world(), - &crate::ambient_core::camera::components::near(), - &crate::ambient_core::camera::components::projection(), - &crate::ambient_core::camera::components::projection_view(), - &crate::ambient_core::camera::components::active_camera(), - &crate::ambient_core::transform::components::inv_local_to_world(), - &crate::ambient_core::camera::components::fovy(), - &crate::ambient_core::camera::components::aspect_ratio(), - ], - ) - } - #[doc = "Returns the components that comprise *Perspective Common Camera* as a tuple.\n\nBase components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_PerspectiveCommonCamera() -> ( - Component, - Component, - Component, - Component, - Component, - Component, - Component, - Component, - ) { - ( - crate::ambient_core::transform::components::local_to_world(), - crate::ambient_core::camera::components::near(), - crate::ambient_core::camera::components::projection(), - crate::ambient_core::camera::components::projection_view(), - crate::ambient_core::camera::components::active_camera(), - crate::ambient_core::transform::components::inv_local_to_world(), - crate::ambient_core::camera::components::fovy(), - crate::ambient_core::camera::components::aspect_ratio(), - ) - } #[doc = "**Perspective Camera**: A perspective camera.\n\n**Extends**: `ambient_core::camera::PerspectiveCommonCamera`"] #[derive(Clone, Debug)] pub struct PerspectiveCamera { @@ -1205,99 +1046,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Perspective Camera*.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] - pub fn make_PerspectiveCamera() -> Entity { - Entity::new() - .with( - crate::ambient_core::transform::components::local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::near(), 0.1f32) - .with( - crate::ambient_core::camera::components::projection(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::projection_view(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::active_camera(), - 0f32, - ) - .with( - crate::ambient_core::transform::components::inv_local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::fovy(), 1f32) - .with( - crate::ambient_core::camera::components::aspect_ratio(), - 1f32, - ) - .with(crate::ambient_core::camera::components::perspective(), ()) - .with(crate::ambient_core::camera::components::far(), 1000f32) - } - #[doc = "Checks if the entity is a *Perspective Camera*.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_PerspectiveCamera(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::transform::components::local_to_world(), - &crate::ambient_core::camera::components::near(), - &crate::ambient_core::camera::components::projection(), - &crate::ambient_core::camera::components::projection_view(), - &crate::ambient_core::camera::components::active_camera(), - &crate::ambient_core::transform::components::inv_local_to_world(), - &crate::ambient_core::camera::components::fovy(), - &crate::ambient_core::camera::components::aspect_ratio(), - &crate::ambient_core::camera::components::perspective(), - &crate::ambient_core::camera::components::far(), - ], - ) - } - #[doc = "Returns the components that comprise *Perspective Camera* as a tuple.\n\nA perspective camera.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective\": () = (),\n \"ambient_core::camera::far\": f32 = 1000.0,\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_PerspectiveCamera() -> ( - Component, - Component, - Component, - Component, - Component, - Component, - Component, - Component, - Component<()>, - Component, - ) { - ( - crate::ambient_core::transform::components::local_to_world(), - crate::ambient_core::camera::components::near(), - crate::ambient_core::camera::components::projection(), - crate::ambient_core::camera::components::projection_view(), - crate::ambient_core::camera::components::active_camera(), - crate::ambient_core::transform::components::inv_local_to_world(), - crate::ambient_core::camera::components::fovy(), - crate::ambient_core::camera::components::aspect_ratio(), - crate::ambient_core::camera::components::perspective(), - crate::ambient_core::camera::components::far(), - ) - } #[doc = "**Perspective-Infinite-Reverse Camera**: A perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: `ambient_core::camera::PerspectiveCommonCamera`"] #[derive(Clone, Debug)] pub struct PerspectiveInfiniteReverseCamera { @@ -1376,99 +1124,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] - pub fn make_PerspectiveInfiniteReverseCamera() -> Entity { - Entity::new() - .with( - crate::ambient_core::transform::components::local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::near(), 0.1f32) - .with( - crate::ambient_core::camera::components::projection(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::projection_view(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::active_camera(), - 0f32, - ) - .with( - crate::ambient_core::transform::components::inv_local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::fovy(), 1f32) - .with( - crate::ambient_core::camera::components::aspect_ratio(), - 1f32, - ) - .with( - crate::ambient_core::camera::components::perspective_infinite_reverse(), - (), - ) - } - #[doc = "Checks if the entity is a *Perspective-Infinite-Reverse Camera*.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_PerspectiveInfiniteReverseCamera(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::transform::components::local_to_world(), - &crate::ambient_core::camera::components::near(), - &crate::ambient_core::camera::components::projection(), - &crate::ambient_core::camera::components::projection_view(), - &crate::ambient_core::camera::components::active_camera(), - &crate::ambient_core::transform::components::inv_local_to_world(), - &crate::ambient_core::camera::components::fovy(), - &crate::ambient_core::camera::components::aspect_ratio(), - &crate::ambient_core::camera::components::perspective_infinite_reverse( - ), - ], - ) - } - #[doc = "Returns the components that comprise *Perspective-Infinite-Reverse Camera* as a tuple.\n\nA perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: ambient_core::camera::PerspectiveCommonCamera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = 0.1,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::fovy\": f32 = 1.0,\n \"ambient_core::camera::aspect_ratio\": f32 = 1.0,\n \"ambient_core::camera::perspective_infinite_reverse\": () = (),\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_PerspectiveInfiniteReverseCamera() -> ( - Component, - Component, - Component, - Component, - Component, - Component, - Component, - Component, - Component<()>, - ) { - ( - crate::ambient_core::transform::components::local_to_world(), - crate::ambient_core::camera::components::near(), - crate::ambient_core::camera::components::projection(), - crate::ambient_core::camera::components::projection_view(), - crate::ambient_core::camera::components::active_camera(), - crate::ambient_core::transform::components::inv_local_to_world(), - crate::ambient_core::camera::components::fovy(), - crate::ambient_core::camera::components::aspect_ratio(), - crate::ambient_core::camera::components::perspective_infinite_reverse(), - ) - } #[doc = "**Orthographic Camera**: An orthographic camera.\n\n**Extends**: `ambient_core::camera::Camera`"] #[derive(Clone, Debug)] pub struct OrthographicCamera { @@ -1710,116 +1365,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Orthographic Camera*.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] - pub fn make_OrthographicCamera() -> Entity { - Entity::new() - .with( - crate::ambient_core::transform::components::local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::near(), -1f32) - .with( - crate::ambient_core::camera::components::projection(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::projection_view(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with( - crate::ambient_core::camera::components::active_camera(), - 0f32, - ) - .with( - crate::ambient_core::transform::components::inv_local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, - 0f32, 0f32, 0f32, 0f32, 1f32, - ]), - ) - .with(crate::ambient_core::camera::components::orthographic(), ()) - .with( - crate::ambient_core::camera::components::orthographic_left(), - -1f32, - ) - .with( - crate::ambient_core::camera::components::orthographic_right(), - 1f32, - ) - .with( - crate::ambient_core::camera::components::orthographic_top(), - 1f32, - ) - .with( - crate::ambient_core::camera::components::orthographic_bottom(), - -1f32, - ) - .with(crate::ambient_core::camera::components::far(), 1f32) - } - #[doc = "Checks if the entity is a *Orthographic Camera*.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_OrthographicCamera(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::transform::components::local_to_world(), - &crate::ambient_core::camera::components::near(), - &crate::ambient_core::camera::components::projection(), - &crate::ambient_core::camera::components::projection_view(), - &crate::ambient_core::camera::components::active_camera(), - &crate::ambient_core::transform::components::inv_local_to_world(), - &crate::ambient_core::camera::components::orthographic(), - &crate::ambient_core::camera::components::orthographic_left(), - &crate::ambient_core::camera::components::orthographic_right(), - &crate::ambient_core::camera::components::orthographic_top(), - &crate::ambient_core::camera::components::orthographic_bottom(), - &crate::ambient_core::camera::components::far(), - ], - ) - } - #[doc = "Returns the components that comprise *Orthographic Camera* as a tuple.\n\nAn orthographic camera.\n\n**Extends**: ambient_core::camera::Camera\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::near\": f32 = -1.0,\n \"ambient_core::camera::projection\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::projection_view\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::active_camera\": f32 = 0.0,\n \"ambient_core::transform::inv_local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n \"ambient_core::camera::orthographic\": () = (),\n \"ambient_core::camera::orthographic_left\": f32 = -1.0,\n \"ambient_core::camera::orthographic_right\": f32 = 1.0,\n \"ambient_core::camera::orthographic_top\": f32 = 1.0,\n \"ambient_core::camera::orthographic_bottom\": f32 = -1.0,\n \"ambient_core::camera::far\": f32 = 1.0,\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_OrthographicCamera() -> ( - Component, - Component, - Component, - Component, - Component, - Component, - Component<()>, - Component, - Component, - Component, - Component, - Component, - ) { - ( - crate::ambient_core::transform::components::local_to_world(), - crate::ambient_core::camera::components::near(), - crate::ambient_core::camera::components::projection(), - crate::ambient_core::camera::components::projection_view(), - crate::ambient_core::camera::components::active_camera(), - crate::ambient_core::transform::components::inv_local_to_world(), - crate::ambient_core::camera::components::orthographic(), - crate::ambient_core::camera::components::orthographic_left(), - crate::ambient_core::camera::components::orthographic_right(), - crate::ambient_core::camera::components::orthographic_top(), - crate::ambient_core::camera::components::orthographic_bottom(), - crate::ambient_core::camera::components::far(), - ) - } } } #[allow(unused)] @@ -2753,49 +2298,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] - pub fn make_CharacterController() -> Entity { - Entity::new() - .with( - crate::ambient_core::physics::components::character_controller_height(), - 2f32, - ) - .with( - crate::ambient_core::physics::components::character_controller_radius(), - 0.5f32, - ) - .with( - crate::ambient_core::physics::components::physics_controlled(), - (), - ) - } - #[doc = "Checks if the entity is a *Character Controller*.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_CharacterController(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::physics::components::character_controller_height( - ), - &crate::ambient_core::physics::components::character_controller_radius( - ), - &crate::ambient_core::physics::components::physics_controlled(), - ], - ) - } - #[doc = "Returns the components that comprise *Character Controller* as a tuple.\n\nA capsule character controller. The capsule is defined as a position, a vertical height, and a radius. The height is the distance between the two sphere centers at the end of the capsule.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::physics::character_controller_height\": f32 = 2.0,\n \"ambient_core::physics::character_controller_radius\": f32 = 0.5,\n \"ambient_core::physics::physics_controlled\": () = (),\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_CharacterController() -> (Component, Component, Component<()>) - { - ( - crate::ambient_core::physics::components::character_controller_height(), - crate::ambient_core::physics::components::character_controller_radius(), - crate::ambient_core::physics::components::physics_controlled(), - ) - } } } #[allow(unused)] @@ -3064,54 +2566,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Sphere*.\n\nA primitive sphere.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] - pub fn make_Sphere() -> Entity { - Entity::new() - .with(crate::ambient_core::primitives::components::sphere(), ()) - .with( - crate::ambient_core::primitives::components::sphere_radius(), - 0.5f32, - ) - .with( - crate::ambient_core::primitives::components::sphere_sectors(), - 36u32, - ) - .with( - crate::ambient_core::primitives::components::sphere_stacks(), - 18u32, - ) - } - #[doc = "Checks if the entity is a *Sphere*.\n\nA primitive sphere.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_Sphere(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::primitives::components::sphere(), - &crate::ambient_core::primitives::components::sphere_radius(), - &crate::ambient_core::primitives::components::sphere_sectors(), - &crate::ambient_core::primitives::components::sphere_stacks(), - ], - ) - } - #[doc = "Returns the components that comprise *Sphere* as a tuple.\n\nA primitive sphere.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::sphere\": () = (),\n \"ambient_core::primitives::sphere_radius\": f32 = 0.5,\n \"ambient_core::primitives::sphere_sectors\": u32 = 36,\n \"ambient_core::primitives::sphere_stacks\": u32 = 18,\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_Sphere() -> ( - Component<()>, - Component, - Component, - Component, - ) { - ( - crate::ambient_core::primitives::components::sphere(), - crate::ambient_core::primitives::components::sphere_radius(), - crate::ambient_core::primitives::components::sphere_sectors(), - crate::ambient_core::primitives::components::sphere_stacks(), - ) - } #[doc = "**Capsule**: A primitive capsule. Defined as a cylinder capped by hemispheres."] #[derive(Clone, Debug)] pub struct Capsule { @@ -3229,68 +2683,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] - pub fn make_Capsule() -> Entity { - Entity::new() - .with(crate::ambient_core::primitives::components::capsule(), ()) - .with( - crate::ambient_core::primitives::components::capsule_radius(), - 0.5f32, - ) - .with( - crate::ambient_core::primitives::components::capsule_half_height(), - 0.5f32, - ) - .with( - crate::ambient_core::primitives::components::capsule_rings(), - 0u32, - ) - .with( - crate::ambient_core::primitives::components::capsule_latitudes(), - 16u32, - ) - .with( - crate::ambient_core::primitives::components::capsule_longitudes(), - 32u32, - ) - } - #[doc = "Checks if the entity is a *Capsule*.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_Capsule(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::primitives::components::capsule(), - &crate::ambient_core::primitives::components::capsule_radius(), - &crate::ambient_core::primitives::components::capsule_half_height(), - &crate::ambient_core::primitives::components::capsule_rings(), - &crate::ambient_core::primitives::components::capsule_latitudes(), - &crate::ambient_core::primitives::components::capsule_longitudes(), - ], - ) - } - #[doc = "Returns the components that comprise *Capsule* as a tuple.\n\nA primitive capsule. Defined as a cylinder capped by hemispheres.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::capsule\": () = (),\n \"ambient_core::primitives::capsule_radius\": f32 = 0.5,\n \"ambient_core::primitives::capsule_half_height\": f32 = 0.5,\n \"ambient_core::primitives::capsule_rings\": u32 = 0,\n \"ambient_core::primitives::capsule_latitudes\": u32 = 16,\n \"ambient_core::primitives::capsule_longitudes\": u32 = 32,\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_Capsule() -> ( - Component<()>, - Component, - Component, - Component, - Component, - Component, - ) { - ( - crate::ambient_core::primitives::components::capsule(), - crate::ambient_core::primitives::components::capsule_radius(), - crate::ambient_core::primitives::components::capsule_half_height(), - crate::ambient_core::primitives::components::capsule_rings(), - crate::ambient_core::primitives::components::capsule_latitudes(), - crate::ambient_core::primitives::components::capsule_longitudes(), - ) - } #[doc = "**Torus**: A primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution."] #[derive(Clone, Debug)] pub struct Torus { @@ -3392,61 +2784,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] - pub fn make_Torus() -> Entity { - Entity::new() - .with(crate::ambient_core::primitives::components::torus(), ()) - .with( - crate::ambient_core::primitives::components::torus_inner_radius(), - 0.25f32, - ) - .with( - crate::ambient_core::primitives::components::torus_outer_radius(), - 0.35f32, - ) - .with( - crate::ambient_core::primitives::components::torus_slices(), - 32u32, - ) - .with( - crate::ambient_core::primitives::components::torus_loops(), - 16u32, - ) - } - #[doc = "Checks if the entity is a *Torus*.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_Torus(id: EntityId) -> bool { - entity::has_components( - id, - &[ - &crate::ambient_core::primitives::components::torus(), - &crate::ambient_core::primitives::components::torus_inner_radius(), - &crate::ambient_core::primitives::components::torus_outer_radius(), - &crate::ambient_core::primitives::components::torus_slices(), - &crate::ambient_core::primitives::components::torus_loops(), - ], - ) - } - #[doc = "Returns the components that comprise *Torus* as a tuple.\n\nA primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::primitives::torus\": () = (),\n \"ambient_core::primitives::torus_inner_radius\": f32 = 0.25,\n \"ambient_core::primitives::torus_outer_radius\": f32 = 0.35,\n \"ambient_core::primitives::torus_slices\": u32 = 32,\n \"ambient_core::primitives::torus_loops\": u32 = 16,\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_Torus() -> ( - Component<()>, - Component, - Component, - Component, - Component, - ) { - ( - crate::ambient_core::primitives::components::torus(), - crate::ambient_core::primitives::components::torus_inner_radius(), - crate::ambient_core::primitives::components::torus_outer_radius(), - crate::ambient_core::primitives::components::torus_slices(), - crate::ambient_core::primitives::components::torus_loops(), - ) - } } } #[allow(unused)] @@ -4045,32 +3382,6 @@ mod raw { ]) } } - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = "Makes a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - pub fn make_Transformable() -> Entity { - Entity::new().with( - crate::ambient_core::transform::components::local_to_world(), - Mat4::from_cols_array(&[ - 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, - 0f32, 0f32, 0f32, 1f32, - ]), - ) - } - #[doc = "Checks if the entity is a *Transformable*.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - #[allow(non_snake_case)] - pub fn is_Transformable(id: EntityId) -> bool { - entity::has_components( - id, - &[&crate::ambient_core::transform::components::local_to_world()], - ) - } - #[doc = "Returns the components that comprise *Transformable* as a tuple.\n\nCan be translated, rotated and scaled.\n\n**Definition**:\n```ignore\n{\n \"ambient_core::transform::local_to_world\": Mat4 = Mat4 { x_axis: Vec4(1.0, 0.0, 0.0, 0.0), y_axis: Vec4(0.0, 1.0, 0.0, 0.0), z_axis: Vec4(0.0, 0.0, 1.0, 0.0), w_axis: Vec4(0.0, 0.0, 0.0, 1.0) },\n}\n```\n"] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn tuple_Transformable() -> (Component) { - (crate::ambient_core::transform::components::local_to_world()) - } } } #[allow(unused)] diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index 135fd0268d..974ec155ba 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -28,10 +28,8 @@ pub fn generate( .map(|concept| { let concept = &*concept; let new = new::generate(items, type_printer, context, &guest_api_path, concept)?; - let old = old::generate(items, type_printer, context, concept)?; Ok(quote! { #new - #old }) }) .collect::>>()?; @@ -373,212 +371,6 @@ mod new { } } -mod old { - use super::*; - - pub(super) fn generate( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - concept: &Concept, - ) -> anyhow::Result { - let make_concept = generate_make(items, type_printer, context, concept)?; - let is_concept = generate_is(items, type_printer, context, concept)?; - let concept_fn = generate_concept(items, type_printer, context, concept)?; - Ok(quote! { - #make_concept - #is_concept - #concept_fn - }) - } - - fn generate_make( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - concept: &Concept, - ) -> anyhow::Result { - let name = concept.data().id.as_str(); - let make_comment = format!( - "Makes a *{}*.\n\n{}\n\n{}", - concept.name.as_deref().unwrap_or(name), - concept.description.as_ref().unwrap_or(&"".to_string()), - generate_component_list_doc_comment(items, type_printer, context, concept)? - ); - let make_ident = quote::format_ident!("make_{}", name); - - let components = concept - .required_components - .iter() - .map(|(id, default)| { - let path = context.get_path(items, None, id.as_resolved().unwrap())?; - let default = value_to_token_stream( - items, - default - .suggested - .as_ref() - .expect("TEMP: suggested required") - .as_resolved() - .unwrap(), - )?; - Ok(quote! { with(#path(), #default) }) - }) - .collect::>>()?; - - Ok(quote! { - #[allow(clippy::approx_constant)] - #[allow(non_snake_case)] - #[doc = #make_comment] - pub fn #make_ident() -> Entity { - Entity::new() - #(.#components)* - } - }) - } - - fn generate_is( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - concept: &Concept, - ) -> anyhow::Result { - let name = concept.data().id.as_str(); - let is_comment = format!( - "Checks if the entity is a *{}*.\n\n{}\n\n{}", - concept.name.as_deref().unwrap_or(name), - concept.description.as_ref().unwrap_or(&"".to_string()), - generate_component_list_doc_comment(items, type_printer, context, concept)?, - ); - let is_ident = quote::format_ident!("is_{}", name); - - let components = concept - .required_components - .iter() - .map(|(id, _)| { - let path = context.get_path(items, None, id.as_resolved().unwrap())?; - Ok(quote! { #path() }) - }) - .collect::>>()?; - - Ok(match context { - Context::Host => quote! { - #[doc = #is_comment] - #[allow(non_snake_case)] - pub fn #is_ident(world: &crate::World, id: EntityId) -> bool { - world.has_components(id, &{ - let mut set = crate::ComponentSet::new(); - #(set.insert(#components.desc());)* - set - }) - } - }, - Context::GuestApi | Context::GuestUser => quote! { - #[doc = #is_comment] - #[allow(non_snake_case)] - pub fn #is_ident(id: EntityId) -> bool { - entity::has_components(id, &[ - #(&#components),* - ]) - } - }, - }) - } - - fn generate_concept( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - concept: &Concept, - ) -> anyhow::Result { - let name = concept.data().id.as_str(); - let fn_comment = format!( - "Returns the components that comprise *{}* as a tuple.\n\n{}\n\n{}", - concept.name.as_deref().unwrap_or(name), - concept.description.as_ref().unwrap_or(&"".to_string()), - generate_component_list_doc_comment(items, type_printer, context, concept)?, - ); - let fn_ident = quote::format_ident!("tuple_{}", name); - - let components = concept - .required_components - .iter() - .map(|(id, _)| { - let path = context.get_path(items, None, id.as_resolved().unwrap())?; - Ok(quote! { #path() }) - }) - .collect::>>()?; - - let fn_ret = concept - .required_components - .iter() - .map(|(id, _)| { - let component = &*items.get(id.as_resolved().unwrap()); - type_printer.get(context, items, None, component.type_.as_resolved().unwrap()) - }) - .collect::>>()?; - - Ok(quote! { - #[doc = #fn_comment] - #[allow(clippy::type_complexity)] - #[allow(non_snake_case)] - pub fn #fn_ident() -> (#(Component<#fn_ret>),*) { - (#(#components),*) - } - }) - } -} - -pub fn generate_component_list_doc_comment( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - concept: &Concept, -) -> anyhow::Result { - let mut output = String::new(); - - if !concept.extends.is_empty() { - output.push_str("**Extends**: "); - for (i, id) in concept.extends.iter().enumerate() { - let extend = items.get(id.as_resolved().unwrap()); - if i != 0 { - output.push_str(", "); - } - - output.push_str(&items.fully_qualified_display_path(extend, None, None)); - } - writeln!(output)?; - writeln!(output)?; - } - - output.push_str("**Definition**:\n```ignore\n{\n"); - - for (id, value) in &concept.required_components { - let component = &*items.get(id.as_resolved().unwrap()); - let component_path = items.fully_qualified_display_path(component, None, None); - - writeln!( - output, - " \"{component_path}\": {} = {},", - SemiprettyTokenStream( - type_printer - .get(context, items, None, component.type_.as_resolved().unwrap()) - .unwrap() - .clone() - ), - value - .suggested - .as_ref() - .expect("TEMP: suggested required") - .as_resolved() - .unwrap() - )?; - } - - output += "}\n```\n"; - - Ok(output) -} - /// Very, very basic one-line formatter for token streams struct SemiprettyTokenStream(TokenStream); impl std::fmt::Display for SemiprettyTokenStream { From 48aa96d944a2c97884e94c2be89092b359839742 Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 12:33:16 +0200 Subject: [PATCH 18/35] feat(api): entity::with_merge Into --- guest/rust/api_core/src/internal/component/entity.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guest/rust/api_core/src/internal/component/entity.rs b/guest/rust/api_core/src/internal/component/entity.rs index 23a1dae6af..146b54f2ae 100644 --- a/guest/rust/api_core/src/internal/component/entity.rs +++ b/guest/rust/api_core/src/internal/component/entity.rs @@ -57,8 +57,8 @@ impl Entity { } /// Merges in the `other` Entity and returns this; any fields that were present in both will be replaced by `other`'s. - pub fn with_merge(mut self, other: Entity) -> Self { - self.merge(other); + pub fn with_merge(mut self, other: impl Into) -> Self { + self.merge(other.into()); self } From 567f667e1e37c71a1ffc8e2fc25479c3d3cee59e Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 12:34:21 +0200 Subject: [PATCH 19/35] wip(guest): orbit camera + bm/primitives use --- guest/rust/Cargo.lock | 7 + guest/rust/Cargo.toml | 1 + .../examples/assets/basic_model/ambient.toml | 3 + .../examples/assets/basic_model/src/server.rs | 39 +++-- .../examples/basics/primitives/ambient.toml | 3 + .../examples/basics/primitives/src/server.rs | 152 +++++++++++------- .../rust/packages/std/orbit_camera/Cargo.toml | 18 +++ .../packages/std/orbit_camera/ambient.toml | 21 +++ .../packages/std/orbit_camera/src/client.rs | 74 +++++++++ 9 files changed, 244 insertions(+), 74 deletions(-) create mode 100644 guest/rust/packages/std/orbit_camera/Cargo.toml create mode 100644 guest/rust/packages/std/orbit_camera/ambient.toml create mode 100644 guest/rust/packages/std/orbit_camera/src/client.rs diff --git a/guest/rust/Cargo.lock b/guest/rust/Cargo.lock index e2335684be..f56fefdb18 100644 --- a/guest/rust/Cargo.lock +++ b/guest/rust/Cargo.lock @@ -1648,6 +1648,13 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "orbit_camera" +version = "0.0.1" +dependencies = [ + "ambient_api", +] + [[package]] name = "ordered-float" version = "3.9.1" diff --git a/guest/rust/Cargo.toml b/guest/rust/Cargo.toml index 561440f722..e5bbcebdae 100644 --- a/guest/rust/Cargo.toml +++ b/guest/rust/Cargo.toml @@ -63,6 +63,7 @@ members = [ "packages/std/character_animation", "packages/std/character_movement", "packages/std/fps_controller", + "packages/std/orbit_camera", # Packages (tools) "packages/tools/console", diff --git a/guest/rust/examples/assets/basic_model/ambient.toml b/guest/rust/examples/assets/basic_model/ambient.toml index bc23ad1f93..dbbac1db3f 100644 --- a/guest/rust/examples/assets/basic_model/ambient.toml +++ b/guest/rust/examples/assets/basic_model/ambient.toml @@ -6,3 +6,6 @@ version = "0.0.1" repository = "https://github.com/AmbientRun/Ambient/tree/main/guest/rust/examples/basics/basic_model" type = "Game" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/assets/basic_model/src/server.rs b/guest/rust/examples/assets/basic_model/src/server.rs index 64a5b50f4b..1d70de651b 100644 --- a/guest/rust/examples/assets/basic_model/src/server.rs +++ b/guest/rust/examples/assets/basic_model/src/server.rs @@ -1,34 +1,33 @@ use ambient_api::{ - core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, - prefab::components::prefab_from_url, - transform::{ - components::{lookat_target, translation}, - concepts::make_Transformable, - }, - }, + core::{prefab::components::prefab_from_url, transform::concepts::Transformable}, prelude::*, }; -use packages::this::assets; +use packages::{ + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + this::assets, +}; #[main] pub async fn main() { // Camera - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(2., 2., 2.)) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: OrbitCameraOptional { + camera_distance: Some(2.0), + ..default() + }, + } + .make() + .spawn(); // Model Entity::new() - .with_merge(make_Transformable()) + .with_merge(Transformable { + local_to_world: Default::default(), + optional: Default::default(), + }) .with(prefab_from_url(), assets::url("Cube.glb")) .spawn(); } diff --git a/guest/rust/examples/basics/primitives/ambient.toml b/guest/rust/examples/basics/primitives/ambient.toml index 9991b7e01a..5d2bf05491 100644 --- a/guest/rust/examples/basics/primitives/ambient.toml +++ b/guest/rust/examples/basics/primitives/ambient.toml @@ -6,3 +6,6 @@ version = "0.0.1" repository = "https://github.com/AmbientRun/Ambient/tree/main/guest/rust/examples/basics/primitives" type = "Game" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/basics/primitives/src/server.rs b/guest/rust/examples/basics/primitives/src/server.rs index a54e5a3287..ae041ad403 100644 --- a/guest/rust/examples/basics/primitives/src/server.rs +++ b/guest/rust/examples/basics/primitives/src/server.rs @@ -1,95 +1,139 @@ use ambient_api::{ core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, primitives::{ - components::{ - capsule_half_height, capsule_latitudes, capsule_longitudes, capsule_radius, - capsule_rings, cube, quad, sphere_radius, sphere_sectors, sphere_stacks, - torus_inner_radius, torus_loops, torus_outer_radius, torus_slices, - }, - concepts::{make_Capsule, make_Sphere, make_Torus}, + components::cube, + concepts::{Capsule, Sphere, Torus}, }, rendering::components::color, - transform::{ - components::{lookat_target, scale, translation}, - concepts::make_Transformable, - }, + transform::concepts::{Transformable, TransformableOptional}, }, prelude::*, }; +use packages::orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}; #[main] pub fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(5., 5., 6.)) - .with(lookat_target(), vec3(0., 0., 2.)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: vec3(0., 0., 2.), + optional: OrbitCameraOptional { + camera_distance: Some(5.), + ..default() + }, + } + .make() + .spawn(); Entity::new() - .with_merge(make_Transformable()) - .with(quad(), ()) - .with(scale(), Vec3::ONE * 10.) + .with_merge(Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + scale: Some(Vec3::ONE * 10.), + ..default() + }, + }) .with(color(), vec4(1., 0., 0., 1.)) .spawn(); Entity::new() - .with_merge(make_Transformable()) + .with_merge(Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(vec3(2., 0., 0.5)), + ..default() + }, + }) .with(cube(), ()) - .with(translation(), vec3(2., 0., 0.5)) - .with(scale(), Vec3::ONE) .with(color(), vec4(0., 1., 0., 1.)) .spawn(); Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Sphere()) - .with(sphere_radius(), 1.0) - .with(sphere_sectors(), 12) - .with(sphere_stacks(), 6) - .with(translation(), vec3(0., 2., 0.5)) + .with_merge(Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(vec3(0., 2., 0.5)), + ..default() + }, + }) + .with_merge(Sphere { + sphere: (), + sphere_radius: 1.0, + sphere_sectors: 12, + sphere_stacks: 6, + }) .with(color(), vec4(0., 0., 1., 1.)) .spawn(); Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Sphere()) - .with(translation(), vec3(2., 2., 0.25)) + .with_merge(Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(vec3(2., 2., 0.25)), + ..default() + }, + }) + .with_merge(Sphere { + sphere: (), + sphere_radius: 0.5, + sphere_sectors: 36, + sphere_stacks: 18, + }) .with(color(), vec4(1., 1., 0., 1.)) .spawn(); Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Capsule()) - .with(translation(), vec3(-2.0, 2.0, 1.0)) + .with_merge(Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(vec3(-2.0, 2.0, 1.0)), + ..default() + }, + }) + .with_merge(Capsule { + capsule: (), + capsule_radius: 0.5, + capsule_half_height: 0.5, + capsule_rings: 0, + capsule_latitudes: 16, + capsule_longitudes: 32, + }) .with(color(), vec4(1.0, 0.25, 0.0, 1.0)) .spawn(); Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Capsule()) - .with(capsule_radius(), 0.25) - .with(capsule_half_height(), 0.25) - .with(capsule_rings(), 0) - .with(capsule_latitudes(), 16) - .with(capsule_longitudes(), 32) - .with(translation(), vec3(-2.0, 0.0, 0.5)) + .with_merge(Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(vec3(-2.0, 0.0, 0.5)), + ..default() + }, + }) + .with_merge(Capsule { + capsule: (), + capsule_radius: 0.25, + capsule_half_height: 0.25, + capsule_rings: 0, + capsule_latitudes: 16, + capsule_longitudes: 32, + }) .with(color(), vec4(1.0, 0.0, 0.25, 1.0)) .spawn(); Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Torus()) - .with(torus_inner_radius(), 0.25) - .with(torus_outer_radius(), 0.5) - .with(torus_slices(), 32) - .with(torus_loops(), 16) - .with(translation(), vec3(0.0, -2.0, 0.5)) + .with_merge(Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(vec3(0.0, -2.0, 0.5)), + ..default() + }, + }) + .with_merge(Torus { + torus: (), + torus_inner_radius: 0.25, + torus_outer_radius: 0.5, + torus_slices: 32, + torus_loops: 16, + }) .with(color(), vec4(0.0, 1.0, 0.25, 1.0)) .spawn(); } diff --git a/guest/rust/packages/std/orbit_camera/Cargo.toml b/guest/rust/packages/std/orbit_camera/Cargo.toml new file mode 100644 index 0000000000..79fbbaed09 --- /dev/null +++ b/guest/rust/packages/std/orbit_camera/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "orbit_camera" + +edition = "2021" +publish = false +version = "0.0.1" + +[dependencies] +ambient_api = { workspace = true } + +[[bin]] +name = "client_orbit_camera" +path = "src/client.rs" +required-features = ["client"] + +[features] +client = ["ambient_api/client"] +server = ["ambient_api/server"] diff --git a/guest/rust/packages/std/orbit_camera/ambient.toml b/guest/rust/packages/std/orbit_camera/ambient.toml new file mode 100644 index 0000000000..b556f8c6c9 --- /dev/null +++ b/guest/rust/packages/std/orbit_camera/ambient.toml @@ -0,0 +1,21 @@ +[package] +id = "orbit_camera" +name = "Orbit Camera" +description = "Implements a clientside-only orbit camera." +version = "0.0.1" +content = { type = "Asset", code = true } + +[components] +is_orbit_camera = { type = "Empty", attributes = ["Debuggable", "Networked"] } +camera_angle = { type = "Vec2", attributes = ["Debuggable", "Networked"] } +camera_distance = { type = "F32", attributes = ["Debuggable", "Networked"] } + +[concepts.OrbitCamera] +name = "Orbit Camera" +description = "An orbit camera." +[concepts.OrbitCamera.components.required] +is_orbit_camera = {} +"ambient_core::transform::lookat_target" = {} +[concepts.OrbitCamera.components.optional] +camera_angle = {} +camera_distance = {} diff --git a/guest/rust/packages/std/orbit_camera/src/client.rs b/guest/rust/packages/std/orbit_camera/src/client.rs new file mode 100644 index 0000000000..a6c8ff15f6 --- /dev/null +++ b/guest/rust/packages/std/orbit_camera/src/client.rs @@ -0,0 +1,74 @@ +use ambient_api::{ + core::{ + camera::{ + components::aspect_ratio_from_window, + concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, + }, + }, + transform::components::translation, + }, + prelude::*, +}; +use packages::this::components::{camera_angle, camera_distance, is_orbit_camera}; + +#[main] +pub fn main() { + spawn_query(is_orbit_camera()).bind(|cameras| { + for (camera_id, _) in cameras { + entity::add_components( + camera_id, + PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(Vec3::ZERO), + ..Default::default() + }, + } + .make() + .with(aspect_ratio_from_window(), EntityId::resources()), + ); + entity::add_component_if_required(camera_id, camera_angle(), Vec2::ZERO); + entity::add_component_if_required(camera_id, camera_distance(), 1.0); + } + }); + + query(is_orbit_camera()).each_frame(|cameras| { + let (delta, input) = input::get_delta(); + + let angle_delta = if input.mouse_buttons.contains(&MouseButton::Right) { + delta.mouse_position * 0.01 + } else { + Vec2::ZERO + }; + + let distance_delta = delta.mouse_wheel * 0.1; + + for (camera_id, _) in cameras { + let angle = entity::mutate_component_with_default( + camera_id, + camera_angle(), + Vec2::ZERO, + |rot| { + *rot += angle_delta; + }, + ); + + let distance = + entity::mutate_component_with_default(camera_id, camera_distance(), 0.0, |dist| { + *dist = f32::max(*dist + distance_delta, 1.0); + }); + + let quat = Quat::from_euler(glam::EulerRot::ZXY, angle.x, angle.y, 0.0); + entity::add_component(camera_id, translation(), quat * vec3(0.0, -distance, 0.0)); + } + }); +} From f39a9b7e23ce8f2b57993bf22bbfa3550b12096f Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 12:54:29 +0200 Subject: [PATCH 20/35] fix(std): broken orbit camera --- guest/rust/api_core/src/internal/generated.rs | 117 +++++++++++++++++- .../packages/std/orbit_camera/src/client.rs | 1 + schema/schema/camera.toml | 3 + 3 files changed, 119 insertions(+), 2 deletions(-) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index d987e3c763..278302c0ff 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -524,6 +524,10 @@ mod raw { pub rotation: Option, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] pub scale: Option, + #[doc = "**Component**: `ambient_core::app::main_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the main scene.\n\n"] + pub main_scene: Option<()>, + #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] + pub ui_scene: Option<()>, } impl crate::ecs::Concept for Camera { fn make(self) -> Entity { @@ -564,6 +568,15 @@ mod raw { if let Some(scale) = self.optional.scale { entity.set(crate::ambient_core::transform::components::scale(), scale); } + if let Some(main_scene) = self.optional.main_scene { + entity.set( + crate::ambient_core::app::components::main_scene(), + main_scene, + ); + } + if let Some(ui_scene) = self.optional.ui_scene { + entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); + } entity } fn get_spawned(id: EntityId) -> Option { @@ -605,6 +618,14 @@ mod raw { id, crate::ambient_core::transform::components::scale(), ), + main_scene: entity::get_component( + id, + crate::ambient_core::app::components::main_scene(), + ), + ui_scene: entity::get_component( + id, + crate::ambient_core::app::components::ui_scene(), + ), }, }) } @@ -629,6 +650,10 @@ mod raw { .get(crate::ambient_core::transform::components::rotation()), scale: entity .get(crate::ambient_core::transform::components::scale()), + main_scene: entity + .get(crate::ambient_core::app::components::main_scene()), + ui_scene: entity + .get(crate::ambient_core::app::components::ui_scene()), }, }) } @@ -687,6 +712,10 @@ mod raw { pub rotation: Option, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] pub scale: Option, + #[doc = "**Component**: `ambient_core::app::main_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the main scene.\n\n"] + pub main_scene: Option<()>, + #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] + pub ui_scene: Option<()>, } impl crate::ecs::Concept for PerspectiveCommonCamera { fn make(self) -> Entity { @@ -732,6 +761,15 @@ mod raw { if let Some(scale) = self.optional.scale { entity.set(crate::ambient_core::transform::components::scale(), scale); } + if let Some(main_scene) = self.optional.main_scene { + entity.set( + crate::ambient_core::app::components::main_scene(), + main_scene, + ); + } + if let Some(ui_scene) = self.optional.ui_scene { + entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); + } entity } fn get_spawned(id: EntityId) -> Option { @@ -781,6 +819,14 @@ mod raw { id, crate::ambient_core::transform::components::scale(), ), + main_scene: entity::get_component( + id, + crate::ambient_core::app::components::main_scene(), + ), + ui_scene: entity::get_component( + id, + crate::ambient_core::app::components::ui_scene(), + ), }, }) } @@ -808,6 +854,10 @@ mod raw { .get(crate::ambient_core::transform::components::rotation()), scale: entity .get(crate::ambient_core::transform::components::scale()), + main_scene: entity + .get(crate::ambient_core::app::components::main_scene()), + ui_scene: entity + .get(crate::ambient_core::app::components::ui_scene()), }, }) } @@ -874,6 +924,10 @@ mod raw { pub rotation: Option, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] pub scale: Option, + #[doc = "**Component**: `ambient_core::app::main_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the main scene.\n\n"] + pub main_scene: Option<()>, + #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] + pub ui_scene: Option<()>, } impl crate::ecs::Concept for PerspectiveCamera { fn make(self) -> Entity { @@ -924,6 +978,15 @@ mod raw { if let Some(scale) = self.optional.scale { entity.set(crate::ambient_core::transform::components::scale(), scale); } + if let Some(main_scene) = self.optional.main_scene { + entity.set( + crate::ambient_core::app::components::main_scene(), + main_scene, + ); + } + if let Some(ui_scene) = self.optional.ui_scene { + entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); + } entity } fn get_spawned(id: EntityId) -> Option { @@ -981,6 +1044,14 @@ mod raw { id, crate::ambient_core::transform::components::scale(), ), + main_scene: entity::get_component( + id, + crate::ambient_core::app::components::main_scene(), + ), + ui_scene: entity::get_component( + id, + crate::ambient_core::app::components::ui_scene(), + ), }, }) } @@ -1011,6 +1082,10 @@ mod raw { .get(crate::ambient_core::transform::components::rotation()), scale: entity .get(crate::ambient_core::transform::components::scale()), + main_scene: entity + .get(crate::ambient_core::app::components::main_scene()), + ui_scene: entity + .get(crate::ambient_core::app::components::ui_scene()), }, }) } @@ -1079,6 +1154,10 @@ mod raw { pub rotation: Option, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] pub scale: Option, + #[doc = "**Component**: `ambient_core::app::main_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the main scene.\n\n"] + pub main_scene: Option<()>, + #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] + pub ui_scene: Option<()>, } impl crate::ecs::Concept for PerspectiveInfiniteReverseCamera { fn make(self) -> Entity { @@ -1098,13 +1177,22 @@ mod raw { if let Some(scale) = self.optional.scale { entity.set(crate::ambient_core::transform::components::scale(), scale); } + if let Some(main_scene) = self.optional.main_scene { + entity.set( + crate::ambient_core::app::components::main_scene(), + main_scene, + ); + } + if let Some(ui_scene) = self.optional.ui_scene { + entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); + } entity } fn get_spawned(id: EntityId) -> Option { - Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , } }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity . get (crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , } }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity . get (crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity :: has_components (id , & [& crate :: ambient_core :: transform :: components :: local_to_world () , & crate :: ambient_core :: camera :: components :: near () , & crate :: ambient_core :: camera :: components :: projection () , & crate :: ambient_core :: camera :: components :: projection_view () , & crate :: ambient_core :: camera :: components :: active_camera () , & crate :: ambient_core :: transform :: components :: inv_local_to_world () , & crate :: ambient_core :: camera :: components :: fovy () , & crate :: ambient_core :: camera :: components :: aspect_ratio () , & crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()]) @@ -1163,6 +1251,10 @@ mod raw { pub rotation: Option, #[doc = "**Component**: `ambient_core::transform::scale`\n\n**Suggested value**: `Vec3::new(1f32, 1f32, 1f32, )`\n\n**Component description**: The scale of this entity.\n\n"] pub scale: Option, + #[doc = "**Component**: `ambient_core::app::main_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the main scene.\n\n"] + pub main_scene: Option<()>, + #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] + pub ui_scene: Option<()>, } impl crate::ecs::Concept for OrthographicCamera { fn make(self) -> Entity { @@ -1224,6 +1316,15 @@ mod raw { if let Some(scale) = self.optional.scale { entity.set(crate::ambient_core::transform::components::scale(), scale); } + if let Some(main_scene) = self.optional.main_scene { + entity.set( + crate::ambient_core::app::components::main_scene(), + main_scene, + ); + } + if let Some(ui_scene) = self.optional.ui_scene { + entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); + } entity } fn get_spawned(id: EntityId) -> Option { @@ -1289,6 +1390,14 @@ mod raw { id, crate::ambient_core::transform::components::scale(), ), + main_scene: entity::get_component( + id, + crate::ambient_core::app::components::main_scene(), + ), + ui_scene: entity::get_component( + id, + crate::ambient_core::app::components::ui_scene(), + ), }, }) } @@ -1326,6 +1435,10 @@ mod raw { .get(crate::ambient_core::transform::components::rotation()), scale: entity .get(crate::ambient_core::transform::components::scale()), + main_scene: entity + .get(crate::ambient_core::app::components::main_scene()), + ui_scene: entity + .get(crate::ambient_core::app::components::ui_scene()), }, }) } diff --git a/guest/rust/packages/std/orbit_camera/src/client.rs b/guest/rust/packages/std/orbit_camera/src/client.rs index a6c8ff15f6..c3a5fe9c56 100644 --- a/guest/rust/packages/std/orbit_camera/src/client.rs +++ b/guest/rust/packages/std/orbit_camera/src/client.rs @@ -30,6 +30,7 @@ pub fn main() { perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(Vec3::ZERO), + main_scene: Some(()), ..Default::default() }, } diff --git a/schema/schema/camera.toml b/schema/schema/camera.toml index fedc01baa0..9690f282c2 100644 --- a/schema/schema/camera.toml +++ b/schema/schema/camera.toml @@ -140,6 +140,9 @@ projection_view = { suggested = "Identity" } active_camera = { suggested = 0.0 } "transform::local_to_world" = { suggested = "Identity" } "transform::inv_local_to_world" = { suggested = "Identity" } +[concepts.Camera.components.optional] +"app::main_scene" = { description = "Either the main or UI scene must be specified for this camera to be used." } +"app::ui_scene" = { description = "Either the main or UI scene must be specified for this camera to be used." } [concepts.PerspectiveCommonCamera] name = "Perspective Common Camera" From d873553617407f10a458e7906f667ab607fa6eca Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 12:54:49 +0200 Subject: [PATCH 21/35] feat(examples): minor orbit tweaks --- guest/rust/examples/assets/basic_model/src/server.rs | 2 +- guest/rust/examples/basics/primitives/src/server.rs | 10 ++++++---- guest/rust/packages/std/orbit_camera/src/client.rs | 9 +++++++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/guest/rust/examples/assets/basic_model/src/server.rs b/guest/rust/examples/assets/basic_model/src/server.rs index 1d70de651b..af3e43e148 100644 --- a/guest/rust/examples/assets/basic_model/src/server.rs +++ b/guest/rust/examples/assets/basic_model/src/server.rs @@ -15,7 +15,7 @@ pub async fn main() { is_orbit_camera: (), lookat_target: Vec3::ZERO, optional: OrbitCameraOptional { - camera_distance: Some(2.0), + camera_distance: Some(4.0), ..default() }, } diff --git a/guest/rust/examples/basics/primitives/src/server.rs b/guest/rust/examples/basics/primitives/src/server.rs index ae041ad403..73b0ff2fae 100644 --- a/guest/rust/examples/basics/primitives/src/server.rs +++ b/guest/rust/examples/basics/primitives/src/server.rs @@ -1,10 +1,10 @@ use ambient_api::{ core::{ primitives::{ - components::cube, + components::{cube, quad}, concepts::{Capsule, Sphere, Torus}, }, - rendering::components::color, + rendering::components::{color, double_sided}, transform::concepts::{Transformable, TransformableOptional}, }, prelude::*, @@ -15,9 +15,9 @@ use packages::orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}; pub fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: vec3(0., 0., 2.), + lookat_target: vec3(0., 0., 0.), optional: OrbitCameraOptional { - camera_distance: Some(5.), + camera_distance: Some(10.), ..default() }, } @@ -32,6 +32,8 @@ pub fn main() { ..default() }, }) + .with(quad(), ()) + .with(double_sided(), true) .with(color(), vec4(1., 0., 0., 1.)) .spawn(); diff --git a/guest/rust/packages/std/orbit_camera/src/client.rs b/guest/rust/packages/std/orbit_camera/src/client.rs index c3a5fe9c56..2d0b86ff6f 100644 --- a/guest/rust/packages/std/orbit_camera/src/client.rs +++ b/guest/rust/packages/std/orbit_camera/src/client.rs @@ -37,7 +37,11 @@ pub fn main() { .make() .with(aspect_ratio_from_window(), EntityId::resources()), ); - entity::add_component_if_required(camera_id, camera_angle(), Vec2::ZERO); + entity::add_component_if_required( + camera_id, + camera_angle(), + vec2(0.0, 45f32.to_radians()), + ); entity::add_component_if_required(camera_id, camera_distance(), 1.0); } }); @@ -60,6 +64,7 @@ pub fn main() { Vec2::ZERO, |rot| { *rot += angle_delta; + rot.y = rot.y.clamp(-89f32.to_radians(), 89f32.to_radians()); }, ); @@ -68,7 +73,7 @@ pub fn main() { *dist = f32::max(*dist + distance_delta, 1.0); }); - let quat = Quat::from_euler(glam::EulerRot::ZXY, angle.x, angle.y, 0.0); + let quat = Quat::from_euler(glam::EulerRot::ZXY, angle.x, -angle.y, 0.0); entity::add_component(camera_id, translation(), quat * vec3(0.0, -distance, 0.0)); } }); From bc6d9c71b3812a6dd45d9978f1efa4888955b80b Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 15:11:07 +0200 Subject: [PATCH 22/35] feat(schema); aspect_ratio_from_window camera opt --- guest/rust/api_core/src/internal/generated.rs | 428 +++--------------- .../packages/std/orbit_camera/ambient.toml | 10 +- .../packages/std/orbit_camera/src/client.rs | 19 +- schema/schema/camera.toml | 1 + 4 files changed, 77 insertions(+), 381 deletions(-) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 0f9a33de8d..4e67b47bc8 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -528,6 +528,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] + pub aspect_ratio_from_window: Option, } impl crate::ecs::Concept for Camera { fn make(self) -> Entity { @@ -577,85 +579,21 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(aspect_ratio_from_window) = + self.optional.aspect_ratio_from_window + { + entity.set( + crate::ambient_core::camera::components::aspect_ratio_from_window(), + aspect_ratio_from_window, + ); + } entity } fn get_spawned(id: EntityId) -> Option { - Some(Self { - local_to_world: entity::get_component( - id, - crate::ambient_core::transform::components::local_to_world(), - )?, - near: entity::get_component( - id, - crate::ambient_core::camera::components::near(), - )?, - projection: entity::get_component( - id, - crate::ambient_core::camera::components::projection(), - )?, - projection_view: entity::get_component( - id, - crate::ambient_core::camera::components::projection_view(), - )?, - active_camera: entity::get_component( - id, - crate::ambient_core::camera::components::active_camera(), - )?, - inv_local_to_world: entity::get_component( - id, - crate::ambient_core::transform::components::inv_local_to_world(), - )?, - optional: CameraOptional { - translation: entity::get_component( - id, - crate::ambient_core::transform::components::translation(), - ), - rotation: entity::get_component( - id, - crate::ambient_core::transform::components::rotation(), - ), - scale: entity::get_component( - id, - crate::ambient_core::transform::components::scale(), - ), - main_scene: entity::get_component( - id, - crate::ambient_core::app::components::main_scene(), - ), - ui_scene: entity::get_component( - id, - crate::ambient_core::app::components::ui_scene(), - ), - }, - }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , optional : CameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some(Self { - local_to_world: entity - .get(crate::ambient_core::transform::components::local_to_world())?, - near: entity.get(crate::ambient_core::camera::components::near())?, - projection: entity - .get(crate::ambient_core::camera::components::projection())?, - projection_view: entity - .get(crate::ambient_core::camera::components::projection_view())?, - active_camera: entity - .get(crate::ambient_core::camera::components::active_camera())?, - inv_local_to_world: entity.get( - crate::ambient_core::transform::components::inv_local_to_world(), - )?, - optional: CameraOptional { - translation: entity - .get(crate::ambient_core::transform::components::translation()), - rotation: entity - .get(crate::ambient_core::transform::components::rotation()), - scale: entity - .get(crate::ambient_core::transform::components::scale()), - main_scene: entity - .get(crate::ambient_core::app::components::main_scene()), - ui_scene: entity - .get(crate::ambient_core::app::components::ui_scene()), - }, - }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , optional : CameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity::has_components( @@ -716,6 +654,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] + pub aspect_ratio_from_window: Option, } impl crate::ecs::Concept for PerspectiveCommonCamera { fn make(self) -> Entity { @@ -770,96 +710,21 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(aspect_ratio_from_window) = + self.optional.aspect_ratio_from_window + { + entity.set( + crate::ambient_core::camera::components::aspect_ratio_from_window(), + aspect_ratio_from_window, + ); + } entity } fn get_spawned(id: EntityId) -> Option { - Some(Self { - local_to_world: entity::get_component( - id, - crate::ambient_core::transform::components::local_to_world(), - )?, - near: entity::get_component( - id, - crate::ambient_core::camera::components::near(), - )?, - projection: entity::get_component( - id, - crate::ambient_core::camera::components::projection(), - )?, - projection_view: entity::get_component( - id, - crate::ambient_core::camera::components::projection_view(), - )?, - active_camera: entity::get_component( - id, - crate::ambient_core::camera::components::active_camera(), - )?, - inv_local_to_world: entity::get_component( - id, - crate::ambient_core::transform::components::inv_local_to_world(), - )?, - fovy: entity::get_component( - id, - crate::ambient_core::camera::components::fovy(), - )?, - aspect_ratio: entity::get_component( - id, - crate::ambient_core::camera::components::aspect_ratio(), - )?, - optional: PerspectiveCommonCameraOptional { - translation: entity::get_component( - id, - crate::ambient_core::transform::components::translation(), - ), - rotation: entity::get_component( - id, - crate::ambient_core::transform::components::rotation(), - ), - scale: entity::get_component( - id, - crate::ambient_core::transform::components::scale(), - ), - main_scene: entity::get_component( - id, - crate::ambient_core::app::components::main_scene(), - ), - ui_scene: entity::get_component( - id, - crate::ambient_core::app::components::ui_scene(), - ), - }, - }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , optional : PerspectiveCommonCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some(Self { - local_to_world: entity - .get(crate::ambient_core::transform::components::local_to_world())?, - near: entity.get(crate::ambient_core::camera::components::near())?, - projection: entity - .get(crate::ambient_core::camera::components::projection())?, - projection_view: entity - .get(crate::ambient_core::camera::components::projection_view())?, - active_camera: entity - .get(crate::ambient_core::camera::components::active_camera())?, - inv_local_to_world: entity.get( - crate::ambient_core::transform::components::inv_local_to_world(), - )?, - fovy: entity.get(crate::ambient_core::camera::components::fovy())?, - aspect_ratio: entity - .get(crate::ambient_core::camera::components::aspect_ratio())?, - optional: PerspectiveCommonCameraOptional { - translation: entity - .get(crate::ambient_core::transform::components::translation()), - rotation: entity - .get(crate::ambient_core::transform::components::rotation()), - scale: entity - .get(crate::ambient_core::transform::components::scale()), - main_scene: entity - .get(crate::ambient_core::app::components::main_scene()), - ui_scene: entity - .get(crate::ambient_core::app::components::ui_scene()), - }, - }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , optional : PerspectiveCommonCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity::has_components( @@ -928,6 +793,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] + pub aspect_ratio_from_window: Option, } impl crate::ecs::Concept for PerspectiveCamera { fn make(self) -> Entity { @@ -987,107 +854,21 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(aspect_ratio_from_window) = + self.optional.aspect_ratio_from_window + { + entity.set( + crate::ambient_core::camera::components::aspect_ratio_from_window(), + aspect_ratio_from_window, + ); + } entity } fn get_spawned(id: EntityId) -> Option { - Some(Self { - local_to_world: entity::get_component( - id, - crate::ambient_core::transform::components::local_to_world(), - )?, - near: entity::get_component( - id, - crate::ambient_core::camera::components::near(), - )?, - projection: entity::get_component( - id, - crate::ambient_core::camera::components::projection(), - )?, - projection_view: entity::get_component( - id, - crate::ambient_core::camera::components::projection_view(), - )?, - active_camera: entity::get_component( - id, - crate::ambient_core::camera::components::active_camera(), - )?, - inv_local_to_world: entity::get_component( - id, - crate::ambient_core::transform::components::inv_local_to_world(), - )?, - fovy: entity::get_component( - id, - crate::ambient_core::camera::components::fovy(), - )?, - aspect_ratio: entity::get_component( - id, - crate::ambient_core::camera::components::aspect_ratio(), - )?, - perspective: entity::get_component( - id, - crate::ambient_core::camera::components::perspective(), - )?, - far: entity::get_component( - id, - crate::ambient_core::camera::components::far(), - )?, - optional: PerspectiveCameraOptional { - translation: entity::get_component( - id, - crate::ambient_core::transform::components::translation(), - ), - rotation: entity::get_component( - id, - crate::ambient_core::transform::components::rotation(), - ), - scale: entity::get_component( - id, - crate::ambient_core::transform::components::scale(), - ), - main_scene: entity::get_component( - id, - crate::ambient_core::app::components::main_scene(), - ), - ui_scene: entity::get_component( - id, - crate::ambient_core::app::components::ui_scene(), - ), - }, - }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective ()) ? , far : entity :: get_component (id , crate :: ambient_core :: camera :: components :: far ()) ? , optional : PerspectiveCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some(Self { - local_to_world: entity - .get(crate::ambient_core::transform::components::local_to_world())?, - near: entity.get(crate::ambient_core::camera::components::near())?, - projection: entity - .get(crate::ambient_core::camera::components::projection())?, - projection_view: entity - .get(crate::ambient_core::camera::components::projection_view())?, - active_camera: entity - .get(crate::ambient_core::camera::components::active_camera())?, - inv_local_to_world: entity.get( - crate::ambient_core::transform::components::inv_local_to_world(), - )?, - fovy: entity.get(crate::ambient_core::camera::components::fovy())?, - aspect_ratio: entity - .get(crate::ambient_core::camera::components::aspect_ratio())?, - perspective: entity - .get(crate::ambient_core::camera::components::perspective())?, - far: entity.get(crate::ambient_core::camera::components::far())?, - optional: PerspectiveCameraOptional { - translation: entity - .get(crate::ambient_core::transform::components::translation()), - rotation: entity - .get(crate::ambient_core::transform::components::rotation()), - scale: entity - .get(crate::ambient_core::transform::components::scale()), - main_scene: entity - .get(crate::ambient_core::app::components::main_scene()), - ui_scene: entity - .get(crate::ambient_core::app::components::ui_scene()), - }, - }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective : entity . get (crate :: ambient_core :: camera :: components :: perspective ()) ? , far : entity . get (crate :: ambient_core :: camera :: components :: far ()) ? , optional : PerspectiveCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity::has_components( @@ -1158,6 +939,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] + pub aspect_ratio_from_window: Option, } impl crate::ecs::Concept for PerspectiveInfiniteReverseCamera { fn make(self) -> Entity { @@ -1186,13 +969,21 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(aspect_ratio_from_window) = + self.optional.aspect_ratio_from_window + { + entity.set( + crate::ambient_core::camera::components::aspect_ratio_from_window(), + aspect_ratio_from_window, + ); + } entity } fn get_spawned(id: EntityId) -> Option { - Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , } }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity . get (crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , } }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity . get (crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity :: has_components (id , & [& crate :: ambient_core :: transform :: components :: local_to_world () , & crate :: ambient_core :: camera :: components :: near () , & crate :: ambient_core :: camera :: components :: projection () , & crate :: ambient_core :: camera :: components :: projection_view () , & crate :: ambient_core :: camera :: components :: active_camera () , & crate :: ambient_core :: transform :: components :: inv_local_to_world () , & crate :: ambient_core :: camera :: components :: fovy () , & crate :: ambient_core :: camera :: components :: aspect_ratio () , & crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()]) @@ -1255,6 +1046,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] + pub aspect_ratio_from_window: Option, } impl crate::ecs::Concept for OrthographicCamera { fn make(self) -> Entity { @@ -1325,122 +1118,21 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(aspect_ratio_from_window) = + self.optional.aspect_ratio_from_window + { + entity.set( + crate::ambient_core::camera::components::aspect_ratio_from_window(), + aspect_ratio_from_window, + ); + } entity } fn get_spawned(id: EntityId) -> Option { - Some(Self { - local_to_world: entity::get_component( - id, - crate::ambient_core::transform::components::local_to_world(), - )?, - near: entity::get_component( - id, - crate::ambient_core::camera::components::near(), - )?, - projection: entity::get_component( - id, - crate::ambient_core::camera::components::projection(), - )?, - projection_view: entity::get_component( - id, - crate::ambient_core::camera::components::projection_view(), - )?, - active_camera: entity::get_component( - id, - crate::ambient_core::camera::components::active_camera(), - )?, - inv_local_to_world: entity::get_component( - id, - crate::ambient_core::transform::components::inv_local_to_world(), - )?, - orthographic: entity::get_component( - id, - crate::ambient_core::camera::components::orthographic(), - )?, - orthographic_left: entity::get_component( - id, - crate::ambient_core::camera::components::orthographic_left(), - )?, - orthographic_right: entity::get_component( - id, - crate::ambient_core::camera::components::orthographic_right(), - )?, - orthographic_top: entity::get_component( - id, - crate::ambient_core::camera::components::orthographic_top(), - )?, - orthographic_bottom: entity::get_component( - id, - crate::ambient_core::camera::components::orthographic_bottom(), - )?, - far: entity::get_component( - id, - crate::ambient_core::camera::components::far(), - )?, - optional: OrthographicCameraOptional { - translation: entity::get_component( - id, - crate::ambient_core::transform::components::translation(), - ), - rotation: entity::get_component( - id, - crate::ambient_core::transform::components::rotation(), - ), - scale: entity::get_component( - id, - crate::ambient_core::transform::components::scale(), - ), - main_scene: entity::get_component( - id, - crate::ambient_core::app::components::main_scene(), - ), - ui_scene: entity::get_component( - id, - crate::ambient_core::app::components::ui_scene(), - ), - }, - }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , orthographic : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic ()) ? , orthographic_left : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic_left ()) ? , orthographic_right : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic_right ()) ? , orthographic_top : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic_top ()) ? , orthographic_bottom : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic_bottom ()) ? , far : entity :: get_component (id , crate :: ambient_core :: camera :: components :: far ()) ? , optional : OrthographicCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some(Self { - local_to_world: entity - .get(crate::ambient_core::transform::components::local_to_world())?, - near: entity.get(crate::ambient_core::camera::components::near())?, - projection: entity - .get(crate::ambient_core::camera::components::projection())?, - projection_view: entity - .get(crate::ambient_core::camera::components::projection_view())?, - active_camera: entity - .get(crate::ambient_core::camera::components::active_camera())?, - inv_local_to_world: entity.get( - crate::ambient_core::transform::components::inv_local_to_world(), - )?, - orthographic: entity - .get(crate::ambient_core::camera::components::orthographic())?, - orthographic_left: entity - .get(crate::ambient_core::camera::components::orthographic_left())?, - orthographic_right: entity.get( - crate::ambient_core::camera::components::orthographic_right(), - )?, - orthographic_top: entity - .get(crate::ambient_core::camera::components::orthographic_top())?, - orthographic_bottom: entity.get( - crate::ambient_core::camera::components::orthographic_bottom(), - )?, - far: entity.get(crate::ambient_core::camera::components::far())?, - optional: OrthographicCameraOptional { - translation: entity - .get(crate::ambient_core::transform::components::translation()), - rotation: entity - .get(crate::ambient_core::transform::components::rotation()), - scale: entity - .get(crate::ambient_core::transform::components::scale()), - main_scene: entity - .get(crate::ambient_core::app::components::main_scene()), - ui_scene: entity - .get(crate::ambient_core::app::components::ui_scene()), - }, - }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , orthographic : entity . get (crate :: ambient_core :: camera :: components :: orthographic ()) ? , orthographic_left : entity . get (crate :: ambient_core :: camera :: components :: orthographic_left ()) ? , orthographic_right : entity . get (crate :: ambient_core :: camera :: components :: orthographic_right ()) ? , orthographic_top : entity . get (crate :: ambient_core :: camera :: components :: orthographic_top ()) ? , orthographic_bottom : entity . get (crate :: ambient_core :: camera :: components :: orthographic_bottom ()) ? , far : entity . get (crate :: ambient_core :: camera :: components :: far ()) ? , optional : OrthographicCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity::has_components( diff --git a/guest/rust/packages/std/orbit_camera/ambient.toml b/guest/rust/packages/std/orbit_camera/ambient.toml index b556f8c6c9..d6d2894fa4 100644 --- a/guest/rust/packages/std/orbit_camera/ambient.toml +++ b/guest/rust/packages/std/orbit_camera/ambient.toml @@ -7,8 +7,14 @@ content = { type = "Asset", code = true } [components] is_orbit_camera = { type = "Empty", attributes = ["Debuggable", "Networked"] } -camera_angle = { type = "Vec2", attributes = ["Debuggable", "Networked"] } -camera_distance = { type = "F32", attributes = ["Debuggable", "Networked"] } +camera_angle = { type = "Vec2", description = "Camera angle specified in radians; x = yaw, y = pitch", attributes = [ + "Debuggable", + "Networked", +] } +camera_distance = { type = "F32", description = "Camera distance specified in meters", attributes = [ + "Debuggable", + "Networked", +] } [concepts.OrbitCamera] name = "Orbit Camera" diff --git a/guest/rust/packages/std/orbit_camera/src/client.rs b/guest/rust/packages/std/orbit_camera/src/client.rs index 2d0b86ff6f..b77b8b5e8c 100644 --- a/guest/rust/packages/std/orbit_camera/src/client.rs +++ b/guest/rust/packages/std/orbit_camera/src/client.rs @@ -1,12 +1,9 @@ use ambient_api::{ core::{ - camera::{ - components::aspect_ratio_from_window, - concepts::{ - PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, - }, + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, - transform::components::translation, + transform::components::{rotation, translation}, }, prelude::*, }; @@ -31,11 +28,10 @@ pub fn main() { optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(Vec3::ZERO), main_scene: Some(()), - ..Default::default() + aspect_ratio_from_window: Some(entity::resources()), + ..default() }, - } - .make() - .with(aspect_ratio_from_window(), EntityId::resources()), + }, ); entity::add_component_if_required( camera_id, @@ -55,7 +51,7 @@ pub fn main() { Vec2::ZERO }; - let distance_delta = delta.mouse_wheel * 0.1; + let distance_delta = delta.mouse_wheel * -0.1; for (camera_id, _) in cameras { let angle = entity::mutate_component_with_default( @@ -75,6 +71,7 @@ pub fn main() { let quat = Quat::from_euler(glam::EulerRot::ZXY, angle.x, -angle.y, 0.0); entity::add_component(camera_id, translation(), quat * vec3(0.0, -distance, 0.0)); + entity::add_component(camera_id, rotation(), quat); } }); } diff --git a/schema/schema/camera.toml b/schema/schema/camera.toml index 9690f282c2..419baa2602 100644 --- a/schema/schema/camera.toml +++ b/schema/schema/camera.toml @@ -143,6 +143,7 @@ active_camera = { suggested = 0.0 } [concepts.Camera.components.optional] "app::main_scene" = { description = "Either the main or UI scene must be specified for this camera to be used." } "app::ui_scene" = { description = "Either the main or UI scene must be specified for this camera to be used." } +aspect_ratio_from_window = {} [concepts.PerspectiveCommonCamera] name = "Perspective Common Camera" From 529ad418f7dd7c63827981733a94e73f33ad44b6 Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 15:11:20 +0200 Subject: [PATCH 23/35] feat(api): add_components Into --- guest/rust/api_core/src/entity.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guest/rust/api_core/src/entity.rs b/guest/rust/api_core/src/entity.rs index 14e563dd15..a9b658a9db 100644 --- a/guest/rust/api_core/src/entity.rs +++ b/guest/rust/api_core/src/entity.rs @@ -117,8 +117,8 @@ pub fn add_component(entity: EntityId, component: Component) { + wit::component::add_components(entity.into_bindgen(), &components.into().into_bindgen()) } /// Sets the component `component` for `entity` with `value`. From 0589b0cec6132f46e27373c96a8720259ad7deb0 Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 15:28:15 +0200 Subject: [PATCH 24/35] wip(guest): convert a bunch to new concepts --- .../assets/generate_pipeline/ambient.toml | 3 ++ .../assets/generate_pipeline/src/server.rs | 39 +++++++--------- .../assets/material_overriding/ambient.toml | 3 ++ .../assets/material_overriding/src/server.rs | 36 +++++++-------- guest/rust/examples/assets/unity/ambient.toml | 3 ++ .../rust/examples/assets/unity/src/server.rs | 35 +++++++------- .../examples/basics/multiplayer/src/server.rs | 39 ++++++++++------ .../rust/examples/basics/physics/ambient.toml | 3 ++ .../examples/basics/physics/src/server.rs | 34 +++++++------- .../examples/basics/skinmesh/ambient.toml | 3 ++ .../examples/basics/skinmesh/src/client.rs | 46 ++++++++++--------- .../first_person_camera/src/server.rs | 16 +++---- .../third_person_camera/src/server.rs | 22 ++++----- .../packages/std/fps_controller/src/client.rs | 32 +++++++++---- .../packages/std/fps_controller/src/server.rs | 24 ++++++++-- 15 files changed, 193 insertions(+), 145 deletions(-) diff --git a/guest/rust/examples/assets/generate_pipeline/ambient.toml b/guest/rust/examples/assets/generate_pipeline/ambient.toml index 2f431476ff..a390fa29ee 100644 --- a/guest/rust/examples/assets/generate_pipeline/ambient.toml +++ b/guest/rust/examples/assets/generate_pipeline/ambient.toml @@ -6,3 +6,6 @@ version = "0.0.1" repository = "https://github.com/AmbientRun/Ambient/tree/main/guest/rust/examples/basics/basic_model" type = "Game" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/assets/generate_pipeline/src/server.rs b/guest/rust/examples/assets/generate_pipeline/src/server.rs index 1c02c244bf..9fcc08fd44 100644 --- a/guest/rust/examples/assets/generate_pipeline/src/server.rs +++ b/guest/rust/examples/assets/generate_pipeline/src/server.rs @@ -1,35 +1,28 @@ use ambient_api::{ - core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, - concepts::make_PerspectiveInfiniteReverseCamera, - }, - prefab::components::prefab_from_url, - transform::{ - components::{lookat_target, translation}, - concepts::make_Transformable, - }, - }, + core::{prefab::components::prefab_from_url, transform::components::local_to_world}, prelude::*, }; -use packages::this::assets; - +use packages::{ + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + this::assets, +}; #[main] pub async fn main() { // Camera - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(2., 2., 2.)) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); - + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: OrbitCameraOptional { + camera_distance: Some(4.0), + ..default() + }, + } + .make() + .spawn(); // Model Entity::new() - .with_merge(make_Transformable()) + .with(local_to_world(), Mat4::IDENTITY) .with(prefab_from_url(), assets::url("Cube.glb")) .spawn(); } diff --git a/guest/rust/examples/assets/material_overriding/ambient.toml b/guest/rust/examples/assets/material_overriding/ambient.toml index fab157d663..4f37d1a37d 100644 --- a/guest/rust/examples/assets/material_overriding/ambient.toml +++ b/guest/rust/examples/assets/material_overriding/ambient.toml @@ -12,3 +12,6 @@ type = "Bool" name = "Is The Best" description = "Declares whether or not the entity this is attached is the best." attributes = ["Networked", "Debuggable"] + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/assets/material_overriding/src/server.rs b/guest/rust/examples/assets/material_overriding/src/server.rs index 4972a24e25..040684c295 100644 --- a/guest/rust/examples/assets/material_overriding/src/server.rs +++ b/guest/rust/examples/assets/material_overriding/src/server.rs @@ -1,40 +1,40 @@ use ambient_api::{ core::{ app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, prefab::components::{prefab_from_url, spawned}, primitives::components::quad, rendering::components::{cast_shadows, light_ambient, light_diffuse, sun}, - transform::{ - components::{lookat_target, rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{local_to_world, rotation, scale}, }, prelude::*, }; -use packages::this::{assets, components::is_the_best}; +use packages::{ + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + this::{assets, components::is_the_best}, +}; #[main] pub async fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(2., 2., 1.)) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: OrbitCameraOptional { + camera_distance: Some(2.0), + ..default() + }, + } + .make() + .spawn(); Entity::new() - .with_merge(make_Transformable()) + .with(local_to_world(), Mat4::IDENTITY) .with(quad(), ()) .with(scale(), Vec3::ONE * 2.0) .spawn(); Entity::new() - .with_merge(make_Transformable()) + .with(local_to_world(), Mat4::IDENTITY) .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-1.)) .with(main_scene(), ()) @@ -43,7 +43,7 @@ pub async fn main() { .spawn(); let model = Entity::new() - .with_merge(make_Transformable()) + .with(local_to_world(), Mat4::IDENTITY) .with(cast_shadows(), ()) .with(prefab_from_url(), assets::url("Teapot.glb")) .with(is_the_best(), true) diff --git a/guest/rust/examples/assets/unity/ambient.toml b/guest/rust/examples/assets/unity/ambient.toml index 2efa0b490a..86b5b5eb49 100644 --- a/guest/rust/examples/assets/unity/ambient.toml +++ b/guest/rust/examples/assets/unity/ambient.toml @@ -4,3 +4,6 @@ name = "Unity" description = "Load and spawn a Unity prefab" version = "0.0.1" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/assets/unity/src/server.rs b/guest/rust/examples/assets/unity/src/server.rs index 35ccfdab8c..ce6a3dcba4 100644 --- a/guest/rust/examples/assets/unity/src/server.rs +++ b/guest/rust/examples/assets/unity/src/server.rs @@ -1,39 +1,40 @@ use ambient_api::{ core::{ app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, prefab::components::prefab_from_url, primitives::components::quad, rendering::components::cast_shadows, - transform::{ - components::{lookat_target, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{local_to_world, scale}, }, prelude::*, }; -use packages::this::assets; + +use packages::{ + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + this::assets, +}; #[main] pub fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), Vec3::ONE * 5. + Vec3::Z * 1.5) - .with(lookat_target(), Vec3::Z * 1.5) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::Z * 1.5, + optional: OrbitCameraOptional { + camera_distance: Some(10.0), + ..default() + }, + } + .make() + .spawn(); Entity::new() - .with_merge(make_Transformable()) + .with(local_to_world(), Mat4::IDENTITY) .with(quad(), ()) .with(scale(), Vec3::ONE * 100.) .spawn(); Entity::new() - .with_merge(make_Transformable()) + .with(local_to_world(), Mat4::IDENTITY) .with(cast_shadows(), ()) .with( prefab_from_url(), diff --git a/guest/rust/examples/basics/multiplayer/src/server.rs b/guest/rust/examples/basics/multiplayer/src/server.rs index a2e8e3adee..def3be8965 100644 --- a/guest/rust/examples/basics/multiplayer/src/server.rs +++ b/guest/rust/examples/basics/multiplayer/src/server.rs @@ -1,35 +1,46 @@ use ambient_api::{ core::{ - app::components::main_scene, camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, + components::aspect_ratio_from_window, + concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, + }, }, player::components::is_player, primitives::components::cube, rendering::components::color, - transform::{ - components::{lookat_target, translation}, - concepts::make_Transformable, - }, + transform::components::{lookat_target, translation}, }, prelude::*, }; #[main] pub fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), Vec3::ONE * 5.) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + main_scene: Some(()), + translation: Some(Vec3::ONE * 5.), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(lookat_target(), vec3(0., 0., 0.)) + .spawn(); spawn_query(is_player()).bind(move |players| { // For each player joining, spawn a random colored box somewhere for _ in players { Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), rand::random()) .with(color(), rand::random::().extend(1.0)) diff --git a/guest/rust/examples/basics/physics/ambient.toml b/guest/rust/examples/basics/physics/ambient.toml index 1e2372696d..0d70e731a4 100644 --- a/guest/rust/examples/basics/physics/ambient.toml +++ b/guest/rust/examples/basics/physics/ambient.toml @@ -10,3 +10,6 @@ content = { type = "Playable", example = true } [messages.Bonk] description = "Collision between two objects." fields = { emitter = "EntityId", listener = "EntityId" } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/basics/physics/src/server.rs b/guest/rust/examples/basics/physics/src/server.rs index 64197a6620..a334498200 100644 --- a/guest/rust/examples/basics/physics/src/server.rs +++ b/guest/rust/examples/basics/physics/src/server.rs @@ -1,9 +1,5 @@ use ambient_api::{ core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, messages::{Collision, Frame}, physics::components::{ angular_velocity, cube_collider, dynamic, linear_velocity, physics_controlled, @@ -12,28 +8,31 @@ use ambient_api::{ prefab::components::prefab_from_url, primitives::components::cube, rendering::components::{cast_shadows, color}, - transform::{ - components::{lookat_target, rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{rotation, scale, translation}, }, prelude::*, }; -use packages::this::{assets, messages::Bonk}; +use packages::{ + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + this::{assets, messages::Bonk}, +}; #[main] pub async fn main() { - let camera = Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(5., 5., 4.)) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + let camera = OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: OrbitCameraOptional { + camera_distance: Some(7.5), + camera_angle: Some(vec2(45f32.to_radians(), 45f32.to_radians())), + ..default() + }, + } + .make() + .spawn(); let cube = Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with(visualize_collider(), ()) .with(physics_controlled(), ()) @@ -49,7 +48,6 @@ pub async fn main() { .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("shape.glb")) .spawn(); diff --git a/guest/rust/examples/basics/skinmesh/ambient.toml b/guest/rust/examples/basics/skinmesh/ambient.toml index 7577b51246..f9cbab203d 100644 --- a/guest/rust/examples/basics/skinmesh/ambient.toml +++ b/guest/rust/examples/basics/skinmesh/ambient.toml @@ -8,3 +8,6 @@ content = { type = "Playable", example = true } [messages] SetController = { name = "Set controller", description = "Sets the animation controller.", fields = { value = "U32" } } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/basics/skinmesh/src/client.rs b/guest/rust/examples/basics/skinmesh/src/client.rs index aa190de06d..1aa5bf9460 100644 --- a/guest/rust/examples/basics/skinmesh/src/client.rs +++ b/guest/rust/examples/basics/skinmesh/src/client.rs @@ -2,37 +2,38 @@ use ambient_api::{ animation::{self, AnimationPlayerRef, BindId, BlendNodeRef, PlayClipFromUrlNodeRef, PlayMode}, core::{ animation::components::apply_animation_player, - app::components::{main_scene, name}, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, + app::components::name, layout::components::space_between_items, model::components::model_loaded, prefab::components::prefab_from_url, - primitives::{components::quad, concepts::make_Sphere}, + primitives::{components::quad, concepts::Sphere}, rendering::components::color, - transform::{ - components::{local_to_parent, lookat_target, reset_scale, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{local_to_parent, reset_scale, scale}, }, element::{use_effect, use_state}, prelude::*, }; -use packages::this::assets; + +use packages::{ + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + this::assets, +}; #[main] pub async fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(2., 2., 3.0)) - .with(lookat_target(), vec3(0., 0., 1.)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: vec3(0., 0., 1.), + optional: OrbitCameraOptional { + camera_angle: Some(vec2(-180f32.to_radians(), 45f32.to_radians())), + camera_distance: Some(3.0), + ..default() + }, + } + .make() + .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with(color(), vec4(0.5, 0.5, 0.5, 1.)) @@ -40,7 +41,6 @@ pub async fn main() { .spawn(); let unit_id = Entity::new() - .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("Peasant Man.fbx")) .with(name(), "Peasant".to_string()) .spawn(); @@ -61,8 +61,12 @@ pub async fn main() { // This demonstrates how to attach an entity to a bone let left_foot = animation::get_bone_by_bind_id(unit_id, &BindId::LeftFoot).unwrap(); let ball = Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Sphere()) + .with_merge(Sphere { + sphere: (), + sphere_radius: 0.5, + sphere_sectors: 36, + sphere_stacks: 18, + }) .with(scale(), vec3(0.3, 0.3, 0.3)) .with(color(), vec4(0.0, 1.0, 0.0, 1.0)) .with(local_to_parent(), Default::default()) diff --git a/guest/rust/examples/controllers/first_person_camera/src/server.rs b/guest/rust/examples/controllers/first_person_camera/src/server.rs index 532a6bf898..6f845d8de1 100644 --- a/guest/rust/examples/controllers/first_person_camera/src/server.rs +++ b/guest/rust/examples/controllers/first_person_camera/src/server.rs @@ -2,12 +2,9 @@ use ambient_api::{ core::{ physics::components::{plane_collider, sphere_collider}, player::components::is_player, - primitives::{components::quad, concepts::make_Sphere}, + primitives::{components::quad, concepts::Sphere}, rendering::components::color, - transform::{ - components::{scale, translation}, - concepts::make_Transformable, - }, + transform::components::{scale, translation}, }, prelude::*, }; @@ -16,7 +13,6 @@ use packages::fps_controller::components::{camera_distance, use_fps_controller}; #[main] pub fn main() { Entity::new() - .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with(color(), vec4(1., 0., 0., 1.)) @@ -24,8 +20,12 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Sphere()) + .with_merge(Sphere { + sphere: (), + sphere_radius: 0.5, + sphere_sectors: 36, + sphere_stacks: 18, + }) .with(sphere_collider(), 0.5) .with(translation(), vec3(5., 5., 1.)) .spawn(); diff --git a/guest/rust/examples/controllers/third_person_camera/src/server.rs b/guest/rust/examples/controllers/third_person_camera/src/server.rs index ed11d92831..73b39fb860 100644 --- a/guest/rust/examples/controllers/third_person_camera/src/server.rs +++ b/guest/rust/examples/controllers/third_person_camera/src/server.rs @@ -4,12 +4,9 @@ use ambient_api::{ model::components::model_from_url, physics::components::{plane_collider, sphere_collider}, player::components::is_player, - primitives::{components::quad, concepts::make_Sphere}, + primitives::{components::quad, concepts::Sphere}, rendering::components::{color, fog_density, light_diffuse, sky, sun}, - transform::{ - components::{rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{rotation, scale, translation}, }, prelude::*, }; @@ -21,7 +18,6 @@ use packages::{ #[main] pub fn main() { Entity::new() - .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.0) .with(color(), vec4(1.0, 0.0, 0.0, 1.0)) @@ -29,15 +25,19 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Sphere()) + .with_merge(Sphere { + sphere: (), + sphere_radius: 0.5, + sphere_sectors: 36, + sphere_stacks: 18, + }) .with(color(), vec4(0.5, 0.0, 1.0, 1.0)) .with(sphere_collider(), 0.5) .with(translation(), vec3(5.0, 5.0, 1.0)) .spawn(); // Spawn a sun - make_Transformable() + Entity::new() .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-1.0)) .with(light_diffuse(), Vec3::ONE) @@ -45,8 +45,8 @@ pub fn main() { .with(main_scene(), ()) .spawn(); - // And an atmosphere to go with id - make_Transformable().with(sky(), ()).spawn(); + // And an atmosphere to go with it + Entity::new().with(sky(), ()).spawn(); spawn_query(is_player()).bind(move |players| { for (id, _) in players { diff --git a/guest/rust/packages/std/fps_controller/src/client.rs b/guest/rust/packages/std/fps_controller/src/client.rs index 612fa2919a..8082cfe450 100644 --- a/guest/rust/packages/std/fps_controller/src/client.rs +++ b/guest/rust/packages/std/fps_controller/src/client.rs @@ -1,9 +1,9 @@ use crate::packages::this::components::player_camera_ref; use ambient_api::{ core::{ - app::components::{main_scene, name}, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, + app::components::name, + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, messages::Frame, player::components::is_player, @@ -68,13 +68,25 @@ pub fn main() { for (id, (_, head)) in players { if id == player::get_local() { let camera = Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with( - translation(), - -Vec3::Z * get_component(id, camera_distance()).unwrap_or(4.), - ) + .with_merge(PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some( + -Vec3::Z * get_component(id, camera_distance()).unwrap_or(4.), + ), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + }) .with(local_to_parent(), Default::default()) .with(name(), "Camera".to_string()) .spawn(); diff --git a/guest/rust/packages/std/fps_controller/src/server.rs b/guest/rust/packages/std/fps_controller/src/server.rs index 1886b054a1..3a7fce35ff 100644 --- a/guest/rust/packages/std/fps_controller/src/server.rs +++ b/guest/rust/packages/std/fps_controller/src/server.rs @@ -1,10 +1,10 @@ use ambient_api::{ core::{ app::components::name, - physics::concepts::make_CharacterController, + physics::concepts::CharacterController, transform::{ components::{local_to_parent, rotation, translation}, - concepts::make_Transformable, + concepts::{Transformable, TransformableOptional}, }, }, entity::{add_child, add_component, get_component, set_component}, @@ -28,8 +28,19 @@ pub fn main() { entity::add_components( id, Entity::new() - .with_merge(make_CharacterController()) - .with_merge(make_Transformable()) + .with_merge(CharacterController { + character_controller_height: 2., + character_controller_radius: 0.5, + physics_controlled: (), + }) + .with_merge(Transformable { + local_to_world: default(), + optional: TransformableOptional { + translation: Some(Vec3::ZERO), + rotation: Some(default()), + scale: Some(Vec3::ONE), + }, + }) .with(run_direction(), Vec2::ZERO) .with(vertical_velocity(), 0.) .with(running(), false) @@ -43,7 +54,10 @@ pub fn main() { for (id, _) in players { let head = Entity::new() .with(name(), "Head".to_string()) - .with_merge(make_Transformable()) + .with_merge(Transformable { + local_to_world: default(), + optional: default(), + }) .with(local_to_parent(), Default::default()) .with(translation(), Vec3::Z * 2.) .with( From 2b60a00b21ae849b800ab4287cefb499e8af0029 Mon Sep 17 00:00:00 2001 From: Philpax Date: Mon, 11 Sep 2023 17:24:37 +0200 Subject: [PATCH 25/35] wip(guest): convert more packages --- .../examples/assets/basic_model/src/server.rs | 10 +-- .../assets/generate_pipeline/src/server.rs | 11 +-- .../intermediate/clientside/ambient.toml | 3 + .../intermediate/clientside/src/client.rs | 42 ++++------ .../intermediate/clientside/src/server.rs | 6 +- .../intermediate/dependencies/ambient.toml | 5 +- .../dependencies/deps/code/src/server.rs | 7 +- .../intermediate/dependencies/src/server.rs | 26 ++---- .../intermediate/messaging/src/client.rs | 38 +++++---- .../intermediate/messaging/src/server.rs | 6 +- .../intermediate/screen_ray/ambient.toml | 3 + .../intermediate/screen_ray/src/client.rs | 29 +++---- .../intermediate/screen_ray/src/server.rs | 8 +- .../examples/rendering/decals/ambient.toml | 3 + .../examples/rendering/decals/src/server.rs | 24 ++---- .../rust/examples/rendering/fog/ambient.toml | 3 + .../rust/examples/rendering/fog/src/client.rs | 35 +++----- .../examples/rendering/image/src/server.rs | 38 ++++++--- .../rendering/instancing/src/server.rs | 44 ++++++---- .../procedural_generation/src/client.rs | 51 ++++++----- .../examples/rendering/raw_text/src/server.rs | 40 +++++---- .../examples/rendering/samplers/ambient.toml | 3 + .../examples/rendering/samplers/src/server.rs | 30 ++----- .../rust/examples/rendering/sun/ambient.toml | 3 + .../rust/examples/rendering/sun/src/server.rs | 49 +++++------ .../games/afps/core/fpsmodel/src/client.rs | 9 +- .../games/afps/core/fpsrule/src/server.rs | 6 +- .../games/afps/mods/scene/src/server.rs | 18 +--- .../games/afps/mods/spraypaint/src/server.rs | 7 +- .../games/afps/mods/zombie/src/server.rs | 84 +++++++++++-------- .../packages/games/arkanoid/src/client.rs | 25 +++++- .../packages/games/arkanoid/src/server.rs | 4 +- .../packages/std/orbit_camera/src/client.rs | 2 +- .../rust/packages/tools/editor/src/server.rs | 37 +++++--- schema/schema/camera.toml | 3 +- 35 files changed, 363 insertions(+), 349 deletions(-) diff --git a/guest/rust/examples/assets/basic_model/src/server.rs b/guest/rust/examples/assets/basic_model/src/server.rs index af3e43e148..520efeba54 100644 --- a/guest/rust/examples/assets/basic_model/src/server.rs +++ b/guest/rust/examples/assets/basic_model/src/server.rs @@ -3,10 +3,7 @@ use ambient_api::{ prelude::*, }; -use packages::{ - orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, - this::assets, -}; +use packages::{orbit_camera::concepts::OrbitCamera, this::assets}; #[main] pub async fn main() { @@ -14,10 +11,7 @@ pub async fn main() { OrbitCamera { is_orbit_camera: (), lookat_target: Vec3::ZERO, - optional: OrbitCameraOptional { - camera_distance: Some(4.0), - ..default() - }, + optional: default(), } .make() .spawn(); diff --git a/guest/rust/examples/assets/generate_pipeline/src/server.rs b/guest/rust/examples/assets/generate_pipeline/src/server.rs index 9fcc08fd44..e6bba61609 100644 --- a/guest/rust/examples/assets/generate_pipeline/src/server.rs +++ b/guest/rust/examples/assets/generate_pipeline/src/server.rs @@ -2,24 +2,19 @@ use ambient_api::{ core::{prefab::components::prefab_from_url, transform::components::local_to_world}, prelude::*, }; +use packages::{orbit_camera::concepts::OrbitCamera, this::assets}; -use packages::{ - orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, - this::assets, -}; #[main] pub async fn main() { // Camera OrbitCamera { is_orbit_camera: (), lookat_target: Vec3::ZERO, - optional: OrbitCameraOptional { - camera_distance: Some(4.0), - ..default() - }, + optional: default(), } .make() .spawn(); + // Model Entity::new() .with(local_to_world(), Mat4::IDENTITY) diff --git a/guest/rust/examples/intermediate/clientside/ambient.toml b/guest/rust/examples/intermediate/clientside/ambient.toml index b8ae2bc48e..b70c5d7147 100644 --- a/guest/rust/examples/intermediate/clientside/ambient.toml +++ b/guest/rust/examples/intermediate/clientside/ambient.toml @@ -16,3 +16,6 @@ grid_position = { name = "Grid Position", description = "The position of the cel "Networked", "Debuggable", ] } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/intermediate/clientside/src/client.rs b/guest/rust/examples/intermediate/clientside/src/client.rs index 2a0a93873c..b9de90c0c2 100644 --- a/guest/rust/examples/intermediate/clientside/src/client.rs +++ b/guest/rust/examples/intermediate/clientside/src/client.rs @@ -1,17 +1,15 @@ use ambient_api::{ core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, - messages::Frame, - primitives::components::cube, - rendering::components::color, - transform::components::{lookat_target, translation}, + messages::Frame, primitives::components::cube, rendering::components::color, + transform::components::translation, }, prelude::*, }; -use packages::this::components::{grid_position, grid_side_length}; + +use packages::{ + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + this::components::{grid_position, grid_side_length}, +}; #[main] pub async fn main() { @@ -20,25 +18,19 @@ pub async fn main() { .await .unwrap(); - let id = Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), Vec3::ONE * 5.) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: OrbitCameraOptional { + camera_distance: Some(20.0), + ..default() + }, + } + .make() + .spawn(); let start_time = game_time(); - Frame::subscribe(move |_| { - let t = game_time() - start_time; - entity::set_component( - id, - translation(), - Quat::from_rotation_z(t.as_secs_f32() * 0.2) * Vec3::ONE * 10., - ); - }); - query(grid_position()) .requires(cube()) .each_frame(move |entities| { diff --git a/guest/rust/examples/intermediate/clientside/src/server.rs b/guest/rust/examples/intermediate/clientside/src/server.rs index d551580ea4..d6119db7c2 100644 --- a/guest/rust/examples/intermediate/clientside/src/server.rs +++ b/guest/rust/examples/intermediate/clientside/src/server.rs @@ -1,8 +1,7 @@ use ambient_api::{ core::{ - primitives::components::cube, - rendering::components::color, - transform::{components::translation, concepts::make_Transformable}, + primitives::components::cube, rendering::components::color, + transform::components::translation, }, prelude::*, }; @@ -20,7 +19,6 @@ pub fn main() { for y in 0..2 * side_length + 1 { for x in 0..2 * side_length + 1 { Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with(grid_position(), IVec2::new(x, y)) .with(color(), Vec4::ONE) diff --git a/guest/rust/examples/intermediate/dependencies/ambient.toml b/guest/rust/examples/intermediate/dependencies/ambient.toml index 8be743178b..733c697ac5 100644 --- a/guest/rust/examples/intermediate/dependencies/ambient.toml +++ b/guest/rust/examples/intermediate/dependencies/ambient.toml @@ -6,5 +6,6 @@ version = "0.0.1" content = { type = "Playable", example = true } [dependencies] -deps_assets = { path = "deps/assets" , deployment = "7L9b3auvm7b5cLdQbMgjxb" } -deps_code = { path = "deps/code" , deployment = "1WgKMn1p4Ta53cwa9hyw05" } +deps_assets = { path = "deps/assets", deployment = "7L9b3auvm7b5cLdQbMgjxb" } +deps_code = { path = "deps/code", deployment = "1WgKMn1p4Ta53cwa9hyw05" } +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/intermediate/dependencies/deps/code/src/server.rs b/guest/rust/examples/intermediate/dependencies/deps/code/src/server.rs index ee80945536..ac94527300 100644 --- a/guest/rust/examples/intermediate/dependencies/deps/code/src/server.rs +++ b/guest/rust/examples/intermediate/dependencies/deps/code/src/server.rs @@ -1,10 +1,7 @@ use ambient_api::{ core::{ prefab::components::prefab_from_url, - transform::{ - components::{rotation, translation}, - concepts::make_Transformable, - }, + transform::components::{rotation, translation}, }, prelude::*, }; @@ -20,12 +17,12 @@ use packages::{ pub fn main() { Spawn::subscribe(|_, msg| { Entity::new() - .with_merge(make_Transformable()) .with(spawned_by_us(), ()) .with(prefab_from_url(), assets::url("Teapot.glb")) .with(spin_direction(), msg.spin_direction) .with(spin_speed(), msg.spin_speed) .with(translation(), (random::() - 0.5) * 5.0) + .with(rotation(), Quat::IDENTITY) .spawn(); }); diff --git a/guest/rust/examples/intermediate/dependencies/src/server.rs b/guest/rust/examples/intermediate/dependencies/src/server.rs index 6e68824a1c..0f1d12ab69 100644 --- a/guest/rust/examples/intermediate/dependencies/src/server.rs +++ b/guest/rust/examples/intermediate/dependencies/src/server.rs @@ -1,30 +1,22 @@ -use ambient_api::{ - core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, - transform::components::{lookat_target, translation}, - }, - prelude::*, -}; +use ambient_api::prelude::*; use packages::{ deps_assets::types::SpinDirection, deps_code::{ components::{spawned_by_us, spin_direction}, messages::Spawn, }, + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, }; #[main] pub async fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), Vec3::ONE * 5.) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: default(), + } + .make() + .spawn(); let mut last_update = game_time(); query(spawned_by_us()).each_frame(move |r| { diff --git a/guest/rust/examples/intermediate/messaging/src/client.rs b/guest/rust/examples/intermediate/messaging/src/client.rs index 77a6838a24..2e4ec1b9f7 100644 --- a/guest/rust/examples/intermediate/messaging/src/client.rs +++ b/guest/rust/examples/intermediate/messaging/src/client.rs @@ -5,16 +5,12 @@ use std::sync::{ use ambient_api::{ core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, primitives::components::cube, rendering::components::color, - transform::{ - components::{lookat_target, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{lookat_target, scale, translation}, }, prelude::*, }; @@ -33,13 +29,26 @@ pub fn main() { // other modules (e.g. `client_two.rs`) until it gets a response (4). // 0 - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), Vec3::ONE * 5.) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(Vec3::ONE * 5.), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(lookat_target(), vec3(0., 0., 0.)) + .spawn(); // 1 Hello::new("Hello, world from the client!", false).send_server_unreliable(); @@ -51,7 +60,6 @@ pub fn main() { let source_reliable = data.source_reliable; Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with( translation(), diff --git a/guest/rust/examples/intermediate/messaging/src/server.rs b/guest/rust/examples/intermediate/messaging/src/server.rs index d94ca0793c..32847d231e 100644 --- a/guest/rust/examples/intermediate/messaging/src/server.rs +++ b/guest/rust/examples/intermediate/messaging/src/server.rs @@ -7,10 +7,7 @@ use ambient_api::{ core::{ primitives::components::cube, rendering::components::color, - transform::{ - components::{scale, translation}, - concepts::make_Transformable, - }, + transform::components::{scale, translation}, }, prelude::*, }; @@ -58,7 +55,6 @@ pub fn main() { .send_client_broadcast_reliable(); Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with( translation(), diff --git a/guest/rust/examples/intermediate/screen_ray/ambient.toml b/guest/rust/examples/intermediate/screen_ray/ambient.toml index d0c9c7708f..044a503205 100644 --- a/guest/rust/examples/intermediate/screen_ray/ambient.toml +++ b/guest/rust/examples/intermediate/screen_ray/ambient.toml @@ -13,3 +13,6 @@ ray_dir = "Vec3" [messages.WorldPosition.fields] position = "Vec3" + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/intermediate/screen_ray/src/client.rs b/guest/rust/examples/intermediate/screen_ray/src/client.rs index b9c34c85ea..cf175b0f46 100644 --- a/guest/rust/examples/intermediate/screen_ray/src/client.rs +++ b/guest/rust/examples/intermediate/screen_ray/src/client.rs @@ -1,27 +1,22 @@ use ambient_api::{ - core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, - messages::Frame, - rendering::components::color, - transform::components::{lookat_target, translation}, - }, + core::{messages::Frame, rendering::components::color, transform::components::translation}, element::{use_module_message, use_state}, prelude::*, }; -use packages::this::messages::{Input, WorldPosition}; +use packages::{ + orbit_camera::concepts::OrbitCamera, + this::messages::{Input, WorldPosition}, +}; #[main] pub fn main() { - let camera = Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), Vec3::ONE * 5.) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + let camera = OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: default(), + } + .make() + .spawn(); Frame::subscribe(move |_| { let input = input::get(); diff --git a/guest/rust/examples/intermediate/screen_ray/src/server.rs b/guest/rust/examples/intermediate/screen_ray/src/server.rs index 313ae4d75c..91d3824e13 100644 --- a/guest/rust/examples/intermediate/screen_ray/src/server.rs +++ b/guest/rust/examples/intermediate/screen_ray/src/server.rs @@ -2,7 +2,7 @@ use ambient_api::{ core::{ physics::components::plane_collider, primitives::components::{cube, quad}, - transform::{components::translation, concepts::make_Transformable}, + transform::components::{local_to_world, translation}, }, prelude::*, }; @@ -11,13 +11,13 @@ use packages::this::messages::{Input, WorldPosition}; #[main] pub fn main() { Entity::new() - .with_merge(make_Transformable()) - .with(quad(), ()) + .with(local_to_world(), Mat4::IDENTITY) .with(plane_collider(), ()) + .with(quad(), ()) .spawn(); let cube_id = Entity::new() - .with_merge(make_Transformable()) + .with(translation(), Vec3::ZERO) .with(cube(), ()) .spawn(); diff --git a/guest/rust/examples/rendering/decals/ambient.toml b/guest/rust/examples/rendering/decals/ambient.toml index c30e2c2c30..2a46b1976b 100644 --- a/guest/rust/examples/rendering/decals/ambient.toml +++ b/guest/rust/examples/rendering/decals/ambient.toml @@ -6,3 +6,6 @@ version = "0.0.1" repository = "https://github.com/AmbientRun/Ambient/tree/main/guest/rust/examples/basics/decals" type = "Game" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/rendering/decals/src/server.rs b/guest/rust/examples/rendering/decals/src/server.rs index b0a97adecb..3f655ac602 100644 --- a/guest/rust/examples/rendering/decals/src/server.rs +++ b/guest/rust/examples/rendering/decals/src/server.rs @@ -1,31 +1,25 @@ use ambient_api::{ core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, primitives::components::{cube, quad}, rendering::components::{color, decal_from_url, transparency_group}, - transform::components::{lookat_target, rotation, scale, translation}, + transform::components::{rotation, scale, translation}, }, prelude::*, }; +use packages::orbit_camera::concepts::OrbitCamera; use core::f32::consts::PI; -// from discussion at -// https://discord.com/channels/894505972289134632/1078283561540530216/1096581219925377195 - #[main] pub fn main() { // Camera. - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(translation(), vec3(1.0, 1.0, 2.0)) - .with(lookat_target(), vec3(0.0, 0.0, 0.0)) - .with(main_scene(), ()) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: default(), + } + .make() + .spawn(); // Scene geometry. Entity::new() diff --git a/guest/rust/examples/rendering/fog/ambient.toml b/guest/rust/examples/rendering/fog/ambient.toml index e5fd4c0547..eaa7548d5d 100644 --- a/guest/rust/examples/rendering/fog/ambient.toml +++ b/guest/rust/examples/rendering/fog/ambient.toml @@ -6,3 +6,6 @@ version = "0.0.1" repository = "https://github.com/AmbientRun/Ambient/tree/main/guest/rust/examples/basics/fog" type = "Game" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/rendering/fog/src/client.rs b/guest/rust/examples/rendering/fog/src/client.rs index 710508f2fb..abece6d79c 100644 --- a/guest/rust/examples/rendering/fog/src/client.rs +++ b/guest/rust/examples/rendering/fog/src/client.rs @@ -1,36 +1,30 @@ use ambient_api::{ core::{ app::components::main_scene, - camera::{ - components::{aspect_ratio_from_window, fog}, - concepts::make_PerspectiveInfiniteReverseCamera, - }, + camera::components::fog, primitives::components::{cube, quad}, rendering::components::{ cast_shadows, color, fog_color, fog_density, fog_height_falloff, light_diffuse, sky, sun, }, - transform::{ - components::{lookat_target, rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{rotation, scale, translation}, }, prelude::*, }; +use packages::orbit_camera::concepts::OrbitCamera; #[main] fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(fog(), ()) - .with(translation(), vec3(0., -5., 3.)) - .with(lookat_target(), vec3(0., 0., 2.)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: vec3(0., 0., 2.), + optional: default(), + } + .make() + .with(fog(), ()) + .spawn(); let sun = Entity::new() - .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-1.)) .with(main_scene(), ()) @@ -40,13 +34,9 @@ fn main() { .with(fog_height_falloff(), 0.01) .spawn(); - Entity::new() - .with_merge(make_Transformable()) - .with(sky(), ()) - .spawn(); + Entity::new().with(sky(), ()).spawn(); Entity::new() - .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 1000.) .with(color(), vec4(1., 0., 0., 1.)) @@ -54,7 +44,6 @@ fn main() { for i in 0..10 { Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), vec3(0., 1. * (2f32).powi(i), 1.)) .with(scale(), Vec3::ONE * 2.) diff --git a/guest/rust/examples/rendering/image/src/server.rs b/guest/rust/examples/rendering/image/src/server.rs index 2a58c7dcc5..a9a30befc1 100644 --- a/guest/rust/examples/rendering/image/src/server.rs +++ b/guest/rust/examples/rendering/image/src/server.rs @@ -2,30 +2,42 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, + components::aspect_ratio_from_window, + concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, + }, }, primitives::components::quad, rendering::components::pbr_material_from_url, - transform::{ - components::{lookat_target, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{lookat_target, scale, translation}, }, prelude::*, }; #[main] pub fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(translation(), vec3(5., 5., 6.)) - .with(lookat_target(), vec3(0., 0., 2.)) - .with(main_scene(), ()) - .spawn(); + PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(vec3(5., 5., 6.)), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(lookat_target(), vec3(0., 0., 2.)) + .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with( diff --git a/guest/rust/examples/rendering/instancing/src/server.rs b/guest/rust/examples/rendering/instancing/src/server.rs index a95929546f..990fc17b30 100644 --- a/guest/rust/examples/rendering/instancing/src/server.rs +++ b/guest/rust/examples/rendering/instancing/src/server.rs @@ -3,17 +3,13 @@ use std::f64::consts::TAU; use ambient_api::{ core::{ app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, prefab::components::prefab_from_url, rendering::components::{cast_shadows, light_ambient, light_diffuse, sun}, - transform::{ - components::{lookat_target, rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{lookat_target, rotation, scale, translation}, }, - entity::set_component, glam::EulerRot, prelude::*, }; @@ -22,13 +18,26 @@ use packages::this::{assets, components::instance_index}; #[main] pub async fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), Vec3::ONE * 5.) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(Vec3::ONE * 5.), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(lookat_target(), vec3(0., 0., 0.)) + .spawn(); const INSTANCES: UVec3 = uvec3(15, 15, 15); @@ -48,9 +57,9 @@ pub async fn main() { }; Entity::new() - .with_merge(make_Transformable()) - .with(translation(), (vec3(x, y, z) - 0.5) * 7.0) .with(instance_index(), uvec3(i, j, k)) + .with(translation(), (vec3(x, y, z) - 0.5) * 7.0) + .with(rotation(), default()) .with(scale(), Vec3::ONE * 0.2) .with(cast_shadows(), ()) .with(prefab_from_url(), model) @@ -60,7 +69,6 @@ pub async fn main() { } Entity::new() - .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-1.)) .with(main_scene(), ()) @@ -71,7 +79,7 @@ pub async fn main() { query(instance_index()).each_frame(|items| { let t = game_time().as_secs_f64(); for (id, index) in items { - set_component( + entity::set_component( id, rotation(), Quat::from_euler( diff --git a/guest/rust/examples/rendering/procedural_generation/src/client.rs b/guest/rust/examples/rendering/procedural_generation/src/client.rs index 68716b4015..c0f673962b 100644 --- a/guest/rust/examples/rendering/procedural_generation/src/client.rs +++ b/guest/rust/examples/rendering/procedural_generation/src/client.rs @@ -2,19 +2,16 @@ use ambient_api::{ client::{material, mesh, sampler, texture}, core::{ app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, primitives::{ components::{cube, quad, sphere_radius}, - concepts::make_Sphere, + concepts::Sphere, }, procedurals::components::{procedural_material, procedural_mesh}, rendering::components::{cast_shadows, color, light_diffuse, sun}, - transform::{ - components::{lookat_target, rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{lookat_target, rotation, scale, translation}, }, prelude::*, }; @@ -33,13 +30,26 @@ const WAVE_AMPLITUDE: f32 = 0.25; const WAVE_FREQUENCY: f32 = 0.5 * TAU; fn make_camera() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(0.0, 3.0, 4.0) * 2.0) - .with(lookat_target(), vec3(0.0, 3.0, 0.0)) - .spawn(); + PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(vec3(0.0, 3.0, 4.0) * 2.0), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(lookat_target(), vec3(0.0, 3.0, 0.0)) + .spawn(); } #[element_component] @@ -58,7 +68,6 @@ fn App(_hooks: &mut Hooks, sun_id: EntityId) -> Element { fn make_lighting() { let sun_id = Entity::new() - .with_merge(make_Transformable()) .with(sun(), 0.0) .with( rotation(), @@ -88,7 +97,6 @@ fn make_lighting() { fn make_simple_cube(t: Vec3, s: Vec3, c: Vec4) { Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), t) .with(scale(), s) @@ -99,10 +107,13 @@ fn make_simple_cube(t: Vec3, s: Vec3, c: Vec4) { fn make_simple_sphere(t: Vec3, r: f32, c: Vec4) { Entity::new() - .with_merge(make_Transformable()) - .with_merge(make_Sphere()) + .with_merge(Sphere { + sphere: (), + sphere_radius: r, + sphere_sectors: 36, + sphere_stacks: 18, + }) .with(translation(), t) - .with(sphere_radius(), r) .with(color(), c) .with(main_scene(), ()) .spawn(); @@ -121,7 +132,6 @@ fn make_coordinate_system() { fn make_ground() { Entity::new() - .with_merge(make_Transformable()) .with(quad(), ()) .with(color(), vec4(0.25, 1.0, 0.25, 1.0)) .with(translation(), vec3(0.0, 0.0, -0.5)) @@ -256,7 +266,6 @@ fn make_procedural( transparent, }); Entity::new() - .with_merge(make_Transformable()) .with(procedural_mesh(), mesh) .with(procedural_material(), material) .with(translation(), world_translation) diff --git a/guest/rust/examples/rendering/raw_text/src/server.rs b/guest/rust/examples/rendering/raw_text/src/server.rs index e72915714a..30eec30b5c 100644 --- a/guest/rust/examples/rendering/raw_text/src/server.rs +++ b/guest/rust/examples/rendering/raw_text/src/server.rs @@ -2,15 +2,15 @@ use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, + components::aspect_ratio_from_window, + concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, + }, }, rendering::components::color, text::components::text, - transform::{ - components::{ - local_to_world, lookat_target, mesh_to_local, mesh_to_world, scale, translation, - }, - concepts::make_Transformable, + transform::components::{ + local_to_world, lookat_target, mesh_to_local, mesh_to_world, scale, translation, }, }, prelude::*, @@ -18,16 +18,28 @@ use ambient_api::{ #[main] pub fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(5., 5., 4.)) - .with(lookat_target(), vec3(0., 0., 0.)) - .spawn(); + PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(vec3(5., 5., 4.)), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(lookat_target(), vec3(0., 0., 0.)) + .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(text(), "Hello world".to_string()) .with(color(), vec4(1., 1., 1., 1.)) .with(translation(), vec3(0., 0., 0.01)) diff --git a/guest/rust/examples/rendering/samplers/ambient.toml b/guest/rust/examples/rendering/samplers/ambient.toml index c46c04ff30..16161fbb5e 100644 --- a/guest/rust/examples/rendering/samplers/ambient.toml +++ b/guest/rust/examples/rendering/samplers/ambient.toml @@ -6,3 +6,6 @@ version = "0.0.1" repository = "https://github.com/AmbientRun/Ambient/tree/main/guest/rust/examples/basics/samplers" type = "Game" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/rendering/samplers/src/server.rs b/guest/rust/examples/rendering/samplers/src/server.rs index 69a3d40a24..763285312e 100644 --- a/guest/rust/examples/rendering/samplers/src/server.rs +++ b/guest/rust/examples/rendering/samplers/src/server.rs @@ -1,37 +1,25 @@ use ambient_api::{ - core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, - prefab::components::prefab_from_url, - transform::{ - components::{lookat_target, translation}, - concepts::make_Transformable, - }, - }, + core::{prefab::components::prefab_from_url, transform::components::translation}, prelude::*, }; -use packages::this::assets; +use packages::{orbit_camera::concepts::OrbitCamera, this::assets}; #[main] pub fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(2.0, 2.0, 4.0)) - .with(lookat_target(), vec3(0.0, 0.0, 0.0)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: default(), + } + .make() + .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(translation(), vec3(-1.25, 0.0, 0.0)) .with(prefab_from_url(), assets::url("quad-linear.glb")) .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(translation(), vec3(1.25, 0.0, 0.0)) .with(prefab_from_url(), assets::url("quad-nearest.glb")) .spawn(); diff --git a/guest/rust/examples/rendering/sun/ambient.toml b/guest/rust/examples/rendering/sun/ambient.toml index 6a4af864fd..731d7745f6 100644 --- a/guest/rust/examples/rendering/sun/ambient.toml +++ b/guest/rust/examples/rendering/sun/ambient.toml @@ -6,3 +6,6 @@ version = "0.0.1" repository = "https://github.com/AmbientRun/Ambient/tree/main/guest/rust/examples/basics/sun" type = "Game" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/rendering/sun/src/server.rs b/guest/rust/examples/rendering/sun/src/server.rs index 8adcb4434f..38d38c235c 100644 --- a/guest/rust/examples/rendering/sun/src/server.rs +++ b/guest/rust/examples/rendering/sun/src/server.rs @@ -1,35 +1,31 @@ +use std::f32::consts::FRAC_PI_2; + use ambient_api::{ core::{ app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, messages::Frame, - primitives::{ - components::{quad, sphere_radius}, - concepts::make_Sphere, - }, + primitives::{components::quad, concepts::Sphere}, rendering::components::{cast_shadows, color, fog_density, light_diffuse, sky, sun, water}, - transform::{ - components::{lookat_target, rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{rotation, scale, translation}, }, prelude::*, }; +use packages::orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}; #[main] pub fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(5., 5., 2.)) - .with(lookat_target(), vec3(0., 0., 1.)) - .spawn(); + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::Z, + optional: OrbitCameraOptional { + camera_angle: Some(vec2(FRAC_PI_2, 20f32.to_radians())), + camera_distance: None, + }, + } + .make() + .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 20.) .with(color(), vec4(1., 0., 0., 1.)) @@ -37,26 +33,25 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(water(), ()) .with(scale(), Vec3::ONE * 2000.) .spawn(); - Entity::new() - .with_merge(make_Transformable()) - .with(sky(), ()) - .spawn(); + Entity::new().with(sky(), ()).spawn(); Entity::new() - .with_merge(make_Sphere()) + .with_merge(Sphere { + sphere: (), + sphere_radius: 1., + sphere_sectors: 36, + sphere_stacks: 18, + }) .with(cast_shadows(), ()) - .with(sphere_radius(), 1.) .with(translation(), vec3(0., 0., 1.)) .with(color(), vec4(1., 1., 1., 1.)) .spawn(); let sun = Entity::new() - .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Quat::IDENTITY) .with(main_scene(), ()) diff --git a/guest/rust/packages/games/afps/core/fpsmodel/src/client.rs b/guest/rust/packages/games/afps/core/fpsmodel/src/client.rs index 1c425d532f..55b8a56dbf 100644 --- a/guest/rust/packages/games/afps/core/fpsmodel/src/client.rs +++ b/guest/rust/packages/games/afps/core/fpsmodel/src/client.rs @@ -4,12 +4,8 @@ use ambient_api::{ model::components::model_loaded, player::components::is_player, prefab::components::prefab_from_url, - // primitives::quad, - rendering::components::color, //pbr_material_from_url - transform::{ - components::{local_to_parent, reset_scale, rotation, scale, translation}, - concepts::make_Transformable, - }, + rendering::components::color, + transform::components::{local_to_parent, reset_scale, rotation, scale, translation}, }, prelude::*, }; @@ -35,7 +31,6 @@ pub fn main() { } let hand = hand.unwrap(); let gun = Entity::new() - .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("red.glb")) .with(translation(), vec3(-0.06, 0.2, 0.0)) .with( diff --git a/guest/rust/packages/games/afps/core/fpsrule/src/server.rs b/guest/rust/packages/games/afps/core/fpsrule/src/server.rs index 516da77faa..8a1833c021 100644 --- a/guest/rust/packages/games/afps/core/fpsrule/src/server.rs +++ b/guest/rust/packages/games/afps/core/fpsrule/src/server.rs @@ -10,10 +10,7 @@ use ambient_api::{ player::components::is_player, primitives::components::cube, rendering::components::{cast_shadows, color}, - transform::{ - components::{rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{rotation, scale, translation}, }, prelude::*, }; @@ -103,7 +100,6 @@ pub fn main() { let rot = Quat::from_rotation_y(random::() * PI) * Quat::from_rotation_x(random::() * PI); Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with(rotation(), rot) .with(physics_controlled(), ()) diff --git a/guest/rust/packages/games/afps/mods/scene/src/server.rs b/guest/rust/packages/games/afps/mods/scene/src/server.rs index 79764d34f2..5b67c0f6eb 100644 --- a/guest/rust/packages/games/afps/mods/scene/src/server.rs +++ b/guest/rust/packages/games/afps/mods/scene/src/server.rs @@ -3,15 +3,9 @@ use ambient_api::{ app::components::main_scene, physics::components::{cube_collider, dynamic, physics_controlled, plane_collider}, // prefab::components::prefab_from_url, - primitives::{ - components::{cube, quad}, - concepts::make_Sphere, - }, + primitives::components::{cube, quad}, rendering::components::{cast_shadows, color, fog_density, light_diffuse, sky, sun}, - transform::{ - components::{rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{rotation, scale, translation}, }, prelude::*, }; @@ -25,10 +19,7 @@ pub async fn main() { .with(plane_collider(), ()) .with(scale(), Vec3::ONE * 1000.) .spawn(); - Entity::new() - .with_merge(make_Transformable()) - .with(sky(), ()) - .spawn(); + Entity::new().with(sky(), ()).spawn(); // Entity::new() // .with(translation(), vec3(10., 10., 0.)) // .with(cube(), ()) @@ -37,7 +28,6 @@ pub async fn main() { // .with(dynamic(), true) // .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(sun(), Default::default()) .with(rotation(), Quat::from_rotation_y(-0.6)) .with(main_scene(), ()) @@ -48,7 +38,6 @@ pub async fn main() { for _ in 0..40 { let pos = random::() * 100. - 50.; Entity::new() - .with_merge(make_Sphere()) .with(cast_shadows(), ()) .with(cube(), ()) .with(translation(), vec3(pos.x, pos.y, 0.0)) @@ -70,7 +59,6 @@ pub async fn main() { for _ in 0..60 { let pos = random::() * 100. - 50.; Entity::new() - .with_merge(make_Sphere()) .with(cast_shadows(), ()) .with(cube(), ()) .with(translation(), vec3(pos.x, pos.y, 0.0)) diff --git a/guest/rust/packages/games/afps/mods/spraypaint/src/server.rs b/guest/rust/packages/games/afps/mods/spraypaint/src/server.rs index 86f902f8f7..0d25eeef14 100644 --- a/guest/rust/packages/games/afps/mods/spraypaint/src/server.rs +++ b/guest/rust/packages/games/afps/mods/spraypaint/src/server.rs @@ -10,10 +10,7 @@ use ambient_api::{ prefab::components::prefab_from_url, primitives::components::{cube, quad}, rendering::components::decal_from_url, - transform::{ - components::{scale, translation}, - concepts::make_Transformable, - }, + transform::components::{scale, translation}, }, prelude::*, }; @@ -47,13 +44,11 @@ pub fn main() { let decal_url = assets::url("pipeline.toml/0/mat.json"); Entity::new() - .with_merge(make_Transformable()) .with(translation(), hit.position) .with(decal_from_url(), decal_url) .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(prefab_from_url(), assets::url("claymore.glb")) .with(claymore(), msg.source) .with(translation(), hit.position + vec3(0., 0., 0.15)) diff --git a/guest/rust/packages/games/afps/mods/zombie/src/server.rs b/guest/rust/packages/games/afps/mods/zombie/src/server.rs index c415d19736..1b914b68bc 100644 --- a/guest/rust/packages/games/afps/mods/zombie/src/server.rs +++ b/guest/rust/packages/games/afps/mods/zombie/src/server.rs @@ -4,12 +4,12 @@ use ambient_api::{ core::{ app::components::name, ecs::components::{children, parent}, - physics::concepts::make_CharacterController, + physics::concepts::CharacterController, player::components::is_player, prefab::components::prefab_from_url, transform::{ components::{local_to_parent, local_to_world, rotation, translation}, - concepts::make_Transformable, + concepts::{Transformable, TransformableOptional}, }, }, prelude::*, @@ -40,7 +40,7 @@ pub async fn main() { for character_url in chars { let zombie = Entity::new().spawn(); - let model = make_Transformable() + let model = Entity::new() .with(prefab_from_url(), character_url) .with(parent(), zombie) .with(local_to_parent(), Default::default()) @@ -49,39 +49,51 @@ pub async fn main() { entity::add_components( zombie, - make_Transformable() - .with_merge(make_CharacterController()) - .with( - translation(), - vec3(-8.0 * random::(), -8.0 * random::(), 1.3), - ) - .with(name(), "Zombie".to_string()) - .with(children(), vec![model]) - .with(local_to_world(), Default::default()) - .with(components::zombie_model_ref(), model) - .with(health(), 100.) - .with(run_direction(), -Vec2::Y) - .with(vertical_velocity(), 0.) - .with(speed(), 0.03) - .with(running(), false) - .with(components::is_zombie(), ()) - .with(basic_character_animations(), model) - .with( - character_animation::components::idle(), - anim_url("Zombie Idle"), - ) - .with( - character_animation::components::walk_forward(), - anim_url("Zombie Walk"), - ) - .with( - character_animation::components::run_forward(), - anim_url("Zombie Run"), - ) - .with( - character_animation::components::death(), - anim_url("Zombie Death"), - ), + Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(vec3( + -8.0 * random::(), + -8.0 * random::(), + 1.3, + )), + rotation: Some(default()), + scale: Some(Vec3::ONE), + }, + } + .make() + .with_merge(CharacterController { + character_controller_height: 2.0, + character_controller_radius: 0.5, + physics_controlled: (), + }) + .with(name(), "Zombie".to_string()) + .with(children(), vec![model]) + .with(local_to_world(), Default::default()) + .with(components::zombie_model_ref(), model) + .with(health(), 100.) + .with(run_direction(), -Vec2::Y) + .with(vertical_velocity(), 0.) + .with(speed(), 0.03) + .with(running(), false) + .with(components::is_zombie(), ()) + .with(basic_character_animations(), model) + .with( + character_animation::components::idle(), + anim_url("Zombie Idle"), + ) + .with( + character_animation::components::walk_forward(), + anim_url("Zombie Walk"), + ) + .with( + character_animation::components::run_forward(), + anim_url("Zombie Run"), + ) + .with( + character_animation::components::death(), + anim_url("Zombie Death"), + ), ); sleep(random::()).await; diff --git a/guest/rust/packages/games/arkanoid/src/client.rs b/guest/rust/packages/games/arkanoid/src/client.rs index 097be8e5ec..8328065be3 100644 --- a/guest/rust/packages/games/arkanoid/src/client.rs +++ b/guest/rust/packages/games/arkanoid/src/client.rs @@ -1,11 +1,11 @@ use ambient_api::{ core::{ - app::components::{main_scene, window_logical_size}, + app::components::window_logical_size, camera::{ components::{ orthographic_bottom, orthographic_left, orthographic_right, orthographic_top, }, - concepts::make_OrthographicCamera, + concepts::{OrthographicCamera, OrthographicCameraOptional}, }, messages::Frame, }, @@ -35,7 +35,26 @@ async fn main() { bgm_player.play(url_from_server.clone()); }); - let camera_id = make_OrthographicCamera().with(main_scene(), ()).spawn(); + let camera_id = OrthographicCamera { + local_to_world: Mat4::IDENTITY, + near: -1., + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + orthographic: (), + orthographic_left: -1., + orthographic_right: 1., + orthographic_top: 1., + orthographic_bottom: -1., + far: 1., + optional: OrthographicCameraOptional { + main_scene: Some(()), + ..default() + }, + } + .make() + .spawn(); Frame::subscribe(move |_| { let input = input::get(); diff --git a/guest/rust/packages/games/arkanoid/src/server.rs b/guest/rust/packages/games/arkanoid/src/server.rs index 12ede2df91..95372e6a05 100644 --- a/guest/rust/packages/games/arkanoid/src/server.rs +++ b/guest/rust/packages/games/arkanoid/src/server.rs @@ -6,9 +6,9 @@ use ambient_api::{ messages::Frame, physics::components::linear_velocity, player::components::{is_player, user_id}, - primitives::{components::cube, concepts::make_Sphere}, + primitives::components::cube, rendering::components::color, - transform::{components::*, concepts::make_Transformable}, + transform::components::*, }, prelude::*, }; diff --git a/guest/rust/packages/std/orbit_camera/src/client.rs b/guest/rust/packages/std/orbit_camera/src/client.rs index b77b8b5e8c..8a1f0420c3 100644 --- a/guest/rust/packages/std/orbit_camera/src/client.rs +++ b/guest/rust/packages/std/orbit_camera/src/client.rs @@ -38,7 +38,7 @@ pub fn main() { camera_angle(), vec2(0.0, 45f32.to_radians()), ); - entity::add_component_if_required(camera_id, camera_distance(), 1.0); + entity::add_component_if_required(camera_id, camera_distance(), 5.0); } }); diff --git a/guest/rust/packages/tools/editor/src/server.rs b/guest/rust/packages/tools/editor/src/server.rs index f5a4903839..d0d1d4d1f4 100644 --- a/guest/rust/packages/tools/editor/src/server.rs +++ b/guest/rust/packages/tools/editor/src/server.rs @@ -5,7 +5,9 @@ use ambient_api::{ app::components::{main_scene, name}, camera::{ components::{active_camera, aspect_ratio_from_window}, - concepts::make_PerspectiveInfiniteReverseCamera, + concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, + }, }, physics::components::dynamic, player::components::user_id, @@ -57,16 +59,29 @@ pub fn main() { }) .unwrap_or_else(|| vec2(0.0, PI / 2.)); - let camera_id = Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(user_id(), player_user_id) - .with(translation(), new_camera_position) - .with(camera_angle(), new_camera_angle) - .with(name(), "Editor Camera".to_string()) - .with(active_camera(), 10.0) - .spawn(); + let camera_id = PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 10.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(new_camera_position), + rotation: Some(default()), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(user_id(), player_user_id) + .with(camera_angle(), new_camera_angle) + .with(name(), "Editor Camera".to_string()) + .spawn(); entity::add_component(id, editor_camera(), camera_id); } else { diff --git a/schema/schema/camera.toml b/schema/schema/camera.toml index 419baa2602..cfae5bb4e7 100644 --- a/schema/schema/camera.toml +++ b/schema/schema/camera.toml @@ -143,7 +143,6 @@ active_camera = { suggested = 0.0 } [concepts.Camera.components.optional] "app::main_scene" = { description = "Either the main or UI scene must be specified for this camera to be used." } "app::ui_scene" = { description = "Either the main or UI scene must be specified for this camera to be used." } -aspect_ratio_from_window = {} [concepts.PerspectiveCommonCamera] name = "Perspective Common Camera" @@ -153,6 +152,8 @@ extends = ["Camera"] [concepts.PerspectiveCommonCamera.components.required] fovy = { suggested = 1.0 } aspect_ratio = { suggested = 1.0 } +[concepts.PerspectiveCommonCamera.components.optional] +aspect_ratio_from_window = {} [concepts.PerspectiveCamera] name = "Perspective Camera" From a080bb061f73ab41c0e16352b095561ab9f5c074 Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 14:12:20 +0200 Subject: [PATCH 26/35] feat(schema): clarify double_sided --- crates/ecs/src/generated.rs | 2 +- guest/rust/api_core/src/internal/generated.rs | 211 +++++++++++++++--- schema/schema/rendering.toml | 2 +- 3 files changed, 188 insertions(+), 27 deletions(-) diff --git a/crates/ecs/src/generated.rs b/crates/ecs/src/generated.rs index cfe62b5abf..dde3d96731 100644 --- a/crates/ecs/src/generated.rs +++ b/crates/ecs/src/generated.rs @@ -660,7 +660,7 @@ mod raw { }; use glam::{Mat4, Quat, UVec2, UVec3, UVec4, Vec2, Vec3, Vec4}; use std::time::Duration; - components ! ("rendering" , { # [doc = "**Cast shadows**: If attached, this entity will cast shadows.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cast shadows"] , Description ["If attached, this entity will cast shadows."]] cast_shadows : () , # [doc = "**Color**: This entity will be tinted with the specified color if the color is not black.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Color"] , Description ["This entity will be tinted with the specified color if the color is not black."]] color : Vec4 , # [doc = "**Double-sided**: If this is set, the entity will be rendered with double-sided rendering.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Double-sided"] , Description ["If this is set, the entity will be rendered with double-sided rendering."]] double_sided : bool , # [doc = "**Fog color**: The color of the fog for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog color"] , Description ["The color of the fog for this `sun`."]] fog_color : Vec3 , # [doc = "**Fog density**: The density of the fog for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog density"] , Description ["The density of the fog for this `sun`."]] fog_density : f32 , # [doc = "**Fog height fall-off**: The height at which the fog will fall off (i.e. stop being visible) for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog height fall-off"] , Description ["The height at which the fog will fall off (i.e. stop being visible) for this `sun`."]] fog_height_falloff : f32 , # [doc = "**Joint Matrices**: Contains the matrices for each joint of this skinned mesh.\n\nThis should be used in combination with `joints`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Joint Matrices"] , Description ["Contains the matrices for each joint of this skinned mesh.\nThis should be used in combination with `joints`."]] joint_matrices : Vec :: < Mat4 > , # [doc = "**Joints**: Contains the joints that comprise this skinned mesh.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Joints"] , Description ["Contains the joints that comprise this skinned mesh."]] joints : Vec :: < EntityId > , # [doc = "**Light ambient**: The ambient light color of the `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Light ambient"] , Description ["The ambient light color of the `sun`."]] light_ambient : Vec3 , # [doc = "**Light diffuse**: The diffuse light color of the `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Light diffuse"] , Description ["The diffuse light color of the `sun`."]] light_diffuse : Vec3 , # [doc = "**Outline**: If attached, this entity will be rendered with an outline with the color specified.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Outline"] , Description ["If attached, this entity will be rendered with an outline with the color specified."]] outline : Vec4 , # [doc = "**Outline (recursive)**: If attached, this entity and all of its children will be rendered with an outline with the color specified.\n\nYou do not need to attach `outline` if you have attached `outline_recursive`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Outline (recursive)"] , Description ["If attached, this entity and all of its children will be rendered with an outline with the color specified.\nYou do not need to attach `outline` if you have attached `outline_recursive`."]] outline_recursive : Vec4 , # [doc = "**Overlay**: If attached, this entity will be rendered with an overlay.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Overlay"] , Description ["If attached, this entity will be rendered with an overlay."]] overlay : () , # [doc = "**PBR material from URL**: Load a PBR material from the URL and attach it to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["PBR material from URL"] , Description ["Load a PBR material from the URL and attach it to this entity."]] pbr_material_from_url : String , # [doc = "**Sky**: Add a realistic skybox to the scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sky"] , Description ["Add a realistic skybox to the scene."]] sky : () , # [doc = "**Sun**: Marks this entity as a sun (i.e. its rotation will be used to control the global light direction).\n\nThe entity with the highest `sun` value takes precedence.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sun"] , Description ["Marks this entity as a sun (i.e. its rotation will be used to control the global light direction).\nThe entity with the highest `sun` value takes precedence."]] sun : f32 , # [doc = "**Transparency group**: Controls when this transparent object will be rendered. Transparent objects are sorted by `(transparency_group, z-depth)`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Transparency group"] , Description ["Controls when this transparent object will be rendered. Transparent objects are sorted by `(transparency_group, z-depth)`."]] transparency_group : i32 , # [doc = "**Water**: Add a realistic water plane to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Water"] , Description ["Add a realistic water plane to this entity."]] water : () , # [doc = "**Decal material from URL**: Load a Decal material from the URL and attach it to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Decal material from URL"] , Description ["Load a Decal material from the URL and attach it to this entity."]] decal_from_url : String , # [doc = "**Scissors**: Apply a scissors test to this entity (anything outside the rect will be hidden).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scissors"] , Description ["Apply a scissors test to this entity (anything outside the rect will be hidden)."]] scissors : UVec4 , # [doc = "**Scissors (recursive)**: If attached, this entity and all of its children will be rendered with an scissor with the rect specified.\n\nYou do not need to attach `scissors` if you have attached `scissors_recursive`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scissors (recursive)"] , Description ["If attached, this entity and all of its children will be rendered with an scissor with the rect specified.\nYou do not need to attach `scissors` if you have attached `scissors_recursive`."]] scissors_recursive : UVec4 , }); + components ! ("rendering" , { # [doc = "**Cast shadows**: If attached, this entity will cast shadows.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cast shadows"] , Description ["If attached, this entity will cast shadows."]] cast_shadows : () , # [doc = "**Color**: This entity will be tinted with the specified color if the color is not black.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Color"] , Description ["This entity will be tinted with the specified color if the color is not black."]] color : Vec4 , # [doc = "**Double-sided**: If attached, this controls whether or not the entity will be rendered with double-sided rendering. If not attached, the decision will fall back to the material.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Double-sided"] , Description ["If attached, this controls whether or not the entity will be rendered with double-sided rendering. If not attached, the decision will fall back to the material."]] double_sided : bool , # [doc = "**Fog color**: The color of the fog for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog color"] , Description ["The color of the fog for this `sun`."]] fog_color : Vec3 , # [doc = "**Fog density**: The density of the fog for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog density"] , Description ["The density of the fog for this `sun`."]] fog_density : f32 , # [doc = "**Fog height fall-off**: The height at which the fog will fall off (i.e. stop being visible) for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog height fall-off"] , Description ["The height at which the fog will fall off (i.e. stop being visible) for this `sun`."]] fog_height_falloff : f32 , # [doc = "**Joint Matrices**: Contains the matrices for each joint of this skinned mesh.\n\nThis should be used in combination with `joints`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Joint Matrices"] , Description ["Contains the matrices for each joint of this skinned mesh.\nThis should be used in combination with `joints`."]] joint_matrices : Vec :: < Mat4 > , # [doc = "**Joints**: Contains the joints that comprise this skinned mesh.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Joints"] , Description ["Contains the joints that comprise this skinned mesh."]] joints : Vec :: < EntityId > , # [doc = "**Light ambient**: The ambient light color of the `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Light ambient"] , Description ["The ambient light color of the `sun`."]] light_ambient : Vec3 , # [doc = "**Light diffuse**: The diffuse light color of the `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Light diffuse"] , Description ["The diffuse light color of the `sun`."]] light_diffuse : Vec3 , # [doc = "**Outline**: If attached, this entity will be rendered with an outline with the color specified.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Outline"] , Description ["If attached, this entity will be rendered with an outline with the color specified."]] outline : Vec4 , # [doc = "**Outline (recursive)**: If attached, this entity and all of its children will be rendered with an outline with the color specified.\n\nYou do not need to attach `outline` if you have attached `outline_recursive`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Outline (recursive)"] , Description ["If attached, this entity and all of its children will be rendered with an outline with the color specified.\nYou do not need to attach `outline` if you have attached `outline_recursive`."]] outline_recursive : Vec4 , # [doc = "**Overlay**: If attached, this entity will be rendered with an overlay.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Overlay"] , Description ["If attached, this entity will be rendered with an overlay."]] overlay : () , # [doc = "**PBR material from URL**: Load a PBR material from the URL and attach it to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["PBR material from URL"] , Description ["Load a PBR material from the URL and attach it to this entity."]] pbr_material_from_url : String , # [doc = "**Sky**: Add a realistic skybox to the scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sky"] , Description ["Add a realistic skybox to the scene."]] sky : () , # [doc = "**Sun**: Marks this entity as a sun (i.e. its rotation will be used to control the global light direction).\n\nThe entity with the highest `sun` value takes precedence.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sun"] , Description ["Marks this entity as a sun (i.e. its rotation will be used to control the global light direction).\nThe entity with the highest `sun` value takes precedence."]] sun : f32 , # [doc = "**Transparency group**: Controls when this transparent object will be rendered. Transparent objects are sorted by `(transparency_group, z-depth)`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Transparency group"] , Description ["Controls when this transparent object will be rendered. Transparent objects are sorted by `(transparency_group, z-depth)`."]] transparency_group : i32 , # [doc = "**Water**: Add a realistic water plane to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Water"] , Description ["Add a realistic water plane to this entity."]] water : () , # [doc = "**Decal material from URL**: Load a Decal material from the URL and attach it to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Decal material from URL"] , Description ["Load a Decal material from the URL and attach it to this entity."]] decal_from_url : String , # [doc = "**Scissors**: Apply a scissors test to this entity (anything outside the rect will be hidden).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scissors"] , Description ["Apply a scissors test to this entity (anything outside the rect will be hidden)."]] scissors : UVec4 , # [doc = "**Scissors (recursive)**: If attached, this entity and all of its children will be rendered with an scissor with the rect specified.\n\nYou do not need to attach `scissors` if you have attached `scissors_recursive`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scissors (recursive)"] , Description ["If attached, this entity and all of its children will be rendered with an scissor with the rect specified.\nYou do not need to attach `scissors` if you have attached `scissors_recursive`."]] scissors_recursive : UVec4 , }); } } #[allow(unused)] diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 4e67b47bc8..498413f92a 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -528,8 +528,6 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, - #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] - pub aspect_ratio_from_window: Option, } impl crate::ecs::Concept for Camera { fn make(self) -> Entity { @@ -579,21 +577,85 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } - if let Some(aspect_ratio_from_window) = - self.optional.aspect_ratio_from_window - { - entity.set( - crate::ambient_core::camera::components::aspect_ratio_from_window(), - aspect_ratio_from_window, - ); - } entity } fn get_spawned(id: EntityId) -> Option { - Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , optional : CameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some(Self { + local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::local_to_world(), + )?, + near: entity::get_component( + id, + crate::ambient_core::camera::components::near(), + )?, + projection: entity::get_component( + id, + crate::ambient_core::camera::components::projection(), + )?, + projection_view: entity::get_component( + id, + crate::ambient_core::camera::components::projection_view(), + )?, + active_camera: entity::get_component( + id, + crate::ambient_core::camera::components::active_camera(), + )?, + inv_local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + optional: CameraOptional { + translation: entity::get_component( + id, + crate::ambient_core::transform::components::translation(), + ), + rotation: entity::get_component( + id, + crate::ambient_core::transform::components::rotation(), + ), + scale: entity::get_component( + id, + crate::ambient_core::transform::components::scale(), + ), + main_scene: entity::get_component( + id, + crate::ambient_core::app::components::main_scene(), + ), + ui_scene: entity::get_component( + id, + crate::ambient_core::app::components::ui_scene(), + ), + }, + }) } fn get_unspawned(entity: &Entity) -> Option { - Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , optional : CameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some(Self { + local_to_world: entity + .get(crate::ambient_core::transform::components::local_to_world())?, + near: entity.get(crate::ambient_core::camera::components::near())?, + projection: entity + .get(crate::ambient_core::camera::components::projection())?, + projection_view: entity + .get(crate::ambient_core::camera::components::projection_view())?, + active_camera: entity + .get(crate::ambient_core::camera::components::active_camera())?, + inv_local_to_world: entity.get( + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + optional: CameraOptional { + translation: entity + .get(crate::ambient_core::transform::components::translation()), + rotation: entity + .get(crate::ambient_core::transform::components::rotation()), + scale: entity + .get(crate::ambient_core::transform::components::scale()), + main_scene: entity + .get(crate::ambient_core::app::components::main_scene()), + ui_scene: entity + .get(crate::ambient_core::app::components::ui_scene()), + }, + }) } fn contained_by_spawned(id: EntityId) -> bool { entity::has_components( @@ -1046,8 +1108,6 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, - #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] - pub aspect_ratio_from_window: Option, } impl crate::ecs::Concept for OrthographicCamera { fn make(self) -> Entity { @@ -1118,21 +1178,122 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } - if let Some(aspect_ratio_from_window) = - self.optional.aspect_ratio_from_window - { - entity.set( - crate::ambient_core::camera::components::aspect_ratio_from_window(), - aspect_ratio_from_window, - ); - } entity } fn get_spawned(id: EntityId) -> Option { - Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , orthographic : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic ()) ? , orthographic_left : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic_left ()) ? , orthographic_right : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic_right ()) ? , orthographic_top : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic_top ()) ? , orthographic_bottom : entity :: get_component (id , crate :: ambient_core :: camera :: components :: orthographic_bottom ()) ? , far : entity :: get_component (id , crate :: ambient_core :: camera :: components :: far ()) ? , optional : OrthographicCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some(Self { + local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::local_to_world(), + )?, + near: entity::get_component( + id, + crate::ambient_core::camera::components::near(), + )?, + projection: entity::get_component( + id, + crate::ambient_core::camera::components::projection(), + )?, + projection_view: entity::get_component( + id, + crate::ambient_core::camera::components::projection_view(), + )?, + active_camera: entity::get_component( + id, + crate::ambient_core::camera::components::active_camera(), + )?, + inv_local_to_world: entity::get_component( + id, + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + orthographic: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic(), + )?, + orthographic_left: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic_left(), + )?, + orthographic_right: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic_right(), + )?, + orthographic_top: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic_top(), + )?, + orthographic_bottom: entity::get_component( + id, + crate::ambient_core::camera::components::orthographic_bottom(), + )?, + far: entity::get_component( + id, + crate::ambient_core::camera::components::far(), + )?, + optional: OrthographicCameraOptional { + translation: entity::get_component( + id, + crate::ambient_core::transform::components::translation(), + ), + rotation: entity::get_component( + id, + crate::ambient_core::transform::components::rotation(), + ), + scale: entity::get_component( + id, + crate::ambient_core::transform::components::scale(), + ), + main_scene: entity::get_component( + id, + crate::ambient_core::app::components::main_scene(), + ), + ui_scene: entity::get_component( + id, + crate::ambient_core::app::components::ui_scene(), + ), + }, + }) } fn get_unspawned(entity: &Entity) -> Option { - Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , orthographic : entity . get (crate :: ambient_core :: camera :: components :: orthographic ()) ? , orthographic_left : entity . get (crate :: ambient_core :: camera :: components :: orthographic_left ()) ? , orthographic_right : entity . get (crate :: ambient_core :: camera :: components :: orthographic_right ()) ? , orthographic_top : entity . get (crate :: ambient_core :: camera :: components :: orthographic_top ()) ? , orthographic_bottom : entity . get (crate :: ambient_core :: camera :: components :: orthographic_bottom ()) ? , far : entity . get (crate :: ambient_core :: camera :: components :: far ()) ? , optional : OrthographicCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some(Self { + local_to_world: entity + .get(crate::ambient_core::transform::components::local_to_world())?, + near: entity.get(crate::ambient_core::camera::components::near())?, + projection: entity + .get(crate::ambient_core::camera::components::projection())?, + projection_view: entity + .get(crate::ambient_core::camera::components::projection_view())?, + active_camera: entity + .get(crate::ambient_core::camera::components::active_camera())?, + inv_local_to_world: entity.get( + crate::ambient_core::transform::components::inv_local_to_world(), + )?, + orthographic: entity + .get(crate::ambient_core::camera::components::orthographic())?, + orthographic_left: entity + .get(crate::ambient_core::camera::components::orthographic_left())?, + orthographic_right: entity.get( + crate::ambient_core::camera::components::orthographic_right(), + )?, + orthographic_top: entity + .get(crate::ambient_core::camera::components::orthographic_top())?, + orthographic_bottom: entity.get( + crate::ambient_core::camera::components::orthographic_bottom(), + )?, + far: entity.get(crate::ambient_core::camera::components::far())?, + optional: OrthographicCameraOptional { + translation: entity + .get(crate::ambient_core::transform::components::translation()), + rotation: entity + .get(crate::ambient_core::transform::components::rotation()), + scale: entity + .get(crate::ambient_core::transform::components::scale()), + main_scene: entity + .get(crate::ambient_core::app::components::main_scene()), + ui_scene: entity + .get(crate::ambient_core::app::components::ui_scene()), + }, + }) } fn contained_by_spawned(id: EntityId) -> bool { entity::has_components( @@ -2789,7 +2950,7 @@ mod raw { } static DOUBLE_SIDED: Lazy> = Lazy::new(|| __internal_get_component("ambient_core::rendering::double_sided")); - #[doc = "**Double-sided**: If this is set, the entity will be rendered with double-sided rendering.\n\n*Attributes*: Debuggable, Networked, Store"] + #[doc = "**Double-sided**: If attached, this controls whether or not the entity will be rendered with double-sided rendering. If not attached, the decision will fall back to the material.\n\n*Attributes*: Debuggable, Networked, Store"] pub fn double_sided() -> Component { *DOUBLE_SIDED } diff --git a/schema/schema/rendering.toml b/schema/schema/rendering.toml index 541fa3f6a0..edd91526d3 100644 --- a/schema/schema/rendering.toml +++ b/schema/schema/rendering.toml @@ -20,7 +20,7 @@ attributes = ["Debuggable", "Networked", "Store"] [components.double_sided] type = "Bool" name = "Double-sided" -description = "If this is set, the entity will be rendered with double-sided rendering." +description = "If attached, this controls whether or not the entity will be rendered with double-sided rendering. If not attached, the decision will fall back to the material." attributes = ["Debuggable", "Networked", "Store"] [components.fog_color] From 77c61f603005fcded8ffcceb4acc25940558e5f1 Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 14:44:45 +0200 Subject: [PATCH 27/35] feat(guest): finish converting to new concepts --- crates/water/src/lib.rs | 4 +- .../rust/examples/assets/unity/src/server.rs | 1 - .../examples/basics/multiplayer/src/server.rs | 7 +- .../intermediate/clientside/src/client.rs | 2 +- .../intermediate/dependencies/src/server.rs | 2 +- .../examples/rendering/image/src/server.rs | 10 +- .../procedural_generation/src/client.rs | 2 +- .../examples/rendering/raw_text/src/server.rs | 7 +- .../rendering/transparency/ambient.toml | 3 + .../rendering/transparency/src/client.rs | 27 ++- .../packages/games/arkanoid/src/server.rs | 27 +-- .../packages/games/minigolf/src/server.rs | 157 ++++++++++++------ guest/rust/packages/games/pong/src/client.rs | 25 ++- guest/rust/packages/games/pong/src/server.rs | 25 +-- .../packages/games/tangent/core/src/client.rs | 92 ++++++---- .../packages/games/tangent/core/src/server.rs | 13 +- .../packages/games/tictactoe/ambient.toml | 3 + .../packages/games/tictactoe/src/server.rs | 51 +++--- .../packages/std/orbit_camera/src/client.rs | 21 ++- .../rust/packages/tools/editor/src/server.rs | 4 +- 20 files changed, 293 insertions(+), 190 deletions(-) diff --git a/crates/water/src/lib.rs b/crates/water/src/lib.rs index 4e6316615e..069987bc10 100644 --- a/crates/water/src/lib.rs +++ b/crates/water/src/lib.rs @@ -52,7 +52,9 @@ pub fn systems() -> SystemGroup { .await .unwrap(); async_run.run(move |world| { - world.add_component(id, water_normals(), normals).unwrap(); + // If spawned by a module that has unloaded, this water entity may have been destroyed, + // so don't assume it can succeed + let _ = world.add_component(id, water_normals(), normals); }) }); } diff --git a/guest/rust/examples/assets/unity/src/server.rs b/guest/rust/examples/assets/unity/src/server.rs index ce6a3dcba4..8724b6c8c2 100644 --- a/guest/rust/examples/assets/unity/src/server.rs +++ b/guest/rust/examples/assets/unity/src/server.rs @@ -1,6 +1,5 @@ use ambient_api::{ core::{ - app::components::main_scene, prefab::components::prefab_from_url, primitives::components::quad, rendering::components::cast_shadows, diff --git a/guest/rust/examples/basics/multiplayer/src/server.rs b/guest/rust/examples/basics/multiplayer/src/server.rs index def3be8965..8a9f67d1fd 100644 --- a/guest/rust/examples/basics/multiplayer/src/server.rs +++ b/guest/rust/examples/basics/multiplayer/src/server.rs @@ -1,10 +1,7 @@ use ambient_api::{ core::{ - camera::{ - components::aspect_ratio_from_window, - concepts::{ - PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, - }, + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, player::components::is_player, primitives::components::cube, diff --git a/guest/rust/examples/intermediate/clientside/src/client.rs b/guest/rust/examples/intermediate/clientside/src/client.rs index b9de90c0c2..d3fc2339ab 100644 --- a/guest/rust/examples/intermediate/clientside/src/client.rs +++ b/guest/rust/examples/intermediate/clientside/src/client.rs @@ -1,6 +1,6 @@ use ambient_api::{ core::{ - messages::Frame, primitives::components::cube, rendering::components::color, + primitives::components::cube, rendering::components::color, transform::components::translation, }, prelude::*, diff --git a/guest/rust/examples/intermediate/dependencies/src/server.rs b/guest/rust/examples/intermediate/dependencies/src/server.rs index 0f1d12ab69..3ed09e26c1 100644 --- a/guest/rust/examples/intermediate/dependencies/src/server.rs +++ b/guest/rust/examples/intermediate/dependencies/src/server.rs @@ -5,7 +5,7 @@ use packages::{ components::{spawned_by_us, spin_direction}, messages::Spawn, }, - orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + orbit_camera::concepts::OrbitCamera, }; #[main] diff --git a/guest/rust/examples/rendering/image/src/server.rs b/guest/rust/examples/rendering/image/src/server.rs index a9a30befc1..f53af8c4eb 100644 --- a/guest/rust/examples/rendering/image/src/server.rs +++ b/guest/rust/examples/rendering/image/src/server.rs @@ -1,15 +1,11 @@ use ambient_api::{ core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, - concepts::{ - PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, - }, + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, primitives::components::quad, rendering::components::pbr_material_from_url, - transform::components::{lookat_target, scale, translation}, + transform::components::{lookat_target, scale}, }, prelude::*, }; diff --git a/guest/rust/examples/rendering/procedural_generation/src/client.rs b/guest/rust/examples/rendering/procedural_generation/src/client.rs index c0f673962b..29425a8890 100644 --- a/guest/rust/examples/rendering/procedural_generation/src/client.rs +++ b/guest/rust/examples/rendering/procedural_generation/src/client.rs @@ -6,7 +6,7 @@ use ambient_api::{ PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, primitives::{ - components::{cube, quad, sphere_radius}, + components::{cube, quad}, concepts::Sphere, }, procedurals::components::{procedural_material, procedural_mesh}, diff --git a/guest/rust/examples/rendering/raw_text/src/server.rs b/guest/rust/examples/rendering/raw_text/src/server.rs index 30eec30b5c..ff0a970f94 100644 --- a/guest/rust/examples/rendering/raw_text/src/server.rs +++ b/guest/rust/examples/rendering/raw_text/src/server.rs @@ -1,11 +1,8 @@ use ambient_api::{ core::{ app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, - concepts::{ - PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, - }, + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, rendering::components::color, text::components::text, diff --git a/guest/rust/examples/rendering/transparency/ambient.toml b/guest/rust/examples/rendering/transparency/ambient.toml index d104f2bcd7..43009fae4d 100644 --- a/guest/rust/examples/rendering/transparency/ambient.toml +++ b/guest/rust/examples/rendering/transparency/ambient.toml @@ -6,3 +6,6 @@ version = "0.0.1" repository = "https://github.com/AmbientRun/Ambient/tree/main/guest/rust/examples/basics/transparency" type = "Game" content = { type = "Playable", example = true } + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/rendering/transparency/src/client.rs b/guest/rust/examples/rendering/transparency/src/client.rs index 2590a3516b..b5eba63ab7 100644 --- a/guest/rust/examples/rendering/transparency/src/client.rs +++ b/guest/rust/examples/rendering/transparency/src/client.rs @@ -1,38 +1,31 @@ use ambient_api::{ core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, primitives::components::{cube, quad}, rendering::components::{color, transparency_group}, - transform::{ - components::{lookat_target, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{scale, translation}, }, prelude::*, }; +use packages::orbit_camera::concepts::OrbitCamera; #[main] fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(5., 5., 4.)) - .with(lookat_target(), vec3(0., 0., 2.)) - .spawn(); + // Camera + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: default(), + } + .make() + .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(quad(), ()) .with(scale(), Vec3::ONE * 10.) .with(color(), vec4(1., 0., 0., 1.)) .spawn(); Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) .with(translation(), vec3(0., 0., 1.)) .with(scale(), Vec3::ONE * 2.) diff --git a/guest/rust/packages/games/arkanoid/src/server.rs b/guest/rust/packages/games/arkanoid/src/server.rs index 95372e6a05..875e7f64a9 100644 --- a/guest/rust/packages/games/arkanoid/src/server.rs +++ b/guest/rust/packages/games/arkanoid/src/server.rs @@ -6,7 +6,7 @@ use ambient_api::{ messages::Frame, physics::components::linear_velocity, player::components::{is_player, user_id}, - primitives::components::cube, + primitives::{components::cube, concepts::Sphere}, rendering::components::color, transform::components::*, }, @@ -24,7 +24,7 @@ use packages::this::{ fn spawn_enemies(enemies: &mut Vec, y_pos: f32, color: Vec3) { for i in 0..7 { enemies.push( - make_Transformable() + Entity::new() .with(cube(), ()) .with(scale(), vec3(PADDLE_WIDTH, PADDLE_HEIGHT / 2., 1.)) .with(translation(), vec3(-1. + (i as f32 / 3.), y_pos, 0.)) @@ -64,14 +64,14 @@ pub fn main() { spawn_enemies(&mut enemies, 0.5, vec3(0.6, 0.8, 0.2)); //Spawn field - make_Transformable() + Entity::new() .with(cube(), ()) .with(scale(), vec3(X_BOUNDARY * 2.5, Y_BOUNDARY * 2.3, 1.)) .with(translation(), vec3(0., 0., 1.0)) .with(self::color(), vec4(1., 1., 1., 1.)) .spawn(); - make_Transformable() + Entity::new() .with(cube(), ()) .with( scale(), @@ -81,19 +81,24 @@ pub fn main() { .with(self::color(), vec4(0., 0., 0., 1.)) .spawn(); - let paddle = make_Transformable() + let paddle = Entity::new() .with(cube(), ()) .with(scale(), vec3(PADDLE_WIDTH, PADDLE_HEIGHT, 1.)) .with(translation(), vec3(0., -0.9, 0.)) .with(self::color(), vec4(0., 1., 1., 1.)) .spawn(); - let ball = make_Transformable() - .with_merge(make_Sphere()) - .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) - .with(translation(), vec3(0., -0.9 + BALL_RADIUS, 0.)) - .with(self::color(), vec4(1., 1., 1., 1.)) - .spawn(); + let ball = Sphere { + sphere: (), + sphere_radius: 0.5, + sphere_sectors: 36, + sphere_stacks: 18, + } + .make() + .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) + .with(translation(), vec3(0., -0.9 + BALL_RADIUS, 0.)) + .with(self::color(), vec4(1., 1., 1., 1.)) + .spawn(); // When a player spawns, create a camera and other components for them spawn_query(is_player()).bind(move |players| { diff --git a/guest/rust/packages/games/minigolf/src/server.rs b/guest/rust/packages/games/minigolf/src/server.rs index a617bfbf23..5403c21631 100644 --- a/guest/rust/packages/games/minigolf/src/server.rs +++ b/guest/rust/packages/games/minigolf/src/server.rs @@ -1,9 +1,13 @@ +use std::f32::consts::PI; + use ambient_api::{ core::{ app::components::main_scene, camera::{ - components::{active_camera, aspect_ratio_from_window}, - concepts::make_PerspectiveInfiniteReverseCamera, + components::active_camera, + concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, + }, }, ecs::components::children, messages::Collision, @@ -18,10 +22,10 @@ use ambient_api::{ text::components::{font_size, text}, transform::{ components::{ - inv_local_to_world, local_to_parent, local_to_world, mesh_to_local, mesh_to_world, - rotation, scale, spherical_billboard, translation, + local_to_parent, local_to_world, mesh_to_local, mesh_to_world, rotation, scale, + spherical_billboard, translation, }, - concepts::make_Transformable, + concepts::{Transformable, TransformableOptional}, }, }, entity::resources, @@ -34,7 +38,7 @@ use packages::this::{ player_indicator, player_indicator_arrow, player_restore_point, player_shoot_requested, player_stroke_count, player_text, player_text_container, }, - concepts::{make_PlayerCameraState, make_PlayerState}, + concepts::{PlayerCameraState, PlayerState}, messages::{Bonk, Hit, Input}, }; use utils::CameraState; @@ -44,12 +48,12 @@ mod utils; const BALL_RADIUS: f32 = 0.34; fn create_environment() { - make_Transformable() + Entity::new() .with(water(), ()) .with(scale(), Vec3::ONE * 2000.) .spawn(); - make_Transformable() + Entity::new() .with(sun(), 0.0) .with(rotation(), Quat::from_rotation_y(-45_f32.to_radians())) .with(light_diffuse(), Vec3::ONE) @@ -57,14 +61,14 @@ fn create_environment() { .with(main_scene(), ()) .spawn(); - make_Transformable().with(sky(), ()).spawn(); + Entity::new().with(sky(), ()).spawn(); - make_Transformable() + Entity::new() .with(prefab_from_url(), assets::url("level.glb")) .with(translation(), Vec3::Z * -0.25) .spawn(); - make_Transformable() + Entity::new() .with(model_from_url(), assets::url("fan.glb")) .with(collider_from_url(), assets::url("fan.glb")) .with(kinematic(), ()) @@ -76,12 +80,20 @@ fn create_environment() { } fn make_golf_ball() -> Entity { - make_Transformable() - .with(is_ball(), ()) - .with(physics_controlled(), ()) - .with(dynamic(), true) - .with(sphere_collider(), BALL_RADIUS) - .with(model_from_url(), assets::url("ball.glb")) + Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(Vec3::ZERO), + rotation: Some(Quat::IDENTITY), + scale: Some(Vec3::ONE), + }, + } + .make() + .with(is_ball(), ()) + .with(physics_controlled(), ()) + .with(dynamic(), true) + .with(sphere_collider(), BALL_RADIUS) + .with(model_from_url(), assets::url("ball.glb")) } fn make_text() -> Entity { @@ -119,21 +131,48 @@ pub fn main() { // 80 + 22.5; pseudo random color, with 16 being unique entity::mutate_component(resources(), next_player_hue(), |h| *h += 102.5); - entity::add_components(player, make_PlayerState()); + entity::add_components( + player, + PlayerState { + player_restore_point: vec3(-5f32, 0f32, 20f32), + player_stroke_count: 0, + player_color: Vec4::ONE, + } + .make(), + ); - let camera_state = make_PlayerCameraState().spawn(); + let camera_state = PlayerCameraState { + player_camera_pivot: vec3(0f32, 0f32, 8f32), + player_camera_position: Vec3::ZERO, + player_camera_radius: 15f32, + player_camera_rotation: vec2(PI, 0.610865f32), + } + .make() + .spawn(); entity::add_component(player, player_camera_state(), camera_state); - make_PerspectiveInfiniteReverseCamera() - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(user_id(), player_user_id.clone()) - .with(player_camera_state(), camera_state) - .with(main_scene(), ()) - .with(local_to_world(), Default::default()) - .with(inv_local_to_world(), Default::default()) - .with(translation(), Default::default()) - .with(rotation(), Default::default()) - .spawn(); + PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(Vec3::ZERO), + rotation: Some(Quat::IDENTITY), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(user_id(), player_user_id.clone()) + .with(player_camera_state(), camera_state) + .spawn(); // TODO: This is a bit... odd entity::add_component(player, player_color(), next_color * 2.2); @@ -148,7 +187,7 @@ pub fn main() { entity::add_component( player, player_text_container(), - make_Transformable() + Entity::new() .with(main_scene(), ()) .with(local_to_world(), Default::default()) .with(spherical_billboard(), ()) @@ -170,34 +209,58 @@ pub fn main() { entity::add_component( player, player_indicator(), - make_Transformable() - .with(color(), next_color) - .with(user_id(), player_user_id.clone()) - .with(model_from_url(), assets::url("indicator.glb")) - .spawn(), + Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(Vec3::ZERO), + rotation: Some(Quat::IDENTITY), + scale: Some(Vec3::ONE), + }, + } + .make() + .with(color(), next_color) + .with(user_id(), player_user_id.clone()) + .with(model_from_url(), assets::url("indicator.glb")) + .spawn(), ); entity::add_component( player, player_indicator_arrow(), - make_Transformable() - .with(color(), next_color) - .with(user_id(), player_user_id.clone()) - .with(model_from_url(), assets::url("indicator_arrow.glb")) - .spawn(), + Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(Vec3::ZERO), + rotation: Some(Quat::IDENTITY), + scale: Some(Vec3::ONE), + }, + } + .make() + .with(color(), next_color) + .with(user_id(), player_user_id.clone()) + .with(model_from_url(), assets::url("indicator_arrow.glb")) + .spawn(), ); entity::add_component(player, player_shoot_requested(), false); } }); - let flag = make_Transformable() - .with(model_from_url(), assets::url("flag.glb")) - .with(collider_from_url(), assets::url("flag.glb")) - .with(dynamic(), true) - .with(kinematic(), ()) - .with(origin(), vec3(-35., 205., 0.3166)) - .spawn(); + let flag = Transformable { + local_to_world: Mat4::IDENTITY, + optional: TransformableOptional { + translation: Some(Vec3::ZERO), + rotation: Some(Quat::IDENTITY), + scale: Some(Vec3::ONE), + }, + } + .make() + .with(model_from_url(), assets::url("flag.glb")) + .with(collider_from_url(), assets::url("flag.glb")) + .with(dynamic(), true) + .with(kinematic(), ()) + .with(origin(), vec3(-35., 205., 0.3166)) + .spawn(); // Update the flag every frame. query(translation()) diff --git a/guest/rust/packages/games/pong/src/client.rs b/guest/rust/packages/games/pong/src/client.rs index bc9a65913c..849b018c3a 100644 --- a/guest/rust/packages/games/pong/src/client.rs +++ b/guest/rust/packages/games/pong/src/client.rs @@ -1,11 +1,11 @@ use ambient_api::{ core::{ - app::components::{main_scene, window_logical_size}, + app::components::window_logical_size, camera::{ components::{ orthographic_bottom, orthographic_left, orthographic_right, orthographic_top, }, - concepts::make_OrthographicCamera, + concepts::{OrthographicCamera, OrthographicCameraOptional}, }, messages::Frame, }, @@ -30,7 +30,26 @@ async fn main() { bgm_player.set_amplitude(0.2); bgm_player.play(url_from_server); - let camera_id = make_OrthographicCamera().with(main_scene(), ()).spawn(); + let camera_id = OrthographicCamera { + local_to_world: Mat4::IDENTITY, + near: -1., + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + orthographic: (), + orthographic_left: -1., + orthographic_right: 1., + orthographic_top: 1., + orthographic_bottom: -1., + far: 1., + optional: OrthographicCameraOptional { + main_scene: Some(()), + ..default() + }, + } + .make() + .spawn(); Frame::subscribe(move |_| { let input = input::get(); diff --git a/guest/rust/packages/games/pong/src/server.rs b/guest/rust/packages/games/pong/src/server.rs index 9999ed47c6..aba2335b06 100644 --- a/guest/rust/packages/games/pong/src/server.rs +++ b/guest/rust/packages/games/pong/src/server.rs @@ -5,9 +5,9 @@ use ambient_api::{ messages::Frame, physics::components::linear_velocity, player::components::{is_player, user_id}, - primitives::{components::cube, concepts::make_Sphere}, + primitives::{components::cube, concepts::Sphere}, rendering::components::color, - transform::{components::*, concepts::make_Transformable}, + transform::components::*, }, prelude::*, }; @@ -22,7 +22,7 @@ use constants::*; fn spawn_paddle(left: bool, paddle_color: Vec3) -> EntityId { let x = X_BOUNDARY + PADDLE_WIDTH / 2.; - make_Transformable() + Entity::new() .with(cube(), ()) .with(scale(), vec3(PADDLE_WIDTH, PADDLE_LENGTH, 1.)) .with(translation(), vec3(if left { -x } else { x }, 0., 0.)) @@ -46,7 +46,7 @@ pub fn main() { entity::add_component(entity::synchronized_resources(), track_audio_url(), bgm_url); // Spawn field, paddles and ball - make_Transformable() + Entity::new() .with(cube(), ()) .with(scale(), vec3(X_BOUNDARY * 2., Y_BOUNDARY * 2., 1.)) .with(translation(), vec3(0., 0., 1.)) @@ -56,12 +56,17 @@ pub fn main() { spawn_paddle(true, vec3(255., 0., 0.)), spawn_paddle(false, vec3(0., 255., 0.)), ]; - let ball = make_Transformable() - .with_merge(make_Sphere()) - .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) - .with(translation(), vec3(0., 0., -1.)) - .with(color(), vec4(255., 255., 255., 1.)) - .spawn(); + let ball = Sphere { + sphere: (), + sphere_radius: 0.5, + sphere_sectors: 36, + sphere_stacks: 18, + } + .make() + .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) + .with(translation(), vec3(0., 0., -1.)) + .with(color(), vec4(255., 255., 255., 1.)) + .spawn(); // When a player spawns, create a camera and other components for them spawn_query(is_player()).bind(move |players| { diff --git a/guest/rust/packages/games/tangent/core/src/client.rs b/guest/rust/packages/games/tangent/core/src/client.rs index ec7c9a7c64..030a52a4d3 100644 --- a/guest/rust/packages/games/tangent/core/src/client.rs +++ b/guest/rust/packages/games/tangent/core/src/client.rs @@ -2,21 +2,23 @@ use ambient_api::{ core::{ app::components::{main_scene, name}, camera::{ - components::{aspect_ratio_from_window, fog, fovy}, - concepts::make_PerspectiveInfiniteReverseCamera, + components::{fog, fovy}, + concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, + }, }, - ecs::components::{children, parent}, + ecs::components::children, messages::Frame, + model::components::model_loaded, physics::components::linear_velocity, rect::components::{line_from, line_to, line_width, rect}, rendering::components::color, text::components::{font_size, text}, transform::{ components::{ - local_to_parent, local_to_world, lookat_target, mesh_to_local, mesh_to_world, - rotation, scale, translation, + local_to_parent, lookat_target, mesh_to_local, mesh_to_world, rotation, translation, }, - concepts::make_Transformable, + concepts::{Transformable, TransformableOptional}, }, }, element::use_query, @@ -33,39 +35,61 @@ const RENDER_DEBUG: bool = false; #[main] pub fn main() { - let camera_id = Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), EntityId::resources()) - .with(main_scene(), ()) - .with(fog(), ()) - .with(translation(), vec3(5., 5., 2.)) - .with(lookat_target(), vec3(0., 0., 1.)) - .spawn(); + let camera_id = PerspectiveInfiniteReverseCamera { + local_to_world: Mat4::IDENTITY, + near: 0.1, + projection: Mat4::IDENTITY, + projection_view: Mat4::IDENTITY, + active_camera: 0.0, + inv_local_to_world: Mat4::IDENTITY, + fovy: 1.0, + aspect_ratio: 1.0, + perspective_infinite_reverse: (), + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some(vec3(5., 5., 2.)), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + } + .make() + .with(fog(), ()) + .with(lookat_target(), vec3(0., 0., 1.)) + .spawn(); spawn_query(vehicle()).bind(move |vehicles| { for (id, _) in vehicles { - let hud_id = Entity::new() - .with_merge(make_Transformable()) - .with(local_to_world(), Default::default()) - .with(local_to_parent(), Default::default()) - .with(mesh_to_local(), Default::default()) - .with(mesh_to_world(), Default::default()) - .with(main_scene(), ()) - .with(text(), "0".to_string()) - .with(color(), vec4(1., 1., 1., 1.)) - .with(translation(), vec3(0.35, 0., 0.3)) - .with( - rotation(), - Quat::from_rotation_z(25.0f32.to_radians()) - * Quat::from_rotation_x(-65.0f32.to_radians()), - ) - .with(scale(), Vec3::ONE * 0.005) - .with(font_size(), 48.0) - .with(parent(), id) - .spawn(); + let hud_id = Transformable { + local_to_world: default(), + optional: TransformableOptional { + translation: Some(vec3(0.35, 0., 0.3)), + rotation: Some( + Quat::from_rotation_z(25.0f32.to_radians()) + * Quat::from_rotation_x(-65.0f32.to_radians()), + ), + scale: Some(Vec3::ONE * 0.005), + }, + } + .make() + .with(local_to_parent(), Default::default()) + .with(mesh_to_local(), Default::default()) + .with(mesh_to_world(), Default::default()) + .with(main_scene(), ()) + .with(text(), "0".to_string()) + .with(color(), vec4(1., 1., 1., 1.)) + .with(font_size(), 48.0) + .spawn(); entity::add_component(id, vehicle_hud(), hud_id); - entity::add_child(id, hud_id); + // https://github.com/AmbientRun/Ambient/issues/843 + run_async(async move { + if entity::wait_for_component(id, model_loaded()) + .await + .is_some() + { + entity::add_child(id, hud_id); + } + }); } }); diff --git a/guest/rust/packages/games/tangent/core/src/server.rs b/guest/rust/packages/games/tangent/core/src/server.rs index 0d80890f54..a36e9aa761 100644 --- a/guest/rust/packages/games/tangent/core/src/server.rs +++ b/guest/rust/packages/games/tangent/core/src/server.rs @@ -11,10 +11,7 @@ use ambient_api::{ cast_shadows, fog_color, fog_density, fog_height_falloff, light_diffuse, sky, sun, water, }, - transform::{ - components::{rotation, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{rotation, scale, translation}, }, prelude::*, }; @@ -70,7 +67,6 @@ pub fn main() { fn make_water() { Entity::new() - .with_merge(make_Transformable()) .with(water(), ()) .with(physics_controlled(), ()) .with(plane_collider(), ()) @@ -80,13 +76,9 @@ fn make_water() { } fn make_sun() { - Entity::new() - .with_merge(make_Transformable()) - .with(sky(), ()) - .spawn(); + Entity::new().with(sky(), ()).spawn(); Entity::new() - .with_merge(make_Transformable()) .with(sun(), 0.0) .with(rotation(), Default::default()) .with(main_scene(), ()) @@ -102,7 +94,6 @@ fn vehicle_creation_and_destruction() { spawn_query(is_player()).bind(|players| { for (player_id, ()) in players { let vehicle_id = Entity::new() - .with_merge(make_Transformable()) .with(cast_shadows(), ()) .with(linear_velocity(), Default::default()) .with(angular_velocity(), Default::default()) diff --git a/guest/rust/packages/games/tictactoe/ambient.toml b/guest/rust/packages/games/tictactoe/ambient.toml index ddc33ed501..d7d8a6a011 100644 --- a/guest/rust/packages/games/tictactoe/ambient.toml +++ b/guest/rust/packages/games/tictactoe/ambient.toml @@ -29,3 +29,6 @@ down = "Bool" left = "Bool" right = "Bool" capture = "Bool" + +[dependencies] +orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/packages/games/tictactoe/src/server.rs b/guest/rust/packages/games/tictactoe/src/server.rs index 2f65250d87..35a3ff8d4d 100644 --- a/guest/rust/packages/games/tictactoe/src/server.rs +++ b/guest/rust/packages/games/tictactoe/src/server.rs @@ -1,16 +1,11 @@ +use std::f32::consts::PI; + use ambient_api::{ core::{ - app::components::main_scene, - camera::{ - components::aspect_ratio_from_window, concepts::make_PerspectiveInfiniteReverseCamera, - }, player::components::is_player, primitives::components::cube, rendering::components::color, - transform::{ - components::{lookat_target, scale, translation}, - concepts::make_Transformable, - }, + transform::components::{scale, translation}, }, prelude::*, }; @@ -18,33 +13,41 @@ use ambient_api::{ mod constants; use constants::*; -use packages::this::{ - components::{cell, cells, owned_by}, - messages::Input, +use packages::{ + orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, + this::{ + components::{cell, cells, owned_by}, + messages::Input, + }, }; #[main] pub fn main() { - Entity::new() - .with_merge(make_PerspectiveInfiniteReverseCamera()) - .with(aspect_ratio_from_window(), entity::resources()) - .with(main_scene(), ()) - .with(translation(), vec3(SIZE as f32, SIZE as f32, SIZE as f32)) - .with( - lookat_target(), - vec3(SIZE as f32 / 2., SIZE as f32 / 2., 0.), - ) - .spawn(); + const CUBE_SIZE: f32 = 0.6; + const SIZE_F32: f32 = SIZE as f32; + + OrbitCamera { + is_orbit_camera: (), + lookat_target: Vec3::ZERO, + optional: OrbitCameraOptional { + camera_distance: Some(SIZE_F32), + camera_angle: Some(vec2(PI, 60f32.to_radians())), + ..default() + }, + } + .make() + .spawn(); let cell_entities = { let mut cells = Vec::new(); + let centre = vec3((SIZE / 2) as f32, (SIZE / 2) as f32, 0.); + for y in 0..SIZE { for x in 0..SIZE { let id = Entity::new() - .with_merge(make_Transformable()) .with(cube(), ()) - .with(translation(), vec3(x as f32, y as f32, 0.)) - .with(scale(), vec3(0.6, 0.6, 0.6)) + .with(translation(), vec3(x as f32, y as f32, 0.) - centre) + .with(scale(), vec3(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)) .with(color(), DEFAULT_COLOR) .spawn(); cells.push(id); diff --git a/guest/rust/packages/std/orbit_camera/src/client.rs b/guest/rust/packages/std/orbit_camera/src/client.rs index 8a1f0420c3..239443e76e 100644 --- a/guest/rust/packages/std/orbit_camera/src/client.rs +++ b/guest/rust/packages/std/orbit_camera/src/client.rs @@ -3,7 +3,7 @@ use ambient_api::{ camera::concepts::{ PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, - transform::components::{rotation, translation}, + transform::components::{lookat_target, rotation, translation}, }, prelude::*, }; @@ -45,15 +45,19 @@ pub fn main() { query(is_orbit_camera()).each_frame(|cameras| { let (delta, input) = input::get_delta(); + let distance_delta = delta.mouse_wheel * -0.1; let angle_delta = if input.mouse_buttons.contains(&MouseButton::Right) { delta.mouse_position * 0.01 } else { Vec2::ZERO }; - let distance_delta = delta.mouse_wheel * -0.1; - for (camera_id, _) in cameras { + let distance = + entity::mutate_component_with_default(camera_id, camera_distance(), 0.0, |dist| { + *dist = f32::max(*dist + distance_delta, 1.0); + }); + let angle = entity::mutate_component_with_default( camera_id, camera_angle(), @@ -64,14 +68,13 @@ pub fn main() { }, ); - let distance = - entity::mutate_component_with_default(camera_id, camera_distance(), 0.0, |dist| { - *dist = f32::max(*dist + distance_delta, 1.0); - }); - let quat = Quat::from_euler(glam::EulerRot::ZXY, angle.x, -angle.y, 0.0); - entity::add_component(camera_id, translation(), quat * vec3(0.0, -distance, 0.0)); entity::add_component(camera_id, rotation(), quat); + + let lookat_target = + entity::get_component(camera_id, lookat_target()).unwrap_or_default(); + let pos = lookat_target + quat * vec3(0.0, -distance, 0.0); + entity::add_component(camera_id, translation(), pos); } }); } diff --git a/guest/rust/packages/tools/editor/src/server.rs b/guest/rust/packages/tools/editor/src/server.rs index d0d1d4d1f4..6068350e83 100644 --- a/guest/rust/packages/tools/editor/src/server.rs +++ b/guest/rust/packages/tools/editor/src/server.rs @@ -2,9 +2,9 @@ use std::f32::consts::PI; use ambient_api::{ core::{ - app::components::{main_scene, name}, + app::components::name, camera::{ - components::{active_camera, aspect_ratio_from_window}, + components::active_camera, concepts::{ PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, From ff9f6b1ebf8f9424c94c234b85c80b471b42095e Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 14:49:21 +0200 Subject: [PATCH 28/35] feat(api): add Concept::spawn helper --- guest/rust/api_core/src/ecs.rs | 8 ++++++++ guest/rust/examples/assets/basic_model/src/server.rs | 1 - .../rust/examples/assets/generate_pipeline/src/server.rs | 1 - .../examples/assets/material_overriding/src/server.rs | 1 - guest/rust/examples/assets/unity/src/server.rs | 1 - guest/rust/examples/basics/physics/src/server.rs | 1 - guest/rust/examples/basics/primitives/src/server.rs | 1 - guest/rust/examples/basics/skinmesh/src/client.rs | 1 - guest/rust/examples/intermediate/clientside/src/client.rs | 1 - .../rust/examples/intermediate/dependencies/src/server.rs | 1 - guest/rust/examples/intermediate/screen_ray/src/client.rs | 1 - guest/rust/examples/rendering/decals/src/server.rs | 1 - guest/rust/examples/rendering/samplers/src/server.rs | 1 - guest/rust/examples/rendering/transparency/src/client.rs | 1 - guest/rust/packages/games/arkanoid/src/client.rs | 1 - guest/rust/packages/games/minigolf/src/server.rs | 4 +--- guest/rust/packages/games/pong/src/client.rs | 1 - guest/rust/packages/games/tictactoe/src/server.rs | 1 - 18 files changed, 9 insertions(+), 19 deletions(-) diff --git a/guest/rust/api_core/src/ecs.rs b/guest/rust/api_core/src/ecs.rs index c62e070c0a..6ac885c770 100644 --- a/guest/rust/api_core/src/ecs.rs +++ b/guest/rust/api_core/src/ecs.rs @@ -18,6 +18,14 @@ pub trait Concept { /// Creates an entity with the components defined by this concept. fn make(self) -> Entity; + /// Spawns this concept into the world. If you want to modify state before spawning, use `make` instead. + fn spawn(self) -> EntityId + where + Self: Sized, + { + self.make().spawn() + } + /// If the entity with `id` exists and has the components defined by this concept, returns this concept with all of the values of the components in the entity. /// /// # Examples diff --git a/guest/rust/examples/assets/basic_model/src/server.rs b/guest/rust/examples/assets/basic_model/src/server.rs index 520efeba54..e29914b05d 100644 --- a/guest/rust/examples/assets/basic_model/src/server.rs +++ b/guest/rust/examples/assets/basic_model/src/server.rs @@ -13,7 +13,6 @@ pub async fn main() { lookat_target: Vec3::ZERO, optional: default(), } - .make() .spawn(); // Model diff --git a/guest/rust/examples/assets/generate_pipeline/src/server.rs b/guest/rust/examples/assets/generate_pipeline/src/server.rs index e6bba61609..80803dea1b 100644 --- a/guest/rust/examples/assets/generate_pipeline/src/server.rs +++ b/guest/rust/examples/assets/generate_pipeline/src/server.rs @@ -12,7 +12,6 @@ pub async fn main() { lookat_target: Vec3::ZERO, optional: default(), } - .make() .spawn(); // Model diff --git a/guest/rust/examples/assets/material_overriding/src/server.rs b/guest/rust/examples/assets/material_overriding/src/server.rs index 040684c295..552cfacb6d 100644 --- a/guest/rust/examples/assets/material_overriding/src/server.rs +++ b/guest/rust/examples/assets/material_overriding/src/server.rs @@ -24,7 +24,6 @@ pub async fn main() { ..default() }, } - .make() .spawn(); Entity::new() diff --git a/guest/rust/examples/assets/unity/src/server.rs b/guest/rust/examples/assets/unity/src/server.rs index 8724b6c8c2..727b1ebfa5 100644 --- a/guest/rust/examples/assets/unity/src/server.rs +++ b/guest/rust/examples/assets/unity/src/server.rs @@ -23,7 +23,6 @@ pub fn main() { ..default() }, } - .make() .spawn(); Entity::new() diff --git a/guest/rust/examples/basics/physics/src/server.rs b/guest/rust/examples/basics/physics/src/server.rs index a334498200..9dc0c2fa54 100644 --- a/guest/rust/examples/basics/physics/src/server.rs +++ b/guest/rust/examples/basics/physics/src/server.rs @@ -29,7 +29,6 @@ pub async fn main() { ..default() }, } - .make() .spawn(); let cube = Entity::new() diff --git a/guest/rust/examples/basics/primitives/src/server.rs b/guest/rust/examples/basics/primitives/src/server.rs index 73b0ff2fae..aebbbcbb79 100644 --- a/guest/rust/examples/basics/primitives/src/server.rs +++ b/guest/rust/examples/basics/primitives/src/server.rs @@ -21,7 +21,6 @@ pub fn main() { ..default() }, } - .make() .spawn(); Entity::new() diff --git a/guest/rust/examples/basics/skinmesh/src/client.rs b/guest/rust/examples/basics/skinmesh/src/client.rs index 1aa5bf9460..5c58dc2c26 100644 --- a/guest/rust/examples/basics/skinmesh/src/client.rs +++ b/guest/rust/examples/basics/skinmesh/src/client.rs @@ -30,7 +30,6 @@ pub async fn main() { ..default() }, } - .make() .spawn(); Entity::new() diff --git a/guest/rust/examples/intermediate/clientside/src/client.rs b/guest/rust/examples/intermediate/clientside/src/client.rs index d3fc2339ab..7a3b7ad585 100644 --- a/guest/rust/examples/intermediate/clientside/src/client.rs +++ b/guest/rust/examples/intermediate/clientside/src/client.rs @@ -26,7 +26,6 @@ pub async fn main() { ..default() }, } - .make() .spawn(); let start_time = game_time(); diff --git a/guest/rust/examples/intermediate/dependencies/src/server.rs b/guest/rust/examples/intermediate/dependencies/src/server.rs index 3ed09e26c1..58091f8645 100644 --- a/guest/rust/examples/intermediate/dependencies/src/server.rs +++ b/guest/rust/examples/intermediate/dependencies/src/server.rs @@ -15,7 +15,6 @@ pub async fn main() { lookat_target: Vec3::ZERO, optional: default(), } - .make() .spawn(); let mut last_update = game_time(); diff --git a/guest/rust/examples/intermediate/screen_ray/src/client.rs b/guest/rust/examples/intermediate/screen_ray/src/client.rs index cf175b0f46..1d1d244b94 100644 --- a/guest/rust/examples/intermediate/screen_ray/src/client.rs +++ b/guest/rust/examples/intermediate/screen_ray/src/client.rs @@ -15,7 +15,6 @@ pub fn main() { lookat_target: Vec3::ZERO, optional: default(), } - .make() .spawn(); Frame::subscribe(move |_| { diff --git a/guest/rust/examples/rendering/decals/src/server.rs b/guest/rust/examples/rendering/decals/src/server.rs index 3f655ac602..6dc4a3dfa8 100644 --- a/guest/rust/examples/rendering/decals/src/server.rs +++ b/guest/rust/examples/rendering/decals/src/server.rs @@ -18,7 +18,6 @@ pub fn main() { lookat_target: Vec3::ZERO, optional: default(), } - .make() .spawn(); // Scene geometry. diff --git a/guest/rust/examples/rendering/samplers/src/server.rs b/guest/rust/examples/rendering/samplers/src/server.rs index 763285312e..346a475310 100644 --- a/guest/rust/examples/rendering/samplers/src/server.rs +++ b/guest/rust/examples/rendering/samplers/src/server.rs @@ -11,7 +11,6 @@ pub fn main() { lookat_target: Vec3::ZERO, optional: default(), } - .make() .spawn(); Entity::new() diff --git a/guest/rust/examples/rendering/transparency/src/client.rs b/guest/rust/examples/rendering/transparency/src/client.rs index b5eba63ab7..ccc80240c3 100644 --- a/guest/rust/examples/rendering/transparency/src/client.rs +++ b/guest/rust/examples/rendering/transparency/src/client.rs @@ -16,7 +16,6 @@ fn main() { lookat_target: Vec3::ZERO, optional: default(), } - .make() .spawn(); Entity::new() diff --git a/guest/rust/packages/games/arkanoid/src/client.rs b/guest/rust/packages/games/arkanoid/src/client.rs index 8328065be3..a7c99d655e 100644 --- a/guest/rust/packages/games/arkanoid/src/client.rs +++ b/guest/rust/packages/games/arkanoid/src/client.rs @@ -53,7 +53,6 @@ async fn main() { ..default() }, } - .make() .spawn(); Frame::subscribe(move |_| { diff --git a/guest/rust/packages/games/minigolf/src/server.rs b/guest/rust/packages/games/minigolf/src/server.rs index 5403c21631..9e9f52e886 100644 --- a/guest/rust/packages/games/minigolf/src/server.rs +++ b/guest/rust/packages/games/minigolf/src/server.rs @@ -137,8 +137,7 @@ pub fn main() { player_restore_point: vec3(-5f32, 0f32, 20f32), player_stroke_count: 0, player_color: Vec4::ONE, - } - .make(), + }, ); let camera_state = PlayerCameraState { @@ -147,7 +146,6 @@ pub fn main() { player_camera_radius: 15f32, player_camera_rotation: vec2(PI, 0.610865f32), } - .make() .spawn(); entity::add_component(player, player_camera_state(), camera_state); diff --git a/guest/rust/packages/games/pong/src/client.rs b/guest/rust/packages/games/pong/src/client.rs index 849b018c3a..0cd8aa8f25 100644 --- a/guest/rust/packages/games/pong/src/client.rs +++ b/guest/rust/packages/games/pong/src/client.rs @@ -48,7 +48,6 @@ async fn main() { ..default() }, } - .make() .spawn(); Frame::subscribe(move |_| { diff --git a/guest/rust/packages/games/tictactoe/src/server.rs b/guest/rust/packages/games/tictactoe/src/server.rs index 35a3ff8d4d..87fa7252b8 100644 --- a/guest/rust/packages/games/tictactoe/src/server.rs +++ b/guest/rust/packages/games/tictactoe/src/server.rs @@ -35,7 +35,6 @@ pub fn main() { ..default() }, } - .make() .spawn(); let cell_entities = { From fe9e543c148d676d4b5bc349651156374e43ed61 Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 14:53:09 +0200 Subject: [PATCH 29/35] feat(packages): orbit camera opt lookat_target --- guest/rust/examples/assets/basic_model/src/server.rs | 1 - .../rust/examples/assets/generate_pipeline/src/server.rs | 1 - .../examples/assets/material_overriding/src/server.rs | 1 - guest/rust/examples/assets/unity/src/server.rs | 2 +- guest/rust/examples/basics/physics/src/server.rs | 1 - guest/rust/examples/basics/primitives/src/server.rs | 1 - guest/rust/examples/basics/skinmesh/src/client.rs | 2 +- guest/rust/examples/intermediate/clientside/src/client.rs | 1 - .../rust/examples/intermediate/dependencies/src/server.rs | 1 - guest/rust/examples/intermediate/screen_ray/src/client.rs | 1 - guest/rust/examples/rendering/decals/src/server.rs | 1 - guest/rust/examples/rendering/fog/src/client.rs | 8 +++++--- guest/rust/examples/rendering/samplers/src/server.rs | 1 - guest/rust/examples/rendering/sun/src/server.rs | 2 +- guest/rust/examples/rendering/transparency/src/client.rs | 1 - guest/rust/packages/games/tictactoe/src/server.rs | 1 - guest/rust/packages/std/orbit_camera/ambient.toml | 2 +- guest/rust/packages/std/orbit_camera/src/client.rs | 1 + 18 files changed, 10 insertions(+), 19 deletions(-) diff --git a/guest/rust/examples/assets/basic_model/src/server.rs b/guest/rust/examples/assets/basic_model/src/server.rs index e29914b05d..736610484b 100644 --- a/guest/rust/examples/assets/basic_model/src/server.rs +++ b/guest/rust/examples/assets/basic_model/src/server.rs @@ -10,7 +10,6 @@ pub async fn main() { // Camera OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: default(), } .spawn(); diff --git a/guest/rust/examples/assets/generate_pipeline/src/server.rs b/guest/rust/examples/assets/generate_pipeline/src/server.rs index 80803dea1b..424144027c 100644 --- a/guest/rust/examples/assets/generate_pipeline/src/server.rs +++ b/guest/rust/examples/assets/generate_pipeline/src/server.rs @@ -9,7 +9,6 @@ pub async fn main() { // Camera OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: default(), } .spawn(); diff --git a/guest/rust/examples/assets/material_overriding/src/server.rs b/guest/rust/examples/assets/material_overriding/src/server.rs index 552cfacb6d..e4a1a14c65 100644 --- a/guest/rust/examples/assets/material_overriding/src/server.rs +++ b/guest/rust/examples/assets/material_overriding/src/server.rs @@ -18,7 +18,6 @@ use packages::{ pub async fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: OrbitCameraOptional { camera_distance: Some(2.0), ..default() diff --git a/guest/rust/examples/assets/unity/src/server.rs b/guest/rust/examples/assets/unity/src/server.rs index 727b1ebfa5..cf02a3fd11 100644 --- a/guest/rust/examples/assets/unity/src/server.rs +++ b/guest/rust/examples/assets/unity/src/server.rs @@ -17,8 +17,8 @@ use packages::{ pub fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::Z * 1.5, optional: OrbitCameraOptional { + lookat_target: Some(Vec3::Z * 1.5), camera_distance: Some(10.0), ..default() }, diff --git a/guest/rust/examples/basics/physics/src/server.rs b/guest/rust/examples/basics/physics/src/server.rs index 9dc0c2fa54..e0b89fa6a1 100644 --- a/guest/rust/examples/basics/physics/src/server.rs +++ b/guest/rust/examples/basics/physics/src/server.rs @@ -22,7 +22,6 @@ use packages::{ pub async fn main() { let camera = OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: OrbitCameraOptional { camera_distance: Some(7.5), camera_angle: Some(vec2(45f32.to_radians(), 45f32.to_radians())), diff --git a/guest/rust/examples/basics/primitives/src/server.rs b/guest/rust/examples/basics/primitives/src/server.rs index aebbbcbb79..68ee7cdd05 100644 --- a/guest/rust/examples/basics/primitives/src/server.rs +++ b/guest/rust/examples/basics/primitives/src/server.rs @@ -15,7 +15,6 @@ use packages::orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}; pub fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: vec3(0., 0., 0.), optional: OrbitCameraOptional { camera_distance: Some(10.), ..default() diff --git a/guest/rust/examples/basics/skinmesh/src/client.rs b/guest/rust/examples/basics/skinmesh/src/client.rs index 5c58dc2c26..878171e2a0 100644 --- a/guest/rust/examples/basics/skinmesh/src/client.rs +++ b/guest/rust/examples/basics/skinmesh/src/client.rs @@ -23,8 +23,8 @@ use packages::{ pub async fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: vec3(0., 0., 1.), optional: OrbitCameraOptional { + lookat_target: Some(vec3(0., 0., 1.)), camera_angle: Some(vec2(-180f32.to_radians(), 45f32.to_radians())), camera_distance: Some(3.0), ..default() diff --git a/guest/rust/examples/intermediate/clientside/src/client.rs b/guest/rust/examples/intermediate/clientside/src/client.rs index 7a3b7ad585..203985554c 100644 --- a/guest/rust/examples/intermediate/clientside/src/client.rs +++ b/guest/rust/examples/intermediate/clientside/src/client.rs @@ -20,7 +20,6 @@ pub async fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: OrbitCameraOptional { camera_distance: Some(20.0), ..default() diff --git a/guest/rust/examples/intermediate/dependencies/src/server.rs b/guest/rust/examples/intermediate/dependencies/src/server.rs index 58091f8645..273a1e61c3 100644 --- a/guest/rust/examples/intermediate/dependencies/src/server.rs +++ b/guest/rust/examples/intermediate/dependencies/src/server.rs @@ -12,7 +12,6 @@ use packages::{ pub async fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: default(), } .spawn(); diff --git a/guest/rust/examples/intermediate/screen_ray/src/client.rs b/guest/rust/examples/intermediate/screen_ray/src/client.rs index 1d1d244b94..4f1787f0d3 100644 --- a/guest/rust/examples/intermediate/screen_ray/src/client.rs +++ b/guest/rust/examples/intermediate/screen_ray/src/client.rs @@ -12,7 +12,6 @@ use packages::{ pub fn main() { let camera = OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: default(), } .spawn(); diff --git a/guest/rust/examples/rendering/decals/src/server.rs b/guest/rust/examples/rendering/decals/src/server.rs index 6dc4a3dfa8..098e4aed18 100644 --- a/guest/rust/examples/rendering/decals/src/server.rs +++ b/guest/rust/examples/rendering/decals/src/server.rs @@ -15,7 +15,6 @@ pub fn main() { // Camera. OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: default(), } .spawn(); diff --git a/guest/rust/examples/rendering/fog/src/client.rs b/guest/rust/examples/rendering/fog/src/client.rs index abece6d79c..85373ec276 100644 --- a/guest/rust/examples/rendering/fog/src/client.rs +++ b/guest/rust/examples/rendering/fog/src/client.rs @@ -11,14 +11,16 @@ use ambient_api::{ }, prelude::*, }; -use packages::orbit_camera::concepts::OrbitCamera; +use packages::orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}; #[main] fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: vec3(0., 0., 2.), - optional: default(), + optional: OrbitCameraOptional { + lookat_target: Some(vec3(0., 0., 2.)), + ..default() + }, } .make() .with(fog(), ()) diff --git a/guest/rust/examples/rendering/samplers/src/server.rs b/guest/rust/examples/rendering/samplers/src/server.rs index 346a475310..fbc52fa747 100644 --- a/guest/rust/examples/rendering/samplers/src/server.rs +++ b/guest/rust/examples/rendering/samplers/src/server.rs @@ -8,7 +8,6 @@ use packages::{orbit_camera::concepts::OrbitCamera, this::assets}; pub fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: default(), } .spawn(); diff --git a/guest/rust/examples/rendering/sun/src/server.rs b/guest/rust/examples/rendering/sun/src/server.rs index 38d38c235c..b33fe36495 100644 --- a/guest/rust/examples/rendering/sun/src/server.rs +++ b/guest/rust/examples/rendering/sun/src/server.rs @@ -16,8 +16,8 @@ use packages::orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}; pub fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::Z, optional: OrbitCameraOptional { + lookat_target: Some(Vec3::Z), camera_angle: Some(vec2(FRAC_PI_2, 20f32.to_radians())), camera_distance: None, }, diff --git a/guest/rust/examples/rendering/transparency/src/client.rs b/guest/rust/examples/rendering/transparency/src/client.rs index ccc80240c3..fee2a15a4d 100644 --- a/guest/rust/examples/rendering/transparency/src/client.rs +++ b/guest/rust/examples/rendering/transparency/src/client.rs @@ -13,7 +13,6 @@ fn main() { // Camera OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: default(), } .spawn(); diff --git a/guest/rust/packages/games/tictactoe/src/server.rs b/guest/rust/packages/games/tictactoe/src/server.rs index 87fa7252b8..eb3b15f670 100644 --- a/guest/rust/packages/games/tictactoe/src/server.rs +++ b/guest/rust/packages/games/tictactoe/src/server.rs @@ -28,7 +28,6 @@ pub fn main() { OrbitCamera { is_orbit_camera: (), - lookat_target: Vec3::ZERO, optional: OrbitCameraOptional { camera_distance: Some(SIZE_F32), camera_angle: Some(vec2(PI, 60f32.to_radians())), diff --git a/guest/rust/packages/std/orbit_camera/ambient.toml b/guest/rust/packages/std/orbit_camera/ambient.toml index d6d2894fa4..8cf12f5457 100644 --- a/guest/rust/packages/std/orbit_camera/ambient.toml +++ b/guest/rust/packages/std/orbit_camera/ambient.toml @@ -21,7 +21,7 @@ name = "Orbit Camera" description = "An orbit camera." [concepts.OrbitCamera.components.required] is_orbit_camera = {} -"ambient_core::transform::lookat_target" = {} [concepts.OrbitCamera.components.optional] camera_angle = {} camera_distance = {} +"ambient_core::transform::lookat_target" = {} diff --git a/guest/rust/packages/std/orbit_camera/src/client.rs b/guest/rust/packages/std/orbit_camera/src/client.rs index 239443e76e..1a76594889 100644 --- a/guest/rust/packages/std/orbit_camera/src/client.rs +++ b/guest/rust/packages/std/orbit_camera/src/client.rs @@ -39,6 +39,7 @@ pub fn main() { vec2(0.0, 45f32.to_radians()), ); entity::add_component_if_required(camera_id, camera_distance(), 5.0); + entity::add_component_if_required(camera_id, lookat_target(), Vec3::ZERO); } }); From 03b1d34dc346156b67d0cbe3f949977a3d942ba4 Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 14:59:07 +0200 Subject: [PATCH 30/35] feat(camera): add user_id to concept optional --- guest/rust/api_core/src/internal/generated.rs | 49 ++++++++++++++++--- .../packages/games/minigolf/src/server.rs | 2 +- .../rust/packages/tools/editor/src/server.rs | 2 +- schema/schema/camera.toml | 1 + 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 498413f92a..a55f45108c 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -528,6 +528,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::player::user_id`\n\n**Description**: If set, this camera will only be used for the specified user.\n\n**Component description**: An identifier attached to all things owned by a user, and supplied by the user.\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body.\n\n"] + pub user_id: Option, } impl crate::ecs::Concept for Camera { fn make(self) -> Entity { @@ -577,6 +579,9 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(user_id) = self.optional.user_id { + entity.set(crate::ambient_core::player::components::user_id(), user_id); + } entity } fn get_spawned(id: EntityId) -> Option { @@ -626,6 +631,10 @@ mod raw { id, crate::ambient_core::app::components::ui_scene(), ), + user_id: entity::get_component( + id, + crate::ambient_core::player::components::user_id(), + ), }, }) } @@ -654,6 +663,8 @@ mod raw { .get(crate::ambient_core::app::components::main_scene()), ui_scene: entity .get(crate::ambient_core::app::components::ui_scene()), + user_id: entity + .get(crate::ambient_core::player::components::user_id()), }, }) } @@ -716,6 +727,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::player::user_id`\n\n**Description**: If set, this camera will only be used for the specified user.\n\n**Component description**: An identifier attached to all things owned by a user, and supplied by the user.\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body.\n\n"] + pub user_id: Option, #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] pub aspect_ratio_from_window: Option, } @@ -772,6 +785,9 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(user_id) = self.optional.user_id { + entity.set(crate::ambient_core::player::components::user_id(), user_id); + } if let Some(aspect_ratio_from_window) = self.optional.aspect_ratio_from_window { @@ -783,10 +799,10 @@ mod raw { entity } fn get_spawned(id: EntityId) -> Option { - Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , optional : PerspectiveCommonCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , optional : PerspectiveCommonCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , user_id : entity :: get_component (id , crate :: ambient_core :: player :: components :: user_id ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , optional : PerspectiveCommonCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , optional : PerspectiveCommonCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , user_id : entity . get (crate :: ambient_core :: player :: components :: user_id ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity::has_components( @@ -855,6 +871,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::player::user_id`\n\n**Description**: If set, this camera will only be used for the specified user.\n\n**Component description**: An identifier attached to all things owned by a user, and supplied by the user.\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body.\n\n"] + pub user_id: Option, #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] pub aspect_ratio_from_window: Option, } @@ -916,6 +934,9 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(user_id) = self.optional.user_id { + entity.set(crate::ambient_core::player::components::user_id(), user_id); + } if let Some(aspect_ratio_from_window) = self.optional.aspect_ratio_from_window { @@ -927,10 +948,10 @@ mod raw { entity } fn get_spawned(id: EntityId) -> Option { - Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective ()) ? , far : entity :: get_component (id , crate :: ambient_core :: camera :: components :: far ()) ? , optional : PerspectiveCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective ()) ? , far : entity :: get_component (id , crate :: ambient_core :: camera :: components :: far ()) ? , optional : PerspectiveCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , user_id : entity :: get_component (id , crate :: ambient_core :: player :: components :: user_id ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective : entity . get (crate :: ambient_core :: camera :: components :: perspective ()) ? , far : entity . get (crate :: ambient_core :: camera :: components :: far ()) ? , optional : PerspectiveCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective : entity . get (crate :: ambient_core :: camera :: components :: perspective ()) ? , far : entity . get (crate :: ambient_core :: camera :: components :: far ()) ? , optional : PerspectiveCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , user_id : entity . get (crate :: ambient_core :: player :: components :: user_id ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity::has_components( @@ -1001,6 +1022,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::player::user_id`\n\n**Description**: If set, this camera will only be used for the specified user.\n\n**Component description**: An identifier attached to all things owned by a user, and supplied by the user.\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body.\n\n"] + pub user_id: Option, #[doc = "**Component**: `ambient_core::camera::aspect_ratio_from_window`\n\n**Component description**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n"] pub aspect_ratio_from_window: Option, } @@ -1031,6 +1054,9 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(user_id) = self.optional.user_id { + entity.set(crate::ambient_core::player::components::user_id(), user_id); + } if let Some(aspect_ratio_from_window) = self.optional.aspect_ratio_from_window { @@ -1042,10 +1068,10 @@ mod raw { entity } fn get_spawned(id: EntityId) -> Option { - Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some (Self { local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity :: get_component (id , crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity :: get_component (id , crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity :: get_component (id , crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity :: get_component (id , crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity :: get_component (id , crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity :: get_component (id , crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity :: get_component (id , crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity :: get_component (id , crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity :: get_component (id , crate :: ambient_core :: app :: components :: ui_scene ()) , user_id : entity :: get_component (id , crate :: ambient_core :: player :: components :: user_id ()) , aspect_ratio_from_window : entity :: get_component (id , crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn get_unspawned(entity: &Entity) -> Option { - Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity . get (crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) + Some (Self { local_to_world : entity . get (crate :: ambient_core :: transform :: components :: local_to_world ()) ? , near : entity . get (crate :: ambient_core :: camera :: components :: near ()) ? , projection : entity . get (crate :: ambient_core :: camera :: components :: projection ()) ? , projection_view : entity . get (crate :: ambient_core :: camera :: components :: projection_view ()) ? , active_camera : entity . get (crate :: ambient_core :: camera :: components :: active_camera ()) ? , inv_local_to_world : entity . get (crate :: ambient_core :: transform :: components :: inv_local_to_world ()) ? , fovy : entity . get (crate :: ambient_core :: camera :: components :: fovy ()) ? , aspect_ratio : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio ()) ? , perspective_infinite_reverse : entity . get (crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()) ? , optional : PerspectiveInfiniteReverseCameraOptional { translation : entity . get (crate :: ambient_core :: transform :: components :: translation ()) , rotation : entity . get (crate :: ambient_core :: transform :: components :: rotation ()) , scale : entity . get (crate :: ambient_core :: transform :: components :: scale ()) , main_scene : entity . get (crate :: ambient_core :: app :: components :: main_scene ()) , ui_scene : entity . get (crate :: ambient_core :: app :: components :: ui_scene ()) , user_id : entity . get (crate :: ambient_core :: player :: components :: user_id ()) , aspect_ratio_from_window : entity . get (crate :: ambient_core :: camera :: components :: aspect_ratio_from_window ()) , } }) } fn contained_by_spawned(id: EntityId) -> bool { entity :: has_components (id , & [& crate :: ambient_core :: transform :: components :: local_to_world () , & crate :: ambient_core :: camera :: components :: near () , & crate :: ambient_core :: camera :: components :: projection () , & crate :: ambient_core :: camera :: components :: projection_view () , & crate :: ambient_core :: camera :: components :: active_camera () , & crate :: ambient_core :: transform :: components :: inv_local_to_world () , & crate :: ambient_core :: camera :: components :: fovy () , & crate :: ambient_core :: camera :: components :: aspect_ratio () , & crate :: ambient_core :: camera :: components :: perspective_infinite_reverse ()]) @@ -1108,6 +1134,8 @@ mod raw { pub main_scene: Option<()>, #[doc = "**Component**: `ambient_core::app::ui_scene`\n\n**Description**: Either the main or UI scene must be specified for this camera to be used.\n\n**Component description**: If attached, this entity belongs to the UI scene.\n\n"] pub ui_scene: Option<()>, + #[doc = "**Component**: `ambient_core::player::user_id`\n\n**Description**: If set, this camera will only be used for the specified user.\n\n**Component description**: An identifier attached to all things owned by a user, and supplied by the user.\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body.\n\n"] + pub user_id: Option, } impl crate::ecs::Concept for OrthographicCamera { fn make(self) -> Entity { @@ -1178,6 +1206,9 @@ mod raw { if let Some(ui_scene) = self.optional.ui_scene { entity.set(crate::ambient_core::app::components::ui_scene(), ui_scene); } + if let Some(user_id) = self.optional.user_id { + entity.set(crate::ambient_core::player::components::user_id(), user_id); + } entity } fn get_spawned(id: EntityId) -> Option { @@ -1251,6 +1282,10 @@ mod raw { id, crate::ambient_core::app::components::ui_scene(), ), + user_id: entity::get_component( + id, + crate::ambient_core::player::components::user_id(), + ), }, }) } @@ -1292,6 +1327,8 @@ mod raw { .get(crate::ambient_core::app::components::main_scene()), ui_scene: entity .get(crate::ambient_core::app::components::ui_scene()), + user_id: entity + .get(crate::ambient_core::player::components::user_id()), }, }) } diff --git a/guest/rust/packages/games/minigolf/src/server.rs b/guest/rust/packages/games/minigolf/src/server.rs index 9e9f52e886..ec73dd5b0d 100644 --- a/guest/rust/packages/games/minigolf/src/server.rs +++ b/guest/rust/packages/games/minigolf/src/server.rs @@ -164,11 +164,11 @@ pub fn main() { rotation: Some(Quat::IDENTITY), main_scene: Some(()), aspect_ratio_from_window: Some(entity::resources()), + user_id: Some(player_user_id.clone()), ..default() }, } .make() - .with(user_id(), player_user_id.clone()) .with(player_camera_state(), camera_state) .spawn(); diff --git a/guest/rust/packages/tools/editor/src/server.rs b/guest/rust/packages/tools/editor/src/server.rs index 6068350e83..2eaf548c2a 100644 --- a/guest/rust/packages/tools/editor/src/server.rs +++ b/guest/rust/packages/tools/editor/src/server.rs @@ -74,11 +74,11 @@ pub fn main() { rotation: Some(default()), main_scene: Some(()), aspect_ratio_from_window: Some(entity::resources()), + user_id: Some(player_user_id), ..default() }, } .make() - .with(user_id(), player_user_id) .with(camera_angle(), new_camera_angle) .with(name(), "Editor Camera".to_string()) .spawn(); diff --git a/schema/schema/camera.toml b/schema/schema/camera.toml index cfae5bb4e7..44a8987fee 100644 --- a/schema/schema/camera.toml +++ b/schema/schema/camera.toml @@ -143,6 +143,7 @@ active_camera = { suggested = 0.0 } [concepts.Camera.components.optional] "app::main_scene" = { description = "Either the main or UI scene must be specified for this camera to be used." } "app::ui_scene" = { description = "Either the main or UI scene must be specified for this camera to be used." } +"player::user_id" = { description = "If set, this camera will only be used for the specified user." } [concepts.PerspectiveCommonCamera] name = "Perspective Common Camera" From 9f22b4bded603230d2c7d67ea8ef8100953f9c24 Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 15:07:28 +0200 Subject: [PATCH 31/35] chore: fix some warnings --- crates/ecs/src/generated.rs | 42 +- guest/rust/api_core/src/internal/generated.rs | 42 +- .../examples/basics/skinmesh/src/client.rs | 1 - .../package_macro_common/src/concepts.rs | 520 +++++++++--------- shared_crates/package_macro_common/src/lib.rs | 2 +- 5 files changed, 301 insertions(+), 306 deletions(-) diff --git a/crates/ecs/src/generated.rs b/crates/ecs/src/generated.rs index dde3d96731..ffd886efa2 100644 --- a/crates/ecs/src/generated.rs +++ b/crates/ecs/src/generated.rs @@ -27,7 +27,7 @@ pub use raw::ambient_core::*; mod raw { pub mod ambient_core { - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod animation { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -44,7 +44,7 @@ mod raw { components ! ("animation" , { # [doc = "**Is animation player**: This entity is treated as an animation player. Attach an animation node as a child for it to play.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is animation player"] , Description ["This entity is treated as an animation player. Attach an animation node as a child for it to play."]] is_animation_player : () , # [doc = "**Animation errors**: A list of errors that were produced trying to play the animation.\n\n*Attributes*: Debuggable"] @ [Debuggable , Name ["Animation errors"] , Description ["A list of errors that were produced trying to play the animation."]] animation_errors : Vec :: < String > , # [doc = "**Apply animation player**: Apply the designated animation player to this entity and its sub-tree.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Apply animation player"] , Description ["Apply the designated animation player to this entity and its sub-tree."]] apply_animation_player : EntityId , # [doc = "**Play clip from URL**: Make this entity a 'play animation clip' node. The value is the URL to the clip we'd like to play.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Play clip from URL"] , Description ["Make this entity a 'play animation clip' node. The value is the URL to the clip we'd like to play."]] play_clip_from_url : String , # [doc = "**Looping**: When this is true, the animation clip will repeat infinitely.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Looping"] , Description ["When this is true, the animation clip will repeat infinitely."]] looping : bool , # [doc = "**Speed**: Animation playback speed. Default is 1, higher values speeds up the animation.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Speed"] , Description ["Animation playback speed. Default is 1, higher values speeds up the animation."]] speed : f32 , # [doc = "**Start time**: Start time of an animation node.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Start time"] , Description ["Start time of an animation node."]] start_time : Duration , # [doc = "**Freeze at percentage**: Sample the input animation at a certain percentage of the animation track length.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Freeze at percentage"] , Description ["Sample the input animation at a certain percentage of the animation track length."]] freeze_at_percentage : f32 , # [doc = "**Freeze at time**: Sample the input animation at a certain time (in seconds).\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Freeze at time"] , Description ["Sample the input animation at a certain time (in seconds)."]] freeze_at_time : f32 , # [doc = "**Clip duration**: The clip duration is loaded from the clip, and then applied to the entity.\n\n*Attributes*: Debuggable"] @ [Debuggable , Name ["Clip duration"] , Description ["The clip duration is loaded from the clip, and then applied to the entity."]] clip_duration : f32 , # [doc = "**Clip loaded**: The clip has been loaded.\n\n*Attributes*: Debuggable"] @ [Debuggable , Name ["Clip loaded"] , Description ["The clip has been loaded."]] clip_loaded : () , # [doc = "**Blend**: Blend two animations together. The values is the blend weight. Use `children` to set the animations. Blend 0 means we only sample from the first animation, 1 means only the second one, and values in between blend between them.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Blend"] , Description ["Blend two animations together. The values is the blend weight. Use `children` to set the animations. Blend 0 means we only sample from the first animation, 1 means only the second one, and values in between blend between them."]] blend : f32 , # [doc = "**Mask bind ids**: List of bind ids that will be masked.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Mask bind ids"] , Description ["List of bind ids that will be masked."]] mask_bind_ids : Vec :: < String > , # [doc = "**Mask weights**: Weights for each bind id in `mask_bind_ids`.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Mask weights"] , Description ["Weights for each bind id in `mask_bind_ids`."]] mask_weights : Vec :: < f32 > , # [doc = "**Retarget Model from URL**: Retarget the animation using the model at the given URL.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Retarget Model from URL"] , Description ["Retarget the animation using the model at the given URL."]] retarget_model_from_url : String , # [doc = "**Retarget animation scaled**: Retarget animation scaled. True means normalize hip.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Retarget animation scaled"] , Description ["Retarget animation scaled. True means normalize hip."]] retarget_animation_scaled : bool , # [doc = "**Apply base pose**: Apply the base pose to this clip.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Apply base pose"] , Description ["Apply the base pose to this clip."]] apply_base_pose : () , # [doc = "**Bind id**: Animation bind ID.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Bind id"] , Description ["Animation bind ID."]] bind_id : String , # [doc = "**Bind ids**: Animation bind IDs.\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Bind ids"] , Description ["Animation bind IDs."]] bind_ids : Vec :: < String > , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod app { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -61,7 +61,7 @@ mod raw { components ! ("app" , { # [doc = "**Cursor position**: Absolute mouse cursor position in screen-space. This is the *logical* position. Multiply by the `window_scale_factor` to get the physical position.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Cursor position"] , Description ["Absolute mouse cursor position in screen-space. This is the *logical* position. Multiply by the `window_scale_factor` to get the physical position."]] cursor_position : Vec2 , # [doc = "**Delta time**: How long the previous tick took in seconds.\n\n*Attributes*: Debuggable, Resource"] @ [Debuggable , Resource , Name ["Delta time"] , Description ["How long the previous tick took in seconds."]] delta_time : f32 , # [doc = "**Epoch time**: Time since epoch (Jan 1, 1970). Non_monotonic.\n\n*Attributes*: Debuggable, Resource"] @ [Debuggable , Resource , Name ["Epoch time"] , Description ["Time since epoch (Jan 1, 1970). Non_monotonic."]] epoch_time : Duration , # [doc = "**Game time**: Time since the game was started. Monotonic.\n\n*Attributes*: Debuggable, Resource"] @ [Debuggable , Resource , Name ["Game time"] , Description ["Time since the game was started. Monotonic."]] game_time : Duration , # [doc = "**Element**: The identifier of the `Element` that controls this entity.\n\nThis is automatically generated by `ElementTree`.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Element"] , Description ["The identifier of the `Element` that controls this entity.\nThis is automatically generated by `ElementTree`."]] element : String , # [doc = "**Element unmanaged children**: If this is set, the user is expected to manage the children of the `Element` themselves.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Element unmanaged children"] , Description ["If this is set, the user is expected to manage the children of the `Element` themselves."]] element_unmanaged_children : () , # [doc = "**Main scene**: If attached, this entity belongs to the main scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Main scene"] , Description ["If attached, this entity belongs to the main scene."]] main_scene : () , # [doc = "**Map seed**: A random number seed for this map.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Map seed"] , Description ["A random number seed for this map."]] map_seed : u64 , # [doc = "**Name**: A human-friendly name for this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Name"] , Description ["A human-friendly name for this entity."]] name : String , # [doc = "**Description**: A human-friendly description for this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Description"] , Description ["A human-friendly description for this entity."]] description : String , # [doc = "**Main Package Name**: The name of the main package being run.\n\nDefaults to \"Ambient\".\n\n*Attributes*: Debuggable, Resource"] @ [Debuggable , Resource , Name ["Main Package Name"] , Description ["The name of the main package being run.\nDefaults to \"Ambient\"."]] main_package_name : String , # [doc = "**Selectable**: If attached, this object can be selected in the editor.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Selectable"] , Description ["If attached, this object can be selected in the editor."]] selectable : () , # [doc = "**Snap to ground**: This object should automatically be moved with the terrain if the terrain is changed.\n\nThe value is the offset from the terrain.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Snap to ground"] , Description ["This object should automatically be moved with the terrain if the terrain is changed.\nThe value is the offset from the terrain."]] snap_to_ground : f32 , # [doc = "**Tags**: Tags for categorizing this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Tags"] , Description ["Tags for categorizing this entity."]] tags : Vec :: < String > , # [doc = "**UI scene**: If attached, this entity belongs to the UI scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["UI scene"] , Description ["If attached, this entity belongs to the UI scene."]] ui_scene : () , # [doc = "**Window logical size**: The logical size is the physical size divided by the scale factor.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Window logical size"] , Description ["The logical size is the physical size divided by the scale factor."]] window_logical_size : UVec2 , # [doc = "**Window physical size**: The physical size is the actual number of pixels on the screen.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Window physical size"] , Description ["The physical size is the actual number of pixels on the screen."]] window_physical_size : UVec2 , # [doc = "**Window scale factor**: The DPI/pixel scale factor of the window.\n\nOn standard displays, this is 1, but it can be higher on high-DPI displays like Apple Retina displays.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Window scale factor"] , Description ["The DPI/pixel scale factor of the window.\nOn standard displays, this is 1, but it can be higher on high-DPI displays like Apple Retina displays."]] window_scale_factor : f64 , # [doc = "**Reference count**: Ref-counted enity. If this entity doesn't have a `parent` component, and the ref count reaches 0, it will be removed together with all its children recursively.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Reference count"] , Description ["Ref-counted enity. If this entity doesn't have a `parent` component, and the ref count reaches 0, it will be removed together with all its children recursively."]] ref_count : u32 , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod audio { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -78,7 +78,7 @@ mod raw { components ! ("audio" , { # [doc = "**Is audio player**: The entity is an audio player.\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Is audio player"] , Description ["The entity is an audio player."]] is_audio_player : () , # [doc = "**Is spatial audio player**: The entity is a spatial audio player.\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Is spatial audio player"] , Description ["The entity is a spatial audio player."]] is_spatial_audio_player : () , # [doc = "**Spatial audio emitter**: The entity is a spatial audio emitter.\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Spatial audio emitter"] , Description ["The entity is a spatial audio emitter."]] spatial_audio_emitter : EntityId , # [doc = "**Spatial audio listener**: The entity is a spatial audio listener.\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Spatial audio listener"] , Description ["The entity is a spatial audio listener."]] spatial_audio_listener : EntityId , # [doc = "**Looping**: Whether or not the audio should loop.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Looping"] , Description ["Whether or not the audio should loop.\n"]] looping : bool , # [doc = "**One pole low pass filter**: With this component, the audio will be filtered with a one pole low pass filter.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["One pole low pass filter"] , Description ["With this component, the audio will be filtered with a one pole low pass filter.\n"]] onepole_lpf : f32 , # [doc = "**Playing sound**: The entity with this comp is a playing sound.\n\nWe can attach other components to it to control the sound parameters.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Playing sound"] , Description ["The entity with this comp is a playing sound.\nWe can attach other components to it to control the sound parameters.\n"]] playing_sound : () , # [doc = "**Amplitude**: The amplitude of the audio.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Amplitude"] , Description ["The amplitude of the audio.\n"]] amplitude : f32 , # [doc = "**Panning**: The panning of the audio.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Panning"] , Description ["The panning of the audio.\n"]] panning : f32 , # [doc = "**Low_pass filter**: Low pass filter. The first value is the cutoff frequency, the second is the bandwidth.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Low_pass filter"] , Description ["Low pass filter. The first value is the cutoff frequency, the second is the bandwidth.\n"]] lpf : Vec2 , # [doc = "**High_pass filter**: High pass filter. The first value is the cutoff frequency, the second is the bandwidth.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["High_pass filter"] , Description ["High pass filter. The first value is the cutoff frequency, the second is the bandwidth.\n"]] hpf : Vec2 , # [doc = "**Audio URL**: The URL of the assets.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Audio URL"] , Description ["The URL of the assets.\n"]] audio_url : String , # [doc = "**Trigger at this frame**: The system will watch for this component and PLAY the audio at this frame,\n\nusing the other components as parameters.\n\nThen set it back to false.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Trigger at this frame"] , Description ["The system will watch for this component and PLAY the audio at this frame,\nusing the other components as parameters.\nThen set it back to false.\n"]] play_now : () , # [doc = "**Stop at this frame**: The system will watch for this component and STOP the audio at this frame,\n\nusing the other components as parameters.\n\nThen set it back to false.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Stop at this frame"] , Description ["The system will watch for this component and STOP the audio at this frame,\nusing the other components as parameters.\nThen set it back to false.\n"]] stop_now : () , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod camera { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -95,7 +95,7 @@ mod raw { components ! ("camera" , { # [doc = "**Active camera**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\n\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Active camera"] , Description ["The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough)."]] active_camera : f32 , # [doc = "**Aspect ratio**: The aspect ratio of this camera.\n\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Aspect ratio"] , Description ["The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window."]] aspect_ratio : f32 , # [doc = "**Aspect ratio from window**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Aspect ratio from window"] , Description ["If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component."]] aspect_ratio_from_window : EntityId , # [doc = "**Far plane**: The far plane of this camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Far plane"] , Description ["The far plane of this camera, measured in meters."]] far : f32 , # [doc = "**Fog**: If attached, this camera will see/render fog.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog"] , Description ["If attached, this camera will see/render fog."]] fog : () , # [doc = "**Field of View Y**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Field of View Y"] , Description ["The field of view of this camera in the Y/vertical direction, measured in radians."]] fovy : f32 , # [doc = "**Near plane**: The near plane of this camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Near plane"] , Description ["The near plane of this camera, measured in meters."]] near : f32 , # [doc = "**Orthographic projection**: If attached, this camera will use a standard orthographic projection matrix.\n\nEnsure that the `orthographic_` components are set, including `left`, right`, `top` and `bottom`, as well as `near` and `far`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic projection"] , Description ["If attached, this camera will use a standard orthographic projection matrix.\nEnsure that the `orthographic_` components are set, including `left`, right`, `top` and `bottom`, as well as `near` and `far`."]] orthographic : () , # [doc = "**Orthographic bottom**: The bottom bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic bottom"] , Description ["The bottom bound for this `orthographic` camera."]] orthographic_bottom : f32 , # [doc = "**Orthographic from window**: The bounds of this orthographic camera will be updated to match the window automatically. Should point to an entity with a `window_logical_size` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic from window"] , Description ["The bounds of this orthographic camera will be updated to match the window automatically. Should point to an entity with a `window_logical_size` component."]] orthographic_from_window : EntityId , # [doc = "**Orthographic left**: The left bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic left"] , Description ["The left bound for this `orthographic` camera."]] orthographic_left : f32 , # [doc = "**Orthographic right**: The right bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic right"] , Description ["The right bound for this `orthographic` camera."]] orthographic_right : f32 , # [doc = "**Orthographic top**: The top bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic top"] , Description ["The top bound for this `orthographic` camera."]] orthographic_top : f32 , # [doc = "**Perspective projection**: If attached, this camera will use a standard perspective projection matrix.\n\nEnsure that `near` and `far` are set.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Perspective projection"] , Description ["If attached, this camera will use a standard perspective projection matrix.\nEnsure that `near` and `far` are set."]] perspective : () , # [doc = "**Perspective-infinite-reverse projection**: If attached, this camera will use a perspective-infinite-reverse projection matrix.\n\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Perspective-infinite-reverse projection"] , Description ["If attached, this camera will use a perspective-infinite-reverse projection matrix.\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set."]] perspective_infinite_reverse : () , # [doc = "**Projection**: The projection matrix of this camera.\n\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Projection"] , Description ["The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`."]] projection : Mat4 , # [doc = "**Projection-view**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Projection-view"] , Description ["The composition of the projection and view (inverse-local-to-world) matrices."]] projection_view : Mat4 , # [doc = "**Shadows far plane**: The far plane for the shadow camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Shadows far plane"] , Description ["The far plane for the shadow camera, measured in meters."]] shadows_far : f32 , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod ecs { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -112,7 +112,7 @@ mod raw { components ! ("ecs" , { # [doc = "**Children**: The children of this entity.\n\n*Attributes*: Debuggable, Networked, Store, MaybeResource"] @ [Debuggable , Networked , Store , MaybeResource , Name ["Children"] , Description ["The children of this entity."]] children : Vec :: < EntityId > , # [doc = "**Don't automatically despawn on module unload**: Indicates that this entity shouldn't be despawned when the module that spawned it unloads.\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Don't automatically despawn on module unload"] , Description ["Indicates that this entity shouldn't be despawned when the module that spawned it unloads."]] dont_despawn_on_unload : () , # [doc = "**Don't store**: Indicates that this entity shouldn't be stored on disk.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Don't store"] , Description ["Indicates that this entity shouldn't be stored on disk."]] dont_store : () , # [doc = "**ID**: The ID of the entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["ID"] , Description ["The ID of the entity."]] id : EntityId , # [doc = "**Parent**: The parent of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Parent"] , Description ["The parent of this entity."]] parent : EntityId , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod input { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -179,7 +179,7 @@ mod raw { impl ModuleMessage for MouseOverChanged {} } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod layout { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -493,7 +493,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod model { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -510,7 +510,7 @@ mod raw { components ! ("model" , { # [doc = "**Model animatable**: Controls whether this model can be animated.\n\n*Attributes*: MaybeResource, Debuggable, Networked, Store"] @ [MaybeResource , Debuggable , Networked , Store , Name ["Model animatable"] , Description ["Controls whether this model can be animated."]] model_animatable : bool , # [doc = "**Model from URL**: Load a model from the given URL or relative path.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Model from URL"] , Description ["Load a model from the given URL or relative path."]] model_from_url : String , # [doc = "**Model loaded**: If attached, this entity has a model attached to it.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Model loaded"] , Description ["If attached, this entity has a model attached to it."]] model_loaded : () , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod network { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -527,7 +527,7 @@ mod raw { components ! ("network" , { # [doc = "**Is remote entity**: If attached, this entity was not spawned locally (e.g. if this is the client, it was spawned by the server).\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is remote entity"] , Description ["If attached, this entity was not spawned locally (e.g. if this is the client, it was spawned by the server)."]] is_remote_entity : () , # [doc = "**Is persistent resources**: If attached, this entity contains global resources that are persisted to disk and synchronized to clients.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is persistent resources"] , Description ["If attached, this entity contains global resources that are persisted to disk and synchronized to clients."]] is_persistent_resources : () , # [doc = "**Is synchronized resources**: If attached, this entity contains global resources that are synchronized to clients, but not persisted.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is synchronized resources"] , Description ["If attached, this entity contains global resources that are synchronized to clients, but not persisted."]] is_synced_resources : () , # [doc = "**No sync**: If attached, this entity will not be synchronized to clients.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["No sync"] , Description ["If attached, this entity will not be synchronized to clients."]] no_sync : () , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod package { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -544,7 +544,7 @@ mod raw { components ! ("package" , { # [doc = "**Is Package**: Whether or not this entity is a package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is Package"] , Description ["Whether or not this entity is a package."]] is_package : () , # [doc = "**Enabled**: Whether or not this package is enabled.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Enabled"] , Description ["Whether or not this package is enabled."]] enabled : bool , # [doc = "**ID**: The ID of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["ID"] , Description ["The ID of the package."]] id : String , # [doc = "**Name**: The name of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Name"] , Description ["The name of the package."]] name : String , # [doc = "**Version**: The version of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Version"] , Description ["The version of the package."]] version : String , # [doc = "**Authors**: The authors of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Authors"] , Description ["The authors of the package."]] authors : Vec :: < String > , # [doc = "**Description**: The description of the package. If not attached, the package does not have a description.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Description"] , Description ["The description of the package. If not attached, the package does not have a description."]] description : String , # [doc = "**Repository**: The repository of the package. If not attached, the package does not have a repository.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Repository"] , Description ["The repository of the package. If not attached, the package does not have a repository."]] repository : String , # [doc = "**Asset URL**: The asset URL (i.e. where the built assets are) of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Asset URL"] , Description ["The asset URL (i.e. where the built assets are) of the package."]] asset_url : String , # [doc = "**Client Modules**: The clientside WASM modules spawned by this package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Client Modules"] , Description ["The clientside WASM modules spawned by this package."]] client_modules : Vec :: < EntityId > , # [doc = "**Server Modules**: The serverside WASM modules spawned by this package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Server Modules"] , Description ["The serverside WASM modules spawned by this package."]] server_modules : Vec :: < EntityId > , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod physics { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -561,7 +561,7 @@ mod raw { components ! ("physics" , { # [doc = "**Angular velocity**: Angular velocity (radians/second) of this entity in the physics scene.\n\nUpdating this component will update the entity's angular velocity in the physics scene.\n\n\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like improper physics or collisions failing.\n\n\n\nIf you need to adjust the velocity each frame, consider applying an impulse using `physics` functions instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Angular velocity"] , Description ["Angular velocity (radians/second) of this entity in the physics scene.\nUpdating this component will update the entity's angular velocity in the physics scene.\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like improper physics or collisions failing.\n\nIf you need to adjust the velocity each frame, consider applying an impulse using `physics` functions instead."]] angular_velocity : Vec3 , # [doc = "**Cube collider**: If attached, this entity will have a cube physics collider.\n\n`x, y, z` is the size of the cube.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cube collider"] , Description ["If attached, this entity will have a cube physics collider.\n`x, y, z` is the size of the cube."]] cube_collider : Vec3 , # [doc = "**Character controller height**: The height of the physics character controller attached to this entity.\n\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Character controller height"] , Description ["The height of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider."]] character_controller_height : f32 , # [doc = "**Character controller radius**: The radius of the physics character controller attached to this entity.\n\nIf an entity has both this and a `character_controller_height`, it will be given a physical character collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Character controller radius"] , Description ["The radius of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_height`, it will be given a physical character collider."]] character_controller_radius : f32 , # [doc = "**Collider from URL**: This entity will load its physics collider from the URL.\n\nThe value is the URL to load from.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Collider from URL"] , Description ["This entity will load its physics collider from the URL.\nThe value is the URL to load from."]] collider_from_url : String , # [doc = "**Collider loaded**: This component is automatically attached to an entity once the collider has been loaded (through e.g. `collider_from_url`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Collider loaded"] , Description ["This component is automatically attached to an entity once the collider has been loaded (through e.g. `collider_from_url`)."]] collider_loaded : () , # [doc = "**Collider loads**: Contains all colliders that were loaded in this physics tick.\n\n*Attributes*: Debuggable, Networked, Resource, Store"] @ [Debuggable , Networked , Resource , Store , Name ["Collider loads"] , Description ["Contains all colliders that were loaded in this physics tick."]] collider_loads : Vec :: < EntityId > , # [doc = "**Contact offset**: Contact offset (in meters) of this entity in the physics scene.\n\nUpdating this component will update the entity's contact offset for each attached shape in the physics scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Contact offset"] , Description ["Contact offset (in meters) of this entity in the physics scene.\nUpdating this component will update the entity's contact offset for each attached shape in the physics scene."]] contact_offset : f32 , # [doc = "**Density**: The density of this entity.\n\nThis is used to update the `mass` when the entity is rescaled.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 1.0"] @ [Debuggable , Networked , Store , Name ["Density"] , Description ["The density of this entity.\nThis is used to update the `mass` when the entity is rescaled."]] density : f32 , # [doc = "**Dynamic**: If this is true, the entity will be dynamic (i.e. be able to move). Otherwise, it will be static.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Dynamic"] , Description ["If this is true, the entity will be dynamic (i.e. be able to move). Otherwise, it will be static."]] dynamic : bool , # [doc = "**Kinematic**: If attached, and this entity is dynamic, this entity will also be kinematic (i.e. unable to be affected by other entities motion). Otherwise, it will receive forces normally.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Kinematic"] , Description ["If attached, and this entity is dynamic, this entity will also be kinematic (i.e. unable to be affected by other entities motion). Otherwise, it will receive forces normally."]] kinematic : () , # [doc = "**Linear velocity**: Linear velocity (meters/second) of this entity in the physics scene.\n\nUpdating this component will update the entity's linear velocity in the physics scene.\n\n\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like gravity not working or collisions failing.\n\n\n\nIf you need to adjust the velocity each frame, consider applying a force using `physics` functions instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Linear velocity"] , Description ["Linear velocity (meters/second) of this entity in the physics scene.\nUpdating this component will update the entity's linear velocity in the physics scene.\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like gravity not working or collisions failing.\n\nIf you need to adjust the velocity each frame, consider applying a force using `physics` functions instead."]] linear_velocity : Vec3 , # [doc = "**Make physics static**: All physics objects will be made static when loaded.\n\n*Attributes*: Debuggable, Networked, Resource, Store"] @ [Debuggable , Networked , Resource , Store , Name ["Make physics static"] , Description ["All physics objects will be made static when loaded."]] make_physics_static : bool , # [doc = "**Mass**: The mass of this entity, measured in kilograms.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 1.0"] @ [Debuggable , Networked , Store , Name ["Mass"] , Description ["The mass of this entity, measured in kilograms."]] mass : f32 , # [doc = "**Physics controlled**: If attached, this entity will be controlled by physics.\n\nNote that this requires the entity to have a collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Physics controlled"] , Description ["If attached, this entity will be controlled by physics.\nNote that this requires the entity to have a collider."]] physics_controlled : () , # [doc = "**Plane collider**: If attached, this entity will have a plane physics collider. A plane is an infinite, flat surface. If you need a bounded flat surface, consider using a cube collider instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Plane collider"] , Description ["If attached, this entity will have a plane physics collider. A plane is an infinite, flat surface. If you need a bounded flat surface, consider using a cube collider instead."]] plane_collider : () , # [doc = "**Rest offset**: Rest offset (in meters) of this entity in the physics scene.\n\nUpdating this component will update the entity's rest offset for each attached shape in the physics scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Rest offset"] , Description ["Rest offset (in meters) of this entity in the physics scene.\nUpdating this component will update the entity's rest offset for each attached shape in the physics scene."]] rest_offset : f32 , # [doc = "**Sphere collider**: If attached, this entity will have a sphere physics collider.\n\nThe value corresponds to the radius of the sphere.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sphere collider"] , Description ["If attached, this entity will have a sphere physics collider.\nThe value corresponds to the radius of the sphere."]] sphere_collider : f32 , # [doc = "**Unit mass**: The mass of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit mass"] , Description ["The mass of a character/unit."]] unit_mass : f32 , # [doc = "**Unit velocity**: The velocity of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit velocity"] , Description ["The velocity of a character/unit."]] unit_velocity : Vec3 , # [doc = "**Unit yaw**: The yaw of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit yaw"] , Description ["The yaw of a character/unit."]] unit_yaw : f32 , # [doc = "**Visualize collider**: If attached, the collider will be rendered.\n\n\n\n**Note**: this will continuously overwrite the `local_gizmos` component.\n\n\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Visualize collider"] , Description ["If attached, the collider will be rendered.\n\n**Note**: this will continuously overwrite the `local_gizmos` component.\n"]] visualize_collider : () , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod player { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -578,7 +578,7 @@ mod raw { components ! ("player" , { # [doc = "**Local user ID**: The user ID of the local player.\n\n*Attributes*: Debuggable, Networked, Resource, Store"] @ [Debuggable , Networked , Resource , Store , Name ["Local user ID"] , Description ["The user ID of the local player."]] local_user_id : String , # [doc = "**Is player**: This entity is a player.\n\nNote that this is a logical construct; a player's body may be separate from the player itself.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Is player"] , Description ["This entity is a player.\nNote that this is a logical construct; a player's body may be separate from the player itself."]] is_player : () , # [doc = "**User ID**: An identifier attached to all things owned by a user, and supplied by the user.\n\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["User ID"] , Description ["An identifier attached to all things owned by a user, and supplied by the user.\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body."]] user_id : String , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod prefab { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -595,7 +595,7 @@ mod raw { components ! ("prefab" , { # [doc = "**Prefab from URL**: Load and attach a prefab from a URL or relative path.\n\nWhen loaded, the components from this prefab will add to or replace the existing components for the entity.\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Prefab from URL"] , Description ["Load and attach a prefab from a URL or relative path.\nWhen loaded, the components from this prefab will add to or replace the existing components for the entity."]] prefab_from_url : String , # [doc = "**Spawned**: If attached, this entity was built from a prefab that has finished spawning.\n\n*Attributes*: Debuggable"] @ [Debuggable , Name ["Spawned"] , Description ["If attached, this entity was built from a prefab that has finished spawning."]] spawned : () , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod primitives { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -612,7 +612,7 @@ mod raw { components ! ("primitives" , { # [doc = "**Cube**: If attached to an entity, the entity will be converted to a cube primitive.\n\nThe cube is unit-sized (i.e. 0.5 metres out to each side).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cube"] , Description ["If attached to an entity, the entity will be converted to a cube primitive.\nThe cube is unit-sized (i.e. 0.5 metres out to each side)."]] cube : () , # [doc = "**Quad**: If attached to an entity, the entity will be converted to a quad primitive.\n\nThe quad is unit-sized on the XY axes, and flat on the Z axis (i.e. 0.5 metres out to the XY axes).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Quad"] , Description ["If attached to an entity, the entity will be converted to a quad primitive.\nThe quad is unit-sized on the XY axes, and flat on the Z axis (i.e. 0.5 metres out to the XY axes)."]] quad : () , # [doc = "**Sphere**: If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\n\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sphere"] , Description ["If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`)."]] sphere : () , # [doc = "**Sphere radius**: Set the radius of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 0.5"] @ [Debuggable , Networked , Store , Name ["Sphere radius"] , Description ["Set the radius of a `sphere` entity."]] sphere_radius : f32 , # [doc = "**Sphere sectors**: Set the longitudinal sectors of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 36"] @ [Debuggable , Networked , Store , Name ["Sphere sectors"] , Description ["Set the longitudinal sectors of a `sphere` entity."]] sphere_sectors : u32 , # [doc = "**Sphere stacks**: Set the latitudinal stacks of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 18"] @ [Debuggable , Networked , Store , Name ["Sphere stacks"] , Description ["Set the latitudinal stacks of a `sphere` entity."]] sphere_stacks : u32 , # [doc = "**Torus**: If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\n\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus"] , Description ["If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`)."]] torus : () , # [doc = "**Torus inner radius**: Set the inner radius of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus inner radius"] , Description ["Set the inner radius of a `torus` entity, spanning XY-plane."]] torus_inner_radius : f32 , # [doc = "**Torus outer radius**: Set the outer radius of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus outer radius"] , Description ["Set the outer radius of a `torus` entity, spanning XY-plane."]] torus_outer_radius : f32 , # [doc = "**Torus loops**: Set the loops of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus loops"] , Description ["Set the loops of a `torus` entity, spanning XY-plane."]] torus_loops : u32 , # [doc = "**Torus slices**: Set the slices of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus slices"] , Description ["Set the slices of a `torus` entity, spanning XY-plane."]] torus_slices : u32 , # [doc = "**Capsule**: If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\n\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule"] , Description ["If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`)."]] capsule : () , # [doc = "**Capsule radius**: Set the radius of a `capsule` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule radius"] , Description ["Set the radius of a `capsule` entity, spanning XY-plane."]] capsule_radius : f32 , # [doc = "**Capsule half-height**: Set the half-height of the `capsule` entity, spanning Z-axis, excluding the caps.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule half-height"] , Description ["Set the half-height of the `capsule` entity, spanning Z-axis, excluding the caps."]] capsule_half_height : f32 , # [doc = "**Capsule rings**: Set the number of sections between the caps.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule rings"] , Description ["Set the number of sections between the caps."]] capsule_rings : u32 , # [doc = "**Capsule latitudes**: Set the number of latitudinal sections. Should be even.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule latitudes"] , Description ["Set the number of latitudinal sections. Should be even."]] capsule_latitudes : u32 , # [doc = "**Capsule longitudes**: Set the number of longitudinal sections.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule longitudes"] , Description ["Set the number of longitudinal sections."]] capsule_longitudes : u32 , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod procedurals { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -629,7 +629,7 @@ mod raw { components ! ("procedurals" , { # [doc = "**Procedural mesh**: Attaches a procedural mesh to this entity\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Procedural mesh"] , Description ["Attaches a procedural mesh to this entity"]] procedural_mesh : ProceduralMeshHandle , # [doc = "**Procedural material**: Attaches a procedural material to this entity\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Procedural material"] , Description ["Attaches a procedural material to this entity"]] procedural_material : ProceduralMaterialHandle , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod rect { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -646,7 +646,7 @@ mod raw { components ! ("rect" , { # [doc = "**Background color**: Background color of an entity with a `rect` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Background color"] , Description ["Background color of an entity with a `rect` component."]] background_color : Vec4 , # [doc = "**Background URL**: URL to an image asset.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Background URL"] , Description ["URL to an image asset."]] background_url : String , # [doc = "**Border color**: Border color of an entity with a `rect` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Border color"] , Description ["Border color of an entity with a `rect` component."]] border_color : Vec4 , # [doc = "**Border radius**: Radius for each corner of an entity with a `rect` component.\n\n`x` = top-left, `y` = top-right, `z` = bottom-left, `w` = bottom-right.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Border radius"] , Description ["Radius for each corner of an entity with a `rect` component.\n`x` = top-left, `y` = top-right, `z` = bottom-left, `w` = bottom-right."]] border_radius : Vec4 , # [doc = "**Border thickness**: Border thickness of an entity with a `rect` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Border thickness"] , Description ["Border thickness of an entity with a `rect` component."]] border_thickness : f32 , # [doc = "**Pixel Line from**: Start point of a pixel sized line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Pixel Line from"] , Description ["Start point of a pixel sized line."]] pixel_line_from : Vec3 , # [doc = "**Pixel Line to**: End point of a pixel sized line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Pixel Line to"] , Description ["End point of a pixel sized line."]] pixel_line_to : Vec3 , # [doc = "**Line from**: Start point of a line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Line from"] , Description ["Start point of a line."]] line_from : Vec3 , # [doc = "**Line to**: End point of a line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Line to"] , Description ["End point of a line."]] line_to : Vec3 , # [doc = "**Line width**: Width of line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Line width"] , Description ["Width of line."]] line_width : f32 , # [doc = "**Rect**: If attached to an entity, the entity will be converted to a UI rectangle, with optionally rounded corners and borders.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Rect"] , Description ["If attached to an entity, the entity will be converted to a UI rectangle, with optionally rounded corners and borders."]] rect : () , # [doc = "**Size from background image**: Resize this rect based on the size of the background image.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Size from background image"] , Description ["Resize this rect based on the size of the background image."]] size_from_background_image : () , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod rendering { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -663,7 +663,7 @@ mod raw { components ! ("rendering" , { # [doc = "**Cast shadows**: If attached, this entity will cast shadows.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cast shadows"] , Description ["If attached, this entity will cast shadows."]] cast_shadows : () , # [doc = "**Color**: This entity will be tinted with the specified color if the color is not black.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Color"] , Description ["This entity will be tinted with the specified color if the color is not black."]] color : Vec4 , # [doc = "**Double-sided**: If attached, this controls whether or not the entity will be rendered with double-sided rendering. If not attached, the decision will fall back to the material.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Double-sided"] , Description ["If attached, this controls whether or not the entity will be rendered with double-sided rendering. If not attached, the decision will fall back to the material."]] double_sided : bool , # [doc = "**Fog color**: The color of the fog for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog color"] , Description ["The color of the fog for this `sun`."]] fog_color : Vec3 , # [doc = "**Fog density**: The density of the fog for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog density"] , Description ["The density of the fog for this `sun`."]] fog_density : f32 , # [doc = "**Fog height fall-off**: The height at which the fog will fall off (i.e. stop being visible) for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog height fall-off"] , Description ["The height at which the fog will fall off (i.e. stop being visible) for this `sun`."]] fog_height_falloff : f32 , # [doc = "**Joint Matrices**: Contains the matrices for each joint of this skinned mesh.\n\nThis should be used in combination with `joints`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Joint Matrices"] , Description ["Contains the matrices for each joint of this skinned mesh.\nThis should be used in combination with `joints`."]] joint_matrices : Vec :: < Mat4 > , # [doc = "**Joints**: Contains the joints that comprise this skinned mesh.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Joints"] , Description ["Contains the joints that comprise this skinned mesh."]] joints : Vec :: < EntityId > , # [doc = "**Light ambient**: The ambient light color of the `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Light ambient"] , Description ["The ambient light color of the `sun`."]] light_ambient : Vec3 , # [doc = "**Light diffuse**: The diffuse light color of the `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Light diffuse"] , Description ["The diffuse light color of the `sun`."]] light_diffuse : Vec3 , # [doc = "**Outline**: If attached, this entity will be rendered with an outline with the color specified.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Outline"] , Description ["If attached, this entity will be rendered with an outline with the color specified."]] outline : Vec4 , # [doc = "**Outline (recursive)**: If attached, this entity and all of its children will be rendered with an outline with the color specified.\n\nYou do not need to attach `outline` if you have attached `outline_recursive`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Outline (recursive)"] , Description ["If attached, this entity and all of its children will be rendered with an outline with the color specified.\nYou do not need to attach `outline` if you have attached `outline_recursive`."]] outline_recursive : Vec4 , # [doc = "**Overlay**: If attached, this entity will be rendered with an overlay.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Overlay"] , Description ["If attached, this entity will be rendered with an overlay."]] overlay : () , # [doc = "**PBR material from URL**: Load a PBR material from the URL and attach it to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["PBR material from URL"] , Description ["Load a PBR material from the URL and attach it to this entity."]] pbr_material_from_url : String , # [doc = "**Sky**: Add a realistic skybox to the scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sky"] , Description ["Add a realistic skybox to the scene."]] sky : () , # [doc = "**Sun**: Marks this entity as a sun (i.e. its rotation will be used to control the global light direction).\n\nThe entity with the highest `sun` value takes precedence.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sun"] , Description ["Marks this entity as a sun (i.e. its rotation will be used to control the global light direction).\nThe entity with the highest `sun` value takes precedence."]] sun : f32 , # [doc = "**Transparency group**: Controls when this transparent object will be rendered. Transparent objects are sorted by `(transparency_group, z-depth)`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Transparency group"] , Description ["Controls when this transparent object will be rendered. Transparent objects are sorted by `(transparency_group, z-depth)`."]] transparency_group : i32 , # [doc = "**Water**: Add a realistic water plane to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Water"] , Description ["Add a realistic water plane to this entity."]] water : () , # [doc = "**Decal material from URL**: Load a Decal material from the URL and attach it to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Decal material from URL"] , Description ["Load a Decal material from the URL and attach it to this entity."]] decal_from_url : String , # [doc = "**Scissors**: Apply a scissors test to this entity (anything outside the rect will be hidden).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scissors"] , Description ["Apply a scissors test to this entity (anything outside the rect will be hidden)."]] scissors : UVec4 , # [doc = "**Scissors (recursive)**: If attached, this entity and all of its children will be rendered with an scissor with the rect specified.\n\nYou do not need to attach `scissors` if you have attached `scissors_recursive`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scissors (recursive)"] , Description ["If attached, this entity and all of its children will be rendered with an scissor with the rect specified.\nYou do not need to attach `scissors` if you have attached `scissors_recursive`."]] scissors_recursive : UVec4 , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod text { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -771,7 +771,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod transform { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -788,7 +788,7 @@ mod raw { components ! ("transform" , { # [doc = "**Cylindrical billboard Z**: If attached, this ensures this entity is always aligned with the camera, except on the Z-axis.\n\nThis is useful for decorations that the player will be looking at from roughly the same altitude.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cylindrical billboard Z"] , Description ["If attached, this ensures this entity is always aligned with the camera, except on the Z-axis.\nThis is useful for decorations that the player will be looking at from roughly the same altitude."]] cylindrical_billboard_z : () , # [doc = "**Euler rotation**: The Euler rotation of this entity in ZYX order.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Euler rotation"] , Description ["The Euler rotation of this entity in ZYX order."]] euler_rotation : Vec3 , # [doc = "**Inverse Local to World**: Converts a world position to a local position.\n\nThis is automatically updated.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Inverse Local to World"] , Description ["Converts a world position to a local position.\nThis is automatically updated."]] inv_local_to_world : Mat4 , # [doc = "**Local to Parent**: Transformation from the entity's local space to the parent's space.\n\n*Attributes*: Debuggable, Networked, Store, MaybeResource"] @ [Debuggable , Networked , Store , MaybeResource , Name ["Local to Parent"] , Description ["Transformation from the entity's local space to the parent's space."]] local_to_parent : Mat4 , # [doc = "**Local to World**: Transformation from the entity's local space to worldspace.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Local to World"] , Description ["Transformation from the entity's local space to worldspace."]] local_to_world : Mat4 , # [doc = "**Look-at target**: The position that this entity should be looking at.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Look-at target"] , Description ["The position that this entity should be looking at."]] lookat_target : Vec3 , # [doc = "**Look-at up**: When combined with `lookat_target`, the up vector for this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Look-at up"] , Description ["When combined with `lookat_target`, the up vector for this entity."]] lookat_up : Vec3 , # [doc = "**Mesh to Local**: Transformation from mesh-space to the entity's local space.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Mesh to Local"] , Description ["Transformation from mesh-space to the entity's local space."]] mesh_to_local : Mat4 , # [doc = "**Mesh to World**: Transformation from mesh-space to world space.\n\nThis is automatically updated when `mesh_to_local` and `local_to_world` change.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Mesh to World"] , Description ["Transformation from mesh-space to world space.\nThis is automatically updated when `mesh_to_local` and `local_to_world` change."]] mesh_to_world : Mat4 , # [doc = "**Reset scale**: If attached to a transform hierarchy, the scale will be reset at that point, with only rotation/translation considered.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Reset scale"] , Description ["If attached to a transform hierarchy, the scale will be reset at that point, with only rotation/translation considered."]] reset_scale : () , # [doc = "**Rotation**: The rotation of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Rotation"] , Description ["The rotation of this entity."]] rotation : Quat , # [doc = "**Scale**: The scale of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scale"] , Description ["The scale of this entity."]] scale : Vec3 , # [doc = "**Spherical billboard**: If attached, this ensures that this entity is always aligned with the camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Spherical billboard"] , Description ["If attached, this ensures that this entity is always aligned with the camera."]] spherical_billboard : () , # [doc = "**Translation**: The translation/position of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Translation"] , Description ["The translation/position of this entity."]] translation : Vec3 , }); } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod ui { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -847,7 +847,7 @@ mod raw { impl ModuleMessage for FocusChanged {} } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod wasm { #[doc = r" Auto-generated component definitions."] pub mod components { diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index a55f45108c..7066121513 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -4,7 +4,7 @@ pub use raw::ambient_core; mod raw { pub mod ambient_core { - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod animation { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -140,7 +140,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod app { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -269,7 +269,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod audio { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -367,7 +367,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod camera { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -1370,7 +1370,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod ecs { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -1412,7 +1412,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod input { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -1508,7 +1508,7 @@ mod raw { impl ModuleMessage for MouseOverChanged {} } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod layout { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2031,7 +2031,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod model { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2060,7 +2060,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod network { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2098,7 +2098,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod package { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2175,7 +2175,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod physics { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2368,7 +2368,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod player { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2397,7 +2397,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod prefab { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2420,7 +2420,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod primitives { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2854,7 +2854,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod procedurals { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2880,7 +2880,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod rect { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2964,7 +2964,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod rendering { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -3110,7 +3110,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod text { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -3253,7 +3253,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod transform { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -3452,7 +3452,7 @@ mod raw { } } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod ui { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -3518,7 +3518,7 @@ mod raw { impl ModuleMessage for FocusChanged {} } } - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod wasm { #[doc = r" Auto-generated component definitions."] pub mod components { diff --git a/guest/rust/examples/basics/skinmesh/src/client.rs b/guest/rust/examples/basics/skinmesh/src/client.rs index 878171e2a0..aeb4840d8e 100644 --- a/guest/rust/examples/basics/skinmesh/src/client.rs +++ b/guest/rust/examples/basics/skinmesh/src/client.rs @@ -27,7 +27,6 @@ pub async fn main() { lookat_target: Some(vec3(0., 0., 1.)), camera_angle: Some(vec2(-180f32.to_radians(), 45f32.to_radians())), camera_distance: Some(3.0), - ..default() }, } .spawn(); diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index 974ec155ba..12c5666273 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -27,7 +27,7 @@ pub fn generate( .filter_map(|c| context.extract_item_if_relevant(items, *c)) .map(|concept| { let concept = &*concept; - let new = new::generate(items, type_printer, context, &guest_api_path, concept)?; + let new = generate_one(items, type_printer, context, &guest_api_path, concept)?; Ok(quote! { #new }) @@ -49,326 +49,322 @@ pub fn generate( }) } -mod new { - use super::*; +fn generate_one( + items: &ItemMap, + type_printer: &TypePrinter, + context: Context, + guest_api_path: &TokenStream, + concept: &Concept, +) -> anyhow::Result { + let concept_id = &concept.data().id; + let concept_optional_id = quote::format_ident!("{}Optional", concept_id.as_str()); + + let required_components = concept + .required_components + .iter() + .map(|(id, value)| { + component_to_field( + items, + type_printer, + context, + id.as_resolved().unwrap(), + value, + ) + }) + .collect::>>()?; - pub(super) fn generate( - items: &ItemMap, - type_printer: &TypePrinter, - context: Context, - guest_api_path: &TokenStream, - concept: &Concept, - ) -> anyhow::Result { - let concept_id = &concept.data().id; - let concept_optional_id = quote::format_ident!("{}Optional", concept_id.as_str()); - - let required_components = concept - .required_components - .iter() - .map(|(id, value)| { - component_to_field( - items, - type_printer, - context, - id.as_resolved().unwrap(), - value, - ) - }) - .collect::>>()?; + let optional_components = concept + .optional_components + .iter() + .map(|(id, value)| { + component_to_field( + items, + type_printer, + context, + id.as_resolved().unwrap(), + value, + ) + }) + .collect::>>()?; - let optional_components = concept - .optional_components - .iter() - .map(|(id, value)| { - component_to_field( - items, - type_printer, - context, - id.as_resolved().unwrap(), - value, - ) - }) - .collect::>>()?; - - let struct_def = { - let doc_comment = { - let mut doc_comment = String::new(); - write!( - doc_comment, - "**{}**", - concept.name.as_deref().unwrap_or(concept_id.as_str()) - )?; - if let Some(description) = &concept.description { - write!(doc_comment, ": {}", description)?; - } - writeln!(doc_comment)?; - writeln!(doc_comment)?; + let struct_def = { + let doc_comment = { + let mut doc_comment = String::new(); + write!( + doc_comment, + "**{}**", + concept.name.as_deref().unwrap_or(concept_id.as_str()) + )?; + if let Some(description) = &concept.description { + write!(doc_comment, ": {}", description)?; + } + writeln!(doc_comment)?; + writeln!(doc_comment)?; - if !concept.extends.is_empty() { - write!(doc_comment, "**Extends**: ")?; - for (i, id) in concept.extends.iter().enumerate() { - let extend = items.get(id.as_resolved().unwrap()); - if i != 0 { - doc_comment.push_str(", "); - } - - write!( - doc_comment, - "`{}`", - &items.fully_qualified_display_path(extend, None, None) - )?; + if !concept.extends.is_empty() { + write!(doc_comment, "**Extends**: ")?; + for (i, id) in concept.extends.iter().enumerate() { + let extend = items.get(id.as_resolved().unwrap()); + if i != 0 { + doc_comment.push_str(", "); } - writeln!(doc_comment)?; - writeln!(doc_comment)?; - } - doc_comment.trim().to_string() - }; - - let components = required_components - .iter() - .map(|component| component.to_field_definition(false)); - let optional_ref = if !optional_components.is_empty() { - Some(quote! { - /// Optional components. - pub optional: #concept_optional_id, - }) - } else { - None - }; - - quote! { - #[doc = #doc_comment] - #[derive(Clone, Debug)] - pub struct #concept_id { - #(#components)* - #optional_ref + write!( + doc_comment, + "`{}`", + &items.fully_qualified_display_path(extend, None, None) + )?; } + writeln!(doc_comment)?; + writeln!(doc_comment)?; } + doc_comment.trim().to_string() }; - let optional_struct_def = if !optional_components.is_empty() { - let doc_comment = format!("Optional part of [{}].", concept_id); - - let components = optional_components - .iter() - .map(|component| component.to_field_definition(true)); + let components = required_components + .iter() + .map(|component| component.to_field_definition(false)); + let optional_ref = if !optional_components.is_empty() { Some(quote! { - #[doc = #doc_comment] - #[derive(Clone, Debug, Default)] - pub struct #concept_optional_id { - #(#components)* - } + /// Optional components. + pub optional: #concept_optional_id, }) } else { None }; - let make = { - let required = required_components.iter().map(|c| { - let path = &c.path; - let field_name = &c.id; + quote! { + #[doc = #doc_comment] + #[derive(Clone, Debug)] + pub struct #concept_id { + #(#components)* + #optional_ref + } + } + }; - quote! { with(#path(), self.#field_name) } - }); + let optional_struct_def = if !optional_components.is_empty() { + let doc_comment = format!("Optional part of [{}].", concept_id); - let optional = optional_components.iter().map(|c| { - let path = &c.path; - let field_name = &c.id; + let components = optional_components + .iter() + .map(|component| component.to_field_definition(true)); - quote! { - if let Some(#field_name) = self.optional.#field_name { - entity.set(#path(), #field_name); - } - } - }); + Some(quote! { + #[doc = #doc_comment] + #[derive(Clone, Debug, Default)] + pub struct #concept_optional_id { + #(#components)* + } + }) + } else { + None + }; - quote! { - fn make(self) -> Entity { - let mut entity = Entity::new() - #(.#required)*; + let make = { + let required = required_components.iter().map(|c| { + let path = &c.path; + let field_name = &c.id; + + quote! { with(#path(), self.#field_name) } + }); - #(#optional)* + let optional = optional_components.iter().map(|c| { + let path = &c.path; + let field_name = &c.id; - entity + quote! { + if let Some(#field_name) = self.optional.#field_name { + entity.set(#path(), #field_name); } } - }; + }); - let get_spawned = { - let required_components = required_components.iter().map(|c| { - c.with_id_and_path(|f, p| quote! { #f: entity::get_component(id, #p())?, }) - }); + quote! { + fn make(self) -> Entity { + let mut entity = Entity::new() + #(.#required)*; - let optional = if optional_components.is_empty() { - None - } else { - let optional_components = optional_components.iter().map(|c| { - c.with_id_and_path(|f, p| quote! { #f: entity::get_component(id, #p()), }) - }); + #(#optional)* - Some(quote! { - optional: #concept_optional_id { - #(#optional_components)* - } - }) - }; + entity + } + } + }; - quote! { - fn get_spawned(id: EntityId) -> Option { - Some(Self { - #(#required_components)* - #optional - }) + let get_spawned = { + let required_components = required_components + .iter() + .map(|c| c.with_id_and_path(|f, p| quote! { #f: entity::get_component(id, #p())?, })); + + let optional = if optional_components.is_empty() { + None + } else { + let optional_components = optional_components.iter().map(|c| { + c.with_id_and_path(|f, p| quote! { #f: entity::get_component(id, #p()), }) + }); + + Some(quote! { + optional: #concept_optional_id { + #(#optional_components)* } - } + }) }; - let get_unspawned = { - let required_components = required_components - .iter() - .map(|c| c.with_id_and_path(|f, p| quote! { #f: entity.get(#p())?, })); - - let optional = if optional_components.is_empty() { - None - } else { - let optional_components = optional_components - .iter() - .map(|c| c.with_id_and_path(|f, p| quote! { #f: entity.get(#p()), })); - - Some(quote! { - optional: #concept_optional_id { - #(#optional_components)* - } + quote! { + fn get_spawned(id: EntityId) -> Option { + Some(Self { + #(#required_components)* + #optional }) - }; - - quote! { - fn get_unspawned(entity: &Entity) -> Option { - Some(Self { - #(#required_components)* - #optional - }) - } } - }; + } + }; - let contained_by = { - let required_paths = required_components - .iter() - .map(|c| &c.path) - .collect::>(); + let get_unspawned = { + let required_components = required_components + .iter() + .map(|c| c.with_id_and_path(|f, p| quote! { #f: entity.get(#p())?, })); - quote! { - fn contained_by_spawned(id: EntityId) -> bool { - entity::has_components(id, &[ - #(&#required_paths()),* - ]) - } + let optional = if optional_components.is_empty() { + None + } else { + let optional_components = optional_components + .iter() + .map(|c| c.with_id_and_path(|f, p| quote! { #f: entity.get(#p()), })); - fn contained_by_unspawned(entity: &Entity) -> bool { - entity.has_components(&[ - #(&#required_paths()),* - ]) + Some(quote! { + optional: #concept_optional_id { + #(#optional_components)* } - } + }) }; - Ok(quote! { - #struct_def - #optional_struct_def - impl #guest_api_path::ecs::Concept for #concept_id { - #make - #get_spawned - #get_unspawned - #contained_by + quote! { + fn get_unspawned(entity: &Entity) -> Option { + Some(Self { + #(#required_components)* + #optional + }) } - }) - } + } + }; - struct ComponentField<'a> { - doc_comment: String, - id: &'a Identifier, - ty: TokenStream, - path: TokenStream, - } - impl ComponentField<'_> { - fn to_field_definition(&self, use_option: bool) -> TokenStream { - let doc = &self.doc_comment; - let id = self.id; - let ty = &self.ty; - - let ty = if use_option { - quote! { Option<#ty> } - } else { - ty.clone() - }; + let contained_by = { + let required_paths = required_components + .iter() + .map(|c| &c.path) + .collect::>(); + + quote! { + fn contained_by_spawned(id: EntityId) -> bool { + entity::has_components(id, &[ + #(&#required_paths()),* + ]) + } - quote! { - #[doc = #doc] - pub #id: #ty, + fn contained_by_unspawned(entity: &Entity) -> bool { + entity.has_components(&[ + #(&#required_paths()),* + ]) } } + }; + + Ok(quote! { + #struct_def + #optional_struct_def + impl #guest_api_path::ecs::Concept for #concept_id { + #make + #get_spawned + #get_unspawned + #contained_by + } + }) +} + +struct ComponentField<'a> { + doc_comment: String, + id: &'a Identifier, + ty: TokenStream, + path: TokenStream, +} +impl ComponentField<'_> { + fn to_field_definition(&self, use_option: bool) -> TokenStream { + let doc = &self.doc_comment; + let id = self.id; + let ty = &self.ty; + + let ty = if use_option { + quote! { Option<#ty> } + } else { + ty.clone() + }; - fn with_id_and_path( - &self, - f: impl Fn(&Identifier, &TokenStream) -> TokenStream, - ) -> TokenStream { - f(self.id, &self.path) + quote! { + #[doc = #doc] + pub #id: #ty, } } - fn component_to_field<'a>( - items: &'a ItemMap, - type_printer: &TypePrinter, - context: Context, - component_item_id: ItemId, - value: &ConceptValue, - ) -> anyhow::Result> { - let component = items.get(component_item_id); - let component_id = &component.data.id; + fn with_id_and_path( + &self, + f: impl Fn(&Identifier, &TokenStream) -> TokenStream, + ) -> TokenStream { + f(self.id, &self.path) + } +} + +fn component_to_field<'a>( + items: &'a ItemMap, + type_printer: &TypePrinter, + context: Context, + component_item_id: ItemId, + value: &ConceptValue, +) -> anyhow::Result> { + let component = items.get(component_item_id); + let component_id = &component.data.id; + + let component_ty = + type_printer.get(context, items, None, component.type_.as_resolved().unwrap())?; - let component_ty = - type_printer.get(context, items, None, component.type_.as_resolved().unwrap())?; + let mut doc_comment = String::new(); - let mut doc_comment = String::new(); + writeln!( + doc_comment, + "**Component**: `{}`", + items.fully_qualified_display_path(component, None, None) + )?; + writeln!(doc_comment)?; + if let Some(value) = value.suggested.as_ref().and_then(|v| v.as_resolved()) { writeln!( doc_comment, - "**Component**: `{}`", - items.fully_qualified_display_path(component, None, None) + "**Suggested value**: `{}`", + SemiprettyTokenStream(value_to_token_stream(items, value)?) )?; writeln!(doc_comment)?; + } - if let Some(value) = value.suggested.as_ref().and_then(|v| v.as_resolved()) { - writeln!( - doc_comment, - "**Suggested value**: `{}`", - SemiprettyTokenStream(value_to_token_stream(items, value)?) - )?; - writeln!(doc_comment)?; - } - - if let Some(description) = &value.description { - writeln!(doc_comment, "**Description**: {description}")?; - writeln!(doc_comment)?; - } + if let Some(description) = &value.description { + writeln!(doc_comment, "**Description**: {description}")?; + writeln!(doc_comment)?; + } - if let Some(description) = &component.description { - writeln!(doc_comment, "**Component description**: {}", description)?; - writeln!(doc_comment)?; - } + if let Some(description) = &component.description { + writeln!(doc_comment, "**Component description**: {}", description)?; + writeln!(doc_comment)?; + } - let component_path = context.get_path(items, None, component_item_id)?; + let component_path = context.get_path(items, None, component_item_id)?; - Ok(ComponentField { - doc_comment, - id: component_id, - ty: component_ty, - path: component_path, - }) - } + Ok(ComponentField { + doc_comment, + id: component_id, + ty: component_ty, + path: component_path, + }) } /// Very, very basic one-line formatter for token streams diff --git a/shared_crates/package_macro_common/src/lib.rs b/shared_crates/package_macro_common/src/lib.rs index 8344ee8ebc..4e706dbc88 100644 --- a/shared_crates/package_macro_common/src/lib.rs +++ b/shared_crates/package_macro_common/src/lib.rs @@ -158,7 +158,7 @@ fn generate_scope( } Ok(quote! { - #[allow(unused)] + #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod #id { #inner } From e85e78bdd935db4706518858ba37233bad5a9613 Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 15:43:38 +0200 Subject: [PATCH 32/35] feat(api/macro): add optional Concept suggested() --- crates/ecs/src/generated.rs | 27 +-- guest/rust/api_core/src/ecs.rs | 10 + guest/rust/api_core/src/internal/generated.rs | 220 ++++++++++++++++-- guest/rust/api_core/src/prelude.rs | 3 +- .../examples/assets/basic_model/src/server.rs | 6 +- .../assets/generate_pipeline/src/server.rs | 6 +- .../examples/basics/multiplayer/src/server.rs | 10 +- .../examples/basics/skinmesh/src/client.rs | 7 +- .../first_person_camera/src/server.rs | 7 +- .../third_person_camera/src/server.rs | 7 +- .../intermediate/dependencies/src/server.rs | 6 +- .../intermediate/messaging/src/client.rs | 10 +- .../examples/rendering/decals/src/server.rs | 6 +- .../examples/rendering/image/src/server.rs | 10 +- .../rendering/instancing/src/server.rs | 10 +- .../procedural_generation/src/client.rs | 10 +- .../examples/rendering/raw_text/src/server.rs | 10 +- .../examples/rendering/samplers/src/server.rs | 6 +- .../rendering/transparency/src/client.rs | 6 +- .../packages/games/arkanoid/src/client.rs | 13 +- .../packages/games/arkanoid/src/server.rs | 17 +- .../packages/games/minigolf/src/server.rs | 20 +- guest/rust/packages/games/pong/src/client.rs | 13 +- guest/rust/packages/games/pong/src/server.rs | 17 +- .../packages/games/tangent/core/src/client.rs | 10 +- .../packages/std/fps_controller/src/client.rs | 38 ++- .../packages/std/orbit_camera/ambient.toml | 2 +- .../rust/packages/tools/editor/src/server.rs | 10 +- .../package_macro_common/src/concepts.rs | 36 ++- shared_crates/package_macro_common/src/lib.rs | 2 +- 30 files changed, 302 insertions(+), 253 deletions(-) diff --git a/crates/ecs/src/generated.rs b/crates/ecs/src/generated.rs index ffd886efa2..2b2f90a2cd 100644 --- a/crates/ecs/src/generated.rs +++ b/crates/ecs/src/generated.rs @@ -25,9 +25,14 @@ impl MessageSerde for crate::EntityId { pub use raw::ambient_core::*; +#[allow( + unused, + clippy::unit_arg, + clippy::let_and_return, + clippy::approx_constant +)] mod raw { pub mod ambient_core { - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod animation { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -44,7 +49,6 @@ mod raw { components ! ("animation" , { # [doc = "**Is animation player**: This entity is treated as an animation player. Attach an animation node as a child for it to play.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is animation player"] , Description ["This entity is treated as an animation player. Attach an animation node as a child for it to play."]] is_animation_player : () , # [doc = "**Animation errors**: A list of errors that were produced trying to play the animation.\n\n*Attributes*: Debuggable"] @ [Debuggable , Name ["Animation errors"] , Description ["A list of errors that were produced trying to play the animation."]] animation_errors : Vec :: < String > , # [doc = "**Apply animation player**: Apply the designated animation player to this entity and its sub-tree.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Apply animation player"] , Description ["Apply the designated animation player to this entity and its sub-tree."]] apply_animation_player : EntityId , # [doc = "**Play clip from URL**: Make this entity a 'play animation clip' node. The value is the URL to the clip we'd like to play.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Play clip from URL"] , Description ["Make this entity a 'play animation clip' node. The value is the URL to the clip we'd like to play."]] play_clip_from_url : String , # [doc = "**Looping**: When this is true, the animation clip will repeat infinitely.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Looping"] , Description ["When this is true, the animation clip will repeat infinitely."]] looping : bool , # [doc = "**Speed**: Animation playback speed. Default is 1, higher values speeds up the animation.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Speed"] , Description ["Animation playback speed. Default is 1, higher values speeds up the animation."]] speed : f32 , # [doc = "**Start time**: Start time of an animation node.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Start time"] , Description ["Start time of an animation node."]] start_time : Duration , # [doc = "**Freeze at percentage**: Sample the input animation at a certain percentage of the animation track length.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Freeze at percentage"] , Description ["Sample the input animation at a certain percentage of the animation track length."]] freeze_at_percentage : f32 , # [doc = "**Freeze at time**: Sample the input animation at a certain time (in seconds).\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Freeze at time"] , Description ["Sample the input animation at a certain time (in seconds)."]] freeze_at_time : f32 , # [doc = "**Clip duration**: The clip duration is loaded from the clip, and then applied to the entity.\n\n*Attributes*: Debuggable"] @ [Debuggable , Name ["Clip duration"] , Description ["The clip duration is loaded from the clip, and then applied to the entity."]] clip_duration : f32 , # [doc = "**Clip loaded**: The clip has been loaded.\n\n*Attributes*: Debuggable"] @ [Debuggable , Name ["Clip loaded"] , Description ["The clip has been loaded."]] clip_loaded : () , # [doc = "**Blend**: Blend two animations together. The values is the blend weight. Use `children` to set the animations. Blend 0 means we only sample from the first animation, 1 means only the second one, and values in between blend between them.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Blend"] , Description ["Blend two animations together. The values is the blend weight. Use `children` to set the animations. Blend 0 means we only sample from the first animation, 1 means only the second one, and values in between blend between them."]] blend : f32 , # [doc = "**Mask bind ids**: List of bind ids that will be masked.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Mask bind ids"] , Description ["List of bind ids that will be masked."]] mask_bind_ids : Vec :: < String > , # [doc = "**Mask weights**: Weights for each bind id in `mask_bind_ids`.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Mask weights"] , Description ["Weights for each bind id in `mask_bind_ids`."]] mask_weights : Vec :: < f32 > , # [doc = "**Retarget Model from URL**: Retarget the animation using the model at the given URL.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Retarget Model from URL"] , Description ["Retarget the animation using the model at the given URL."]] retarget_model_from_url : String , # [doc = "**Retarget animation scaled**: Retarget animation scaled. True means normalize hip.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Retarget animation scaled"] , Description ["Retarget animation scaled. True means normalize hip."]] retarget_animation_scaled : bool , # [doc = "**Apply base pose**: Apply the base pose to this clip.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Apply base pose"] , Description ["Apply the base pose to this clip."]] apply_base_pose : () , # [doc = "**Bind id**: Animation bind ID.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Bind id"] , Description ["Animation bind ID."]] bind_id : String , # [doc = "**Bind ids**: Animation bind IDs.\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Bind ids"] , Description ["Animation bind IDs."]] bind_ids : Vec :: < String > , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod app { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -61,7 +65,6 @@ mod raw { components ! ("app" , { # [doc = "**Cursor position**: Absolute mouse cursor position in screen-space. This is the *logical* position. Multiply by the `window_scale_factor` to get the physical position.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Cursor position"] , Description ["Absolute mouse cursor position in screen-space. This is the *logical* position. Multiply by the `window_scale_factor` to get the physical position."]] cursor_position : Vec2 , # [doc = "**Delta time**: How long the previous tick took in seconds.\n\n*Attributes*: Debuggable, Resource"] @ [Debuggable , Resource , Name ["Delta time"] , Description ["How long the previous tick took in seconds."]] delta_time : f32 , # [doc = "**Epoch time**: Time since epoch (Jan 1, 1970). Non_monotonic.\n\n*Attributes*: Debuggable, Resource"] @ [Debuggable , Resource , Name ["Epoch time"] , Description ["Time since epoch (Jan 1, 1970). Non_monotonic."]] epoch_time : Duration , # [doc = "**Game time**: Time since the game was started. Monotonic.\n\n*Attributes*: Debuggable, Resource"] @ [Debuggable , Resource , Name ["Game time"] , Description ["Time since the game was started. Monotonic."]] game_time : Duration , # [doc = "**Element**: The identifier of the `Element` that controls this entity.\n\nThis is automatically generated by `ElementTree`.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Element"] , Description ["The identifier of the `Element` that controls this entity.\nThis is automatically generated by `ElementTree`."]] element : String , # [doc = "**Element unmanaged children**: If this is set, the user is expected to manage the children of the `Element` themselves.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Element unmanaged children"] , Description ["If this is set, the user is expected to manage the children of the `Element` themselves."]] element_unmanaged_children : () , # [doc = "**Main scene**: If attached, this entity belongs to the main scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Main scene"] , Description ["If attached, this entity belongs to the main scene."]] main_scene : () , # [doc = "**Map seed**: A random number seed for this map.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Map seed"] , Description ["A random number seed for this map."]] map_seed : u64 , # [doc = "**Name**: A human-friendly name for this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Name"] , Description ["A human-friendly name for this entity."]] name : String , # [doc = "**Description**: A human-friendly description for this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Description"] , Description ["A human-friendly description for this entity."]] description : String , # [doc = "**Main Package Name**: The name of the main package being run.\n\nDefaults to \"Ambient\".\n\n*Attributes*: Debuggable, Resource"] @ [Debuggable , Resource , Name ["Main Package Name"] , Description ["The name of the main package being run.\nDefaults to \"Ambient\"."]] main_package_name : String , # [doc = "**Selectable**: If attached, this object can be selected in the editor.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Selectable"] , Description ["If attached, this object can be selected in the editor."]] selectable : () , # [doc = "**Snap to ground**: This object should automatically be moved with the terrain if the terrain is changed.\n\nThe value is the offset from the terrain.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Snap to ground"] , Description ["This object should automatically be moved with the terrain if the terrain is changed.\nThe value is the offset from the terrain."]] snap_to_ground : f32 , # [doc = "**Tags**: Tags for categorizing this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Tags"] , Description ["Tags for categorizing this entity."]] tags : Vec :: < String > , # [doc = "**UI scene**: If attached, this entity belongs to the UI scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["UI scene"] , Description ["If attached, this entity belongs to the UI scene."]] ui_scene : () , # [doc = "**Window logical size**: The logical size is the physical size divided by the scale factor.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Window logical size"] , Description ["The logical size is the physical size divided by the scale factor."]] window_logical_size : UVec2 , # [doc = "**Window physical size**: The physical size is the actual number of pixels on the screen.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Window physical size"] , Description ["The physical size is the actual number of pixels on the screen."]] window_physical_size : UVec2 , # [doc = "**Window scale factor**: The DPI/pixel scale factor of the window.\n\nOn standard displays, this is 1, but it can be higher on high-DPI displays like Apple Retina displays.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Window scale factor"] , Description ["The DPI/pixel scale factor of the window.\nOn standard displays, this is 1, but it can be higher on high-DPI displays like Apple Retina displays."]] window_scale_factor : f64 , # [doc = "**Reference count**: Ref-counted enity. If this entity doesn't have a `parent` component, and the ref count reaches 0, it will be removed together with all its children recursively.\n\n*Attributes*: MaybeResource, Debuggable, Networked"] @ [MaybeResource , Debuggable , Networked , Name ["Reference count"] , Description ["Ref-counted enity. If this entity doesn't have a `parent` component, and the ref count reaches 0, it will be removed together with all its children recursively."]] ref_count : u32 , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod audio { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -78,7 +81,6 @@ mod raw { components ! ("audio" , { # [doc = "**Is audio player**: The entity is an audio player.\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Is audio player"] , Description ["The entity is an audio player."]] is_audio_player : () , # [doc = "**Is spatial audio player**: The entity is a spatial audio player.\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Is spatial audio player"] , Description ["The entity is a spatial audio player."]] is_spatial_audio_player : () , # [doc = "**Spatial audio emitter**: The entity is a spatial audio emitter.\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Spatial audio emitter"] , Description ["The entity is a spatial audio emitter."]] spatial_audio_emitter : EntityId , # [doc = "**Spatial audio listener**: The entity is a spatial audio listener.\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Spatial audio listener"] , Description ["The entity is a spatial audio listener."]] spatial_audio_listener : EntityId , # [doc = "**Looping**: Whether or not the audio should loop.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Looping"] , Description ["Whether or not the audio should loop.\n"]] looping : bool , # [doc = "**One pole low pass filter**: With this component, the audio will be filtered with a one pole low pass filter.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["One pole low pass filter"] , Description ["With this component, the audio will be filtered with a one pole low pass filter.\n"]] onepole_lpf : f32 , # [doc = "**Playing sound**: The entity with this comp is a playing sound.\n\nWe can attach other components to it to control the sound parameters.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Playing sound"] , Description ["The entity with this comp is a playing sound.\nWe can attach other components to it to control the sound parameters.\n"]] playing_sound : () , # [doc = "**Amplitude**: The amplitude of the audio.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Amplitude"] , Description ["The amplitude of the audio.\n"]] amplitude : f32 , # [doc = "**Panning**: The panning of the audio.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Panning"] , Description ["The panning of the audio.\n"]] panning : f32 , # [doc = "**Low_pass filter**: Low pass filter. The first value is the cutoff frequency, the second is the bandwidth.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Low_pass filter"] , Description ["Low pass filter. The first value is the cutoff frequency, the second is the bandwidth.\n"]] lpf : Vec2 , # [doc = "**High_pass filter**: High pass filter. The first value is the cutoff frequency, the second is the bandwidth.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["High_pass filter"] , Description ["High pass filter. The first value is the cutoff frequency, the second is the bandwidth.\n"]] hpf : Vec2 , # [doc = "**Audio URL**: The URL of the assets.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Audio URL"] , Description ["The URL of the assets.\n"]] audio_url : String , # [doc = "**Trigger at this frame**: The system will watch for this component and PLAY the audio at this frame,\n\nusing the other components as parameters.\n\nThen set it back to false.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Trigger at this frame"] , Description ["The system will watch for this component and PLAY the audio at this frame,\nusing the other components as parameters.\nThen set it back to false.\n"]] play_now : () , # [doc = "**Stop at this frame**: The system will watch for this component and STOP the audio at this frame,\n\nusing the other components as parameters.\n\nThen set it back to false.\n\n\n\n*Attributes*: MaybeResource, Debuggable"] @ [MaybeResource , Debuggable , Name ["Stop at this frame"] , Description ["The system will watch for this component and STOP the audio at this frame,\nusing the other components as parameters.\nThen set it back to false.\n"]] stop_now : () , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod camera { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -95,7 +97,6 @@ mod raw { components ! ("camera" , { # [doc = "**Active camera**: The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\n\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Active camera"] , Description ["The camera with the highest `active_camera` value will be used for rendering. Cameras are also filtered by the `user_id`.\nIf there's no `user_id`, the camera is considered global and potentially applies to all users (if its `active_camera` value is high enough)."]] active_camera : f32 , # [doc = "**Aspect ratio**: The aspect ratio of this camera.\n\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Aspect ratio"] , Description ["The aspect ratio of this camera.\nIf `aspect_ratio_from_window` is set, this will be automatically updated to match the window."]] aspect_ratio : f32 , # [doc = "**Aspect ratio from window**: If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Aspect ratio from window"] , Description ["If attached, the `aspect_ratio` component will be automatically updated to match the aspect ratio of the window. Should point to an entity with a `window_physical_size` component."]] aspect_ratio_from_window : EntityId , # [doc = "**Far plane**: The far plane of this camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Far plane"] , Description ["The far plane of this camera, measured in meters."]] far : f32 , # [doc = "**Fog**: If attached, this camera will see/render fog.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog"] , Description ["If attached, this camera will see/render fog."]] fog : () , # [doc = "**Field of View Y**: The field of view of this camera in the Y/vertical direction, measured in radians.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Field of View Y"] , Description ["The field of view of this camera in the Y/vertical direction, measured in radians."]] fovy : f32 , # [doc = "**Near plane**: The near plane of this camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Near plane"] , Description ["The near plane of this camera, measured in meters."]] near : f32 , # [doc = "**Orthographic projection**: If attached, this camera will use a standard orthographic projection matrix.\n\nEnsure that the `orthographic_` components are set, including `left`, right`, `top` and `bottom`, as well as `near` and `far`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic projection"] , Description ["If attached, this camera will use a standard orthographic projection matrix.\nEnsure that the `orthographic_` components are set, including `left`, right`, `top` and `bottom`, as well as `near` and `far`."]] orthographic : () , # [doc = "**Orthographic bottom**: The bottom bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic bottom"] , Description ["The bottom bound for this `orthographic` camera."]] orthographic_bottom : f32 , # [doc = "**Orthographic from window**: The bounds of this orthographic camera will be updated to match the window automatically. Should point to an entity with a `window_logical_size` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic from window"] , Description ["The bounds of this orthographic camera will be updated to match the window automatically. Should point to an entity with a `window_logical_size` component."]] orthographic_from_window : EntityId , # [doc = "**Orthographic left**: The left bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic left"] , Description ["The left bound for this `orthographic` camera."]] orthographic_left : f32 , # [doc = "**Orthographic right**: The right bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic right"] , Description ["The right bound for this `orthographic` camera."]] orthographic_right : f32 , # [doc = "**Orthographic top**: The top bound for this `orthographic` camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Orthographic top"] , Description ["The top bound for this `orthographic` camera."]] orthographic_top : f32 , # [doc = "**Perspective projection**: If attached, this camera will use a standard perspective projection matrix.\n\nEnsure that `near` and `far` are set.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Perspective projection"] , Description ["If attached, this camera will use a standard perspective projection matrix.\nEnsure that `near` and `far` are set."]] perspective : () , # [doc = "**Perspective-infinite-reverse projection**: If attached, this camera will use a perspective-infinite-reverse projection matrix.\n\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Perspective-infinite-reverse projection"] , Description ["If attached, this camera will use a perspective-infinite-reverse projection matrix.\nThis is well-suited for rendering large worlds as it has no far plane. Ensure `near` is set."]] perspective_infinite_reverse : () , # [doc = "**Projection**: The projection matrix of this camera.\n\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Projection"] , Description ["The projection matrix of this camera.\nThis can be driven by other components, including `perspective` and `perspective_infinite_reverse`."]] projection : Mat4 , # [doc = "**Projection-view**: The composition of the projection and view (inverse-local-to-world) matrices.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Projection-view"] , Description ["The composition of the projection and view (inverse-local-to-world) matrices."]] projection_view : Mat4 , # [doc = "**Shadows far plane**: The far plane for the shadow camera, measured in meters.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Shadows far plane"] , Description ["The far plane for the shadow camera, measured in meters."]] shadows_far : f32 , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod ecs { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -112,7 +113,6 @@ mod raw { components ! ("ecs" , { # [doc = "**Children**: The children of this entity.\n\n*Attributes*: Debuggable, Networked, Store, MaybeResource"] @ [Debuggable , Networked , Store , MaybeResource , Name ["Children"] , Description ["The children of this entity."]] children : Vec :: < EntityId > , # [doc = "**Don't automatically despawn on module unload**: Indicates that this entity shouldn't be despawned when the module that spawned it unloads.\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Don't automatically despawn on module unload"] , Description ["Indicates that this entity shouldn't be despawned when the module that spawned it unloads."]] dont_despawn_on_unload : () , # [doc = "**Don't store**: Indicates that this entity shouldn't be stored on disk.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Don't store"] , Description ["Indicates that this entity shouldn't be stored on disk."]] dont_store : () , # [doc = "**ID**: The ID of the entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["ID"] , Description ["The ID of the entity."]] id : EntityId , # [doc = "**Parent**: The parent of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Parent"] , Description ["The parent of this entity."]] parent : EntityId , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod input { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -179,7 +179,6 @@ mod raw { impl ModuleMessage for MouseOverChanged {} } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod layout { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -493,7 +492,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod model { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -510,7 +508,6 @@ mod raw { components ! ("model" , { # [doc = "**Model animatable**: Controls whether this model can be animated.\n\n*Attributes*: MaybeResource, Debuggable, Networked, Store"] @ [MaybeResource , Debuggable , Networked , Store , Name ["Model animatable"] , Description ["Controls whether this model can be animated."]] model_animatable : bool , # [doc = "**Model from URL**: Load a model from the given URL or relative path.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Model from URL"] , Description ["Load a model from the given URL or relative path."]] model_from_url : String , # [doc = "**Model loaded**: If attached, this entity has a model attached to it.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Model loaded"] , Description ["If attached, this entity has a model attached to it."]] model_loaded : () , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod network { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -527,7 +524,6 @@ mod raw { components ! ("network" , { # [doc = "**Is remote entity**: If attached, this entity was not spawned locally (e.g. if this is the client, it was spawned by the server).\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is remote entity"] , Description ["If attached, this entity was not spawned locally (e.g. if this is the client, it was spawned by the server)."]] is_remote_entity : () , # [doc = "**Is persistent resources**: If attached, this entity contains global resources that are persisted to disk and synchronized to clients.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is persistent resources"] , Description ["If attached, this entity contains global resources that are persisted to disk and synchronized to clients."]] is_persistent_resources : () , # [doc = "**Is synchronized resources**: If attached, this entity contains global resources that are synchronized to clients, but not persisted.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is synchronized resources"] , Description ["If attached, this entity contains global resources that are synchronized to clients, but not persisted."]] is_synced_resources : () , # [doc = "**No sync**: If attached, this entity will not be synchronized to clients.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["No sync"] , Description ["If attached, this entity will not be synchronized to clients."]] no_sync : () , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod package { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -544,7 +540,6 @@ mod raw { components ! ("package" , { # [doc = "**Is Package**: Whether or not this entity is a package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Is Package"] , Description ["Whether or not this entity is a package."]] is_package : () , # [doc = "**Enabled**: Whether or not this package is enabled.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Enabled"] , Description ["Whether or not this package is enabled."]] enabled : bool , # [doc = "**ID**: The ID of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["ID"] , Description ["The ID of the package."]] id : String , # [doc = "**Name**: The name of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Name"] , Description ["The name of the package."]] name : String , # [doc = "**Version**: The version of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Version"] , Description ["The version of the package."]] version : String , # [doc = "**Authors**: The authors of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Authors"] , Description ["The authors of the package."]] authors : Vec :: < String > , # [doc = "**Description**: The description of the package. If not attached, the package does not have a description.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Description"] , Description ["The description of the package. If not attached, the package does not have a description."]] description : String , # [doc = "**Repository**: The repository of the package. If not attached, the package does not have a repository.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Repository"] , Description ["The repository of the package. If not attached, the package does not have a repository."]] repository : String , # [doc = "**Asset URL**: The asset URL (i.e. where the built assets are) of the package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Asset URL"] , Description ["The asset URL (i.e. where the built assets are) of the package."]] asset_url : String , # [doc = "**Client Modules**: The clientside WASM modules spawned by this package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Client Modules"] , Description ["The clientside WASM modules spawned by this package."]] client_modules : Vec :: < EntityId > , # [doc = "**Server Modules**: The serverside WASM modules spawned by this package.\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Server Modules"] , Description ["The serverside WASM modules spawned by this package."]] server_modules : Vec :: < EntityId > , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod physics { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -561,7 +556,6 @@ mod raw { components ! ("physics" , { # [doc = "**Angular velocity**: Angular velocity (radians/second) of this entity in the physics scene.\n\nUpdating this component will update the entity's angular velocity in the physics scene.\n\n\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like improper physics or collisions failing.\n\n\n\nIf you need to adjust the velocity each frame, consider applying an impulse using `physics` functions instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Angular velocity"] , Description ["Angular velocity (radians/second) of this entity in the physics scene.\nUpdating this component will update the entity's angular velocity in the physics scene.\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like improper physics or collisions failing.\n\nIf you need to adjust the velocity each frame, consider applying an impulse using `physics` functions instead."]] angular_velocity : Vec3 , # [doc = "**Cube collider**: If attached, this entity will have a cube physics collider.\n\n`x, y, z` is the size of the cube.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cube collider"] , Description ["If attached, this entity will have a cube physics collider.\n`x, y, z` is the size of the cube."]] cube_collider : Vec3 , # [doc = "**Character controller height**: The height of the physics character controller attached to this entity.\n\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Character controller height"] , Description ["The height of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_radius`, it will be given a physical character collider."]] character_controller_height : f32 , # [doc = "**Character controller radius**: The radius of the physics character controller attached to this entity.\n\nIf an entity has both this and a `character_controller_height`, it will be given a physical character collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Character controller radius"] , Description ["The radius of the physics character controller attached to this entity.\nIf an entity has both this and a `character_controller_height`, it will be given a physical character collider."]] character_controller_radius : f32 , # [doc = "**Collider from URL**: This entity will load its physics collider from the URL.\n\nThe value is the URL to load from.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Collider from URL"] , Description ["This entity will load its physics collider from the URL.\nThe value is the URL to load from."]] collider_from_url : String , # [doc = "**Collider loaded**: This component is automatically attached to an entity once the collider has been loaded (through e.g. `collider_from_url`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Collider loaded"] , Description ["This component is automatically attached to an entity once the collider has been loaded (through e.g. `collider_from_url`)."]] collider_loaded : () , # [doc = "**Collider loads**: Contains all colliders that were loaded in this physics tick.\n\n*Attributes*: Debuggable, Networked, Resource, Store"] @ [Debuggable , Networked , Resource , Store , Name ["Collider loads"] , Description ["Contains all colliders that were loaded in this physics tick."]] collider_loads : Vec :: < EntityId > , # [doc = "**Contact offset**: Contact offset (in meters) of this entity in the physics scene.\n\nUpdating this component will update the entity's contact offset for each attached shape in the physics scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Contact offset"] , Description ["Contact offset (in meters) of this entity in the physics scene.\nUpdating this component will update the entity's contact offset for each attached shape in the physics scene."]] contact_offset : f32 , # [doc = "**Density**: The density of this entity.\n\nThis is used to update the `mass` when the entity is rescaled.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 1.0"] @ [Debuggable , Networked , Store , Name ["Density"] , Description ["The density of this entity.\nThis is used to update the `mass` when the entity is rescaled."]] density : f32 , # [doc = "**Dynamic**: If this is true, the entity will be dynamic (i.e. be able to move). Otherwise, it will be static.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Dynamic"] , Description ["If this is true, the entity will be dynamic (i.e. be able to move). Otherwise, it will be static."]] dynamic : bool , # [doc = "**Kinematic**: If attached, and this entity is dynamic, this entity will also be kinematic (i.e. unable to be affected by other entities motion). Otherwise, it will receive forces normally.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Kinematic"] , Description ["If attached, and this entity is dynamic, this entity will also be kinematic (i.e. unable to be affected by other entities motion). Otherwise, it will receive forces normally."]] kinematic : () , # [doc = "**Linear velocity**: Linear velocity (meters/second) of this entity in the physics scene.\n\nUpdating this component will update the entity's linear velocity in the physics scene.\n\n\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like gravity not working or collisions failing.\n\n\n\nIf you need to adjust the velocity each frame, consider applying a force using `physics` functions instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Linear velocity"] , Description ["Linear velocity (meters/second) of this entity in the physics scene.\nUpdating this component will update the entity's linear velocity in the physics scene.\n\nNote that changing this component will forcibly set the velocity; changing the velocity every frame may lead to unexpected behavior, like gravity not working or collisions failing.\n\nIf you need to adjust the velocity each frame, consider applying a force using `physics` functions instead."]] linear_velocity : Vec3 , # [doc = "**Make physics static**: All physics objects will be made static when loaded.\n\n*Attributes*: Debuggable, Networked, Resource, Store"] @ [Debuggable , Networked , Resource , Store , Name ["Make physics static"] , Description ["All physics objects will be made static when loaded."]] make_physics_static : bool , # [doc = "**Mass**: The mass of this entity, measured in kilograms.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 1.0"] @ [Debuggable , Networked , Store , Name ["Mass"] , Description ["The mass of this entity, measured in kilograms."]] mass : f32 , # [doc = "**Physics controlled**: If attached, this entity will be controlled by physics.\n\nNote that this requires the entity to have a collider.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Physics controlled"] , Description ["If attached, this entity will be controlled by physics.\nNote that this requires the entity to have a collider."]] physics_controlled : () , # [doc = "**Plane collider**: If attached, this entity will have a plane physics collider. A plane is an infinite, flat surface. If you need a bounded flat surface, consider using a cube collider instead.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Plane collider"] , Description ["If attached, this entity will have a plane physics collider. A plane is an infinite, flat surface. If you need a bounded flat surface, consider using a cube collider instead."]] plane_collider : () , # [doc = "**Rest offset**: Rest offset (in meters) of this entity in the physics scene.\n\nUpdating this component will update the entity's rest offset for each attached shape in the physics scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Rest offset"] , Description ["Rest offset (in meters) of this entity in the physics scene.\nUpdating this component will update the entity's rest offset for each attached shape in the physics scene."]] rest_offset : f32 , # [doc = "**Sphere collider**: If attached, this entity will have a sphere physics collider.\n\nThe value corresponds to the radius of the sphere.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sphere collider"] , Description ["If attached, this entity will have a sphere physics collider.\nThe value corresponds to the radius of the sphere."]] sphere_collider : f32 , # [doc = "**Unit mass**: The mass of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit mass"] , Description ["The mass of a character/unit."]] unit_mass : f32 , # [doc = "**Unit velocity**: The velocity of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit velocity"] , Description ["The velocity of a character/unit."]] unit_velocity : Vec3 , # [doc = "**Unit yaw**: The yaw of a character/unit.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Unit yaw"] , Description ["The yaw of a character/unit."]] unit_yaw : f32 , # [doc = "**Visualize collider**: If attached, the collider will be rendered.\n\n\n\n**Note**: this will continuously overwrite the `local_gizmos` component.\n\n\n\n*Attributes*: Debuggable, Networked"] @ [Debuggable , Networked , Name ["Visualize collider"] , Description ["If attached, the collider will be rendered.\n\n**Note**: this will continuously overwrite the `local_gizmos` component.\n"]] visualize_collider : () , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod player { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -578,7 +572,6 @@ mod raw { components ! ("player" , { # [doc = "**Local user ID**: The user ID of the local player.\n\n*Attributes*: Debuggable, Networked, Resource, Store"] @ [Debuggable , Networked , Resource , Store , Name ["Local user ID"] , Description ["The user ID of the local player."]] local_user_id : String , # [doc = "**Is player**: This entity is a player.\n\nNote that this is a logical construct; a player's body may be separate from the player itself.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Is player"] , Description ["This entity is a player.\nNote that this is a logical construct; a player's body may be separate from the player itself."]] is_player : () , # [doc = "**User ID**: An identifier attached to all things owned by a user, and supplied by the user.\n\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["User ID"] , Description ["An identifier attached to all things owned by a user, and supplied by the user.\nThis can be attached to more than just the player; by convention, it is also attached to related entities, including their camera and body."]] user_id : String , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod prefab { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -595,7 +588,6 @@ mod raw { components ! ("prefab" , { # [doc = "**Prefab from URL**: Load and attach a prefab from a URL or relative path.\n\nWhen loaded, the components from this prefab will add to or replace the existing components for the entity.\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Prefab from URL"] , Description ["Load and attach a prefab from a URL or relative path.\nWhen loaded, the components from this prefab will add to or replace the existing components for the entity."]] prefab_from_url : String , # [doc = "**Spawned**: If attached, this entity was built from a prefab that has finished spawning.\n\n*Attributes*: Debuggable"] @ [Debuggable , Name ["Spawned"] , Description ["If attached, this entity was built from a prefab that has finished spawning."]] spawned : () , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod primitives { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -612,7 +604,6 @@ mod raw { components ! ("primitives" , { # [doc = "**Cube**: If attached to an entity, the entity will be converted to a cube primitive.\n\nThe cube is unit-sized (i.e. 0.5 metres out to each side).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cube"] , Description ["If attached to an entity, the entity will be converted to a cube primitive.\nThe cube is unit-sized (i.e. 0.5 metres out to each side)."]] cube : () , # [doc = "**Quad**: If attached to an entity, the entity will be converted to a quad primitive.\n\nThe quad is unit-sized on the XY axes, and flat on the Z axis (i.e. 0.5 metres out to the XY axes).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Quad"] , Description ["If attached to an entity, the entity will be converted to a quad primitive.\nThe quad is unit-sized on the XY axes, and flat on the Z axis (i.e. 0.5 metres out to the XY axes)."]] quad : () , # [doc = "**Sphere**: If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\n\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sphere"] , Description ["If attached to an entity alongside the other `sphere_*` components, the entity will be converted to a sphere primitive.\nTo easily instantiate a unit-diameter `sphere`, consider using the `sphere` concept (e.g. `make_sphere`)."]] sphere : () , # [doc = "**Sphere radius**: Set the radius of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 0.5"] @ [Debuggable , Networked , Store , Name ["Sphere radius"] , Description ["Set the radius of a `sphere` entity."]] sphere_radius : f32 , # [doc = "**Sphere sectors**: Set the longitudinal sectors of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 36"] @ [Debuggable , Networked , Store , Name ["Sphere sectors"] , Description ["Set the longitudinal sectors of a `sphere` entity."]] sphere_sectors : u32 , # [doc = "**Sphere stacks**: Set the latitudinal stacks of a `sphere` entity.\n\n*Attributes*: Debuggable, Networked, Store\n\n*Suggested Default*: 18"] @ [Debuggable , Networked , Store , Name ["Sphere stacks"] , Description ["Set the latitudinal stacks of a `sphere` entity."]] sphere_stacks : u32 , # [doc = "**Torus**: If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\n\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus"] , Description ["If attached to an entity alongside the other `torus_*` components, the entity will be converted to a torus primitive.\nTo easily instantiate a default `torus`, consider using the `torus` concept (e.g. `make_torus`)."]] torus : () , # [doc = "**Torus inner radius**: Set the inner radius of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus inner radius"] , Description ["Set the inner radius of a `torus` entity, spanning XY-plane."]] torus_inner_radius : f32 , # [doc = "**Torus outer radius**: Set the outer radius of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus outer radius"] , Description ["Set the outer radius of a `torus` entity, spanning XY-plane."]] torus_outer_radius : f32 , # [doc = "**Torus loops**: Set the loops of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus loops"] , Description ["Set the loops of a `torus` entity, spanning XY-plane."]] torus_loops : u32 , # [doc = "**Torus slices**: Set the slices of a `torus` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Torus slices"] , Description ["Set the slices of a `torus` entity, spanning XY-plane."]] torus_slices : u32 , # [doc = "**Capsule**: If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\n\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule"] , Description ["If attached to an entity alongside the other `capsule_*` components, the entity will be converted to a capsule primitive.\nTo easily instantiate a default `capsule`, consider using the `capsule` concept (e.g. `make_capsule`)."]] capsule : () , # [doc = "**Capsule radius**: Set the radius of a `capsule` entity, spanning XY-plane.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule radius"] , Description ["Set the radius of a `capsule` entity, spanning XY-plane."]] capsule_radius : f32 , # [doc = "**Capsule half-height**: Set the half-height of the `capsule` entity, spanning Z-axis, excluding the caps.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule half-height"] , Description ["Set the half-height of the `capsule` entity, spanning Z-axis, excluding the caps."]] capsule_half_height : f32 , # [doc = "**Capsule rings**: Set the number of sections between the caps.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule rings"] , Description ["Set the number of sections between the caps."]] capsule_rings : u32 , # [doc = "**Capsule latitudes**: Set the number of latitudinal sections. Should be even.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule latitudes"] , Description ["Set the number of latitudinal sections. Should be even."]] capsule_latitudes : u32 , # [doc = "**Capsule longitudes**: Set the number of longitudinal sections.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Capsule longitudes"] , Description ["Set the number of longitudinal sections."]] capsule_longitudes : u32 , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod procedurals { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -629,7 +620,6 @@ mod raw { components ! ("procedurals" , { # [doc = "**Procedural mesh**: Attaches a procedural mesh to this entity\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Procedural mesh"] , Description ["Attaches a procedural mesh to this entity"]] procedural_mesh : ProceduralMeshHandle , # [doc = "**Procedural material**: Attaches a procedural material to this entity\n\n*Attributes*: Debuggable, Store"] @ [Debuggable , Store , Name ["Procedural material"] , Description ["Attaches a procedural material to this entity"]] procedural_material : ProceduralMaterialHandle , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod rect { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -646,7 +636,6 @@ mod raw { components ! ("rect" , { # [doc = "**Background color**: Background color of an entity with a `rect` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Background color"] , Description ["Background color of an entity with a `rect` component."]] background_color : Vec4 , # [doc = "**Background URL**: URL to an image asset.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Background URL"] , Description ["URL to an image asset."]] background_url : String , # [doc = "**Border color**: Border color of an entity with a `rect` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Border color"] , Description ["Border color of an entity with a `rect` component."]] border_color : Vec4 , # [doc = "**Border radius**: Radius for each corner of an entity with a `rect` component.\n\n`x` = top-left, `y` = top-right, `z` = bottom-left, `w` = bottom-right.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Border radius"] , Description ["Radius for each corner of an entity with a `rect` component.\n`x` = top-left, `y` = top-right, `z` = bottom-left, `w` = bottom-right."]] border_radius : Vec4 , # [doc = "**Border thickness**: Border thickness of an entity with a `rect` component.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Border thickness"] , Description ["Border thickness of an entity with a `rect` component."]] border_thickness : f32 , # [doc = "**Pixel Line from**: Start point of a pixel sized line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Pixel Line from"] , Description ["Start point of a pixel sized line."]] pixel_line_from : Vec3 , # [doc = "**Pixel Line to**: End point of a pixel sized line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Pixel Line to"] , Description ["End point of a pixel sized line."]] pixel_line_to : Vec3 , # [doc = "**Line from**: Start point of a line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Line from"] , Description ["Start point of a line."]] line_from : Vec3 , # [doc = "**Line to**: End point of a line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Line to"] , Description ["End point of a line."]] line_to : Vec3 , # [doc = "**Line width**: Width of line.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Line width"] , Description ["Width of line."]] line_width : f32 , # [doc = "**Rect**: If attached to an entity, the entity will be converted to a UI rectangle, with optionally rounded corners and borders.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Rect"] , Description ["If attached to an entity, the entity will be converted to a UI rectangle, with optionally rounded corners and borders."]] rect : () , # [doc = "**Size from background image**: Resize this rect based on the size of the background image.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Size from background image"] , Description ["Resize this rect based on the size of the background image."]] size_from_background_image : () , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod rendering { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -663,7 +652,6 @@ mod raw { components ! ("rendering" , { # [doc = "**Cast shadows**: If attached, this entity will cast shadows.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cast shadows"] , Description ["If attached, this entity will cast shadows."]] cast_shadows : () , # [doc = "**Color**: This entity will be tinted with the specified color if the color is not black.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Color"] , Description ["This entity will be tinted with the specified color if the color is not black."]] color : Vec4 , # [doc = "**Double-sided**: If attached, this controls whether or not the entity will be rendered with double-sided rendering. If not attached, the decision will fall back to the material.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Double-sided"] , Description ["If attached, this controls whether or not the entity will be rendered with double-sided rendering. If not attached, the decision will fall back to the material."]] double_sided : bool , # [doc = "**Fog color**: The color of the fog for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog color"] , Description ["The color of the fog for this `sun`."]] fog_color : Vec3 , # [doc = "**Fog density**: The density of the fog for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog density"] , Description ["The density of the fog for this `sun`."]] fog_density : f32 , # [doc = "**Fog height fall-off**: The height at which the fog will fall off (i.e. stop being visible) for this `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Fog height fall-off"] , Description ["The height at which the fog will fall off (i.e. stop being visible) for this `sun`."]] fog_height_falloff : f32 , # [doc = "**Joint Matrices**: Contains the matrices for each joint of this skinned mesh.\n\nThis should be used in combination with `joints`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Joint Matrices"] , Description ["Contains the matrices for each joint of this skinned mesh.\nThis should be used in combination with `joints`."]] joint_matrices : Vec :: < Mat4 > , # [doc = "**Joints**: Contains the joints that comprise this skinned mesh.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Joints"] , Description ["Contains the joints that comprise this skinned mesh."]] joints : Vec :: < EntityId > , # [doc = "**Light ambient**: The ambient light color of the `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Light ambient"] , Description ["The ambient light color of the `sun`."]] light_ambient : Vec3 , # [doc = "**Light diffuse**: The diffuse light color of the `sun`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Light diffuse"] , Description ["The diffuse light color of the `sun`."]] light_diffuse : Vec3 , # [doc = "**Outline**: If attached, this entity will be rendered with an outline with the color specified.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Outline"] , Description ["If attached, this entity will be rendered with an outline with the color specified."]] outline : Vec4 , # [doc = "**Outline (recursive)**: If attached, this entity and all of its children will be rendered with an outline with the color specified.\n\nYou do not need to attach `outline` if you have attached `outline_recursive`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Outline (recursive)"] , Description ["If attached, this entity and all of its children will be rendered with an outline with the color specified.\nYou do not need to attach `outline` if you have attached `outline_recursive`."]] outline_recursive : Vec4 , # [doc = "**Overlay**: If attached, this entity will be rendered with an overlay.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Overlay"] , Description ["If attached, this entity will be rendered with an overlay."]] overlay : () , # [doc = "**PBR material from URL**: Load a PBR material from the URL and attach it to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["PBR material from URL"] , Description ["Load a PBR material from the URL and attach it to this entity."]] pbr_material_from_url : String , # [doc = "**Sky**: Add a realistic skybox to the scene.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sky"] , Description ["Add a realistic skybox to the scene."]] sky : () , # [doc = "**Sun**: Marks this entity as a sun (i.e. its rotation will be used to control the global light direction).\n\nThe entity with the highest `sun` value takes precedence.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Sun"] , Description ["Marks this entity as a sun (i.e. its rotation will be used to control the global light direction).\nThe entity with the highest `sun` value takes precedence."]] sun : f32 , # [doc = "**Transparency group**: Controls when this transparent object will be rendered. Transparent objects are sorted by `(transparency_group, z-depth)`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Transparency group"] , Description ["Controls when this transparent object will be rendered. Transparent objects are sorted by `(transparency_group, z-depth)`."]] transparency_group : i32 , # [doc = "**Water**: Add a realistic water plane to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Water"] , Description ["Add a realistic water plane to this entity."]] water : () , # [doc = "**Decal material from URL**: Load a Decal material from the URL and attach it to this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Decal material from URL"] , Description ["Load a Decal material from the URL and attach it to this entity."]] decal_from_url : String , # [doc = "**Scissors**: Apply a scissors test to this entity (anything outside the rect will be hidden).\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scissors"] , Description ["Apply a scissors test to this entity (anything outside the rect will be hidden)."]] scissors : UVec4 , # [doc = "**Scissors (recursive)**: If attached, this entity and all of its children will be rendered with an scissor with the rect specified.\n\nYou do not need to attach `scissors` if you have attached `scissors_recursive`.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scissors (recursive)"] , Description ["If attached, this entity and all of its children will be rendered with an scissor with the rect specified.\nYou do not need to attach `scissors` if you have attached `scissors_recursive`."]] scissors_recursive : UVec4 , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod text { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -771,7 +759,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod transform { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -788,7 +775,6 @@ mod raw { components ! ("transform" , { # [doc = "**Cylindrical billboard Z**: If attached, this ensures this entity is always aligned with the camera, except on the Z-axis.\n\nThis is useful for decorations that the player will be looking at from roughly the same altitude.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Cylindrical billboard Z"] , Description ["If attached, this ensures this entity is always aligned with the camera, except on the Z-axis.\nThis is useful for decorations that the player will be looking at from roughly the same altitude."]] cylindrical_billboard_z : () , # [doc = "**Euler rotation**: The Euler rotation of this entity in ZYX order.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Euler rotation"] , Description ["The Euler rotation of this entity in ZYX order."]] euler_rotation : Vec3 , # [doc = "**Inverse Local to World**: Converts a world position to a local position.\n\nThis is automatically updated.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Inverse Local to World"] , Description ["Converts a world position to a local position.\nThis is automatically updated."]] inv_local_to_world : Mat4 , # [doc = "**Local to Parent**: Transformation from the entity's local space to the parent's space.\n\n*Attributes*: Debuggable, Networked, Store, MaybeResource"] @ [Debuggable , Networked , Store , MaybeResource , Name ["Local to Parent"] , Description ["Transformation from the entity's local space to the parent's space."]] local_to_parent : Mat4 , # [doc = "**Local to World**: Transformation from the entity's local space to worldspace.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Local to World"] , Description ["Transformation from the entity's local space to worldspace."]] local_to_world : Mat4 , # [doc = "**Look-at target**: The position that this entity should be looking at.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Look-at target"] , Description ["The position that this entity should be looking at."]] lookat_target : Vec3 , # [doc = "**Look-at up**: When combined with `lookat_target`, the up vector for this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Look-at up"] , Description ["When combined with `lookat_target`, the up vector for this entity."]] lookat_up : Vec3 , # [doc = "**Mesh to Local**: Transformation from mesh-space to the entity's local space.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Mesh to Local"] , Description ["Transformation from mesh-space to the entity's local space."]] mesh_to_local : Mat4 , # [doc = "**Mesh to World**: Transformation from mesh-space to world space.\n\nThis is automatically updated when `mesh_to_local` and `local_to_world` change.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Mesh to World"] , Description ["Transformation from mesh-space to world space.\nThis is automatically updated when `mesh_to_local` and `local_to_world` change."]] mesh_to_world : Mat4 , # [doc = "**Reset scale**: If attached to a transform hierarchy, the scale will be reset at that point, with only rotation/translation considered.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Reset scale"] , Description ["If attached to a transform hierarchy, the scale will be reset at that point, with only rotation/translation considered."]] reset_scale : () , # [doc = "**Rotation**: The rotation of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Rotation"] , Description ["The rotation of this entity."]] rotation : Quat , # [doc = "**Scale**: The scale of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Scale"] , Description ["The scale of this entity."]] scale : Vec3 , # [doc = "**Spherical billboard**: If attached, this ensures that this entity is always aligned with the camera.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Spherical billboard"] , Description ["If attached, this ensures that this entity is always aligned with the camera."]] spherical_billboard : () , # [doc = "**Translation**: The translation/position of this entity.\n\n*Attributes*: Debuggable, Networked, Store"] @ [Debuggable , Networked , Store , Name ["Translation"] , Description ["The translation/position of this entity."]] translation : Vec3 , }); } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod ui { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -847,7 +833,6 @@ mod raw { impl ModuleMessage for FocusChanged {} } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod wasm { #[doc = r" Auto-generated component definitions."] pub mod components { diff --git a/guest/rust/api_core/src/ecs.rs b/guest/rust/api_core/src/ecs.rs index 6ac885c770..58c6fef815 100644 --- a/guest/rust/api_core/src/ecs.rs +++ b/guest/rust/api_core/src/ecs.rs @@ -73,3 +73,13 @@ impl From for Entity { concept.make() } } +/// This trait provides a helper method to get an instance of this concept with +/// all of the fields filled in with suggested values. +/// +/// This trait is only implemented if all fields in a concept have a suggested value. +pub trait ConceptSuggested: Concept { + /// Returns this concept with all of its fields filled in with suggested values. + /// + /// The optional field, if present, will be defaulted/have all of its fields be `None`. + fn suggested() -> Self; +} diff --git a/guest/rust/api_core/src/internal/generated.rs b/guest/rust/api_core/src/internal/generated.rs index 7066121513..91b60ed699 100644 --- a/guest/rust/api_core/src/internal/generated.rs +++ b/guest/rust/api_core/src/internal/generated.rs @@ -2,9 +2,14 @@ #![allow(dead_code)] #![allow(unused)] pub use raw::ambient_core; +#[allow( + unused, + clippy::unit_arg, + clippy::let_and_return, + clippy::approx_constant +)] mod raw { pub mod ambient_core { - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod animation { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -140,7 +145,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod app { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -269,7 +273,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod audio { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -367,7 +370,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod camera { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -692,6 +694,31 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for Camera { + fn suggested() -> Self { + Self { + local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + near: 0.1f32, + projection: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + projection_view: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + active_camera: 0f32, + inv_local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + optional: Default::default(), + } + } + } #[doc = "**Perspective Common Camera**: Base components for a perspective camera. Consider `perspective_camera` or `perspective_infinite_reverse_camera`.\n\n**Extends**: `ambient_core::camera::Camera`"] #[derive(Clone, Debug)] pub struct PerspectiveCommonCamera { @@ -832,6 +859,33 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for PerspectiveCommonCamera { + fn suggested() -> Self { + Self { + local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + near: 0.1f32, + projection: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + projection_view: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + active_camera: 0f32, + inv_local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + fovy: 1f32, + aspect_ratio: 1f32, + optional: Default::default(), + } + } + } #[doc = "**Perspective Camera**: A perspective camera.\n\n**Extends**: `ambient_core::camera::PerspectiveCommonCamera`"] #[derive(Clone, Debug)] pub struct PerspectiveCamera { @@ -985,6 +1039,35 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for PerspectiveCamera { + fn suggested() -> Self { + Self { + local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + near: 0.1f32, + projection: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + projection_view: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + active_camera: 0f32, + inv_local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + fovy: 1f32, + aspect_ratio: 1f32, + perspective: (), + far: 1000f32, + optional: Default::default(), + } + } + } #[doc = "**Perspective-Infinite-Reverse Camera**: A perspective-infinite-reverse camera. This is recommended for most use-cases.\n\n**Extends**: `ambient_core::camera::PerspectiveCommonCamera`"] #[derive(Clone, Debug)] pub struct PerspectiveInfiniteReverseCamera { @@ -1091,6 +1174,34 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for PerspectiveInfiniteReverseCamera { + fn suggested() -> Self { + Self { + local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + near: 0.1f32, + projection: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + projection_view: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + active_camera: 0f32, + inv_local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + fovy: 1f32, + aspect_ratio: 1f32, + perspective_infinite_reverse: (), + optional: Default::default(), + } + } + } #[doc = "**Orthographic Camera**: An orthographic camera.\n\n**Extends**: `ambient_core::camera::Camera`"] #[derive(Clone, Debug)] pub struct OrthographicCamera { @@ -1368,9 +1479,39 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for OrthographicCamera { + fn suggested() -> Self { + Self { + local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + near: -1f32, + projection: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + projection_view: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + active_camera: 0f32, + inv_local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + orthographic: (), + orthographic_left: -1f32, + orthographic_right: 1f32, + orthographic_top: 1f32, + orthographic_bottom: -1f32, + far: 1f32, + optional: Default::default(), + } + } + } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod ecs { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -1412,7 +1553,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod input { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -1508,7 +1648,6 @@ mod raw { impl ModuleMessage for MouseOverChanged {} } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod layout { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2031,7 +2170,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod model { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2060,7 +2198,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod network { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2098,7 +2235,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod package { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2175,7 +2311,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod physics { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2366,9 +2501,17 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for CharacterController { + fn suggested() -> Self { + Self { + character_controller_height: 2f32, + character_controller_radius: 0.5f32, + physics_controlled: (), + } + } + } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod player { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2397,7 +2540,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod prefab { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2420,7 +2562,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod primitives { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2634,6 +2775,16 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for Sphere { + fn suggested() -> Self { + Self { + sphere: (), + sphere_radius: 0.5f32, + sphere_sectors: 36u32, + sphere_stacks: 18u32, + } + } + } #[doc = "**Capsule**: A primitive capsule. Defined as a cylinder capped by hemispheres."] #[derive(Clone, Debug)] pub struct Capsule { @@ -2751,6 +2902,18 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for Capsule { + fn suggested() -> Self { + Self { + capsule: (), + capsule_radius: 0.5f32, + capsule_half_height: 0.5f32, + capsule_rings: 0u32, + capsule_latitudes: 16u32, + capsule_longitudes: 32u32, + } + } + } #[doc = "**Torus**: A primitive Torus, surface of revolution generated by revolving a circle in three-dimensional space one full revolution."] #[derive(Clone, Debug)] pub struct Torus { @@ -2852,9 +3015,19 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for Torus { + fn suggested() -> Self { + Self { + torus: (), + torus_inner_radius: 0.25f32, + torus_outer_radius: 0.35f32, + torus_slices: 32u32, + torus_loops: 16u32, + } + } + } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod procedurals { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2880,7 +3053,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod rect { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -2964,7 +3136,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod rendering { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -3110,7 +3281,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod text { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -3253,7 +3423,6 @@ mod raw { } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod transform { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -3450,9 +3619,19 @@ mod raw { ]) } } + impl crate::ecs::ConceptSuggested for Transformable { + fn suggested() -> Self { + Self { + local_to_world: Mat4::from_cols_array(&[ + 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, 0f32, 0f32, 0f32, 0f32, 1f32, + 0f32, 0f32, 0f32, 0f32, 1f32, + ]), + optional: Default::default(), + } + } + } } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod ui { #[doc = r" Auto-generated component definitions."] pub mod components { @@ -3518,7 +3697,6 @@ mod raw { impl ModuleMessage for FocusChanged {} } } - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod wasm { #[doc = r" Auto-generated component definitions."] pub mod components { diff --git a/guest/rust/api_core/src/prelude.rs b/guest/rust/api_core/src/prelude.rs index 860984abef..ef3684ac6e 100644 --- a/guest/rust/api_core/src/prelude.rs +++ b/guest/rust/api_core/src/prelude.rs @@ -1,7 +1,8 @@ pub use crate::{ asset, ecs::{ - change_query, despawn_query, query, spawn_query, Component, Concept, Entity, QueryEvent, + change_query, despawn_query, query, spawn_query, Component, Concept, ConceptSuggested, + Entity, QueryEvent, }, entity, global::*, diff --git a/guest/rust/examples/assets/basic_model/src/server.rs b/guest/rust/examples/assets/basic_model/src/server.rs index 736610484b..afec977b9f 100644 --- a/guest/rust/examples/assets/basic_model/src/server.rs +++ b/guest/rust/examples/assets/basic_model/src/server.rs @@ -8,11 +8,7 @@ use packages::{orbit_camera::concepts::OrbitCamera, this::assets}; #[main] pub async fn main() { // Camera - OrbitCamera { - is_orbit_camera: (), - optional: default(), - } - .spawn(); + OrbitCamera::suggested().spawn(); // Model Entity::new() diff --git a/guest/rust/examples/assets/generate_pipeline/src/server.rs b/guest/rust/examples/assets/generate_pipeline/src/server.rs index 424144027c..853525f14f 100644 --- a/guest/rust/examples/assets/generate_pipeline/src/server.rs +++ b/guest/rust/examples/assets/generate_pipeline/src/server.rs @@ -7,11 +7,7 @@ use packages::{orbit_camera::concepts::OrbitCamera, this::assets}; #[main] pub async fn main() { // Camera - OrbitCamera { - is_orbit_camera: (), - optional: default(), - } - .spawn(); + OrbitCamera::suggested().spawn(); // Model Entity::new() diff --git a/guest/rust/examples/basics/multiplayer/src/server.rs b/guest/rust/examples/basics/multiplayer/src/server.rs index 8a9f67d1fd..a1bc8d60c1 100644 --- a/guest/rust/examples/basics/multiplayer/src/server.rs +++ b/guest/rust/examples/basics/multiplayer/src/server.rs @@ -14,21 +14,13 @@ use ambient_api::{ #[main] pub fn main() { PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { main_scene: Some(()), translation: Some(Vec3::ONE * 5.), aspect_ratio_from_window: Some(entity::resources()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(lookat_target(), vec3(0., 0., 0.)) diff --git a/guest/rust/examples/basics/skinmesh/src/client.rs b/guest/rust/examples/basics/skinmesh/src/client.rs index aeb4840d8e..f8af041fab 100644 --- a/guest/rust/examples/basics/skinmesh/src/client.rs +++ b/guest/rust/examples/basics/skinmesh/src/client.rs @@ -59,12 +59,7 @@ pub async fn main() { // This demonstrates how to attach an entity to a bone let left_foot = animation::get_bone_by_bind_id(unit_id, &BindId::LeftFoot).unwrap(); let ball = Entity::new() - .with_merge(Sphere { - sphere: (), - sphere_radius: 0.5, - sphere_sectors: 36, - sphere_stacks: 18, - }) + .with_merge(Sphere::suggested()) .with(scale(), vec3(0.3, 0.3, 0.3)) .with(color(), vec4(0.0, 1.0, 0.0, 1.0)) .with(local_to_parent(), Default::default()) diff --git a/guest/rust/examples/controllers/first_person_camera/src/server.rs b/guest/rust/examples/controllers/first_person_camera/src/server.rs index 6f845d8de1..8641d564ed 100644 --- a/guest/rust/examples/controllers/first_person_camera/src/server.rs +++ b/guest/rust/examples/controllers/first_person_camera/src/server.rs @@ -20,12 +20,7 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(Sphere { - sphere: (), - sphere_radius: 0.5, - sphere_sectors: 36, - sphere_stacks: 18, - }) + .with_merge(Sphere::suggested()) .with(sphere_collider(), 0.5) .with(translation(), vec3(5., 5., 1.)) .spawn(); diff --git a/guest/rust/examples/controllers/third_person_camera/src/server.rs b/guest/rust/examples/controllers/third_person_camera/src/server.rs index 73b39fb860..e7241301ea 100644 --- a/guest/rust/examples/controllers/third_person_camera/src/server.rs +++ b/guest/rust/examples/controllers/third_person_camera/src/server.rs @@ -25,12 +25,7 @@ pub fn main() { .spawn(); Entity::new() - .with_merge(Sphere { - sphere: (), - sphere_radius: 0.5, - sphere_sectors: 36, - sphere_stacks: 18, - }) + .with_merge(Sphere::suggested()) .with(color(), vec4(0.5, 0.0, 1.0, 1.0)) .with(sphere_collider(), 0.5) .with(translation(), vec3(5.0, 5.0, 1.0)) diff --git a/guest/rust/examples/intermediate/dependencies/src/server.rs b/guest/rust/examples/intermediate/dependencies/src/server.rs index 273a1e61c3..e681cb3597 100644 --- a/guest/rust/examples/intermediate/dependencies/src/server.rs +++ b/guest/rust/examples/intermediate/dependencies/src/server.rs @@ -10,11 +10,7 @@ use packages::{ #[main] pub async fn main() { - OrbitCamera { - is_orbit_camera: (), - optional: default(), - } - .spawn(); + OrbitCamera::suggested().spawn(); let mut last_update = game_time(); query(spawned_by_us()).each_frame(move |r| { diff --git a/guest/rust/examples/intermediate/messaging/src/client.rs b/guest/rust/examples/intermediate/messaging/src/client.rs index 2e4ec1b9f7..cfa4dbf99b 100644 --- a/guest/rust/examples/intermediate/messaging/src/client.rs +++ b/guest/rust/examples/intermediate/messaging/src/client.rs @@ -30,21 +30,13 @@ pub fn main() { // 0 PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(Vec3::ONE * 5.), main_scene: Some(()), aspect_ratio_from_window: Some(entity::resources()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(lookat_target(), vec3(0., 0., 0.)) diff --git a/guest/rust/examples/rendering/decals/src/server.rs b/guest/rust/examples/rendering/decals/src/server.rs index 098e4aed18..3d55717030 100644 --- a/guest/rust/examples/rendering/decals/src/server.rs +++ b/guest/rust/examples/rendering/decals/src/server.rs @@ -13,11 +13,7 @@ use core::f32::consts::PI; #[main] pub fn main() { // Camera. - OrbitCamera { - is_orbit_camera: (), - optional: default(), - } - .spawn(); + OrbitCamera::suggested().spawn(); // Scene geometry. Entity::new() diff --git a/guest/rust/examples/rendering/image/src/server.rs b/guest/rust/examples/rendering/image/src/server.rs index f53af8c4eb..c4762e0513 100644 --- a/guest/rust/examples/rendering/image/src/server.rs +++ b/guest/rust/examples/rendering/image/src/server.rs @@ -13,21 +13,13 @@ use ambient_api::{ #[main] pub fn main() { PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(vec3(5., 5., 6.)), main_scene: Some(()), aspect_ratio_from_window: Some(entity::resources()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(lookat_target(), vec3(0., 0., 2.)) diff --git a/guest/rust/examples/rendering/instancing/src/server.rs b/guest/rust/examples/rendering/instancing/src/server.rs index 990fc17b30..b8646e1560 100644 --- a/guest/rust/examples/rendering/instancing/src/server.rs +++ b/guest/rust/examples/rendering/instancing/src/server.rs @@ -19,21 +19,13 @@ use packages::this::{assets, components::instance_index}; #[main] pub async fn main() { PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(Vec3::ONE * 5.), main_scene: Some(()), aspect_ratio_from_window: Some(entity::resources()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(lookat_target(), vec3(0., 0., 0.)) diff --git a/guest/rust/examples/rendering/procedural_generation/src/client.rs b/guest/rust/examples/rendering/procedural_generation/src/client.rs index 29425a8890..7fd9bf80d0 100644 --- a/guest/rust/examples/rendering/procedural_generation/src/client.rs +++ b/guest/rust/examples/rendering/procedural_generation/src/client.rs @@ -31,21 +31,13 @@ const WAVE_FREQUENCY: f32 = 0.5 * TAU; fn make_camera() { PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(vec3(0.0, 3.0, 4.0) * 2.0), main_scene: Some(()), aspect_ratio_from_window: Some(entity::resources()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(lookat_target(), vec3(0.0, 3.0, 0.0)) diff --git a/guest/rust/examples/rendering/raw_text/src/server.rs b/guest/rust/examples/rendering/raw_text/src/server.rs index ff0a970f94..13a537aa72 100644 --- a/guest/rust/examples/rendering/raw_text/src/server.rs +++ b/guest/rust/examples/rendering/raw_text/src/server.rs @@ -16,21 +16,13 @@ use ambient_api::{ #[main] pub fn main() { PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(vec3(5., 5., 4.)), main_scene: Some(()), aspect_ratio_from_window: Some(entity::resources()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(lookat_target(), vec3(0., 0., 0.)) diff --git a/guest/rust/examples/rendering/samplers/src/server.rs b/guest/rust/examples/rendering/samplers/src/server.rs index fbc52fa747..9cf4eba061 100644 --- a/guest/rust/examples/rendering/samplers/src/server.rs +++ b/guest/rust/examples/rendering/samplers/src/server.rs @@ -6,11 +6,7 @@ use packages::{orbit_camera::concepts::OrbitCamera, this::assets}; #[main] pub fn main() { - OrbitCamera { - is_orbit_camera: (), - optional: default(), - } - .spawn(); + OrbitCamera::suggested().spawn(); Entity::new() .with(translation(), vec3(-1.25, 0.0, 0.0)) diff --git a/guest/rust/examples/rendering/transparency/src/client.rs b/guest/rust/examples/rendering/transparency/src/client.rs index fee2a15a4d..4ec9937c20 100644 --- a/guest/rust/examples/rendering/transparency/src/client.rs +++ b/guest/rust/examples/rendering/transparency/src/client.rs @@ -11,11 +11,7 @@ use packages::orbit_camera::concepts::OrbitCamera; #[main] fn main() { // Camera - OrbitCamera { - is_orbit_camera: (), - optional: default(), - } - .spawn(); + OrbitCamera::suggested().spawn(); Entity::new() .with(quad(), ()) diff --git a/guest/rust/packages/games/arkanoid/src/client.rs b/guest/rust/packages/games/arkanoid/src/client.rs index a7c99d655e..f96f37fd96 100644 --- a/guest/rust/packages/games/arkanoid/src/client.rs +++ b/guest/rust/packages/games/arkanoid/src/client.rs @@ -36,22 +36,11 @@ async fn main() { }); let camera_id = OrthographicCamera { - local_to_world: Mat4::IDENTITY, - near: -1., - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - orthographic: (), - orthographic_left: -1., - orthographic_right: 1., - orthographic_top: 1., - orthographic_bottom: -1., - far: 1., optional: OrthographicCameraOptional { main_scene: Some(()), ..default() }, + ..OrthographicCamera::suggested() } .spawn(); diff --git a/guest/rust/packages/games/arkanoid/src/server.rs b/guest/rust/packages/games/arkanoid/src/server.rs index 875e7f64a9..dfe457d3aa 100644 --- a/guest/rust/packages/games/arkanoid/src/server.rs +++ b/guest/rust/packages/games/arkanoid/src/server.rs @@ -88,17 +88,12 @@ pub fn main() { .with(self::color(), vec4(0., 1., 1., 1.)) .spawn(); - let ball = Sphere { - sphere: (), - sphere_radius: 0.5, - sphere_sectors: 36, - sphere_stacks: 18, - } - .make() - .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) - .with(translation(), vec3(0., -0.9 + BALL_RADIUS, 0.)) - .with(self::color(), vec4(1., 1., 1., 1.)) - .spawn(); + let ball = Sphere::suggested() + .make() + .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) + .with(translation(), vec3(0., -0.9 + BALL_RADIUS, 0.)) + .with(self::color(), vec4(1., 1., 1., 1.)) + .spawn(); // When a player spawns, create a camera and other components for them spawn_query(is_player()).bind(move |players| { diff --git a/guest/rust/packages/games/minigolf/src/server.rs b/guest/rust/packages/games/minigolf/src/server.rs index ec73dd5b0d..83318c5f6b 100644 --- a/guest/rust/packages/games/minigolf/src/server.rs +++ b/guest/rust/packages/games/minigolf/src/server.rs @@ -1,5 +1,3 @@ -use std::f32::consts::PI; - use ambient_api::{ core::{ app::components::main_scene, @@ -140,25 +138,10 @@ pub fn main() { }, ); - let camera_state = PlayerCameraState { - player_camera_pivot: vec3(0f32, 0f32, 8f32), - player_camera_position: Vec3::ZERO, - player_camera_radius: 15f32, - player_camera_rotation: vec2(PI, 0.610865f32), - } - .spawn(); + let camera_state = PlayerCameraState::suggested().spawn(); entity::add_component(player, player_camera_state(), camera_state); PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(Vec3::ZERO), rotation: Some(Quat::IDENTITY), @@ -167,6 +150,7 @@ pub fn main() { user_id: Some(player_user_id.clone()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(player_camera_state(), camera_state) diff --git a/guest/rust/packages/games/pong/src/client.rs b/guest/rust/packages/games/pong/src/client.rs index 0cd8aa8f25..a0112f4ff4 100644 --- a/guest/rust/packages/games/pong/src/client.rs +++ b/guest/rust/packages/games/pong/src/client.rs @@ -31,22 +31,11 @@ async fn main() { bgm_player.play(url_from_server); let camera_id = OrthographicCamera { - local_to_world: Mat4::IDENTITY, - near: -1., - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - orthographic: (), - orthographic_left: -1., - orthographic_right: 1., - orthographic_top: 1., - orthographic_bottom: -1., - far: 1., optional: OrthographicCameraOptional { main_scene: Some(()), ..default() }, + ..OrthographicCamera::suggested() } .spawn(); diff --git a/guest/rust/packages/games/pong/src/server.rs b/guest/rust/packages/games/pong/src/server.rs index aba2335b06..5b8a394075 100644 --- a/guest/rust/packages/games/pong/src/server.rs +++ b/guest/rust/packages/games/pong/src/server.rs @@ -56,17 +56,12 @@ pub fn main() { spawn_paddle(true, vec3(255., 0., 0.)), spawn_paddle(false, vec3(0., 255., 0.)), ]; - let ball = Sphere { - sphere: (), - sphere_radius: 0.5, - sphere_sectors: 36, - sphere_stacks: 18, - } - .make() - .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) - .with(translation(), vec3(0., 0., -1.)) - .with(color(), vec4(255., 255., 255., 1.)) - .spawn(); + let ball = Sphere::suggested() + .make() + .with(scale(), vec3(BALL_RADIUS, BALL_RADIUS, 1.)) + .with(translation(), vec3(0., 0., -1.)) + .with(color(), vec4(255., 255., 255., 1.)) + .spawn(); // When a player spawns, create a camera and other components for them spawn_query(is_player()).bind(move |players| { diff --git a/guest/rust/packages/games/tangent/core/src/client.rs b/guest/rust/packages/games/tangent/core/src/client.rs index 030a52a4d3..60c9e21fa9 100644 --- a/guest/rust/packages/games/tangent/core/src/client.rs +++ b/guest/rust/packages/games/tangent/core/src/client.rs @@ -36,21 +36,13 @@ const RENDER_DEBUG: bool = false; #[main] pub fn main() { let camera_id = PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(vec3(5., 5., 2.)), main_scene: Some(()), aspect_ratio_from_window: Some(entity::resources()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(fog(), ()) diff --git a/guest/rust/packages/std/fps_controller/src/client.rs b/guest/rust/packages/std/fps_controller/src/client.rs index 8082cfe450..8ab23bbb98 100644 --- a/guest/rust/packages/std/fps_controller/src/client.rs +++ b/guest/rust/packages/std/fps_controller/src/client.rs @@ -67,29 +67,21 @@ pub fn main() { spawn_query((is_player(), head_ref())).bind(move |players| { for (id, (_, head)) in players { if id == player::get_local() { - let camera = Entity::new() - .with_merge(PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 0.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), - optional: PerspectiveInfiniteReverseCameraOptional { - translation: Some( - -Vec3::Z * get_component(id, camera_distance()).unwrap_or(4.), - ), - main_scene: Some(()), - aspect_ratio_from_window: Some(entity::resources()), - ..default() - }, - }) - .with(local_to_parent(), Default::default()) - .with(name(), "Camera".to_string()) - .spawn(); + let camera = PerspectiveInfiniteReverseCamera { + optional: PerspectiveInfiniteReverseCameraOptional { + translation: Some( + -Vec3::Z * get_component(id, camera_distance()).unwrap_or(4.), + ), + main_scene: Some(()), + aspect_ratio_from_window: Some(entity::resources()), + ..default() + }, + ..PerspectiveInfiniteReverseCamera::suggested() + } + .make() + .with(local_to_parent(), Default::default()) + .with(name(), "Camera".to_string()) + .spawn(); add_child(head, camera); entity::add_components(id, Entity::new().with(player_camera_ref(), camera)); diff --git a/guest/rust/packages/std/orbit_camera/ambient.toml b/guest/rust/packages/std/orbit_camera/ambient.toml index 8cf12f5457..79532ef64e 100644 --- a/guest/rust/packages/std/orbit_camera/ambient.toml +++ b/guest/rust/packages/std/orbit_camera/ambient.toml @@ -20,7 +20,7 @@ camera_distance = { type = "F32", description = "Camera distance specified in me name = "Orbit Camera" description = "An orbit camera." [concepts.OrbitCamera.components.required] -is_orbit_camera = {} +is_orbit_camera = { suggested = {} } [concepts.OrbitCamera.components.optional] camera_angle = {} camera_distance = {} diff --git a/guest/rust/packages/tools/editor/src/server.rs b/guest/rust/packages/tools/editor/src/server.rs index 2eaf548c2a..b02a04d782 100644 --- a/guest/rust/packages/tools/editor/src/server.rs +++ b/guest/rust/packages/tools/editor/src/server.rs @@ -60,15 +60,6 @@ pub fn main() { .unwrap_or_else(|| vec2(0.0, PI / 2.)); let camera_id = PerspectiveInfiniteReverseCamera { - local_to_world: Mat4::IDENTITY, - near: 0.1, - projection: Mat4::IDENTITY, - projection_view: Mat4::IDENTITY, - active_camera: 10.0, - inv_local_to_world: Mat4::IDENTITY, - fovy: 1.0, - aspect_ratio: 1.0, - perspective_infinite_reverse: (), optional: PerspectiveInfiniteReverseCameraOptional { translation: Some(new_camera_position), rotation: Some(default()), @@ -77,6 +68,7 @@ pub fn main() { user_id: Some(player_user_id), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } .make() .with(camera_angle(), new_camera_angle) diff --git a/shared_crates/package_macro_common/src/concepts.rs b/shared_crates/package_macro_common/src/concepts.rs index 12c5666273..9cfa8bfb72 100644 --- a/shared_crates/package_macro_common/src/concepts.rs +++ b/shared_crates/package_macro_common/src/concepts.rs @@ -272,6 +272,37 @@ fn generate_one( } }; + let concept_suggested = if required_components.iter().all(|c| c.suggested.is_some()) { + let required_components = required_components + .iter() + .map(|c| { + let field_name = &c.id; + let suggested = value_to_token_stream(items, c.suggested.unwrap())?; + + anyhow::Ok(quote! { #field_name: #suggested, }) + }) + .collect::, _>>()?; + + let optional_field = if optional_components.is_empty() { + None + } else { + Some(quote! { optional: Default::default(), }) + }; + + Some(quote! { + impl #guest_api_path::ecs::ConceptSuggested for #concept_id { + fn suggested() -> Self { + Self { + #(#required_components)* + #optional_field + } + } + } + }) + } else { + None + }; + Ok(quote! { #struct_def #optional_struct_def @@ -281,6 +312,7 @@ fn generate_one( #get_unspawned #contained_by } + #concept_suggested }) } @@ -289,6 +321,7 @@ struct ComponentField<'a> { id: &'a Identifier, ty: TokenStream, path: TokenStream, + suggested: Option<&'a Value>, } impl ComponentField<'_> { fn to_field_definition(&self, use_option: bool) -> TokenStream { @@ -321,7 +354,7 @@ fn component_to_field<'a>( type_printer: &TypePrinter, context: Context, component_item_id: ItemId, - value: &ConceptValue, + value: &'a ConceptValue, ) -> anyhow::Result> { let component = items.get(component_item_id); let component_id = &component.data.id; @@ -364,6 +397,7 @@ fn component_to_field<'a>( id: component_id, ty: component_ty, path: component_path, + suggested: value.suggested.as_ref().and_then(|v| v.as_resolved()), }) } diff --git a/shared_crates/package_macro_common/src/lib.rs b/shared_crates/package_macro_common/src/lib.rs index 4e706dbc88..e89c490f79 100644 --- a/shared_crates/package_macro_common/src/lib.rs +++ b/shared_crates/package_macro_common/src/lib.rs @@ -77,6 +77,7 @@ pub async fn generate_code( }; let output = quote! { + #[allow(unused, clippy::unit_arg, clippy::let_and_return, clippy::approx_constant)] mod raw { #(#outputs)* } @@ -158,7 +159,6 @@ fn generate_scope( } Ok(quote! { - #[allow(unused, clippy::unit_arg, clippy::let_and_return)] pub mod #id { #inner } From eb3afda26fa15fd5703b5c029bd07d336c918a78 Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 16:34:30 +0200 Subject: [PATCH 33/35] chore: update golden images --- .../assets/basic_model/screenshot.png | Bin 13847 -> 10573 bytes .../assets/generate_pipeline/screenshot.png | Bin 13847 -> 10539 bytes .../assets/material_overriding/Cargo.toml | 6 ---- .../assets/material_overriding/screenshot.png | Bin 68234 -> 69070 bytes .../assets/material_overriding/src/client.rs | 27 ------------------ .../assets/material_overriding/src/server.rs | 3 +- guest/rust/examples/assets/unity/ambient.toml | 3 -- .../rust/examples/assets/unity/src/server.rs | 23 ++++++++------- .../basics/multiplayer/screenshot.png | Bin 9997 -> 10031 bytes .../examples/basics/physics/screenshot.png | Bin 9720 -> 73334 bytes .../examples/basics/primitives/screenshot.png | Bin 44835 -> 40053 bytes .../examples/basics/primitives/src/server.rs | 1 + .../examples/basics/skinmesh/screenshot.png | Bin 78114 -> 74942 bytes .../examples/basics/skinmesh/src/client.rs | 2 +- .../third_person_camera/screenshot.png | Bin 96757 -> 96842 bytes .../intermediate/clientside/screenshot.png | Bin 53804 -> 88956 bytes .../intermediate/dependencies/screenshot.png | Bin 0 -> 36200 bytes .../intermediate/screen_ray/screenshot.png | Bin 15698 -> 15599 bytes .../examples/rendering/decals/screenshot.png | Bin 80779 -> 89265 bytes .../examples/rendering/decals/src/server.rs | 12 ++++++-- .../examples/rendering/fog/screenshot.png | Bin 43384 -> 45742 bytes .../rust/examples/rendering/fog/src/client.rs | 1 + .../rendering/instancing/screenshot.png | Bin 458396 -> 469088 bytes .../rendering/samplers/screenshot.png | Bin 89728 -> 68025 bytes .../examples/rendering/sun/screenshot.png | Bin 44718 -> 115120 bytes .../rendering/transparency/screenshot.png | Bin 11761 -> 49429 bytes .../rendering/transparency/src/client.rs | 14 +++++++-- .../examples/ui/audio_ctrl/screenshot.png | Bin 15514 -> 15549 bytes guest/rust/examples/ui/clock/screenshot.png | Bin 12088 -> 12391 bytes guest/rust/examples/ui/slider/screenshot.png | Bin 10379 -> 10423 bytes guest/rust/examples/ui/todo/screenshot.png | Bin 9908 -> 9908 bytes guest/rust/packages/games/afps/screenshot.png | Bin 0 -> 350659 bytes .../packages/games/arkanoid/screenshot.png | Bin 9546 -> 9546 bytes .../packages/games/minigolf/screenshot.png | Bin 93741 -> 102382 bytes .../games/music_sequencer/screenshot.png | Bin 22200 -> 22190 bytes .../packages/games/tangent/screenshot.png | Bin 0 -> 76807 bytes .../packages/games/tictactoe/screenshot.png | Bin 47806 -> 21354 bytes .../packages/schemas/editor/screenshot.png | Bin 0 -> 8919 bytes .../packages/schemas/input/screenshot.png | Bin 0 -> 8919 bytes .../rust/packages/schemas/unit/screenshot.png | Bin 0 -> 8919 bytes .../packages/std/base_assets/screenshot.png | Bin 0 -> 8919 bytes .../std/character_animation/screenshot.png | Bin 0 -> 8919 bytes .../std/character_movement/screenshot.png | Bin 0 -> 8919 bytes .../std/fps_controller/screenshot.png | Bin 0 -> 8919 bytes .../packages/std/hide_cursor/screenshot.png | Bin 0 -> 8919 bytes .../packages/std/orbit_camera/screenshot.png | Bin 0 -> 8919 bytes .../packages/tools/console/screenshot.png | Bin 0 -> 8919 bytes .../rust/packages/tools/editor/screenshot.png | Bin 0 -> 8919 bytes .../tools/package_manager/screenshot.png | Bin 0 -> 8919 bytes 49 files changed, 40 insertions(+), 52 deletions(-) delete mode 100644 guest/rust/examples/assets/material_overriding/src/client.rs create mode 100644 guest/rust/examples/intermediate/dependencies/screenshot.png create mode 100644 guest/rust/packages/games/afps/screenshot.png create mode 100644 guest/rust/packages/games/tangent/screenshot.png create mode 100644 guest/rust/packages/schemas/editor/screenshot.png create mode 100644 guest/rust/packages/schemas/input/screenshot.png create mode 100644 guest/rust/packages/schemas/unit/screenshot.png create mode 100644 guest/rust/packages/std/base_assets/screenshot.png create mode 100644 guest/rust/packages/std/character_animation/screenshot.png create mode 100644 guest/rust/packages/std/character_movement/screenshot.png create mode 100644 guest/rust/packages/std/fps_controller/screenshot.png create mode 100644 guest/rust/packages/std/hide_cursor/screenshot.png create mode 100644 guest/rust/packages/std/orbit_camera/screenshot.png create mode 100644 guest/rust/packages/tools/console/screenshot.png create mode 100644 guest/rust/packages/tools/editor/screenshot.png create mode 100644 guest/rust/packages/tools/package_manager/screenshot.png diff --git a/guest/rust/examples/assets/basic_model/screenshot.png b/guest/rust/examples/assets/basic_model/screenshot.png index 8f0f1be2cdeef621f3a34698dab441d2535ad981..a945d0199cc5e174ccaa21c933522b6f3d2e6fe2 100644 GIT binary patch literal 10573 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 literal 13847 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 literal 13847 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 oY8vX#=!H)1S1G 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 literal 68234 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¥1))7ZgYnF`Qt8t4fp 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 diff --git a/guest/rust/examples/assets/material_overriding/src/client.rs b/guest/rust/examples/assets/material_overriding/src/client.rs deleted file mode 100644 index dc9f9b5925..0000000000 --- a/guest/rust/examples/assets/material_overriding/src/client.rs +++ /dev/null @@ -1,27 +0,0 @@ -use std::f32::consts::TAU; - -use ambient_api::{ - core::{model::components::model_loaded, transform::components::rotation}, - glam::EulerRot, - prelude::*, -}; - -#[main] -fn main() { - // Load the asset - println!( - "asset url can be accessed from client: {}", - packages::this::assets::url("Cube.glb") - ); - - query(model_loaded()).requires(rotation()).each_frame(|v| { - let t = game_time().as_secs_f32(); - for (id, _) in v { - entity::set_component( - id, - rotation(), - Quat::from_euler(EulerRot::ZXY, t % TAU, (t * 2.0).sin() * 0.5, 0.0), - ); - } - }); -} diff --git a/guest/rust/examples/assets/material_overriding/src/server.rs b/guest/rust/examples/assets/material_overriding/src/server.rs index e4a1a14c65..4322b51c2e 100644 --- a/guest/rust/examples/assets/material_overriding/src/server.rs +++ b/guest/rust/examples/assets/material_overriding/src/server.rs @@ -19,7 +19,8 @@ pub async fn main() { OrbitCamera { is_orbit_camera: (), optional: OrbitCameraOptional { - camera_distance: Some(2.0), + camera_angle: Some(vec2(135f32.to_radians(), 20f32.to_radians())), + camera_distance: Some(3.), ..default() }, } diff --git a/guest/rust/examples/assets/unity/ambient.toml b/guest/rust/examples/assets/unity/ambient.toml index 86b5b5eb49..2efa0b490a 100644 --- a/guest/rust/examples/assets/unity/ambient.toml +++ b/guest/rust/examples/assets/unity/ambient.toml @@ -4,6 +4,3 @@ name = "Unity" description = "Load and spawn a Unity prefab" version = "0.0.1" content = { type = "Playable", example = true } - -[dependencies] -orbit_camera = { path = "../../../packages/std/orbit_camera" } diff --git a/guest/rust/examples/assets/unity/src/server.rs b/guest/rust/examples/assets/unity/src/server.rs index cf02a3fd11..08dd354c14 100644 --- a/guest/rust/examples/assets/unity/src/server.rs +++ b/guest/rust/examples/assets/unity/src/server.rs @@ -1,28 +1,31 @@ use ambient_api::{ core::{ + camera::concepts::{ + PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, + }, prefab::components::prefab_from_url, primitives::components::quad, rendering::components::cast_shadows, - transform::components::{local_to_world, scale}, + transform::components::{local_to_world, lookat_target, scale}, }, prelude::*, }; -use packages::{ - orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}, - this::assets, -}; +use packages::this::assets; #[main] pub fn main() { - OrbitCamera { - is_orbit_camera: (), - optional: OrbitCameraOptional { - lookat_target: Some(Vec3::Z * 1.5), - camera_distance: Some(10.0), + PerspectiveInfiniteReverseCamera { + optional: PerspectiveInfiniteReverseCameraOptional { + aspect_ratio_from_window: Some(entity::resources()), + translation: Some(Vec3::ONE * 5. + Vec3::Z * 1.5), + main_scene: Some(()), ..default() }, + ..PerspectiveInfiniteReverseCamera::suggested() } + .make() + .with(lookat_target(), Vec3::Z * 1.5) .spawn(); Entity::new() diff --git a/guest/rust/examples/basics/multiplayer/screenshot.png b/guest/rust/examples/basics/multiplayer/screenshot.png index f50f55ac39c91c5e19f853f25a9b32e026bfc3a0..b461acd21b03149eacac6ab167ae7600a0e32600 100644 GIT binary patch literal 10031 zcmeHNZETZO6mIw7mVGcbO=gH%&;=3*R{ev7jhBs%Qil`>wVE+X_)$&#QAL){F?eBP z;+zJM;D7~-><7BVEde9K*a|B0DI-}*Buoo)d^mJv>$-KNZ?C=Q-22|{AN=6o+hly) z({s*qpL_0e&iiH!E0&wHGp1$ebh>QIQqwA(F6nLhlm1kErQ5l$Pp6wXW-%47uG0T^ zQ@^Xg@@0V~ud#K1r`cq3I-PIX;vYBtj9-2dpN%xM-A=POolBOOws$t~&*)j^w7VN*;*Ew-oT>H`0-@{b8_DctQ30Af#Y({r~v zbW6bR+OGSEK8S|`qs4)mr%7+kr5yhm=qGYA!!Nf`D#D(B%eRE5VE)D#4F8|= zux6wy$D#Yx z8v`3eu;XDGNdEquw0VHuQ@M`4J2D>iD|FZ)0hi6cw7RV-ZzeY@`@{6=_UOOwRB% z0ft!kn#z@pH1M^Ac&Tj7pz>@Z_30ER*^9CxU#BcGWof}}$yb3{>u~tUPHG_?NJvB) z5Zi2CiDXIrVlC|u2JrTYpgAQ-f&85y*zhURK}rOd(ldKeu}TGP^6N+u$rL9_@~|jk zJ48*8Qnt?=weD;rlL0i`5dibq4yE$~pwUcKNI|V7O$nLwto*2cwnujI!$z1(AH^84 z204cTUQ|#qQXcLWVztFyLadPJ=RujL(H0bvFH+fyxHx8+ga`Dt%c~JK2jW&heu@UuHDnhPB&~{T<-!6=E#8|BKu|`+vOUAz61Y`t8`F@oJkl9|; zMA--v%96UDSn^a5k|F~I{DAOEh`*xeGf#b(4liUjU~=5%8;V#FQ^**mqYHVTi+U?5 zz(!;<9tM(nKn2Nl@dXo*WFr}n)a#qX#jM3!QKsf$;`bo2=a!n-Sb{T%Ym~M=(n~8w zWka3;N8c*%fZciqRX5jGHUt@N*8MdxGu8#7<-ae!V8XZt7(HU0yb^8XcXhOa^YNYq zu`Q>^0R4+BMi!M>$i-|G4w=rjY60z*Zm^qH5t6cC2&weRM=48HD?!B?`&BrG&v3%@ zo`(Bj7H5{m88X7~WdvnBHC-f4VoA?JQis^0BWcngTL@jF@Tv;Ro5iNW7Rp{#u{bhp zL2WS{^pYoWPFAr4XU*LF4fGWDbRrk9rU_5)ikS}s(Cjs1oE41(jRYK!wMx(`L8}C8 wBU&YBm7rCEHc4p{BYiU0#%4-Fzd>KW^ygRi1+N{5|00~uQo7vKUb3$Ce}i~(yZ`_I literal 9997 zcmeHNe@v8R9Djj`6Jj8>SeZKo!Ue0-v3_jDUeeQxWuhisZpvAIoLieBAp>;dLByIv zhxudbD$jJTy32FZ)umEzTBB*&ZOv;jj30qPD1x#BIe71h=lgx$dtUyxt=e-N_v8J( z-{<>zKF|02`99A(b}nD$NKJk`Sy7bK;#ce|6(#;n_Gfu;>dLq7L)R50_gb<2QI|KZ`};8M4< zx~jUmB*;Q8eLL|=sdH^r2;b<6&(;{-HKiuV za)2f(H9=~E)C94el*0J`7RD~G&wp-!)Ccrkfj;<7Ee{-G*Ss{heB!b4VCBT6;6w$x z;EQH1sy{pR>5te(zw+D}oqV5&sKXL8yz z*b22n7rno7yS}2=9!!l(1{KK%g#a~ytD*>AEvGCb*=4{p{Cmc zzH=e0Tr{|qq4!5j@XPGT7F`WEN@;~yRT76olFK+G@e8&Ri*U#in3+FvD!k7#)`LW3 zB7TDSy|hfAESL*q(fn^%nmF~~h~Y+0agz_{rU%DjCff?O3{ht-!uJdY>v~Gyk_&TE znEIHh_GmjDeh$+3AV2hmhwiS|?tF>>l>?BqzUXVwThB-L!;il0{IE>lA)~Vh{zxgh z0cGLMZ1d=?o_8?^j>2bENb5In__xdih*KdGBWF7Ay^h6jzzF`5h(ogT@W5X96C3ib zwR==;+07u(r@7@$45^;<3C5(qiTKuC2#ziiKuHGr(&ovw^2w*L-Y#KL(kiGCU)g53 zpPY!16F_{rbxcIeJcbd;H4(A1o=03@ipb|d9j1s0%duWuw`0sitc~1xrEsQ2tB|3C zW4NM6m zuD@8xjB9@|%edAXTbO70!a!%#9mo)W&_Z(lb;bskP2{8~RxhpKnFyfo$AcmI)<*h$ z``4^2J8|9aJ0Dpvx>HE4KVsd1xpdz*X}JDFD4AO4AgP%JHKbf%s!uMK)O9phhDb9j z9b@ADExBB%_hU2J2dPJVMt%8?q;LWKg$d}0b^$70yBZtb#>fAakN?H=@#pda9>FH} zIn)466#!RI#^YlVqdj^cW_L3(d zRp`f`bdCwZvY+DU*wWK1Zqy#BEA_he37)GO-wQq0Uve! zJ`Em8pWYqwbtYYOws0>&_wX9%N%W@4(!d*XJnlEzFm#^4HZPl{kAKTt^vxH(wtDWH zgjWO#r%=p!_D`u2k~LRP33V~b9& zT2TCEBQ)eoPb=?%UPBa43ss;cYaz&*@~YUn(m6&5+!>LR5W;mcwy<;?53yZmnL*pc z+^orv6z2xiOOTYu?y?TPoE;GrFrw-m8V_Dc1-=7n^L@Znccr|UBln3W)mX- diff --git a/guest/rust/examples/basics/physics/screenshot.png b/guest/rust/examples/basics/physics/screenshot.png index d2a68c616b755e611ef0075bbc321b06e292165c..b7592d3d40bde5d6f31e99c694388f0c41a297e4 100644 GIT binary patch literal 73334 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 literal 9720 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 F{{aM)5g-5n literal 44835 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 E4`~cgIRF3v diff --git a/guest/rust/examples/basics/primitives/src/server.rs b/guest/rust/examples/basics/primitives/src/server.rs index 68ee7cdd05..49b88eeed7 100644 --- a/guest/rust/examples/basics/primitives/src/server.rs +++ b/guest/rust/examples/basics/primitives/src/server.rs @@ -16,6 +16,7 @@ pub fn main() { OrbitCamera { is_orbit_camera: (), optional: OrbitCameraOptional { + camera_angle: Some(vec2(135f32.to_radians(), 35f32.to_radians())), camera_distance: Some(10.), ..default() }, diff --git a/guest/rust/examples/basics/skinmesh/screenshot.png b/guest/rust/examples/basics/skinmesh/screenshot.png index a5a1f6ee1deac12a320ea1f6550612e4d2e22944..eb4aec41d8452ebf8eff1f5094f7e180d0d0b330 100644 GIT binary patch literal 74942 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

$dX&1fzd7Ug`^&VIPv~62z45m)KhL1X~Y# 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 literal 78114 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ýs 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

m#pTU==k^jkw7i!Lc5bbe68il-~A6Yv+uJuIJlO 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 hT_vi8^4Yds-4hl+D=kh@%J9F5Xn{{XG>!#V%} delta 23052 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 literal 53804 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≶coZe}C{ldHB2vF>DvP>_|9uzZGGz@-lC*`{tQbgqAnk{HKgin8rv z%@wAapwW)-8+@xVh?c4K7Swzu^tzs=6;DcDq;+e8!wA+R<}~XMm*eICXVR7UOwT2I z^rZf8BqM9yMIdtSE?wRrRdCH{h2M>kC%ZqNDc3%s-go3_IU6o9BM8Xa)Rxp3Z}s4h z;$HSbWQn#p7JuISA#xzPNcIMT)igVSuH^2Go#YU(DWQ=tQTm5eqZ4zWyurLUXFE=u ztGP*2Gq2=JY;;=Mc~B)6;TJU(ECP%V(VS8rHWh9tAxYTREPW(6*UMq{p(8lf4)tE7 z4?@vcb^#Z-ON{86?!M@8am8XoY8=M-nR7mE(t%)HKPOuYdpiBVgroT6Jgn56{AF?w({dd@kiJ5R1NFVLE6hAAQ?K-W&kB6+ z9uEyUgIaLu8TJlclV(>&ICOi)Q!u6^Ac!cX>igce)8?B5c?jDJCt^GuBApD0Yu?7G zEUNqa@*-+5r&2O{k#j|&0Bix)*}z%n=XnvG(6AhyO*%9grYD`;4(}4JX$gR9vqkw$ z4{FqWZ*!Rb99BQMEa4#%omY`8HKrQixV;k3dlxBZJs0(_5n5}Jpee4Ya_%*6&7lv$+parJV;Z237+uRzoE=qm(8zG9E>YGw`x7WOzcBt zC6nSyzs$%LRX#0xkBh4eq5v*!ZN~RpL;o*Y3m%Hiu@LE znlx7_?AicewDs)YxC^fkhywt@{R^?h64zL%3VN)PHFKK3IvduZC&yJ5ePOQC1~|h) zyTa5TWdzGZ6CCMs?w@DK=KYpHX{unqS#Jq+XmUtR<=o|)fUm7H3d-fkv^50sdkK@2 zmC>MyxKjEu=?d66P{FOG6b@=VRHClMrLc{KhRtW#!r-owcx$Zd2Vn%(d<{|LbVe>~ zZ*+~&Z9><|AxbGy=%m2>UC%=Fre@7qO1fq=eZ|&8kfXK5m)*Hkth4K^#J>kX!2o9p z+ih3N+3J^+@U-jJ(y8k2@>+DG;1ceS-_7pB5)*r24b z8TI{&iDty-j8V9u+BWe5NmV>gK+)QMt}M{`W|5=2(juKC2S6TDs{cxL-!8U^i!=wZ(o|>hxUDP)qolb7i?DG_L#29W( zPMZ%seoX3RPamNqo~jixa?kosWGU{8M;cw|{?X*>@+oze&WZoI8#JPxmCf&ba<)1J zwSdRk{S_7AW{vK?m-FKSEUH+8q9AoA@&V zCn<5od*iC5Yp%5NjNC%Q<&}aIc%MH6li@XJ16L-%F$4!`pWpmVf^!%@J^SJw!u|

*&2P&UgCX4JM~a9huukTeDNAtzPKypgZkMFO+A#KT=3e znCZmz_Ft2OLXv#^Q^4waZ{J8k8x2|vtpAH@fvr5m>MYUOG!FB5`s;v_ejVyBSeDi0 z@8ft014?cuD9TIB6QJKE;Q2%|NdyYe2v?HRi$nz^AtWT{p_b@1zfyn$N(Af`KLn*F zh!=Drq5J(4UvFtYx64^(kj?92K<9q2tFIE(df_)D5T4YT zKA?O^92Fw(zcbRjelP8@pEFEfMhesee@yYXt6VK7|1WOO#i-rOoc z5W3=yZ!Eo@w|)g+$xs-CmJEeKXvg`f6+*i_SZ<^X4j_z>gvTH57=7`v!EKMHq-tHA z5;?e`$f&E-FMMRZhzA8C2m|MZ&;Th5!ZIKZ;g=y%if>s|WfDPXDkgsOLMHAwfAQ)1 z&O_x93Nsb@>tFyM1wx0^F?K@G|1StZ_5z`InXkl`iPv1Jt~sJB+qmwnIhVBRlsOvz Oi7wVW&%1(lf4_0g_>FPKINx{v z*d3#8cOh%8`Of$9JkR^iXl6{0@71$kPl-g*D=}f>UnCOOcj#Zw?)Wd?r&nB;NDhCT zIC1=}T$kT(xonXqZj&eam3&iqB7Wk;^z`(%XXBq7`lqAu|BHW?)1#A?^aAJN34;D*M{GALH-uJ=PUo#Q%tY#~*C# zKIeaT{!pg*Z~Eb5wb^UUw~wxm`~8iu15ax{zWQE{wf*C>y<$G1m&D5`x}9b-whj8~ zA$MBJXSO;Vg}VK#P8;7o@ZG&{s_75*mZ#7sIwq#&`t=3b*=0>l)9`;B#z)H(9n0qC z-1wM}U)g*%;QXQa_4b-a?y5PCa`EF&YaSQJD+^=R+=;RLYf(+B`q7UY#(mb3dA`di zCyV#-;dR#=PQJE(L}b~s&K6x~-^;_TvT1&-?<*zlt4(eX4=bJ>zP_}6!1Wx{YCgk` z7n}Q7WgK(z@)&Dq)}zobR9sa~?uMLO*S`P#n*EMSm|vyqSY_@OpgN_kYRdT`PH{cpUx=(X2glRR7(rY!impX9x( zGZ%eze>Apm^k>PIiGzzi*kLz5Av^s2*cZp|sji+s-#zP($yo+({*?E_MfxX;R@paj zBeObx&T5h|tIQT#Un*;h8h0mZ&{xmTgiVAOvSMH3A)HWTrT^f^j?=9U$x1GwoZS_jaumz#M;|CW#Tbz|;o2Pg(uQ@$h zyVN+g3sb zYE1)Wj)Y59V;kPmJ)QOKv155H<*Wbtpw2e^?dm?hr`1BM`fy53ZR_WAav!dhHID7L ze)j0ql!l*v^5r_Oa!p>gyJ4!zmF*{``Sa^HTm2MPzl1Z<^_vIWF`p}Wy?iP?=;fDR zK7NloRu-1DEI0Ru&MNE1j6lttCACFiF#9K}!X-f^#NN`L(ouO<4_|<&)Rp>q^Ikq`w_Kf4S<(@PJ<~-&|%^i;;ZQF8Z+k^TiVRi?XY-94 z?*%0IeOs$rEXSJ`-!cseCP!WHYIjMM@W5EZkJE!Z$H3`Bv$%zvu=5n2nGnXuh)EQwP<*~;rnm#;gKHop< zZtc;ZM~)utdTaBT2QU78_;3q%0jF8Y@po$PA2=~G+wzie|IzcA(RT`Hu}?nvuXS8&X}PVwPd536{Z+7+vWntcAE&f^EXh5ZymG{Y<9A-(ym@o;&6}2x6m!V& zuAIq*4Ph=-Pyf01(Kdx+TOHq^S8glz6rNNa9H%GMi@Hxc>ZGH4N5%5 z-<@anF5F8h!6_&%ObB@7BiySIK1CMkmA|Owlt|uE#)Rj1rmQ(F~`o{mtlcQShBJY1V}`H`2>P6xd11^iabmaqBZR1b zzFYY>jnslOu(($m+Ys%;r_}|1)jQJvn#B3DNrQ_H+<#~P+t;(AwOcDU-uc1HhN_jf zhKwiCJ^9@K1$g257IH<-y8kB#5cbra39oa#Iybu)>o;f499XjSmU@|`v2O~}XBAh1 zBe#81^Yoj#-x|Ju9hF?s;3fY5%*Bgc9{xq~_%GL2*_!GGk)uBpf3LBj?xh&hswfO`0;eE>QjO$ad}mArypRfVDXO;rT57{M?nlAFYeP$<-L{*Il}Q z@SWFl*91J?7vGhv*vMHzpOgo!DVu-pS9zgR_{}J6M0sxi@#6vg`}gOk%B_V;`)Tj= z`SaJ-kA1LIsq$X)aBXd_HJB2EqddX9W?Sye%&e^JrV&>k?&Y5DMRJz}IDUwa+&qwb z6vmwqO;&r4)8(w#n`54K^X{~foS(nv(|Hbz4DmRzR`HgqRmP_nPU4q z%klXtp^Y2YX4HA4Mr*ByWX}$Xwp)$DSL@6lT<=2eD-JN>R;lnyseO;?=|KFiQ2fD; z<0ilf7^rP;`$|N`ug|Ka@?c~is^@bC7wz0R;KTjbvvP9E#ZMPZ8H~3-0;?>+XK;c6 z`|gjPGI;rW@mD`q9s?Fb@&taF;mon&d)n^OFchYd+6xVb8d?>GY_WJz=;mr z-(pxbE`#HA2k!4X`bc&gcyielPQPhWFXW1w#WH(=?AD!e5AN8j^-sfZKHYEH(e`9? zjcv5@ZjkqF0yg&IQoCoSEjr5J9XD`u@gnz+7k)AJ&X}|k*(&{0`-@o);J?Lx%(9v*HJTlBG*o4EteM$A~W5a-dx32lIx7ErDL8XU)T&66J%Xr4#&6#0O+t`XUWW|8wuS z?d7?e@>@0RX-$jCp0HBHt3F*WKL4JMHeoqMaD3GI2~MRRU;(JSmR+6}a|qQ!$6wGzY#vy;>h8e2f9?r5r(+JC+rfAD+sjlA z{|6nrJjNDNsidMSL82vW3o!i+yD_~=dExf$ppKR2qpAwzgfpt_hOlLNgb-@caZ{0( zwE6n=ZnwUF_TUcvO9#4fCYFYR{g$+fJu?J2)*M=b6JA)uWpeVkNqR2?;L$jKT*Vc61i2~>Re|H4lEVv^VyAM4R1(9pZXC= zWz3i{*V_#m|JMQnmN|)DOD0OXDW)an?s`sr}kPXa!%tn=~JBek^`kYRAbHNXcR zr*J_3hSpMFix2pPch~@ZK0$gg;06#nj2Jijvz?{T>P2UN~-uepm?tW^Itn>Y< zN1yHOB5ABAIGXbD*Ga7*>PI1Yj&d$f?&~Y&4+%K~j)%C(f>8GE*@%aK>{acoANS-C z3^GsKy6l2~)x&N9?;}r(#|Qqh=d&{-H`fg!P6GdFY&dzn0Z*eO0z6U|*l{CAR+`s1 zKew_xukYVJ*!}axP5`gm=N^CL*s=OeF*koWS0b(b{o89J^B&1-?4Q>Bu;L`uwlL-G z9(DWZ0Ey>4yb2Nn%Rh>xB2RTyYH=QBU!0F)lgZxe=AE%O*T$^a6Jy@7=)mnUdfOP6 z+>RVBC&jT{UD>gsro&9n$lG)^x7RpkQ|YdJ2r!|0`nAs7g>Cx$c%rW1M1}Mxgu%#> zBX=D=pB?_yM`lBh%xtT9Qe;_MTPw;kL7wBCPp;+daNmIaNSRRcyt~L8JvD30*^}Yt>#1XQPtO{Np8Vkks)BhzV*KO2kuuG+kR_r z&(@=CqM)2iK|m3k1G-Mx@^7e&`y55aE5Cfzg>uxpJWuX%GIwtAu^ZjRax^f&>bZt> zaJpwFe_nL*6;xpeM5fE8d}Fqwb7+B>Mmn(_BC9^VVgFBEq&A!p3bql3_&1vA3>6>ftl! zv$-=nZ+Q!WPB_=Och@7`Z)b|U5_aDoJ@mcr468eC#4p;!-oHGY2qyT)2m7sm-#d2G zo;?HcBHXtAOO6+GWf9|^N4m_T?=FQd@JI)`M9Hp;s6$EOqK3RcjL^d3cXvg;_!~%> z{~bS!`?l%N7n;px{?BM`&ow`Yfd6ee-+$Kp9}-yqWBC6V{(ny1|Bv_m$NT=@c^~)X z&;8hdDTBqXRHrmZTaNX0=iLFj}=lo&9|4)A??0oX_ z6T5yv#-a`4i*gW~FLb zN#ks`KQm>PnfYj{g``*j3gZO}HyZst*7-@tCl38@_Df3%8M#_jUl?W^3oddVT9()d z-0?VT9@&ezTDXzgwot)it6eeqoJId>m#p(mwV;Y%Yn!hp@#VXAI6;;80a+v0=A-)SF6DlEBzwHWkUo0z8`Ynb8a zIOxE`y0Q&ZSh()itOYhxoY_?TX%pu`)~Roq`&j=)6U+01CDiBm4qw(inoXWnbpfB_ zfMki2R&HYx^YTmXWa+|v&wUoW7GC~X6h3sOvO48etLn2RmW!X8Qg=aSdP&RL zMccBS4*hsO=Ac71-uw+0GlX4j=G7TwK0MgCKxp%2lQM-l3B0WE-9;9awuyz{*_Sf~ z)pwm$V~*c5wOj5lF|!byYL-9SkidscSiGZ=EyFL(#0!{Ozde!F_6-|(Y%UiCw}6e= z>t=4m5T=1ggy1)f^M&>(%czQKVL&63nVF}S&6ErJC^o{t^&CE}toEMCX!%Ckh#uvY zs0S;$CwJDb{IQoe?A`)5DL2e!OWxlR3hOtqWGp%>nn|y(xEh5Pp>b_it`7@Kz+p}0 zRUuZc_m00^;ByW-*r~aXU13&J+s|Wkr?aCh-*97ss;;fgTIG}68ME#9y&`{BpUB7T zdUOWHSRm*QLyMH!boCW%mW2zmW~Db~M=^(Cwqi>Y8|23>SFnC&y{3ulr;$pg-FaWw zFibo)S^eC{HIM%oQ*~)J`#50P1i*qMI4Lv|6C zi_a9^Xw;V(*a9;P(z3rms<5bZcA3GV^4ZSDH!>f@$+Zd=7fr6LKV{(}ZHg`Snoyzi zkRu6JNfWY**(bAvO^sZXwz^7X)BRu(Gn;;66F0)k?^gTONM<$YdtTwC z2WxvaauImljwn_DchFskX2BZvKF&8HnpHO1f~>mnykeeBHr=dl;Hzikt;rPhk!(DE zw`RW3Cljv9$+hf#3+Jif-dNfvn)PkW-fAxm7NiFq-XYex*lE@R!L51j_d*4z^W1h`yg7e(GjyHH_gC;qmAo+uHNoY zq*r-st5ZC+ZRrP|VtI8_-7i%i-S>AW<_pY^4G!qM6>qHx5xkJ8@K*Wo=ye9KV4-2x z;|~|6OtjQuF-f$s33&_$(8Qab*!QXma8@fDCj>Mx53_0uyz3J)ZB(LZi|0#z{IGU7 zQ@1F$)ZTL(c63B0cV?{MFISzSAY+boxl2m(e%S*VR%g#aUUm03%B`&TyKj_RI4``U zpgZE|h)C|#HuFi=tXs%G**TyP+*p-yuzAU}X_0}+>frBGg8%h$8)c&p<9m#HF3L_es3%ND( zjb_P}+zBrCUw3i~kP4HF8|ag*rm4IP5x>cv6lmp&a($78_B?7|NGp~fb{JCy>0yWI z6mMDxZ<9r^v__U`Hl4EQHySv1n=C1seJK~95N&Pp8ko|}kG=eUUhexspGFoL&9*i& z*Jw&s3p0hiPoM1_x0&@sB~$pD^=C>{za8RBL#+C(cG*NT=Vhfo!>x+A_zfE@+z>4r zWZ?#B*%Ax#M|D+Mfu6gk`sfN%D};m6J8R6}WNfwTrtmS_?7BC3k1cjt&jAAhcCeSC z*~~_Y21E(xIz&-S0jXL?DFYkh z2HH$NScXJc)C&%*2(-Q)$L~GjkR_SdQ0DVax9KLE)o1y7Kjx~XL;tB!Uz#brC$I8e zzWk$9!QH}1v}}q6S(7cd=<`v)O{Q_J?WokxPToDM{-QcXqG40a+#n5m*{p|W^)|c5 zZSe50=nI>;J~lO8AlRleSXdPO-Ql>lR~XB_#Ceq!b7keLnoDe}68U65=AB5%?Q8=5 z{eoQZ+I4oVn{D?&N6kFJzlBelC#-GZ)eD8S$VJv;Nsg7m-eDFtFi6;&cVUBmBwLig z$D`&TL;A1@c!&=klG1Hfrm&}yO^jy#6)ZNIX)6JVs#7B73$yV8i5r1fgpMPQ(saSy zkENKgNA6Y4vr6`=*>u5Tnq;1oCagB-Pgy4AzueK$p${TK#Tpw&e7hlYL%#qjlImK{7)dfq@F!r*aqSy{lm6e7hssEgO zCM(n$YcWmctG`@(a;#eg0kjVqOMb9$QMS36g6T*e+`Lr3=8=gMzqb{g#pQRofz~(u zSbJh!pqUHOaJ{UmVuRl8U#4qO5^SSFTF}HMTVN5>!MwoiD{h^S%h=~_^%ZSt2cB}% zJtc*DZE#g4yBAO31{_MK1X}_v&7d#0jbg(WIu=x|D=@Ei6#3XY@*c%w0@h1aFoVlB)?%PDNC zwZm9C&{M%MmQgI#IB4@B!T`At7KOUk%_V^^O|xBZ)E64E{edr1W?5Y10O{^=E6ayg zwx!!tJM%)d>`G?954>!iEo-5`?A2kNy;#deAflIpgd-;#2dY11r3U>r1Dk}s0T9<} zkb|nc{&nrf2)2pdr)EL6%BHVCrgo^#TlD`>k8@<%y~*FE^VM~~4NUozz(%r$bJsAS z9Xtvz)B5Ah2L~M9^ANtXX?Y-knuV17+Eaz>&MRfYdd>@vVDZIVNqOGgsaExPURq{1 zy;)Z*7h?Pn$wT~%(|GO7JeQYJZHQ*KO6D%+U*tgK!(Qk4z3|nn&?=ay49Lj!pd%^B zsy+?Z0$L6Rut}F_IWL%~oE$&b_LYZgipT$un$^tAoaveH!_AfVX=1Lv<{Jq#Q^o@mg=nzP2jyU1*E$Ge%7XbJirb~Q-U{2)RB|ulgwYuwjQr07) z^q(2H5mw!sX8l@#1ABXDil>Ij-|sl%jzpR_vy#n=X1!!&XsT*G;2*mQHzmR#RmH*9T9`cphSsT3Kp zh0lm$Jx~va0euQ#Pi^H()mMn$W;X^38@AYua-j^l*_TcBWA7Pk zyLM1&#vA!**_##>Dok$+5-;mx(_I9NX!kXnn(AULEjV*v($}rBM81Cue*!7QVu}ay zqh$E5MV*Adedveh*kYwdU5sJ~#jOs)@Oku3RCvxYw9@$rz)U0Z3 zP(4~`&)I4}1|}(j(e4=WG;k3bLIknqN$ZAIjmZG1;*b|!vH%uw9=0rm!qz-rz^f;1 zNqo4l=T%V54u7-iVuR}5Lc465Sv{3k1X-AAKiA7b>#C5m9 z$MicK$s!Jc7pNRZ!h{f3jXj5J*vypMGZhUi9A08Ys?u+_D}rh39pq#H_wxL6UJF z##Wf!4?2>!=FaToug5<&*1};*=2ANg)>xO#SHyjUxU}WOS-X(gf}vUaIrA-wm1$t z)aTCgvJBhq2*r0V-smK~5l|MGkuJ<7P$=JGFE1wVde^Md81ydNpSAGG5el4N4}$sX z(|80TYZ!~^3m*d^*4T4=&77;vwHahYics#>Ut-IW<54BepdH{&XNt-DhWJ_3@no0T za>;Vx`)42|4k>{FFRv8$T431%*Y&SDF3 zn3yg0t3K?*U-;D>m2GD!35=<1n`cvP>y__NpQ3sTf|n8TFe8bdDja#$#;tdl#`85n z2JUmwVzERSSRZq30{$c3bHi5f6~I5P*V4YDF^_CngH+n+*36gAcS{vKj^u%N`Vorc z4yaa})em)~mT)gwvmSj~x?)sUWG^;=@X3-~V|njjYhf{)Cz2&qN#4+CHosX?fzVFz zvB8^!FM#D?$?t_2;KaucjW_E*1*XVbVg|y|7vdvuwz+a)Dn7@#W8VOO?!%0e z%tgLHEXH-0Zmg_vBu9Fu+Ej(uv+O*63hjwsNvjA^ofrIBA-jTX}3ui zM`}&FaaP4JI$*tzxsUAeVI`QO+^i}vux{o_s4yCOm@hr7#}MY5DIwr4HIP7bEP|cO z6poMp!1@4uW~2n70Gm*NrB>bfinde{i#PD~J}^!@f}TogKmyg{DBzmBG=p0LzxR*} z92#cLT2C(uGXEe$&^FVH7BuNUcc9GcPV-?$fboUq7S-R^<&ICW{-mfc ziQ~OdsF6~(+S>z(K|;*Rui{U>W(>BfC-E^`?KOeIPPtI6kro)B^Z;fR{kS^Ev{)D@zGE@H zV^X?JhW_zEf+B$R8BfdTlwLW{YeCANmWEVq@L{ji{IRe64#_g1R`o=)N=qfJ2AG~o zM-<+D*CWLtI5)}}_XY_iD3GYv>L%Xf5cpk1LnHG7H{0!R=9D(&Mu+SIoWNk44@3{3 zYI>8v{bK{b6_EN$WSL(1xxU~Kk;VnKGft+uI_Jj1suE}!L>21vh-YP!I1yS^H|8z4XZxgjLlfv#QW81LEIiPm+`V(qAm4t{T?;mzyUZL_*pV zj#6PksiJC7D5CQ7d^oJ(xDzIf0-k35&+|#ahS}bM!n72}Oob8Z7}$g=pP;-BCfQ*} zGJ&~4UdHdM8zeq4f}YsEfSeU&FDWer74}XgYzqw!>f6+H_MBnNM$wkB&3?>>ILI`4 zmDX|9A6b&?qv14pKWQ=!=WQjmi-T3{KuTUep3J%V0Z1^oYuDpZRYfj@)EbU#bG<#O z$}UxI8OH8cRtqscY<>@GtayTdm8bYv^{8X(?OB1=_7DM}BHoXo)K((TKR9Wd?j~}x z6pQIJm26bS_IU*5`&VXwu0O0#;z!&UcM32XAjEJQ9q<^-Wo zSe@pESmC|?L9K1NZ8ym$Y%<|X_%mvE9Jpf|O48SYy$5$mUxXa?Sih58jsK;*jeA`~ z(s)_!ObrW$Fi3e8h6V)--n~pk5>gh-dX5io=98nSI4mj+3 zT|dC0PQ|Yv-U%sAv7kWfen5H)r%YseP^z=H@p~hT^B{M1Ci|P!)A;JTM|)DLP=S#d zlegtAF+;_JW|I_Z1y5NEkEWPjO%HCcsCH0YP8LhM9B;2aO}TfqVApUjcSkBJo!`hN z#z9|=_smaT^GAaX$qb55A2^5|ly5hYYO44W4HvS!V?a&?%4>#LUWbTpdIr^kUKFCb zYK2*6Q*9c?LLpl<7_xoL+>YeDe>T7@q;?7Q+j0Ym5~J|@i-lhzmK@VXDzf1fZD%c< z>owFcTVVx>uLCQ%u_9}ScsYilnn%AR-%^#?legGSu}bK>uljk*h5iY3gCMtnUAugD|H-u`+kBh)v{I^N zZv!+*v~Be~&}UYf&}QEg#`k4^MG88LM#Oe|QV7-Zyg$Mps3P$?b!06hJETWLP)6R-UzLru8eJk#h8?Pg3g)%W&L#01e9W^0 z9zOy;M%JJ-c^PTUo)uz^HBtiRI9pUGVoeL&bY&6%?d_-YyB#vfPH9&D1c%J zQCt^`%CT4;kibi~<_7Ki)}dI4g51AZsUj)LSwm3gK!y|{r}*j~E~yj}0CT1{`D-n_ zRwPzqtZ<7^NIQrsTdWxjRCgNx#Se6C!;!o|23WKh7=)h!lLR)W>W*8+=DP;TrVNA$~|Mv zsxO*48@&Qyf78Z`B^SFBW$G$ey+{#Led->K)DclOWrh_&VpBT_(RR+ zhPyS_ML?PGUI-OpRf1&JHL~8CMlMpz^|HwtpI6?~{1})k4CV^$GS|Ct{E1>VisVGB zk_A1LkhF7^GI14flde_d&sUl6wrk9ilUMjfgcm?l(Op3(%TD8<9L98E6LAxxNypy+ zmc7WI5YNRgNO;e{eUrRGQ+@|I7Sa{E7br9k15s#N3^)b#G&oexSyftcNdK0)eO<*2 z)fZI<=uCHt5=Ci{`2N?8)E?0Juq9^wdQd2_9spSGAO!KTn7WYLq#{_$vJHKJLW-aD1sPSvA$nPM3%~Lm zvuO%HrWv3Fjt<7*6Rn8UNVg+(QB8(ZS3oI*l7J0D*zo`z^bijL+^&H>mobd>B(b>U z6cqVjY-Ol;6l}G)LI(u~GAXr4Yl5wOg>;i$+FX|a#mb@%4S?6k(S!nPdq!NyRD98E zzHPUtQ=TNe1Lj&o4oi$v`zjR6;Y*7g2)Q*>nz4a20~dY`Ppgty!DLKlh=!Smc#+UBzGFY6GmEDc~f?j!j(WlS##YFa%=&oN81xC3HB9i z1sVM!SE7|pF`LdPJ-(qwuB?Qhie?&wVf8r@Dax8H+#6anV~)~evV<^NzOk8MfOV>iqk|nb#5P?lzAy|k-iYP(Dx%5HkD{M80i6)|t)nc)HslQFX zj$FGG$%I8XH`3;7hTx^XpezF=LbA9<9iKP?Br*V!(6p4{W*zR67I3+L>X~@1QlN z7q_KD%$-`ypq|BO(I#nM00Zu@sgfn&T8}K+-3yv+i+h+#7fsSPy zwEcv5anVF~nx(z0R%(6O0kwV!22(>vtgWj=)s;8B1*? zcsv}Atkgq72NO)rg{^*(3*I?M(-wCQnUI_|3dG)`FWTgg(Z|3_k+}6bAIW)S$Eqg2 z+y~-|h4T**u4&j?>tGCMI?qJ$cFMPTGZW3Kov@&BgTd{^YG?3M^0HcTYM0C^ukF&U zT`SGAsV||l#E2Prpca|Pl;kOyFC_UGFYx95=1B`1x$Z#%l&G*C5N82jk*B~Y!<#LW zLePJW_FjMv4zLFzBe;iiUs%a8Oi_{hGG-(w*egjqaTeefc#z3};3h&_8r&^^7~5M6 z1@Mlim94j{rWUs~5V;bOCKdu*IMQO76y#i}%KOiS&SG&KuK{z zh7w@03W5wRjU|(5KSp2U1#xIZ7iRF9FDxYO3T(4<0g6h8Kf;H-3FCorZGte2qbfi* z49`zX8EFkZocE=CNHkyoPIGDt((=4$V=2k0fM;cZu*2BL>mn>{xU~+l!z*SsAcz3x z80#t|Vz8BA&}DHx1qSYwYjuM_=gy$Nki8YKr+tAfE|HwAICF?1*ajHCkm$Hq3&9j8 z)dgn&9Y54%tE}R-h17*(JA4$8S}8QDBF8abCxifj#m$Z+(trP&X;W-P64H7^!VfzC z+{)`X5fo^y2MOrG(TZZ?(vbDhn1XyvGOUm5sR~wZuw`JHBzbJU5Bq=^9t|dJ&K)Y2 z-xN#H!CGA|#Ji|wi#k}tK8o&ex*Lj#G{N=}0UP`%^O8pyRsoy4Q zs!fm<9vk#+rZW}QDcvkw^wKLOv0@+LpCz{4B94vHa04~0CxMmrKn+B19MYHj_?2Y- zU^0IaYET-{f7lo2a-ssOw*?WFTdJCWV1GY(t8ek#~A`_k!iwT7U zl48!FN+weIg}zJqm=>G-VlfHf6)YxqF18Q|xE6E+u_B?PFQcO;Sskba9e-dVsxs8% z+v6F*(z}4sHBW1MsDOfBEiM#~sKi33!jlF%t8hE2aDNHun(>Fxhz1};oCd`1{+9(J z9HbeT4Tu`K$X6`PeQd#KqhI913FB4LelSS3`DnQ99z%UuGS5qhQ41VQ)zuz zkbz}_9DPn&?R3H|*wAn@YC0hcv3ODL%34_E-E~TbnzAuqgaheEItIWPDmd~AC`nPyp=;;6!PJ}VWi7>De*x=8?uRtj)60HYGx_x5nBur2& zBrFVIh6)-=+D1+UiP7&PnArsK11Ds{IEILsZuG;;w7o)l4oDB8dMgswCVS37Kr!TW z1yU%TQOTLQRCosJ8Rvyj8A&mKpgOh{qVl^UY!ba7V;E2gNH==DB5(4b<+NSYA_N=r z!&rq^SXFs#9Lh%rp(qrX3nChrG>~4K&_LZsWYD-o=s|o(FtDc+m3n zqAU=GtpfB`+GD5;KbbCoLrU6h#JvGnJaOL_M%=WoAmCMw7G7!0=Dl`0zI+F4?<_`5kQ49D1I2{@MG##A<(|z5e;gSG96+|FnF$ZQV zB-zkqUtKYg55Q|6t#InbXHhd9B6`Ug5=2z%{{)V#b{)hJVP%U_?Q{o|5qgIdxfa^F zbCYYJ!ci4Rx|Jqu<3%^>5CKA>RwoZLqHTM|g2@&QEf<5)j#OcT z4;_3BEEY)1pb%2pw zSd#EvAvN}w;n<;**9~gq{0WtF>);}Lea*EvI8GTPOx3Wm#y;H-`qHf7YzUe@5k-R%n#2{!!YbaIrD84v`iq)Wi&pYzCCLKbyvOYQQ3d z1}s)Gy_hXCbAPW_-kphQk+zUP`!Qd{9cF__+TVIyM{Pt5lZ+?9RNr$u=SJZh4jQNb zj9Tdc6FqHeAiJ~F*;P$aY8{Fou-!(M5yzuLx{^rgb)%Al_)!IiLS}#mhQgnWrPT50 z?F12>2F^zW5wIG`i*#ZbQd@h`D;3epxnJYU4?}qYKZO47)l7n$D?lD)cur}}wCKO^ zQ4|kjQctVuQ@eUnG0ZAGpI;jX*$syre9*;*px*01a$uRD+qdD%$n%Ih2|RLL-f58n z$N?+SUWWJ8q-rs_1?mxYge-?b@ivJHTr}he0G*; zC`TL$!JE|m^%7UDrd8|xF!klfs(V;hwZO1tm_t!2Y`cA-Ekl5TIwWl_CeYa(xDqyo z5Gw+;NoE8^J|ZA3CBh0m{^l%U05k{PCE^+r=@g+Y0iSyuaTp>0AoBeP5^gtSV_G9A z5X8W&ZgR@e?!E}}pEQsZzyX0(yfSH=0oXkha|mSdL5RY(31|zVtbQ+-GP?y z-AfZ4B+eM9jf2Kkfv8ynENCbtvqc)<+^6XGC;1W~gcr+ccxXLVL+oHRlwkL0r;=55 z!BVRc)kHVwvFL1}Lc1aY+mfj6(99X=aSuw1upjU;;i@LWRY_?=Cpix5_8hps9)zw+ zAG4||Z#osR1*A1i8VF)Z=%XBr$>0?PDHD9yHV~q#>a$+?c|$3$p~i1nSMZ@0CMI7I zb7L&Yt)$%yr>?&VQa(VoKe9is3$9XS_sO?&H4Qx%CyrBxb}hOA zi#j0>t(r~an&^100cJ!M9@8S3CG5{cO-f3ISWQMmQwTgLK}1|7BI0s#ERD30Hw6nO zKQm~)*F3nq)IfZ9Er_oZ&N)Qna}wobAgPdpER}dLc})aGCV9=I$*mZ40S<~Fxdmnf z{n-g>O#G9*Oo|0pKt-JOvF?syV-2$vpbvMz__B*!(9tE`Lo78Kpaf8Pa6(dXK&&T| z@HG>YN>COs=wuMyOart5U8K%*PZ%b)(oONP%;rS0v=+DM8bT9MiCH3kWp(; zo6)pGnADIc_N5axJT^@$X2Z=bnWQDHF{>2?w|ZJ})Bvr7DuEFJgG50j`_O+yl}_VA zQ90W@i<|>z2Q&?ih0M}h>@0v(qtS!~)p02Lj1c#6-|HPN8kb{OH3dnhCCbkwGLM8()2SCHpvUAiiaf(2%^|z@ioT3ToinG~I zVu5`I5(FlWKAcXJ_^x9C+8p2ksXf?S0YPS4+CZA+^b{ROB2SSFK}zjOco|R=WND9B zY267Km8L;x@`cdUTZ9g{CIRfQGk5E&KJ4ShY(H;EpcNila>o-y=|Uz%ab`Gi0xB8~ zk>tP0N*NpnR=VCTa3-lagq_b2b{0uD8)B)&VyW{ni4NslU*;^Xz+V`jpGb<3x*jcx zM6>ClQfrT)-*KZ*6y+du0d2F72xT>>3(jr6fo(dOfoJ!FUz3M)trtO9y(g`A3^MwJ zmO8Xo3Y^LiiCooCh6V}^&@w`Us>*7E3vS`u5Qm9ochpo`#3NGi1x}D`8A2uRoW+3- zEBN~+;8~&9zPbo5-{qQ0kqsg>kmm0pdV%-9fk6b^KY(B$ z`=R@-pJJ31Vb?znhrEq)F?TbxtLIgz(A*&t6ai@t@lM4_ zzt}H;*(**Z2})6a$m&>@fNo@*G6rqV_Am(5R@G+0x5dD>iUilwC>ozH7DCXj&%o6H z7#rg(n0`f<62KOWz(#z*sDp%p8#8*BE2O-_yg<5Ir*H*Uat?EkG;s|Gr3fXV&)}~V1Rn|D*+(V*>FdR6-h2;5m zq9Mqw{J(DvJF5xap&&kFMuU<=nU(-i5PZ*|*$XJG z1+_sy+98bk^)XAG-bI{+Hw(9 zM|a@4MAX2%P}1-RWWt(l>2RB1!ZL`_ycu~C=enrzeTjRy66pkLL-hF5;22v0y#`}S zNCWypALhF;Zzg2UPwg_$h)h~J(8~YS^;EvSbm4QkX76EeV`N>Vw3qPHVvI(Md$xr+ z_v|%(1a_&r0Cx`|Ko3|7<3dXI5=R!bG+@lreldhTs*+t^cf6-KOtGqEF6LmGAks@L zJw;uJW)M0JkOOoV&%^c@YlfY1hooz(P!4suzRjRk=&rB?^duE&pg6il8Zk?xVujpH zm=t4;a!NZGAsB_(4TTTe(}S#unPVE_H7*FGvWW93fkZ^g_8PMTd};pt6iE*&x_`BO z#k???P82u~nlDb2O~!%X^$_vCT!d|98a85`y@SRGM3Gfr zj9|a$5;zmO(rHzIB2@|2b z0w!jKK&f)brYRNRWFA&MrZnDb)KeP`4dK`eeYQ(6PD_mmND=YK*P;L+ywwZ<>W2yA zDlI|=)#Wg}Cg2C9H*$@ZEhpZGwot_L#Q?xh)5Hy~2aFIAFo*>ZaH(9liXiEa4u^}6 zad5#cj3@vmya~Ml{25qb6%=2k6iwrA@puFEKGMZA+(ho0L3&>i!Qa#3zR>s<+hj&@ zMg)o};V7!WY_`EG{lJPf2G$qq%V7+4+A-VkmRlh@_0CS)^cO46C4)jn7}?*(0|IZv z2CQ7lFS@3b4|r7U+Pq{heh zE7*)giBnTIKz;xmMRnMN6yz+o?>jf>)3w2r1+!9S5!MDxDX*XrOXy3ejTmYrah8;k zaso}z{S~8axYMH#HL&4miHc3c*=~hx;wTMdsyA$BXhs2tw-VmjJ(jHbQ8dUIi9pW7 z%MF-SB@=Hs&|NY(AfgQ^P^ z2;mrPEVXN6C(#mtYzlGY%S?=k27$;cW8jzwHn?GdcwFcg7dc|6gGK`7c52?Mwo|qE zx(k2GCKaRO1$7aGRvjwopWkC2A{jLr3yS?7^;zeF$X5fMmc+pg>JOoUrc%9QM^HHy zho*5<5U=7zwQLBfWxDg=8{A0fNLfLmjx<{_gz8XvWm^ciiL{dV^cUD3{yxQA1TCx! zyo^A8Cip1_N2@A9Fm&y4n?dit9i2=RcPO=>eBEg<5LyqWeWCS)iQ-FZTE>#QUuU#; zBPzei#~V}S$v2XU*)T))@z%yo(8ebrn#IP)Y`1R3Fe{ju*F0yF2L95uII8WRi*L<@ z_-`oLc+qPf0qvKc!>Day2X`2Wp517eDG`zdVqMhCpc7*P;H^sOPE>4?Z!=tn7(+>I zfmXEG{cj%1~Vo4_$u>oj6LQ}OH4&jmO;4%_A#6JP4cs)b}q)A8sBQk|1bnsCK z1Aah9x828#D?W-NL=y&5lWtsQ%9d`fvBZStV3ok-mz_j4T zO(3Fu$VZ`$B12$cO-^l5gfV237>q)t6M9MoN@TA(VT=xT{mH<+E}msK~_V4%F#Z5C+!^Cj25Skeh%wj((Mb-&oBcc3*ZmMCZzu11pcARsU@h3eZM z#HE<(L^-Lt5JsNsXBetnNV5ZYpd3T&ZoLK}qk~6CfUw~SI5;>DpeU7efB{Dr?CwAZ z7ip)&;5EJ#u?TyL8w7L7i1G%PKXab1fc}wm3W?+J2td*Cjn6B3$wi=;+GeFUhBG0lNuakW{egjdQBMY;k9g0d z#$y9@zS0R{$S^w5n^4q%Alw=gaD9-yX2p0O1|?t_^yJZf_6InD6rw(b#V};xEI$~c z0b(m4FuI${J0UhSz?9I;^Dla(QPPA_QHq)<_D4aP0KY-Ghf9s6!vvssybexp(Uk z`}~TAok_2w-f%|*TS`@4zYge$72;mF)Q7d=zhGttwL6%uFdM5~Tn#0sy5kzJpTtZ^ zK@_!|rCo&=04Bf=CoQZhC*VE7JZa(xpdPp?!9}`&H5hxuO&j$*Lc@Uh0b(`uBP4_C z#~SuZ9Ek-x!3}Yab%R28-BH0Ug;Vh>aZW?yH>26Un(he`_v zo!Zsz1s+AaH(Z>l);f-fiq|n8V*`eK3hc58#oQa&MRur1&wG2PLw7xrM0=CK$MwK@ z%%$0PIyiKaIkIk^*p?9;7uQBA+G1NBlx9@g#a(M+UQQg9f;6k4W|n#?=Avw-DatUk zKe`jpC$6=Vv{q;TZD_$QM-(36grXqPqHYK<>ewbhO1CEySVO-U+lHaH*rhX?pjH_% zIMRjOL>z#ISGd^JE+hR7#h4bIuH-PW`m&jWmUy-q!~N)pL1)7R4S>x*BrcE~;1C`D zl(e^t@*zAI&^yE>6>d|r0JREXT1O*dc_JLZwdxm07`hqo4qOLG3HJbihi^b_#{9UC zQHS|qjEp0v`%wdx=CF&2Fimkybsa6tM;icm9Q^n)#>(0z;7;5TY*Er^!+lUf-eQo( zH7h0CS>W^a#3l%>*Co$VdvcBls^a|=U)1)D#r;wP8iuHkDC)o*1GUda?0SerqMXbT zjP7efH^>QYElNnUWY7?F=}}mKA{0YdcdSJ%a1ybwH{b$sTnyvOkb;+Zk6zl#csy4I zeV=xj?872$daYeGp_qMmRd>8Qsb3hRBsx!BvZ;X*C#Q$xO>K5E@uue{E_Rx@oX$1? z7%49WH=Q?bBDy9nkEo>OMImkv-SefZ)q{s@3$IDEH| zn#P1xoi@g%KR_aLqj-%)(h^K{l}Tb$c{B*DNA(jijp1~CC2nUP2AfJRGU z)9KU}LZ<2(kQc}MLxCx!8tf8R8F*j=P8K9w1sTych@*gE#H`>4g_<^k2MBlI$qvGk zVpWF7M`M)eEP7|Sr3S=0dnf^ZkmBRqPZ7zA?GjfZHjua~ww?QsxJuvl168__^>j)) zq&8e3(YR!y>nWfwR4(`tWRz%^?QJ1IQY58pKv8j{ybc}SjW{K`HzSdZ#lo7894L;X z28wG!9ux;4uqIlk;+mxk=L;Ubz+P8<;h~mqGMt#i2q&T`K}0F+8QZJfh`s692!#WK00sc z{NWan$%k5uCDddJ!{~|fST|Rne5b&P#snb_XbZrKD4R0EjGc4|XalCUy$P~h*;luZ z?%v`Ip}tY0CK4~{)N@PcL1dND=8|wvbK5Y*Mu3sE~q~SJ#a~d zDs_<$z8T2Fs*Wpe$b>3{E-Y?=4C;aWBYn@UC+H^uI;vY@FC8i|a4g9ixN<}|mh8F_ zxq!TVjsCj2+nG#t7O-#H?JOo~Ws6ChI@UO=V?Vpt)9z2)XS$W|&p_QpDUR)+1&J6+3d37siH zbRs#!SCMtQa1X4TM~i`#oP54m%&r}Xg#WS>ZS4>m)v9$=*o-vnQi2IHXD-v)eWOYVsS);MKF31V8+Y`_S1Eg%70r-IwNlh_3z=;vL?coedvn+F^Gva zQzLc7aeuAD$Bb)5SWhJaAiAXFo0(lnGEEciIEw3TX4}(fnD-|d=It6PKn?`nMxPox&Y{^B9#{`x1b4_uo`7VG zm!vNOh{0{U*Ks*ibXgMNo$!tdBb{Xk9!#tKFY97L1DD%yRW_ck%5v2Ir`EB)KpfD( zSY*18O;rTY`8fniEM`lQnsKXvZhznct0<(leU_hp3kp#e!pjjE->YyOv^cQyIRr>V z8?3Bs*jML65=f~yQk+TB=R&G3!>A333I_Lme@XM`)9-mm9Y#3>1Cn@eH_n#edVY`) zzO!ZYX|5lQUQVJRn_(D7miT!OcNt4+au=AUQAG-yshDs2ue;8_7$wG}lcO8~MIln} z91+2nLg8CrVn{MzXh?6So4q=Kk~vTlokI+9(ZvMtXEfm);Y7G3l!+TM^U=9@F~@<%C!mo^<6~^9U>{?SGI5<I0{DuCp@(7*e8`h@8Fr(GUs3!DTQ; z1Uve@up{jO5t7|yN6^oybI}nON3TZrCywP9Mnh_tGXM+eO#-NXJ35ZwTo{9y&1{}l zt`PkpC}4774lN+X+)3MZr(dqY7k^-ouZ(i%GiYom>Qx&k6_jJ32Y=IlUW-sTMa2BY zVj9ZjsI8bnM^4lOJ<`xNK)Dw#__4foc2zuIx&RYVewhAo_SF4i5-0-ni$p$fB?vwLY8oC@Yymar3Tfabxw8SQCGicJxO#OFZ86;6Zc+Z& zZ5B;Q>_od-gu~Re0eVX5B6ShSq=>#z2};>4WRJacg$i5pp*O^YDNr`9%tEfaB7(<3 zP&}ACD5dv#UJcr@$gDnxSJ+4s3W?4}(Oa%PJe@7!Uqy(B2?;=CCCCEdZ9ZCmV6ggb? zXybS)Qd5;)+qquUi;`2X7Kp#*-)1z1SinQLew07BD73?H{(^THX2q+x4kCEpu}?)wK4A%kSH84_&V;W!#%EwU>H-y z5FjyC3^oJ7Pb}<1MN#FcaiB1vhgDzjVn)b=Hu!$*L)lprGZIkuLKsKS4I^1ZpYT0X zI6aWYK&$JFT3y##G^Rmo!8>M(DBoRN>j$cbqK3o8P;)4`^FBI1adipesIq?rGQ$$O zQbPz{2{_t^ zdO%!1aSD#612Nf&8wMX=0i(u9Gl*m)u|#1EZaX>`jSATk`w%6y9K+xE6n$kv61CLc zqyeG=C$UJum|}N)uL*fJP1xY{F!2KM0tnHa5Tfo3uq#Hhsc948L@vJU>vd??2n)qt zO-=-$AI2f9vW2dr5BLE05aNBoWCm02PQ>U4<|4DS<__#{k#(>yG`bq#EU#;@R_E(9N5&=)6l`g1`r zaFHLP1;#K;FSY@$iWjVXMPy%?2N5ZZUY~6z<)7U4CP7Cf@Hx21LgN|W0yGdMkxTmd@b`f|;cDK@txyr=OI384wsN0R+BJED+_Hz}I52Pu z=5!;IzKRKqH^$R?os>ZIyb&v^9X<@*j!n+XX!>n=r)h?c&zKTeAQ9W$n0ukd3s4KO zr#}~@8maGpg~DQv*iRfp$jRAt2t(IlAz=#aY{_}L8u`>a7~fI_y%?GTu5s0*rbN*2 zE}I#;tIY`(-bS>eM~q7QCwKV_K`&Ys7c#CMB!i-#2!p1+Q2!-1xU&sYU^AUuo2|kv z^i1cSM9^xyj*4gtd)I#k6c)nn*pFzyE%s6jWr`!iBel=aie6(b+Wn~T&)vAwZXiME zi=1CJ;y|s-fJ_UL%SO{(_j*Xc;!q1@dWXLlZiVt6^KXsnlDe|eP{PNFCA|E(uY4&+ zp=+$t1D9?|bV5E6H>7K#c7_*-H;BXk)z;YuXH{Q$JV1B}D3E{zLCK3x5(PEENHSDx z0!SeS46I-lwIo1Z+!{@HahIezK7>F?Od|qDh(JnMXe z8M7mF%XHG1?UZyw?tZ@Kcb^38_Ajt{?{j}I=Xbs@=lrOlAj-u?rFo@My(gg%WYYa8 z(v)->+dSr2isrKmf+(ouL(gXa=>XG&lSTQ$cFtKu)QMqG6n04F$fMC>jU9F=k9V&W z*)Lb<27?c2odKPGi)&(G|ItxD+Z5gT$Sd9|_+GDvN21EX>HkTwYe zP7pJ!O#mEAzv$pt@u-#ku@=UpSxYCvt8q?*c%xprANHNl!x2B5Iv^dnyfhfmn>ZJ0 zW|0&dipbCvW#hp{OaH^jlS*q%MuEZbfy2``3^PW;5!wapbhsmG1Iy${$;B!wD8eaB zvD>7+f^3n*p(-H#B*;@2b^+kg z)&9HWQzn+~6|@B|AQKS))?LopD}lIxkyVSbhv|MZ89M`BJyTF|yoVW>S%^2$eqNg@ zn-nAYr1r%Ij(bC$Lb%|-mj&SYr_CMU_n$d`w}9;;y^c7yN!|i{yZp z)R&8d(8ibKItN%nxalcwIy;802^gb=L>&YavMx}|09nA1Z4fy=Q<9PTfXiymL{ln7 zLa75P9aog5%8p&*34RlRwLNABeY{HvSwRa?=YhPeplVrtlc{2=lGgqL4&oYpqfsMt zunFxjVAQB1s&2VVA!}HpJ&F3S&`qs?wD}ar5+6#S;X{*V9Y38t@Q4A$iHFPPJs2^vm=nax9e&Cb_G?EAznF#23 zeyH`Jkj(Y%QRl1voi7}2pWpSwKwg4Ax@*b6c?zU|axE`~PSBT%FN7$;!OHZCTnEMy z@03!+?4{O@eRIpJB&W=%Wy!bz{SOCeE$%M(WI+mq-{8ZXHhM8A4%!412SH?&?4+>O zG-OQ{J`GNnX*;tOD7}=R4 z70GCKfa6&<3UPS8)Id=ft19Id#~ey9r*t2VJ*Yiu zY&3zzST^m^eOKmp05*1H#w%DFIsAYpG zc#no)EcPulI|+;&!c|7wvQL4GmbyM-T~AN4N49+YhyKaP`1`y^$w!*A7X&405RG`P z(X&14hxo)Nr~Gb2_mWbY_}7Y>)4Fj}7%xeV?pT<(=ILeAMPCT+*ul&fmWgo8QVpRw z9`dh`jmB~RGpcOmH1Dxu662g-9OCi{{(Z~2(9Y+Ys_`@G=rW`_QEz3F}yd5DU>q>y^?N23hDm)f?0YWPIv3xKgW+RLR81Mqs|labW3?p)GPMC60am=zmL>FZ%`Wk(^>sD*QIs8rS4pjcr&S zJ2w!V8AzgWmVh?>W7kbpONY)xYAQ)SzT3SW?|a7>8Zk{Epels$UE9e(u;zd?j3eA% zH6}9N4h~}G&_^1Xa+mhQa-@Xm-?sN>NP*g%PIec1m4ta`is;ch+($MqJ+=}~-)bQ~ zG?~Vv#3vb9h1LXmhctZ}`9Baumd|>PWlWw~0sIZQt0R3?<#!ddFvjKMj@)V zDbTZWAh_&fqOkFMfBk%lm#Cvd$K#Xo{2hJheRg>q=D@8Tb3{2XiOI z(@{!u2niQJ7m5g5xLBWN;UdeY@tmvxy~?!9}W70NJ$$xd-t ziG@q!c1I$CeWgHJ#J3^Fv*~0v4DZC~&s4nNkkqo9kyHs3w6{VUZBw-YaY}q^Cwo@} zY-k8;N(ILg@i(ZtSnA!M8Z~k=OTRCWZFD`C(k*fk6j4OKxxfT~(6tJ=I7l1CR5P(M!irRpjt1Iqhx&a^CWq*wg!Hhj(?K zH`7v@0`vQ++QWP{DyPBPQ!Rk;c^V1urN|e2mSHQY1oT5Sl@2q}WV^GbHUz7jeQHSA z623LI{ z{<|$EMw5V!iSX6TcYKMMe&CL3A) z@~z`If|NoV5S3HejaeMMTNdouMwK>#11DxKWaXlaNky`=;Z#o0yTD}yi)+RnZQqop zdrS6KOk8vf)7R^`?PDKPbp}IM!@`3ACk7)*msU24P6KyoxBt$7ib}X4wiCA+d z4K5Hf4`@~JX8h4HpaT*!fk=f5rDCPfGSm5+l4s*|Jbn_iS(j$|t!LTh_;!~MBi$vM; zNpDLAVPA-LrhD|A2~E|<>F%l}|0!m`_ zFcnewz2dQMwk9!yFbTlZjv&`vVGCvi&G)Q2z8TB3N=Kww(Z<>dWN-E}HPlgFDQUcd zL(r?O_>E1Ws$aI!o!?LnN}GP@teDQ7450<&h~?R5HnApcH|nru;n*BwiDu!zHgzg_ zCKDuijv9U^XI25lzZVC}?*jGMJ420nCk(~t4|Mg)eg#ERIlfd$D?+kh$C%^Uqh7Jx zTp^4xogoZzTxC*Psw>GwzV*7-^oiu3yl&>jfgrW;NokiyQ$xKuCY6IR6+AYENYw@p z#hws;1LG5IZ8k4G7+;2W!Wa=bFXMYT_f{OU0qr`U{dLzll{q20AcUCc0>Hw{0eAnX zJS>M}AFGL7R@gp)5|WQ5r@jsr0g|flC969`OGOd??2j~Ucub^$buUc$9d*(D+6j3z}8+~m{@SNLdQdtKW=SMs_5IHUl|`h&Khf#~P0Q zN1iTe_mX%Q1dU(1RHt1Kei=bk>*eB%_;?r+mzHx&l0kyi;pu~pn1oQtDbxDHu;=Ezn69G0;mFxZpElh#PwtXcxz79+S>XIk9>Mi*(?ZH!?#s^ZO%TA5aZKXB&{4LqeUk$cuv!dPJsl`zc8 zF3A}!xLJ=3c2cplhhU4vH_kC6R;Op*!39?CAW21Q8>OmwG+}>b6d0RusJ(dgx~X&> z7nUja-E_)8=837!+eiV0x0XbQ!;`g>XfLY2R&KQrMxQ#qV)^Athasp{H7OqyK>-11 zUY1iLhTW_KK_RKcR@XBsVJ|R$_@`3aX$JhUKudXv?CrF5YrMuH69bLYL7Wn^mE3nA z(&F5w5ZQi96(%P9nrXFHs#Wl52$weI0!iFXBkmC2h1K+UKcI?JAn+~|MPqQ0QMeeU zNBM5ftP1HP&@Y4+EG9bkyq?bJrQV{z>{Nytb1Osz|UY8Pj*n5YOY`8L86HF(WIE zWv`Bq6Lzh+rc_!%XJ_3IhXfkL1h54iL>=ITB!Vz zqF#O`ZM^XFWKtwRO(pptL6OhkIz5|;$f5iZ2YNsY3UbZG7b5!|fu>ruGm@RG^npnV zS@HvN(C}wS%4+``jPJ+1MYl$x{S5%X(%@Wo3ZvINc9hkm1>EXv1Ep_&Q*MnSmb-eL zeW)p<;@kpos9mQRbC7>MOC2<iZM+R=Y?sKS&!!#<9N$ij#wPE*_OH+vwb(L&RQSOcH6QJB;Y&G^y|| z`9hh2d(~lh8{Q&q;)^O&v4)V`$RJRp=d(y(>CYmqAVu|_kMUA5uv;zx&}1*mRU^LN zM51sWmcFl4=^++}zU()C*<7(p%nfnd*Q%)WA+3?IO^xW1g_^+=`PbvPXf3%n_(u3Z zA6839`$#Z_d|ZNwZ;c3oB)}N0b+Rp*oq(x|+`*-;l`*2!NnC(xLyDLhqQw2AY9A?) z@Y3B;9@pC?D#+A5EXRCMk1yGB0Lopjj!UwKDBN~d{XhkE8PfNB6^f*Gi8Wrqp0~{I z5vpgi;XYLziOOeND9QeN^*&gk{TovF;iNH;<0l7-@X6{;nzwONR_>R1*;u?)-f~`T zfKsj3_DGd2vNG|GbhU9=AI8pk>hL?xqWD!jZf{i3Y}mIPu_KIV?UDq*o&=amv6CJ5 zUE1{}%_ba`sUnFia)cGjo6GvF5+AjP`qb*5{QkahXV0?da+N$%sp2e6H$R_gc(AX` z_QTYS25(sy8J-n4(99g1^E+bKaYPgkHgjKP0zDruP}abjKxf!lN;aj9Ob=~>=SEIV zEShYJS*%$M0Zjc;wydq$aSg%Lu-}d(BT42o&bmD7>yttwLpF2?7oSkVR_k5$71m`` z+JMO=#$b9Yx}XibGiQK^a|UZA}MWYIfxR#=@6{e5(lvIB9s z5_Y-2<6l$)XAL{zlmlo#)S3PTZ>nlF=K5im2$I>{1^XL~_oyYCHhcmNJ}%NrXi&66 zniPp4$uBR7eIL<{-U+wWde3o=VnpD4h&wg>5)yU)CHLMuSZ+a~5-&7?#7unVnq?ax zkN_CcEw|=wgaCJP{<+7p4zRXgjfl;&X~#Ce55S(YUp6*$Y;sOpQ!kks7troN5}t&O z0ZG=OtrLpY98S{n>@pEjn`RaFDCywd3Ytb@HBpTP$8{D)7`cLS_)?}DLcoUuXrA@#iyeNRP(3C85ZhL76ODDE0}`&csl0R$JCICyi6LUvn{g1Rw%qAaue>CRK%DelY%G^M!>RX zU5&uhu-LuZIKi|{o>0{nsv^wr2wT1rjWHtI!TvrGM=OyH&fPqpIRb!uP6MB#ZK-|2 zOITCkmrzLDX(-@v>0A)U5xTUxpi^6}Pd;R~?xxv7coEw~V#8pAN0So?)xSjclo zuqZi~L7wU5WSv9KWK9EbTbVvc`v1pUka*X4J+?i-Un%?+VV8M+qI_NiY6MRb0U^Pf ztKuj^B(l(ksbbpfP8O4T(+Ght8@3`&5k~52CrRij9Q@y!BkQR4LKm+SXKtpEmJ&Zh zp3hNg)<)v#@KkWTQj)W1bQ)ocuTWYqk z+w~3R#||d-9k8+DWR^t4FDFIxSCyLvU&65^>JZ)uX5V{U4e#$nKRz7(7Xjk&kEk^Hvy7$MLHBA1>x-C}hlMF1otu3fz@s&%|wzXeQ z0Tn{sVp`M&LE&*=mnbpvd0&v%uJKZ=$8nMxp6xJf|Bl@2=0U>&%xDpma&H_hZt|kn zj^ji(y``&hQq7K82$k+vT+y*>hsr$I*0H+O9kHKnhZm-}+p*Lnf2nF-$g__q(`Rle zU-0)iSipY=q{R~1-5daOIP#Qmq?K6Rtw!;2g)lyFoupRQE|*&Qa04W2DB+W=!1E$vczCJ3rD<%jtn_PIcr)>K~A9ppK^3 zQtijfbp%hwe1^6vrC}|-pufG$ZHVBG(p{YAyP+-CPP@B(S?=z48`IgrqB~rYy174L^>Tq2UMa1|v;R0{@U**UHjYZVhD- z`8(v$;DFR+KdNN;+=#>&`RL3DB(V=usy3CnoEfOn>8Q1nN_xj76hss2i7TbbAy8P? zB8|#s@ra@3=hnqj1%Y|eIvQ}(mTjkTY){6T4V5mC0E%xu$KSB*uaI44o*HDZd`r|~ z1A;fv+J2F)ys66wy3P)Op1rM@swTSrMeIs6q3y~^#NU~S$95+UWbMJVs$QEos}%h& zstZ=C)cDbWVvPoz4!Gy%N)l%3Q+*Drv&>k`tAq=JbU?EtGZq+{>ZdY z_Kg5RA>-k`qwePKcmN=R>z3b-lQE!m4mscTiNI86A&KU|W+};B2~BxBG((eL6-!fm zHxU8#VG8pY>q&oM?b0vmuByCZ{ziAEaA^&TjAag;k2f=0ZMaz*^lE3~*8m4Yd&PNU zc@5%%sf&Euiq(Ti$v<{Gy`jYVD;~J@hx-4%0xXc(*TO5Tz|`B?5ghNR3y5Q=d9Q+FSv~OU^^r@xHF}q~$g%&ZJ$f^>9 zTV6^^PU5y?gGx!d)C&?tk#qMht~5)6oJ%`xxSV6%@B_9GsxcfKbg9ayvUl{_rhs=h(K{Qw@!b$mXwDRFqLZRRK z>5Kdliy$jJS;oeEH4O^JXi$n+-Oq`EI7}@@vwCSex*g~00lxzRlvASekyLwKlFs&B ziuW&)Cjj9b9c!JN0Z z+Ijn^?hzmfCF#p_A3=um#PCP3hhmfrR@p~rzizoT`|GTlO2Pnw?uNcDDss8+S=gsk zZpFtb{>Rfn7lvisH12>ip%@g!dvPp==XZ=PO`H@IZo_n1^8_Yy zGu^R)gdiV`WG}aSs|-D_QCUkoo?Edn#^?oOd0e_>Y8gBUl5B-?eI!LinQ}W8XNlmm zKG5zuiPN--qnT^FGzYHRJP9>J&_eyA2Mbvkc!Uab#zZ+K#i5J|4Lcc=964TYdh+*H zb5#;UJ%@@*-N6}WZD10VEf9@DKNfFPZEGAU+BcJgP^o<5-~_D(jWyh1crV#lk49{j zoohB$xblq@d}DCS(iNocyel|Q9E4DiLOe~L)$Yd;`bcttv1K?f7`Say;29(;!BF`G>W(SrCAY4Ft(| zEZ7f;3YrlGWupzb2{$JO&CVl?dg^gjK;K*8B{md)EcirMoAeY9?riPv+3?YQv^?zrv=Mn_?gmb|RJslIbiBd_{Z|)6K@V094 zg{q0Rv?O`tBo_#y3j>)r`_}0~2p&RsOIFa}5*H=Aij6V)>t5}3mi6sY5(ve1IT;3! zSi8D`9OE71IUd4_@wuA%69CS)=^V4Cn`4U;J|DZ5EuGiH3nr&5Lhy%&Pi-LTG2j!d zN`=c_(2FRHRI;vz1N?r)!@Fc1=PH>WcGGWJARY-&hdaTXvS4a2`G&pP^)@aFQ>-;O z>xEx;$y%X|nU*?5O57=`ddie8bVtaD?~9_L!#p=|=w2bVCwnqZaf-(i_Zr$;G3=4+ z<_@h&{gqWYUKKVU3N#Vs0oRY1I|@N+hcFpB&LqP6DWwwVY|C5&J(7FIW2x+G4;hS{ z9i~xkdOG2s2gtN$(| zLIlcwoHlfVp~C~0b6UBVFe-&+pp8}uLui1YjWIaEH73wwR+tAhW5~#y0`^T zEqEuiFUhtAez}e*N-r8A`W&?tJ0Akm&|MyO6MU!E4hN%m=8LEQ908}qz=D016;fd; z%qSxcTaZ0;n@{+hXKT6$bNuoHQFv$xBix{Q$Pfmd{m57Bie1tNhfVjw&4ZLejcqum zoDfRfvIAG*k(55x%HKRbuAOZ2CD}QJM}ZesRs+#crE^o}%l{N(1xL71_M%`1GiYkG z)7z;0GEI!tH;3a}K+XmxLg#+k>RHDPZ&@<_u+>-v^pY&=_eQE*UIf1bAB>)muW+T7 zB4P>IH18<25=W}j*`c7~vitWyos%<*C|_s=^SH0}TAf;noN;puicXQwIRE;kMsCL? zf#NXp7HCnJeK=Mc1sR|3781d^r(TUZ9KlKZ$IQ3h1Rn^-6$-||i9Y%_DaBW`@>-a{=2>1Gp zJvN&Zneu+W*KTRy)f#eiwxu_9_{UqEl@~*z1ndzp-G*peN3ndN$@K2>W`rBQaXpBM zYrF}A9bPzoJJi%pi1ACle2#PbssTcQosft>ZBJcl%D__)WQud}J1qQPHgi!?!Ro;z zd%BaM#4Ag>j}MV6r5k literal 43384 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

ab357g*YCOB}01|Hq@2V*OX0Eh&NJ3 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

cZLzWcE%l~kA&8z<> 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 z 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%0AqhX%RL6%+jaA6^*7+Q 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%0A8}oqgmPVaRP-dNQv~SJcBm0(4pyZwC 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 CrS*mY literal 89728 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%0AS|Hrbp?`U_`_7{+9W z|G~<`&bosX7rO3xLWruxR6fbUz;{r;isL5!ca@=jrLF5!20BTgWZ;Ri+H8eoY~-1c zd*r#8r}khCBg{c!OgE6)TUw0XN~X3-#J|LV8p{7X3P!X*$-+3PN{uq~F03q(?MMI7 z$Z^wMzdcumi!IWl1@KNz-UvhN3bjEAD?UK?LLhZF=-gF!Ta5#|*MF{L>_p~bU9~T5 zfvW&KP*p95TCM?^e}=TYhUW}KzeEj&70ULs3O1#p3%B6L^QkU2|zIG0RP<=mF*xF5Vih=wyp( zyq?e#@E^)(Nsg_)de4E*{dUR`+-f?YB+1y##M-|(s*aPOVle1Ek4np1hv9b8V`X3H z)A8uMre`M(t7}qJ=#F=mLL5DFsd6tCs7iq9Mp-8&Ke7YFN8X0i3&FY)u}W>2pc$l> zRmrW@K$12~4qh)hs8WS1v*!YH{xxRSzsCIXMf$lfoHPFe+C6Le15913G)K3it=)QJ)@M_GkI$lhlwO7w z`^#gfH#v%DbiosrTdWVK?{yIns!`+Cc26x#@Jp7hNTSBd2sd#2%Cgun9#A6XFpL0f zjwCRy$XPkFW10C^_rJJpcWb$uBx+GvP1@dWwIJ=F2^Ls?%Uzg%xC&OR|G3`4vxCU? zND?gvEz(RK_52PuhMvOlJ?gOxcehr{04`4#Ez`JrbovwJw3n71yG|P|+XYsw^JIAd z(MNcY8cbTo*}&z``#YT5ueKxArJ)a9=zisF{*^y9V~`Olqh*+$2$=NY4<>jsUrd>>oD16YVX*0AY zW$yYO*pk(hr7IZg9pn%&oW_f;`G(V#zGD+*mN=W|vaf`F%uAlH9LL8nvtw|OH;Dl0F%aj)Tu_!1z6KRDrcj}#z7L@z zhd3R) zn~rsu^{)=UEG(TGL?U(^nK>n(?BPxD-0A}6wepe@F*Z%#9HKm@zC?h$fwsG1;O7Tg zNiJR_hx&oYM3I$Zhumc111KW39+2XnX|b;o60uIkbHWT90=+PN;x>&Am%829X{wc> z!{wgTSUQR8G!!*GuFu<<5d`;qa()_*ifu8hYWNVILmq~cWs0Ej@y8msiQeS4?9v}#h< zOV}k9lu1C{U?N~KDz@Zp5t3XNJL3ty{W3c(Iv>kTwp9h>>fKfMm=YB-taveG{;cZ{ z3OkVrwZ!A>UlV5Q`9~M3TT{<>fAO`E!?Vs!?hRW-`#$wyuo`QTjhYq@ZIVV{=izfi zc8KMK_`m2L*~Q0bbO_K~2UFMC%=U%kALc_8uR1^{K3n6W3bYiGxp{aC%!OafS~F&8 zIKC!>Qd1pQNAa>=PC$!#gg%H?X62QdOqmSoshrUJQZ=seOf1z?{v0+xqmI zkmL3Cv;Gx*WcL0GUgB7L%n9JLO!7}u?CQC!yOs#i(PLaoff}(&$p}&GPG#hXSUm-Z zbdB)^Vd9@%IOTNFHTf#A4wR6^1R z2xh6;7dJL78SO>Gf?VS)%&lpkt>?Co0+K0$OLgmZ0xeg~%}(j)^{xjo=kB!0b?vSd zu;-FxwI+F}wX`ahR9JULc0PnQc3pBH%VT)jbw`-nK$3{?cTd0!0qm7j@DG!}xrK#P zF#8HEm4B%#nFq0|{}LxV2ZA3N)%R+`MAN?2gEfErm;X0^TBFimdX-WSs7#~HpH^ih z-x`lW%rEhY_5jiTS5EfhI;*qj0LHDl7QRZ>P;Crs)hYv{4NNW)#XK<7=C2-}#64q* ztm6)Nd0@O6AeauYhFhjLgGBSqEXAUOd?Qu<_$OG|nI;^JOQSz?9Pu^O1tHMix;hpf zVZ8JYJS>Cw--k8uv&-U?bLuk@xLJ~B+U#Bg=aOHITdP2Y`L#}J%)gn65k}98ln%Gl zE9!5R!$5fP4&}*R5(fK<*2F%N%#IV4Th@#)$>I$?kzhQLs02QB?&RS9~Vhd{r#6EzHIY|zf7h21c zn-acA;_$uEkT;OKY9VNe7UfE_Dv=TSc-#vLT-72eFknT(bnB>OL@$r<5dqLrg>=#g zoVqiB@{W3v3@rx1ieG!3z7a#%l2q}RE5`^MKc4VG0OREmo0o*DG)b68?ns>vl2v&Q zEH`e+^w5GnI-O=#H0V-eVzwnWZ7jau;ZUnY0Y_dQ%Hws0k)({|(njx(Qj_Bh;1oh8 zzOMCDFusnr>a$b##H|hqux1W?7}Kk^c)U?a%(^O!*ytm3uq#Zr0*z$t8u*(owT_fh zUZhVQwY{DT#uVBiy`z8swo}lbF^%5)?SDIeoL%{&6U_S%Q9X0{a{iU6U!0r##c}}+ zSy3g}Wgf7)f(27Rv?2;2wB=H`Fb&OkNR3dnJL0H$9bqtOTj78*eG6+3h!U_h3?g?8 z72Nac^c|!iDqg?nSO@-;a+w`y+`$QAzvQt?_{|2vNXi| zrbEqs(4;?(Ew&&Ef{scpLWKyPtE7g~aLk#oS;iJEXwF26OZDwvb#Lz3acMND$GCAw4-;~FX$3_5p^`;mnIbLZ^K-oR z$^yu+(mrXR2${rr(GSG#LT4cb#wS5+s5!aybHLJDRz#UkOs@n{g*=Bw9>9HJjw4Pd z_iG81$O!a5t}6{2JtXJx>Y~Tpv&HJGpl4y}jn_)6vbR@d1Dj6kyJlqkKn}rGHM<95 z=>BBDi32F2rnfxbEha|q5sg4TWsn-rGXn5aMEv3an%K*U#7X~&u!jXEaV6wcTllXl zCqf+7wTYoy$70p7tG8VkasA2yAzy2;Q15 z3YhaWsN7`t;3g?{Tzs#4#sMTNosu+Sqx8lqv(Z=5i-Qngl;Znv1#o5o4fGFng0Po3 zY?(?Q+fBB{X@SI#=v42@F5gLN2N&m*r6S`!$-K_T6sUz3q@d$EtjQt1kj6MF%Th01 zrcXVJFfyS*={FM657<-o8mpIT{Mrj6*X|xOd;b_KEjbQPgOqwWIzo+#n0>Fy zWkk&LDx`S(O9)mv8d zP4mv8RvyXU?qBXuq9ydFe#%f;0k7G!Fo_TkF``pB$tcLssLi2yQg%?yV+8znWN9xs zQcx5|L13TlZKd*_(q16}%A)}Go;IjTkVN()IH8Y;NS^B>|unTYyw5Pu4?Pa$8r+* z+$+deQo*TjzzEiYP3YRjT9x{YS#!&eiTPy-LZ$0jfXbdJ2dVv~jqHi;d0L85g|1uU z;#RgPumIG&QHe|xYJzG#QOC7n1!!x(DZ;WC)gdvS#$(SP*7vpIFQU7`SXZCynGml~ zK=Gh@kGo4NO!oL{^?FgyQ3LV$M2YKNPm=$ejz2nUkx}}GLT-D-{rfZqSOTPSK@tT;8a|rTt3yL8txOc=5eDY zX*S#lk-DkH$$JpVIy2=On1`j(fo72j(YK}nWRx_kEe3HNLc|el&X|jLH&r2dlWcZ} zTJES{XRKs9B@&2;AcVW}l-gqBNr{`94|#k}L6|So3qkE{|C1}}fnCwW9#|Sn*}kQ2 ztdEkK{1~1``v6&lx?ZAmFFob-=6I~hX>#vnCKuReS!LcB!j@k}$52Z>;flJ!rR5hn~rh~SZx5K*MDC+K> zlAI2mUw!NLs*Jb#)Eb}an<$8di1>SO(efT1@$lCoTZ>Ou?*EGv$n4_+ux;1p16No3}Ih<>O7{xpC zT%peH&e5;a@mZcvobtGb3-`VEC&aW+t-7M>;k$ysQ`4oUW;2n z$s$1S{h6K5E~~(R==Nkb;^KZiN-(}qxdh9E7~$;j4rX6ypOP}-%I9xWl3QI4Q7(v9 zmhn*@cIK~8JG2?GrZ_OAz$0bfd9M&tpA*Z__VXa;tkrlJbyf9IR0rx1m95|wBor5d z(8hZ8_#x5u%bD9>ly>NEvpcCE@ACHi8w0*L^ZJ)OXR~J3n0K{;Y5x~cGftqM);i(~ zv#`27%XU18Xbr|5$jNvoCZ70@HB&0lNC_3S03(!~5vq z>2)_%4S;D&p-H%nm|Y1=d3K4oG(Xv`wi0A@E+(SSOU*2-5-?%}f|4Mr6cP*|w*4*LY`pb}oUh!Z;wR z$m_E&AfYF=$lclSK7(<@S{5VIurMz{MGQRrR}o*5A}xL>N@71Cf)KirnAhhN;&;rgCCuf5*kfSd!W2t8!PSUFW|i`Bt}c}(yi#1rcNgs6we&EJIs z59dbL2AXKS2RGt(_)c_86G_i|johf5UVxvZHFCRUql-iBdC?M`k5VnF=r8s7v~mc1 zlL%J|$)CT?DI5H3yz1SQTA^2oo`4}*hJ?KLTBoJs_}}$gcenP)Uu*1$7}o%(?rI5- zsc+xjQOdtP)x!#GW=3%Hgnc(p7hqUYkv_9B-92#4`r)(~e)-gf%@;m?u<}JZt>}>j zEL7&hmC;+rk7P*}tniHmjML_VrbpDXj{zNK=%w~1q9}mV@^>=;&KRwzu0uzI>99jB zDJV)jn5b8M1vKC^5^)M$K&k7&!H$#a+&YO!pB(ESQV|ax@hTm+wHb+rykUPhu9^KK zU;V1YE;R4JHi=r&b2E6cQw{D5`@M`l96MSJ z9P0)ux=$Gyy{HCIOlf!I`fm97Pb~mLsh04EWKy#o@iQ&$*{PomsOoL?*f#>90Lm(N zq;_~>|Csdm?RhT#E(RjzNgCCFJEBMpKWRtyomPWAIL2)oA;S=fI=pOv9cE#Hu5h-e z#g>UCbI?fnA0>@E>qYbclZ}K{!LxrR9DR!;tlKKZ&)$m!w{I>t6y;*);8j~ zAL}Xor*h~PSx7Dn{l{d?ci{uXzg%prqsWbVx2`yvN9i4+s7Y|=dJ=7&>*6+^AYzeB z3NjQU2ek^+QOA5U!c*l6WS&v44Njw1s*Ww#=70JW37ksMyA>TQ=H?IVcEIDoxLq zb4d*`(t0$JtzToLO_uECN^BL@Z%k_%={uzNWVk3^Ry>Me*_He79bVx1z(ZGZQw0Bh zX%LnXlGj?@s*a593lpeNl_<+)4(No-7s{v<3bXJ(iNud|F0NUNXx@uM=~d^5(jBJ8 z6IH5bZ1(GC)2J@NJP24#)NIE&X0UIzzD}N+d-63kiAuJ_`dB!*fpa#Ouc_~HJ zDT@xAQ9N)IC9`kwDc+FF2VD?xCO4-R4C^Y{`9UMC#f>8-L^mFn zu`IWn{=YZ5^;Z5G-|{9N<0dhKsqhc1QNx^Zn~$FyP<8Us$N87^b!t(;#ME)7IVevo~?s1Yo`_p;#VqEw0xH%1(3)DVh2GRo3m%tOS6& z?BR4i~9V_P+VJfgn+Q?PWk$k+mWO-03>AL`Ma-Nt#3L9pkWw zvk9CGd2n)w4p3XL=^f)_@cw|S7A$xdROn#J7IIg5#ON05(P?KXmbA-iX#n{5ce*_x zewk@++;O)y(#E&_>}VB_OuaP6L_4$-d^7D9d-k6Gy+}<4Q}WMD%|{ca^N4Zuk^1BP zo8Al$k9??T`hm~0TR$9san0K&yS;n->VT@NZ+&;ywx92B>zm@AgGTi)O?l(W8&Lm_PnB=-+Lh$t&xji0!?*Lo=A0i{GYS|2Bw188N7u3r}+>x=@Uo zN>a(k)gU8L=LreVx-oM!$$!8z4V1@@s=TkG6?2k~x587y8rEmuhD?~!j~Yu#4Eu@y z(Ui~!)(HXR2xO|jK$68sh+m_ut|?$5Z$Nm6{6P=P64&T4(3zgAsq^{9FX;o=`j88* zEYBXjq4d6AnT??< zjlk7YVC;$M|G5+;UEX`QNr-^Z3M!@7(pn_wGs=;7D4i$>A|jwp2yYa3IZs8fXZ+e- zs#~Yz9xZROsKV<|q!!9%9wocxsYW%5A~{jlc?6Q0Tn{oxTJhS-;jt-z!3`8%v>!I2ps~)0aQUzkbgf(+Zm?8PcJ33DCDFqz>>g+Z$sGXHX{dqEapa~p2V(AJgK^E< z{;J3iE;E!s-Dq5ww_=Xg&Qz~49_32%35kG+!=lHp9ewI-#8CcuODHwPe^) zA9YiLAdIM(6?H**qHsCF0HY?MGC5{9nv#Obdcp~WwcdlKG*j+Gr8#+SLV3bczPIY^ zAPik65b_u{Cp`S7x5|5ecK*Ca(|VWGRe54a!Se`%Y0n^j zlyH#Tic7F_`p}iAl=V1X1pE9jeWcxuI^u)v_U?UhDR&^4Xs1iBY&rOS1Fq)f5kpve zJKaa&wNra;bRP5GsovZF*Sy)Kcnsh1Q<+N@N8cXv)_1dCU3=-&TAq=@6Zw`6HnF+s z%vW|hHevY}{Xbsuwa5^mc&J1TC!ezZsa1!?5y8VDW3$#CdI%S#hdh?7@9tZ@I7ny+ z?o_Q#z?|x9qacRW!#NJK|IAagvXC6 z$IR+<@Q1^fpDv#FY{86x^z!VhMfsQ2s<*mtP|@o*QvdPu>yM+``DmY7Q(LbhIW9iS zdD&dZRL{!_csS*Q5f|{^CJhgT_mwr#$XfEbFjm3Ghlfn|XfD*@L5Ga#&kUu5f%lM? z$M%_6#6l5bj3>+3XsU@v1YXO$S@jx#x8qBnmm0MoIBKoZ1f0A_Nr2`3M5%jbm63ju z?7CS|2tbo}q;j-v0eA5M#%k-iRXnO|iz|rDWUKkRuGA8a7E9O#FpH=@Yc2p4Z;r0U zFw4!b4#)2fOSMX<%UhnIkxfs!$viK7 z_PdGce}1mcBlBt;xC08Leck%AGE1jh7DFWnYDBYp0ID#g^||vSOb4hepP+#fP;dy- zgMh|2Go%I)H4b{tj+6(ropb#It@9%2rzkBK>6^OLx>cvi@tCs56ZAUK{9zM^OVlaI zV6kY8;MZh|-f^}1sEhkeOyF_G1{f?ZaOY#so!CHOg*E&j18i8KCj7Gb&@?P=^~}sO ze|YG^D_1`#y>`#TE!Q5{aIX9183Q_`T^l-}Ds#YdsxC8t+Un-3_vb%ary-FmR1i-~ zhe~_CnQBM9TGm}eh#F*Nv{bzapsMo;s6wSDH97E$^xspSCauI^h}R!eh}ea1*;NL)6u#A&1gAj5 za(_Ad%$M08KYv#H;PR0xPY-zM0| zw^bYUt@wblITa{^e+X7ywMs;VY2xYi%r<1uu(bQoP)kQ;bcd*V7ha3#dU;eBaG5N% zN<-DP(THBJIDkPm-WnUMr^R}u!32Xovk1k-U)a;;Mr zpFJWSoSt3lDbWZEOq1iDSI2X*(AN-i=($f$QKm2#yQt+X?T$@23zEe2@k#Y zL0IaX`ZgG9R_I6=j01Wj#gx3|!`HP2E#(ZK+dV8yy_Hw2u&rn06Ed;~XDsw6FS+ z2L`6L^An{K@ER)PN6SWSr;ON$_~S{S3k%iSYA9O*p3=$n8~5wyU0O*V9?fMpWk2*} zpQoQj?);S6Lvij;gZu|A>P$-Aqt1TfW&sY(TZ$m#08B5><_I>QzM4uu@MfNLy`~fqb8pPmv zuzarl7Fj7jc}rX8gZU0C*1^+a$Ti$z2Gv>=^~1ZbA*E86jtUrR&|4mDna@tF%ucL& zJ2D)uOJih1v7`B{GtKdRfBL5D9hdTdIX$Ca^~fpPeqPbG-OMv##GbPwjNME>`S`4F zAAk139kc$du0U)<(bHiy8ZPIMJbI5FH-uhToCTo{lgMQ#h%|$U(${i20EkeFsT~U` zm+5F7WW884two+HrW2u}ZmwYu8DSrb!vILA(UPLVJaW^TWH@$F*%h9&BihnR>;3Gb z&Uf@Em%vwAg91lCN~+ zZJ0pZXS4I=`7K}W0*o&y{rvc>vVD*L^3J=rS3iKG%P#x!#2r)r@bC*f$K>SU%lFO- zpL2Fezl!uo3RbF1L|>+VpIG)?qE_5ScAg`!xNp}Z!Jvj}WIV145Gn{Ni2$8R97U-9 z1^<6>-yR=jb*&u?7d2W0)RdwO5)e96rCK43rYz9O zWv!xSf_Bwxc|fmXv7=d8pEX9$Csa6ThahmH8nt z)zb(}H|4HW3n!AB$?O!w0Ml^tvJ^O@+U7sjg!3thMx3`rj^+PdY@42MECn0s9KPR{ zOf&9!_~MCxp86M~y?Fxw2J8khQo?Rfy?m;G5+9ln)qq37-(5gtzhA;n-5G(_GbS_? z(~|(g!L5$0p>J7OR#i7`ET=uX|BL%0jAOUR#H(|ohjXn{UxrQUnnX&%(z}FXd7MG# z?$)^xcBBhyp#<9Qpf?j5i!8MsvX3u}wH_L6NT>@8fsDpr7*2rzc};>0FifWnqVVER zCY4E6A~2bXfS#|)w%G;{WT_B37SzX$+ypMba_DJ)>N7n>T4mNn=`MMAtQSK$Cmc>) zBK_C}3!v2Uw~(PO7ws>+u&D9PqSA5R4gErEH_SUs(DpLD$<8LghSdECZ5>z7&p1AZ zrvWB0@9&dwbY;f;IMEwBaix2A^f{p6&K}g^9vkEzwt=M~F2mXN?1!N!OoAR9^aoID z53s|DVkNy$exqQ9p@IRDE5@|hJiXJrvM7QRzgW5N%-_do)PWE=;#faR194st9!@4b zI}(PNT3B^bJ}*em#NlZ^etv&y20*=%vN3)N05+l#K_Lgi$7l_((<{Z+av+ck@hlCh zz8Lr|=!5fLy0o}sSMk9W;a}0EmseoUm+pD3?oiu!OnF&uD?nR#-tx$e;95EgmnRi{ zG|n5+w!OHmS9;Cn^bL-3vD2nWi9mV)29{{k=qex=JX?(q4vkgewk*s)E;a#pni4*! zWdP0)v)qBx!$GgI2+PJ1$MWi-!&sZ!@xx#WdoRl%WWD!xSuqh2ySJF$8T||igJ3U6lRGSGg^wsIh=Z9Ci$l01t zhq5E5_LX<9DBjx61ipL)E{Mm`-|CU;Pv&iV^4L#94L^lXH!VI#0B)RY`nhM8UOykP znnWLvoE>mNT0)F**C7n!d{PIW&w+>2(GycI-0ccdw18hde~cC;6Vl?%FTcF&fkKi( zw?JU4l^KW?Fd5I9k`c-WurEOi4ijR*gMwTLzD3dSPB^&%c?bH-AjchX&M)^50%8Q0C3G%h z!F+;H{@$08r0R8&q;QdJ2`p)c+5;fW{)bcnO>}tR${d`b@+qJNKZsupOpNRYa1IK+ ze_i|R4@N|+cXBgrT0|c@Ar$Lai+q5` z0I*p3dDfWU-DTl&;3 zK2xP8hC=1bOuP9D3OXCQ!}GGBS6=XC`C~hxA7>RD$g16|J>1Es*3}V0oDVQjw>LKD zr*Y0d{Wxz&U-a)%|Dx=KzFLH=@zWGk!BP5%7*5q{;`8S($rd(BWKmfahb@2u1+5Z0 zeHi3bLU}hv?C=;|o}|V4GR{)}*Tx!x;P~@P7$XU>j1Fy!oPOiKJ>U<;44fh9+-_JCp8!=k2`kmr;=2MNN)@z!o3y28tRGl$8o2)?x$*G?Z zE#puslD|g;U=yC@g5s%ZY6c~Pf(#J z*f*LP#1e@oE3i{_rzd*2ghEHWO6x1o=qF8f2N(z0L6LvhwDB*9MPsH`S2KQyzr6Hl z`>yG04~MG7Av=Ui7#8C)i&8hy$r>1Lcr(!YCaHycP9KUx@Q+o58Y-~4k-Py>(RK|^ z8=c20yUBnc0J^tdB4>#lcYvOc^76}K!x*pFhYP)jo!-o6>dg`TO@oNzc1LyTd~EYI zvMTE#WXnGb0A}1^3KE{i1M{M3+tL}>1yoU`Se&ESH0$~|&T-g-jPBY!G;I0_Gi_$`7t|^i~+;_*`-OAI5u%eqWo$n5y^%gh4F_hsKq;&aTmKIzF;v#r1 zbGV#$4`#i0u}vs|IbElIK%$U_CHMS`tCwdwl94)P)1mU&nKWn?l9ZM36vO?Xqui|E z*aftSQ*TbV#gq4x0w?3yqyH+1kKzh?Sa6!4h)l;q#?o|gp*oS8&(;#ABTebrFiq6T zxbfO+L!ey8p%JvPSe{JwL%I|lEerw<2RQQrW=miz&`zmjpLGWozj&6ip7hK|=rG^6 z%!)de=H-$0GysBT((WCv)9J3w=iKhV+z$T>Cv-fqRkB_zEiL%66sjuk{Q>JIGy?okgZMR)wb>-yOlX?8`!ML(Q1;5Jm($O7{k5ib-`+4S?|X*Q~y zg%jIUhc_PhVjkp3F*!B0*dk<;p^TOEReZB^9G2{X2LP8ro(clk<;kcT;~Mr{$C7Vw zG^C{wCIDvO)w+C}3f#e?$xD-N0+-`!czMt_^d9I9gp4qp;d$Qo*{RPje za7YNj^St!{XcQ6${NaZ;fQ zBYv=LTWQBx*tsNJygoD`?+yhXlo5K~{KyV(ba~yC8O@9FU#Tc&tk?|t}hA9>0%hc3p zr_+?BsK5oN?SJ$OWLIw)>_-~nzu6r$eA_}EEmwpc>VK@pg|`xDzkvN0!6Sk2HL<~?9*$(?jzTn--@w(jsSM7h0CvqJ#m{~#MAW#!ln_1Ku)eax>(f8Z<) zKzgDLQc3C+61{;C6q9Z-yx}9^^C7Z{#RNPT)xafd7X&jr1^`82Y)$L9!AUr1A4C;L zo-1Knile0Sdkx9Ds+qAG4rUg_FX5>jYy-ZDfWRK?ML=+nK}C0=!Zm>ze;B3y&v#5n zo42Jj{|p%16d0U^gYlf#I&CXOjy6RO2IAqtgvhbIv_D#yycac{Uu|7iyOq?me1$xQ z#d@EM0y|7cMX{!%TJ4lc)MaT|I7A#lfMZii!}7cpc^D(0fn!HaVo}uxbu1WyC*9JH zS>oaSsu^FT&LtyG1d9^9n=6j9rYRyD)ila)@%@BVaLi=&-m-O|E|N|SvPZu&hTmWi zjtmS-8do0d6Fk}nC?<#1fI`mIJRH~h_@tK+Tc?dxmc5^#<_`L*jj_LX49*Nphg7Zo z+7YOdd+(LCepu$t9k5x9&!2PQrdu>vhs?ASEh^89WXVTeY#1Wdu4lM`u!(gAITpkh zb%+bczJ}_a!JWk3e9~}fLeX_{|aKpH76rZf9n;^JdyG?pvH0~Kmf?jjxQMR`T zf8r%qE_32fUQ22I4f1)Lx|iKDJVYZ)=dMlNfoS^fP)^)3)$+CwzWg3jTs7PN?u>8~ zjPRW^o1Q6d>&iRk4*&2QeZev%brAu z2aNEvIp&+7k`lzLIz1l8g}_R$it8-Z8%V97c@6jsl#tlvaZ-l#bPtj$5299bGz%FN z(>pv}n>rH0NS`HSHvqkknk#PgOP16d@h4RKXlUa&@2P&FH#bC|-$$E!i5d4!PF)p# zdA#FoPF*)nUHEmHXMv@Rj#VBATs^Vj_CV9(fW-6h0xOHgSFl3;xNaeV2s*Ah;GvDG<$P{#5Q0ruM=FaF@7!Zpuai58?y z=j&WeUsoKn_k=r`a}I7X26KGjL!@AD1jGee52hRod|rq7eY$L4x8B}&x%bIf^rEHG zWS7%pV%xW6x~UEJ-GG@b3^eZwe9lLFqKQke82{Y=5>C>^$xEWRRAz^O{U9hqp0&^$ zPtuj#5SrO~Fr|LmGPWU4$Sts4x zHn}gvyf`8a#1)khF^c;6^MWmp2EhkD6{_{RQ`WK2<{4d*yKf8s7w)mS=qHR9 z%pqVd!Co?#Kym%zVm$s)h626EU~DC^M(FV}Wg#-uL<=Az1S27N#7A~;rg_*Wk%kIm zwqmf6g@fULfdM3llZ(d3*m=gHplBjzokicGucC(nc>MuIjKAn-?26W%)AL&#rA{zJ1hqG&_*vFe&> zdHs9V_s#3>Jva-~wziz6Fr7A$tk7DDsT}^7*o*Cc9x!GGBsb&I*Qc$k?d3`Z@?6|+ z!b1LB0W-NSZQD|${A2_mnP9fAzuMx#e{$E6YCC7p0Z{MWuChoWi?{N~>!24(f7@JM3<5wKiesO`OCa!)$Q_vZ?eB z{G@dzf(0WN2JCHz?r@1tMCT~!$t%VRu?D`kD^8w>87agw!EIt8gW~wn zKR^A=)<^%0V=n8?!*&JV1aCC50j8I}4O0lj5h<$-)nW>h=7hInvTy~`{*jujZ7@E= zB%xZzP=(Kd4E2qc)V=kKuT|TH*|&?>)_RYO@ubpnO!np>)!hk-qV>rfSo)iVnA?ErK*P8mfA2e2uR@1PT2Ceweb5 zijvWhWP&?rEd4tQbl1qi%{x4-=`3L0%DSeVO=o31oq7;X9het;cz8*!Dyrm1d@2tH zn7)k@IXTa9Pu0(8!_F#f`>^oGjK(lE(+V*-3zS;Vh@m=aW&v8IStTY#dZdCWaD6O2 zV!sn$E%gl+;9;t!GnSC{%l}`!`%rFTv?> zu|&{U2Rl6?=iS60sv#P^Jp5>7f7G09(xRWiy0G!ED|2dKUC6&`reVW&FWOL72kTpi zxg-o`{s8O-lWWHIEDFzywC{@G@c|tdYJZNbzdO`?H~kupZcc0@gZu&gp1vN>m!vow z!UR*1$HAIrkE6Atw1`q&vpn4-&Q95UR{umk4Ug+K?F?(XdfFQjQ{12l6n!Gd<$Qjj z7*CpaqYL20%E+6gwwPF zz7e&@q@f19@Ib3c=Umi(6uJ4hM-W)2d#KC~9>p2O2GYF>-q+Pr?(c^#=4R$N-hW-Q z?y;viY6{U;grANyeHc+of}Q^Iucn=WzhDoWRX9LlQS=EXD)jVFh;<4vgYw4-$9cwHjSMMUM5mf*8%G;c2p17SHuGQ%9Ob$$jM3G)5~A! z%VKW5pX9!adr1;UB5fzyLUwLHJVb)*#>|=NO>5HktqA}5#o}H2nwvQ{^XNqi6xNS0 zaJ{6!)dGhC^)}4ta_*C9r!xsDuRt2IlzX9hHK(kq%F^X<7h?AI@8xaDDmY{Dhw(M> zC(69(atKmkP3oCNuM9;!KKC?SCxq)PA6N<*5s_b3()2ZLPP696eHBGb&dzTXJ;vG+ zk03NzorEDKg5p!JkWiukW?cpr{Cn8YWB(Fp{1>2~)ivk!1Kk2MTE?je zZ-Mau+F&X|wFE;eFl(T=U`Gn~9fOOCAyQ)@$%)jA?XvkvrDken$FJ7yyEKZ!ZJkq3 z_?K!oaSKb|A6fj5^2vnY;#kUthq_ftIaC7%J>)%qO4GBeSnM)I;U{c>f;SJ$k&?`iBO1dsw+3PfE^!?9gpDXU4FR8?Vr zVLt&uH#gI$UgxC)AjUt8YsZ6)_=E`eMC_WI>+2KPkk~cA!^prE4xaoOgFnya)`?u$ zVJDR2l~?}aYW6tr;oN>U=&KCNt_|drNc6+K9=Y&_mava;_*pDUZ zYaZv_)X|pJ@ypV6+wUi(WM@oTJ(I8mt)6%OH%?Xt+x?EDWP8g@HSFmLC9C%O>Gg^SB8R!^NcDRl-- z=YRUAs*5_t6)Y;>|HQP3N#ZhBLc&&)bt~B50W9|16Fl~25TZJPHR=V$VxZ%5eV5iR z7Y+J+zy%-RXcy8!%wbulq5u+F`S9E;8;7x};Nsg@qT;EKb5dEg@}IW(JDf0i5lAD> zEMd>plQ9>dY^-yIM36Di2YX~3?cv{XggGR=M&JN=ikib^}^5VqzWSmaK=ivD4G#(o5nh?8pR|OXbzjXQi9q7mO zMOUV$j7eD7+zArS9;gOkkua`>YJLbS!2*meLbSZ`-SW^zi**2Zfq+QPi9pf}*MXjb?Xphcj`sm#@sqNCxFIj26>nW}_ zd2%J(2V}MDeXbmp!=5lI3dUyA3OTz_MCIb$wbA9lz`Y&nV<qN6TSe7aMc9Ij`pL5%ZDs3og|Y3=|PfjMJz&7A*}kaINy%%^g zJ*&M{d|vwVxZ|l~6YUMB4+r{w!*Pv zt%DiE{bIak!pbJYYbuw1FwV;m(51ACg(ZEB$;DF=iK{OQvzYG=LhLTMT)`GWRbKgy?Q z8ASzqi%>Nw6F;8An=ktcI{_jj0I#+51JNDW3By-or<_EOJj@x3ziHAP3#YPakbwve_SZ?{|8a zp;zI+WX=O`!@A?aI>k99o=ArWhsM(3M3Ztv3m(OC)0mz!uH-ZsLgv3s>DJa#+Kz(p z9yA-}bwjBLcVED}tLBs_`GqoQLw3?JngjowB+erZ4x!6>S_?^!r&~2)iw6lf6mS*- zpBvfX4HAEwe*Ac-=D6*FcuK&u0M#^N3X!3H3U*??4+03~I5vdxCS%>>I3~cSU_m_P z9t4Qp&>aulK!JuE-kxYd&9M?Xgc>i@X-pS#s!ERaYlzBQcb>!lK<~0H6w~Cl|6Yr38>aw1`I+Grq{`*8k#Mgo! z;sUzv6R*4Hl`)MVkULlrL?*R4>)}5@12mx_e5Ne+T0FR==_kxf?C1bHOM>ZtT$~0S z$Cd7sM{aD2ad~7tARj|eIIFlWZpZ=JaH68CFqY`?A+`*55ldna#xFH@%SO3YjTFSyBXv<C~`Sy%O;TOveceq7{8iU2N>FYw878h)-O7yydpMi;K2IH&xZH1#I7vU3*!@NN!*U+!Jn zV;8AgeiPCNB(FGY$7yU$9)`1F{A2z2QD6(^q><*i1W&0}ddNWUeyYBgarAp`KO-rh zkWtv0&s*NfTmDOS?UHv#m88_;mK&9TFr@>#48JbPOgzs!<%>%G26RkxR!tq;3h&;3 zG+g?R#pEb>ry3wr1SZrAfBf+;FaMJ}4agCKmg`y#lv)1n?4rS=`ILwsUIX#5oknLn zo{z!u6-MAkj_-Q^WgbV(Is&{MceAlu1^X)to>|$^e$BePr@c$K%1iPtM&YEetlPd} z&9`?ke{~@d8`79Nj$RkJyPNlYtDd8Y1zgfZ(LP?j_uWvVoF0LSwa@940utgMoisY-9 z?ZJMhyK_;te_A&^;7#|3ySJJ%{vP8<0rywn^W5eMM;mzyldv+6Md@YxSA;m}{lDPN zyvKl2z?GPqgxPE_pFUt^ad=PN67 z+0J#!cB1Q-6kqrL!oe&B0~;C*VA(H}FA(HX)}jV1KiS89D{Hgx$9jfkZPo{S98iPY z3w@8YP|y7PANC!ML|?&nTGzHU`peXVT+g?;p0i`o0@?YZvi+eWSX$)tSkMJ?wh9*1 z0tO(rBJKbFMoXZZNcO@t2QPgC51_EE z&MZcH0&aL6mUuMVTC6NpaoC%w3VX01lAxp-H3=tWjb){zm~?PkVMa%9e-SP0kIlm( z&a1$!BIv_^ENekvOl6dK_Y&Uf$QmGo#ziIKDv;D;y~ff}%p-Mfnu%qkHBy<(;VrP} zkxXB`fg4arKtV>mlO37nFh}-pI4^Rav21kU{tp@vaegb0+0;=EP%?v;we#Qof*TLc z?ZLc#VLaJn#;Lq!{rWx`9XO95P`NeQwiPN;-o$<^64nnlF}oST0AxPa>t5l!BfQ_2 z5dEj!%h3I`IL|a91iR9R7$hXl>zQ<0?B4d+ZoI0v{=8zH1%6}fM@U=BwAeuwY@J)k zCrIfD1UEd%JoHB~HlMVLV->V|zqmSlyavye_O6soLcNK5c$f=SU4xBR_7(5(b>3sM z?lJ!NVmzIMs8xl-aw=Yy?qNEq`f9F2j(^*Fw;aSsP z7&Pfz=Q}UAc=2DWz2{eBe;HL^|Hkh_PG?EN9ZhA8OON9jnmTqwITm}DcvnQ@jL<%e z=WhiqmEm9b?!z0!Ai%*d;NW>{Lt0^$FuLYQJ=P9)GjOi=Uo<|An>WJ+dU8QYbid{H z(F-6SZBIX58EC8&U%>*tVF1kTo&m;3#|j zjw6;#P~i1es0pusEq~K%Jfi~yqxsUO)bC|&4zWB9Pk-hkgsG2Fe}#3T9^xU>wD$Ct zru2#x-naXO)3~7{pEHXd{=w<07KM_B&siGH`C{eufOy{a0)3 zs{4ycGl@WaCx=G&7GJ27ZrWe7>?>_u)1~WP{=ozH+*7YQykGz4*=Qv8$eK9LiyPav zx5*jt&*!d8ODpQADMDZIl?0lp2WiY#(~6WoBJAO|(&c|%gnvT$n0L6DcQ}-HSj;;_ z)g6{!II2Q`CtbPni&zq?(c@|`Eu$4mNh2V*B5dx&%_b+6q&!~#X6A&3qV9^3J)38x zd#BmXv)$+KK`spXPh6%*M$l(ijBB~!hK%;g;ICG8+}|k?MDIo{-ZfyM5a-}##}eOI zXuN~B5ziTMhZh%}Q8AK0+7aE%pKvWkeg{FoGA6P#4Q9W*@$2_aUsepuqLn&%>GVhJ|}^f*H3XN(J1qw z^ba`slX(kPl92Y+aLi}81*{?*Kpx{Ho$x+Ftu-MaSQ!$ea2Wr?w4Q3hj50Z)8|nMkawj1FMCP`dH`UmLo2pVi(4T9u zSJpRZ5;r**azf}D+zCDbxcWw#(OSB#D3)RxJ^^NyI=AYG4WEZUVfYP8Lmf-~*-tm3z|Dm2$7>>O ze=YUS&1x^*4bP7%F2+F5pGhmh%;M0~(`%xiV44^=LCaeD7amqK+|s{^q-4D{MJ-K5 zg2@Q?jE`(cLCXHE>t5ZCf1d{wpd)vfKrj<7I9wTieq~2x9@7QyQ+{jsk8}X|Rzyau zApPM2E;XHrhD8tf=Wh?a=L&)ojw3?jqzUNscQ2ci!_M;#++hMYMNZVTk@2)`h}VfIz}&GuDZiLoJ7^V7PS+G)i8@fW*| z=$&+m49;mL;%VI#>lRy(A7=)}RvpKd|<6BaN!7Pe zR2{}xJFnu4N}N0v{J1dOT!?18SVHrAuAdT`#N6jF#&%Nf^Yxcr(I@?{7@SGXM$+jR z+=!PtjXj+;s$!-~entvacz+?T!4Y(A*vq9Ynz(PsPG08Duteq{w@AXJ^DxJ7`-I3! z+?dEf?}z)`S^_BPO9sVPw&T^xV>H+YAod$yONrzQN~+9Jpq znr}z)&d=r?R#kBrH*yZwaz8_!S-S+j6@PE!cUK+f`U|J+)z~We{ykjN>9p2WmMNDr zyq}bcNGYwVU-96%PA73=$mVSq=IxQ_@<N@a3p^w2*?H|^KMh4PrOE#z#3?f2z z+t|t%PygS)*yW`X+|bEMgep9iSzJD-W`rdXWnFC22&U&}P%GjbU5H_ecbv%?)2JNO zuMHf+bZ}mRpJ3j&E5hAwYYQLi3%?5&R~^6Y6oCGTn`|k5NtPaOgonf@b3@rDV?!y4 z@XGl*T&w>AFWL*Bj!lkjg5B=@gzhQ0_@ODuEJCq$I%}eKH2Nn4KW6RYRjnaM+=Ede zTul4w^rGhUe+0n2I4Z{;5E;;uj@)XWGwIrunOUXiJ-DHyn#))p@^ZP}Pe2*dg)r0X zt#fW$Ak)&Gjhnrt`d@!(f)(ph9C&P)rcIT1)uFAkp#jU`Iva=|a?dGb?DZlFy;RT& zISR^l-kaZqg+If}IV{YS2DN?I$Yd^ERGDEMOe0lQIRaP1DvCKCTn%R^(Lhv%sjKO_ zn|qf%23Xt{RF44GGUtyq2l~M+!Nf-DOPt7=<{ie?g}#ylA3=edx_%qy#y z24Kv=kxV-Yx>~Tfn{Z*H0^VnsH_Qy~qqum|y>7Bs{%ttBz_Qmu)`^pdJHeCQKsaS<#zy%r4RaLEOx(vJu23)WZ)IYz4 zKF`=rAy6x)#M#aq4#D=A91c!!j3+OX(qm(GSatg<0m6z!>L94v{ryE-re{8ck zw&2F9W7qGk=77@jzE$*oJEu)AqNq`G*YFT1Wz3*4&Aqt%1)Lz!&xTXtz!Pt)U281DfwrVQZ(-SEOQA>enKP_dAo`8CXy{2Dzs9nXTfXj@Bwqe=2&qqrTg8N7>19+0yb z+f}|IeO7wwTj}>#ZoQ_-JIt|6M7iLe^)s473_l%;ie9g6<_-g8Gd|bZ=RrQ6it9hS z>8Q+5sJuIYlWf3a*}$48uJ;la*RDu5sS@WgpG)c?cbgtc(D z@XV)1{Y)qqCN&Y$bo6xl=cz91zTCR*1vAMTImWg5=ND~?mclF$eor*n_}^0ob&TZ3 zF+1&ybgMWy37MAuuCie9#lqi4)pyRMr1w*%)pO8X0SNDOXRK9~TQN@C)ZoXPF2I(? z*j95pr5@zUyv?z9-v1*9E~WL_{$I_I4h)L1UCs$M-o0~{D^~%yn(q=xNg#B z^Cz>=x7;g2#~%o7o`;cL2KV)T)v;wwbVx7KA&t$$yuw#v?B~)9ifgXV`xf&1id9p` z!orhh403Kt!%Xm@HSj%FS6)UWlt3qhm_i&K;uxGbHGnUSG3lnyUudhI>JM}V?Yc5l z$(b9>ffm=mNHH4N=1z@y3k(4Gnq#iOn1Qe17(%ri^Be{dgq%w_i?$O6(-_3W;4?7g zJ2_HxO)wB~m*O*;CoB!%NdUwP#?Mgpa1uW=62!8WK75fa{df0q<(pQwU?LG-F_PCg zlICWte0U{i?fMyxvp#-d4(%xb>@1K)8SmCX{X5EyhaX-lC zaRc(NUtx+lw_u@Z)kT{SBe*3q<^ir^A@G{lmlw=riyR_625dnBRzai?smC2E%#kzV zYvo(7`4d1ZU8@Fy84mE)2uXqqAEHE^=lF()n$dc{Vr-q+X~EMtmSiq?_!(NstDN^n z8g>svw&xHMF}M*lod5%$tYp%+`4AI~U?w-4Dj8-7ncQKW5jC=umfH>bs#0N{Zaa~A z;7x#eQu}51B7N&68|w6OrXbqF&|wYZIq50f;~dp^1whuhQyPbV2OvBBH8 zx$q&l5bpoixvqs8tdz#)l+l2#pu^ku>pfn6{q+-Ad8Utg% z`}5?*EONvzy+oHbV6H(1;L`JJZYEqr=NYD2RRrvw)`!^0) zaJm`pY#v}S!fgR34IJCoA@6Rwbmb{7ow{I7)e(lPA})O+!!hs*P{Zrog58?2@4_o_ zLpU>tp5glw=ygwm+v-r5MNb!Tj>`v%67X|wPZxSdxy(~X?z&Tq;Yxb%I@sWeFVSd6wu3xbcTsGo}?uW15hh&%w@H^Cd@{Zb^K5(OViVzSxj=gz+p%gFS?~P2wyEKY>{! zIY;|>ZjwChDBcwffjGX)KHk&cv9wndrL32)MW%=bCplY;E=k_@5N17zlNx+x&6nhw z=v~PkCvhG{9~)jj$8wqIIpz|=n+x-I7t*h1wO7|*fEwRd7@vmsHw;gsy9D&p`87oc z{g3_|K3boA3FQRpi`QYbj4OQ<&RewtKf?;d?<%R&ZKc8Jlh@PyGwGD#Z$WBz@{8z& z)cq52w9?}s8bc?jEHD!RHQYfRb7rTIavV5lZ+5V`EdWD=OEXn{K5ON3!P6X zbmq2l3l!649_BPubEEcTYy?FDpfpqaf)E-Y4#S(yEqls0l`)P2rMR4+TSYlG@dQCX zyepQ37IQ0DnT2)+=*}?N*aD`oiWmxb#czexiZe*T6_wV^v*y5{z_l^m}z+>$FA!!3tt3^#{f78yi~D<@=jv^DR- zXzSPM_18j}NZPvD4%NwOFRp(8vkpIsZ2&ZWGPVbr<{e=n;2mL@?<+X~n#Qb-6cYIk zH%dHDfRCf6{R}n>H;IqEt7M*79HYTGPDg`d2l+HO?+!G0!xDI4mN7_1z=bnT)p7|` za+@{E4Zf$_+r@Pp{7E2RK?w;5#=MM!M>fIu#KA{5<34b=7`$=^WHK0h=iC7T9|m0B z$ErE0Ul0_Ef)Y7y_1tCjQ}|$DbJGa@pf{tw#6Ec0CxY;OzU~L=X=84^n;hUCXMh`1 zvTUNJEs=1e3_V;=x<;S2+sl4tX(fI^=~Zou%0pP;kf#yVyrw z|AR}*-korD1UzhvPJtonV1BYNj zNi-%9={0vHaT&mW!?3UsEPKF0c-wi;bfI{}AY~P2tS71=dERFRp^g#=OOXy?S0>Rk z5We;eOF~eKz@_^wIg`NuQHWTZqf@%F+9Mzkjz0kXrHDA%?{bD9jhCLC#$7#NF8W6Y zVc9SR+~i1fj`h`dbmb%7=%DPNkCh#za;{3>Hnn%UFJ?tay0KB%?D32bA_`8$0Zhfw zM&9mN-frg?7vM$94F@j-dQF^!MXg#a)=_Zg3}=R*sWpEo?)?(n`y)|;xd>fTV=E`* z630(0c3b3CiJG|QbN_5rkluiDF*FF#V5akR2YCzqnowNr#2b{*!cn_SLH zdZz@2!n_l4UjmtN>PtmtG;$+#zBF~VV_;0;!!g1)V4i7U@Gt={IXTLihA5u|gTHtz?hXakd) zpr=!EfB{dbB>Q*>u{p6XJ_f=D7d8A1aL+hhnTg820k7>XUJ zfel%Q%|;9dGl4cd(z+&68Po}+h`N8%z~h;g0pPFC#Qq=tp5EJA7Q@9z>wHm1ye@)J zb|7~_iIOh-egbpfv;I*`d0P+T=sR}GhsRSbSFVYt9VcdIjf@kBG4EG(&Qz9v-CLB< z6%Q1rf0~S$B^2xOpnAsTY^`9$rAG-I!t`2i2h+2?)$)Qp{S5aH$QcpBa0mgOS@_+W z=*QbjFRTeT%MYrYl8{HztH*E7^2k5JX@7mjb;|pobJu+!A!bg}rHNTE)j(>FKum`9 zoS0{JtqBn8yBpCU`B-yQ6@w43<`X%F&$Kj1#j(!$_&5ArxmV|WUTIcBzMpfk$`c87 zwA|JcQ+JsT>=0CsYC1jZ3Fmvw&p0~A>#7=+cYS8jBPD1<0#_QeP^dvORJz;^yYU3fWU4b8}b$X#(Ns( zAcrAu>lgadhNzH?@*0(Kj%L4t(o^#kIHgz04mK|+5$w^Q%%A1dU^Jcm87N!clhQ=h zeT=AzQ%?FCGz(hAbUa6wQb!*xd6Vz(khikoqH9gDcymdAR$te$Caq(U1V7`vY*ivH zLu1U|x-I$zMhnvIqwKokn%#NVfRQ`6syTJ;R=Q|EdSDipDa6N_K1&W2iIyqHC9CQ( z!Z_)-cMv#NvSbu1fg(h787ZenD$j&ZXoWaT^(YXf9X*97^T8Ot?`HWwILoToEDh{| z+r&82o2O*F0;=@jD&$(%6n%uV0P1$bzhlC?Ehv$nc7-2~Ie{&;!jB@l3O@)w@ZOda z#(_dg+FYZ@tOg`7Vl^PrQ203DlF9kMQ{P8iY4Anm{H8HJ$Fv&$Lfq{=RF+_zH*s(% z>0qi~=KQX1!7YFmprH(6){MLg_L;y}i-dMr6K2-<>S|q@KyBC2n0m7c1qd>WW&w8F z7fr0KtRkI^dEt_5&MS5^rg*Q$dj#VHX^8PQa=cZ?VIP2- zxRtv=yPb$qg<^ACxwTX=Dxm$86KG*SY3l))7{3k`x#*R>+;Ua{SdG1iFTwm)9p`TB zMOj-ep)@`X$#a2h!mp|H>lbfkC6P%w&2j=PmF zCf`<}lA0v|#QF&dfYq;-GpxsR3N%>2<-86V6DHS*rs}chOf~50PF1WQ_V(`LNNAJk-+zQ8Z8W!jZf09fo%`zW681ps zF+yfVb}Iwy7U-aGN;eECI`<*IJ@`H&Na%%q3?Sh{eS$T8nj^FUJiRfy4w+^1l%tI_ zi3PZc?z+k4nCi3F^Df7;IpWQa zF5`FthXA0(qY_9{+jYjXWyi9Qg&h#`J}WFZR0s_RMugacZ=cR3ujAc65ePen};m)UUHwCHz&4!T1C$gq4nVVyH<26yz+6&ut|Yq5R6UR>b;CpWCN!flMl6 zzSrG(vdN*A--bTK{;b;#-+)2oG+=z`+caAoZ;HlyC;v1{eodE-m?i#4?pORzLNXTl z+GMP1fJpRHBv3IQfe!|#Ty43>E6x>E=N~F8_!l@v3}RUmth2M9MM?vUMFs_v9?YwX zbr;WLR?&%*K&O3uj^*gId>C`eAe&3or;JX!n=5W~8ndZszwSy#r?^1~(v?WwIBi}1 z=;+U|X|UFlIaeq&VL(@FH*r8nXm|(Q{z!RZkzzC6pq_i0oY9w(!5DqnK!hI;jwmVl zb*+$%6LAuQE3P4IKOus_<&LsS#4?*tN7rQC_^C|OLKZ^-szw-YbQ4FekOh*@pUNBs zU^56_mAeRV8ncuDG7>VQ1SF9l8yTmX#HrDNt62R))@eylc$gEU^l17dz5QRo5_5NO z;VnAd$QkXXfE(d7S|F?BMoS0`RjV4X=jgsH_34x)B_veHb};iR=Vmi~voQM}!$5O0 zW2-tGtV84WV}M;at~`HlX^l&Gp4gGw%t6`~&*UHzLeg4pAtW9c~m*FuC#2 zkb92zAOqJ3ZfT*}gq*1AIM-iAg|(V?l#YZ4Ro`gBfUOX9NxTqc>YpCA=B_^a##0%x zPK6ziWGBa>PA|gUVbbHC_2#+Zw`1wTPhx4$c0^RGJEbA*al$s#l`uq8vq>dpYBm<0 z>_rH`RBzGtaS6@DhST!6%{fi6AQXHbCP}M91j2AIx!$K}o%wW*w}T5r&wC3{AyQK1 zMgcsH%OqhXW7@v|MvK7X2_HD}LFmd-IaG$MY`R){vNGl%e60xoq1S>x>%xK`(F?vC zkqk5KU8YF(;e_Kh@TXO4oY*jMSJNkF+k*ZR004CZXO+RWXFWZ_gBAK>%XwGpX)H&mdJ+_Ar~snAz}sHVkxBcf(iT1#*fsK4eNARtPhU(t$H)q{Admm+=!yi>|#*m|7<_2>DevVD>CGn0_G?^WH7K0{7A>d55|q zOTbG1FMJU46U^Oe?67|5+#SHplEaZ9SYh{$=g6!mE{?-W>2#K8nMi8lMiw{ETx37A zqA|VN4J}P+9nTHK0SP?0`G%H~G}Ls6f9UuAY0L?3rO%vBT!9^q8Sxz;>_`qUEM0_4 zrHGeAGj)6OY?0YYnoJELwVVl%&(92mOZ3=DNvXRNS%N-;)A*l_?DvX>^oN#1ZDb#V zcsEQJVhLtW>5=2zICB;xe@|N*iS}GpjPeH- zk$d$U&;+tc+=bH65H~^kcR{5Cjw5Po?&#~JDOueV%aX?DG1~0s+`WyeCh#Qkk{AtJ zM`W(1%#Ccz@Lc*JnfD>+z_mP`fLEJFxf6eafx`%^g%&>0rTkM0hvuCRv%w&Y7QT`5 zXAE-ZOrl6oXkk}Y-0^vomodjda*shy7gwxpnQq00i4E0%tody}C<$OVnRIDA2nayg zVM{pcbzxXTVdkUk+$KzI5HQNcn=1=nn0O%l}U-cnHe>Gf(uY^!#r}NeK}IvTrAVc)@*mWpzW?* zyyqGWv1n8H=S2L>J}y&4{^%M4EG#KLO-wYptn=DR!^6FlUL@c!ajlFuNCGg#&Jkc$ zY!*9bfANS5_kjh0g;`QUNq|Y0T}nt?z)WT6J#=KC+mz<9^Y1E$l)SD6i?iM{%!4(TRx&Z^04*7n{S{$oOn3IqA=Gh>MM& zn9fD38+?Vb9-W?WuXwY=mBEh6=8%z%c<9k~q273E(7cnT0M!6C;&`soKlia*U?lBg z!V>75gyccmWB6$-=Iq{u@}cS+F&Xa>8`8I&bUnCRLrTmD_zmKYKulq2P+Rf6cmfk< z1CJ*f7?No?OasmRA#H={-x64{fxR>&iP|toK&X)oHP}II={njBRrAn3Zn={a0;Mv_ zt&|YNgYhd`C&XV4Jnr7t-exf;F*j&n_>r2;g+_zjTR9FZl{n_GDdJ7-=xI_poKjHx zTNt;|Y}Lv}%vJLn%~kj3cDMAj6szej?c~+#(&lnsH;Nb(t9c{ColTt7Y^G?reF7aM zasqUWOwWUlN~zTp1!g+97y5!zlmO@*_NP6cg#AhTB%nU<+;B!|v^KhRr2A1aQPu>I zz;rLCx#zYr2&O)|8<7N85a1D!_N=$@_+B#frMzS(Zb^>&B$sodH_wgIImSW$1vVNB z$qD>F88lN|ovy)H`^j=zcY8)hWpJr?i&Z#RcJw<1h$lvp7mR`U7irs^iScv7g^Zu{ zwl8uy;N<}6z21zYcAK}5E1K9)zMotVV!=PSUvsp$FLkL4O2boppQY@p%rE!wk><5R z!1Bwx!S0+f9h$M*RqZB(OvY&N^l$uY?ygDQPk29nS`lTKX!?pn8nP^lofrh&Ww1 z%{AC~$rt2T^fJ=Pc1fo&0b?hM);cyNa^G{u@=mB&Xq;<@sWEn?b3L@>D-$qfp|GmQG(U-xnh9qQo&>ST;lz+ zXAAlNrQjgT=+1ONPNGMB!VLelxT!-^CS=x z-xs!<^a0?dFg1{(s6K}c1(H7juT&}bGTywlO{)>{ac|E*#Q`}X!9Vi~GwB+{@;emI zH??wcaL|k7@`k-5^}r~m-*P~X8|NZ)ykm>@P~sWuunat0Ir`cp;cQ}4!`UaGSEI1A zafxv=Wt93HI|JD)JZ{kELW}b(oN<=s1STiMaP~T>mWkU zxUXu8)Sgjv?2NXc-*6q>mO$*s`9`BAg|Cg86uvfUQhVH3Oqz-nW3OfzlE_u{GQs}@ z)NN{}BYmK|X$sFbS}XkPF>NJd_6x2XcT*-3DYg|qivE*bD?j?yiw{Zuj*k!?!tG=5 zh`Yn+&Bl2T#}?Ok_w(c4S9Qa9ee+}&rm(DPZK4Ys#eB+KQgH)u`wE7Ooh|%kWpd;5 zHV(-{95beNR~eo*Wi17?gQV; zTi@CA%$TOGZ@i;o61KrwP47s4ts{Q;wXWC@_q`fHLb$TDL8OMlRbk(u>2Klltr;;2 zlcJgz--zfZiPy0+iq?-SyV-6wyk0kJM3{DcQMgsy zh=El}ktFV^s-mqTJNLb60N-6Z*p#X(aqtlKq>&m4aEx%&VN{YF@}Y^qHTGh3RNG1d z4VCVK>@|pkRJ=%W+RCLpT<+;z$@@M{`qSr-gvFc>og1yCj1i1hT|`fz*^FUSMq0jx zLwg1i_wruLY5{iW8;TC#{@u5w;{kOP^*x<&Xi>&o8g$R>^~ZL1OqudDI;^vYc{yg( z?~QQWMCOJ0pY%czl)e~-z!v8&b=9%jrM$RNDP+BkeIa5t_9Y$_{_|jnAXHM?A|lT> zT5{aZ3GdoI1R@|hPHpj}&+!Ss(GT%?385+;-yGq@s;RBbFq!!;rY#VSM1hc67=`hE zvwX~T6)RGoH)rInSw7~53iFc^oZZ}a=slBukMSC*U{So22{oI;k}F>8zG@v~%UXUP zVU)8aM(eZ-@;Bm~m3h9)FWS|#kS$2qNv4!QvppB<8}>_Q=wirnhY1A?L$a5_wFB(f zKIDQ&cg%A|1aARv(BHFI{Ne|jE(@Rkr-aW)F}#CQTsdrAPhcpJ>f_j9;SDL&q4 z8RMti-nPw!Q%uVOU*n@nq^k-k4jXFY8!Y9oC%MJRoJ|!RlkiANdIR`KI$6YS{Ax?b zM_JP^+>%-JxW!yUZt9UppM&zdOJL<;%n_d2`-?Q0y!+rtrUAY?SK$Pp*w$^O?+Ai# z*9`7wguSu`WE&*xd5j#kAR*)laZ9%sPe?4opA@^4I8PN_N%pH1PCn4WMfETV-rxQG zLT_!zZKX@Rgl4r@-j}o~zR-N#H=qR(Wy?7%F|VoLcNElK0c`<;Amw1=y#MqgW!Xb{ zTcEP$7qT`6=`}s%@#|YIux+)Rt7FXIiKxhlLt=jL-Aml+wYm+6F!HJvFWkrc&C2Uq zev@WOzV|VYCRup4tTub*+Apzk!hUMZ&Q9fqm1Bj>GaM|QTU@1x0wLFuC zlRlO|#&r9M9S^`px`sA}e<24*B>U|b7L<6m^5eV(5AnIDc%wJPX5tF-aalKR9g_da z5a%cTyoBBZU!{{NBXqqsmJ@uhxx3$SKks~tOdRc&Uws)))=hDI*@~)Tj48<7@zp&P z@~FVH^_@8g@>qO$Li#QjBjt@_YvPXX?LjqC%;wU^gHcsX_8#_cBQmDtH)G)4Fl^Jd zM;HQ>?+$9HP4u+Al_gHEe{@ED7jeRS;bDYs+-56q++8C9* zSN)#VHTV)SWcFZLydUQ-U{OVws$v4M?+Kg6>h+;p(7TN#@(EF)srKjG@e}VH?$)v} zy}7s5p0wGmbJX;6-|wyb-<+8_E=lill=o3Yp{kq1Uz1UQ#HyH5J*S4)7$@qvps*tK z@FIjmKs(H;*_XOil^4G|0NNYdQbt`W08sq^=^FNjyjL9BOy0#KC*b}FpxAV{+MTQL z&f!o!%>V<2h4~H|W{^W?0OgrH3cn)pmW*_eb4j=*`mv+|9Xt3*BmJ9kaC=4S78$dt z>lG);j@tqq&wjf3T7r|4$j^k8x|1tad>=ks5zA((XqJV~6{)-R;ijfz1y$NS<5kdS z0K1!KUy+bl1o!Z!2JmyMc_;iuEKTlE?>{+DvkY>yzjl%8nV6{qTn{@cAt3OA8&$By zwm_(PnA>MK&thlbPRO2=*l4pl%91Oj#jDziMn5GA2V7)E-L#eVWx3i`c_nOlsm7Fw zrp|53!fd&`HSPhZjWV?sGhIs{M^=>YNAyoJl-2QXj>?dXuYObG}mCa2RDyo?i0`^;Z+IC`!Dg>l}!^D_?3fdmGQ*t#f6 z8M`GdE-#s(w@N$8tspIqN;$GqkmvYPA+AY-4mRJQ@RFXXtOxa>-^bCFws;OVIgkXt zX*K3NWzRQlUaeeu@7x{US-v-Ie~!~@?jnbN)c-7bB8(cxVwjlB4AX=JTvcXFo(@@n)o$E%(8}aSzR^OAr;EcOoN9uV9GY1)6?o)zHS0jfFy;x^ zu0bxWFTAKy{m3!;$Nuob_9rO~z15T24xa$KE9Mqh zMs=_TyT0EH8)UE8=1Q+)NSM$t1qI^rYAY3l&vMmK?CSh2g?VQn`SRsTs{l$|Klw`~ z+;%59Cr*aHp;=U3*^%jc)#zSBIl$LAV~Qc6F9V3NRvQd~G%`G>5N)M}gtrkL8GIPKL=CHAecH11X)IKj3_AD;S%b%RczUveiqNZ@730;8AWjS9 zC_c=DFbpsQa6$yUUL%*qV1?K!tHTzH`&i*E@J%SE;kKgs+wjHMKd2QeNy0FNR+8>< zAN4h6Zqrq2q8dC6?C+Yc9OVi+{fM8b&MFOqWmE zJ}zpSTZBgsUK(>eI07|qOCdON22}Qvx>!y*fbrW|eahnH90{NkwqMopx%kKl4bkqt zM^6Jj&&QEL^js|Qy>E&Uruz2LIrpKnCk6&MZ3#KdIB%tC9ws&fKjW(6=qH$l2oi61 zY!g)5XBf3(5`OuCsI#(hv3(nO2#$5l;cn-YvC_@hjr6Qa0OPOZ0pk znj?~fUCLIXEtB*6HOUx%Bhq~e?MHqp&mKMBpXwtQkno8|Vgz=KU!<=TI)6AJB!9Sl zNdHH7#Bxd;d+mJ`I;DcxkLg6aG$U-^!LXwS)|i$&X-yZ zEI0k8k98d^RU)?9hAK0(-{(5z4fpbk(j1qc}erDr8!{4XHPcjDS z1Rlfa7Uqf36`H5s>pmnro8~t5Lewa6aEmcnNaD}v6c?jxd^hMZ@?PW6t&&)+UB1xP z{@-Gjg%&u3Y@JY}JkEtff?#7XcP_*O(_uKSzC`Ow-Ty@&oIC8D>vHXmG1qqrepQUq zX-Qga)80O$_J9+k3q_r)s-;_dBoSk^XrIA(p>+UQv~rtfKcvc>#VFt);< z%1@!t!~R7CFn+ekO~dfdKO`Tbq?|{l#%|>w^5h`~zC`bF?j99-%ux)>s~A!+5KHM} zJud~3q^Jb$3qD42qM+JuGT+25^09|nIo2Nby7^OI?t&u+XI@lwZ;9}{p$EGOU7YS5 zW{y8X??a7HnY1Z%8p%`0BlD9KzYGVWmHa&4Q-rIOx0)_R#98NGv#(75D@Kd`Xm=NN z@(Wn%Xyx&y{1H9rhZF2k2`#Hex6R{59ob-uu_WC@c7u)ONcHovqvy zZYrZ{m?5<_SyLHhie#OKMujTCR6mH`QlhPK={f>~&7sx$0wt7oa*pX4r7zJ@80o$1 z(uD||zQViQEx;S6$wsP_@>1vR^2T_iKyJ(LgCn$nAM&H>ifphaEjT5D(1@7JppgvB ze^DOSqFuG0<2|t>c?yWMtQ%)cT|kHKFwS)6QYJP`pkwmRr1J|&Dl&1~JU8y|&T!sq z<)cJmKTsm^U8xoy)4qd91wsIb|t5Zg}G;5r9rrani z<6v3%+4^-nV`+3V9TTjjt24)}_DdNqT;|04QVSR|Ib2PhqYr>rgrDXhtRqydNF2g> z9CCmBf;eg>92}aY#Y~j(g`t_gxpX`&0~lvp(7wj|LCib? zU&u3*aT~aj3txaagp*@q>3Q71G8GUiC1ZU9eulTQqfZ_&7i6>83Cj1u64N7MaQz&d zqGB@6IT{xf5P8FI>Jj^ljO#I0)gy^jf$(e^E~czcY~sChXmMDJK->t;CYI1}xm9nCZKwCmTev@@ z$KR1Gpau1p-jQzAUCz=i`~%M;Iwv;2J%37S30)ETLugLS6rW?R%_nl&hs3`&MPGZj z8|bw$Z{!W;wW+9FaU**_j7@7;)hpcRb1|pvJ)mn3!XI&tZ;j1y^e=dO4MZ^-PPr?G z$C}8vYfB&e?{&jR SB;n__kw5zW8#muG>;D2qpUGhW diff --git a/guest/rust/examples/rendering/sun/screenshot.png b/guest/rust/examples/rendering/sun/screenshot.png index 46bbd89fa4677ee44ebd73286bdfe35ed98a3a96..342bfd497ac832848e9c875fcac6b5f21ce51a76 100644 GIT binary patch literal 115120 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 literal 44718 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�_CuYqL@5@V+5TZ*a0}IJECCFDj{GX2WpMKf*nmgq+<^Scc>8hM1oAq5o z6v1lveC<@Db@^FVIOD(I%fvbnfD^{5G<513zFM|eh%Nu&8b^^<`wwYf_U6m&oUUK} zPctR%xmTt)^99xid0%#yDD$58|FxA}4Z8TzU$H*!su!VO`4zK_4eFD=b4;W>O{VRt z(s;^!RryxsT8Vx(p(9GJlPQYCauuY$YN7!(A2y~QPplXAyg2?9Gfym+uj{i@M4QNk zpAQ~5;n^fxxFUurcllLB&#|@&eLlPI`62pz$usKBu!|+!xPo#Cre-9=_3ig7L4E#` z6z{u!dA@ga>V@3ICOq-2)QbD5?nwB&IWN6dhxmSqRqNNtqLLS-UTKKZkz%rIlqku7 z_m0a{JGj@`U+8k{b%21!S?-lOr~aPIxworfRBlbuMt6hGprO`M+5J>^A(CgOn5vaMhsR?X0R^%{m z0&Pk&*CK9Hcf`DKibsLiHTr^qldZVB2Xw$ljyHhWXZI#=#+B1`#>>4K#)g;yG^QmS ze5DSMaJ&Ip2Mc4lmv{pVzd;Asmzu#C9iYV9MR%bYpuihoy3)}7r_=ybbb$We0Ewq{ z(*_zp8k`=j0}hwGmQs7D(k$|*w@DxB3u37k%+%rNd13HmRXZ zCos?>L1cwapuuD1*w=LekrYY7GJ%%{c;mmU?`y2~CY(^V<$`nXg%fqfv)l4L66mI2 zf_XH`-zaZv>dyD3Fio8rEFe3?(qG6Lxej-L9b#@s=5$BbRu68DDJO18?)O$TMkjf^ z<1tI74Q7_Eu@1K+8+0FMyT35M&>I=4sF1wb>_c~KhES!Vce9OWxU0+@%Pkq)EHi`3 zN6ZV{h318cubC;jzcf>hnUvscx4)f$Nz-jf4m4D8KeiJXF6fH5w;IUlN<3v=INYMO z``^q9JiYDiQ`u;A-?jskSQ1ot1E>Mp)LpsU&M;~RxXA3B8?ZBa!45FcP(Ass5znrO z9Ux){h>bT(j@eysi_L(p7s%LSmh9=?ue>>$BlU8Q@eH-Wo#%I;uq0tNVMn+D?q#U3yNsIC*`G}Fv@x;H?H8Nj&V3}Bf%_BA^ri(>9rZw3a%l9V5qoi!-d z`&+~76}`h%8CLF%3g1P-Zf@KRrkUwB}Ut28(!r% zDiu z%a`!QP#LgtsyCp!SO$oRFQ(Gs-m3$Mfv3XLyHy9^B(r{mFLZ$6eFH4j0s3Z8tpixR z5VK#Xo;ITf5d{w~m`kiimTd7t_(CA3yWC0+iyJ9R9xleN&dI%3UKmM{V2dN)f128} f#{P$g``#|zeBp%;9ysIhzw4*nIJIeV^pXDnfmhDp diff --git a/guest/rust/examples/rendering/transparency/screenshot.png b/guest/rust/examples/rendering/transparency/screenshot.png index f977ea9654ecf7b2af4f1412cbacc335e203a37e..1b98035ffccc7f43762d87c800c0148d24ae0216 100644 GIT binary patch literal 49429 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 literal 11761 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 VbM(*f|H>V;G;d{Y)53LC{|zqhq+$R7 diff --git a/guest/rust/examples/rendering/transparency/src/client.rs b/guest/rust/examples/rendering/transparency/src/client.rs index 4ec9937c20..6a4153f87e 100644 --- a/guest/rust/examples/rendering/transparency/src/client.rs +++ b/guest/rust/examples/rendering/transparency/src/client.rs @@ -1,3 +1,5 @@ +use std::f32::consts::{FRAC_PI_4, FRAC_PI_6}; + use ambient_api::{ core::{ primitives::components::{cube, quad}, @@ -6,12 +8,20 @@ use ambient_api::{ }, prelude::*, }; -use packages::orbit_camera::concepts::OrbitCamera; +use packages::orbit_camera::concepts::{OrbitCamera, OrbitCameraOptional}; #[main] fn main() { // Camera - OrbitCamera::suggested().spawn(); + OrbitCamera { + is_orbit_camera: (), + optional: OrbitCameraOptional { + camera_angle: Some(vec2(-FRAC_PI_4, FRAC_PI_6)), + camera_distance: Some(5.), + ..default() + }, + } + .spawn(); Entity::new() .with(quad(), ()) diff --git a/guest/rust/examples/ui/audio_ctrl/screenshot.png b/guest/rust/examples/ui/audio_ctrl/screenshot.png index ebd86a7af97cccb17b7bd5063dd628e3ba993b04..ecd5e4954912e2d51e7f41e7bc477eb648f08c9e 100644 GIT binary patch literal 15549 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 Vo2Y+-|CWq6ZFAlFVDpim{trP@9}fTk literal 15514 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 S!T&i%HgEdTCFPslr~eDfMhhGO diff --git a/guest/rust/examples/ui/clock/screenshot.png b/guest/rust/examples/ui/clock/screenshot.png index 3c2dd0e340449c77faa58016e98f40c387948a69..021877b16a079804b95d60985da39a8c159a7308 100644 GIT binary patch literal 12391 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 literal 12088 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 U`E~>UAMu{toX4|k=03IMKg!Ah%K!iX diff --git a/guest/rust/examples/ui/slider/screenshot.png b/guest/rust/examples/ui/slider/screenshot.png index cfd347261ffe2d7616a9fa71e252707a8e967750..89e8cf93cbbc6c7f52df12c2e97ee124f9dbf94c 100644 GIT binary patch literal 10423 zcmeHNZBSEJ8or?_NVO4H*Rf-R3)aPT-O$ombqGXjC^BOk*#g-qn$&I$<2slM#UuoB zS*TTq+9<9AEModGUEE}s%&yg7ja(2ZBSFHBD^`dhKmv$DLLlVpe(bp++~Dl~*gw_T znR{n)=1xv>&ig*+d7k&3+??9`PWtlbm!lyFTAs0+_ZtX`_$~R0S_0l_7T1^|C_$OQ z+nFU}OjsFbHe^(7$XHpaslA@ge`j>Wf!>EJGqQ1x;=AtK;Kj2VOs?ZTxOrLk`?kt;kJs1^6~O zYVlF|W4-cl>crjD(*ng6!SEkg*jW1XRY~9~XXG{2pfWc%*U+goL{m5*OIx#v(NbSE zyj_IbMcuiE_FQNEfUmx!C$e+}q$;t+`&yXj4&jq_;b%;=g=uRCw~(w_Dqmw6J8d~h z#WL`THErhGJ05GAn;bR7S{Cj+F`XlE=adBWaIy~V)OD$`2kNOw2R;cIP$R-w^Q(Q< z=~Tz`HtFO#wx@vI(H4t;Bt+Xq7es_xG#bni4F0WOy41Eqbq)}#oK@^CH6&OjCoC_O zvGF1H601OI7kJCr-Ut?IjZFGHe*b+&PthxP-rg22Q zft8TNICHDLa*gj_d@L)N^B)^H$4&mfnud<56zg<^UuTMs_3eJ|FbY1g3h^kAj(M)R zMrL|8T} z@I!~|8m_^5EILQ&Fjt!>KQoZIxAQwO;K%GQ5c| zk7mw{>+o^(ks9ArI&k;B;qGLI&FMVT>{zhEC3G{HpR8|0;k-GQDg1dy%H&aWh>gd^ zqOGxAxrjTraN^2+SCPn5#OYDoxUYEa?VoU6@!W_Oi-o10TB~lI8t(92<_41H>8gQO zFRFnn8uFVXnKM0Yj$sWUkBcai!XD{prmA=j8W5bW0O_)w7x~U#`}omH6^srunr8bB z%O~zD^Sjkt6NzYHNX7z8yS`$1&ry!hKo<9yf-*sqtv$H^6lDsmKHrs-Y@ z)?3ooQ2MfN_V>E)5!)ThlRHh1{#@5Yk>PEU3=SiL8htJ{QD7O`Vkvi^-40tt>R5$r zXEUJJMG5-7#8xC6En4_BA&=i*!W3qaBQT!9K_SekUs2P2r#?}HUJGu)M zf2l6sgnLy)4XMSE`JDXH|6R9*kN>7GKoDOYGS~q78+?Fh9~`;i&IxlTsa%WmlM6?d z1p)!HLqg0-&fYTKFdL`L&E85ReB1-4JK?GmEM=?!^PIc&!oiJDRXDMCR~SwP9pq97 z3FOEyKEeo#WAJP`8BAMNhCt*nGE%<(NfFkQHswe-YoNN4JvO( z$n<|62gy8ASjuu=N}o~y|3HC)e*p#0+}QlY7?NP5(i-Wi0|A>Q6sd(DMkNX` z_39W@aWE{A%4H1dpg=hx60#_$f#a%p_W4sJCwD)i$$>G_uitdXk#@^nadK9;- zOEMtbuOt3M*&uf@sI3hc2>+KctsSN24u*4y#JR+LtUsTm(_lEAolc#TTu|hiTXs9k z)6_9liFhkZoRM&1u)JxT$F;6DF4`8ZnTJ3xvz+W@I6b?VhzhhSr=lPW_Hdv+J!L!- zwKy;q;@2Xb*i-FIL{~PEm$rz#M_jN_AQZI$6x`_NV&)Wbpt?M(0z&WkoGLdBJPkZ) zHP5GSq}fLUPqQ!diw7-1+J}P8DD4TfC(xci^#-&YXgSbwpylw?Pa|}*L^n%xvjhqQ z4FV0q90_P9&`hA2KtHjdAKL_dfPQub%zy^r{~rV*D&_~f@E~Ky@4z1tp^UV5c#Utq GU;c04I&295 delta 1770 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

H28#tDwbrykuWHjfD@kBg&i7Nj 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

+Evm<)FSx;` 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ℑU@L(3jV(}2<>F1vfU>AYj7U?P$j~y3*xs_e_F`qD9woO|3pVl! z?F$5p-Kxu;{oEk+;dYau!u(NcW@DU@ZW~L4Xw_e39_SA^4>K{#b;Tgfv2gk1GThoI-@?#pU8M-m~tG z5ePC5;1fJKS6g9tml}4-FYaUOvRhV}-)*2gmIoGNEr$$Al5iC#*o{e2Bbfu$9h}F9 zS|BwIN@DQSYcc}sqr5MN>>pYSfF}l-qn~V;%mO;#g%4I2)|cp*NMY-noLY?4QR4y( zfEmEN5C{kCoQG$IH~2E7%w*D@!{_!$w*_M|C7(WNZEsC2ByZ+?PdDXV1_!(pir;33 z{A(XjS@~tyYz~l~yW~12y5jcS3SZS<{N06e!Xz6$DX`*F0We`l4E`n*QGr*x`A5eg z+w%o`nS%dGgu!&VDr*X(h}y7&kCwr_8nzn(c#aw;p*KUfo_$8uL0j|BRj7 zG*S~kE)MbgN?akBycgH^D?PG&|MykS*RrtDJZdkVL_in-jeuQNV%CqP44VJ?QX-ZO z5np%`fTid5VqvZyQPhTFYSf`cZ_u?Kr)5dA>n2Lnk%h-F$`_+F-y&S_wPg75xz zwRI+|X=oNFRh=T%2KPf!YaP!{!RKNFi&cV-6;=1Q8!vYX8PqukCT_frARTGJYjXe_ zbt|eg!*s~$anrJB!PjRQ!H)Q6esMgu78t|UPS21-F76@28^OuxOti3&j>+A^lRJ=Z$rdzh& zgjbQpp<~4Xc(Fo3Bf+szXaSl8+9XxZP>wIc$jZMJRiYZQPWX5X+r=iMUchUew^#%P zc2rJOAEg?XuOJ|7ssaUMbpg)=p~SjMvSEF~%58xXcQDane32)$9BV~t5dU1hb(QBP zKPa@stNpD!U1O%~s z=Yj-11J+|$D54QB4qA&vc8QV@1Be8k@_Uos0)OkD&)4lx18b)xSTNuu`=Ssfs~z8cFt^?L*`jVP-sX(sxdlIu7?n^e z?b4Qj6ot1#i&26j($)0%Xaik^YzdGeE?4vfKmMlM&C2ix!}9+<*+K$fOo$49Jl|XE z=RLbEU#-~@Cn%ajr=OaOhI~X&VnL>HZxaLTQo4Bvk`C-`C~3&c?SAV(!u05O20cP2KE#&>nsev|t}jD7sWd0CbI#yzKFJI;(a z9UQaCItloQPoujhqpN{jdpP}rZhJ~$Y6^=B+%9)1jQ6lK&U9L1BHit>%!-K!5w##4 zWsmmbAJ^e<{PzTMmR++~-POBH%WXXpfd0X3xS`rgi#6O0Wqo^ z7!JuuuXCcxhlJ8FLA#r6hhe%^^2K>3h(t!V(k0Ot0a5EIbZfd=6evwiVZb_Rub{qw z9HtXZFkJ$lb83`f%jI(p)HjW7kfVm=KQbPaFi-76iOYGn z!nl5TJgl(x^@d~TY&^erY#Mk4r1Y^aoBWh(1ICtmSz;}mDBR7^s63Wks1^1Rx08dR zu$nn&ZGSP^h67AkGl6$6f+jxsz_U~-xOr| zTUjavP*CDNU@m~L;DU+)Wdg;ZbvRveKbW9)+7r()SKCxwf46Y>&b`+bHIr4k%fGie z>hCdft0P#ni@Gb9?|*f~@u;V|Xs3<8R){85Lq}|wiIwgl1=vQ6G_oK1?F{(SEyMrw zQdW{epzzqW7gveV-O{($H3!YwMz1d+H)moR4dRx`VDG&)Lo_bFW zEECM`!2iGPfiz(r4z}OOcpPI`H^cXvZb1(XejIL|}mBi4B|vY6%*RA~I0$^i_EYxO^^=Aw=NRhcy7l9tT6OB-P+xJ|s<6wRJ_>!u9Rp37riFUFImOv&M zMZm#PuuWLE3*wq9!Y&wGW}mob*B?yUTEA%eXaAS477JJ(+X&K`v|s)n%$Sa*Y-Vy) zaKQa1Ava?WwKwzi&Ic;xq#CgdmJbR@n-8`=z;=w}Y2j75K_U)p|HMqJSPfhrwlp_% zHu>V%;=}!bsQP2!)!>C!fhuD=&s1PVQzN<|6fDE*Vk-VLmUzrPx}|)-@{HdR!=sZ$ z_q(w>@fb-fh9LmiMwk(diYQbb{5vm!ry;gCcxjOF=8$tM_sfr9%HFWDqUC%MPzr;n znu4NSkQgB;L0jy|-f# zvN8+JG9eT2*8T#tHnrw;D{lYUO@pGEWmF?OZ28~a_FLAszp8FTV|woX{LA&k)S)Ja zjOnMlT<3+QBPiM^*d^aP?SB=!knyIN=Vn!k4M5J3_|E^5pOshF4Zez7^F~f0VJwb! zBz!!-6E)CRn>PJ2XKeV0-GCD4+qOM4H85)r+ex(Yy{Z^DUyGbFG|?=OxHjI*j|51V ztyZBJm6UD`mU&JHS&W1kplIneJ}4}c!|ilCb1pD7FqI-kwmIh@YJBLp5w?JlO7gX( zqv>cA-&wsNrM?MZ_z&QlS%L_RL@a#ssqg}tHe#d+azlQS8U#&R10jSLk$u(8u&@Ul zlO#RnWr++MR>1aAs-}DsMTi=wgEjqKR>2lhg!oP=X=1qR5p3?4S!GHxv z3&5Wyqt$FU_IM6_et|X%h_{h>=qP&wv0;^KOzYt--RSJo7oRv2FReYn7-V5LS? zX7uiVzY?z9nLV&C^K2;l?9GbGdeN(ZUk!)OU;40^2pjj*m~0%n1iR1F{#+_k*WJBn zqM&a2(yf0Ce)iON8)CONbf*g|TUOwH+IebfF0tHe;=3o^mLzN_)(Lb+Qt{n(`4_Y9 z&#aEv+2oP`5Rf!r13I3iTbdW;m zs$Cwyd39aHaGGhc`K=T5^n``O`Hgi&s0pb-fOtRxENp^kqJd!T57csK*^#`tbIfxY z9e`>L!h|M<4Nuo%IRD*p6u8UFImFGwW;+LyTtA=radOL? z{d0%T4fpfK6$9O_Gk@o`H4ZIIwCIRf^%>KDs$l2sqIH*iKOar}I?4Zh;QFt@yRDC$ zr5~=ncx_PqN?mD@`0uZ{?zN7e^%KYUQ%$9mlYuK=&CT>@PlfdDowT_=eQf^FYS$lU z65i(?vE4lTc5{0F?3p^O(Iv0!qb~0>uYE)c}rUz{RjkfVT z{{#gTDE^q0QQf>u?P%i`wi}yo$^mO;>PV;(3J~vNz+8vJd>3ZOFa=annB`dfdd^9v z{r0-zcKs9gEWF(>{Qq?$M16o9Zjn<3J6f{zZOYFZ^a~6L^a9VvUYlrxvYkZm#9$!1!zy8r@m(% z_Pe?ufEb8yiT*US35^J{!(`C9|C;Ac<8UHwY`FS|sP+AwqCgEwtA5i7|;Hyr3FGdD?)A|lS z+~oXzQBh<6T-#91x66Jb?U8-;y}#ObmnU+9Pn1FLVrVV`g7IqIy{}%Q_qctPV4i+> z6Pvi#BJukjzw;B{Zf*5HPqE7;*$aF<{GY4~8DF1wgZ1J${a?*49W@h}&@m+GSOv_F zER%b$c&fqnkfGo}s5lL6y%~1d2yDB##Gm&f0j1mvX5K4&v-gZMr5VxwG`kAT zIkgj(enSmctB0N{wAg4)>Oe0z(N$x4sJ~T@GcqnE02h%oSa$+W@`xV?slS=O7){D1 z30gHQbX=Gqa$inheaAY?et<_E_>TpsvgtGxDyqm`h3W&g%;xp5VNB%!?Ylk23o=Cv zyb!1CN18W~A33g5YmU6nojqoMY2?t4qjf7mqmh(^VLLh|w1zEgaZDUKZVIpy&g0z; z>i}gl@5ROfn#%3=rEq1U4H`Zb;&sY~|E1i&^}l&qcdZ zkP8XL^JkRRP<}3S{cKwIV8)x=9A2<3KYn}sX;xEy4}of+fWub^_IH>pW~<=II9U6_ zf56|q=&EWhv7Uv~SRe2y_1>j@y6z8fVJwIRqcjO-|G|m@PGrOY1?>w#k`_fEt3Va( z*`2S2>xJndp$(6LeYPg99Ja(Ebg^ZND7+xX9CA>gFIHii!!+S3R8c84;VFO<`$PYa z5c=#c3Pj(?2qFcivg@0Mv@vRfIXM|Dokwe|!G;eB>oR5lNnqrKH6eZ4_8|Gr*wAyM zYZk*UfP}Ms?6mKbLFSgYCHn1~2dXZ)oB{SZU22>orMsboFhcT|AV#ga7llbb99ghx zPS@O-v4;}C+?o>2ddz!7*c$Wx_T`9$5l4EMy-LdRY}xm_}=L3^2`U*4qNR`Z()TS)me z(k3sc%D1-KVeEwl7Xg{vgKnLjT{!U|J>gjr=m%-AyvCxfXU%Zs2$GbHW-!hCwMvd1 z8PZfgsII!K=V`agyq;JclPVNB($D3?eOEh*KSbPmj~9i*j2;R)#dJR%;W#IP28@^v z*b%mINiA`biYPxc+UZ|lE%b`bS} z4)G%D8?1+~oLao|_K~Ae+xzx^SHx2DpEoZ4yJ2;0{5ZugzTxj?IYKfa$-Opzxv;3U z;>?nre}D7+J{cquwbo2zu7Ob1zuo%vp(2_OZlyPjXPXjJguxTJiQ^2oYN;@pQHoW% zA_G!c$-C4I@-C=6uBj`rJQ}4BHVn~_Fg`zgGZtpm?2h9q_l>F-XZL_A!6{=ScMYvR zL}+7A!>|#%T!WmeS@~izO-;ZG#%VGHMN1^uR$T}{fiX1rC~JLiX}|}r^A?jlsE|&7 z?AXsD=E;jZD;{LDluDSvaJLt8D3Aj#Y%YAAY&)$-S<^TRu;M zoKK(Wwum3septI_*102oa9xi}q6CLEr(m1K=oX}OE!ra_ORyP>YmF<1hZST$o|C1`9I#Doi^pxAFKnHIlR81kSFx&d-TC0Bm3u4xBUE8r*4EqqCclx zp9sDC+UTx%_mi^9uD!ab!F) z$15?PH`dMkntnPq;{p&x1`1}qo~ypRhE3`G2#Bxi_;q*J>)$rN4Y>Pu<2_5to=qJu z_rGk*O>Ei!1t47diMtsRv z*+UgLRYY3DZMGuy2JzKL3$52WF!v%hWPnoqUa(6%)Of zZ=_A5(?}2;0@sP^7C~U%v;2n!gRy_o40RZH)yrv6!r*}Xq3Wqy=2hV{KXgDY^ z&^mYt@xocRt0XDj<|Yd*e}rYiQf`fkt4?58msNh@R9U7PTM!2a25k=a$9_58{p1h2 zk&myjKL8C2Yrbo)e7LV>&nOyBeh!4_$WFb-^PURbkWphWVF)vBSR|y6SltbP+YyJ%FQSnkU!S*gPcIMT1XVq>e(>m z75pa`S1nax&Nsg3A)qd|c+()}3#LdIw1gCJfP)t*i{b;o%RGB2N2Mx2PU_21e@d+@a(K*;t%!X>T$jOb2CFfp6;5WFPwQ-Fr}D3gS`5zwMEkZqp}Vn zLXg>y9ka(4&E>md2lj5Bset*}XsGiYj5=?mP z`g))*_Thp0;n97HfzWFV>m3AmL(^|5gPi(!`re6dE0pw=+}s%Q_+q6d_0 zuxe*@s46x%=5_+508z;)0Jo1BbhnuO3(p!{&Yv#mp`pNu2D~WfW`Wju@_9$GjDfYI*{j4u`6oWx`A) zvIW~(oEWAp$56qcYL}OPA%C%X-LT>T3x$%!V6UAV%sdr$>_Fdd>ksU!x+bAUEi7LF zSuCWE@MZ^yT@dYz4)hij00IDktP(R=XP^+(2$}_i7Ons!*8xeClV<|okJy7R%=3fp z@G+)arl}->7Dj_zGl*{mh@u|$QVFn}Du|zlON#{VB?{%nbNe$DMsUdE_yCaYeeh2R zz|#`IcQW$5)WYRt?!nsJdf$b!pO41OPAAO1@heIZFZwm^Isn(CZv4lvg^kG?xivn6 zW((t%6ciXuKfgXp?=;M{v5vYb$+#)e)=X7r9nAgxQ2oeZja^^OuPfL5{bbE&o3St7 z;nGcPnoJy9I?jQj;nT;lvADMUZg6n7V(_dG7loAHqrAjLHlmdOZ7_W1Z zx#0H!2Xr}Etm(@TUL&D3**Fq@+@!)wt}oAshO9!WW>rPoOc%tFVW=Q%L(;WMQE{%8 z%BCePA}Ellni8a(BerEjxY~b83k)zxplO2@iyIEEjn*`C*pWtZrZ>Vcys<8Mt0ulY z8Kf9|FU^GwxVT?vq zNqB%1qQOiBjnKh&MiL<5sATnQ&ql*6v10MQdc9uCqivcWl{!57%@JPWl9zXFFM3(M zR}LoIr-u!7T{!Gp)f^Xg!{QG2l85L z7G6I5uzUjs)ZWk^!}kOSTKl%-C*u+O(dgd9Ac#rd3Qthy#uG>hoU4ccVD z4y&Ng3MIQzXLQ7ei$*MVYRgd=58rSO+7Sl#STW2Ferg|in>#C;JUmzZdh3?&7p7*% zX3UB0= zCs3;IE8e!w)C57P;W<#(*+{r$Iwn?-BBz14pR1v#BO>c0OcoV(Tab1Lv0jaJ&9L?^ za(y8Pgja=?0S<|)XDKA0 zvS9#$qRC+7#Q?oGaGtkP47fO>A@|LFY zFxBSm*Uq}M`*Hfz18Pd@_&YFJg*jhx`>$!!&ks3e}=>OA*N1NA?)JvbCrU!KShYjTxz5Uv<`~q&BFI1&U$CqM^;&f89ed_q8&bcdEzV@VuYQ4&?7+z2(q8WI?mr8>>PZs zc{-w`_5JO&w~wURy(s>wQS!AIP2?0y*P~Ey^w8mo4AyIgDBM)Zri!kClG+F~w9vo6 z{lbPG9{!<7aqv!p;A&+PAquV+*icZi@JbJy-MB+mx9p4<9ELD~YqU3DaZJ)#H&jI) zd;!FXX?di!Dzds4izRX3XNjl5-2WZ4UicPmp7DGiu6 z*lbb|K8e!Jfqi2r3a?55L1P8!(1!6LC<%honh3$+SZbSVY-KK5DprMO&mm*Sxjsd8$3p#>>$F?Zf;5A z1f9b{5Dy3q0|KTyy~N}=p|!8R?oIf5eo@P-3ohHA#ll!A zal$cCJuk8%o(7SO-F-D@x5}m_>S|9q9?o%D^>KB7^0xzRIYrYtM+SZ+f>-qh0ynjG z(Pzfyxo=x?J7%vOFaEG{)y%rO?EcwL{X-eA-hG?;*ikEg&?J4k`+?uwlcne1{J}uc zboFL%Lk?d))XfIn{j#{uWYH{nk@CWt+@4pjB6jUs#2?j%7_Gt ze>Js}*oi|_5#q1V(V@u@BfgD20nNaI^o!sn2-8G+e_l#3${!IV0kJE|okA1B4Jry# z4%@8}gi#W>zTT-Eg`nV+RwNWDY_7Aq+ZR|Z_5SzRQ&_NAo+yMNHL)YY9|OlofYOC? zk7^2m)gYHf5r*d|8{@J_^_V}L7Y!%K)x9lX9mv7@yTQE*DIKGc*UAw!9tX=;(6A~8 zY-}>TTU>~(z;hThM5aR%TD&h^>>>w5Q=Gd!1Xh85_PoxW$o=n2RCw0(W6dHyM7C#X z*;V9}(}+trmmCv5U(OA!+^=-;JFr6k>=AwAtM9Cv90WW!B68a3_xszGvP~TB@Kkm^ zW%ui24O?+>$+cUgns{pt#{|NCn&+*DohK=Xfka^>eVrtlpuqttZPav-??HX@cg$Oo zSz)EKm zDLCn=SgE_dzP`>n9Nh8UQ*+txlY&e#25**(nmfx&MEq*ztz?6)chc~aCuKKUbx`%*Gn(& z=bYW6?{{c$i26`6G138}q$$Vg_FXf}?&l#8qV(+W-$8&^7<*&scQ37OI?dw7hAp9$ zo8u;5PJTA38$USRwRD<}cs^R={0Ro!AA4QE65&!bed1E=>@-UC+f!cEH|ktt_S|~7 z?(6~eJ9j*N?l;$L9-mB{+<%L`d*saiFY1XuMm~;RPq+|tz)LyZa(3DU%0kF++%?iS zb>|P8-05#y<`z`e_QVKznk00-2l!Jp8Si}50eP6apr4|xl6b6qp%srr{0WJqs6qa5n zqp+L^Xrqg4H>mZtEQY=phTcI`{_HobH$qdQ(LhZ^OVufehjf5Q@DZT#H1WWcEgIJL za4o_s!vF6jk?8QDmmvDP1rXE%NkmX}LGi+O3+@H`d)MPy1Q;-HcrY%a z+T>cB-aG9b#6mL=ZfyR2a;ebJlI6c1dUx+DSWWDWc;SC<-Ce{El-PXOA;jj#o5Q;Y zWx47>gvW5Zn56b3Ko4N;tJ?lt%jxnYNn3gB9(2U^M9 zfNpQf>FaQIG!mI6!Sw{)fhJeLLJ`7mKydJ&%OuyFi&r9O^tNIGzSy&spr^C9RBcqU zu#AHc4BfP>i=`S%4ab*~2me2w-UJ+~{{0_6bLJQ`gBoKSQJrCI5o5_x$}yo)Ld)l& zQpQp})fCb~i5W(jB4a6JP5bAmkP@W~NrbegD59vRMN%Q#@1DM&|NpwWs;d%a-sgVb z_v?Nwft*qVL#DyYgK2Wux-bQZi+ykCs%tHgvGltUq<-jy+;ECXJB?DQpcqTW8rs$P z2&^&w+}n+!=#!jDcbF(QP&I$T&NPcAi`I@v9DR{dAIUTpAp}q!kWy>BzQ&EY^4nK4QM(LqtpW}%d7jg-Japl89sA! zTS5P}n!ZB}2#B;+q9Sr)XCe$Zn7^~Kn8ZDa7e9WnG!s?7YPV|H*)lN-%!8RA_r)y` zRRK`D(ntK#z&EEuksR8hU`|qPupT8_%%CNbZ=yJG42CFT2Du_yTd(7^gj>uuk;x7| za#X{vAVVb~5H}0-V-gvm*(fY2fO#)v{!v2DVSw(gipNUh^PsV&q$}2x(~PuLII59==tjVNK0G`}HCxA0UaMjhlG4anZ5p`= zp7!WFKP{fgS}fvke>%T@NoLXUrEW!3jyjVrcALYck*<~KyHwqI{>wPzD8qxa6wp3E zo)r8&Dljwb!IvAze7W2#K)jJ08Zi4x&3Ewb)W2D{dGwIWxM8*js%|e32BB9e9!01g z*0Fj!>bei1KNOQ~gQoE<Q&CvbNnzrpd;WC&C^RX@&9Nlxx1^g z(kMbc+*RC)Xm3iY<8;yx&olFJf=cn?IfTH0C$n3-E+`d_Vd$hg)bgA-(y^(n6orHZ z4j<1sV^oL5jT?Fq*WA!Y>2*Z=x|VwXO}=yEEpUZ!iFJjw=Q1#LDwzDSIUEX^SgzoN z4V9Qk5c0?R?V&|0*0Q%A+PcJVezD37v6jDBi4w|3lDVj)mS&dJ9k_`QgwTY-p-zi} z1ht+jjz5?Ta+CVgfmGSfGSt-rJy<{xne|dr>8w~UG+xii$Xm|C5I{X(sjeu1B3FcR zByNp}1U<5ITwkmQz$px?Buy}3T79uw4BB>BzPGtj5RB;|;=*zVVqRQGeB2dNuVYHB z+c>4*cgTm_9Rh`?m z^x9u;*b2J3s~aw5y2430U&~E-di$Z(CjD8ff3NXrp|8p{RWEYu3v8uufdMC)D{ohv z6Qs13W%$?_E5EA`WY_F5U08RB5S@pr*+D8RtZ9~nD_ubODpu$EJLirL+W?*f(RoTN zSSg#~Zf?`rzOL%TL!l5lXLfy@W~2+5#Q{-+mCaOy#iY_|c+g=wPYnSkg{yN0SU->$ zJ!@cE_Ky9rBsOESZ6j=L1*-N|$y}r&!WaQ5SV9W6^6i^)^VnZHQ<6LH)1SRnKMpf8 zMgfl;uunn^3m}$`pq8GzCU$F7+gSYg)cnOOO6m6gD7@WRSU>A zlyV>;^w1Nmhs#NzdTl%2q;(MEN?--t_cD|$!gh4mJEawXG`Nhs!Wy6ag2BEJf(|(X zIq*%uxD>S1iu+(AOcEX(90)8BxxF0xj>Q)bTYz;>eYq|l&RCQ&ZP05@fN?|)&@m{Q zBsK>aQyhwd`79t&{|DrdSPXwuYy^Io37eTo&Gjmq!N3;G)GXwC5{3h;df0ozOJ6A!lzoqPwF0?Iio!K>LLS{9|?!HE#q68|{5BRpAFth{|gF zAh}C$q`tj@aLJ8u36WDv5k2m3#++i2IXs4B2I0>7khZCPn=cu>Po}o^R8cL`H)jxZ zVS<|CUWda17GSFl=Frpfxl(m0UQ5kwmcZ}_$xZU$l3ik0C7O+VZc(@DWe|;qnP?5EzY@BUe37;gt}=+*KOm9_+-JY>&j-K zj0R?QGhioj`*wdG1kk|%D=1BlM9Fidc0VFlD>2dJ+JknGwksD9)ZDl<2={HfBN&WH z>Nf`6hZ-fsav51h5vmG61;ho8MMCRF`>dDHL=fA^4-Q7w*$IK|L$>k9Cx1$~A~_`p z^iqHlE0!YmgI52*R5u9Yv*9eFPDBFp3-cL30357_)mFiB;DP|IJ8>ErMBsTx*{V1h z#}Feb4WlGWsVhYi9*dv=GJ_mP)Zx8FEeKSM(Osz>EGm#bdJ;>)V+6MUD;QJ|hlYoB zw*GW@L+nyou)-{A#tOm}u1lsipOF-?wb6I$#*oM(wl6l^dvpezVd+8~z>hcwwo-Pp z#1~b|qfr)k>UD_9mT!uO(AM)9PdKyVWZ}=NW?P!I#%}Hhl6+sT9$3903HjAHrIZAV z(t=zPTL@8Vs_n*VAL|Kz=2~@uVmlPIgO?;1QN8X^*lr@%|7!m9nufay^ajI>3YPn$ zN5*sk8=`Tkr{lL1rgMzus4GMT@+57wbO6Y*q#bOAn}79Xb)0S?H}J^+`Ifp4h9 z;N(wkLNyRsuLU2rj%MsH=<(6T<+8y<63lv;1##-s_}2#YoA+!Hs-6z7t^$-u7)WT7clb$!4bVFk;t;3; z2vPkv3ZqPw0fD0$I7zHd{frSzU@=2JP@5}wvorC6#ee!mV=-p$Z|Y|1E8@tav|Z^S zj4~=nz?dlDx|qlsw!^S410odwVc>xz)j75u)=r`s$0AN}Hx1WWu9)+pYu7^jY}rYM zmROBBEr_R3~|pme_Ohx-Bj-6@JD%vg4HWngs}1ph^jWW;FUOm~Gn(@n~+}h`wmwo3}%5 zZEd7wPtjDt#b~2m2qGb>lae>eon@^)gSoViY8djHa4;`zf0sU{q2<;F2v< zv-fC(QARQ2>H#M=Bze0$fPH1&mF1y&X~uGDq|4CkB?uj;#)`)r@kJHje0*FEu!viR zj6{eMqezbNMdElss0U+cc=R-8n|Ty&STNfYR{b1=b5hZeA$@ceD!@@-WC*Mkpms?} z3bh>V&u9UuSP}y00pQk55+WS&$&?hrG+r~nIj$h~QRHtB`JbJ)l9998ZL!yxha9vv zv|?-9)tVk%pZzngFZ$VZ^%E5r4-pNI(eAD=~^tpPc%akyy`2d7pfpvx|_pLoo`viS^0Q1qRe^t#% z5s6$HqzV_z?r=5%{D&?qxXWsZ1ei~VvSBuZ9T}{0)DRX~AS6qzS*2wu`R%lWNoawb zl3c|D(``ShXFEaz(+v1>fp?mulaCCI>mtD6i>KmT0Kx^(+JXK%#x&ZS*HZ;`0qcqO z#4V37fO^-XlrCYw@qi1F2}lu44W29l2gVsqF+xZH{%^~QS|kLzMWKZOy_IIq&vV&Z z@M^Dcc2@&obe_VyiX=8RU7S7*D0SB(e|@}eYw5?3o;`S;k2=7BI@wD@7*kF#&`}r? zI{sLMlGuFQnvdb)?G}KmV(aczB(3E$fx>3M_;hNXa@H@W*dErdh9H;}ayM(Vv)DAQ zRkAfy0=QEZ=Y(}-Uc>RHUiS9aS(Y2>SV0T{T#0|f(OBM1>8WD<4Sabn6N;!`V>Qv| zB<;T=s*m*b-MZw(&!?ApYHLl9wI?_yDe2t0Elg7?7})r6Sm7cybf~kXJXgFO||YPsei_9MM$% zK_OOWk9*Z(?L`!T=1~R_%;f%(Q2*M$-$Fb0>6+A)EqlF-PL|c|Ro}@&Ju^)q)?hn0 zQtY4@;asbDLK{g3DUmA96qAxWh+N|vu}6y;bX5+aNr0*!jz$QX#lw1DdYz4)h6+PB zn1&Q2Bw9CsH%>buRg<;DvBq6bd+OaJ0h>;ZFK@?Z468sYwGw9E2nT!#70^UGT!ctW zslEDK!-rtfgILHac?4t>v%r&56VezNI}QF!t@vdsL5R=`0zGaIxFF081udB z`m-Ay35A+_n`5Yg1VMZ|G-$TohW!s--xHRfD*TzvvsXX(64L>l%F%UUAp>tBRreo? z%ER@Jr;(U|Dh4A)*;D@7e8J^XSCk2}BfbHv)j}~Kg=<9dm}V?6%83kCY4YzzIH+kh zmm}q@E(-kdG-a9ttY)ZWZwqzinDTz%><*r`Ypq>g3UI$sm3362p)W_054#qX4&YGI zw!nVO!*21mh8&qxAzc-Yv-=JYDRj?ZNey-=P^#!OQ|ZUTXCp# zWg@^K;w2xQT`Fonm<`~WQCFuakUX*m=s#&c@x*VsO zCh?eH9|g=Yc=JW_hNZ|WNA6`m5R}3$vBSiN>rMXjUOlv!y4COF?^)PkL6zO56V+zJ>JdD7-G!g)3i<`=+WJ;8$*ur>rLGp|U*7`8=8 zRKA>#Vm)**L*X>R!EkoLa%MVkp8+%RlSo92(-5TU2?@>_u05l+IK$6hpbJ6=LHPzt zr?{>I5QBT|>8rP!e(fEu9JqYbY47lB{eX6(L+Xz)G=U4>Ba%Go6I_td8flZQ1G6I; z7R+!QDQph+A-Ylo`Yjc}W(Ztzfz5F1vhMm|W>o45;!WIgnF;un-#KO2XT2D82W9KE zgPc-1NxKp1T%S#@xrH1GegneFxN29y*E<)n?8>~e$FE*cFLye>n8Q*n!r;|HHq|A! z8&;B4nyH4%i)iHyPAELjm@!F=0Tcn(0%;Eu#5!U%^?0i4dCHl;e&40&-SY|m{B+Bn z;c4JKaP=|nzD{1!=263DYR+e`;ved7vsVBxBOg(7sDRx%)m zZsdUszMibB$H2h;R_@H$4K~tX5j~Xy=M#*aASDN;P9r24;l`U5#Zx&+DDGBEFT%CF zNJ^BgIdAP{PU`d`wh~K~UkBR(7Thqktea(PFZ&A}milcWUT2r@?$eBZp!#Xv`WKH{ zH@TT1yM_cU9_x%AVB(gVqtT1%hcaG@Jo+TXz_vLFVxQV_NHVqnf=PVb%!JmO#(=jN zQ^*iO=$Ch|og)ddLcwMn*c7lwgCU3j;{Rf(-5fU(qQX5((%3_u=NqpC+%(`FV+a*t zQ~-B+x|qQ)LP7YaQ2z53Eja{>FJl7ROe}{mYjjXQnZ$-P$21X#%Jt*JQA5Z8|JHBp zdCB3(BnY@g!|2RMaR#3cq11?s0iPK_yTPzy5F`ss&c&fS!{0LV@7iqA&+F*#ytTP1 zYSMW-D@b2P=bhF|XG~>e$ITq721_5$p4jwCF9x#_2lCHmbq3Gq!|$V)KY>(B1RWkp z2AQqxT^*;o9G9O7cHoIK!QQ=2abLC-T7!&5n32;Cirj6|bJ7TX-3F=fY|AEJ^MdDm z9v~51oP?eCa8l}qwS7J;WI~KfZVK}V>Kg$ znU+nk7_j9E`D!w0$QmTT;)aIdOknIYrn|KYp<6JA_X$aW0wy2?s7fh8q85wh%sG}6 z&x50~j>E%>aV=lOxX$fM__TI4pod_Xwg6HiIO5uaLDzz>tu4FOj&D3s|G9peicjfv zpTGq-)<(=&P+R<9UxV=KPkKw-97XW)16ryF-Bh|-M#pggt5iLl4`INo=R(QyhOrM^ zDoBfsE6VhY(_qSaN+@WDavW|73d7xX6p{f6Dyb~QK)VDYXM~AR zB?xq4aLizDz^BUK9kzfNVo$L3lW<_%gcBsIuQ_%MCoyb-s4Ao4p3~CT92pX@-7AAr{z5KX!A9RKih58-N zX>n%V&TGN?CO4u}^Er$ajb4hrDxscgBMIRw;)%&Es-vgFj#V!)$0%z8>1RpmRA}StzJE6 zrTZBXMqLKNeJYssQ8hpk%^^}&&R?n3kFg>Wx13g`g0g~uDA)IPS2kR3cbZvA)v=Ba z9{NH1_u{Eblv1fAPtKW$@unYtA~}~fWs#$1Cd2Hvkfr%og`%YMnUC4JYl`Bnvz4jb z?(Q|13_MOCUP$jHDDpBoA0a66~ElC@Gu?Bg+rwHW$xXWYW5ER+wj=~$}Je|g7;Dh7Rezs)>Y@pZ@ z>ox;;Ct*`CXu(7%95IF(GWc*{+94g9s*+Fup*VdEwf_u$GUT7J3@M zAc^2?-1g&*qwjZm0zL;BZM*GHeNy>Y?+x{s3|i*V7c%tbqqQM3Om?!e*M{8pFb@4# zq%DL0RYjeM2gAM=Np+o_zQ#+B^m=a&Lofq@U7Udm0}llyHBKPD_;0$A={gkEBJBbKV=_<)wKNLf99%%wqQM-R6j$>p%n?YDU%rn+=~lym z60Y7E(`@#&vX_}jKLhMH|KR-_)>zE{ddpEHq49@il#B@a$_p;ciycedK~^wI+*Yri zZ>+@xS^|bSR(-uObK0*L`m>HYA8Flo``0q-!nW+Q(ys9om%A^KAl12RX3w;~Ou65e zr)pi{rgYgeol%x zmL&A7kR}~o?aMi{2Y+j40CCbS%N=%v_pe_Dz4GM7J!C?mEocX(wZ_dL6DDDx+C$gl zgZ(5NL_UE~;WlhZaR`gJw|xm;NnKQWcL;P|8*wvs@)oD`4P-U0eU`L;;J9*rU&ZD; zSY$C^$$~jXRmeHen-HKylp|E|RFr!sGtk^-pq)y=T}o9ExyljCnc8ixbOitrB;AFA z(?*mwjibsESMuPY|7fSwet#lx#GaT?S*h{sWob3`owU?J%YKm`hBG`~M_ z=hlJeI(t^EE?r^l-zf0fiVj*(!0mBT=ZYAE^*tOIFpLtA48S6Udj{?*49>7;vMWK` z+Le*r;>I)vdLAqirCUybINd99S7mVIJl{{K2ESoPJ59R+ysTR7AqEAuP{2zOk{|A# z$w}^YJ8IZ#XKlo_eAymQ>b$n6EXV{@weZx2n1I0Q>=r22Bo>jhc_)G^wQ1vQ)SOFW z6|daWSN-@?H6{1l(Tw%AUWZaIYO?rV9?sy*s@&#gkMO zVt|;KvAO<@hPV zi>~lIpRpgQy^m6>r2Qspo&v3l=q^U&hOb()TJOcx9eUVWVYd6|`6M1glHfDmzPEQ? z;7=olH~`Xs!^R<4X&EI!g4f${Q_tCki(JaS1&9_E$H+;S8Gjzpj&xx$47TsCD zyEC4?Vk^0ZCyKG0wvm?9_bXDXa{7Ngwwg$C-hnB`ls(jQ33> zuQfj`xV1L&Y8;<+*zNR5Bcu2fu>6f71MP@gF`D|ztnk;{>R+F#>3{N8L+~d3E!zbr zj;nrJ_$r(_D}373h}M5TUKTBvsdbj> z<$yQ!O_GKTz6_AZAOZzFipd4hod~H{j{DH@?ef5{zxaw-5mPYA{`^EpIk$@6t2fQa z7GbKIMM!Pr{=(t?dT+*Vb>;K}dkTR9jEfLC0v?#K_<_<&f?r5r83R)jbY2SE7`T_1 ze9%b#e~udxAh#1nNo$js=P_+ohzaC{5U3|eZr~rlR`$Hdjyt*5tr5 zppXEGF+{I^ZX%W^o8pvD*BC>ue62!I010#UI@ zt_6jjuplc%Ls-z1UB9DUgG*B5P8sNexMH&nurvV8{ogx-F{=3-VX5mJw;u#a%eQup z!hz&}ls|9+^_M_CP6(o(Z;g`f0gVQ%|1O8vS_{^?Q&i4dyA^N( z6@w8h&l16|qhV{&r@m}p^h1{ewOafRp! zB;LC;m4z&*{`a36%qOPqiBsHH1Yt-k-=AIO{Grz2+sM7H)~_29&KK2fd_>mxUf)pt zJ=hA2)!tlJhE^*SwuP$M@|Z!tagK3xieId0*u-BYZRcWt?M)zGSASJ+IQziN7wh+) z80xqBHXJv!+9I;%_NS<8FQQbhFYLA4QS-&QEenZ!8MElr!2Zh%pOrn6zK-Cz3nE(| z7*BV)-88#%ulW7HNk;`Ckr^`*Y312%YqmiE+fDJa-?EN^h~s0o9-F%yOh{Nf`F0?z zx9V2=5tpQpdwVN;f8DJ5qT3%;loj*wP-$6NH$?XIJy>A*y|Z4+YUs-JbIixC9 z^5^q%uu&S!is71g>-R#u*V`>Vw^X>(545LrhEMz)zvI$*|La|K#_;~nM*{Ek_2s!t zW!yxded&H=wI@A4Un%bQlD%Nk4z%ipt@B>wK@8r&`-s%I8Ckj&_WjPk%ccjF`G2c7 zan3Iv{zC3E+VF2}OTX;~u9yUyb0Y#s5ex)^Y{V@aAweEi{vfEsp*4r)kF&|2tCz%g zOHyUi$O=D90$O7dp9&tfpt2DGrCm&DQ#pWOi2&{l(q+TrBOL?3M^xd-&Vv}9`XM7i zL?EbA`zHUAH6?#tgaqvOvz#tQpk{m|2we5JfKEUaG_N1Bfl7&xA#qeNsjS|%Nk$S! z+mqSyP-BXW3Oy0~B$Jihy6H!`ZiTh6W~eb+T^;s3QIpu!h@KCBH^n?Ui9j7t#05cD z0S*=jib$~ZMr!fuV&Z<~r=n$jyB|yn8}>z0oq}co)QKW6VDVsQ*7vey2-^GP%0MYx z8ofUzl9%c1ak^GUGD>q(&ZNvcY1haw<4fJ_@NKer+4Lm*i7AQZi3b5jFR-*_kv*Je zGttlW-k&Mn@@zLi(g9LNKsjI|C|C~R1@2()1SZBP01lU7La{2kU+vo$+v9GCycx`Y zb9~E*?3yQeT@(3T{U)*F4#VDf9>HyBP^?LW55HLm@2<1&ha2JlK{AYcoIOp*Tc)3w_}BNtb9jos1%lYL;3_qnl|{hIA!!1e9zwPPBUYZg#rzg(ZnGkJZWVDEuD zes6zo^R`Vk4EseXscoD5Z1sI}+z4lB{-f3f#Z=KD=XctRz9qal_I_v6=9mV*q3>2x z;cvcvd2@K>ob`TH1Gmd#h8zx9=~(H5WbUWn&D)u84qm#n96obAGy>uJ~Q^aNoNV;(Bkm~?b>Jbg9T7ZximnRpe} zKVD@BTLDVqle{{je!`?4{^Z7qfw_faD-w+X6mOUgfaZZDXy4jTOq1)XdFFQLSJ}t8A zz~<5amW)qZG_v?j!jgsmrX}~*ud7-94Q^xzogP@I#87ba28M2jDa$*mztsDT*O!1R z#y*{nd-Fk=*Ok7lWZ@mhqt!nOXvLn4@-9 z{R9cZ#h3^V-MzDp_z%rR@vM-UXGO@2#&%JqS04#XENe0$0U0Mm@Ibp!OUo)PthFWB zK?7gxaM4R)OTVU)4UTJUX0BI)HLnF5#3yO8P1l@*7q)!ppUJ=t^|>R3?zO`F1S|%#>GGpRVWGq zi^!Zr1ZtGljn?fI-g#%MO80MR>boF~b}-b(e6Or{tVuIu0EIDUC0U6D6%zr*A_?4h z;Vxx+oh9MGXlb!+5?O0Rp$^a~1AT4Owyg>DHGeC1l}xTLGFS(!Dd2ZU+p9dolA1p4uUrnvAd4B!Cr@cdxdtFWYYX;U0(Mv|YkJqP8QA#FmST!%Ju0Jxg*yYEm z@sEXzj)BhLMK8!Rk0~nBG|`Lbe80ZI)Hs{2p^2Kd2Y=l&i5Xu2(G_-FDyioR zz-285^O37tQn*2m^Z$-{Y!aiir}zDaw?Wmz`)d|VkE>U6e&4hg{buVjQ9k}FY)ZG} z_g1Sr3u=ZId|O*G^!N`i8@G%U&1pz7KYH}&$Z4O^o%e;c39~0y8$P|C_27cWy^-66 zBmc4dVi{fj;(+d(4=Ec`U4BoTD~+oRH7xQ_>NfK^FyCb)qo($1z>{Z39S%Hkc-L7q z6!ShS&cvZ}SKjoo(&^n_-b^kZ`4u)ndo$kJmHljMQ&!9)hwv!JZ%&0{D|W3{mgnC3 zs8@FLW^>kort9QyiGkyTPcMJ(eDmwe8%?v3&u!!MqlNA7PA&SK5cS02!1~(*`(vkZ z5gror-Y>=wJebr)FJkkvf=(DOnhdF-ic)`P4=WUr??+n$r_7;>1RmOU+3AkofoFSn z4%Vs99v&QM`gHq^`Ox&Z;Z+Q2es#+-mv{{m?{CqCWBv0{!-=@dK=@pK6&Xy~JJ-;c}jIBlmC zMTr=WL3po34V=YL;3NW20;)H_fuY%=s$9fKu&lBk)-V9llKxd-P>{6!DNF_K#9?Gf1hdn_#q^2t633)Vpb2pRovLB`I zX@3M({;>Y00vZgweb~kbWx(9#8jtEQ#!dD=&M2q@H5`%}RlgY2Zq9Mv@5T94NM}zC zb}4n=owZ-l!#Mw1VFLG8_lwvGD^cixVEHx;K~a!H_+lX5oZTYOf1%n-=Ob8m{f?q{ zGrLB2kA6r!;Im=kS)fu!KxFHduh*}~A@bRiwO!$ZJ?^u9l^*(*CjkKhNqF{I`ke&w zj>@m9dpmbe-`_lMMSRWg+;b7%-+>!f(2+7V{kf^xXVb>6T`2RnXm4+S_v7P}@w~Y^L@7&Wd6Qov;ceXBfcuj26fQPcAZS2<6x)n>ISq~xZcz=G^1VQlsJUcvn zqI9_D(wpDUs=9tU1hlOx_`Vt}O>}^m|NYFYyB7-w4|EMhBIC~jopbgN+)6#P=rh~d zWqS07#jJbM7jX$M`c5tCTbR?jS%1MERR%<@A2_8REFzdN< zt{jnqji%>}WD)wW?=AuXQVY%jOobYe2!d_*{{_90wV{uflu8!+%TSD|0A;9fCjnjq z@h+Z8=8B;fa2&A4{bT#ffLT`ohY%v@_QetoU<#48XO%(;^KQm8t`uvRdH(02S@v^t z%lrlR-c$`;+&kR(eg^4&{i?+xFttojW#c6Om$gdf3jI*cV4 zb!$+?HP8IkzwNJ{W&}9y7cbMXay_wSsaH33hTsoKg)cSZL$M0VonrLB?i-w;mW!e` zz#`(0dlnFg{&33yxreL@m=DkkB0B8g6xfSGg&>1~F6clAbyL(Gbm(GeM~+Q}{`2fa z5`q_Z+u4hngzaZDyI*=?ZJES(0vsvzUfGcZ4re3OY>etBKGR+z(3aO2O^+K{JepfG zy1*vm(83=l6}%G$AxPkCVC8PkVEtvzGtekr%{jR;&CTUg(#q_Hw21Xw#DD{VkNY=k zczRt*)o~J)))KcZTNh5_8pzr$?LvLWjUg% zz`05xvrKKJ)PlmbDo^adVkjDUPbq^)be8zP#?r*;aDv zV9nUgxT4IuJF_RlPa{XnF(9O(Ekksm%cvpC6j+!q;5P+_0IGo;N)gPPM2|Zgfgnl> zDCprxeCw3J?r%6l0(c`{$wL*<@lba;u(-oSMzHSvBmID7vRHv8LjD3$XFvU&=r7`K zqtt+^vib3`_PpK`tkA0NhBsz0rn zHTR>#ro5WrMK@;TIquGTp8oi!*LGlUfEvoT_~Emo^T<@yq$z~L@D~BZDtZU@MhX3) zg!8$Enik@_m9+;I77GBUx>6Z7F!wUxWnxgN5D1(Oj0E3Nt6d$oJ9@2Cqcu~bKhJf3 z8?kq=A?*9k%#~4a0o0a-tV4uhn&31w<~V=t_ZuZcHsjsXCoJ2Jzq9N1N@hnJlWD9D z5vepI2}!rz>>WA0e)t<0@-;hV_(dP{LorL|BPu07?x((g*Q7E2W?+)k)`ZIg_Uzi_ z*45VD`2oNXh1cBea-FDe2|G@E$e18Sn)`WR_Rjv-%BS@lb0AoAVQE>m#zAJSqY;EC zM>S>bqs2}QPic2_?rfgh3B?uZ+~0Pq`g8MbJD=$9PqMB0TKXctf_w7t;Qf;COFLu7 z*6X{(Cf^WIign(7y=f`PT{mkNS#h#;E=LU98Xg3Xp%Z~) z*Sg*p?6-tk*-|_4_4bfK*WeeIyU@hhM%}y~x9vedd6OdN{KMi|E#!%bE|(mKxFhej zzxld*^g`jt@>$-my?E8O9e%}XP zItt|B*Y^@;j|;r>I^XpqYPAIq$`0lCy=&S&`Ms^MUaO9|l0^3{Rie^>!wC>4373mF zvJnRjKdKCuaHtVEDI}m-0OpDO*|e*0NT5#ubboAX=uw(Ixt-n)PD^2XaaD8v&8&Z zA<0}>_SDOZJbLk`3kOomPoC#Xs|=Pt1l_LN{4zwkYb8~aMD2jR7OKkc5$Ac3*g*H#{8QQwn^WlqQbsxc?BuA86_becBKFWiS+i6yFGpO(Mtwrl-%DO(|5?`sKy!1 z%M2uJ;(1tYZq3Ward1~3HB`_THr`MeQqY>M{JYm>TyMj`&keagV^^ndK4CohD{S_? zu*o-F-)1=kH1EIl<y0%S#cjlNG52&w8cY@20 z?V~^1q5}W=M+-ow@j9z<&_;k|W-s`bY#d2$8|SVywvyd#gY@em@$8WeG5?-BpqXX) zrL4TXwRVz(gEQKj>}{9fG8`YWs-?ni9(-$Y8TfUfpg#!!H!DyfNgycN!M%vV0gHq) z1XzP`c=lO9O9!$Oz%byj4@3oM-6n(}ff6a6c^XF%#?j*hbf^kf=Of!WrL{SxC@mS0 zsdC&2Tc_opXU{BKE}a3`@jBy=!_>R!7A5|32b zL|sm3u3X8C&s^Y2F~PyMgEG|Rt&ryX^Va+1x0$VAt7X?`BFi!_ue@=1yM<*rzSP~l z-B{@)LNNKj*oOrjKba&%#X-^GjlUjfSCpxW6y8f6z?S9+H<*%{RFVhrs@+&zf1b$M zZQ)(;t|g{6CwE8aRFBhx*ZUprOd2^~qM><>Vg^N?ZJsPsQ!hGte&LxtZe~AnbARZm z1ef7QN)buEsk`;NcE?u>-i;sV&j}OyZl1}^c0ac_fBRVFiD=hw=!!`O*SbTGcF)wY40zWzHSP&y2oXY! zZ=0%{-V1JbJ|kxWM^@pa$k#tRoWG|{@7WtWR^l2E1h-=>b^3u138k%fkK7y|EnFnN zb0;n9!04ff-jo+lp54E6{mp~Gsh>~EG!{g^_ls2>81W8kz8BNdAEe8@B1^~(b81?4 z>&KBtYkPgBK1Vzq_0$FrkKokmv`ei@ZI%7bhn8%cX7zdJy(fjPm-T{7S42s(4p6T< zfAFvjXn#L2D^8E4jImKw`la!7d`yuOVNDT5wt@J!&O8DNZ4B$u%#HO=IF$EsQ= zY4^S#sTnaJ|6MYvi-ds@puBh1u;$n5UW44+g(V~RtsXQ%0`uNU=bE8)ajiq(NcR0c z6eqx7HJqINzn@>?B7vEyhSaSfTO3zj-!?GyrYk%#`sa%%v&*-B&G=>cWe|*ob@XQ? zccV$Itp$Fu&$8aZAP4=$w|{EJO*+FiZ*DNJe!MJve8d_)uO+NwW+}^$+!{#$h;&v% zRiw_yt*+5+Ux&Ar3^F^T?=9^7{iEFZq519aA(bB+^qkgS9vyNyFh}RXJnz8rT6pDJ zKYteP3=eMvBxF@(_zs??7x{Vhq~40z@3-$Vqbn%-&2Uvm}v<`zVN}5!hK?${eyar2l^aqhC1RB z)Zu!Z7x*FjOJZ22QlA}OTx?1&ub z3314YfwGVWl|s=X!xazu781n0&7`C9+j(Z@eouGzkie;&KrXMd(JNK6VX zPCCz1$3u#I;j;iw6j~8Zg9u5(AN@R*an6TF)2HZ4`yuoXh%XgQ7*!aOunK-((dbpm zKAFb)JLj~9o?Pauzw1)^CANu^+Qn(V94n*52}Av?;o+t&ye8-sPBI?-+;yNWW|7Gz z+o!D`e(N3?J#cRx1cc3V2=IA|KP5E&3f5J%i| zfZr;SAsGE(ax;g)K$QT7A;F9eZ5J-VaG5oQMgtovD4JB?6x+T)&SXeZQMh}&D#E;G z@wavkLbC&Un?SX1jfARHIGi}U_U;j#s_?f4T|Z~KsMsmU#{eqh44FM2q@*ikz?-Cc zMfSdaGoj|R`(MuW&YiZihpY<^9YY!o^!Xr2eH`BNn0OZP8hHh7c^Z^@$tL zaJmsi_-nekOt09phvm7Fpb0hT#}6s%2i(B6aH|K#YUXYRZYwM>{(b6c5N|bgC9J0> z(Qwg+#c!lw!p1r%hN%EnPK7^p1MkGm0tuHc=&*^M?(YLb2WJ~H^oT>}2@+jUM51kl z#lXC8CqktQNi+n*-IPFP1PovjW>0(*HrRmA#2gkEMLBLbsF+|~sC*?wjfu0R&5Gj- zk|+h81fi?bHG?zDfDW4V(u0}KP$>JU@J|%H6OM>r@_=Rl&j`W+BSBgog#=p8#%?c} z=@~?jtGqM2e-r#aZdhG6B=`Jt%JASR@=j1voEBp$)YCXeCKu?1Xo{EC&M~DQ=4Ikb zPkx#Yj=-i8qhxTalGI1i+-mJ9rA>Bw;vs9zp0(uFzPnd9WNa7ZG1SrsgJiWnmsCzc z2DisX8A%r*5^9pD)oJ%_;$JXOF{cNK4HV|xI=Q~{0XjIlOT3f_Ph5Ty?r=z;0{Dd= zk;4rl3t9%B-22#Pd!7^|iN+NHJ{6?DTNOsmc|bfZbKex7qV^G6Jip0{31($$+*CA! zw`zo*qO(juQS-TL@6q>X79KohRA4MDqWnAGzM`VN{Y`OT%Y|#q^*)BI23q3Z-j5q# z9bHySvuQkN*WmVIMgPJVuVXaMl`KqIddE75*^Hc*zAn$I{L*y2{MEYJY_3tL&2o($ zv>eBj?SD)2HH|`pbN>fFQV_ibW$^M*STDhQcD$Jh#8jv>Y)cIhfnxu~#R!d~=%m@< z2ny?8m@v{I+d&MB#>+Apk#s-Ki49bbMuO{Y?nRnokOuTIYGb{#$pXMZCfC{9JFpI^ zcOoG(+QBvw!xUFCRt)+Z#vGt6&NwOXpB`{ym$YWQd59VWZa*rd=2J#Tf=>TB7O~aM z%)fzT;+-Gr?4R+;gL?L7qusRg17LUJ-ffqwm+SQ@?dNxD$M~17$%U!=o*DuRMqxG> z`!j1wbmtC9R5SXiruS`Xl<9iE=-*Fvyx$!Ad+$h_AwfX;i-|y{aO4W)$a`GkSBt>n zRPJ0tL7jsop(Ffo9!&;~nFW6J z7?Z+5NVpjOMl3-X0OA3rQE8ySm0*j8=zD;UBNW`WMYZB5?&`^RBFeVYLy0pq)Zxd2s}gSd-;1i|7WQ_K~uK&Vm%5psWC zj-f!tRU==Kx${M(iK~lNdw1^A7}8jf=`9rgO7ifL|2Jab$w1HJmq#Qgt-;zsII}BA zHG{>Ih$-xdUj^k?fsLNr5@$;ytw!L@SLOUMI0X-bk*u74A7~4=lNK_%QA|-oPsoy= zH3o!CheRU9L4!5xa%UG~=v;Y(Km}nFMaXW%zk!1s2W>tGjY&96v>@?RRdDBFkN|>d zB5*lC=)+^nvQh9xWl)8N&@DiNZUzUA2@+>q3Fsc^pcjgza|J+x;;i6>8n4Q2d~V7- z;9{sLNSmuJ0$p5D8UmE7<(mv@_p#s<##}wP#f|v@V{&kHk;EYULg+Tr_#KNjm-zz( z;5IjNCGu#gO!P#Mpis|qjg^{U!wejda1!wFUE$RB<*elyU*#N{cc+&0^J(rrD0tOx;%h-r-S`UH)J3*1OsUAGW4?u55ZXPv3T7Bjio7&eR^NiRz9@JIU%Laaov2G3yMrC+n&mxwL%Nub$}}huTqtvKh$R z?(pHHb1st~_18P{G6tW98$Ypodt4@c;;5F>?zw_zT+svxWFp|HlvcJhaCVYa?f0Ox zK6eAv?EcVMjiArLmB615=0Lhd#2PAt&k$j3BpiX3;*YOV7R@w(&8F!wKv6*`4O-b! z<<-90Q_O9!ir3Gc#=t)VcP_iRUdvd0dS(&@takiZ2)K#c6EpFGyA4cy28u4@8>sV> z4sOYoGO{Vtu*QJn_5$Q{{iU)+&cV0a4OS06{BSeA-1-w-F7{59yBZyjo;Lp{==5ym zrz&P?N}9!*@pXf?o7-=NrwKLoq`ySSc*4j4UW6bdKyOKu7OfsIdKqt4ML3Ntx!9B- zp>|@m)dkBDk*mQi&H>CD_$*2c$4Uc`Y4iZuQclGhvfU8Y1zZv0N8%SDbkE=dPZUXj zn)#PI}(H1OTCIA5vY#Sn747C(pfk4hbhy;P9B8gLsqNqAm?7GU3_jGNo zM^G^_e?`*OHD*oBtNLucGgiXS!ie8bw;U~;-vo3i*a-C||C8o2*6Y$=u%Ini`9E4V zX~_$NT+PLgGbP#STjnVwfzM7n_aIis^OkH%$0Xq*>n*3&CXFWF$hHo&$ZqY!Ej8-o z94_}*eKvp9j7-Q*{hOsy$6zt|KvM$#-j>BDn9`+0QrWzQyd=m^>J%~cFa7oR%=23G z#K&{_`@m%K?PJS=qlBRhEDB09fb-;7maK$>5s^wTqID6$`fT7ECBVoDvZ1+&rVC%k zBs^|qRn@6+;M$~RzEs_9Ym62P2n5o{NR5=mq|;yze?`s_Bzq=vU0u(V*2Fdb^~H2Z zS3@fNFY|iZW$nk@rfl4L1p>_(y;LU8-nH1qHCPYR_V3;#ROpbVaW&o2YVq8wXO3ECe%KApm_U!D85J884?`#rOMCmkxi z_RKaq-qO>kJbFpirgEB3slDA|&S~gIs9bz;1tzCh0Oe4H7H1a?LTW~*~{%XjZ97E*TPqD#15`#2#8*!AkeVaKF=>q!-0;jX!`xG~9METz&y0s~r!O=3x8+H&dr3I*i zvv4Rvh)U(K3?~V|@Ij_nN>O=$($bKKM1Xz}3XRP%JtL~0V1}z_DKg)Lvl^Ml2?e>0 zicv`-ITcU9h0T&AL3= zM{~uthr5pz*KONgJ)>qQH?DEv^{!?|`%uQ&e_YeK%NuL=RRyoT{P!nyFycTx1#cM) zJS2IU?^wb7ft!8SQ5w46yd8F~wnZ z{e!ZZvtpj4IDa@f{e8>s7mW3Xc&9VUhx2-MeQq5a+i~;A#Ii%@?arR^Xi2sHGH<8X zQ+Y;O{l&uaSw|7F02tj`ust%8kaS^l2xMOpFgNBfj=gG??l`*DXfcO}h8UpakZn(I zUnwtNoMDX;B8~y-DXJCyKa$Qpp2`0IYgn98--nL>Vn1p~JU?Y7U7^ zIaQ>xF(Riq6e0?s3sNd_+F9 zD74B3Z+b+69pGf-yS)R1%q)bqk%pw2HlqC?S@zT9GZ_vPy|GaBhuhJn1xGRR=tHCV?R%fw4;K9(#_);-?Cs0>CB3CX>24 z8C@F?K7zoWl?;t2(BHsoF3- zaY@7mJsB*C83->PPA&*X=|UWFDLYE2Vr2;m-iS>oQMfgDAqT3f z>I8ZWpRnGs|pbJgZ52;`i$325#8PvwGRG!Q`;j0>+Yxk zuHS}xkW~UX9I!8EQ;{otp|jiB&Q0$tIasumU@sw%PA6~93*oT|e0LGvo&z+#+bf1~ z#nPl+`;yDW`_i`s->mO?@iVRhckCrZ92+h=-^j%LLlE1WIlvHLKT?c?cM_O$K}`a3 zGbqu=W|VV#r8NV>K;V*u=pL#d4GgjnfeGZDvMR{JO!bMApFVrRZ{&Q&QPQ3(O_YBU zt~RiB)S)?rutP3{oHIuT9r$Ee-?QahP{CPvS^@IfT%RUgK;cm6$-&>b9mdx_7-#@T z%)oh007sr0EUBVs#>?g85z=xGzA+%Rq_0#LWr=0W>F^m(4j(V@aeqnIis&>N0o?Ep>1FTJ(k9a1j z(6;dQ;WP{6%fmX4)V+yKd=m}9=4udg0;KLPCwPl++4hk0ilCRc;8fK!Y`_MH&E4bT z;iE#pN(DkfaJb?S8tMb79wK9MqnwCsZ|tZ_!ofU@L81XW*`5#b`*?Wu;+ZsdBf+}C zrhwxJ9`Gp_iV`DU1|}6aoP834GXqri?~#OP9s8y?>;vA5b$!LYVJt@o&8snUaVDGqzw;`rOcwUeJC zw#re%o$YE{@IFe)-sX+jCF40-ilEkl7?>q)T%q0WJduAW7pYu(ITT=kbqOmb>c@Izx2lo(%=fjfX(sy zymwhP8K3GTYCu80K!g6Wm>tQM&R!YQE07yeyP!Nl+6cOE)@ec!N&ufWPNY2XoSqWq z`sqkwSjm#rP3GMPPp!IMSohWQ^!U%Vu*N)AzR%eXYZ$zW%;=*och>Y+J!nesNjuAx zPQN;17Xi_gh$ztJj{#DKhKTCUkx>{_0O!FSyOPV;;pbNT#*8TC#vx!1z%k$+fFT3W zN=O8(J&sdMNDU>Z6pIlvFvY@`g#q<%qvMDfM8!C;eF2vR3(yoGtWn|`gr?>zVKgKC@6_qW3*l+U%b zY*=U&{mt^gceMlm`tABtRZBgIdCG)9-0z%gr(|tEs_hzkyF1Hve$IBZyYARNybE4E zBTZCEH@$U*wkeqId|`jbJGB*eD%R@-28rEKqL>O6Mg}1FRTJVuOh%b$LR11;8_T%; zRSlA(uAi)33s<%1YR@w(>c2X`&(~Q@BoWLsLp1UeGg+?8)F>_WZUWF1lN*##)Q9to zui>AxIqvMWkX;}3c4gWAy>HvNDRhH7LZkH4!1dyg1*NS>rVz+vM>JKD&>T^PVbYRiDYOE2q*2aYKyXLfk8XRn z*Ed+VZmff-9r<*l)}YlROIFeG{#V`uUN zSVTo^^V+0jv)Uj_U11p z@aJkf9FQ?HuOv2@jPG&vSDRLBhsf)>vBKx!8_xoJC@%GRUPy=K@iE5uQVHda#wE>8pp9&+%3g(a{BFs1-ku`yB%pcMVub0JwA;IzD9kI2b0Vblyq z8|d%~gyubXF$br_C}8P9ULb5-$ugkoWCJ}?j5ylm6swTwJRi>Bb{1>A(DHbpvO&g^ z!wF$pwG-*qb+a}7z4bR+d91y`!6#l-kE^$0o{2h+#GbSL)j2rUqCFKzAe9hL;+EB} z^kij~>Dl~wqBPpwvU+|*X+G=Fvm}-GiHHtU-#(|p??snK$M~}crO%6rXV@$ix=@B- zkC95EKn5ksciEzgBik*Nxfo>bU{S7RbfNosTw`9NZ*WS1_BXEfOxyZz#j>lDAaQe3 z39MzPc-U4q?d!BrPE&3grth7+Q!ur+3y{XXu$%qxE{Uhu#}7vh%Br&UtMr4&wG&ha z%fplF%EKDBpbj`frJVzTv^*8b0k{b+iBlZ+Z)(M4a^I5@5rG6j>y8Kki>?hAp+K=z zVb?_60@NFK99bqo#OY(BjrewNx&k+%K1mEd;?vL>xx75gAs<_rmbv9(4d|HnkNnoG zv4W}Jl~O%&$Q)wU$XReEq;5I_6M8&w z=zxS#k+NMn(C;5`Lm2=bhKd7ng%pW34U&9I#USYz#W{5I8S2lMHlMz_?TP&Ic)jh( zP?B6XwgrvIN3fJG6@s6^U$O!hAh1RV9h2FUe0IPM9*&~y27J5<4Z%uF6*agFV2Va# z0?ZK@#Tci7E()M>U|BU&@@)X97hv7ljBS>GDF$B~O9E9D7iTPekMk z13c#puw(}??FpBCu`YieW_1Xje@N=AY1*gN)A!mTpJPgYx34u#=|Ms@)LJ*4$2jTb z*EHr7`f{G-6S6k1b5%^RJoJY;@uTg@Fh&Q=QGj(pD2NuU^rUWY@t;--6|eJ8rDwZ)Q+}Bh%Q<`xKpxB6sfDJC1|I4uA02bx2;n)+_q{ ztF;PL8Kca{`fD{Dsy(%Dyk4ziC=?JnIO%CA(`QF(K)b5Dc-GNOAra3FEVc61z7ZSQ z{Cb$)6h87R*$=kd8AD%VXDlVAnFvwVGHz8tRn`5LqpZ>t`(Q;-u?mEYW>xz(6oWd! zR+DTuD2t%_ZaEq`o`GB9eHeEdbr;W&w0}RA{o1zPCNB6uE#}~&rXy**z7L`Ylld>O z6B}YazCNaO*k*3qvR7di(*w~9pIUBWG}^Pw2)b*-DEUI=Jy_bEbk~ONfKG9Xe6D3o z*D(Udj{6Z0-!Tdg0w6h%w!`w!@wGeKdHIzB;|$#h?m{P|&4!=Zoa2;#IC4ro$NpbL zg~m`3*h_2Gr9d+TW~1I#xwQrFep_uaE?s}9rY7oR>EeH-t)Z9KsmB`kd{^~d%ncfC zwp_Z&V)WOx)+_ZNHdNic{U$l%KbYVGVNza0P9&LqVyDOT?f&=@u;&7wA1WRj+nTx# z2`ed98ED(utoK55{}FTKMwOy-8>cfz*dYn|`^A6N!RDT%7lBLLRcdCg`vMITN)mSx zD<9i~0QV7YhD38=CYwMsfhjqVE#S5OpS8~kUi=g_Sfxo{{4<~e4n-QU>hYk*hwU90 zR&p-`@(LAG;l+#WM*cXg)e4M9@`?MS~zsMF1VBF2_jbls!DM zM@k}{h)=uZrgpUc9K*LBIwVcN@B=g0EpUWRjwENyTK|Of>1|8gA9o&c)wXRo>Q~_B z)mj_%8NL1Lx55oQf^$dZ`YeY9?N45l58Hg&w(HM@U0DacM%%pyUcGIs+qqzRyOxR4 zj<@1>jMnBQ)m5hBV_y45g507s)LixlzOKG?zl9eOzd4TRV?f53Nw=U(m~0U+G!p?V zE~v`noXvUVMC%=C8}4+6efUMx{&^{P$aMKvj|!`ZlW99-N89dAzUy;T{TR7ucHyDA zx%aofrCzi-6|?_t_MH5}^LjqnO=6vF)=Fn06T*2Nh4c`2JGSXoqWX)6m{ZQ%tq)Br z^;*Xg9ZE^Z@=aaW6ZmXCf2+>a@+~5~ZpruW)mBeBo#HTH(>#UpNoIujXf=!)2Y1Z2 z^w6TE;-s4xW#b$Q3BwN|EjQ~Q=t{(2n()}uB-Yjb9ST0h-Df*xTqbs!e^NGcK5rDt z`rZA+EI*v1dO9Z8vZk)-;k}MhY5a*KyXcE~(eG#d0BCyPB?|Hk<`6?0)VP39Eb8PV zQv*Dx{IO$$QeglH5tu!R0RtNOK$t00WL;)-Gu1C-roO8E5$5I_TxF-OOz}Ju8J9M5 zeQzp4%3_!7OFUaV6?GFk|qj=1$;1MHo7U;+o7mh|DT z1;Y(=t4JA51xVm!#iyF-1RpHXo=ca@5<5_+Lbgul9!gic!#ysBhN0ou2yntpyPPP< zq0O-KJ|fZg)K@Q`TrzicFKY=eq^oz}%#*`1Zn{lRv=8s9J+a|#ZqJ}KXVayFl9d-- ztE;PW(9!f0G7(|A0bh_vbxzwe=5= zE$piDzTW2a1}Qa=1S&k`lSZGkedx}5J51Ia3cN4DXihEtoo1zCnk9@AIY#6&V8aMh zWGSUbh@3}AdJxonrBrq2%dn@N7T+!{jIq3J^WDybHO@&mdv@tQ(}G(U&mGqK^eOD~ zz}bOl@LBwRcCq@-&911MC5x^FJzV*!=aSq$;tQ9a^2|$cQh`dT*UWgL;6L(0l(z3g zNodr~k%1ZctGOHO?HDEjD_D1m-X3Ys(d|r@8IcQ1h@S7J{m=Om+yKwhx9X{~VP7T& zn0%H9lL}=d@9B@#b38n~+krfUlaebu;3ezSV{%7aAWoz1=VQJJeI^L{MKIQFqA`fGP=HZ{J?te|TXUJa;bpci%k2y+dYtBL91eqCe0Mj1wGPza1V^2Ud7I4abgb^<*S z0<{m_M_>xedq8x;3|c@UNY4pWfb_5ItwoCqWGR3<>`*02jS|H;fg%lt)tE*oq3CD= zeC09@G&wztC~rY1ckocZ~Q1XsKV+baLGL@FV#)dUo-icSUNc7ylfxm$%+$4-9o zlOL;2ufVGg`@H!wuli>I~SuvQgeUb+-h0Ff~zG#>?Ili@+Z zzp0yzjb)UJX$%DqNuCj#%8xT5izG{pE!+@v%#7Lu*;i5W z1#_vVb!&p0H|zH!DxMqmDeq!ASd?r%#9GDLZw29$UWL~64|f7l=Kgfi9uNJ?s1YMG z8>1_)vE7k|h24?}uL)8P$e*r;Wi3#M5QQ?D4AD}NU=0BXl)~f{=he;Vib0i|Gzv*h zzW7vsCN*<3$!o;WFfNC*9sYzg1rF9*F!F~}M->Adk*2PY_fVk?FJwB}6x4P=qXFPb zq9IqAAJNF#Y)370=le^2dR+1_R48IEd7ENOvJQ5SRi&F)CvO%YF$2pqe?3!Np|bjYK^wb)9-JIh$@X z|JCiy-3Jpdqi7pw%Vv|5jxE`L@9U8@Z=cqmlBFcTpqMX2zy(E;xd04Av?BtvRTkB& zJni)Dm4 zngzU&N%xX&PqXy2`}eU>@%7$~N}hYQ_O$E?WC&OAaDb3n?L%=?uOFD=Fppo<|TaPbu^2_(zWH!DxEM4LCTd~4X-gV)(j z(KeqlMei)Qqpmm3tjOQCA>78Eh0tKY#Ajci99y3wb6y+7A&pcXL$py&OUD#F)4@CSZ-7s8P+m941wLJ2aZjx$%uN_=^fJbL1mT zye8~RsFjKc-fy!$Mjj@sC(2U11sl4Og&=`bA_Z4j(vN`%ePHhuz#k4P8-xtI+@ zbXayVyX+``HJ1PMRf7ER;gFfHi~kx8y#!MIbWFkRXnCM+h;O4`Ru9hXC|q;wq(#ib zj7AuC?9D{PaVnenn$nC0Y_E4fRu~n0fZc~7@v{6moXI}N)2T5K! zv=#6W`j0m+pfU+Q2KerF-V3PLIwPy9itxCyG?gAjM4GWon;!++Fw8r8allGi`8V9;UfY_*eugt1c1F-V1-5E#Zm!K_B8 zlBswVQ`LsHOAtEw3C2pP3uj4pz@oNW9*{4>U@@=#?HO2MSWwT zlN8z91()XVUIkvfN#2dBTMb8FZ*it8(w}T=Z@E7O(T|leU(wmzpVSi=&5}r}pBr~m z2~C`*aVp3&UU`b=8Zr24I{fL<+mAc<`k$F=TDxp#t$1ekvtONe<^<*jT~#R7MIJFq zhQj<|1a>qy`<+m4tB|xs(}=7B2v4Gn9C_uX6#KJXmWO;#Ok7{x4pW6t$jg0HHQN9E zn2-1J{Bmsh+7%11>&KUW{cd1;>TXe(rtHGyri&`_*3rw$7%CJiA`$URMI!QriXaq> zPh(1%WE2if9d|k~se0k^(Ar(TIJA(Rg;57l@V*`HcmMtE77H>V8qjoWF%Sp3|+WD~w zt7E(ZS=%?}u|F2Zwr(jpYJH_NIf$3nSZRLO>V{42sk{5@&*mO^-}+@pc98wv<&*It ztcGQNIEp&4{m$rzn~@Xxx_SyjzP&qPn*ndCm#}VKAg@Ke!a+ZPn z!Fa9~qzmmf3J#5qDT8I%nP52+MDJqN0E3j}x>o;DGyfu<+Ru$oBUxq&gpnnLt8j(% zQ{yq3q>*)W@t>6DsVtbj(%A?fVRN%K8{?npn;Cp0@}$Ylmf7Eh_e=I~r4cj{d2lb| zXhHRkgM71u!B6WgP zd$<%q%>}?mJunm_Y#IQ@X!Gl8Fv<%U?$pL-u94ODpR5DsQd@knZx1Mn-{^IX`ZL|*vv%m`KUT{M>)UFzK_(a{N47NJDdQR$ zjC1^nM_WVl*+EBPjQ6YoX8Zb)6n+Hk;xwRWDXHx=ohM2HgNL;L^#|; zp<#;pD_@7RY2JsM@YiETq^akNA1$B%bKr)zcK4}`hO0y3=$#2+?UR4!cYmohuu0C1 znaLfxGvTJ}V{%@Dxsno(B?}W?g$66ESAJ4_ZCl6f+fk1@FV_A%<9F{@%IZRcHD7~l zhMn9--vu_~u|?vgWD!-t18y5EiH!x&vIkI5_nKsCu#eA74=v+`4Tdi^z}YW2y?(>klr~Os>EvcPZB2B1(B!9qdTb?1Pi-%( z)O+F`Imzz0~M=$G$zWhtHMzw1D{oD`V(OeR-4b+$E8u7T@sPm;(-G%QuY) z@*h8a1`2X}0K``m&}Bd3&CK#Z-l*B%Z^B}E@b*{LRoU&f23vpV^ec%XjYNwFoZs-| zyx{W2o@8S2T5|2m%7$dvKo0 zxA^TEsWPbMg`QP7@Ge36!S*JaHIM$8qUHeJf^_-29R>da!?Z#xg zn&#fn;2c6*GEOHBv}Q~iEqcCrN*5)V_;CMyQ!)Ffs!(4)z9dc&aR%!_@q?!P)F$?( zbvyUG_`!hO2t=R<%|AZ`SheG7d_^^nVvWdGsjDX5&lV}r*Dg&+67$zO>NpDsm0+3m zg@vM@!M_ggkEnT_dcLp4d?Jb8!jr(FmAmGfu5D85TvPVUsdICCKHnK%bEg;onf2IX z$8}h1t~osL)e8WDFQ>AW{|MY4{aCTMIhFZ8GtEcM`EAKOoQcx1O(i!xKd`> zC`eh9z9=S0x{OWTI}oOH`}HA%+poe5av$yXE%oB!@bVlw)1E5mOzD7o#EH=;-39R! z04NPdh>Qvq@Jt~mbX|3oB7=n!Kt&_h&z)bZ4gx|9QkLdoo!`l_#4)UYUO&{B`>*t=`Cr4W|;I%4E5Fh+IXZr}Wq$3cye9-FnAIs_2F^g^IM{OSh z=p#F-*di)^;rO+|-y7?|OkO+vdKOHoe`Jo2TFeV%S49LoS|9s8=Ii4VYm$B(8Ilg3 zXQIzdM`L%r{ok(4PoI|VzdN^J-!+@Z2CwAi}U$bpnM~fmC+)mV?Caz3j#Ut2tf>X6($)mz~-`1N&1X-D3{KHb!sZMn{ za$JxGS-=dBC)6CSpwFOB3u`-gBiMo(UI z5t~T3Jfh%^2vmxTIkMn?xJn~C+H5caU%Jf}mJ}ffg=No}8Ab|#2w?zf0dm^t#C{m< zz~-GnM~Jvg&_M`EW$lH5sV+@t>>odm(=~1X{Z8~gaD+QeSw9)9_Jt zo?Ytva?>j$iQkc&vhY#F`w{J!n3%GSHAD-N42COCV(8>`9s$Gl4qixQ*f-oJlqVE( z3tniz_f9FFNFX5oMHe z0{%@V2(XA3NtM~j#k%sqK2^yku{@|u3Br;LxUr2EZT7jLepVsrZrAQ&b&|hpFY*%!(UYZfYsU)udA!AY$9vQ=JO&zkOHaAV;5gLz1LjmBppmfevL%W`)SLQ1K#J3aakmVriOtyOCZlo4w)@ z!>f36C7*<3F(Gx}dVnU_5xe}sk0a&-WljMvf{a)}vmu9rvCC#B^Gk{&SM(jBT_ihl zV7W!Xg?NV54jR5<*Vj3n{htaKqXv|I%-CSkzbTDefdZbLv;bEEaVvfb_g==_*R*&Q z2~j;~FW!=DsQBvOouQHs{&-M+69yn2bcyRsW zVU;Y8Mb|cwr>+%+X=EaLcnYETP=fSbxKVlH$H^tl5oUj@U_?yNqC(vT;!`!Q2#HvS z;3*1dDu$m3zHDILZ7D{L9c9+p$+ifDO0-g#HSSC7dCbKJ)IrBq#fkivIn3Yu@GcwOL+m4`ZBYp1_PJo#lux0E*

#1X7bAsMQXCO|=v%yl%_r)+68 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%0DW=k_b+v1P_?kp4Z4+AetgHu>(C~)6kxqnCH?L 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 L`njxgN@xNA9WuMi delta 335 zcmX@*b;@gl4|B@ft8u-n<4o#5u-6~h|Kw`i+p9ZXxqfB`^7k05|CY7>Sg8Ii`yb8r z4_Yg?hF6=etGf8-p!^@k|C7S2w}wAnC4N>O$p3I?&#l#arNZ}S{CmLvuR;77vN?aW zCtu`UusML`C$r!2Q2j;se{%nGUH`Qx=Bv`Lx%(fqR;`^5H0R>`Kdky!viHh_@9n62 zuKz=P@3qr~SG!-7|7#L|wKcA9b)3uo&*FOm5E|pVCtu`9o%q3OvKi-*MA4l<=XHH zSCF61&Ht;Ze28-OtMZz45P1L@{UoWJ91Qesft%i5yN_BBk*)_znXQc)I$z JtaD0e0svbZx(NUP diff --git a/guest/rust/packages/games/minigolf/screenshot.png b/guest/rust/packages/games/minigolf/screenshot.png index a6372c36f08699a5de9f43deb9662484793266ca..03c74a16d5fef6e9fcf45024597fb487a682aaf6 100644 GIT binary patch literal 102382 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

I}L?^Ac8s@vs(UgK82sKC+Jv+VP;B?OR2-Pk|- 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 sAT*t9@tpn)u%e_nM+3h2?esABqf1+yDRo diff --git a/guest/rust/packages/games/music_sequencer/screenshot.png b/guest/rust/packages/games/music_sequencer/screenshot.png index 9640f786c2120c21734da43e7c141bea82f08df2..a68c9aebf408e03f638f1a9abc5ac01f4549ea7f 100644 GIT binary patch delta 5140 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%0Dxc@P_bZs=C*u! zV+6`E=uXTppG1VYEuD=ikwOLd7+6izV;2J9Dr3r2$Ww(P4LtRS@c81{!I7Z7>Cg>> zPVo9PvI13{E)r)Q)Zyb906C01LA(~o#2nClE|<>DOR9+ci&feGi!K;1^)@}Q3PPy8 zXzO`OY@c{D)SI_>!R^qUWou=z^%7UUrwQuw3x6~9Q>fhgJ43mo?P1(q+n4a?#_he;1%fYy{qwiqSTA~9ntJ}8`!|!67Izvo4Di+Awj`j<(`VGbu9}N zo#MK8#DeK4WC7kAou#IKe;KOaF~qyalemxFyJxz5;-787j(FtH9qX-Z2Nr~WcUf4g z(YU%{aI?90DZt@fjM)1fRCAJX~Xr+iI%lcz^HTtfXZ1fp4uM7{r^X%Eo?IKlN^D;0O z5v2{T7Y*L}Y%pvPUVV=}Bt%lyRrNy9q1GY^?8G3~Ipx5T+!P3`ClQN(vthC1tfz3? zOMN#h%nqOf3(nD-1k5-L7&pnsAbSsl_-%}iW@J)rSE#>61+ZR#$q#2-i)#bUt;3k} z^66TLM;;%YL5HzOjKZ)4QM7ilWu54hEoxmX@=8ul{&vrWE5%R=R1j&xiJOD;$NShH zV_?0MCua(asP>ywm5S(6p##yEbr|5V9dpn}g(H*UMyN=lrzPT$X?0R`6_eVZ4O0fY zyMj?!(Yo=R}%0!8cu?0;Sj)p2-X)STESXRlQY6WDI>i(alp+}jT@jLdGKQrYU4pUh+fn-uLgF)jRE6sk0ytQ8+0UrCEbE9h_lptP^JS{ zKfN-(i8mNiy44p0bx5P}Nl^OGUtPxaLbD8JBh0Cp9_+YE=5?0g{FTs@JFG^6wTpB` z$K<#W4H8yx_~Herh9Jn%^cn6YCY(dMP@@iKBG{CgLU=fGi6-y5(NFG%X8{5)DWG|WpvdUQCF4dH7sIji)BnMH-qzs<v2zv_AC4o&EX%=4C;T}|{}{II zU04O(<6`;v+8sgQtj6)2?^;FF`w&~&!lt57ODYz}LkFsJyL34~RLK`0;Wdwb+KW~i zoY8xbr~n{(81#Su&TlL*(QUlxIU=&*Pe6VX)oaU!q0?e;$dfB5=d7$gzUw)E@(6IT z|9WBplS(?~=FOY*8~d0Wpq+5J62P$$(uvv%BRpgwOr9!u>^$gvo#A-m=iZVZtqVpuLq}4$a+*9+=l>bAb|!3 z2L2AT6Xw1;j#fG?ZC?Lx>5BDjoY)!V_wV|(!)u{?CcCpTE2QM>^BC~6ecR5h^?y5X G?7so}_KlVR delta 5385 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 K){4ysPW=m8xn`>X diff --git a/guest/rust/packages/games/tangent/screenshot.png b/guest/rust/packages/games/tangent/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..4536df28f8ba8fede6e232beca8c2128a1c3c1d3 GIT binary patch literal 76807 zcmcG%`*W1nmG1xQ0ul&YEh*4oJE+yVIe=*)Vz6V`-4YTA5Vvz+6cQ|nt8x;L38i?D zG9Fq2WV$VgkTI4N87am;gkx8%WT+g&v62Sdz9QU}O1T`DozgcwWogE#nCf)7km9D_ z@8{W#r@sHdcdDiW7}WdS@7ilU>v^8FJGgc8y1VAyGuN`LyVlp&{twGa|E~T&dp3Xa z`vU`?T4_r^SYKPcy*=%3|4-WKlJ(D(tk3UxW$=x4wY3Kh9Qdal{NG{y->vcgKmPA0 z`q7Pz`ji6))~>BR{>ISY+(^TL#=}n?KD;HOk8Id;JJFl0kGm@)Z&f+tqx+k(<23`$ z@L2YEsB48ice44$m}|1T(*EJ(#I>rPnZ}j&obi=|{s-dC@0!1#%vxz58+f&8VJviX z`e1qT(Qr>g;+GD4akRN4`RA}dGj?A%^z3x*y3d-cckLct-`QcMO*XHo8tPb{KAz*c zQss?)%>TYtVb85uXvN)*#sTMG`>ME)|61}|g{Lz1#AIFR70WezW2`=WanN=}2Qz0^ zc$UOo9QV6pPt0~i4m5ouI%}nUBOGr{-Wzb9o0-^>7%fYFKWNuS>)gpVgLbwSb0h38 zVKFSPJiqfo;@&{(#Y@+!&RFq-MXy!lvVzD7%ZeWjEH%sVxYJzYx5q=iUAvPz!WS1= zY1ZVd{Kf(Qd_Fj**t$~HbLraHyWzGilQCu$R|j)*&17Yzl%8Cz!#=QnRcBfQt$D2LLDm&IW@TEd*!zw_ zyCwSZvf&$vbq>#qGY4Hw6>T5dtD>P()9g%L)O&n7Qqts#@tcdm>*1WzWX>F4)#|hz zJng@QSI&8Y7d3N>chQ>PGMsy;d!|3ox>9?@wpf!#c*HoHW*>+iNk7?9q_s3umB&B* zdMztsV}wtpwQ$^@txd3^X_=FQ1Qo zWLBTUUYYHy>YQHvi@z^RpJ%0yU(~Lwjn2(UYZ>=1n^Q56rDL*`?HO|RS#eJuM`CXL zri&wUnuFcIZ$@gYY^#FhaGt*%eRyzc-L5h#qjTn9QBy_SeY*YbRrW^#d)K6Y!J!XB zBkjM}8eVrq*02L3>+|h`Kx=-aF7e3Lj=R&x_w)1aQ<&86+Fitn^*g$(@%@uW(#J#n z;rX-qe5<8tyGa`M-RV3y;h-hdXIpLF)M_?YdB```VCxFII4~6%bL2-3R5aes;pl!9 zoGKbVHa)SKnlnk%8q6Cl?dpclS+lP6(yUNHM)x_CqM@yQ;iJi%HEkDz-fE1B< zV@_sEg`H2r+h|2Ahx}PeB6*RLipaj?8FnE0@J{|dTi>4-amSZU`tRd_d^IPWF>rl+ zN8@cz`S3AcqPfJ%bS2mE#C-Iz_Q%5UqU5n{9bK86`<7u3G0;f%=)62aq-7~EZXaJ^ z7iFebMD`39@?T#+ed$_D@>k@JV0#%c;?FlnI4!(?mHj|CV~(|#6q;;wcmme1+sjzR zE3YQA3ZjEyduO_DS6T9%JWpqP8E13M5uI_^ec_8+-%^}gEfz5}wUH-ibaY-xrG*fu za#vY+{@bagTpXNYd+f6Gv;j8v9`^nGbNqz^$(QF?6_H-@>bSqKX!wR}`AW8=G5=OU z#La8T7f+4jW{@Q8MJS!noJxfTgeZlMdhTlr8%O^Hm#LLA2dwIHblE+-O z%FYUWHOFU7cCh5e$G;p4_iS(_Bl(__tish)8%+!Q%VO?)&++M74v)L~vl(_Fi!^zR zSSRwGT~_8QPk=~2sG3q@UD5ftn@3+3{dis{B}NPB53-WEW+knC9d}Q9kMbYVgZz5& zWazo}Rc&7WLS#?!^@7M6@@?99Pk7gtq2P3`%ZmB?rW;RB-z-Vq70w9Q^P=X>Ow>@( zzS>4IPSq-HN;4aj$SGNVv17Lm2w91=etASoBPl3oNf(dvpLQxIowVYkW@S_Rl8=(D zoExf!E;n#An)!@-thpd)L8V8c|73Yo?Ewh-v)5WG(+LIuq$44gj2ZzcU@x`dfPI?gH@9I^Gxs z9;EVY`(MVXGtFA8cckMF0lO?p%uxCXpy#GNE*5n@-<}f=9lbO%y~V|DbcI)Ldkbum z{AQ}Os<4&ukhe1{`NRj={$|$|r5Hg%mA|J+v1F9@5=#MfJq@Pjs7&y)OwG|Rh`gVx z44-9*=|MvO@o;E7anRNDlS%KXX-`?wlV`69IDLtK4cax)I#-h;HqwxIH9I!4HqpcD z8_qeKbtl0tv;;?WqAo5<>zoIc6F{TpE+Fvr^F0cqHK4aA&6_oeQc8;Pwmz#q)>latR~>kiA~glH`)s9IuNZDu(u0Aoop|n zc5KW3@7(`nx}*Q&L{{E4*Yb-qxfGwOPBOOL#7DIOq^CI0bQe#U{Q-Gflb011vxuic zFhkroSw~#YY$yd5gxgk}WoQs6X8I#@&^*cM>Lq{_2`OXo=_ z*Ez$qGh;5HNV|!eBaBkGrm8%ne%FC`VKt8?gtUvl*UX>t3!O64n6Mv2*rb=*0%G74 zQdd4B1akK&hMQEkTOIb2bYEh$ghO^MU@y>Tzc8I!?y&R1ghb|9{{x4*N$Nv0{hWo#UYs06+>}WxSBQSIVyRQaF^DcL5rfa#}NVe(J4GqF`$Oa1WteSi5WYVzMr~ z#QA!?fH#*_>2U-0soaqw4)v@&dugyWkBAMuNEuf*mhP~t!=YzDPrmI%R|fp0WU&Q2 zQFk6y_)xb%)awN0_3-{mO5cA3TA!<6Z#GwTUa30MQO28?*vLM8y_S#oJuRk;|XI;vXa&*@NcwuH>)6{?asXThx1$N?%w{%5Tf_WY4#bTO_(> zK*M5%V=)21k){>7k@!(?sSxHdeayP-%$6sTe*}E?e@x$K#S80FOUq*~+3Su)!u`ki z4e^s$X&v!CNzq`J)yV;3#`SvIL4104lbd;?qB((&lC<8%fEeNZ*=Cg;h zD_BO4%C(2xxjd)B^E_!*+df)k`cAX7b$R)nSAkM-G8*;O8ux!Y)&R-`fLQUHr8FT2 zSR#AFrbbS%g)@bq93^&^mk2v z^oze&WpWsaHF5++=OO@=C)A3vSY2IFsuecNE39^9xZ=wuy+Oih@OWBe&q37G-FItjzp8aOP{@?moj!;vy zu7uYFjLr+%B{ftPJ9|6lbjHy#Jj9Qv$*v$nKCzYpbN`*Ka&k z{cQGekBfKF_J#}YvOIq&@u3zfeY-^3uZYH zH`y$gq}OSY&-f)_Pkas0yxRYZO>9-7RjsGQJk0N)6G$&!=!E$+rPH}3$%3H&uGmdi z@=V~XAn>YiEf}1}wJ02~n;$vAPJB&eEa$zr3&?phP9D%;IRUB;enZOSuw_?R{2I`5 zAjvUb1}&phn=7!o=F=^^c8l?OQLt~M=t`;grgJ}5bNXYHq+l*!twq5 zW}>?4%oR&5{(H1HfDEh1Qpd?lR|7I)pmpgWqht+Sxjnl}*D6Ppr$9VDNhUuk=Tc0&{(I^hf0 z=~3^=cJgx1^y)nOdt%IXggK?w5<5LD`%X81myiu8rVmh|H(&@Sf%T5xt5DVP*$MKV z-d>N+^k|9Lh@KiE_n=u5dwN@t<`@7u`C%qx#Oy0D420G%3+y9obCP|0AU0B$D0C+` z208nsygK1^CvX(%CsZ%`>>Chxw=axcpu6oS4=L+@yzB}z5afz@AXu2hQ1+qj6^3^i z;=>l#cbXbgS4Jc?p1w3rFU|r@Z?_`Zszs;PJVt}3FV#hwUW{i>T^tXnerJT zeP<|;U_p83f?UC+^8^t+aW~DYsa39owzf?EZgwJl{jYdh?JiF(gYf0S?k zS2*09{#wC;R5iyX0dBb%T{kHMFvnI;d4=pT8hj{G0+zmF#H1KRB}`#Umb$db_84-Rz2U zaJp9^3^Q~w=&UErHP?|m>JmK{gdeoa{d0I75Kw}GIh0m9vnK$={tQk&MB+UDioH9N z7f1JFfNxu6q&I~|6w)=k8d|s;Dv}WzCK|!n<=8uq7{LMh98UvzM-Yx`mAyr%-i^L=<6G z8jk-vhgq-gRkfIB2pIOBibaU*1z+^;PyRLFUmdf%rz7r|_w;msAj@H|$+p<|(2MP9 zCCM{efeoEAPSr&)hDb`mj63k~#gjVI0r;9@z)zJ8mla?#g!XLSo% zZZkyiVA?#W#>C-#4~Ma;lQy2?ME89r_-gW#An)pOz`hD#rDifLG_NcMZP>7`vEl z?Pf13^tOj@sJWwvW`LR%X=5VwIJ^H8Wj#&@-6SFfTmvAioK^>V>)WyPZEwwAyQ>UF zR(+t7|15sG8p%BJNxam`T$o~SDBB%Rl2&^JF_eHuL1Mho%E74?L$6s--g-lu!u!*G zEyM4zl)nJ#09y30W+_t+&)nE(3EUr~vO6}hma1798`%J|;T6#_%stx*CHJ2Ut`;ar{&nIySM zAL6#UV8v=oijZWJ;@ReEnP3U^`X2ak>XV_iQrw(YHgk(M3{V4eMD?L4mn>h|ndX2+ zDpWtildP-qBMI2Sb~0;CqPGEIaB5@XmwEP8sOn#Z{pniL+C+Jt=eXtA+R-oIU?Olt^gsVo6!sO%-n*J-%TkN zuXjgz1LH#n3C*w=RG>-^%thi=aEbLcP@9%~khq4*KR}aDTjoYQDXb#}@Z)lelKUq^ zePF*HpJnxBSqeDtdbnW9NslwgwocHC#Z zJxK$(N*!;TRE%#>_@=ZWIVMF?DD~k7%T(A6h)^Z2jBFwysBxTVAc!V5RP`8s``boe z3Odh09N70wPOQ^wTc=)&CVhD{6r>kD8bFc|^2N$3kS7+YhY%uF8C)MP<~M@+NIo2Nm!Z9YPl-jWX-3(Yx;i4g)E&QXoR}Wn z3yJK11oWDGC(nL4VCRJQQ^XUwMSvm~(3wi!750D2(6_Ueq?-c{#7eEnGn1 zUq}+&zY3E4O5*#Zq_3Bhqa~GTOUUHrbsFAaEwVs`PUHbZVuA=g=H05?xc6t%udn1a z?EnkeeLixUy*1jA9V3ltQ(#ye_T1=1=Ukm~byD$SI!8{J*aO%u-)u|lwf7k+h+5N$ zjVYP{`4$?GS_%5mUw4s(+X$iLn{!y&5&B5>=9lo<@PiL85*8zJcTL(7!FnuF#r=-{ z;8Yo9>^clvqLti5_6?oAbn^WSii3J6p2#wCm^PXqmrS^mc(pA_F!_M)bwoRgK$^iD zF=VNX0YfK4pj1Y{>a-}0N<0RQU8mcv$la$@xocM7)nqdt$=Sd4TzgU2U!E2~k15Z_b01wN#>BIFjH& zeQ;8r%NEyjFsj%BDItntwc>^)5O00PVX+@s`TcXq0+-*Tl{wQ){dZKpB5;w3^JTWxrQsf~NQ5dkf(V3V2ZV?uy z8Th&7Xt~ps(?k(9ribI*Q!qiVPU8ij#hJ_F zi7oEoep*h8mt~Zy(Q?$OZo{7RiK190fN@IXSEEB!D=5YL7k^KuKoPl#dnw<@p=#yk z^Ts6CTdA$0QF1hX*OF8O`e$jE8$R7)@y<{;tATb$DX#XD(aJQigjD%KG>bu`!>0%N zQz%?gPW$r7x;;Si%{0nX8E@Y-w9W=G`(`b5l7>QOEC<`v-1B}9g0iZp&&q~hRf7VC zFVEl@|F`c$N&{6>>Maxq3DKdJa@?=(_-?8wnYksohBJRBw;TW^v{m+VtP_m|LhJkr zF>~*rtSWTlOM^7xluqE!@4}%z@P#LUR+N1FxM1@SqdPCSsO8y^Xml}Gz`aAlrPTQ$ zGVw5MwGk2gUF~JS5M+Qe=)Y3_txmB6kFdv322Dl|E+!naRLZ+ewk8$9NRHEAQtm10 zAU)XQenSX?1WQt{jHP4*XoI`LWM+7=2FgxO-7L&A6E(!~%tvIAEHW2wZi2Vdxgs}( z(!`*P51@iI8Q`iV@gkel#tn761o^P^B$Ntq9bI zI6dl4_K4I$1(^fGR3t<;pCssC8S~`ZKim$xBn8U!YvQ-3%BTv^k0qIW=$#!aM~KlM znkpgIT4@H32u2L0lfo4}LiVFM;T)7;RPpjmhB)P+|5JqF)p7s*v7397hYK+IptIp# z$#p}qZz-c?g>nBeqy-?2W9W-cY_zuX$k_-60N={U)x<^_X^i|{4mQe_SBFxp!X>ZF z0yUG;9+k{p1QH^c)?~GauK1=2?ik!gMoaQdG5v1_{g1}a=X+k9@sz&yQ_50iEW~n3 z!u}PpgKlE0aI;oX16Y_UN)`vFYCfCg00|ngQ@rh%OW?0o*$={?aR9B^5Vb-wU6JZCSPM(HXRjXb)0+}?qS;LE22_-a_#XR;bS zDjU?YsQ2g7jX;sP)b_T#?O&9`jhqm@1gEU{5V?%U!HK$QwoQO-YNJcNpZ8}Lt{1TO z2|QP7g?nfVPe4}~9!DF6LC6d4&`E?jTU?J03)!9=xBpkot}p%1xAz78P!$`f1!SaN zcWeYL0OXo8N5+n+wVz$4oGLSN!rlX0rWzdn$EdwJ>?!#~Ee*|9cG|mDJy#R&P$i>t zSqnb1v3Y9qa}+)~u{$05O?Bw~0p}@t%bWwR{ol_C?UxkKETo6#m_!7E-ACPkj_;=@ zBZKU|Kzz39U`c20WzQudI_r`2Qd+MO%4Z23x{R^|30Ml(o!NrDVamZtTmL7Rf6jFe z-S8RX)$%^eiCQU9>zvk?3jl+T_e($ekHGaXP^}qX+G*G(YMaOXMLAOJ$OaDV(?OJK z0m3`lkl`GKl5^CS3WBmuv1=kToN&%&aT6PM(Gt7kRpb7<@d_-wGGIRqOhXF*Dc(rH zD4Q~WSZ}LUzJaQ7{2$4}0#e`!#cNxheOEYC%WnD?Nm+tfK!++yK5&7e|FKwN3WbsH zr=U)fv(kM7S@2jChL<=hw+dPe^-W{9A4S!;reFlAw9uPrf2uk?<8e76unQ^n7D=al z@hZv^3i@We9-;B7+_n!nPNQns)fA&ph{=Wh{|TW>JcAw2N-uzRT0*T8pOl3R{2(80 zl5%>Qm9p=d05X`w7)7M)N~>0bX4>S_z#y%%AUNeBXL7tJ)(i6QCb?mG_(M33_hn|w z-Xz zOrvTboAVxelvc0?;iE7x{d&Ua+E5GrNpBZ{w=62U4wF{N@CocF#KYJ)C4J&;{;6FZ zwbP_HTG7xs^!n8W_Fp6dlL_l2`n#J-q7%oL01nrpxy*KeyI?-{@k!l=W4S{qml{6Z zF!7cA^!Oc{rD*`|e=-yz&3(Vh7cEA*&+xU>-RtyF=N*%m2kncX_P++dQpXoMC02Vd zwILYDJ`}yOjP}NU>4M?U4wCHvU8zn6_l*MCGz!wf^8vwNG~{7ra#9Ggy|l_Y{4W$= zFe69qezl?&?%ybOt_G z)ITK%EwmfA!bLiFL>Z3qYw;{NnFJ0F032uuQ%Dy- z?5tF=xE;=bEk&-`A=L=B{l8SRM#b7f9%9a|Pc-HSC=8F5Tu7l7ezNPeUt1P?F>?#p zwd(*ztZN1klXK;zP>YwQ+_Cx)venx_aiI{N9BD+5708m}jtwvPpwLdasO?60Q9-qEhwAcr|B9RYP8MPlgN-L?4sm3Z8U#12F z-9+NKV23i160eH@${=6TRDlKeFD3_>X8O-;4-6Z2JLN|TrT27dg+PmM9Qx3{FX}xv zom-m3BsADgQFjt34+nrigH(m3!KpQ4F35F5i{n6=aT+}HsZNZcZ)KJH6fv* zrR*FnJCz}~M8a@2>3SlnqS;_%e(}5;ze={8V8B8Onc`11C^5=NDJjD=K!s#Ur zyKRouHGQxY9|9tJPkWv`Rm->Q6XQP9*UBB;W(cTe5tQOA+ww%H8%2Zem6K!`JOj+9xsG$Z1Ul3yyYB~ZU?Z)n%9#2WxoAW`eM71kW79#ZvR^pcUM=~eu{1;%K^xk zS|d+np7=_{;^(xYqwmKZEnk!m-{8RyY7rKmR9-8)L!J{~p}<~EQiKldSNnsfdN%1M z^bAqn16x`FYFq~gV^NQ%_QB;+f;!t>pJ0CDjKwQF$CV#`mz^1XWojK(lSFSZRmWk^ z*9smBhfc`Lxx3PHdgi9vk=ue;T{8I!a_qY--F&RUp1Hl~Lhxdp6MdnxaXk03$(nrA>MluuGufZaYAY<6xiUxiFILN0-Cw z-jI&Y!K-oxr(c(w^jgr~jLQvbv;c7Rk%KG^W3eUSbnx2x19nBaQHajS&1e~he69CSO#HL|`3oV9o_JkQgV?-zjh9yXb9+sk)I;k6QI)OL$jBJIYOskeFu zgozuTb`w*dATMEL3fJ{iO{gao#Xn_=f~0vk&odxNqeN?iyjh73((&$?Z;}^tb9b_} zpz+Zj*>dV2{;;SViK0yYUa#kRwvN>6P*2HH(65Q>{h10-d6FWrTmIr&bB|MiHMMRC@+0@E_+9fv}lEAR;V~kLK=UxLY!BmdhEv_iQzMFZg7B3 z9KoCme|nIYR=A0MF093$K_Ync0@&5+>L^qDN{DtSJ`B76Briq$?bD>Qi%nGNMdmk0lN9hJKc-BDaM@l9HeyP62w^QOpP<=;~N?Ud5J-0cd2}yUCUO ztz=Flnm(Db*_sBqKk_l4Z>Me0h{XTbG+@#&A!=4rqt)Dn)4?>L7?Aqal=JG2sZ3ty z#7R?kurLNO9rz*nTQJke@ykqM(Nvq2TjU^=e9B+myjF%GlW9F*i9lX zP5dIOZ4>@^fI2v{asWv+rxnas6b`{O4Kje^?VN_mfi+2&!K>8}#_L5-c1`CN!=P>w zt+Q=T=lh6C*5pne4ef;rZi;9D;e7>*lak$h6{cF3bxfH~+PC2nK^4Xah^j`{E8!HC zKl=)YX+n*9VGaFWN7p#bWZhnP3xD6Vy;dUVDN$aWFxmx|_{q)DiA}^GWV=z9c3sd$ zJZIWkgZVawGgOlO#SBAb;AmsY0j>ZFBW)o;Tu<5=C2$2yMJBQP_8$ZOZ^rF@CMx8G!QP8-h53!fyRaUIDhI4Fk0Nukw8>SCS%*Ca z8RJ-#K}wEDBO{@>F0^91%n6bZ19ypI5JnFAhE@dznZ4xXsU*CFZHz;Yd6SJv2ifqv zG*bqIofgqwph**!(_EfJE#F6++d-MByihr*Z2_2inA?Ias64c2z8N{X18p3+C3Hlq zQ##T|93_Il%vfZ{#!gzu00yOdm7FiaFVpP-f|WwEGl}#_FGEX_>j(@zHELP^w?I4$ zS5@45YMMUNQ;aY|FGHhO$C39wFV{&nrXeO$B3QJ-Icr1+axmXBRKrvelos-^Yq(A& zr<+ea$`(KszXO|KwHU9(lWdaEB;y<4LgsA@O(Le^tDtk7$ly>u4y%Ts+lpuo670{% z+$xzII`W@oKcQ?QXjF{&$UfE^@7pVt^^)khk;v@Kq zKPYY7D4eavH3Ps&qT-T&v=pq61WpMRKNtSti&p%c-ht_U%%wkFCB^Yan%81Pt2kgg z1k~s9);gy>rNBN;{`qIwZMlo@Q9Q~{VVM?OeT3IzIab*HKCD!J=daT=71%@%4w{k&+(klDT|_nNFjA*9id4Y>cMXHU-ouVqh~a{F zI&ae3-_8sjRI|2doe*(@s+Jf_ve3=Fl>Fv*c6~Wgt#P`|z+{}JjRnw~X@IaInS|Do ze)j9U=PvOa&&2$^!hQ^$Nj6isK(%hyP1{+MQaO#15BrE8&6Is;3jF&81n%W=kVpji zuPSTE6w(o?FO~6Ku<_cXve-y%OEP27KBvh~;dL7M9`D_RoPZh^&zwiv#7sus?eVx?bACc|?rA&~P~N z2(o2T#bm}K1GcGcOHDEuy0jzJFKc?h@^Ruo4hIZ*W6`U3ot!CL!|X{sUBrJ<){l4c zfIJh`iC(uQVq!}%QaM2DK-4?HAJis(dH&g{eQ3Z+uKV?3A0e~%o8VAdS6YMIgiG=m zTR6`-W(JB>)(sb-DFf{dL>(Qsy1yO;d|`Z|Va!))A6SbZ43g-F81d&LlZzl>rl?c^ zK%xhLxJLFZMt`0xrhLA z5&`ob&=W9~K{sQ84`uUJi?WiFw_7d(nYTnN!ehOjN31s2>4hNS%7xfNQx}ESEsG_# z%51fNc!*uzDfJhDiWZ-qKwhqLB%sUVGLNGa@B#^-_iu1=UO>O^ML8dvEJCx0ecx@D{eY1<}(v71y~G1kbLgsP_~qY4Vr*U-v-`HAsHrL z_#}YLe$L-qgnAX`2}4obN1mX5-$g9#e8M;kiAIG_VNI1EUC3~dm@fOJIKUCShhj}> z9H|voeXRWtvbfpj)XKrxdJDG*{Qj*{5z@T zE#-6?Njf;m$%a1?6R=YO3ofUv?H_EdB$*3B;MfMb!rSGvg4}kQsZ<)LQJFTKr>Io; zG=X{~yDde@at1BngYC-@%!$K@pnxuD?@`)Jyj5G%zzwwTH{|QH7Rr6Ng9YgHMp4jkPM<)mM(U$NI(>u;i(SU#dh)|-_V3CAM>S9*@qc)Od1=i zK@kUi@Ua2j5u>x&APAm2^ql4JIL?xAp)T=4z*8(!S1_TDi5ZIpka!EpS*iZ}xVmwb zPX!D5fqBhHlbX+COpH#Quvs(?WA1TuRz%*Klp*I$tYf`#1k--|U_SGt4B4;pQ1E;5=YAxtjP2)sk9s1_cz|A|>}|7CqJQa(*RkAbcKR z6M2#3m|v+x;yCMJWt_+5fC!C~+zR6Jd&OR->RrUdC|fbh0Z=8Jpmf$^ZIpS2QN1Np zw4G4icXB(Jw_jOrY?+nTd4n>QG{mRLzekiq4fw|N{q?{L{}j%Mju0kc4WhL${b~848@wo5p}R%+$>(~ zOTWShlah-Npqa=C+<^yxCC-%rIcI>x!0tjtyPzmsCaP+I7080XLF@gSa_%R*1SRgmWzN90_jeVM%HEs@*g$s)uX3%1jT6#JDB=XZG%C=w}V&6yHA%srMKnB!FIy8+8FKyYKyogog z00)3w8RQeFLpTYqW1)m;>~#%$2A%J#`aUw?_a6E%2Re{N+8psghy5#|x>7NF0GC=) zDko{XnQ}%N6)gkdv6aa%dS=un(~)?Vq;+cET6{gdHx;pe5oiK9x7=7uly4Y-8Nd+) z>aI|C@~Lo-hlva9=v1t$^VFn7@)~cmL=D66Zm=~w@FVgPeX+-lf97Irp-08LlZUpssEuOwQz&&cW)nFFD}hYU&9Hw zHQEi+RuO?|{2D7j!KSJ*w3&?Eolu>Z2YDnpD6Z3w5Jue)hZhG(#%YE>fXKW)-nPR2 z4^a+403JC6nbo|J_XrH108;Wd{i`&G?u%ldr?bnZbc4?6pDLGN0)r;EG>XY2zTSj% zZO(7M>8U^tm=ndA82_I#s&RAShm9D?RAaSi>|2T&kgW~=MJ0+D@S0ihu7kcGNmz{eIr&X0>55F> zv|KcjGxljFOo}DeW(g38Rm)%zFQ!o;F`wa7UJib>h#Lfe%4I2RwV68&E-^Q%Yf9i9 zAEm8fJLvFi&bJF5L+2c=A^X1@I(MGu^z@c>^C{!zx(#)=8mgtsZ=(&THeTb7gCX%- zmWEr+o)yH74my4Op1o9xL{O&H$=9*eJWpI^lT*NY&cWQ+QK(lgBB@Ex@>U-DFpd*3 z$fO0mHa;8$&5s{6O;e$Me_(d0U!F?hGsSW0HJ0 zaGg>Jl#M``$UF5T0lpkX4g+UvQwRcoVm^YNEV@+C4>-8q7iL1W34c+N2zo1%e#xyM zeg*(Id_wwjseHHbVn^hZT)_WrCrInSlx z`6hg#20F^PPZ$0d@d zz_W1=-5hWTnXF*48GSR4KM6f|NrP1ei!<5^q-luK51yfog9pQG?`K-4^c5?9uza}Z ziUq1cjHQDXRw+^wpR3tWJb)TXs#dk)LIlIuKj$DZUS#UQe>bNT`1lDa{Qj+ zgM$h)*3E%c3&(tr><>P8#vJvOSp+VaWf=f)5Ejesz(3aCvA|4wMM_xxP6T&YGPKNW zVg#slaPMpX=q;1%^Aje-DF)sEm82Ocnos_$GDB5m!|N#!b!+7%k$OFWFQ1+p7Z-*Q zq%AYI^d#sZ7d$1Jyci~p^{8q?+5c8hrmZpnzd)nnR)Wh|q*=F4j@HH02?IM6`Vwyp z_`7CCxFJNn|IH%UTK|1TqDkgL@t7qlHIcGz(9Y>#hM5du$|M2q;q2h&kp$b zA&m;eMYO0yy7h>krjHjgOp|(LZ0%BU%W85mB6+p|)i5)EBiRj}-U1V)8 zhA381pglgHeh08X81;ATMqU9?^XmDzAil^|x%d{RvrwSp_ayC8ie->LoaZ@7Sf_>x z$`DIM#JmN3KS@_2f{Zpa4VEu{Qxbyap(C4F=wqvJ@+tTfMf&|U^fW#;}l?;mr1=t927V59t? zEnHC*Zv|&dKrhv)5%hD5tEY<3B24hfyr@}qu_9yhG$fF-US4l1MsOyyk#O13_&d4u zG_Zz6RhPMZly9%c3;`Q4vH{##9GE)Bz|&YZv*Ee>fYVQCG-Q9%cCzZl?9^n<5#Tz7 zSQtuytoE7Rd_pV>+Ta;_BmW?P0K6%zx>y3!O5G{7BC?0P^_5QX$U0PgN-r!`y3qDQ zB@vlfnC)8`vk>PglU)m#Aeg1cDMg!8JUL(9yZC8 zOz164RWQ3)>m^)3dEeZxiR)fQHlS6n(gc7XZ@OtvXpI<5bqVp50TeEC&5a>T%|#kQ z1uz|A!=$}xA&Aht0`GoTJZT;n3mI=3)BZFUy)PU0!p1Ewx@)Q^S5E^vLcQh^8 zrt{g6+hG{iQMVFVJq=;E;R{pegS&F}CVypi1*ndU*oDQ0r4v~HMbTQOJ zfQPF_4t~kl?q$#IF}0WdfIxT$+%UR#_^n-EdKq|^(?4`hu5wE@B3{UDt!ANIz;K zF2x~Lm7~ee=G-jg7c&t4n`grw4i~1iSh8_$5}D8gre_Z0K*};I{n|frOXX0h3;W$g$$RObB||=myuXP)%8j{+quY}F=Tx#XOQB^S=_uj| zK&kpu(^${THndm=7<3S5{S8uC(?g&XvlJd`zjlb4oyWhu4pu1iNg8qEWaoyT39j>D z4G#NQ5F!jg?*Vo2FUxzo3%4Ydvm-zw)ZG27k5~nQGk=}@Ek<1>y2HzhMa$S{4- zZZ}Bi2)4m>1k8lgn&vmhg_}6$Dd|G(iwB)@u?PDW zznhriIyN2zUy__LkhJ#(r;wR6sjcy#HAbf^NnRJX12`L+?k#Z`gy`bT8=3XCAW&pa zlNv@zuB!BxM`m6}D^ZCPK4u_GwuSe|*c!PrP@du@|C*YIo~-=Iy4^IEq>2@`8$K6Y z{f0Occ$If|eL103>4HOZUP*G#Og9$LRfjqO#}oYEmc`5kbG|-}7$kW{{XYrI&>nAbWVu-YN=|ojEs1>!+=tNORw6fU zzZ28m&3GudYv6fJj_;6fb|{f_X9cmDV!BzC~LVHgA}tTiO=hHp@>I%z10O+ zgitAZrf(u*Sy38!=+Qnw>%bDQ`5bGvesl#h_ojPUkE8&Ro)#02tz*om?`dy~tB zSL9-G)AXCC-XiNVDb!m6LmkplZN|Q_HZirL@ivDU({R4DjdIF~r4FJ-&b2?tJ%KE| zDKWGyO)pW-ul=cRmcNtOnHsvTlUhsl+DFU)iBGCOsGe-zM?)&OEbWaExGK;TbKd`F zX0#;vw|OoD-xV+$5;t1`PCFU{cBLl5H`l-jV7=jUPjHi+jTH2(!wz0xGF{i1X_71A z9zHf6-=F-O{BM>NOj!k0Ry^*aFEBh9EgQIUjT;<6gEe4^2$(BAvQdmQ7;s`81t({} ztl{+9{=Q3}cNa)obtM~hTUD24_6vP9XLY3rXABNu%A(&q$xF9FupE~$t5RhZO8 zEZ!~8G)62YRqb;nc=VAENVfMd{|uA&@Sm8>m*S8c6jV zn*+$2IYr16iAUzde3P?uKjPsL$7WeRp8zBuv z9$`+7CV(QB{4K+wR@#8`-NY~R><$q_RI`s9_NzhrI&U>#&uF%9mM+ZArr^tup*uiA z_v|3l(7oJZ|0JZjv@MIE6V)B1kOkX9krcAHTdsA`sJ)Ox3Kpr;Kn<z`N)GzWwx^nVaPz|IL5ADPh zs0^`KUV=H0%+POer$SLkc7Et}9XV0ysVy;l(_OI_PYUNCZv~ycsveB1at_@uY*#2= zMC0{ihIVDucxXS7;OWtwiGM}+OA=G7gZ3I-y|k{tJ|(UlwM1jd#Dm5>6Tj5$1yy)p zbmItuE(!5jIkt`lS&A9F)u_iwGF z!}(ikN>g(wD&*!mFt@}77sqzL-ieEOftz4j@E=E+D}2lGm{dK%&!p8J!Y>+u@`*Rs z@VGr6K;(C^E_fg27esdb5dn)UXfS9y$>?Z{ZwTZRGK8WA`W|j_CSSbB70}9?_d+SI zWRL{#0lLC^+P(nFuON0!LnekmH6v2s-Pw+4*LcpJWSbI8N6K1yun2W~rV^6lL_S2y zoBAkc9FHB;mq$KUk1Q0_ur0;F%A0DCLeE}mfIZ#Hlch$936{&L{zIhSxcDAs7sMef z0}k?A3|_)kKm)_)aH~kuY|YOD^{cQJ*BYX1WIgICiut>VEg)b`wfN6Xhw6oM)+%{t zMsc>jt~L$ayO`UlEln=va+OgmJ)4UnWx1^7!OYQRCX=QZAdi22auyei^7k3!j@?Ho ze_V0enbPGqs$T})GYLfS=NzE?^x*m?XB57lIE+y=;$lb=LlO)4iM({J4ts&IO8GQi zw)$mQp3pEXYQr7I7REy6ikdmRjN2*_Y=T&|x%@r@qRGRac%PBee+6@kaVS-!GTy%s z4Q63RmR?uy#;TaSd5l|w<_er2LQsl3E=u0T_yT|GPV>>d(+Qu=O!r~@ zlFFUxGGw&9HddiLb)CeG5~k$D@VFbyLsR|&%SQ5uFMC^0wQ9ER$#8;zRH$E25AZLO z{$+cK&MqmE!Dg;*$T*`L5Wknt9edc+@(KRDY#x9Pq<7|Z)JqIR6z+05 z^X3D9IvT>n#^dlsl-T`%$a}bEP)zI|tWe%b?+82Me3#R$g9GGt<_*{`s0*&&;SRe3 zNe>QDTN0Z%l_Mze${8=v4Ai+6cP=ru6&#;ebz2Bp1ybLOGq3BynupDxAHpG^^DV~Z zR%483!li;BCY`!AOkKKFHNt zT)dz(3JMH_L!IwaQ4EFnkyx2B62$Ze?&mE$v`eeYa1yqB4EHH2GK8+Ec;4!^t^}bgI{qnT?MZHk8DJy+oTe5%Mc0gqc z8gLgq_uWn&nGGAnN{YTF1j}c}!~s7P^L9-;=Y*N3;U!t}U}P}a!#1Q{s8Q3P+e~F02%Wk#g0bSNy5l=t z_bi9Z&$HA3f@3u$DW{@82yxKL)jz%E$*>M&CZjFUa&~%)E|dqv{2*GnggHU#z*nev#N2)A=zg1-PWP{SjXxo%`8@gA z@Oe;&PMF@`Gk5o}VPmo5jnyON9P)OxKL*Z*F!)NeDc#X5SS0T=mp`At#pIxVO_akh zAS6}d>w-C9_mzG@ako%(+K*fScav!NS_MNGK95AkeQprIUyu?8c{_%nGB|%>?EG)Q z7sM=kA^J}9Q+G$3BW9*<_?QM&ULC|Rg)-hNRfz(QT$L5GUl4P5LQWlw2F&{4(aCi& znHzeBc<|r#isBlJ*5Z0F8VROZM%^x1h^z3Fh%o(UIRB32x=3zR<37rX=S)<3QaF+$ z_s=4}@P4By@zn3Ew0pP$Oc&>HH?{bn06hgSQkHq%mX}ADFB>z0Q}+#2Que=+am_)j zrr_J|H@(Vv4(6F5+pYbI%xR20KJ^U^=!U)OU z@p@*Ur>hbo7xHqFb=t6zj%|S1riYHrM9OKq$dh{z+4d#BAB3|jtf@(GG-_q>`;oX? z5TJ{O7bj-_`DdNuLOmM0;-IN*c{kAmkHU*D;l>Ue6cd}regI(8o%FnG4mZ!q%?{kj z$A|#KL&A&h6*jP$zKQDH*Reo!!&5*cisFc9Yy^~)+}QKlBD%sL{(?b;?O? z7>r6R7>@W}VFN>x>!iCfT-<#LiM);$XeWMeNCzCdsRM=p66DQ6xXYII7odyx8DtQ| zt-+JijhL2k!EOuFfg?J7OH=SS%kZ~{4?&}H(+>Y2rCWZ zre|uudEICViz_2Ql#y`%5|N%h>g?a!|u z7?l$H5qE(7%c5z^Fg~>;_tG=K&_WfND++G5@>li1^V3?mkh&%LP6e+*k6)B5q1uW)(>$`nal)Qss%zj5Y*$O*RlQer!7`M(R9G3_qdNf#5CK>3m6R)@p57GY*tO(|f$=63@=kqUkCEWJ! z_);iyIjxv?nP$T2ixrX##`PWI+5Gp?9aUH55?xNn9CbMhA|t$}RiZJrYT8lrDK@H_ zD3)h6UB&eR@;tMq=34YWB;*MIdGcS`coI-U>^w{PMqE$E;M6w4js@I?Ou^ibMSDEXMZREg-VS43#=3@{!dEx&IlT6l8ASPQm|M9+ zr&Q<9sgGYJja;Msl2~1Ey8gLKxN)#*AK{Ko>!8GGITvKRg}eAk7e2d*V&q!Mczcs!N|kkv7-Jj(tvQ4UechRz}t; zJy!$H{NH5bZ(k6sLPk!H-*=q180vzQp!bGj*PFyAv4ZphBeh{*>Hv-R0Jg}{z1$;= z0HDYR?nR17!PKNZJa5kjGR(fC3+q~6`{@x`1H64ov0$#Hq_GKZL(F5in4~Ip4cT*6 z`Y-iXe=R=~SKT%u1>f3{;(pj0RsVZlj``d2k%V@G{+r zyJ=phWLK_MEJ6$aDP{>d>u_tlAYu)6QI`}k!#Uwo=oT-3`Pr%c$uD7$5S-;`%GZPF zO4}-_3=z6wf^WI-_dhX{2SMK^x$*IE=oB}W89Y`lle!xpe~R2` zziIsUy1EqQo6gY1%nwFKW`8hfX|$SB_7t6155Rt}cF)&>CEEkjqv+GwLac>^_5`rb zg79(NuT!_Ax6?9=>&aoqpdxjvBG-^l_hJjex=McK-3xhLclSz zKgsQz@Z2M43|%}f_&zUatYtqWKfrvPCfu&6%sj@31>XV0^$T(O#JKka*o7oJ5#FVN zNxM<)F6ZexAX`hV&JnQ$b2ZlfNO0-|L${IZE(hNtl^Y)|Zu<5DT{-OpN|`!F2S*sn z>Tn+7Txqm$4TgZfjNe`cmS-6Lh#2j{=uBV7V_csR_rAy*g)x=2LS1c5BBGnSpOl{# zZK0NsBSCjvfN4S&=^t-HY#sDJ8pH9>k~uk}QK~-(%lT#J#LLU2B$?4!+-^5>OZRHX z6O+D3_lMZO(VIBY{*rQyBj)X41p6LoOREc@>wzmy5wsjF7px4%c;==!O*mSEs3`Qu zH1Xe_Y({*YaR6K>k#Ow%>di#X@%C!a1BHIp%7Fh~DHW9&v>gDO=Vv0!oKjA}!`H^F zNm-EW)tFgg{-YR$!D+=o+buypFdfmvY9V4Jx4VLidp7F@WxmZOBTwimwJn)?W zYjO?ICRQJx`G~70*ja`IA4$PkH&wQQoCW8Fn4OMT)seSQmpIpG+Wai1nN-CYF03JW zKalcm=w8<8!@q#MlQjC*Yyq;N8=)YTk-aTUg%{-d->?QlWpU~TnC=fjVFJ&1ZKFk) zM10coK7dQ{_Rn}qnlkyG67Ecxw7K@A2DvqPqJTQ+ih27rIn9Wee2uV-yYb%#zv41X z2vwrCj${pF7?SZ-R`D%dp$d^P;Jkvi^G%&I&<^K1mlevGCOo@y++RgPgm637z5wq5 zyb0d%!dleJ#@ka4gl2_wxopxC>xI-b`XB0s>LMVvZG*aS^D6hSapx6fn8LUuOy%Jd z(TB}zTc`;~9>A80>9FXMldx<0a=HW8EcsLbj3qstxk zlNx&D%m8&Pv{XmuV;7xzQ-fp# zTF*6bR?pkKy1leah%?sP{#6sH?a+0*O`?|4Gp?YXAj%l3yN&;M+BR5%>47 zo}y0e$$dZt=ULPaGBgAFW{iZ-4upHc)};5G_?~UJW)fU_dmFCsDnV-t$$I&GL!J(r z?_q#EMPtRwr+9h`!X6{(pi?Xly+x`DM3`gOZ5lokU{ry4F+;r>F0AAbjy*Vg!#R5h zuv_`6fu72^R9kA@;P?*D$xEMqtTX}b;ALh+&zMOA%<&!B%!f7CB{p6l$aVtVo$qs= zlRQTrwI5cEV*3u~T3Yv4@6phiMCSb9T4EzHpCm=%DbkfQ5Tm-}1L?{cZ~g#}6Vy`~ zoE$I|ufTu6k_-MQlI~BL!U(;BSIDv|HkTW?;)pwQ88uz(g91akEKWX%*)|;Cjgrz2 z-)PTfl479`j6*sW2n)fsOvn=BSz+fP|7!HYEym%rlte5$<_^AYeR{PVXuV}LMT2}x zlL$9=KBp5-iNUg7giR-LK#q0AN6VWWl>Eh$gHKS9L+3h>7D}xQb^J%TaEeO>zsW!W zxld+nXs*y;M-e?nVRjhRMkSF8!sUTxT9PaGfSKf2)r*&K-7ZA@11dfJG1&Pwr;_?s z7@hT;zP9kE(ZQ0Y`-j*;$bn;5#t`D-xB zXh4f$Y|21MavdziM6G&Tce*2e3C%-m9><>a`xIA~Nl~fg-4fBif#pD{rAPMZZ0%wA zvx0fMIzDQ4MT9d2jEd}r=YM?#>^i=IK?X^it9N~=@jFUAW&(~V?uR+s64>4KAo^ht9U@KuO@MSUki|=#{ z4^%h@lRui)f~a?x435FbRm9!$p%-ShNOtz8BSzOIh{5eqyou?$1u#Y9bCd0Q7rns5 z8m@8TQAfGFTC)jEvMGF#j7;DE5$)O74^Hx480m0`JTM+W#-xz%a zmE@Ka<2aFVDCzo%ENFYaVv(DWPPadHTuyp&OVdw)F`nmd@KrA|_a7l|c%DZOk=W!O z?$M=BSrEs4*hkrgcUWv$DJ1T8QsD93Z2&{GE#d_`4V8A2PIV?HV<6l zrou$|FP?RtdkdEukau<5!!v6ryIJ%~uTBn}3WfD)_BO-C&*faS7nyRZ`JGYM@LMg( zUnwuLVI|3_3OulO9`ml;!pT`h#y_ZWMieBlDpm_kgmDq(TE2diQ$14|*~eXm`Yuzz zW9I0r*8>nm$csF1bcR}hn?1%9q;YFLHEg&^5;P!HmTB+#7ebLbI=}~>n z4k2`eK3`K{$N<^aE2<3N;iPnP%jO9E9zEf`Jx~^Ob)}2ng=@d8(cv65MIqf-h=)v9 zeC^ZMU=``mEuZbMe>>juK418DO0u7jLCkxuo$JoYKXw=Y^IJVz10QQ`U(aRro%mr` zLgC5Z1jQ!(yI}BKbM~Nv}PY4kyDi> z_n}wBgF>kT6_;@wG{RF0`3eH^)u0m5+mjf=IlNFu+0E}gSKI3U2Oev4igl(se9NbH(-1_hI5+H?B0Mwqh zH81#SI20bce_7K{X2%M#WD!t;=^}6Y7|P;O1B%((iKQquz+q<403|Q!2s|Qj;BMVt zcaZN$;2+Y>+zTSvRvNqS381ovul6+0gx_Oix_`j=Ht;T52Oo+;qGk=|xSKEP6|?Z| zG~g%hJ5itC((xbFw{dx2q=&>&U>}pqhO_@iVFJ2&JM(I$E%xAYr8KK!B&2 zlK!ZQa1VKiQ^4Za(ug-R*a(PW7mE*3_H}J?9)9AE0T}9=ns&dB5QQyX9QBt$$?(=f zsMmgvnkTf-jftDOZi0UUOjw~;0J96WNgZuoWS{^OZFDT3g2c-m2Wyy!D^J$L#4ipZ)78}(mAYDv&M}Z zoA7Jq*3O4Q`%fNOWpb4#y_lPlcsA*F9!|N=gZAU8d6UiS0B95MYdj+K!npriZ~*)o z_nJEI@1ZdLO4lu)D6sbi?Uyq36>#2O+B}cG0Wvj6cvsq1Mp2GcqhdSHK{9Y<+6nB8 z9Q|VUDTgZ%sJG{lz4-1TG9`5vw>B+h8JP}}S>N^NU(P@Rojs3HZEj!Xo!ZB+jo7~l z`z!Qn&Q1d-O~focv}i}wX&*Q>4c3yP4J!wPt|~;ITSCW${CB*)j|LYfOmXs22AD*N zL%#e)R?pS6fBp=)C-AZ5!P>)JAJzh^!mxKJMi8w5w4)y8Rdpf9mTJDnr|BVRdYIGw z!%Usvg*}XK)!D_>%)qqCI?P9^wDI$hof8tYpPa0tQ{!GAC^H{=mAzQ)*u82v`TkS_ z1k~*R)*Kpc@SK|DJo|SgP2b?^R(#QPSIkjhA97brHVfW0?^}Fj%mEgoNKuu$bk6?_ zkQJE`poe~Up6)Y0jFFmuG_r*^>}J+-U7r1yFx|X;qJ1}X7{rl>X&0yjGaiiBI&DXO zm#6>s8l#dV8ZODPPX@vOJ3k|l@OO87~3bV zrdR0U7!ihm{7%eEnPZP9cvHHfhjIFc7$2e#@s$_pbo}snG&0C^pagZkqp*Nr1ek={ z$>z66U3esXu#8mpIxvyv^c8~NAH15-*Y44*t=2as!-(93OBGyV&VbX$oq28&LW0rj z&@rz1^hUdASEOI;$ED80EQ9cLMeFucQW?3!r$u_;06xlC|e|uU2=1sO{h$D_>R44kY{G!uU0DQcm<7S|)`cRb8E& zTi0+hNL}DLNuFrdH;ki;(e46#QAzpuz8Ozz@;`J;4wleZ&pIwJdDxldJ`3M>b}QCA$m z9=bU!GryS2MdkZBT~u?v)`cASqB8&BrSY*JMjdU_5#N{D+ta?}N)5YhER}@tOt_A?(FxI#hYj z=wZnRjrlN#G@Dc}!a9#y_5YG}E?`xbS^IxCAP2?RKq`d7Mo=0xK}bA=f@jPFS~*rK zU>=whMWX^V-5Y^~5K&1{Q7D^6Cr44q1E~Rus0r@r2quQ2L3u*l8Iark{(o!J%=dlQ z|GLJegR*Pts=8%Et@^712vNztIZcy=h$*eGtZj%AR8oScQ3gh@2^eH+mN)4v-nUtLNp;<2HCsE;(`yKXEnZ zbu>#2!l5Ni!`htCWo9G8QQVpmZNn6Gc^~|Nr64#oZ@Y;)owwCr7EoeaLk;JKzIG<8 zn6lk4{`SM3n5F`T^A}elNw4)dvB?hXqfQ}?6eDy=u}Ct~g;*e^Pas5gYOH(` zWo5exJx4Ob(o8izR0`kiqy%LQ10Y9&`T&=g;a~+4W~^vD?1gTWI>3vP7z^F8a_SqrEA|Okk0D>G<8}F#&2pP@6~HZz8SILqDay`O?y6*`zM@XKRrfd@P^P(igmj z*y;9}KL`6swe3ZiiA^b!&CQ48rHVd=^e!VMTDnwQrHinuQ$iIEQ<~l0-m=(o-c^mF zkHm*rx+B z@dlNq&tyD;xlAX>`DU>|;bQX2lG(HSsAl_WiP5p%<;bZ)gu%k&fuyLv65c2*5D&O; zL99jqQdvMCHYKN4_rT5BHgo^M70);gqG-kkMRl|xBzHyVrQaz`zvEiea+IaTzQ|qs z(K9OB0)Mg@Hwh{)%H^k;u7Ela`Tn!um{r=h4(~J5m26DfvsG-Pgd} z3sN7Az8Qz?X4mMJ=Ni)YM?cScwfK@rk=z8S0Wd}TTcDL#nQSWQ^getNtDmIP{w&+2 zSxB8Eh2vabp~7!YnYn!+say(&=~m*}C&y8B#adc$%XZN;l~u=??*@`0-!uJmdm2Aq zoI>#Q;Twt3MAt;a83_#i{B{HW!j@VqF;Y;*smZQ0`{C1fHmsn%7b0j-O>Uim2>xN7Af{Jsni|dlXm);+Y{e8_CEujAezbbv zrw`Q}Y)NIM{wkYI+$;6nCrj|*#K@)&?>>t(A%pjgIk6ultFb?Vl!1aRrFdWfEIlF(Aucps&k9O61=A){_FVhI{l3gP$$yLm0%(PkWL6^;knk z1E!Snk1vdV61Ub>S$WR-qkTa1{H+2N>raQ_e|}S?DrDPsseP=^Ute8<;Td(Ieq2b{Fp(nZX*q4o(SrQJZS@IU8qYv^4noMjwh&e~q~woT^od)W0TFsWPm452hJ> z8S%f(ca^3Sl%c`G$93_)KWQuYxtc|-B2!JCMcT(^m@UWSj+li&L@lQ?7i&3=jekFW z77L+EZI62NYq+T!Gfvs84IAjCSx0%#eH0@TPm8Q7W->Y7&VElr>VR|&jNc%21ni^I zseEO8WY3@_;G{ws7@~?UkaE|0tT&f8k*l*Ebw!qM%M=^m`)wTwj~0i8zq>A7%hcj1 z8BR;3@R`*BRR63LB%E+M)H&R?dbyjet;J}t`6hbWUThgr?m2Mm z8hH6d+D!fKD0N2+x%>5QKi#f*^QN7fo6a{q#McJxZIalQWnqQ&J*ZK9Q^Pd3PJt39 zi^MXRU;>P;gMe$mQ=o~=m0athdG!wJ62Ku$hlw9M*lOJw-mxRXUP>ah=!j^BOO!I?Y1bs^z>h3eFI&2RS8yuwmhlV!bJlO%4+wDOp^4eBCSHVBA?Wd< za8~FmS!kuYsIjc~EXrA$JAuCCfD06focd@ae>$|CoV2Kb@>3V=Joqvmjig|RSFDVG zkE?YsXZ%wm94G61HT*?uHRV+4!?m;r0}!!H;bX--=Sfom5ZcCBUVDya3>& zspec!PR9UdXR}`YW$2`#qiizc9ds5`WTx6DKCNQA!xkmof72%ZB40=rOy-t|cvbec z&-5^d$qLN{m??7W|LqmgwzP-^rh17~1x%C4A25FcxS8^pB2G|bBq9s|aU+ntNwZ-Y z9R#;6+`yfGaWibPgE=E(G6Rg{qor`3^x|fNbVZ-DO(T~oeaY*<@w)yTW zlg;ags23?RtT{wldzqZ8vD?*Je)vCSGr^POZ*9RS3W>3`!G@e=g$4dvM|t7Ab-S_F zw?RiE6uh)6SkqjX6^Qh+)W5#M0g~!&N070o-RH777d0j14T}S(d>U7pJ9}xcrYR*$ zjUylA_de-de^!I_ck7ykF_`k!Z{3&vUcwGx*{k_UnfqfCS+?^F>9uKRSrfn1&8+BXeN?^0{5axMyIs>Jn-= zT!V^Zteazc=U+HnZia}tT^!-dy-N6`57!Tn_A_;%WaBd(7g_>Xo&a{@olF`Koy#3A z%WeHJ%9e<+Hd^aK@ng(tUyBPRd@I9Q)w59Oy&atzPb2o^}gjJ}x%3 zM)^NWZQatW5plu#MBr}fK;r0!q+=OyjJYP3RqDN+T2=IA5X!Gux9fk7*Pp@8AdL+m zIkRyQk?1S&Y(Gz(u%B|t8eELb_L=)=-T&I^e+B~X0EL91kY#mKckeSt_2-9Si>K2>%J-H?_UC8QK+^Ad3oK*`g4tYFj_9P{DmRgeKPi9ik`n5% zAw~C}%i+&I$K&p|v{?V3#Qhie#Ce^c2sQbCPIEDFf|F3v-F|_0q;(^8MrrG-6OYFy z`(P6x`(oq?hap|TISKk8KaKgllg66c*ibE8%NPQmvp&ZEziRs}Z6C?=cXJAot1f}O zK}B{a7lSI2*4yC)-DBekcAMl%uwFunKgV4kIsgo{jLpLQK2rl(0Et!X|HS^r0T2O6 ziYoqGw@8}^H^9m8XSVJ?_(fNO;!9lkF%%c!<8%m0X8{yrj;r=?j$Kf&-%=~j1h=#E zFM5CZET!zXeEnH9)W+Gshvx80)|rp!G{(0y>{%y7ni02YHS9K$^-Brs63CzaU~ zDIE8M8#c33MM3A2y#(Ss`Ena~aU0nIl6`S4ZhvcO)J zXmFUDIz+O=z@2S{x0r&In?qp1}df)tff)?6Plz#-ombaUojO;BhjnG!R|?= zzPF%%Lo4;g{~T)Jban-nFB-G#IZA*1bEbxhQ;yYocawQL%_DV`e5~ZokQn_0_v}Zz zi%_Fq|IeZHAZU-Q&f?aB8bYZ!V{g2ftis0Bf+(|EKLlt3QUkzDu8eXiH@EOBjsW=y zc4@6e<7Dr5f4RSaM!yjPjBsZhrWT1~ejFa2?ghH?b*4HF8~RBG zCJ_axpGXz;yap6f4vxO~FL})f%C#&m^-UgKCqWhaM{ z)2cE2oMHS*p<^qwmR2A+d<$o(`p>5l(o3?y6vGx;&WrwY0%=*qcTKl4j&$U{VR47N zKwUTx=OvR5Q^AB^!x0%H9taelc_JMz+bJ!wQNej?GW3(V*7-=dV+$P)V(_f$ZsTgE zLNU+ANP!j@o{2E;8_t*=g6UA`^T~9$^yTcc8+|4N3OTrCa%(5LNg$e?_;8PF;7C6< zE4n;rj+cOAc-p`{|Hz}kl-l8fhycW#BKr=S;Aowx=nM@twTMvUB}o%a9k{Zk`SI?NU6RO%75g|fd zJb;)-$jbvvH1rk%r>SWKq%4>$EbAS9O=9cWQSIX;%k~YcxmdO>+4WUMcWUfjb$oeP z6M#9^U5b6x*?x|@>@k|85k{SR2tJ9?81gR2sqeuPzt%macKz<{hgcf}; zXlTWo9fIJvm1Z`_C9JuCNFdPnU|r#|hv8efm)5gx)67L!aQQmJ(OwuN-*nuM)IMSk z1oR&vrSw=2(=I!Y2tyYS&9$a=H?BKYFX|af&h3mUK!K&qC4BB)uO!Wh*2*E#cHe#8 zLDHMccBUKA3o|!|V6_K9qoWp8;f;gW<{_)2qT~CI=q?3qfTF=ft5F|Hru`K8A6o6A zcGwat=}lRUVb~#~-?XaDP{sxsly39EL1Pt7&saOhLujasw0KgJQ@^>GZP*zKw;nOj z8T0xeh>39F&QcCwG?F2z>Dp_(l5k|;#Bm_CXzh@XJ>^#Nni5L`ER6z7rhfxY#ad=_ zj6s&d+<+g*p*yh1lbBFUmufuSrI;yyz8yg>Z5n4l$9^G(x)h-n4X^6TN= zK)cYC;*$n!esq_-T zn?1I$X61^_p!6Ze$+9mH-3De-K)zVeOEYx0IZoUh9E9xMM|jA+K#-DWdcd~xhS zlN;9_8x!m0|&>ICIwMs|$%}ud8_EkUx!`)R} z!kyc40^BLu@qDjJ(~G3k#`Pcnqo(YA>`0_-G24T7jvv=MF<;16&}+LC@MvqTL>2r8 zE=siQ%JENfHz=5dO|JgqtHcr^12Jx)x<@E1W-cP~*ieX+*sjTz%mD4Md@F>mOE`L; zUhyV`0^=p2P7ngdpWVqr{N0blfKfq3aH8g@|B) z&Y^Y2Hf$XIe_nt6>hd+aF&EE9lNY)12vvw}I6{68FwsVN=!(**?(O zzMQYM(3ZC8ATi-s6oj+20dHSq_p=!s0Kl(6(0At9RT>ldf~)6qs2v-*?G;nebadHs z7a#mX9k7fvr4QIK(u@k;q7`|_q8&h~OkhZ>7Om{3LQU9aHMDn z)A~uJkBRnbeS7XAPOP@=lV{+LdvauVrmS^VLIZbcSeLb->@4!5sZ~5o(`)ex=Ht~$ zXj=*Ejo+XhGmyJ-o);u~xNq{U5qse-AE79Ar2fawYw65X72 zYA+_>=Y!OdWFgd%7rAdI9kp{~P!$u1rVx_kRpFwf6yT6mS{>`$bS3_NoMP+2zX=+8-nA%@qD;?Kp7 zGgJ!ym8oa(g@Falv3w2}1|1V7YpE(uI!>*ptdI!ShaG{w`~Y4(60zMD!liDlk ziXDN(|De`m(}}S*L`~ey50zF|DeRirbspuhUP{5Gcv}Oc>r@g78YtzU3gz&e6~}7R z7I*-*uhD(}pj*;lP2`q12(%wV7UkYx zko%S`_7Xd;bC30};?|u27A?Q~1~+oFV}U-9Ff2;TmPN|Ap+?-$7Kqw`$$CA#l=$k9 zD{~jiyT^3dK8PXoH9bOwGTNgt*h!vJajYz1;(GtVA&tQr`=HpM*tCi;L(P-;gNHPS zG|rBSO*+2aP`Kh;5yMbFa7*=v>-3uc{iGYeqpi^ARHbX%@?^|c@>APzxk1%v+t@Ij zYOb&J6~|(^CPg8$eRJf?y!GENv#_b*5?yaQ08L%+Tv9nDaqLziguhF#^OjtYv7T}9%S-dIAukIed#^t6LBe2eI}XDyJ06!xG&oZ^HT2J zM-3J95Q{F;N=HhT=!&M9X3zVY)|RpF^p6d~cSLcvXY63G2iqmgfwQ{<@g{*?anjfs zA`Hoc&orh?J{1va%LA@<`OB+nJOibC6^kaBsgqgzV|L)^&~=cw>$m z;G}8n%MI-U`D6n#a2oK_TQwal60S}#h7|-*eW-Xy7eXHZ=3i%B2_Ps46r`aTIDLOW zLxd#6%ay}Rby-M;b17X%*bolkmSml6oq4}gL@c&+a7ZX6gjwG)I~YDI9RmKj^H*a` zO;hTI3T5ne4qzNEqENg-(S+99dC)zSGC_Kqv&GSzi?d-W(a~p|+`D0DVZ&*tFN_XK zrR825GFw=~N>f+bJQHiCmLrcooDxmOIvd;bl}x~Zmn#EgJr0o!x?V9a<>rd1LDm<5 z(rPls&HPeY`yNj54mB>0XP_anb4LM-BH)9wF%}V9)w$qK&;t4b)zB~a8m28d)r0`c zFzGSUGMixCGvAl}^$j4K=Q*HpL&VlZp))WkU_|g%8_FT5#Vm|KnF!_B6!8kjfnt#V zQ5nHr-(j7teNhs>NJA;Nom7$Z4O2qBsDrhPR>dr%rxQj%u)Le+6QyT+IL973EW>Rv z=d(VSDS#gbvDgz4d#vR&)mAU~7Zc!aOf?^eN$J>#`S-4BHCfU{Df-lf$UShBLJCNZ zE}fupocsYVJ87)OJ02@DVAVnrFpjZFXMVH3hslNtGX}Fm7zu=P?pW*`VDj*FxnSk) zkQ1fYr!6Z-lE6t3N2LaM!eahM(j9LTfoMnC-rzzFAhSN=uML>!Cs`5X?CDM5EtC_? z5$Gs8&+DSZ1)obL7z?q$LRze8?fc2=Hnzx$Aw<=1$xo-Kf;U-K2}nfRi>^Kg(mj@{ zT4R6kXF_Fl;-Qq#v+N}M7~Q<=SP373%jY#~JF zD-mb#d(^Q%`BO{Tq((+2b*G`WI0`(Rp`wbg+5AQjG(op?CDqQ23(y9B0}wv$%rEQDhT<-^Atg1Q>)8w} zDPX+x6seQcDd1n>tuV!>(j2AMojoeAJupt_0X1?@I+CNM8e2ap0^p+9Ch)9^B0Jv^@aYc)t77Q3oY=oivkshkWc>7k| zpr3Vp#mD^$2zw8v0xMOla4d;f*EG8EL59QKLp=^@Ft}igO}BB%kVTF(93rXYQGZRS zyCtXYu_r^9z&~9UA`MOj?-XJQd-(OvJ=_8ZC%nHjHtDO#NaJzUPmI+a)XvVlw1HTi5=l+YvsWX5h?s~vbXW+f=v5fL0>4Yg1;r!dAtKSL%@Ru- zL=DH6-flm>37R8?5PGOyqUV9Xs`Ln8ehs;IYy{q66bQsUjx$EI3WW_(C)U=`o#Za& zBDhWC2#QOGtmb~`QXJg!ogx(OCvL!O*L+Xn4-8IeqUc!p5l-|5Nc5Skj7RN+?bIIS z9AE{BI$a}zC=EGP1_;8Z2N!vjPK!4Yzs zJ3->)q?}=NkkW*~bwFaqiK(%6Zutzmi%`zs{iNq@d+`3{BZ-v!w%~$GyEer-hl(;J zAeEAVY&t@xXy60bqMcy^1(V`p4~k1~{&u?k(C7U)zKo%FiM9Cg(ob@>5I(tK5s;20 zI{x*Ok#`R`l!uIKQ}Rrv!vL0sfr=pTP>>Pew|35aCrj`8JrDti)zqf0i5ZfNkvDLV zT6ftQ(g^>o*r^~cz~+TP23O<41>P4(OR3*XgWTi_P{ah}wZCB@Zf zD%iQGQ2_tMMq)<awIsRD_PgdTCaPi=O_(4B;by0xjD8;8rIQSbC4ku5QloIj z@?Rrw!G(}1Ojunp#tg`+1_SJ=Vn00*2!gC^QYTr<8f5pfcTJgM+Uk}<|tB;Y}_dNhIvR`gY zN;f%FG>RY44*e-g#!Hp@L81|$CqM5|kx?8-K`}9Z z6aA}C6wwYx>!?QDqEhY`CfKOMJLM2trLi z%X4e$l-RVqOYsK*n+0!7>A!$(A{U{|UHb=9PlHYG)e$wziCK6T*`#ay3*k$k`&(-x zbshvP;w$7!etQK1DqeOUcn)NMNn8VPCRCie-V<|9BET$lb`4yJHsy}=HvmmgJ!9o?KY-H!lc;MefelAhE0?5M2)KT5lKiAu2}g`sDD<|O zN(Q=1BrRT~KthBXjDj2H2Nz+?Laa4K>&Yy_m{*Q4N31o>|4@p>nf$R5f^^3ag-i+X z0j3LizCuZgJRZOhFi$MD2eV^s4q35Df`eqgazYJuqznG+TxWwMx1w`>LTL{`A77bB ziYZjODPWEh1okB|NZ^s$B|MdbCzk}w^@)vG`o%M{IC}gJYKF5r!1JgLHff}@{a33c zCK{u1RyTFu#&z-_gcfptJ7n&1+Xl|3h6rlQ>+T_sU@JK+P@KJ2Jc+5;zX9Aj18-3| z9MtLzG${SS>~!<(+!Wm)tBVM{7FT0`g{xt?J@PNk!RTtd0V|rWz+qGzwfTS)wCp<> zH2umM<*FwKne=DG*eeX2cfL2}cNLC6lhzgMo=WwX-3O=S5h(3IOdOA)KFmS*H~{4=e*d{2y0Y_NDdg{uXd zrZetAuu0TJ7EL&{4-u{yMxc;ALuF-~mV@?@^MPkDh%5|y5)Eo}j!l<6U%B%h3sOeMlN|wt2G#Km zyy6Lr8@fx2g%iNpP27PHEOM@Is!f*}@UkLht7$RKM}tYKH=jB$Z3uTM7i=DPm4<5v z{ON+BLdRAiV)2IPf%hXrYet`(vLkNg!}zAPM>I@S(NsT?`EW>pBHdJXa#GPRyh|D# zZV-YFa^1kzb>cJzXZT4`9N(-b-8CFiWF1IEUIRr_Y|kJTAp;YK*Ni=HM2O8usI8%< z#Pg~nXM`~C6gu4&sNqmWtk>1pLpjUh5pGgTb2A96VozV68;gUT0s|Y~q)=3e{hMH7 zK1(KGrw|Y7IL6U#vmF&bEv<57SKLA21^hW;|yaqLLAerFKrzzLj`s3URMPn z?l5jzJ7U!P?FlFsD@h84U06J%39A0AL7XWF*K9;$L=~&fl*#tUzC$D=D@I>W8<~+o-)Z>*@bANXCqhw2>bvPW~Gr zDDXj^>B`4ZyE0ReBoMHM-Jhx<6~U8*%|K%YYV9Dt3U!MR8Cp2fxlAX;{RK}82ztA% zHEnU@Em}5FU>us(gg1~K&L>QnPI3RVCx!4XV_x|g2Qvwvpeu(es#t)+^;}Ke6%ViS z*ut7Bf~cJCxxQ$K3wV65Lx*$R;}@i9uGYm;6?F{JWogGdPJVW(cAs6O_DomDR2%KH zoFppWK#gMGO`!+9T;`K-#n6x@O>2rdkMlz|6d0W%pyw&wM01OOItBwzaiB+HDzy@J zly%`3KDU?(x!4~;4T5+qjC4%o={2@KcjUQUfFK{{1jQ-~ZS4byl$*MTUZ`sd_HwSP zvsc*lE1p>pG(4yKn+wMM<1pRM_fs8bjva63`jK{v&L)E(YDJE?L4qhD{Wg%pTb1IQ zGzdaVt7)5)LM8^2@9|YI1EydNqQZ|bh}ux*QZclz#EGn0>YvY`+x<7&nLR2Tw^q6V zn?%^$H`r($t2oXafVdKjlg@dmPY>FBitR+jBfh-zz;<43fG}5M({j4k)d3)d^6MXqC@d>FZaI0;-F&t4B* zz%JvMvtQUj(f(wTt;O>#!?aX~SfvI>zp>BIlajuFjxAy{iE1Vo*!yU_$|GlQ0AA2Ly z@#DV!AHzkqaq25LjS`7zfSseF?P&nwbJDut(B%baYV=LHi}av+$G@TAnB&;lSb zzQJ`llens`Vtc$zrX-0kH`GmPc_IwVJ>P?WKxBnaTT~;A?p!(*y>?q|l$MHBI8?fc zu^0)NCUo(0-hL@Qol7e;c41G8)xn@*sNwMc4DYB|8IF@;Gy?YaFxcuK7ZPjTmJ(^q7pBkGD_f{rK6d4Rn4 zX8vsNp^PAuP_ofk1=CRkQPv!iHhM^`*WSa^o{6{Bx&cfoS&pv0Pmk^Q-%TEA2r{Je z09xZ4ik&0z`~+^rq-QBqAnQi8erYn#;ji7y39b8Ho&(%49nVS#A!L_(-K+`DY#uuf znEVY;o^#emtvx~pL+B1?HYl{Bz~F4000v+MBo05cH(kbW^^%6J0Cpq@fKjW3Tq z1SWONH>dlKs?cMH0jPr~N3yfWx;_hlN9rYjqm)U+i$nC69JLCq4e>%Q^~B;KZuK{7 znmg3%^=slf*6WjP5+3g?rf6(Um~UCc-T*wY6*zSrU0;j_RUhii{g&^=hh99e@fU50 zrPU{n;=9EZW1)BEk^mb4z%|_d6cuzA0zf#HMJ^zK49<%HXYh@X4WQMy>I7>dIFsa` zp#tpo2DcBgLZ<4iCP{2b z85b^wvVwmG;+2Tq@Okr{%;xM5a>y=}&UdWvk}GH+$M32Nts9<08xb_ok@NIHgl{Id zMTBmC)<9rSXKO}`voDFHeFT?9TB+!`I89M=TmSy}vPpmK%HzwlnAc)l0n*6yQ`D=u zGP{!u#0LW<>#TNqa#Bhl-YBa!tBb+y#TW(27hJqmvd<3&<%LI035&o~pZ2TDk02hqFo6ryEwX)5$fiRztahdxq_^ymJm96inl>v8x zf$@;7MC>uC*3X7?DoU@rv+J<`>r3YoTV&m-g}-)EUgj zl0t5TXY!9%O3X1yzkgX07Cx;H|LvT)SqShzo{Yvag{L!d#lO;ob+L#MpGD*)WuppD zD9*BU=m30wkly)IEC!(Mfk?;H>G0b}YUC<`OhNCHx05oR6oJ~@Xtkd4w1domts=H& zOixQsdCJC@8Uw+({q;BFjIEvT&IZ_7eZ;=KZ4O{DB0?g|{i<4235}Cx=a|uwewmPFa2i5`eRTS?OU0 zE)+D(w!lVfX;DRia9YAgtZsNMdVA61YvH#JMBn@wB96XytC=iT%6>rT46rp9ca@=e zR$Qh3TQzhaW6%Lmr7mn-`(4`V%eL4cz34ix*ZAl5^?X|6%4uiw4zkuV3SRalPHEje zMpW244PwKPEthyY_x0^Q{ZK`g#+h^oKnh%yqbTTGww>cZ{{z#?G^#tHC0=W#f414amoB;wWSmQQw&_vLvEiiRzhsdo{d zk}k44_Z8F@-U4|be+ih+vdN%$ymd%}sZppvJ^VbC{fcsCuCKHG!h=CaG=|F1O+1*r zU2IUq8(!bkkpMQq&4DgvHz2jI&aUgjsF~WE(5P3*t7zoy$8>?FhYww%T?)1p~PHm9!IgJ)18- z)PFBQqIl?U=R4X$jK_>+8Qir|LInoX>EP{7`LlEn!0p}!+yso3CL^`(lY*%wH)YDW zmR1mYZuyNzA)*qvvsBKZPgXfuVF+c_*meP#iZ@KrF%&ja!906qrMoIR zD(X~MWujTX^7k(vlVh}ADr;MR>dMkneMz{jtz%+Rt#-DRBCQtzC@h6gc~_`{KI^q_ z$*l$%)YmYL$`v^(vd|SapV`%Upp62)Z0ZX6D*F!h?rWHp^9^*mGMfDtjED zFW0Bnru;m642>6?azn~Tdv~9_piYQuIhl(s|BdBWuQg9-{b+$#y|FVi?e3&%yJ*#` z@=i1o9uKa1YO^1n`-nEMU&Moc!;dd*k1K)fDflTY1Ut?~h-Wp`ejsjKunz&+O{UfQ zKOD@H{x}eB@r!=iC8gc3z3i8}YuZ|4e)Y`X*q;Ak&axlB9xV%R1On!v< zQaWT)um}vUNhx`XXV@8f0lE>69XMK1ww@A->vw6UiYZ|xnSL-M;%w*#V~gasatB!n z3@#F>Nr`pn%=Zq?v3yluhccIz4x~w zal{anmGE^9aQLU6`lXVo$r!|>(wh3ub7(uC!_kDk8Rti7icfOoY4*C&uITuCjNh6kfVvb1~JWvqugUdZM20KT8WfKz>okMNN zs|cfX;yE*q+Z%rQXViOr)x195y&nWZ-XF!`6_^LTjZj5Gp-n(saJ(LZ&yQe*BqYIs=s*U@%@|Omm1V-H&a^klbzMqHokvLzh{C^?>@aB#7whs zZc??aEi4OVNIz1J7+?ipDdx=I)|Y-ye%FhTTo_I>x%ZNpHo6T#!(HvuyUVGxp%sL? zpkIW)3z#&}rL$BE;&+j>`fm2950ED04_a?`{cvuIf8aB~5a|*2CY(=e8F9xfHom#& z60il!JVzH3QQs+W|!dSdv-H*=&UZ1)v>%}oMbvBc9U7kIZ;lF`W zMT!R54fPOLu8^m0AZT?;^JZTDDanU(bXyc*@Y^smHwIX8?0ENdXe4#n$;u}%ueHMk z#Rp$=2s$n$l@=I8&>}R^@Gz~kBaN9mfhe{-9in`=~ zt#a9!|E_YU&RlC_C1v}P9c4ingky)jfvoRwnRn@KmH7GmeWs!{`r|;0JtQMk#+zm4 z%*+|Ji@MF(K9KfXTIm_#%2TP+&xEmpw-d(_Df8IIQV%8tm7Hpy683&`KuAYfqlAYR z-{`jkEu72G^xb9ANelrci?f-i23L}FQR2Pn-uif@b(vfgtyNN?3G3cUouDFc7q1p}9zNl2{wE~;mkrvQ;)NQEB z`bny>DZ*g4#Z||ir$`v%5p>}Kv?-4(uL4|xfp0GdIXIM|A%aaNfAqO&{q!jaxCY8* zU^M5G!Mk3_9UD0&^4WC%zel)r^>v#3uh|3reY?1h?b_F7GXK{9aM|(o{!dqo^M23$ zC9Ut@BYgjUJuB+HuBxyNdGt836?HxF&?Le-YQMq}A3q z@%oO7Y8ScZ)E8@`6St_2Rdx2Jz#}aYMWQcY=* zG~Df6B$CNL7YTl!oM^meyvfDt?eJ{h0!ad<2FX2%zL%^+w5-D$^xM>8PwBPd6qMrK zlSZA7@f4RjUVmsmW$t6~#2)q=;PtMhIU;-@KMpn5aZg7iFyxlr7tC|42TPw@eM@g+ zN=UlTbCB#T#e8B|s_mBP{o#V(bQGgQcPeA6-tS@PX_ zB304ku;Qi0U0@laX!f8G7|-0S%Cf1@L%1SHAR9=@FucSKCa|yN=5~GlD>oV@q46-0 z?h#P0h$843@1SABfM;a5RC9l2gK#KZ7D9Ld6NM`i>!;9MsBa-r_}jr%#}eDFofmih zAf|vUdh?hA`aI=MVq!=Z1+gl7&8JB~u&Aa+7;5`D7g~IrcCM zpu7n0+0LNxcLvkOR46bAmDTU^CDpHGj)gwZWfJZ?)q4BRg~YRacV`A-oqFG;k@!rJ zfRY<CATy3cRr9WOGOE z;%aqq^Zk>#`w_#(T0%O%7~*bW7(QwVfG}1pqgC`Vm#*`(Z%Bs0KoBua$rc?%Aj3bu z+eV@WjTw&(>0r>pNiv=@&3&}%@->2ItvKt2i#l%-Da=_u;G(!~Uqj0WxP4Pz4*NgY zR3^ikh}fJtfS({-F&aR4_PK_|*l6>e6hAmFkdb@kSes$%Pux5+SoLHl+?JhCmMVi@ zlvd%T=h6{g4+G~}guq&?X)c8ppLR7&NeWNHDpEczNsOKK+jL@`hiIgo%6*i$5%#be z$M@YgbW5+PNLk?r8P0WE>|Z$9gLY4)DX}?Yo+ZS?RQA2>a%zP6qq+?gh|~i{ z_#QX)NY2vbRYF1q`C%A+i0YN4#@ka5(XCXUx3O(3V{S_mqjvhXj-63KopQ=qI!WSQ zTtMNUNJCypiax~?2M|&hrSP`ChK4Zy{P&V z??;Z71#Au60>S`JjvYL$iL@NGVncC4=+dV~TE1n5u+kdCL{$V@3^<-gtWq|3I zNuzAU+o_{yk~z-3al+w}?G-#kRZ{+&;b)IqYgi;O(;=H1FSciBhy-ha43jju8%BwF92>Ok{W z=z*BJ_(^qxJ>bn{Z}<83Lr#eig%>;)W}n9IxLB3}Z?Q~n1r6R^^XW!XC+Ak$&Yb;Z zvSkrWt1ZdiGPiPSQ_S1ObJ>tht*5SR2bX)4=?!vcwP)0Ojd>~Gec}y`($qq66!qPD2l${igtGdt0Z8Rz|e$AxLLHtQ@ z5m=i!qFBaH3{xKE>+j80l5=X`<8qu6=8%fzRALC7Kc<`Z?!CLYY~2vGVAsi((Ut_r zB+=|K_FuIF`*!{GY40a>y_&B-Fm!9ays~YXF}CGQ7a8>0 zjs0!>N1luQ^%b|uc6IV-Mo(IB1IOzkaZsY@IFV|XsN zH`WO6{IP^NCc^g4Bt9oB!afZ4#>e~2F3`ZPKKVYz?5XxT_1mS>VQnvPz(i>9#7M}x z(>pxn1FwV>ZD8w`z;n}%*H<52aQ@1VKP`@nTYvD*zN2ogVKWvVnLGH(>Ez9;?|+#c zFzSX=*bN^`s=obFcyq&a-beVk!%Gipwwagy3#_seX^OA<07lozEPTgGF*_sw;BRJj zxIo@m&2cMx@+ihULVfw#+otC*EfJo;ig^u*55Mz_zWZtP2a`ts@pafQV_ceeMTZU_ z9y9*InaDRr7xCZ!vd1p8ZgFpi`(NG*eQNN%hsEfqJJORs+P$>+JcU$UwWHv`hR!i=x<0wRtx zP|9WVG~JoiwBlyXFw9plApv~*B`#$8u8}nZzkIm=fm`6CZ|YZ^?LH{9XJjfuJTGPP zsi32O4GkSudd%+Zp~VR;ZjV>5zFYXh`R8*o!6Fkgd)54Kbl5lTW%x+Yfu8NzN9Gix zHq8k5{Cu_JWo{gch!8=v~U z^vj(iFN?@yil8dXo=qeRJpV zu;F&sZ(YnIAO#oH3=a#tWq!Zzs->a6 zo<@RZE4LepTwMI9Wb`GUq>Zzj4n2N6`6;X$|M_z5+)GDm8_NBBo_HKAZF;6DyNheZ zlX%+|D^`?WOKLdh?yV;O-uAo4`OOFKyc!>Ws3dX2(u1ep4~aW?qw->2b#vm914^XL z_4X`xGToRBt6RP-;8*tJ`zLnO_cMNeqG^nI%8~>1Z=0soKm2IUiKd-P>*{~B(}f(K zws^~qyZ7#`ykG5f|McU*_fOuLez_sB*UeQmD87YD(Gn8)41`3OB6K>ilkXN_F+q*i z@fx`Ll>y=er^f=7z>@T;cOPHz#)ILZ&RU*wVO;Xz{N%~YzwB7d;-@U%|NRG3PM!?= zb#m0LANG#QDSLdUY;jv-%I|^m8rMFFuNvoVag1)A6}>h8y?^G*k@@a*aNEUDO|HIB zpUjgdw(YJ@I)Crf3{p{dj!*XDwfCSfHT>{<&$xpl&OWM*G5(qtFnndx^LwWk-m1Ll z9-oj9Qc&~kr%KR9znjB@|K+f4QsCtqH#GV02CjUwt#4A;P0xDEZ+lm^>^@$SWa&*V zB0!CLDHBvY7|kZ>1EVJURCkN`nXi|}L)4gC-mt7m4;iAK_I}(LSh2wS@f&x0zffg+ zrGLl>{r%oiDPQGvTq$Z_$rTrPc2!McNzIkjEkAo6|LLpWe-ACWvg_cTU%uG*cSA}qWhNHT%2`xU^CCGT--L2=|sK^<1tx`g)pLd7j@-Khx`NzS%?{3Zf z=)a5oeYbs z0f@u;g}h|EB4+3H`^zIXrO zF#V(1VHO`t;mL%u?j|z_DkCwj<64Y5tNxkV=+%9)&#gOnC;6i(YZi|FAb~$DAVb_}`O~Ui0bm5C}S&3;xY@RSfS+lbSH9FNSSk zi*#um_B_ODOYr#2cJ=-rUJ19(@j)j#w$0gIvzW{1tzWvMu;}>?FZd(o$ zq1W=Z#x8}e8|I8y+h{ju&YWl0J$`52`o48P{?u6gs5bF_;mMAueuZZbFD2J*>rIE&hwr+Ra6&UVk^X3+4uhP~5r z9)0br)>^kxOaEuE+?(x2q30xH;tU;80no1}Ebz|!O7A3x1_Uune|l-ciOuW7?%t?> z?^0S_UETH4=kllA|KjFTg%8@#C!P-}ygb}lnk9R^`AHHdVg2)+INo~AHL?^(Xik9MXy^Q{%|ud$R9vwnG&D3BXX>p zYel!0mM&TyS1`xh9Q*#Gon?8i_UUsZtgcygw{D%S-%X50g~(+X32bc~Cv1|`uk@b( zxrLsgTtDuW@MVTW_^pq3jb5{}Ij*g7LScJ)z=PlRj?P%=0lwCwX+-xsLtQIw-0?{}fB*d{*Hr() zbM{V#>V>`Sf4DRBz|i<_+eWQvc=_bU%m}x(J6~*kJ?R(kdcQ7h_3s4qx_>hN=Zev4 zgB6S^ny-GDEjHDN$*_-i3v?TxUP9bA?~zZ-POpTrJbLTms?$w(Pq)4GN44j%)?NN*Ui`h@H;2$I2x~eQv+K*2Eb_gbuiyOTm&~*$Yo2m> ziqQRLZ_U1=M-uOPyl{Tw%q2f}`Spv9yBE9=_M2<&!j$C7`=urS%AaIaVxhokb7dq% z7rZ-KizJ1`WM#tGpYeDTZg%b5#GBLVlbUy%lSY*{uqI z18>WN^(&uD8#YAZr7r97qW%Z^O`5cRSGc}#Z}`1m&1b{IHdc?%T>C@GtApyUTxt65 zpD*tknX-#ph%a%TnD$avWy`*!Z{2No@-{UFUjFI+;3$3L%`t~Yk8J#mQB7FN1%6=p z!^>6004@R#^x}S&Zdl48$$?1H(qzOth}44R^Qr8+1t_&YL2bd>~dw( z`<>r)c4^ZeUdeZ}%ZAs^UH#m=+SZ627b`5Ildh!%MCrLs+Um+apVH8_aA)YW4__~h zS(@{Dx9prQlN=mS5mG46;QP`mn}4gRVEL^Zxyc^G<}zKTW0%8`X`KPEb;H$U^UcBw z2~V0@-YOfp@!#)+{rl^$U3*>L7yGzZ-E!ai&F{pG zKkiU}?D_DF?V|o5$dB(OJzTGUaK1jNVMKLF&O8VE%96YH`mA{Se4kz9He?cUm*C=C_C3QVR3X&YteWlEg9}aY^+OwK;EO5 z5$&-=IG&8>qGe%Iz3Aj>AnQt;-~u1L6?ndkj`sbVOwIds7ILJV`-n>y;rmnZ{=?Ld%)0wW4-+(u0q_j2m6#r#Km2A2{dg)#{#!)8{2VM+IbOk(j*f^iw_@!?lje4FM|{b_cu6XnRYC{o( zc+s>|Gtym;MP`4_|1P92{@eS{djuUinUuQUvPgOW*oVH5cs9ozw<@Q0we9rXqieX? zjn9RYzWu9Pufe;T1;lGP$_4iP(7x-Md%8N`89HhG`az+`W$tAHZ)!)(<5*{ppxAPQ z28n=2&e9eE(JKxP8LFa810ivCwRu^IT@82-8=f59@^dJ;Uu=Ru0#hpL= z&wq@?k>At$DTzB=Cwk1M>D>90CZ9|H`7IyWY#)gF)!4W2-ZwvWvFshvq~BR0IPz@G zuF@M5FaPvTK;Q?H!f(5pm-c>P?K)0QP?0fZ`J_pc?na-w@YAPL?%s>O)v&*)X46M^ zR$~FZ?NYx3LkI6Bt7QhWTYk;KH9<`i77pg(=EB(a=O5Qy{rrczYo{x}Em}K}y!qR@ zt5?rAy>>e&_)#Bq%e9iWBd;H*Yq+`~uGzzMZe6qP@X^!fxUIMR(%kL+@3$~EQHs?N zlyt7c=IRT?T8*b6S!w>4o*cQ-q9g$9^OgYQP)`b>XC4k$Q{KBK+pZguxz zZ>?IL<`8WB)hX&d=6Rlv>K(UwbwP9U_1L1s=F3NppS+|`f2r%dh7i8%+8^%p`1I+* z^>7bD`8Igsu6uo;%i0Syb64NN_a7TJV&V9vMoD*@Wb%UL)5%or&~s2mRU`EOrMwdc+#$)e!7kwN6Dx^ zX69axxzjG_+46_xyYqg$d8Rb+?z}H5%W4n5y!S7kf|68JRoNSjhrECJ;;Gi+<16o_ zbsXOw*hKDGBbnTl_=)2mM4Szh+VgbVPnSXp*A6@z^st5Qq4C^l+YQOfw`4l*d3Ubq z`udW;$2BB+@7ulF9#2mz8Kv1*SYSO(g0_sREMvL6JX*u{y$P#7bKtvegCFdwRPC_O ze~X?Mn_7cW%dL8g>)zwTP81O@@0`AJ^~+J@M~6v*J4%yVZ3L>AN1tNp;lq>1A39t* zdHjQVGQvBLcK)zMe;`Nl7i$1{-z(vI`{A1(zO<>*_Q33=?*`s~>-W1O-k*P~;gcWE zSbiFPHc0Cm>`vak_U7=HUc6D6b+bO@{JgN^Z~ZaGJZD;SVMU3QLsPd?`4I;zL`cIJ z5@v8i-I#%tDzo`>Vg(JxJSq)oLSz2;M@)^Oeb|WO`pRGLb@z@$2LCptz`~`gvpe3q zocO}Xk+;lO67RO$JFI^*UthfT2lr18m6o0}l|&zSwYb*#?9N^pC*HXE1>ju6?LWK@ zHt$?|`QOG>g+*sS8FzX23+GD{n-x>UqEX*0?i2Xgn>$Z57p_jude7;_zbxzz1iA0% z#Crp%ztyq1L>iFr?8~cP`{(*>ST;<`hKDD8} zw1{c3t>!@oR|nDV{qEP7@80cwv*Y5_-`m&D$tV1UQB^i=lu2j#e?@(HJk;y^zNP3y*-laRB~FXRQkKwYkv5!GCuOfB zBKZg@LnS1%30bC7r&MC(Gv-1p6K};51P8QIDB6f2+|)5|$32olEJK z$X7mt^Zy?`^!9-YZr=Qw6Bb*_eDlVC;NI9?9I)b%tN!VlEjh+vu@PB)T2G5=j6H#VumH))$U6VaZJJ+ZTj|L;XNEFO|4Qos3s(L0jbIi2gJoz-k$ z`u+QNNv@eJsl#5QhqrUVs5%tOL!r#g&Iai}2W)|4;^Ydg8DNRS>Sq}irJI-j<7elkqhF*Cs2ikj3{(rY1G8kX z_W{$|>=njrpnM^*Ph@T2m1hfv-XhG`!f4P9?dYe|E(gus@~RI`eGq6aN56)l3~L=2 z^E4y+GKZIr<9@;Vev_qpy^V4B_uW0u!}pT(rSRd2&grce%ma?M^&62s<;UCA)rB;I z=!#+y7t=(7O>@Eb44MBg-;mmfbbO*|rr&IC#p%TnI?v_-;duP?y%y9I*zivBa$Qx& zpGs^Wf6*IEQlW}4<_|fuRnU1LLsk&S3xV^R^Y1iVD6CsCH+MvS_EJg2+LZ;lnlf$Q zZwI*h9Rwt=B89eJkvR9?P$0;ylxyl;53n-E=a^`Xy z8WaKj4xeSPUd7FEa3C4mi?=V|OQyA)Xlz_knjSQIR~7!N)PiW~rDzV$qXRsV)WFd2 zMs02D&<>IV1-5{ceEa1!t6!g24jokQO|kz}dlZcsSb@TG0m4V;wQ1d-&%zDVj~A~B zytULsem4r-GcleS&hv>zUL9oFQn6K&*H;a7*Oc(- z&fUCTUIgH4AS&L)uFYhBwf1S%>e9?gclG{IeJ1AKjEzjkFXeq*13 z;{93asc>mi3;cmRh`|_|WGbK^LD?LC6Gui?ETAL{mOEsl8{s(!3cyMXZgO?=s0I#$ z^>ZhI{*L)?1l=HzuFekI6F524eM9~`ltNs^n-|{7!DmH%p;;$4G z^JWP~JA-3G5BbfeJ-WCmU#~ObNbpi=%g5TB<3Jd(Cvl-bmP4$1*q%jk;6gmvr*N)q zpDaR;=(x+N=)BdSLNdk^6-gf}Ov~vOCfrA>ZJR9V=Rw8|b(ebDP`2ur?Z%O21D(Te z@i|rdK+enV7xfM&6V46q^N7ekR7cD#*lnHPC!>}tc8xok-R4!wyl`R3_qqNdq93Zt z;Laqbz8$J~TfBB+)vu+@zCFzY&HlxiHdM08xlVCc@0y_DH$xfBgCGWGmE zamGgTxH?OLAv{V)Gx2PBPB#-;*J=9z@yA_28;qVpX z9Uc9Z74!b{CUh)FmVP^c6<+bwulFqy2MBbCST_%R*24uGxa>7p;aZJd^}fN>vwVIt zJlv*cO`Eu8=XtV9}uTlde!y8HA8gcfoTqU{ZKmHLJWs53d(WUV77sG#*wYI5&kc9?< zZODA3OMq41%fP17`?cUULfIpBIz%cmhiNDH~JyeHrN=W zhgA_#S!=Z7R=Am2!nurkZ-VN0KxKm4|E;QP&yTYaPI3SJs;`f92O0eqS4PgG6O26P zCpzsp>X^Z@3_d1bo&{$;q^#I{{@UFsYzyHv$`TnZkY42wzg2&x{yt+N` zPW{VR!HOvXzXmwm`c0a2??=Ra%Zuv)UQ2O}NMf!UPC7A5>RDjzP#7JF`mSyNLIFAN zhHb8IsaQUqm>?J-M8(S1?dVYWdY*JVMTMA(H3^aTYhc*IMzO;X+1ZW349wC*mzD*HYlRU{F?oAqliL(1`=57h_9E5o&+A z43CY)#NCSr3N2PNL*JZGLe7*=u|7pY`>Db$v0thHENg96`24pAV}BMS8>|8wlujY{ z|M=>Dd)krISWF^)E8{&G7?^P^A^D!cKj#JXwH1c`T~Ff-x!gT9A9mC<)$ggnvOC-y zawxPV=O(IJwZ8*c&Q7i$9AVC=D8!hHFChwgpaaHXKfNaiT!M@?Hlstqy*&vXB$!!( z<>wBu*$2~7#Tr(i31WX2!ff`X`g)nM3*p=Q+WL+S{#@VeQZ0o7#+r&ekzg(+-EVdN zc5yd5SnqOG?~5Cu2G(7ALRQru9OuNLagJ{j%wNAox1dGY>siyDnx41V-o{2F;{q;w zt)OZxNtBDvM?@A9=^3Q;qvbH zdiLnRNJ(=z0Cf3+c21T$73u3Ab}wL5tSj^WTF~Npw!gCWOmj%8h0%_>fLL_SKm&@B zxg6_V-W9jJN3x04wbiolG2=A)jyUmgP;MtB2i87b2ihFa1;tY+?Ln(o?(xvI;4Zo6?$WZ?$#ucIe+OoeY*x9$&pEMY zoL0zN-%G*GP_FGlF`$wBkF~4xy+$9NwksXar#pVI4h>9$43mk(70q`b~zA<3=m@&lQFA{UiK2$wDHGlA!9}k zAqK0`1lmRt1|KmlW(tv+d+_r)zHD=(Pl%Ll<0l`e0IE5syyGNks@PU#p0e`!`qk6* z7+X@#hBq#^pI;RH?nLf>C&%vH%4p0W#E_EouE=|!b|mWHhnl`UW>fQY+ohXP9WDFC z7JwNuSg-z{_`L8s%VMeLi&x!2NI9~b(HjNqR6bvIbQHCZnN<)madXL}q5x1M8iS+_ z@vC4$9&IE&y0$IYjd;?ag2QBR7L_Z9i0=N!<3czfQ*Z*Z@^^Ue_cR;EcduyOss~EO z5^V*oMKjYPShc0=%6v|Zqg}=RJY@XC#%TDXCt%CA*ocalgoH7y~vOJ|Kz-h+mxC)a-+oDmceR#Z{43t0i}(VnWU z(b3EcecH1LaX1UKXgHG$!d?nP`rBnQa2#jC85=y&$>52O7S4ukf-dqrGEVId7BK`; zi3@Na8zKmS^7n!sm`-ucr}vn~C}cdnPTxJW+9oGESP!|Q>Q&N$vaMtbEdxH!2s~Tn z+V|HYhYqwW6hXcRxwUDbV>r-EOX zkjjCU9|b&a2DzEv$e6-bkix;@MGW$9$~ydnVFkiAy-j}J!#9p3eLy4k-!Tvgg8MoMkif zRF7&}-pu@A@kij+29Y^rG9r(O<8|_PMMkY%-dR3F?8L3;UvSs&T*b=){a&Y` z!ML$chTcrq_V1mR2YAA6yHgh~n9mJxYH1kQ#P?Hl=iXd@l46r`(bxo>U_`9(O=Bc& zfHUk8ss3^)*abY3k`&NfjNBg)-XS6CgWzf;1oc*Ue!*82%BY5ZqpG^+w#z_BL{fS` zi#_@Ea;0;FNqD%;A)$v(m3hZ@y@`)~|G?w>h{pA7i1^ zyl#hA#Bl3Igz>pa+SPCOIi}a(m|w_@i44oCsPMuH{rBR5oHMf@#t=8_y^*3{%WXGJ zGG8+hZR^T@_lAZ&A#+|EROCyO4Cx09K{g8p4NeZWMP%329T>PbIw!uw?Za=naL`&; zrj>GKFG#7BO%EBF%z)}D(_4z+CJ(f#bhYxR5YKc^$bkcwfQ1N=3x}XpsRy*T^Zj4F zAtaax7)l&H)5Gh1x8t2O&8<}YSJ|H4Y{%Vi;=0T-1)U>qExE?#W==8Eas9zw)_H9e zUQZDH%Jb5l}`1MGVIoe#XL z<#}rl+J||^{`fX?yT}IA#2A=!oZ6Ol>y<*buZc1pr2a(JP2( zFTT{da;bs|BA|Xz5ehu>AB%?;pR3_Qs>GEPeoPjj5X>zCUR6W$%Q^Sb3H>2kVV_c*iHWea004jpsg+%=OL zAIUGdwD)aNyEYhgM-jZuWMlu$Q?%(=S)PZIFS&<-a#f33!^ui{0#4m<;Cb3(%q+Hc zmXrG7-6tQ$^fGTF!M7`?Uhr%3COnCJhy*4zQY3xBfA{YA*w}&6Zy&5g)r?UM*WORn z+Rjf^p+Li+eMgY8qlwlc+8(Q@uqMn%|1O}JwsxoVqwnM-4c4S@X2!TI*wUNGRkOdA z>*V^v{53#BfO5NT6vRIBa@_rTSM}2=v72Us$kcl`!e@`j%W=<-Z!7LrB7b7}ejXUu zGaz-IyT!@VSF8~%8@bYdV$|zq4rXx!O=Zu9r=(0o;-n3Wkw6c?tQaAIukj&x3u?fA zF2bK7T7vGX7Hy*awKLsuf)dxnFnyOA*^hqby`S|&5(DriO-|ln?!x?GY?psL!FBRl z++@FW$94G|7!8<{_CVa1s;=Fw){Zf4^TWXSlrz>G9Hzc_e8~8JYO142-H8H2b6QMP>ED%azXKgAF6OQx$g#&+GAu=kAQ)`fFo;BBkG_P4=xZ+jZ~3<_Vuup>j^7*-xb2n z3$8O#AimpMlG>)pc_E~WSyPiKM`O9$i=AW7f=BXQ;|!+w{(3J>%Q8Sa8UbL){p82H zE4$*h#I{X~O8jcwy|4evJ(C+ok2kd_4&8>FvK4?h}vbxi=z98D1lw93uLz!hGoOn}9YEHq}qeuI8mmke*6sWBqj_y@#ndCij*~PnQji zP+!OGjURE^;^qF8Wm`le#7I=0mSzcy?)tra_3FXYqRp>Ae=+`g{sn!@p4Z?P;3zw| z+I-pyh2`h_7fjVxi@Nt|*?>!YY1zWD$pObZfy`g*e6s&WgLQTHgG0vOOxlYVw#j!( zXwiiWGX(7=f}Glc_uXl$=4DYuP3(>RVckA_Xto)zblp5nMf28u0mF_Ivvi?S2HvC< z^iDA0Mpw!!m+>@x$1sCeUP#UJEKg-Kr0eeVRwgA5tt)MBbL7>>bpj9|Sdr90PSD3kU9wMzxpJ)=SiM?~J^Sb?v=fE2%!Z)+t%4S5#DV&qixe zM0Uqcj|w;I=B%Cv1By5IX!JgR6bZ#8*MCCpzx&b85`2EC=K7&QP}5&})4;GooZr2h zudZ?6QJd?KmWJSNe`RQF?4b<8#sJmxW*B$q7>dryr1rm)J{?~zgiLRsrmb+@5=nvwGvBw{I85^I~Z}`-axl;9(wnhDMv$mf>jV5DOvl z1xVinF%`ve31$Ih>oPDDSx78GH&Edy_4V3IYXK+dCP;Od6YC@Hy_)@QUVrdAMAJ8K z+}i!`JnH1DRBg=3Idd&NRW~i+{YJv0LuC9Fxf*Gjzv+9M#65wI%3Yv*&r0{s?kaX} zoP>QPdKPa8e%O(8BSR!sMxssR!G-EA8|dnI64@y_uFB(N_^=4JoikWHX zcz;cK9mOswa~s=;Rbq50e5o{=IC?~z$hg{+7pd=kZ3*jIn`?pD0XZ|BW=Fh01L3b4 z^W##w2;l2-h(3=s7|Ui7L5HMI+8P$Z!P`~N0`O7fyBv9f30f|sR6zeW38afM-VgQf z-!*XJR%~1~P&2Zy9kg^5s(l|G>)U@FG5)`7`=0mG@kZ2PtC-ij;;(P1JT49-BluLy3dBmDCq!ha z-+NLyjA=v(K+G}$!JeFZ%*A%p8)!601=G_{l)d?(URfvei@GONiHv1){@S(&X&kw} zXVC{#Mn_fQ*oQ*~{K zOCNyZPO#^G;2oSQe8KM- z@Bnz0vl%z-!yeuX$*v`?DPnq)D;=nmIV6v!AP%Fu#?FOd7v%QP(onU-+ypf(rUQ~J z-IX4S)edbBLGcIun-(3EQ`;`JTFxdbU2#9+#Gek z5by(71uK@CplF`7_hjMfXH7EMLd2z0iBHxsA68T^JS5VcyZhFbgLnQ5TtQk5Wtpm) zJ;?l{Euf5-Yk}S)T`#YEZvW`C#_N1)7G7K4Epcv;Yzl{R8BL$vSL>>LMH({5PAlouy~MOO$=u3 z6Bc3#OZ$I;2E^Y9XfT+>(r5X`U|45vF`bKyC8^}zr}y(j#vBM%G1^?q`fMINJy|<& zKOdDVXvDge?E3HR4n_J!bEd}rxL?-!MET`Ihejt*%0jCAZW^heb3b$%?KiynX|A7U z`h>ZuUrRp$(m3)84I=HwFc-0iQ;DSz1eNXZ`+_ZSGnnPdm=`NRk4OmFg|G>}Uxfrvwur3P*z5h}tFmq$+DAe?lQu!fTaUX+zX&{3{Gxl~rY;iw&xv zMVWWW)-a$iU##tP^si@5SXr_987NwAB)l3?Vyhd7okz4%%pmix>FZ_;4INs6Bwh%ZP&cpf*)qNJ%)vHg^|*9Apzw2Ob)B4|W6$PYJKERaaI` z_ary=zGv>u`(Y0K;nvPh3qsCL_Z@R7gcb}mA<*SMBZ-E%9@;jTWlch(Nze+X&rCGK zCKJpuwr&2g#z*tKU=9Y$Cic@0?_P3%CPtqRSE>iG3Uoeo^Oy0`&C+&bDe%0fJI75< zbcpGIV0BFak*hb6&CZ}qF|mzq6>|wDx5g7O#LJhZ^#38FQ}|nrwI2Y{pm7NEhonbnrM)~x!5+X7sWUT97pn$vTz|MqqDrBRWVkV@ewJB44p`;6` z1ctu;bIO?@oYS-EFl6LaO`$2W2*3o_tcj6Mu2$K(?d{tcvT7oSH@J7`Qo1sfY^mKn zl#z%ky7M0l+M1{!D2T%oTtX(uc%Ha6Xx%4svNG=a&8>kCjOK_A?8xAus3dgnv5P5$ z3W=<>#3}J)_*n(h%7Rx-)D$HUXCZfLDqAwGUdjX!oVOT4-DpJPgu$?lc_HeRXxM*G zfEXF1s5e|jCQL;DGi>eCRy0wFyy<5xf$vTtrk!`j^I}}6llqv2qq4nu-*$uGl(ksC zI5Y|{(n@XWq15mhA^i*)dg;I`f&N#;GGhx74xd%XyPT| zNhC4~VL``UikT4&A>&8_B;X+Mj(PYZVBGRU8%XscX*wt$;0Z12yGrRmEMSJL|ILAx zF9=8?<92BvLPYKcgo@61X>=(3l7I__L6?tA6rF;~F=R6BpqMT5f-{T>hQb7Jg97~> z9JC|k1v5W2WoxuZdBmcpTsD4P7le2ln%FB1mkl@$8zLHy*g%XD{>0TlBQ3)oqpiT^VzL7hlIj<#bZ_vpxLclP^PD!;prf}=N^0{F{?-M!o@(wOx1R-!Smp3w6ao;x8f5#md&5**L+y-$izF zYoMYgaXxZIw1P^n6eI^l^%Ts&;E`i}Pwfd@isy8*iHZt~O4g$`LC~uGjc|Rydgzv! z2G~FdmxHp+?C~bm6zE(_eYRnA8X_;%I*`tToWLmNl1YCL=@MWTY6+szI(Y{*qMJN( z&jqofMsc+r@;r~S=zV&=V-bZE2L4xU^0~FCkD(URfx9*l8n2Xc%>p!2#Xd7&ZQhCr zW<=L*>p=x2W={M8mnZ@K-%mwGIc43$AKacQi3GcTn2$<_*0Cx)LyqL!pHUk|UEoj9%CBhuWtE4P5qHr=_Xxt*D zSs|Vy7Ods7nNS*Foc=r;T9BL7brfFu!o3j#wxw`c#mN6U$W_3&4mQT{3zVILyfXaJ z(5F2k$6g%p0nZO^Qw#M0@K_n;)pwGgE>w<(8gjqERV@ww@x4J#J)=SNXt(&+@lbX&C z?EFzm+41SCr>P8d{V0WXU9s3vlL`k_2(Cp4Pdf;gHXT$PwZ&L&izcH?tiga z!D_-9M^;r#EL53C6v3bSbFcwB?r_b2JhNIOB9s6_4N3(DdmtE`w?i3=D!L{8fqp{zC=nEvsZsqnBUz`kL{cI~kV_PH zA%DSK3e`fGdRZbM8DrKydTrx96U1u+4Qel1N?7Y9m^n`>Txych=t|b1#0EHg zOK96X%r7M-M0ghQXk40y-@%!)RJ^i2G9ajsc_O%`lL$KRB2O|eVx2yAg+)nXxu zD2U8m1^b81l=#4oUN~q0cJQDn(oEh%7?JRnBBXeP$U<>mDavm<&1m>2OAX-$o0q!? zw)NCpbQ7s$TkoyD*f?O;o6DkYK?>Lpp&79+(p*MfuaR&2y!(*(a0h5|`!Y0#a*o=1UaN%HUwq>amh6u2}= zE}l@ITA02{{7y^{`7}v+lfHT5SittStFU zxDM_v-u*$z;8vN29bv2f!DoIUe#G(NDv5+x#Rm;O* zuEwpzH|9ijY6qV(5%C@(d8b%d=%7em)vZTEkdY6mq#lY!G%u5T63PAI#6nHqWluF` zBGw~(nSpi;h8hD#YWQNJS>-|YC;If3WO33Tbq;H&a_}n<9j~@F;qI7lS%rWfPE>W0 ziYzDbs{}M*R7&In%QNsU)i{hvu+wbdP^Nrd8+LhWf@#wR(z#p>l?~nlIIvRM1YbqJ zYo7dL^*8j5+S#a%TBL(GxFwk9ZIg~@gWqBzGbZw4JRj-iLd1VxU;~qdi^=k5l!ZDj zG~nQJLkm!9;Yd-3)L<@LEt?>Md=VlGc1Tw|cZgP#h_b(=CsEP)+%SLQrQAb20r9PO) zAF-p>W$41$Go+LTX1#8vnAwJzANC0_37`i)ohT!l@B@iwN>ER-{F^@Fn*`uSAXiip z@nA3txhndRI}EtUlmWH`31pbJX=0b41RRxb{H;p(Q5-kKC+Sdu z0CG3Eq0rqMgrqb;-Y_^0f^7*IDI(@fXA(=ygZN)a<6Ghwq6wJ?$=1;~sD1xliem(Y z5MC0*uv_f#46f?7V^$jpjyF2GxMUQHFwIHD|Bi<@JR-Fe1|sAEV%-XCsbzfjF-f&1 zZ91%g2|rhf2(MDc5NHyz2qt*5fO5j=ByqHXW+ISU^a^!wL? zsCse0K7rmG9#{@e?N;0>Vk^t4^pJ#WB@@_TYe4yR<;gt7e=rn{f<%VI+Y9c!P|QL>LXO5cJ%NkvJ%V2; zNiK{;AnuU35U})h7u^5?xA-g2(y=aCS_&`Y5DKXceii8O3T6cSy6vpOj;bL5Zn!?> z0+6Q6&C=EViCIl26QYGB^ z9Z%4^EB<+-j0Ga&B{&_kmXUV@dMMcSDEUiinFt|iI`Y`rz#rBS@S5>^s9FxS7|G3J zl0kdgal^0X2|Qg{c3$1AjwjScL@s3OY2xVMQuv3$SL`XVFiuY;&s+`I1(2mc!kA`f zNq}Yu>_|rxdG&(~-8?aC-Ou~VNB(ZL+{QLIf%jwlq>`6}{Qu?~Py)IFIO!`?WXHVZ}q zrE(gQ3;1+Y8o}_jk zE@6yJBj~aN?RerMj@mZtD~2^pFax$?{T)PxcnK*g<78XE@nrrc4mF8S*@}!GVDV?6 zDz}uSYXUt=A(MgZ!16rC|62yJ_B5jAu1T4bgGSXJNh_FvfKUpN>M_h0&8L|a!EP+D zMXFyw+3+cqB6yBbOZemMsLh2`Khako#9Wcs2ON1%Xg5knuyG!o4p%zY@r2!^B%}%m zy=j=BxKZl^ep5z}u*ZZ0`-CJODWa=%NP05Hi-fW%2#bio#>u|vgayl{WKhB@UGv6`JugrwAFhFs{!nA8xrH;#kvgTBTz`K z%aB~g5dwhF9X&^ynFx^NDI8babP4a>36^*P7@jVfC}$E0s7OC4;Q_`l_SiCf-j;Su zGlQ|_m^q0r5!_@ojt-=ytOUdbAJk7;(EFDT z4n6YSZ-`kMQ32pVio3z?|dN%8oBK93XreG_3{M_{U@gs+3U zF~Q@)-Kd@$+K)MBC`nI*iRjHjYz?sB#tVxhG2H}t&_>K;F=oM0nVJmSY2>)En$$i% z!!aI3M7$0)sYz|akzZ0eeg9@*>YI-Zik+to^+T}+0d}xB_pfP#^K-g{yG?e8yaw3K zKp4}O8Z(j{Whuiyfsv6o6@`s%3CVY8$V6bDp0?9}JaK;H{e}9!f`yzkxhD{eckJYZ z$r#PTQ46)V*#!a%Km+LaIz#3$e+^8XM4B3K#gvR_K|&9Zyd7$2wNS#8=Jk^|;(8oJ zK=h7o!mt8Xz^+LD{D*-lq&6|`*d0sRaiA}7JL->IQla5VaY;UiqJ(8$syd$(;~@b^ zQi;`Smll3c7BB^6GA4k+c;yi*>Emd~1e1Y>R%kMW* z(Iya}ecxu+IY3E|OrfNRS@6|Pe40VkaoBL_*_>?_|QCIwU zaJhsZrt?oA1=&HaIpIPUQi)q30gK)fJ^#kQo1|OqVs`&oruuMugPE-is;RafxlG~+60aL7jK!&@OO!#S5|ihdv&{F>eqn7LCl2(W^n{jG)g zChXgl8cAtg4Sf1(31WUaoG>faqeGF_#P+@QaP04218k5_;LwFewFfy89zx(6=MN}- zhy%a{!DKH&E^_MkHatiy4{bg>g}_BP>Y-R%p!)=l^D;sB#joeJ@LmUzVEdTJkR0ZT zxuG&tikT=SP|b}Io!ymC*G_0aO^qQSh_hXVXD(#uT#c1PG#d~^p(C40EF>WpO3l$Y zkk<8{eHa|yO#r2FG%_%V0X4#U!X%56o4Q~Rula=iVZju7E)n9!$vc#Hc;If!^st(#R43lr5>)Q z#JSr^17;!d`j!6@tP~%q01n>VRgf4z1g7Wc8jQ0jn+#YHv~UA*DvU`7ZpH6`%Sz+D z43xs`&c=ZEaiDQP!#qrj@+QZyYY#nN5^ag8Jzo2kVH#;`0{H}x&m(Gix!c`Q;&5{n z;YwjMa$!gbL7H|L8#Rq6q4y#xV^2bQ8kS69`(DhxHyOt_uzRvBsPVBK7(WN#!p;@b zwu0JkLrQvH2%ec8zzh^y9_F&ydJw`qIN@>|crvNLMg@P3P1~!t5%lF zjBO|@*qp)ue;E&F=H@;U(n59zn9!0>SXRe1<$DY&%E9)Hr$;((;4AdP~w z46up7M^at6y6z$=3u~ zDxaMvVRON|qO7iI;;ad5#?%PtFKSHyMzB~lLJ-YhpJWOqEWCq&dv(uAT$vjv4qzMXYl=Gux&PZxf-FR`SpO#=|>fXEU41~YQiVsPC+k` zun~lTYWu*}kr4_ooO}iR9V}$9Rz~s&X9WRZenfiT3|&S1Zs-pz2WIVvl{t#0#3Ity zgnvDZ+hmab^dF|#6R!c@6BXg#!eNHW1AE%Nk6ol7LIv7|!wOeWjItkO z<6weTlmax}0NrXOq4m5YN8{vYSH Bk?{Zk literal 0 HcmV?d00001 diff --git a/guest/rust/packages/games/tictactoe/screenshot.png b/guest/rust/packages/games/tictactoe/screenshot.png index 4083d355942dd7235690c18dfa7423976a4cda59..efcbe791ddbb5cb8ee5fd22b8974efe7cdd8d14f 100644 GIT binary patch literal 21354 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 RhGyEdsn<=ZntV&?{|4re{2%}T literal 47806 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 HJ7@nNtJ7k+ diff --git a/guest/rust/packages/schemas/editor/screenshot.png b/guest/rust/packages/schemas/editor/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3bbfa8cba43d3f0da2fae7c3e23baa626c1620 GIT binary patch literal 8919 zcmeAS@N?(olHy`uVBq!ia0y~yV2S`?4mP03zO)&47#Ni1dAc};R4~4Mz&Jt0bCQau zQ1_~tyWL$}($dnxLV=(h1iqi41tvPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0vPpIdN1n^#5oeTpbMrP=*;z38R4kEj35WgwgB( zu0%)6gwZl#v`j!WCr1m$(SmWbV1)IkMr()B+F`VI7_A*f2USK#mVo8JXdsLR0;Dh; zO$nnZVKgN`=O9K4MsR;&v`iQ+6GqE~(K2Cl&UJLA4O9+{4jzpL0 Date: Tue, 12 Sep 2023 16:37:36 +0200 Subject: [PATCH 34/35] docs(changelog): mention new concepts --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df91b41c44..ba2c199e1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -146,6 +146,7 @@ These PRs are not directly user-facing, but improve the development experience. - **UI**: Focus is now global across different packages, and we've removed the FocusRoot component - **API**: CursorLockGuard removed and `hide_cursor` package introduced. - **Hierarchies**: The `children` component is now automatically derived from `parent` components (unless the user opts out of this). The `children` component is also not networked any longer, since it's calculated on the client side. +- **Concepts**: Concept code generation has been changed to generate `structs` instead, as well as adding support for optional components. See the documentation for more information. #### Non-breaking From b1d2dfbfad99f8ac19b958413296626d077f8009 Mon Sep 17 00:00:00 2001 From: Philpax Date: Tue, 12 Sep 2023 16:42:24 +0200 Subject: [PATCH 35/35] chore: fix warnings --- guest/rust/packages/games/tangent/core/src/client.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/guest/rust/packages/games/tangent/core/src/client.rs b/guest/rust/packages/games/tangent/core/src/client.rs index b03a7afb65..c55f231058 100644 --- a/guest/rust/packages/games/tangent/core/src/client.rs +++ b/guest/rust/packages/games/tangent/core/src/client.rs @@ -7,9 +7,7 @@ use ambient_api::{ PerspectiveInfiniteReverseCamera, PerspectiveInfiniteReverseCameraOptional, }, }, - hierarchy::components::parent, messages::Frame, - model::components::model_loaded, physics::components::linear_velocity, rect::components::{line_from, line_to, line_width, rect}, rendering::components::color,

@Wrz3#jLc1fZ|m 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�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�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 diff --git a/guest/rust/examples/rendering/samplers/screenshot.png b/guest/rust/examples/rendering/samplers/screenshot.png index e7add4c4ac69e8b53aec36725501adbd11228b61..44bcf718de4728a77ca4bf421b9c253998de6b26 100644 GIT binary patch literal 68025 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 literal 0 HcmV?d00001 diff --git a/guest/rust/examples/intermediate/screen_ray/screenshot.png b/guest/rust/examples/intermediate/screen_ray/screenshot.png index c40fadd9f29443a39ddfa21b95fea45450a71e4c..18b74eecc6216fbdc44f182144c6305a2ba63428 100644 GIT binary patch literal 15599 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 literal 15698 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 E2k`~Hw*UYD diff --git a/guest/rust/examples/rendering/decals/screenshot.png b/guest/rust/examples/rendering/decals/screenshot.png index 7d90c8d5f19be47e83b8e8fb901a4c457f96fc1d..4c8dfb9f03f455072be9e8ba881d72cc09786f86 100644 GIT binary patch literal 89265 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⪼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