diff --git a/Cargo.toml b/Cargo.toml index f187c006ce..db1d11b8e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,6 +60,7 @@ lua_language_server_files = [ "ladfile_builder/lua_language_server_files", ] + # bindings core_functions = ["bevy_mod_scripting_functions/core_functions"] @@ -106,6 +107,10 @@ mlua_async = ["bevy_mod_scripting_lua?/mlua_async"] ## rhai rhai = ["bevy_mod_scripting_rhai", "bevy_mod_scripting_functions/rhai_bindings"] + +## wasmtime +wasmtime = ["bevy_mod_scripting_wasmtime"] + ## rune # rune = ["bevy_mod_scripting_rune"] @@ -118,6 +123,7 @@ bevy_app = { workspace = true } bevy_mod_scripting_core = { workspace = true } bevy_mod_scripting_lua = { workspace = true, optional = true } bevy_mod_scripting_rhai = { workspace = true, optional = true } +bevy_mod_scripting_wasmtime = { workspace = true, optional = true} bevy_mod_scripting_functions = { workspace = true } bevy_mod_scripting_derive = { workspace = true } bevy_mod_scripting_asset = { workspace = true } @@ -140,12 +146,16 @@ ladfile = { path = "crates/ladfile", version = "0.19.0" } ladfile_builder = { path = "crates/ladfile_builder", version = "0.19.0" } bevy_mod_scripting_lua = { path = "crates/languages/bevy_mod_scripting_lua", version = "0.19.0", default-features = false } bevy_mod_scripting_rhai = { path = "crates/languages/bevy_mod_scripting_rhai", version = "0.19.0", default-features = false } +bevy_mod_scripting_wasmtime = { path = "crates/languages/bevy_mod_scripting_wasmtime", version = "0.19.0", default-features = false } + bevy_mod_scripting_asset = { path = "crates/bevy_mod_scripting_asset", version = "0.19.0", default-features = false } bevy_mod_scripting_bindings = { path = "crates/bevy_mod_scripting_bindings", version = "0.19.0", default-features = false } bevy_mod_scripting_bindings_domain = { path = "crates/bevy_mod_scripting_bindings_domain", version = "0.19.0", default-features = false } bevy_mod_scripting_display = { path = "crates/bevy_mod_scripting_display", version = "0.19.0", default-features = false } bevy_mod_scripting_script = { path = "crates/bevy_mod_scripting_script", version = "0.19.0", default-features = false } lua_language_server_lad_backend = { path = "crates/lad_backends/lua_language_server_lad_backend", version = "0.19.0", default-features = false } +lad_wit_backend = { path = "crates/lad_backends/lad_wit_backend" , version = "0.19.0" } + bevy_mod_scripting_core = { path = "crates/bevy_mod_scripting_core", version = "0.19.0" } bevy_mod_scripting_world = { path = "crates/bevy_mod_scripting_world", version = "0.19.0", default-features = true} # bevy @@ -293,10 +303,10 @@ members = [ "crates/bevy_mod_scripting_script", "crates/bevy_mod_scripting_bindings_domain", "crates/bindings/*", - "crates/testing_crates/bevy_mod_scripting_test_scenario_syntax", "crates/bevy_mod_scripting_world", + "crates/testing_crates/bevy_mod_scripting_test_scenario_syntax", "crates/bevy_mod_scripting_world", "crates/languages/bevy_mod_scripting_wasmtime", "crates/lad_backends/lad_wit_backend", ] resolver = "2" -exclude = ["codegen", "crates/macro_tests", "xtask"] +exclude = ["codegen", "crates/macro_tests", "xtask", "guest_crate/"] [profile.dev] debug = 1 @@ -340,6 +350,13 @@ required-features = ["lua_language_server_files"] name = "runscript" path = "examples/run_script.rs" + +[[example]] +name = "run_wasm" +path = "examples/run_wasm.rs" +required-features = ["wasmtime"] + + [[example]] name = "script_loading" path = "examples/script_loading.rs" diff --git a/assets/scripts/bms_wasm_guest.wasm b/assets/scripts/bms_wasm_guest.wasm new file mode 100644 index 0000000000..757961252b Binary files /dev/null and b/assets/scripts/bms_wasm_guest.wasm differ diff --git a/crates/bevy_mod_scripting_asset/src/language.rs b/crates/bevy_mod_scripting_asset/src/language.rs index 863e6a5d24..675bcc1b7e 100644 --- a/crates/bevy_mod_scripting_asset/src/language.rs +++ b/crates/bevy_mod_scripting_asset/src/language.rs @@ -16,6 +16,8 @@ pub enum Language { Lua, /// The Rune scripting language Rune, + /// Any wasmtime compiled language + Wasmtime, /// An external scripting language External { /// The identifier of the language @@ -52,6 +54,7 @@ impl From<&Language> for Cow<'static, str> { Language::Lua => Cow::Borrowed("Lua"), Language::Rune => Cow::Borrowed("Rune"), Language::External { name, .. } => name.clone(), + Language::Wasmtime => Cow::Borrowed("Wasmtime"), Language::Unknown => Cow::Borrowed("Unknown"), } } diff --git a/crates/bevy_mod_scripting_bindings/src/docgen/info.rs b/crates/bevy_mod_scripting_bindings/src/docgen/info.rs index e42b8891c7..48b7e087ed 100644 --- a/crates/bevy_mod_scripting_bindings/src/docgen/info.rs +++ b/crates/bevy_mod_scripting_bindings/src/docgen/info.rs @@ -2,6 +2,7 @@ use crate::function::arg_meta::ArgMeta; use crate::function::namespace::Namespace; +use bevy_ecs::world::World; use bevy_mod_scripting_derive::DebugWithTypeInfo; use bevy_mod_scripting_display::{DisplayWithTypeInfo, WithTypeInfo}; use bevy_mod_scripting_world::WorldGuard; @@ -44,6 +45,17 @@ impl Default for FunctionInfo { #[profiling::all_functions] impl FunctionInfo { + /// returns true if the function is defined with a first non-contextual argument matching its namespace + pub fn is_method(&self) -> bool { + self.arg_info + .iter() + .find(|a| a.is_passed) + .is_some_and(|a| match self.namespace { + Namespace::Global => false, + Namespace::OnType(type_id) => type_id == a.through_type_id(), + }) + } + /// Create a new function info with default values. pub fn new() -> Self { Self { @@ -128,6 +140,8 @@ pub struct FunctionArgInfo { /// The type information of the argument. #[reflect(ignore)] pub type_info: Option, + /// True if this is a passed argument and false if it's purely injected and not interacted with from scripts + pub is_passed: bool, } impl DisplayWithTypeInfo for FunctionArgInfo { @@ -148,12 +162,6 @@ impl DisplayWithTypeInfo for FunctionArgInfo { #[profiling::all_functions] impl FunctionArgInfo { - /// Create a new function argument info with a name. - pub fn with_name(mut self, name: Cow<'static, str>) -> Self { - self.name = Some(name); - self - } - /// Create a new function argument info for a specific type. pub fn for_type( name: Option>>, @@ -164,6 +172,15 @@ impl FunctionArgInfo { arg_index, type_id: TypeId::of::(), type_info: Some(T::through_type_info()), + is_passed: T::is_passed(), + } + } + + /// Returns the type id of the first typed argument (i.e. for `R` it would be the type id of `T`, ignoring any context arguments) + pub fn through_type_id(&self) -> TypeId { + match &self.type_info { + Some(ThroughTypeInfo::UntypedWrapper { through_type, .. }) => through_type.type_id(), + _ => self.type_id, } } } diff --git a/crates/bevy_mod_scripting_bindings/src/docgen/typed_through.rs b/crates/bevy_mod_scripting_bindings/src/docgen/typed_through.rs index adc6dbb7db..4a3b77cb01 100644 --- a/crates/bevy_mod_scripting_bindings/src/docgen/typed_through.rs +++ b/crates/bevy_mod_scripting_bindings/src/docgen/typed_through.rs @@ -206,6 +206,10 @@ pub fn as_reflect_primitive(type_info: &'static TypeInfo) -> Option ThroughTypeInfo; + /// Returns true if this argument is a "proper" passed argument, and false if it's purely injected + fn is_passed() -> bool { + true + } } impl TypedThrough for Union { @@ -313,7 +317,6 @@ macro_rules! impl_through_typed { } impl_through_typed!( - FunctionCallContext => FunctionCallContext, ReflectReference => ReflectReference, DynamicScriptFunctionMut => DynamicFunctionMut, DynamicScriptFunction => DynamicFunction, @@ -340,6 +343,16 @@ impl_through_typed!( &'static str => Str ); +impl TypedThrough for FunctionCallContext { + fn through_type_info() -> ThroughTypeInfo { + ThroughTypeInfo::Primitive(ReflectionPrimitiveKind::FunctionCallContext) + } + + fn is_passed() -> bool { + false + } +} + macro_rules! impl_through_typed_tuple { ($($ty:ident),*) => { impl<$($ty: TypedThrough),*> TypedThrough for ($($ty,)*) { diff --git a/crates/bevy_mod_scripting_bindings/src/function/script_function.rs b/crates/bevy_mod_scripting_bindings/src/function/script_function.rs index 152f7ebb9d..537103465e 100644 --- a/crates/bevy_mod_scripting_bindings/src/function/script_function.rs +++ b/crates/bevy_mod_scripting_bindings/src/function/script_function.rs @@ -84,7 +84,7 @@ pub struct LocationContext { } impl FunctionCallContext { - /// Create a new FunctionCallContext with the given 1-indexing conversion preference + /// Create a new FunctionCallContext pub const fn new(language: Language) -> Self { Self { language, diff --git a/crates/lad_backends/assets/definitions/bindings.d.lua b/crates/lad_backends/assets/definitions/bindings.d.lua new file mode 100644 index 0000000000..98a2078488 --- /dev/null +++ b/crates/lad_backends/assets/definitions/bindings.d.lua @@ -0,0 +1,31309 @@ +---@meta +---@module "World" + + +---@class World +--- The ECS world containing all Components, Resources and Systems. Main point of interaction with a Bevy App. +World = {} + +---@return ScriptQueryBuilder +function World.query() end + +---@param entity Entity +--- The entity to remove the component from. +---@param registration ScriptComponentRegistration +--- The component to remove. +---@return nil +function World.remove_component(entity,registration) end + +---@param type_name string +--- The name of the type to retrieve. +---@return ScriptTypeRegistration | ScriptComponentRegistration | ScriptResourceRegistration | nil +function World.get_type_by_name(type_name) end + +---@param entity Entity +--- The entity to retrieve the children of. +---@return Entity[] +function World.get_children(entity) end + +---@param entity Entity +--- The parent entity to receive children +---@param index integer +--- The index to insert the children at +---@param children Entity[] +--- The children entities to insert +---@return nil +function World.insert_children(entity,index,children) end + +---@param handle_reference ReflectReference +--- The handle to the asset (as a reflect reference). +---@param registration ScriptTypeRegistration +--- The type registration of the asset type. +---@return ReflectReference | nil +function World.get_asset(handle_reference,registration) end + +---@param entity Entity +--- The entity to retrieve the parent of. +---@return Entity | nil +function World.get_parent(entity) end + +---@param registration ScriptResourceRegistration +--- The registration of the resource to retrieve. +---@return ReflectReference | nil +function World.get_resource(registration) end + +---@return Entity +function World.spawn() end + +---@param entity Entity +--- The entity to insert the component into. +---@param registration ScriptComponentRegistration +--- The component registration of the component to insert. +---@param value ReflectReference +--- The value of the component to insert. Can be constructed using `construct` +---@return nil +function World.insert_component(entity,registration,value) end + +---@return nil +function World.exit() end + +---@param entity Entity +--- The entity to despawn. +---@return nil +function World.despawn(entity) end + +---@param name string +--- The name of the component type +---@return ScriptComponentRegistration +function World.register_new_component(name) end + +---@param registration ScriptResourceRegistration +--- The registration of the resource to check for. +---@return boolean +function World.has_resource(registration) end + +---@param entity Entity +--- The entity to retrieve the component from. +---@param registration ScriptComponentRegistration +--- The component to retrieve. +---@return ReflectReference | nil +function World.get_component(entity,registration) end + +---@param schedule ReflectSchedule +--- The schedule to add the system to. +---@param builder ScriptSystemBuilder +--- The system builder specifying the system and its dependencies. +---@return ReflectSystem +function World.add_system(schedule,builder) end + +---@param entity Entity +--- The entity to despawn the descendants of. +---@return nil +function World.despawn_descendants(entity) end + +---@param handle_reference ReflectReference +---@return boolean +function World.has_asset(handle_reference) end + +---@param entity Entity +--- The entity to despawn recursively. +---@return nil +function World.despawn_recursive(entity) end + +---@param e Entity +---@return boolean +function World.has_entity(e) end + +---@param entity Entity +--- The entity to check. +---@param registration ScriptComponentRegistration +--- The component to check for. +---@return boolean +function World.has_component(entity,registration) end + +---@param name string +--- The name of the schedule to retrieve. +---@return ReflectSchedule | nil +function World.get_schedule_by_name(name) end + +---@param entity Entity +---@param registration ScriptComponentRegistration +--- The resource to add. +---@return nil +function World.add_default_component(entity,registration) end + +---@param entity Entity +--- The parent entity to receive children +---@param children Entity[] +--- The children entities to push +---@return nil +function World.push_children(entity,children) end + +---@param registration ScriptResourceRegistration +--- The resource to remove. +---@return nil +function World.remove_resource(registration) end + + + +---@class ScriptComponentRegistration : ReflectReference +--- A reference to a component type's reflection registration. +--- +--- In general think of this as a handle to a type. +--- +--- Not to be confused with script registered dynamic components, although this can point to a script registered component. +---@field registration ? ScriptTypeRegistration +---@field component_id ? ComponentId +---@field is_dynamic_script_component ? boolean +ScriptComponentRegistration = {} + +---@param registration ScriptComponentRegistration +--- The type registration. +---@return string +function ScriptComponentRegistration.short_name(registration) end + +---@param registration ScriptComponentRegistration +--- The type registration. +---@return string +function ScriptComponentRegistration.type_name(registration) end + + + +---@class ScriptQueryBuilder : ReflectReference +--- The query builder is used to build ECS queries which retrieve spefific components filtered by specific conditions. +--- +--- For example: +--- ```rust,ignore +--- builder.component(componentA) +--- .component(componentB) +--- .with(componentC) +--- .without(componentD) +--- ``` +--- +--- Will retrieve entities which: +--- - Have componentA +--- - Have componentB +--- - Have componentC +--- - Do not have componentD +--- +--- As well as references to components: +--- - componentA +--- - componentB +ScriptQueryBuilder = {} + +---@param query ScriptQueryBuilder +--- The query to add the component to +---@param without ScriptComponentRegistration +---@return ScriptQueryBuilder +function ScriptQueryBuilder.without(query,without) end + +---@param query ScriptQueryBuilder +--- The query to add the component to +---@param with ScriptComponentRegistration +---@return ScriptQueryBuilder +function ScriptQueryBuilder.with(query,with) end + +---@param query ScriptQueryBuilder +--- The query to build. +---@return ScriptQueryResult[] +function ScriptQueryBuilder.build(query) end + +---@param query ScriptQueryBuilder +--- The query to add the component to +---@param components ScriptComponentRegistration +---@return ScriptQueryBuilder +function ScriptQueryBuilder.component(query,components) end + + + +---@class ScriptQueryResult : ReflectReference +--- A result from a query. +ScriptQueryResult = {} + +---@param query ScriptQueryResult +--- The query result to retrieve the components from. +---@return ReflectReference[] +function ScriptQueryResult.components(query) end + +---@param query ScriptQueryResult +--- The query result to retrieve the entity from. +---@return Entity +function ScriptQueryResult.entity(query) end + + + +---@class ScriptResourceRegistration : ReflectReference +--- A reference to a resource type's reflection registration. +--- +--- In general think of this as a handle to a type. +---@field registration ? ScriptTypeRegistration +---@field resource_id ? ComponentId +ScriptResourceRegistration = {} + +---@param registration ScriptResourceRegistration +--- The type registration. +---@return string +function ScriptResourceRegistration.type_name(registration) end + +---@param registration ScriptResourceRegistration +--- The type registration. +---@return string +function ScriptResourceRegistration.short_name(registration) end + + + +---@class ScriptTypeRegistration : ReflectReference +--- A reference to a type which is not a `Resource` or `Component`. +--- +--- In general think of this as a handle to a type. +ScriptTypeRegistration = {} + +---@param registration ScriptTypeRegistration +--- The type registration. +---@return string +function ScriptTypeRegistration.short_name(registration) end + +---@param registration ScriptTypeRegistration +--- The type registration. +---@return string +function ScriptTypeRegistration.type_name(registration) end + + + +---@class ScriptSystemBuilder : ReflectReference +--- A builder for systems living in scripts +ScriptSystemBuilder = {} + +---@param builder ScriptSystemBuilder +--- The system builder to add the dependency to. +---@param system ReflectSystem +--- The system to run before. +---@return ScriptSystemBuilder +function ScriptSystemBuilder.before(builder,system) end + +---@param builder ScriptSystemBuilder +--- The system builder to add the resource to. +---@param resource ScriptResourceRegistration +--- The resource to add. +---@return ScriptSystemBuilder +function ScriptSystemBuilder.resource(builder,resource) end + +---@param builder ScriptSystemBuilder +--- The system builder to add the query to. +---@param query ScriptQueryBuilder +--- The query to add. +---@return ScriptSystemBuilder +function ScriptSystemBuilder.query(builder,query) end + +---@param builder ScriptSystemBuilder +--- The system builder to make exclusive. +---@return ScriptSystemBuilder +function ScriptSystemBuilder.exclusive(builder) end + +---@param builder ScriptSystemBuilder +--- The system builder to add the dependency to. +---@param system ReflectSystem +--- The system to run after. +---@return ScriptSystemBuilder +function ScriptSystemBuilder.after(builder,system) end + + + +---@class ScriptAttachment : ReflectReference +--- Specifies a unique attachment of a script. These attachments are mapped to [`bevy_mod_scripting_core::ContextKey`]'s depending on the context policy used. +ScriptAttachment = {} + + + + + +---@class ReflectSchedule : ReflectReference +--- A reflectable schedule. +---@field type_path ? string +---@field label ? ReflectableScheduleLabel +ReflectSchedule = {} + +---@param schedule ReflectSchedule +--- The schedule to retrieve the system from. +---@param name string +--- The identifier or full path of the system to retrieve. +---@return ReflectSystem | nil +function ReflectSchedule.get_system_by_name(schedule,name) end + +---@param schedule ReflectSchedule +--- The schedule to render. +---@return string +function ReflectSchedule.render_dot(schedule) end + +---@param schedule ReflectSchedule +--- The schedule to retrieve the systems from. +---@return ReflectSystem[] +function ReflectSchedule.systems(schedule) end + + + +---@class ReflectSystem : ReflectReference +--- A reflectable system. +ReflectSystem = {} + +---@param system ReflectSystem +--- The system to retrieve the identifier from. +---@return string +function ReflectSystem.identifier(system) end + +---@param system ReflectSystem +--- The system to retrieve the path from. +---@return string +function ReflectSystem.path(system) end + + + +---@class ReflectReference +--- A reference to a reflectable type +---@operator len: integer | nil +ReflectReference = {} + +---@param reference ReflectReference +--- The reference to insert the value into. +---@param key any +--- The index to insert the value at. +---@param value any +--- The value to insert. +---@return nil +function ReflectReference.insert(reference,key,value) end + +---@param reference ReflectReference +--- The reference to pop the value from. +---@return any +function ReflectReference.pop(reference) end + +---@param reference ReflectReference +--- The reference to get the length of. +---@return integer | nil +function ReflectReference.len(reference) end + +---@param reference ReflectReference +--- The reference to index into. +---@param key any +--- The key to index with. +---@return any | nil +function ReflectReference.map_get(reference,key) end + +---@param reference ReflectReference +--- The reference to push the value into. +---@param value any +--- The value to push. +---@return nil +function ReflectReference.push(reference,value) end + +---@param reference ReflectReference +--- The reference to iterate over. +---@return function +function ReflectReference.__pairs(reference) end + +---@param reference ReflectReference +--- The reference to iterate over. +---@return function +function ReflectReference.iter(reference) end + +---@param reference ReflectReference +--- The reference to clear. +---@return nil +function ReflectReference.clear(reference) end + +---@param reference ReflectReference +--- The reference to display. +---@return string +function ReflectReference.__tostring(reference) end + +---@param reference ReflectReference +--- The reference to display. +---@return string +function ReflectReference.display(reference) end + +---@param reference ReflectReference +--- The reference to get the variant name of. +---@return string | nil +function ReflectReference.variant_name(reference) end + +---@param reference ReflectReference +--- The reference to remove the value from. +---@param key any +--- The key to remove the value at. +---@return any +function ReflectReference.remove(reference,key) end + +---@param reference ReflectReference +--- The reference to list the functions of. +---@return FunctionInfo[] +function ReflectReference.functions(reference) end + +---@param reference ReflectReference +--- The reference to display. +---@return string +function ReflectReference.__tostring(reference) end + +---@param reference ReflectReference +--- The reference to display. +---@return string +function ReflectReference.debug(reference) end + + + +---@class Color : ReflectReference +--- An enumerated type that can represent any of the color types in this crate. +--- +--- This is useful when you need to store a color in a data structure that can't be generic over +--- the color type. +---
+---
+--- +--- # Operations +--- +--- [`Color`] supports all the standard color operations, such as [mixing](Mix), +--- [luminance](Luminance) and [hue](Hue) adjustment, +--- and [diffing](EuclideanDistance). These operations delegate to the concrete color space contained +--- by [`Color`], but will convert to [`Oklch`](Oklcha) for operations which aren't supported in the +--- current space. After performing the operation, if a conversion was required, the result will be +--- converted back into the original color space. +--- +--- ```rust +--- # use bevy_color::{Hue, Color}; +--- let red_hsv = Color::hsv(0., 1., 1.); +--- let red_srgb = Color::srgb(1., 0., 0.); +--- +--- // HSV has a definition of hue, so it will be returned. +--- red_hsv.hue(); +--- +--- // SRGB doesn't have a native definition for hue. +--- // Converts to Oklch and returns that result. +--- red_srgb.hue(); +--- ``` +--- +--- [`Oklch`](Oklcha) has been chosen as the intermediary space in cases where conversion is required +--- due to its perceptual uniformity and broad support for Bevy's color operations. +--- To avoid the cost of repeated conversion, and ensure consistent results where that is desired, +--- first convert this [`Color`] into your desired color space. +Color = {} + +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param chroma number +--- Chroma channel. [0.0, 1.0] +---@param hue number +--- Hue channel. [0.0, 360.0] +---@return Color +function Color.oklch(lightness,chroma,hue) end + +---@param lightness number +--- Lightness channel. [0.0, 1.5] +---@param chroma number +--- Chroma channel. [0.0, 1.5] +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.lcha(lightness,chroma,hue,alpha) end + +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param a number +--- Green-red channel. [-1.0, 1.0] +---@param b number +--- Blue-yellow channel. [-1.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.oklaba(lightness,a,b,alpha) end + +---@param _self Color +---@return Srgba +function Color.to_srgba(_self) end + +---@param _self Color +---@return LinearRgba +function Color.to_linear(_self) end + +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param a number +--- Green-red channel. [-1.0, 1.0] +---@param b number +--- Blue-yellow channel. [-1.0, 1.0] +---@return Color +function Color.oklab(lightness,a,b) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param whiteness number +--- Whiteness channel. [0.0, 1.0] +---@param blackness number +--- Blackness channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.hwba(hue,whiteness,blackness,alpha) end + +---@param x number +--- x-axis. [0.0, 1.0] +---@param y number +--- y-axis. [0.0, 1.0] +---@param z number +--- z-axis. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.xyza(x,y,z,alpha) end + +---@param array number[] +--- Red, Green and Blue channels. Each channel is in the range [0.0, 1.0] +---@return Color +function Color.srgb_from_array(array) end + +---@param red number +--- Red channel. [0.0, 1.0] +---@param green number +--- Green channel. [0.0, 1.0] +---@param blue number +--- Blue channel. [0.0, 1.0] +---@return Color +function Color.srgb(red,green,blue) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param saturation number +--- Saturation channel. [0.0, 1.0] +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@return Color +function Color.hsl(hue,saturation,lightness) end + +---@param lightness number +--- Lightness channel. [0.0, 1.5] +---@param chroma number +--- Chroma channel. [0.0, 1.5] +---@param hue number +--- Hue channel. [0.0, 360.0] +---@return Color +function Color.lch(lightness,chroma,hue) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param saturation number +--- Saturation channel. [0.0, 1.0] +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.hsla(hue,saturation,lightness,alpha) end + +---@param red number +--- Red channel. [0.0, 1.0] +---@param green number +--- Green channel. [0.0, 1.0] +---@param blue number +--- Blue channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.srgba(red,green,blue,alpha) end + +---@param red number +--- Red channel. [0.0, 1.0] +---@param green number +--- Green channel. [0.0, 1.0] +---@param blue number +--- Blue channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.linear_rgba(red,green,blue,alpha) end + +---@param _self Color +---@param other Color +---@return boolean +function Color.__eq(_self,other) end + +---@param _self Color +---@param other Color +---@return boolean +function Color.eq(_self,other) end + +---@param red number +--- Red channel. [0.0, 1.0] +---@param green number +--- Green channel. [0.0, 1.0] +---@param blue number +--- Blue channel. [0.0, 1.0] +---@return Color +function Color.linear_rgb(red,green,blue) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param saturation number +--- Saturation channel. [0.0, 1.0] +---@param value number +--- Value channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.hsva(hue,saturation,value,alpha) end + +---@param x number +--- x-axis. [0.0, 1.0] +---@param y number +--- y-axis. [0.0, 1.0] +---@param z number +--- z-axis. [0.0, 1.0] +---@return Color +function Color.xyz(x,y,z) end + +---@param red integer +--- Red channel. [0, 255] +---@param green integer +--- Green channel. [0, 255] +---@param blue integer +--- Blue channel. [0, 255] +---@return Color +function Color.srgb_u8(red,green,blue) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param whiteness number +--- Whiteness channel. [0.0, 1.0] +---@param blackness number +--- Blackness channel. [0.0, 1.0] +---@return Color +function Color.hwb(hue,whiteness,blackness) end + +---@param red integer +--- Red channel. [0, 255] +---@param green integer +--- Green channel. [0, 255] +---@param blue integer +--- Blue channel. [0, 255] +---@param alpha integer +--- Alpha channel. [0, 255] +---@return Color +function Color.srgba_u8(red,green,blue,alpha) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param saturation number +--- Saturation channel. [0.0, 1.0] +---@param value number +--- Value channel. [0.0, 1.0] +---@return Color +function Color.hsv(hue,saturation,value) end + +---@param _self Color +---@return Color +function Color.clone(_self) end + +---@param lightness number +--- Lightness channel. [0.0, 1.5] +---@param a number +--- a axis. [-1.5, 1.5] +---@param b number +--- b axis. [-1.5, 1.5] +---@return Color +function Color.lab(lightness,a,b) end + +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param chroma number +--- Chroma channel. [0.0, 1.0] +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.oklcha(lightness,chroma,hue,alpha) end + +---@param lightness number +--- Lightness channel. [0.0, 1.5] +---@param a number +--- a axis. [-1.5, 1.5] +---@param b number +--- b axis. [-1.5, 1.5] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Color +function Color.laba(lightness,a,b,alpha) end + + + +---@class Hsla : ReflectReference +--- Color in Hue-Saturation-Lightness (HSL) color space with alpha. +--- Further information on this color model can be found on [Wikipedia](https://en.wikipedia.org/wiki/HSL_and_HSV). +---
+---
+---@field hue ? number +---@field saturation ? number +---@field lightness ? number +---@field alpha ? number +Hsla = {} + +---@param _self Hsla +---@param saturation number +---@return Hsla +function Hsla.with_saturation(_self,saturation) end + +---@param _self Hsla +---@param lightness number +---@return Hsla +function Hsla.with_lightness(_self,lightness) end + +---@param _self Hsla +---@param other Hsla +---@return boolean +function Hsla.__eq(_self,other) end + +---@param _self Hsla +---@param other Hsla +---@return boolean +function Hsla.eq(_self,other) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param saturation number +--- Saturation channel. [0.0, 1.0] +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@return Hsla +function Hsla.hsl(hue,saturation,lightness) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param saturation number +--- Saturation channel. [0.0, 1.0] +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Hsla +function Hsla.new(hue,saturation,lightness,alpha) end + +---@param _self Hsla +---@return Hsla +function Hsla.clone(_self) end + +---@param index integer +---@return Hsla +function Hsla.sequential_dispersed(index) end + + + +---@class Hsva : ReflectReference +--- Color in Hue-Saturation-Value (HSV) color space with alpha. +--- Further information on this color model can be found on [Wikipedia](https://en.wikipedia.org/wiki/HSL_and_HSV). +---
+---
+---@field hue ? number +---@field saturation ? number +---@field value ? number +---@field alpha ? number +Hsva = {} + +---@param _self Hsva +---@param value number +---@return Hsva +function Hsva.with_value(_self,value) end + +---@param _self Hsva +---@param saturation number +---@return Hsva +function Hsva.with_saturation(_self,saturation) end + +---@param _self Hsva +---@param other Hsva +---@return boolean +function Hsva.__eq(_self,other) end + +---@param _self Hsva +---@param other Hsva +---@return boolean +function Hsva.eq(_self,other) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param saturation number +--- Saturation channel. [0.0, 1.0] +---@param value number +--- Value channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Hsva +function Hsva.new(hue,saturation,value,alpha) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param saturation number +--- Saturation channel. [0.0, 1.0] +---@param value number +--- Value channel. [0.0, 1.0] +---@return Hsva +function Hsva.hsv(hue,saturation,value) end + +---@param _self Hsva +---@return Hsva +function Hsva.clone(_self) end + + + +---@class Hwba : ReflectReference +--- Color in Hue-Whiteness-Blackness (HWB) color space with alpha. +--- Further information on this color model can be found on [Wikipedia](https://en.wikipedia.org/wiki/HWB_color_model). +---
+---
+---@field hue ? number +---@field whiteness ? number +---@field blackness ? number +---@field alpha ? number +Hwba = {} + +---@param _self Hwba +---@param other Hwba +---@return boolean +function Hwba.__eq(_self,other) end + +---@param _self Hwba +---@param other Hwba +---@return boolean +function Hwba.eq(_self,other) end + +---@param _self Hwba +---@param blackness number +---@return Hwba +function Hwba.with_blackness(_self,blackness) end + +---@param _self Hwba +---@param whiteness number +---@return Hwba +function Hwba.with_whiteness(_self,whiteness) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param whiteness number +--- Whiteness channel. [0.0, 1.0] +---@param blackness number +--- Blackness channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Hwba +function Hwba.new(hue,whiteness,blackness,alpha) end + +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param whiteness number +--- Whiteness channel. [0.0, 1.0] +---@param blackness number +--- Blackness channel. [0.0, 1.0] +---@return Hwba +function Hwba.hwb(hue,whiteness,blackness) end + +---@param _self Hwba +---@return Hwba +function Hwba.clone(_self) end + + + +---@class Laba : ReflectReference +--- Color in LAB color space, with alpha +---
+---
+---@field lightness ? number +---@field a ? number +---@field b ? number +---@field alpha ? number +---@operator unm: Laba +---@operator div(number): Laba +---@operator sub(Laba): Laba +---@operator mul(number): Laba +---@operator add(Laba): Laba +Laba = {} + +---@param lightness number +--- Lightness channel. [0.0, 1.5] +---@param a number +--- a axis. [-1.5, 1.5] +---@param b number +--- b axis. [-1.5, 1.5] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Laba +function Laba.new(lightness,a,b,alpha) end + +---@param _self Laba +---@return Laba +function Laba.neg(_self) end + +---@param _self Laba +---@param other Laba +---@return boolean +function Laba.__eq(_self,other) end + +---@param _self Laba +---@param other Laba +---@return boolean +function Laba.eq(_self,other) end + +---@param _self Laba +---@param lightness number +---@return Laba +function Laba.with_lightness(_self,lightness) end + +---@param _self Laba +---@param rhs number +---@return Laba +function Laba.div(_self,rhs) end + +---@param lightness number +--- Lightness channel. [0.0, 1.5] +---@param a number +--- a axis. [-1.5, 1.5] +---@param b number +--- b axis. [-1.5, 1.5] +---@return Laba +function Laba.lab(lightness,a,b) end + +---@param _self Laba +---@param rhs Laba +---@return Laba +function Laba.sub(_self,rhs) end + +---@param _self Laba +---@param rhs number +---@return Laba +function Laba.mul(_self,rhs) end + +---@param _self Laba +---@param rhs Laba +---@return Laba +function Laba.add(_self,rhs) end + +---@param _self Laba +---@return Laba +function Laba.clone(_self) end + + + +---@class Lcha : ReflectReference +--- Color in LCH color space, with alpha +---
+---
+---@field lightness ? number +---@field chroma ? number +---@field hue ? number +---@field alpha ? number +Lcha = {} + +---@param index integer +---@return Lcha +function Lcha.sequential_dispersed(index) end + +---@param _self Lcha +---@return Lcha +function Lcha.clone(_self) end + +---@param _self Lcha +---@param other Lcha +---@return boolean +function Lcha.__eq(_self,other) end + +---@param _self Lcha +---@param other Lcha +---@return boolean +function Lcha.eq(_self,other) end + +---@param lightness number +--- Lightness channel. [0.0, 1.5] +---@param chroma number +--- Chroma channel. [0.0, 1.5] +---@param hue number +--- Hue channel. [0.0, 360.0] +---@return Lcha +function Lcha.lch(lightness,chroma,hue) end + +---@param lightness number +--- Lightness channel. [0.0, 1.5] +---@param chroma number +--- Chroma channel. [0.0, 1.5] +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Lcha +function Lcha.new(lightness,chroma,hue,alpha) end + +---@param _self Lcha +---@param lightness number +---@return Lcha +function Lcha.with_lightness(_self,lightness) end + +---@param _self Lcha +---@param chroma number +---@return Lcha +function Lcha.with_chroma(_self,chroma) end + + + +---@class LinearRgba : ReflectReference +--- Linear RGB color with alpha. +---
+---
+---@field red ? number +---@field green ? number +---@field blue ? number +---@field alpha ? number +---@operator div(number): LinearRgba +---@operator unm: LinearRgba +---@operator mul(number): LinearRgba +---@operator add(LinearRgba): LinearRgba +---@operator sub(LinearRgba): LinearRgba +LinearRgba = {} + +---@param _self LinearRgba +---@param rhs number +---@return LinearRgba +function LinearRgba.div(_self,rhs) end + +---@param _self LinearRgba +---@return LinearRgba +function LinearRgba.neg(_self) end + +---@param _self LinearRgba +---@param rhs number +---@return LinearRgba +function LinearRgba.mul(_self,rhs) end + +---@param red number +--- Red channel. [0.0, 1.0] +---@param green number +--- Green channel. [0.0, 1.0] +---@param blue number +--- Blue channel. [0.0, 1.0] +---@return LinearRgba +function LinearRgba.rgb(red,green,blue) end + +---@param _self LinearRgba +---@param rhs LinearRgba +---@return LinearRgba +function LinearRgba.add(_self,rhs) end + +---@param _self LinearRgba +---@param blue number +---@return LinearRgba +function LinearRgba.with_blue(_self,blue) end + +---@param _self LinearRgba +---@return LinearRgba +function LinearRgba.clone(_self) end + +---@param _self LinearRgba +---@param green number +---@return LinearRgba +function LinearRgba.with_green(_self,green) end + +---@param _self LinearRgba +---@return integer +function LinearRgba.as_u32(_self) end + +---@param red number +---@param green number +---@param blue number +---@param alpha number +---@return LinearRgba +function LinearRgba.new(red,green,blue,alpha) end + +---@param _self LinearRgba +---@param other LinearRgba +---@return boolean +function LinearRgba.__eq(_self,other) end + +---@param _self LinearRgba +---@param other LinearRgba +---@return boolean +function LinearRgba.eq(_self,other) end + +---@param _self LinearRgba +---@param red number +---@return LinearRgba +function LinearRgba.with_red(_self,red) end + +---@param _self LinearRgba +---@param rhs LinearRgba +---@return LinearRgba +function LinearRgba.sub(_self,rhs) end + + + +---@class Oklaba : ReflectReference +--- Color in Oklab color space, with alpha +---
+---
+---@field lightness ? number +---@field a ? number +---@field b ? number +---@field alpha ? number +---@operator add(Oklaba): Oklaba +---@operator div(number): Oklaba +---@operator mul(number): Oklaba +---@operator sub(Oklaba): Oklaba +---@operator unm: Oklaba +Oklaba = {} + +---@param _self Oklaba +---@param lightness number +---@return Oklaba +function Oklaba.with_lightness(_self,lightness) end + +---@param _self Oklaba +---@param rhs Oklaba +---@return Oklaba +function Oklaba.add(_self,rhs) end + +---@param _self Oklaba +---@param a number +---@return Oklaba +function Oklaba.with_a(_self,a) end + +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param a number +--- Green-red channel. [-1.0, 1.0] +---@param b number +--- Blue-yellow channel. [-1.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Oklaba +function Oklaba.new(lightness,a,b,alpha) end + +---@param _self Oklaba +---@return Oklaba +function Oklaba.clone(_self) end + +---@param _self Oklaba +---@param rhs number +---@return Oklaba +function Oklaba.div(_self,rhs) end + +---@param _self Oklaba +---@param rhs number +---@return Oklaba +function Oklaba.mul(_self,rhs) end + +---@param _self Oklaba +---@param rhs Oklaba +---@return Oklaba +function Oklaba.sub(_self,rhs) end + +---@param _self Oklaba +---@param b number +---@return Oklaba +function Oklaba.with_b(_self,b) end + +---@param _self Oklaba +---@param other Oklaba +---@return boolean +function Oklaba.__eq(_self,other) end + +---@param _self Oklaba +---@param other Oklaba +---@return boolean +function Oklaba.eq(_self,other) end + +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param a number +--- Green-red channel. [-1.0, 1.0] +---@param b number +--- Blue-yellow channel. [-1.0, 1.0] +---@return Oklaba +function Oklaba.lab(lightness,a,b) end + +---@param _self Oklaba +---@return Oklaba +function Oklaba.neg(_self) end + + + +---@class Oklcha : ReflectReference +--- Color in Oklch color space, with alpha +---
+---
+---@field lightness ? number +---@field chroma ? number +---@field hue ? number +---@field alpha ? number +Oklcha = {} + +---@param _self Oklcha +---@param lightness number +---@return Oklcha +function Oklcha.with_lightness(_self,lightness) end + +---@param index integer +---@return Oklcha +function Oklcha.sequential_dispersed(index) end + +---@param _self Oklcha +---@param chroma number +---@return Oklcha +function Oklcha.with_chroma(_self,chroma) end + +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param chroma number +--- Chroma channel. [0.0, 1.0] +---@param hue number +--- Hue channel. [0.0, 360.0] +---@return Oklcha +function Oklcha.lch(lightness,chroma,hue) end + +---@param lightness number +--- Lightness channel. [0.0, 1.0] +---@param chroma number +--- Chroma channel. [0.0, 1.0] +---@param hue number +--- Hue channel. [0.0, 360.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Oklcha +function Oklcha.new(lightness,chroma,hue,alpha) end + +---@param _self Oklcha +---@return Oklcha +function Oklcha.clone(_self) end + +---@param _self Oklcha +---@param other Oklcha +---@return boolean +function Oklcha.__eq(_self,other) end + +---@param _self Oklcha +---@param other Oklcha +---@return boolean +function Oklcha.eq(_self,other) end + + + +---@class Srgba : ReflectReference +--- Non-linear standard RGB with alpha. +---
+---
+---@field red ? number +---@field green ? number +---@field blue ? number +---@field alpha ? number +---@operator div(number): Srgba +---@operator sub(Srgba): Srgba +---@operator unm: Srgba +---@operator mul(number): Srgba +---@operator add(Srgba): Srgba +Srgba = {} + +---@param _self Srgba +---@param rhs number +---@return Srgba +function Srgba.div(_self,rhs) end + +---@param _self Srgba +---@param rhs Srgba +---@return Srgba +function Srgba.sub(_self,rhs) end + +---@param r integer +--- Red channel. [0, 255] +---@param g integer +--- Green channel. [0, 255] +---@param b integer +--- Blue channel. [0, 255] +---@param a integer +--- Alpha channel. [0, 255] +---@return Srgba +function Srgba.rgba_u8(r,g,b,a) end + +---@param value number +---@return number +function Srgba.gamma_function_inverse(value) end + +---@param _self Srgba +---@return Srgba +function Srgba.neg(_self) end + +---@param _self Srgba +---@param rhs number +---@return Srgba +function Srgba.mul(_self,rhs) end + +---@param _self Srgba +---@param red number +---@return Srgba +function Srgba.with_red(_self,red) end + +---@param r integer +--- Red channel. [0, 255] +---@param g integer +--- Green channel. [0, 255] +---@param b integer +--- Blue channel. [0, 255] +---@return Srgba +function Srgba.rgb_u8(r,g,b) end + +---@param red number +--- Red channel. [0.0, 1.0] +---@param green number +--- Green channel. [0.0, 1.0] +---@param blue number +--- Blue channel. [0.0, 1.0] +---@return Srgba +function Srgba.rgb(red,green,blue) end + +---@param _self Srgba +---@return Srgba +function Srgba.clone(_self) end + +---@param red number +--- Red channel. [0.0, 1.0] +---@param green number +--- Green channel. [0.0, 1.0] +---@param blue number +--- Blue channel. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Srgba +function Srgba.new(red,green,blue,alpha) end + +---@param _self Srgba +---@return string +function Srgba.to_hex(_self) end + +---@param _self Srgba +---@param other Srgba +---@return boolean +function Srgba.__eq(_self,other) end + +---@param _self Srgba +---@param other Srgba +---@return boolean +function Srgba.eq(_self,other) end + +---@param value number +---@return number +function Srgba.gamma_function(value) end + +---@param _self Srgba +---@param green number +---@return Srgba +function Srgba.with_green(_self,green) end + +---@param _self Srgba +---@param rhs Srgba +---@return Srgba +function Srgba.add(_self,rhs) end + +---@param _self Srgba +---@param blue number +---@return Srgba +function Srgba.with_blue(_self,blue) end + + + +---@class Xyza : ReflectReference +--- [CIE 1931](https://en.wikipedia.org/wiki/CIE_1931_color_space) color space, also known as XYZ, with an alpha channel. +---
+---
+---@field x ? number +---@field y ? number +---@field z ? number +---@field alpha ? number +---@operator sub(Xyza): Xyza +---@operator div(number): Xyza +---@operator mul(number): Xyza +---@operator unm: Xyza +---@operator add(Xyza): Xyza +Xyza = {} + +---@param _self Xyza +---@param rhs Xyza +---@return Xyza +function Xyza.sub(_self,rhs) end + +---@param _self Xyza +---@return Xyza +function Xyza.clone(_self) end + +---@param _self Xyza +---@param rhs number +---@return Xyza +function Xyza.div(_self,rhs) end + +---@param x number +--- x-axis. [0.0, 1.0] +---@param y number +--- y-axis. [0.0, 1.0] +---@param z number +--- z-axis. [0.0, 1.0] +---@param alpha number +--- Alpha channel. [0.0, 1.0] +---@return Xyza +function Xyza.new(x,y,z,alpha) end + +---@param x number +--- x-axis. [0.0, 1.0] +---@param y number +--- y-axis. [0.0, 1.0] +---@param z number +--- z-axis. [0.0, 1.0] +---@return Xyza +function Xyza.xyz(x,y,z) end + +---@param _self Xyza +---@param y number +---@return Xyza +function Xyza.with_y(_self,y) end + +---@param _self Xyza +---@param other Xyza +---@return boolean +function Xyza.__eq(_self,other) end + +---@param _self Xyza +---@param other Xyza +---@return boolean +function Xyza.eq(_self,other) end + +---@param _self Xyza +---@param rhs number +---@return Xyza +function Xyza.mul(_self,rhs) end + +---@param _self Xyza +---@param x number +---@return Xyza +function Xyza.with_x(_self,x) end + +---@param _self Xyza +---@return Xyza +function Xyza.neg(_self) end + +---@param _self Xyza +---@param z number +---@return Xyza +function Xyza.with_z(_self,z) end + +---@param _self Xyza +---@param rhs Xyza +---@return Xyza +function Xyza.add(_self,rhs) end + + + +---@class OrderIndependentTransparencySettings : ReflectReference +--- Used to identify which camera will use OIT to render transparent meshes +--- and to configure OIT. +---@field layer_count ? integer +---@field alpha_threshold ? number +OrderIndependentTransparencySettings = {} + +---@param _self OrderIndependentTransparencySettings +---@return OrderIndependentTransparencySettings +function OrderIndependentTransparencySettings.clone(_self) end + + + +---@class DeferredPrepassDoubleBuffer : ReflectReference +--- Allows querying the previous frame's [`DeferredPrepass`]. +DeferredPrepassDoubleBuffer = {} + +---@param _self DeferredPrepassDoubleBuffer +---@return DeferredPrepassDoubleBuffer +function DeferredPrepassDoubleBuffer.clone(_self) end + + + +---@class DepthPrepass : ReflectReference +--- If added to a [`bevy_camera::Camera3d`] then depth values will be copied to a separate texture available to the main pass. +DepthPrepass = {} + +---@param _self DepthPrepass +---@return DepthPrepass +function DepthPrepass.clone(_self) end + + + +---@class DepthPrepassDoubleBuffer : ReflectReference +--- Allows querying the previous frame's [`DepthPrepass`]. +DepthPrepassDoubleBuffer = {} + +---@param _self DepthPrepassDoubleBuffer +---@return DepthPrepassDoubleBuffer +function DepthPrepassDoubleBuffer.clone(_self) end + + + +---@class MotionVectorPrepass : ReflectReference +--- If added to a [`bevy_camera::Camera3d`] then screen space motion vectors will be copied to a separate texture available to the main pass. +--- +--- Motion vectors are stored in the range -1,1, with +x right and +y down. +--- A value of (1.0,1.0) indicates a pixel moved from the top left corner to the bottom right corner of the screen. +MotionVectorPrepass = {} + +---@param _self MotionVectorPrepass +---@return MotionVectorPrepass +function MotionVectorPrepass.clone(_self) end + + + +---@class NormalPrepass : ReflectReference +--- If added to a [`bevy_camera::Camera3d`] then vertex world normals will be copied to a separate texture available to the main pass. +--- Normals will have normal map textures already applied. +NormalPrepass = {} + +---@param _self NormalPrepass +---@return NormalPrepass +function NormalPrepass.clone(_self) end + + + +---@class Skybox : ReflectReference +--- Adds a skybox to a 3D camera, based on a cubemap texture. +--- +--- Note that this component does not (currently) affect the scene's lighting. +--- To do so, use `EnvironmentMapLight` alongside this component. +--- +--- See also . +---@field image ? any +---@field brightness ? number +---@field rotation ? Quat +Skybox = {} + +---@param _self Skybox +---@return Skybox +function Skybox.clone(_self) end + + + +---@class DebandDither : ReflectReference +--- Enables a debanding shader that applies dithering to mitigate color banding in the final image for a given [`Camera`] entity. +DebandDither = {} + +---@param _self DebandDither +---@param other DebandDither +---@return boolean +function DebandDither.__eq(_self,other) end + +---@param _self DebandDither +---@param other DebandDither +---@return boolean +function DebandDither.eq(_self,other) end + +---@param _self DebandDither +---@return DebandDither +function DebandDither.clone(_self) end + +---@param _self DebandDither +---@return nil +function DebandDither.assert_receiver_is_total_eq(_self) end + + + +---@class Tonemapping : ReflectReference +--- Optionally enables a tonemapping shader that attempts to map linear input stimulus into a perceptually uniform image for a given [`Camera`] entity. +Tonemapping = {} + +---@param _self Tonemapping +---@return Tonemapping +function Tonemapping.clone(_self) end + +---@param _self Tonemapping +---@return nil +function Tonemapping.assert_receiver_is_total_eq(_self) end + +---@param _self Tonemapping +---@param other Tonemapping +---@return boolean +function Tonemapping.__eq(_self,other) end + +---@param _self Tonemapping +---@param other Tonemapping +---@return boolean +function Tonemapping.eq(_self,other) end + +---@param _self Tonemapping +---@return boolean +function Tonemapping.is_enabled(_self) end + + + +---@class ComponentTicks : ReflectReference +--- Records when a component or resource was added and when it was last mutably dereferenced (or added). +---@field added ? Tick +---@field changed ? Tick +ComponentTicks = {} + +---@param change_tick Tick +---@return ComponentTicks +function ComponentTicks.new(change_tick) end + +---@param _self ComponentTicks +---@return ComponentTicks +function ComponentTicks.clone(_self) end + +---@param _self ComponentTicks +---@param last_run Tick +---@param this_run Tick +---@return boolean +function ComponentTicks.is_changed(_self,last_run,this_run) end + +---@param _self ComponentTicks +---@param change_tick Tick +---@return nil +function ComponentTicks.set_changed(_self,change_tick) end + +---@param _self ComponentTicks +---@param last_run Tick +---@param this_run Tick +---@return boolean +function ComponentTicks.is_added(_self,last_run,this_run) end + + + +---@class Tick : ReflectReference +--- A value that tracks when a system ran relative to other systems. +--- This is used to power change detection. +--- +--- *Note* that a system that hasn't been run yet has a `Tick` of 0. +---@field tick ? integer +Tick = {} + +---@param _self Tick +---@return nil +function Tick.assert_receiver_is_total_eq(_self) end + +---@param _self Tick +---@param last_run Tick +---@param this_run Tick +---@return boolean +function Tick.is_newer_than(_self,last_run,this_run) end + +---@param _self Tick +---@return integer +function Tick.get(_self) end + +---@param _self Tick +---@param tick integer +---@return nil +function Tick.set(_self,tick) end + +---@param tick integer +---@return Tick +function Tick.new(tick) end + +---@param _self Tick +---@return Tick +function Tick.clone(_self) end + +---@param _self Tick +---@param other Tick +---@return boolean +function Tick.__eq(_self,other) end + +---@param _self Tick +---@param other Tick +---@return boolean +function Tick.eq(_self,other) end + + + +---@class ComponentId : ReflectReference +--- A value which uniquely identifies the type of a [`Component`] or [`Resource`] within a +--- [`World`](crate::world::World). +--- +--- Each time a new `Component` type is registered within a `World` using +--- e.g. [`World::register_component`](crate::world::World::register_component) or +--- [`World::register_component_with_descriptor`](crate::world::World::register_component_with_descriptor) +--- or a Resource with e.g. [`World::init_resource`](crate::world::World::init_resource), +--- a corresponding `ComponentId` is created to track it. +--- +--- While the distinction between `ComponentId` and [`TypeId`] may seem superficial, breaking them +--- into two separate but related concepts allows components to exist outside of Rust's type system. +--- Each Rust type registered as a `Component` will have a corresponding `ComponentId`, but additional +--- `ComponentId`s may exist in a `World` to track components which cannot be +--- represented as Rust types for scripting or other advanced use-cases. +--- +--- A `ComponentId` is tightly coupled to its parent `World`. Attempting to use a `ComponentId` from +--- one `World` to access the metadata of a `Component` in a different `World` is undefined behavior +--- and must not be attempted. +--- +--- Given a type `T` which implements [`Component`], the `ComponentId` for `T` can be retrieved +--- from a `World` using [`World::component_id()`](crate::world::World::component_id) or via [`Components::component_id()`]. +--- Access to the `ComponentId` for a [`Resource`] is available via [`Components::resource_id()`]. +---@field [1] integer +ComponentId = {} + +---@param _self ComponentId +---@return integer +function ComponentId.index(_self) end + +---@param _self ComponentId +---@param other ComponentId +---@return boolean +function ComponentId.__eq(_self,other) end + +---@param _self ComponentId +---@param other ComponentId +---@return boolean +function ComponentId.eq(_self,other) end + +---@param _self ComponentId +---@return ComponentId +function ComponentId.clone(_self) end + +---@param index integer +---@return ComponentId +function ComponentId.new(index) end + +---@param _self ComponentId +---@return nil +function ComponentId.assert_receiver_is_total_eq(_self) end + + + +---@class Entity : ReflectReference +--- Unique identifier for an entity in a [`World`]. +--- Note that this is just an id, not the entity itself. +--- Further, the entity this id refers to may no longer exist in the [`World`]. +--- For more information about entities, their ids, and how to use them, see the module [docs](crate::entity). +--- +--- # Aliasing +--- +--- Once an entity is despawned, it ceases to exist. +--- However, its [`Entity`] id is still present, and may still be contained in some data. +--- This becomes problematic because it is possible for a later entity to be spawned at the exact same id! +--- If this happens, which is rare but very possible, it will be logged. +--- +--- Aliasing can happen without warning. +--- Holding onto a [`Entity`] id corresponding to an entity well after that entity was despawned can cause un-intuitive behavior for both ordering, and comparing in general. +--- To prevent these bugs, it is generally best practice to stop holding an [`Entity`] or [`EntityGeneration`] value as soon as you know it has been despawned. +--- If you must do otherwise, do not assume the [`Entity`] id corresponds to the same entity it originally did. +--- See [`EntityGeneration`]'s docs for more information about aliasing and why it occurs. +--- +--- # Stability warning +--- For all intents and purposes, `Entity` should be treated as an opaque identifier. The internal bit +--- representation is liable to change from release to release as are the behaviors or performance +--- characteristics of any of its trait implementations (i.e. `Ord`, `Hash`, etc.). This means that changes in +--- `Entity`'s representation, though made readable through various functions on the type, are not considered +--- breaking changes under [SemVer]. +--- +--- In particular, directly serializing with `Serialize` and `Deserialize` make zero guarantee of long +--- term wire format compatibility. Changes in behavior will cause serialized `Entity` values persisted +--- to long term storage (i.e. disk, databases, etc.) will fail to deserialize upon being updated. +--- +--- # Usage +--- +--- This data type is returned by iterating a `Query` that has `Entity` as part of its query fetch type parameter ([learn more]). +--- It can also be obtained by calling [`EntityCommands::id`] or [`EntityWorldMut::id`]. +--- +--- ``` +--- # use bevy_ecs::prelude::*; +--- # #[derive(Component)] +--- # struct SomeComponent; +--- fn setup(mut commands: Commands) { +--- // Calling `spawn` returns `EntityCommands`. +--- let entity = commands.spawn(SomeComponent).id(); +--- } +--- +--- fn exclusive_system(world: &mut World) { +--- // Calling `spawn` returns `EntityWorldMut`. +--- let entity = world.spawn(SomeComponent).id(); +--- } +--- # +--- # bevy_ecs::system::assert_is_system(setup); +--- # bevy_ecs::system::assert_is_system(exclusive_system); +--- ``` +--- +--- It can be used to refer to a specific entity to apply [`EntityCommands`], or to call [`Query::get`] (or similar methods) to access its components. +--- +--- ``` +--- # use bevy_ecs::prelude::*; +--- # +--- # #[derive(Component)] +--- # struct Expired; +--- # +--- fn dispose_expired_food(mut commands: Commands, query: Query>) { +--- for food_entity in &query { +--- commands.entity(food_entity).despawn(); +--- } +--- } +--- # +--- # bevy_ecs::system::assert_is_system(dispose_expired_food); +--- ``` +--- +--- [learn more]: crate::system::Query#entity-id-access +--- [`EntityCommands::id`]: crate::system::EntityCommands::id +--- [`EntityWorldMut::id`]: crate::world::EntityWorldMut::id +--- [`EntityCommands`]: crate::system::EntityCommands +--- [`Query::get`]: crate::system::Query::get +--- [`World`]: crate::world::World +--- [SemVer]: https://semver.org/ +Entity = {} + +---@param _self Entity +---@return integer +function Entity.to_bits(_self) end + +---@param _self Entity +---@param other Entity +---@return boolean +function Entity.__eq(_self,other) end + +---@param _self Entity +---@param other Entity +---@return boolean +function Entity.eq(_self,other) end + +---@param _self Entity +---@return integer +function Entity.index_u32(_self) end + +---@param _self Entity +---@return EntityGeneration +function Entity.generation(_self) end + +---@param bits integer +---@return Entity +function Entity.from_bits(bits) end + +---@param index EntityIndex +---@return Entity +function Entity.from_index(index) end + +---@param _self Entity +---@return Entity +function Entity.clone(_self) end + +---@param _self Entity +---@return EntityIndex +function Entity.index(_self) end + +---@param index EntityIndex +---@param generation EntityGeneration +---@return Entity +function Entity.from_index_and_generation(index,generation) end + + + +---@class EntityGeneration : ReflectReference +--- This tracks different versions or generations of an [`EntityIndex`]. +--- Importantly, this can wrap, meaning each generation is not necessarily unique per [`EntityIndex`]. +--- +--- This should be treated as a opaque identifier, and its internal representation may be subject to change. +--- +--- # Aliasing +--- +--- Internally [`EntityGeneration`] wraps a `u32`, so it can't represent *every* possible generation. +--- Eventually, generations can (and do) wrap or alias. +--- This can cause [`Entity`] and [`EntityGeneration`] values to be equal while still referring to different conceptual entities. +--- This can cause some surprising behavior: +--- +--- ``` +--- # use bevy_ecs::entity::EntityGeneration; +--- let (aliased, did_alias) = EntityGeneration::FIRST.after_versions(1u32 << 31).after_versions_and_could_alias(1u32 << 31); +--- assert!(did_alias); +--- assert!(EntityGeneration::FIRST == aliased); +--- ``` +--- +--- This can cause some unintended side effects. +--- See [`Entity`] docs for practical concerns and how to minimize any risks. +EntityGeneration = {} + +---@param _self EntityGeneration +---@return nil +function EntityGeneration.assert_receiver_is_total_eq(_self) end + +---@param _self EntityGeneration +---@param other EntityGeneration +---@return boolean +function EntityGeneration.__eq(_self,other) end + +---@param _self EntityGeneration +---@param other EntityGeneration +---@return boolean +function EntityGeneration.eq(_self,other) end + +---@param _self EntityGeneration +---@return EntityGeneration +function EntityGeneration.clone(_self) end + +---@param _self EntityGeneration +---@return integer +function EntityGeneration.to_bits(_self) end + +---@param _self EntityGeneration +---@param versions integer +---@return EntityGeneration +function EntityGeneration.after_versions(_self,versions) end + +---@param bits integer +---@return EntityGeneration +function EntityGeneration.from_bits(bits) end + + + +---@class EntityIndex : ReflectReference +--- This represents the index of an [`Entity`] within the [`Entities`] array. +--- This is a lighter weight version of [`Entity`]. +--- +--- This is a unique identifier for an entity in the world. +--- This differs from [`Entity`] in that [`Entity`] is unique for all entities total (unless the [`Entity::generation`] wraps), +--- but this is only unique for entities that are active. +--- +--- This can be used over [`Entity`] to improve performance in some cases, +--- but improper use can cause this to identify a different entity than intended. +--- Use with caution. +EntityIndex = {} + +---@param _self EntityIndex +---@param other EntityIndex +---@return boolean +function EntityIndex.__eq(_self,other) end + +---@param _self EntityIndex +---@param other EntityIndex +---@return boolean +function EntityIndex.eq(_self,other) end + +---@param _self EntityIndex +---@return integer +function EntityIndex.index(_self) end + +---@param _self EntityIndex +---@return nil +function EntityIndex.assert_receiver_is_total_eq(_self) end + +---@param _self EntityIndex +---@return EntityIndex +function EntityIndex.clone(_self) end + + + +---@class EntityHash : ReflectReference +--- A [`BuildHasher`] that results in a [`EntityHasher`]. +EntityHash = {} + +---@param _self EntityHash +---@return EntityHash +function EntityHash.clone(_self) end + + + +---@class EntityHashSet : ReflectReference +--- A [`HashSet`] pre-configured to use [`EntityHash`] hashing. +---@field [1] any +---@operator len: integer +EntityHashSet = {} + +---@param _self EntityHashSet +---@return nil +function EntityHashSet.assert_receiver_is_total_eq(_self) end + +---@param _self EntityHashSet +---@return EntityHashSet +function EntityHashSet.clone(_self) end + +---@param n integer +---@return EntityHashSet +function EntityHashSet.with_capacity(n) end + +---@param _self EntityHashSet +---@return integer +function EntityHashSet.len(_self) end + +---@return EntityHashSet +function EntityHashSet.new() end + +---@param _self EntityHashSet +---@param other EntityHashSet +---@return boolean +function EntityHashSet.__eq(_self,other) end + +---@param _self EntityHashSet +---@param other EntityHashSet +---@return boolean +function EntityHashSet.eq(_self,other) end + +---@param _self EntityHashSet +---@return boolean +function EntityHashSet.is_empty(_self) end + + + +---@class EntityIndexSet : ReflectReference +--- An [`IndexSet`] pre-configured to use [`EntityHash`] hashing. +---@field [1] any +EntityIndexSet = {} + +---@param n integer +---@return EntityIndexSet +function EntityIndexSet.with_capacity(n) end + +---@param _self EntityIndexSet +---@param other EntityIndexSet +---@return boolean +function EntityIndexSet.__eq(_self,other) end + +---@param _self EntityIndexSet +---@param other EntityIndexSet +---@return boolean +function EntityIndexSet.eq(_self,other) end + +---@return EntityIndexSet +function EntityIndexSet.new() end + +---@param _self EntityIndexSet +---@return EntityIndexSet +function EntityIndexSet.clone(_self) end + + + +---@class DefaultQueryFilters : ReflectReference +--- Default query filters work by excluding entities with certain components from most queries. +--- +--- If a query does not explicitly mention a given disabling component, it will not include entities with that component. +--- To be more precise, this checks if the query's [`FilteredAccess`] contains the component, +--- and if it does not, adds a [`Without`](crate::prelude::Without) filter for that component to the query. +--- +--- [`Allow`](crate::query::Allow) and [`Has`](crate::prelude::Has) can be used to include entities +--- with and without the disabling component. +--- [`Allow`](crate::query::Allow) is a [`QueryFilter`](crate::query::QueryFilter) and will simply change +--- the list of shown entities, while [`Has`](crate::prelude::Has) is a [`QueryData`](crate::query::QueryData) +--- and will allow you to see if each entity has the disabling component or not. +--- +--- This resource is initialized in the [`World`] whenever a new world is created, +--- with the [`Disabled`] component as a disabling component. +--- +--- Note that you can remove default query filters by overwriting the [`DefaultQueryFilters`] resource. +--- This can be useful as a last resort escape hatch, but is liable to break compatibility with other libraries. +--- +--- See the [module docs](crate::entity_disabling) for more info. +--- +--- +--- # Warning +--- +--- Default query filters are a global setting that affects all queries in the [`World`], +--- and incur a small performance cost for each query. +--- +--- They can cause significant interoperability issues within the ecosystem, +--- as users must be aware of each disabling component in use. +--- +--- Think carefully about whether you need to use a new disabling component, +--- and clearly communicate their presence in any libraries you publish. +---@field disabling ? ComponentId[] +DefaultQueryFilters = {} + +---@return DefaultQueryFilters +function DefaultQueryFilters.empty() end + +---@param _self DefaultQueryFilters +---@param component_id ComponentId +---@return nil +function DefaultQueryFilters.register_disabling_component(_self,component_id) end + + + +---@class Disabled : ReflectReference +--- A marker component for disabled entities. +--- +--- Semantically, this component is used to mark entities that are temporarily disabled (typically for gameplay reasons), +--- but will likely be re-enabled at some point. +--- +--- Like all disabling components, this only disables the entity itself, +--- not its children or other entities that reference it. +--- To disable an entire tree of entities, use [`EntityCommands::insert_recursive`](crate::prelude::EntityCommands::insert_recursive). +--- +--- Every [`World`] has a default query filter that excludes entities with this component, +--- registered in the [`DefaultQueryFilters`] resource. +--- See [the module docs] for more info. +--- +--- [the module docs]: crate::entity_disabling +Disabled = {} + +---@param _self Disabled +---@return Disabled +function Disabled.clone(_self) end + + + +---@class ChildOf : ReflectReference +--- Stores the parent entity of this child entity with this component. +--- +--- This is a [`Relationship`] component, and creates the canonical +--- "parent / child" hierarchy. This is the "source of truth" component, and it pairs with +--- the [`Children`] [`RelationshipTarget`](crate::relationship::RelationshipTarget). +--- +--- This relationship should be used for things like: +--- +--- 1. Organizing entities in a scene +--- 2. Propagating configuration or data inherited from a parent, such as "visibility" or "world-space global transforms". +--- 3. Ensuring a hierarchy is despawned when an entity is despawned. +--- +--- [`ChildOf`] contains a single "target" [`Entity`]. When [`ChildOf`] is inserted on a "source" entity, +--- the "target" entity will automatically (and immediately, via a component hook) have a [`Children`] +--- component inserted, and the "source" entity will be added to that [`Children`] instance. +--- +--- If the [`ChildOf`] component is replaced with a different "target" entity, the old target's [`Children`] +--- will be automatically (and immediately, via a component hook) be updated to reflect that change. +--- +--- Likewise, when the [`ChildOf`] component is removed, the "source" entity will be removed from the old +--- target's [`Children`]. If this results in [`Children`] being empty, [`Children`] will be automatically removed. +--- +--- When a parent is despawned, all children (and their descendants) will _also_ be despawned. +--- +--- You can create parent-child relationships in a variety of ways. The most direct way is to insert a [`ChildOf`] component: +--- +--- ``` +--- # use bevy_ecs::prelude::*; +--- # let mut world = World::new(); +--- let root = world.spawn_empty().id(); +--- let child1 = world.spawn(ChildOf(root)).id(); +--- let child2 = world.spawn(ChildOf(root)).id(); +--- let grandchild = world.spawn(ChildOf(child1)).id(); +--- +--- assert_eq!(&**world.entity(root).get::().unwrap(), &[child1, child2]); +--- assert_eq!(&**world.entity(child1).get::().unwrap(), &[grandchild]); +--- +--- world.entity_mut(child2).remove::(); +--- assert_eq!(&**world.entity(root).get::().unwrap(), &[child1]); +--- +--- world.entity_mut(root).despawn(); +--- assert!(world.get_entity(root).is_err()); +--- assert!(world.get_entity(child1).is_err()); +--- assert!(world.get_entity(grandchild).is_err()); +--- ``` +--- +--- However if you are spawning many children, you might want to use the [`EntityWorldMut::with_children`] helper instead: +--- +--- ``` +--- # use bevy_ecs::prelude::*; +--- # let mut world = World::new(); +--- let mut child1 = Entity::PLACEHOLDER; +--- let mut child2 = Entity::PLACEHOLDER; +--- let mut grandchild = Entity::PLACEHOLDER; +--- let root = world.spawn_empty().with_children(|p| { +--- child1 = p.spawn_empty().with_children(|p| { +--- grandchild = p.spawn_empty().id(); +--- }).id(); +--- child2 = p.spawn_empty().id(); +--- }).id(); +--- +--- assert_eq!(&**world.entity(root).get::().unwrap(), &[child1, child2]); +--- assert_eq!(&**world.entity(child1).get::().unwrap(), &[grandchild]); +--- ``` +--- +--- [`Relationship`]: crate::relationship::Relationship +---@field [1] Entity +ChildOf = {} + +---@param _self ChildOf +---@return Entity +function ChildOf.parent(_self) end + +---@param _self ChildOf +---@return nil +function ChildOf.assert_receiver_is_total_eq(_self) end + +---@param _self ChildOf +---@param other ChildOf +---@return boolean +function ChildOf.__eq(_self,other) end + +---@param _self ChildOf +---@param other ChildOf +---@return boolean +function ChildOf.eq(_self,other) end + +---@param _self ChildOf +---@return ChildOf +function ChildOf.clone(_self) end + + + +---@class Children : ReflectReference +--- Tracks which entities are children of this parent entity. +--- +--- A [`RelationshipTarget`] collection component that is populated +--- with entities that "target" this entity with the [`ChildOf`] [`Relationship`] component. +--- +--- Together, these components form the "canonical parent-child hierarchy". See the [`ChildOf`] component for the full +--- description of this relationship and instructions on how to use it. +--- +--- # Usage +--- +--- Like all [`RelationshipTarget`] components, this data should not be directly manipulated to avoid desynchronization. +--- Instead, modify the [`ChildOf`] components on the "source" entities. +--- +--- To access the children of an entity, you can iterate over the [`Children`] component, +--- using the [`IntoIterator`] trait. +--- For more complex access patterns, see the [`RelationshipTarget`] trait. +--- +--- [`Relationship`]: crate::relationship::Relationship +--- [`RelationshipTarget`]: crate::relationship::RelationshipTarget +---@field [1] Entity[] +Children = {} + +---@param _self Children +---@param a_index integer +---@param b_index integer +---@return nil +function Children.swap(_self,a_index,b_index) end + +---@param _self Children +---@return nil +function Children.assert_receiver_is_total_eq(_self) end + +---@param _self Children +---@param other Children +---@return boolean +function Children.__eq(_self,other) end + +---@param _self Children +---@param other Children +---@return boolean +function Children.eq(_self,other) end + + + +---@class Add : ReflectReference +--- Trigger emitted when a component is inserted onto an entity that does not already have that +--- component. Runs before `Insert`. +--- See [`ComponentHooks::on_add`](`crate::lifecycle::ComponentHooks::on_add`) for more information. +---@field entity ? Entity +Add = {} + +---@param _self Add +---@return Add +function Add.clone(_self) end + + + +---@class Despawn : ReflectReference +--- [`EntityEvent`] emitted for each component on an entity when it is despawned. +--- See [`ComponentHooks::on_despawn`](`crate::lifecycle::ComponentHooks::on_despawn`) for more information. +---@field entity ? Entity +Despawn = {} + +---@param _self Despawn +---@return Despawn +function Despawn.clone(_self) end + + + +---@class Insert : ReflectReference +--- Trigger emitted when a component is inserted, regardless of whether or not the entity already +--- had that component. Runs after `Add`, if it ran. +--- See [`ComponentHooks::on_insert`](`crate::lifecycle::ComponentHooks::on_insert`) for more information. +---@field entity ? Entity +Insert = {} + +---@param _self Insert +---@return Insert +function Insert.clone(_self) end + + + +---@class Remove : ReflectReference +--- Trigger emitted when a component is removed from an entity, and runs before the component is +--- removed, so you can still access the component data. +--- See [`ComponentHooks::on_remove`](`crate::lifecycle::ComponentHooks::on_remove`) for more information. +---@field entity ? Entity +Remove = {} + +---@param _self Remove +---@return Remove +function Remove.clone(_self) end + + + +---@class RemovedComponentEntity : ReflectReference +--- Wrapper around [`Entity`] for [`RemovedComponents`]. +--- Internally, `RemovedComponents` uses these as an [`Messages`]. +---@field [1] Entity +RemovedComponentEntity = {} + +---@param _self RemovedComponentEntity +---@return RemovedComponentEntity +function RemovedComponentEntity.clone(_self) end + + + +---@class Replace : ReflectReference +--- Trigger emitted when a component is removed from an entity, regardless +--- of whether or not it is later replaced. +--- +--- Runs before the value is replaced, so you can still access the original component data. +--- See [`ComponentHooks::on_replace`](`crate::lifecycle::ComponentHooks::on_replace`) for more information. +---@field entity ? Entity +Replace = {} + +---@param _self Replace +---@return Replace +function Replace.clone(_self) end + + + +---@class Name : ReflectReference +--- Component used to identify an entity. Stores a hash for faster comparisons. +--- +--- The hash is eagerly re-computed upon each update to the name. +--- +--- [`Name`] should not be treated as a globally unique identifier for entities, +--- as multiple entities can have the same name. [`Entity`] should be +--- used instead as the default unique identifier. +---@field hash ? integer +---@field name ? Cow +Name = {} + +---@param _self Name +---@return Name +function Name.clone(_self) end + +---@param _self Name +---@param other Name +---@return boolean +function Name.__eq(_self,other) end + +---@param _self Name +---@param other Name +---@return boolean +function Name.eq(_self,other) end + + + +---@class ButtonState : ReflectReference +--- The current "press" state of an element +ButtonState = {} + +---@param _self ButtonState +---@return ButtonState +function ButtonState.clone(_self) end + +---@param _self ButtonState +---@param other ButtonState +---@return boolean +function ButtonState.__eq(_self,other) end + +---@param _self ButtonState +---@param other ButtonState +---@return boolean +function ButtonState.eq(_self,other) end + +---@param _self ButtonState +---@return boolean +function ButtonState.is_pressed(_self) end + +---@param _self ButtonState +---@return nil +function ButtonState.assert_receiver_is_total_eq(_self) end + + + +---@class AxisSettings : ReflectReference +--- Settings for a [`GamepadAxis`]. +--- +--- It is used inside the [`GamepadSettings`] to define the sensitivity range and +--- threshold for an axis. +--- Values that are higher than `livezone_upperbound` will be rounded up to 1.0. +--- Values that are lower than `livezone_lowerbound` will be rounded down to -1.0. +--- Values that are in-between `deadzone_lowerbound` and `deadzone_upperbound` will be rounded to 0.0. +--- Otherwise, values will be linearly rescaled to fit into the sensitivity range. +--- For example, a value that is one fourth of the way from `deadzone_upperbound` to `livezone_upperbound` will be scaled to 0.25. +--- +--- The valid range is `[-1.0, 1.0]`. +---@field livezone_upperbound ? number +---@field deadzone_upperbound ? number +---@field deadzone_lowerbound ? number +---@field livezone_lowerbound ? number +---@field threshold ? number +AxisSettings = {} + +---@param _self AxisSettings +---@return number +function AxisSettings.threshold(_self) end + +---@param _self AxisSettings +---@param value number +---@return number +function AxisSettings.set_livezone_upperbound(_self,value) end + +---@param _self AxisSettings +---@return number +function AxisSettings.deadzone_lowerbound(_self) end + +---@param _self AxisSettings +---@param value number +---@return number +function AxisSettings.set_threshold(_self,value) end + +---@param _self AxisSettings +---@param value number +---@return number +function AxisSettings.set_deadzone_lowerbound(_self,value) end + +---@param _self AxisSettings +---@return number +function AxisSettings.livezone_lowerbound(_self) end + +---@param _self AxisSettings +---@return number +function AxisSettings.livezone_upperbound(_self) end + +---@param _self AxisSettings +---@return AxisSettings +function AxisSettings.clone(_self) end + +---@param _self AxisSettings +---@param value number +---@return number +function AxisSettings.set_deadzone_upperbound(_self,value) end + +---@param _self AxisSettings +---@param other AxisSettings +---@return boolean +function AxisSettings.__eq(_self,other) end + +---@param _self AxisSettings +---@param other AxisSettings +---@return boolean +function AxisSettings.eq(_self,other) end + +---@param _self AxisSettings +---@param raw_value number +---@return number +function AxisSettings.clamp(_self,raw_value) end + +---@param _self AxisSettings +---@return number +function AxisSettings.deadzone_upperbound(_self) end + +---@param _self AxisSettings +---@param value number +---@return number +function AxisSettings.set_livezone_lowerbound(_self,value) end + + + +---@class ButtonAxisSettings : ReflectReference +--- Settings for a [`GamepadButton`]. +--- +--- It is used inside the [`GamepadSettings`] to define the sensitivity range and +--- threshold for a button axis. +--- +--- ## Logic +--- +--- - Values that are higher than or equal to `high` will be rounded to 1.0. +--- - Values that are lower than or equal to `low` will be rounded to 0.0. +--- - Otherwise, values will not be rounded. +--- +--- The valid range is from 0.0 to 1.0, inclusive. +---@field high ? number +---@field low ? number +---@field threshold ? number +ButtonAxisSettings = {} + +---@param _self ButtonAxisSettings +---@return ButtonAxisSettings +function ButtonAxisSettings.clone(_self) end + + + +---@class ButtonSettings : ReflectReference +--- Manages settings for gamepad buttons. +--- +--- It is used inside [`GamepadSettings`] to define the threshold for a [`GamepadButton`] +--- to be considered pressed or released. A button is considered pressed if the `press_threshold` +--- value is surpassed and released if the `release_threshold` value is undercut. +--- +--- Allowed values: `0.0 <= ``release_threshold`` <= ``press_threshold`` <= 1.0` +---@field press_threshold ? number +---@field release_threshold ? number +ButtonSettings = {} + +---@param _self ButtonSettings +---@param value number +---@return number +function ButtonSettings.set_press_threshold(_self,value) end + +---@param _self ButtonSettings +---@return number +function ButtonSettings.release_threshold(_self) end + +---@param _self ButtonSettings +---@param other ButtonSettings +---@return boolean +function ButtonSettings.__eq(_self,other) end + +---@param _self ButtonSettings +---@param other ButtonSettings +---@return boolean +function ButtonSettings.eq(_self,other) end + +---@param _self ButtonSettings +---@param value number +---@return boolean +function ButtonSettings.is_released(_self,value) end + +---@param _self ButtonSettings +---@return number +function ButtonSettings.press_threshold(_self) end + +---@param _self ButtonSettings +---@return ButtonSettings +function ButtonSettings.clone(_self) end + +---@param _self ButtonSettings +---@param value number +---@return number +function ButtonSettings.set_release_threshold(_self,value) end + +---@param _self ButtonSettings +---@param value number +---@return boolean +function ButtonSettings.is_pressed(_self,value) end + + + +---@class Gamepad : ReflectReference +--- Stores a connected gamepad's metadata such as the name and its [`GamepadButton`] and [`GamepadAxis`]. +--- +--- An entity with this component is spawned automatically after [`GamepadConnectionEvent`] +--- and updated by [`gamepad_event_processing_system`]. +--- +--- See also [`GamepadSettings`] for configuration. +--- +--- # Examples +--- +--- ``` +--- # use bevy_input::gamepad::{Gamepad, GamepadAxis, GamepadButton}; +--- # use bevy_ecs::system::Query; +--- # use bevy_ecs::name::Name; +--- # +--- fn gamepad_usage_system(gamepads: Query<(&Name, &Gamepad)>) { +--- for (name, gamepad) in &gamepads { +--- println!("{name}"); +--- +--- if gamepad.just_pressed(GamepadButton::North) { +--- println!("{} just pressed North", name) +--- } +--- +--- if let Some(left_stick_x) = gamepad.get(GamepadAxis::LeftStickX) { +--- println!("left stick X: {}", left_stick_x) +--- } +--- } +--- } +--- ``` +---@field vendor_id ? integer | nil +---@field product_id ? integer | nil +---@field digital ? any +---@field analog ? any +Gamepad = {} + +---@param _self Gamepad +---@param button_type GamepadButton +---@return boolean +function Gamepad.just_released(_self,button_type) end + +---@param _self Gamepad +---@return Vec2 +function Gamepad.right_stick(_self) end + +---@param _self Gamepad +---@return integer | nil +function Gamepad.vendor_id(_self) end + +---@param _self Gamepad +---@return integer | nil +function Gamepad.product_id(_self) end + +---@param _self Gamepad +---@param button_type GamepadButton +---@return boolean +function Gamepad.pressed(_self,button_type) end + +---@param _self Gamepad +---@param button_type GamepadButton +---@return boolean +function Gamepad.just_pressed(_self,button_type) end + +---@param _self Gamepad +---@return Vec2 +function Gamepad.left_stick(_self) end + +---@param _self Gamepad +---@return Vec2 +function Gamepad.dpad(_self) end + + + +---@class GamepadAxis : ReflectReference +--- Represents gamepad input types that are mapped in the range [-1.0, 1.0]. +--- +--- ## Usage +--- +--- This is used to determine which axis has changed its value when receiving a +--- gamepad axis event. It is also used in the [`Gamepad`] component. +GamepadAxis = {} + +---@param _self GamepadAxis +---@return nil +function GamepadAxis.assert_receiver_is_total_eq(_self) end + +---@param _self GamepadAxis +---@param other GamepadAxis +---@return boolean +function GamepadAxis.__eq(_self,other) end + +---@param _self GamepadAxis +---@param other GamepadAxis +---@return boolean +function GamepadAxis.eq(_self,other) end + +---@param _self GamepadAxis +---@return GamepadAxis +function GamepadAxis.clone(_self) end + + + +---@class GamepadAxisChangedEvent : ReflectReference +--- [`GamepadAxis`] event triggered by an analog state change. +---@field entity ? Entity +---@field axis ? GamepadAxis +---@field value ? number +GamepadAxisChangedEvent = {} + +---@param _self GamepadAxisChangedEvent +---@return GamepadAxisChangedEvent +function GamepadAxisChangedEvent.clone(_self) end + +---@param entity Entity +---@param axis GamepadAxis +---@param value number +---@return GamepadAxisChangedEvent +function GamepadAxisChangedEvent.new(entity,axis,value) end + +---@param _self GamepadAxisChangedEvent +---@param other GamepadAxisChangedEvent +---@return boolean +function GamepadAxisChangedEvent.__eq(_self,other) end + +---@param _self GamepadAxisChangedEvent +---@param other GamepadAxisChangedEvent +---@return boolean +function GamepadAxisChangedEvent.eq(_self,other) end + + + +---@class GamepadButton : ReflectReference +--- Represents gamepad input types that are mapped in the range [0.0, 1.0]. +--- +--- ## Usage +--- +--- This is used to determine which button has changed its value when receiving gamepad button events. +--- It is also used in the [`Gamepad`] component. +GamepadButton = {} + +---@param _self GamepadButton +---@param other GamepadButton +---@return boolean +function GamepadButton.__eq(_self,other) end + +---@param _self GamepadButton +---@param other GamepadButton +---@return boolean +function GamepadButton.eq(_self,other) end + +---@param _self GamepadButton +---@return nil +function GamepadButton.assert_receiver_is_total_eq(_self) end + +---@param _self GamepadButton +---@return GamepadButton +function GamepadButton.clone(_self) end + + + +---@class GamepadButtonChangedEvent : ReflectReference +--- [`GamepadButton`] event triggered by an analog state change. +---@field entity ? Entity +---@field button ? GamepadButton +---@field state ? ButtonState +---@field value ? number +GamepadButtonChangedEvent = {} + +---@param entity Entity +---@param button GamepadButton +---@param state ButtonState +---@param value number +---@return GamepadButtonChangedEvent +function GamepadButtonChangedEvent.new(entity,button,state,value) end + +---@param _self GamepadButtonChangedEvent +---@param other GamepadButtonChangedEvent +---@return boolean +function GamepadButtonChangedEvent.__eq(_self,other) end + +---@param _self GamepadButtonChangedEvent +---@param other GamepadButtonChangedEvent +---@return boolean +function GamepadButtonChangedEvent.eq(_self,other) end + +---@param _self GamepadButtonChangedEvent +---@return GamepadButtonChangedEvent +function GamepadButtonChangedEvent.clone(_self) end + + + +---@class GamepadButtonStateChangedEvent : ReflectReference +--- [`GamepadButton`] event triggered by a digital state change. +---@field entity ? Entity +---@field button ? GamepadButton +---@field state ? ButtonState +GamepadButtonStateChangedEvent = {} + +---@param _self GamepadButtonStateChangedEvent +---@param other GamepadButtonStateChangedEvent +---@return boolean +function GamepadButtonStateChangedEvent.__eq(_self,other) end + +---@param _self GamepadButtonStateChangedEvent +---@param other GamepadButtonStateChangedEvent +---@return boolean +function GamepadButtonStateChangedEvent.eq(_self,other) end + +---@param _self GamepadButtonStateChangedEvent +---@return GamepadButtonStateChangedEvent +function GamepadButtonStateChangedEvent.clone(_self) end + +---@param entity Entity +---@param button GamepadButton +---@param state ButtonState +---@return GamepadButtonStateChangedEvent +function GamepadButtonStateChangedEvent.new(entity,button,state) end + +---@param _self GamepadButtonStateChangedEvent +---@return nil +function GamepadButtonStateChangedEvent.assert_receiver_is_total_eq(_self) end + + + +---@class GamepadConnection : ReflectReference +--- The connection status of a gamepad. +GamepadConnection = {} + +---@param _self GamepadConnection +---@return GamepadConnection +function GamepadConnection.clone(_self) end + +---@param _self GamepadConnection +---@param other GamepadConnection +---@return boolean +function GamepadConnection.__eq(_self,other) end + +---@param _self GamepadConnection +---@param other GamepadConnection +---@return boolean +function GamepadConnection.eq(_self,other) end + + + +---@class GamepadConnectionEvent : ReflectReference +--- A [`Gamepad`] connection event. Created when a connection to a gamepad +--- is established and when a gamepad is disconnected. +---@field gamepad ? Entity +---@field connection ? GamepadConnection +GamepadConnectionEvent = {} + +---@param _self GamepadConnectionEvent +---@return boolean +function GamepadConnectionEvent.disconnected(_self) end + +---@param _self GamepadConnectionEvent +---@return GamepadConnectionEvent +function GamepadConnectionEvent.clone(_self) end + +---@param _self GamepadConnectionEvent +---@param other GamepadConnectionEvent +---@return boolean +function GamepadConnectionEvent.__eq(_self,other) end + +---@param _self GamepadConnectionEvent +---@param other GamepadConnectionEvent +---@return boolean +function GamepadConnectionEvent.eq(_self,other) end + +---@param _self GamepadConnectionEvent +---@return boolean +function GamepadConnectionEvent.connected(_self) end + +---@param gamepad Entity +---@param connection GamepadConnection +---@return GamepadConnectionEvent +function GamepadConnectionEvent.new(gamepad,connection) end + + + +---@class GamepadEvent : ReflectReference +--- A gamepad event. +--- +--- This event type is used over the [`GamepadConnectionEvent`], +--- [`GamepadButtonChangedEvent`] and [`GamepadAxisChangedEvent`] when +--- the in-frame relative ordering of events is important. +--- +--- This event is produced by `bevy_input`. +GamepadEvent = {} + +---@param _self GamepadEvent +---@return GamepadEvent +function GamepadEvent.clone(_self) end + +---@param _self GamepadEvent +---@param other GamepadEvent +---@return boolean +function GamepadEvent.__eq(_self,other) end + +---@param _self GamepadEvent +---@param other GamepadEvent +---@return boolean +function GamepadEvent.eq(_self,other) end + + + +---@class GamepadInput : ReflectReference +--- Encapsulation over [`GamepadAxis`] and [`GamepadButton`]. +GamepadInput = {} + +---@param _self GamepadInput +---@return nil +function GamepadInput.assert_receiver_is_total_eq(_self) end + +---@param _self GamepadInput +---@return GamepadInput +function GamepadInput.clone(_self) end + +---@param _self GamepadInput +---@param other GamepadInput +---@return boolean +function GamepadInput.__eq(_self,other) end + +---@param _self GamepadInput +---@param other GamepadInput +---@return boolean +function GamepadInput.eq(_self,other) end + + + +---@class GamepadRumbleIntensity : ReflectReference +--- The intensity at which a gamepad's force-feedback motors may rumble. +---@field strong_motor ? number +---@field weak_motor ? number +GamepadRumbleIntensity = {} + +---@param _self GamepadRumbleIntensity +---@param other GamepadRumbleIntensity +---@return boolean +function GamepadRumbleIntensity.__eq(_self,other) end + +---@param _self GamepadRumbleIntensity +---@param other GamepadRumbleIntensity +---@return boolean +function GamepadRumbleIntensity.eq(_self,other) end + +---@param intensity number +---@return GamepadRumbleIntensity +function GamepadRumbleIntensity.strong_motor(intensity) end + +---@param intensity number +---@return GamepadRumbleIntensity +function GamepadRumbleIntensity.weak_motor(intensity) end + +---@param _self GamepadRumbleIntensity +---@return GamepadRumbleIntensity +function GamepadRumbleIntensity.clone(_self) end + + + +---@class GamepadRumbleRequest : ReflectReference +--- An event that controls force-feedback rumbling of a [`Gamepad`] [`entity`](Entity). +--- +--- # Notes +--- +--- Does nothing if the gamepad or platform does not support rumble. +--- +--- # Example +--- +--- ``` +--- # use bevy_input::gamepad::{Gamepad, GamepadRumbleRequest, GamepadRumbleIntensity}; +--- # use bevy_ecs::prelude::{MessageWriter, Res, Query, Entity, With}; +--- # use core::time::Duration; +--- fn rumble_gamepad_system( +--- mut rumble_requests: MessageWriter, +--- gamepads: Query>, +--- ) { +--- for entity in gamepads.iter() { +--- rumble_requests.write(GamepadRumbleRequest::Add { +--- gamepad: entity, +--- intensity: GamepadRumbleIntensity::MAX, +--- duration: Duration::from_secs_f32(0.5), +--- }); +--- } +--- } +--- ``` +GamepadRumbleRequest = {} + +---@param _self GamepadRumbleRequest +---@return GamepadRumbleRequest +function GamepadRumbleRequest.clone(_self) end + +---@param _self GamepadRumbleRequest +---@return Entity +function GamepadRumbleRequest.gamepad(_self) end + + + +---@class GamepadSettings : ReflectReference +--- Gamepad settings component. +--- +--- ## Usage +--- +--- It is used to create a `bevy` component that stores the settings of [`GamepadButton`] and [`GamepadAxis`] in [`Gamepad`]. +--- If no user defined [`ButtonSettings`], [`AxisSettings`], or [`ButtonAxisSettings`] +--- are defined, the default settings of each are used as a fallback accordingly. +--- +--- ## Note +--- +--- The [`GamepadSettings`] are used to determine when raw gamepad events +--- should register. Events that don't meet the change thresholds defined in [`GamepadSettings`] +--- will not register. To modify these settings, mutate the corresponding component. +---@field default_button_settings ? ButtonSettings +---@field default_axis_settings ? AxisSettings +---@field default_button_axis_settings ? ButtonAxisSettings +---@field button_settings ? table +---@field axis_settings ? table +---@field button_axis_settings ? table +GamepadSettings = {} + +---@param _self GamepadSettings +---@return GamepadSettings +function GamepadSettings.clone(_self) end + + + +---@class RawGamepadAxisChangedEvent : ReflectReference +--- [`GamepadAxis`] changed event unfiltered by [`GamepadSettings`]. +---@field gamepad ? Entity +---@field axis ? GamepadAxis +---@field value ? number +RawGamepadAxisChangedEvent = {} + +---@param _self RawGamepadAxisChangedEvent +---@param other RawGamepadAxisChangedEvent +---@return boolean +function RawGamepadAxisChangedEvent.__eq(_self,other) end + +---@param _self RawGamepadAxisChangedEvent +---@param other RawGamepadAxisChangedEvent +---@return boolean +function RawGamepadAxisChangedEvent.eq(_self,other) end + +---@param gamepad Entity +---@param axis_type GamepadAxis +---@param value number +---@return RawGamepadAxisChangedEvent +function RawGamepadAxisChangedEvent.new(gamepad,axis_type,value) end + +---@param _self RawGamepadAxisChangedEvent +---@return RawGamepadAxisChangedEvent +function RawGamepadAxisChangedEvent.clone(_self) end + + + +---@class RawGamepadButtonChangedEvent : ReflectReference +--- [`GamepadButton`] changed event unfiltered by [`GamepadSettings`]. +---@field gamepad ? Entity +---@field button ? GamepadButton +---@field value ? number +RawGamepadButtonChangedEvent = {} + +---@param _self RawGamepadButtonChangedEvent +---@param other RawGamepadButtonChangedEvent +---@return boolean +function RawGamepadButtonChangedEvent.__eq(_self,other) end + +---@param _self RawGamepadButtonChangedEvent +---@param other RawGamepadButtonChangedEvent +---@return boolean +function RawGamepadButtonChangedEvent.eq(_self,other) end + +---@param _self RawGamepadButtonChangedEvent +---@return RawGamepadButtonChangedEvent +function RawGamepadButtonChangedEvent.clone(_self) end + +---@param gamepad Entity +---@param button_type GamepadButton +---@param value number +---@return RawGamepadButtonChangedEvent +function RawGamepadButtonChangedEvent.new(gamepad,button_type,value) end + + + +---@class RawGamepadEvent : ReflectReference +--- A raw gamepad event. +--- +--- This event type is used over the [`GamepadConnectionEvent`], +--- [`RawGamepadButtonChangedEvent`] and [`RawGamepadAxisChangedEvent`] when +--- the in-frame relative ordering of events is important. +--- +--- This event type is used by `bevy_input` to feed its components. +RawGamepadEvent = {} + +---@param _self RawGamepadEvent +---@return RawGamepadEvent +function RawGamepadEvent.clone(_self) end + +---@param _self RawGamepadEvent +---@param other RawGamepadEvent +---@return boolean +function RawGamepadEvent.__eq(_self,other) end + +---@param _self RawGamepadEvent +---@param other RawGamepadEvent +---@return boolean +function RawGamepadEvent.eq(_self,other) end + + + +---@class DoubleTapGesture : ReflectReference +--- Double tap gesture. +--- +--- ## Platform-specific +--- +--- - Only available on **`macOS`** and **`iOS`**. +--- - On **`iOS`**, must be enabled first +DoubleTapGesture = {} + +---@param _self DoubleTapGesture +---@return DoubleTapGesture +function DoubleTapGesture.clone(_self) end + +---@param _self DoubleTapGesture +---@param other DoubleTapGesture +---@return boolean +function DoubleTapGesture.__eq(_self,other) end + +---@param _self DoubleTapGesture +---@param other DoubleTapGesture +---@return boolean +function DoubleTapGesture.eq(_self,other) end + + + +---@class PanGesture : ReflectReference +--- Pan gesture. +--- +--- ## Platform-specific +--- +--- - On **`iOS`**, must be enabled first +---@field [1] Vec2 +PanGesture = {} + +---@param _self PanGesture +---@return PanGesture +function PanGesture.clone(_self) end + +---@param _self PanGesture +---@param other PanGesture +---@return boolean +function PanGesture.__eq(_self,other) end + +---@param _self PanGesture +---@param other PanGesture +---@return boolean +function PanGesture.eq(_self,other) end + + + +---@class PinchGesture : ReflectReference +--- Two-finger pinch gesture, often used for magnifications. +--- +--- Positive delta values indicate magnification (zooming in) and +--- negative delta values indicate shrinking (zooming out). +--- +--- ## Platform-specific +--- +--- - Only available on **`macOS`** and **`iOS`**. +--- - On **`iOS`**, must be enabled first +---@field [1] number +PinchGesture = {} + +---@param _self PinchGesture +---@return PinchGesture +function PinchGesture.clone(_self) end + +---@param _self PinchGesture +---@param other PinchGesture +---@return boolean +function PinchGesture.__eq(_self,other) end + +---@param _self PinchGesture +---@param other PinchGesture +---@return boolean +function PinchGesture.eq(_self,other) end + + + +---@class RotationGesture : ReflectReference +--- Two-finger rotation gesture. +--- +--- Positive delta values indicate rotation counterclockwise and +--- negative delta values indicate rotation clockwise. +--- +--- ## Platform-specific +--- +--- - Only available on **`macOS`** and **`iOS`**. +--- - On **`iOS`**, must be enabled first +---@field [1] number +RotationGesture = {} + +---@param _self RotationGesture +---@return RotationGesture +function RotationGesture.clone(_self) end + +---@param _self RotationGesture +---@param other RotationGesture +---@return boolean +function RotationGesture.__eq(_self,other) end + +---@param _self RotationGesture +---@param other RotationGesture +---@return boolean +function RotationGesture.eq(_self,other) end + + + +---@class Key : ReflectReference +--- The logical key code of a [`KeyboardInput`]. +--- +--- This contains the actual value that is produced by pressing the key. This is +--- useful when you need the actual letters, and for symbols like `+` and `-` +--- when implementing zoom, as they can be in different locations depending on +--- the keyboard layout. +--- +--- In many cases you want the key location instead, for example when +--- implementing WASD controls so the keys are located the same place on QWERTY +--- and other layouts. In that case use [`KeyCode`] instead. +--- +--- ## Usage +--- +--- It is used as the generic `T` value of an [`ButtonInput`] to create a `Res>`. +--- +--- ## Technical +--- +--- Its values map 1 to 1 to winit's Key. +Key = {} + +---@param _self Key +---@param other Key +---@return boolean +function Key.__eq(_self,other) end + +---@param _self Key +---@param other Key +---@return boolean +function Key.eq(_self,other) end + +---@param _self Key +---@return nil +function Key.assert_receiver_is_total_eq(_self) end + +---@param _self Key +---@return Key +function Key.clone(_self) end + + + +---@class KeyCode : ReflectReference +--- The key code of a [`KeyboardInput`]. +--- +--- ## Usage +--- +--- It is used as the generic `T` value of an [`ButtonInput`] to create a `Res>`. +--- +--- Code representing the location of a physical key +--- This mostly conforms to the [`UI Events Specification's KeyboardEvent.code`] with a few +--- exceptions: +--- - The keys that the specification calls `MetaLeft` and `MetaRight` are named `SuperLeft` and +--- `SuperRight` here. +--- - The key that the specification calls "Super" is reported as `Unidentified` here. +--- +--- [`UI Events Specification's KeyboardEvent.code`]: https://w3c.github.io/uievents-code/#code-value-tables +--- +--- ## Updating +--- +--- The resource is updated inside of the [`keyboard_input_system`]. +KeyCode = {} + +---@param _self KeyCode +---@return nil +function KeyCode.assert_receiver_is_total_eq(_self) end + +---@param _self KeyCode +---@param other KeyCode +---@return boolean +function KeyCode.__eq(_self,other) end + +---@param _self KeyCode +---@param other KeyCode +---@return boolean +function KeyCode.eq(_self,other) end + +---@param _self KeyCode +---@return KeyCode +function KeyCode.clone(_self) end + + + +---@class KeyboardFocusLost : ReflectReference +--- Gets generated from `bevy_winit::winit_runner` +--- +--- Used for clearing all cached states to avoid having 'stuck' key presses +--- when, for example, switching between windows with 'Alt-Tab' or using any other +--- OS specific key combination that leads to Bevy window losing focus and not receiving any +--- input events +KeyboardFocusLost = {} + +---@param _self KeyboardFocusLost +---@return nil +function KeyboardFocusLost.assert_receiver_is_total_eq(_self) end + +---@param _self KeyboardFocusLost +---@param other KeyboardFocusLost +---@return boolean +function KeyboardFocusLost.__eq(_self,other) end + +---@param _self KeyboardFocusLost +---@param other KeyboardFocusLost +---@return boolean +function KeyboardFocusLost.eq(_self,other) end + +---@param _self KeyboardFocusLost +---@return KeyboardFocusLost +function KeyboardFocusLost.clone(_self) end + + + +---@class KeyboardInput : ReflectReference +--- A keyboard input event. +--- +--- This event is the translated version of the `WindowEvent::KeyboardInput` from the `winit` crate. +--- It is available to the end user and can be used for game logic. +--- +--- ## Usage +--- +--- The event is consumed inside of the [`keyboard_input_system`] to update the +--- [`ButtonInput`](ButtonInput) and +--- [`ButtonInput`](ButtonInput) resources. +---@field key_code ? KeyCode +---@field logical_key ? Key +---@field state ? ButtonState +---@field text ? SmolStr | nil +---@field repeat ? boolean +---@field window ? Entity +KeyboardInput = {} + +---@param _self KeyboardInput +---@return KeyboardInput +function KeyboardInput.clone(_self) end + +---@param _self KeyboardInput +---@return nil +function KeyboardInput.assert_receiver_is_total_eq(_self) end + +---@param _self KeyboardInput +---@param other KeyboardInput +---@return boolean +function KeyboardInput.__eq(_self,other) end + +---@param _self KeyboardInput +---@param other KeyboardInput +---@return boolean +function KeyboardInput.eq(_self,other) end + + + +---@class NativeKey : ReflectReference +--- Contains the platform-native logical key identifier, known as keysym. +--- +--- Exactly what that means differs from platform to platform, but the values are to some degree +--- tied to the currently active keyboard layout. The same key on the same keyboard may also report +--- different values on different platforms, which is one of the reasons this is a per-platform +--- enum. +--- +--- This enum is primarily used to store raw keysym when Winit doesn't map a given native logical +--- key identifier to a meaningful [`Key`] variant. This lets you use [`Key`], and let the user +--- define keybinds which work in the presence of identifiers we haven't mapped for you yet. +NativeKey = {} + +---@param _self NativeKey +---@return nil +function NativeKey.assert_receiver_is_total_eq(_self) end + +---@param _self NativeKey +---@return NativeKey +function NativeKey.clone(_self) end + +---@param _self NativeKey +---@param other NativeKey +---@return boolean +function NativeKey.__eq(_self,other) end + +---@param _self NativeKey +---@param other NativeKey +---@return boolean +function NativeKey.eq(_self,other) end + + + +---@class NativeKeyCode : ReflectReference +--- Contains the platform-native physical key identifier +--- +--- The exact values vary from platform to platform (which is part of why this is a per-platform +--- enum), but the values are primarily tied to the key's physical location on the keyboard. +--- +--- This enum is primarily used to store raw keycodes when Winit doesn't map a given native +--- physical key identifier to a meaningful [`KeyCode`] variant. In the presence of identifiers we +--- haven't mapped for you yet, this lets you use [`KeyCode`] to: +--- +--- - Correctly match key press and release events. +--- - On non-web platforms, support assigning keybinds to virtually any key through a UI. +NativeKeyCode = {} + +---@param _self NativeKeyCode +---@return nil +function NativeKeyCode.assert_receiver_is_total_eq(_self) end + +---@param _self NativeKeyCode +---@return NativeKeyCode +function NativeKeyCode.clone(_self) end + +---@param _self NativeKeyCode +---@param other NativeKeyCode +---@return boolean +function NativeKeyCode.__eq(_self,other) end + +---@param _self NativeKeyCode +---@param other NativeKeyCode +---@return boolean +function NativeKeyCode.eq(_self,other) end + + + +---@class AccumulatedMouseMotion : ReflectReference +--- Tracks how much the mouse has moved every frame. +--- +--- This resource is reset to zero every frame. +--- +--- This resource sums the total [`MouseMotion`] events received this frame. +---@field delta ? Vec2 +AccumulatedMouseMotion = {} + +---@param _self AccumulatedMouseMotion +---@return AccumulatedMouseMotion +function AccumulatedMouseMotion.clone(_self) end + +---@param _self AccumulatedMouseMotion +---@param other AccumulatedMouseMotion +---@return boolean +function AccumulatedMouseMotion.__eq(_self,other) end + +---@param _self AccumulatedMouseMotion +---@param other AccumulatedMouseMotion +---@return boolean +function AccumulatedMouseMotion.eq(_self,other) end + + + +---@class AccumulatedMouseScroll : ReflectReference +--- Tracks how much the mouse has scrolled every frame. +--- +--- This resource is reset to zero every frame. +--- +--- This resource sums the total [`MouseWheel`] events received this frame. +---@field unit ? MouseScrollUnit +---@field delta ? Vec2 +AccumulatedMouseScroll = {} + +---@param _self AccumulatedMouseScroll +---@return AccumulatedMouseScroll +function AccumulatedMouseScroll.clone(_self) end + +---@param _self AccumulatedMouseScroll +---@param other AccumulatedMouseScroll +---@return boolean +function AccumulatedMouseScroll.__eq(_self,other) end + +---@param _self AccumulatedMouseScroll +---@param other AccumulatedMouseScroll +---@return boolean +function AccumulatedMouseScroll.eq(_self,other) end + + + +---@class MouseButton : ReflectReference +--- A button on a mouse device. +--- +--- ## Usage +--- +--- It is used as the generic `T` value of an [`ButtonInput`] to create a `bevy` +--- resource. +--- +--- ## Updating +--- +--- The resource is updated inside of the [`mouse_button_input_system`]. +MouseButton = {} + +---@param _self MouseButton +---@param other MouseButton +---@return boolean +function MouseButton.__eq(_self,other) end + +---@param _self MouseButton +---@param other MouseButton +---@return boolean +function MouseButton.eq(_self,other) end + +---@param _self MouseButton +---@return MouseButton +function MouseButton.clone(_self) end + +---@param _self MouseButton +---@return nil +function MouseButton.assert_receiver_is_total_eq(_self) end + + + +---@class MouseButtonInput : ReflectReference +--- A mouse button input event. +--- +--- This event is the translated version of the `WindowEvent::MouseInput` from the `winit` crate. +--- +--- ## Usage +--- +--- The event is read inside of the [`mouse_button_input_system`] +--- to update the [`ButtonInput`] resource. +---@field button ? MouseButton +---@field state ? ButtonState +---@field window ? Entity +MouseButtonInput = {} + +---@param _self MouseButtonInput +---@return MouseButtonInput +function MouseButtonInput.clone(_self) end + +---@param _self MouseButtonInput +---@param other MouseButtonInput +---@return boolean +function MouseButtonInput.__eq(_self,other) end + +---@param _self MouseButtonInput +---@param other MouseButtonInput +---@return boolean +function MouseButtonInput.eq(_self,other) end + +---@param _self MouseButtonInput +---@return nil +function MouseButtonInput.assert_receiver_is_total_eq(_self) end + + + +---@class MouseMotion : ReflectReference +--- An event reporting the change in physical position of a pointing device. +--- +--- This represents raw, unfiltered physical motion. +--- It is the translated version of [`DeviceEvent::MouseMotion`] from the `winit` crate. +--- +--- All pointing devices connected to a single machine at the same time can emit the event independently. +--- However, the event data does not make it possible to distinguish which device it is referring to. +--- +--- [`DeviceEvent::MouseMotion`]: https://docs.rs/winit/latest/winit/event/enum.DeviceEvent.html#variant.MouseMotion +---@field delta ? Vec2 +MouseMotion = {} + +---@param _self MouseMotion +---@return MouseMotion +function MouseMotion.clone(_self) end + +---@param _self MouseMotion +---@param other MouseMotion +---@return boolean +function MouseMotion.__eq(_self,other) end + +---@param _self MouseMotion +---@param other MouseMotion +---@return boolean +function MouseMotion.eq(_self,other) end + + + +---@class MouseScrollUnit : ReflectReference +--- The scroll unit. +--- +--- Describes how a value of a [`MouseWheel`] event has to be interpreted. +--- +--- The value of the event can either be interpreted as the amount of lines or the amount of pixels +--- to scroll. +MouseScrollUnit = {} + +---@param _self MouseScrollUnit +---@return nil +function MouseScrollUnit.assert_receiver_is_total_eq(_self) end + +---@param _self MouseScrollUnit +---@param other MouseScrollUnit +---@return boolean +function MouseScrollUnit.__eq(_self,other) end + +---@param _self MouseScrollUnit +---@param other MouseScrollUnit +---@return boolean +function MouseScrollUnit.eq(_self,other) end + +---@param _self MouseScrollUnit +---@return MouseScrollUnit +function MouseScrollUnit.clone(_self) end + + + +---@class MouseWheel : ReflectReference +--- A mouse wheel event. +--- +--- This event is the translated version of the `WindowEvent::MouseWheel` from the `winit` crate. +---@field unit ? MouseScrollUnit +---@field x ? number +---@field y ? number +---@field window ? Entity +MouseWheel = {} + +---@param _self MouseWheel +---@return MouseWheel +function MouseWheel.clone(_self) end + +---@param _self MouseWheel +---@param other MouseWheel +---@return boolean +function MouseWheel.__eq(_self,other) end + +---@param _self MouseWheel +---@param other MouseWheel +---@return boolean +function MouseWheel.eq(_self,other) end + + + +---@class ForceTouch : ReflectReference +--- A force description of a [`Touch`] input. +ForceTouch = {} + +---@param _self ForceTouch +---@return ForceTouch +function ForceTouch.clone(_self) end + +---@param _self ForceTouch +---@param other ForceTouch +---@return boolean +function ForceTouch.__eq(_self,other) end + +---@param _self ForceTouch +---@param other ForceTouch +---@return boolean +function ForceTouch.eq(_self,other) end + + + +---@class TouchInput : ReflectReference +--- A touch input event. +--- +--- ## Logic +--- +--- Every time the user touches the screen, a new [`TouchPhase::Started`] event with an unique +--- identifier for the finger is generated. When the finger is lifted, the [`TouchPhase::Ended`] +--- event is generated with the same finger id. +--- +--- After a [`TouchPhase::Started`] event has been emitted, there may be zero or more [`TouchPhase::Moved`] +--- events when the finger is moved or the touch pressure changes. +--- +--- The finger id may be reused by the system after an [`TouchPhase::Ended`] event. The user +--- should assume that a new [`TouchPhase::Started`] event received with the same id has nothing +--- to do with the old finger and is a new finger. +--- +--- A [`TouchPhase::Canceled`] event is emitted when the system has canceled tracking this +--- touch, such as when the window loses focus, or on iOS if the user moves the +--- device against their face. +--- +--- ## Note +--- +--- This event is the translated version of the `WindowEvent::Touch` from the `winit` crate. +--- It is available to the end user and can be used for game logic. +---@field phase ? TouchPhase +---@field position ? Vec2 +---@field window ? Entity +---@field force ? ForceTouch | nil +---@field id ? integer +TouchInput = {} + +---@param _self TouchInput +---@return TouchInput +function TouchInput.clone(_self) end + +---@param _self TouchInput +---@param other TouchInput +---@return boolean +function TouchInput.__eq(_self,other) end + +---@param _self TouchInput +---@param other TouchInput +---@return boolean +function TouchInput.eq(_self,other) end + + + +---@class TouchPhase : ReflectReference +--- A phase of a [`TouchInput`]. +--- +--- ## Usage +--- +--- It is used to describe the phase of the touch input that is currently active. +--- This includes a phase that indicates that a touch input has started or ended, +--- or that a finger has moved. There is also a canceled phase that indicates that +--- the system canceled the tracking of the finger. +TouchPhase = {} + +---@param _self TouchPhase +---@return TouchPhase +function TouchPhase.clone(_self) end + +---@param _self TouchPhase +---@param other TouchPhase +---@return boolean +function TouchPhase.__eq(_self,other) end + +---@param _self TouchPhase +---@param other TouchPhase +---@return boolean +function TouchPhase.eq(_self,other) end + +---@param _self TouchPhase +---@return nil +function TouchPhase.assert_receiver_is_total_eq(_self) end + + + +---@class AspectRatio : ReflectReference +--- An `AspectRatio` is the ratio of width to height. +---@field [1] number +AspectRatio = {} + +---@param _self AspectRatio +---@return number +function AspectRatio.ratio(_self) end + +---@param _self AspectRatio +---@return AspectRatio +function AspectRatio.clone(_self) end + +---@param _self AspectRatio +---@return AspectRatio +function AspectRatio.inverse(_self) end + +---@param _self AspectRatio +---@return boolean +function AspectRatio.is_portrait(_self) end + +---@param _self AspectRatio +---@return boolean +function AspectRatio.is_square(_self) end + +---@param _self AspectRatio +---@return boolean +function AspectRatio.is_landscape(_self) end + +---@param _self AspectRatio +---@param other AspectRatio +---@return boolean +function AspectRatio.__eq(_self,other) end + +---@param _self AspectRatio +---@param other AspectRatio +---@return boolean +function AspectRatio.eq(_self,other) end + + + +---@class Aabb2d : ReflectReference +--- A 2D axis-aligned bounding box, or bounding rectangle +---@field min ? Vec2 +---@field max ? Vec2 +Aabb2d = {} + +---@param _self Aabb2d +---@param other Aabb2d +---@return boolean +function Aabb2d.__eq(_self,other) end + +---@param _self Aabb2d +---@param other Aabb2d +---@return boolean +function Aabb2d.eq(_self,other) end + +---@param _self Aabb2d +---@return Aabb2d +function Aabb2d.clone(_self) end + +---@param center Vec2 +---@param half_size Vec2 +---@return Aabb2d +function Aabb2d.new(center,half_size) end + +---@param _self Aabb2d +---@param point Vec2 +---@return Vec2 +function Aabb2d.closest_point(_self,point) end + +---@param _self Aabb2d +---@return BoundingCircle +function Aabb2d.bounding_circle(_self) end + + + +---@class BoundingCircle : ReflectReference +--- A bounding circle +---@field center ? Vec2 +---@field circle ? Circle +BoundingCircle = {} + +---@param _self BoundingCircle +---@return number +function BoundingCircle.radius(_self) end + +---@param _self BoundingCircle +---@return Aabb2d +function BoundingCircle.aabb_2d(_self) end + +---@param _self BoundingCircle +---@return BoundingCircle +function BoundingCircle.clone(_self) end + +---@param center Vec2 +---@param radius number +---@return BoundingCircle +function BoundingCircle.new(center,radius) end + +---@param _self BoundingCircle +---@param other BoundingCircle +---@return boolean +function BoundingCircle.__eq(_self,other) end + +---@param _self BoundingCircle +---@param other BoundingCircle +---@return boolean +function BoundingCircle.eq(_self,other) end + +---@param _self BoundingCircle +---@param point Vec2 +---@return Vec2 +function BoundingCircle.closest_point(_self,point) end + + + +---@class Aabb3d : ReflectReference +--- A 3D axis-aligned bounding box +---@field min ? Vec3A +---@field max ? Vec3A +Aabb3d = {} + +---@param _self Aabb3d +---@return Aabb3d +function Aabb3d.clone(_self) end + +---@param _self Aabb3d +---@return BoundingSphere +function Aabb3d.bounding_sphere(_self) end + +---@param _self Aabb3d +---@param other Aabb3d +---@return boolean +function Aabb3d.__eq(_self,other) end + +---@param _self Aabb3d +---@param other Aabb3d +---@return boolean +function Aabb3d.eq(_self,other) end + + + +---@class BoundingSphere : ReflectReference +--- A bounding sphere +---@field center ? Vec3A +---@field sphere ? Sphere +BoundingSphere = {} + +---@param _self BoundingSphere +---@param other BoundingSphere +---@return boolean +function BoundingSphere.__eq(_self,other) end + +---@param _self BoundingSphere +---@param other BoundingSphere +---@return boolean +function BoundingSphere.eq(_self,other) end + +---@param _self BoundingSphere +---@return Aabb3d +function BoundingSphere.aabb_3d(_self) end + +---@param _self BoundingSphere +---@return BoundingSphere +function BoundingSphere.clone(_self) end + +---@param _self BoundingSphere +---@return number +function BoundingSphere.radius(_self) end + + + +---@class AabbCast2d : ReflectReference +--- An intersection test that casts an [`Aabb2d`] along a ray. +---@field ray ? RayCast2d +---@field aabb ? Aabb2d +AabbCast2d = {} + +---@param aabb Aabb2d +---@param origin Vec2 +---@param direction Dir2 +---@param max number +---@return AabbCast2d +function AabbCast2d.new(aabb,origin,direction,max) end + +---@param _self AabbCast2d +---@param aabb Aabb2d +---@return number | nil +function AabbCast2d.aabb_collision_at(_self,aabb) end + +---@param aabb Aabb2d +---@param ray Ray2d +---@param max number +---@return AabbCast2d +function AabbCast2d.from_ray(aabb,ray,max) end + +---@param _self AabbCast2d +---@return AabbCast2d +function AabbCast2d.clone(_self) end + + + +---@class BoundingCircleCast : ReflectReference +--- An intersection test that casts a [`BoundingCircle`] along a ray. +---@field ray ? RayCast2d +---@field circle ? BoundingCircle +BoundingCircleCast = {} + +---@param _self BoundingCircleCast +---@param circle BoundingCircle +---@return number | nil +function BoundingCircleCast.circle_collision_at(_self,circle) end + +---@param _self BoundingCircleCast +---@return BoundingCircleCast +function BoundingCircleCast.clone(_self) end + +---@param circle BoundingCircle +---@param origin Vec2 +---@param direction Dir2 +---@param max number +---@return BoundingCircleCast +function BoundingCircleCast.new(circle,origin,direction,max) end + +---@param circle BoundingCircle +---@param ray Ray2d +---@param max number +---@return BoundingCircleCast +function BoundingCircleCast.from_ray(circle,ray,max) end + + + +---@class RayCast2d : ReflectReference +--- A raycast intersection test for 2D bounding volumes +---@field ray ? Ray2d +---@field max ? number +---@field direction_recip ? Vec2 +RayCast2d = {} + +---@param ray Ray2d +---@param max number +---@return RayCast2d +function RayCast2d.from_ray(ray,max) end + +---@param _self RayCast2d +---@return RayCast2d +function RayCast2d.clone(_self) end + +---@param _self RayCast2d +---@param circle BoundingCircle +---@return number | nil +function RayCast2d.circle_intersection_at(_self,circle) end + +---@param _self RayCast2d +---@return Vec2 +function RayCast2d.direction_recip(_self) end + +---@param _self RayCast2d +---@param aabb Aabb2d +---@return number | nil +function RayCast2d.aabb_intersection_at(_self,aabb) end + +---@param origin Vec2 +---@param direction Dir2 +---@param max number +---@return RayCast2d +function RayCast2d.new(origin,direction,max) end + + + +---@class AabbCast3d : ReflectReference +--- An intersection test that casts an [`Aabb3d`] along a ray. +---@field ray ? RayCast3d +---@field aabb ? Aabb3d +AabbCast3d = {} + +---@param aabb Aabb3d +---@param ray Ray3d +---@param max number +---@return AabbCast3d +function AabbCast3d.from_ray(aabb,ray,max) end + +---@param _self AabbCast3d +---@param aabb Aabb3d +---@return number | nil +function AabbCast3d.aabb_collision_at(_self,aabb) end + +---@param _self AabbCast3d +---@return AabbCast3d +function AabbCast3d.clone(_self) end + + + +---@class BoundingSphereCast : ReflectReference +--- An intersection test that casts a [`BoundingSphere`] along a ray. +---@field ray ? RayCast3d +---@field sphere ? BoundingSphere +BoundingSphereCast = {} + +---@param _self BoundingSphereCast +---@param sphere BoundingSphere +---@return number | nil +function BoundingSphereCast.sphere_collision_at(_self,sphere) end + +---@param sphere BoundingSphere +---@param ray Ray3d +---@param max number +---@return BoundingSphereCast +function BoundingSphereCast.from_ray(sphere,ray,max) end + +---@param _self BoundingSphereCast +---@return BoundingSphereCast +function BoundingSphereCast.clone(_self) end + + + +---@class RayCast3d : ReflectReference +--- A raycast intersection test for 3D bounding volumes +---@field origin ? Vec3A +---@field direction ? Dir3A +---@field max ? number +---@field direction_recip ? Vec3A +RayCast3d = {} + +---@param ray Ray3d +---@param max number +---@return RayCast3d +function RayCast3d.from_ray(ray,max) end + +---@param _self RayCast3d +---@param aabb Aabb3d +---@return number | nil +function RayCast3d.aabb_intersection_at(_self,aabb) end + +---@param _self RayCast3d +---@param sphere BoundingSphere +---@return number | nil +function RayCast3d.sphere_intersection_at(_self,sphere) end + +---@param _self RayCast3d +---@return Vec3A +function RayCast3d.direction_recip(_self) end + +---@param _self RayCast3d +---@return RayCast3d +function RayCast3d.clone(_self) end + + + +---@class CompassOctant : ReflectReference +--- A compass enum with 8 directions. +--- ```text +--- N (North) +--- ▲ +--- NW │ NE +--- ╲ │ ╱ +--- W (West) ┼─────► E (East) +--- ╱ │ ╲ +--- SW │ SE +--- ▼ +--- S (South) +--- ``` +---@operator unm: CompassOctant +CompassOctant = {} + +---@param _self CompassOctant +---@return nil +function CompassOctant.assert_receiver_is_total_eq(_self) end + +---@param _self CompassOctant +---@param other CompassOctant +---@return boolean +function CompassOctant.__eq(_self,other) end + +---@param _self CompassOctant +---@param other CompassOctant +---@return boolean +function CompassOctant.eq(_self,other) end + +---@param _self CompassOctant +---@return CompassOctant +function CompassOctant.clone(_self) end + +---@param _self CompassOctant +---@param origin Vec2 +--- The starting position +---@param candidate Vec2 +--- The target position to check +---@return boolean +function CompassOctant.is_in_direction(_self,origin,candidate) end + +---@param _self CompassOctant +---@return CompassOctant +function CompassOctant.neg(_self) end + +---@param _self CompassOctant +---@return integer +function CompassOctant.to_index(_self) end + +---@param _self CompassOctant +---@return CompassOctant +function CompassOctant.opposite(_self) end + + + +---@class CompassQuadrant : ReflectReference +--- A compass enum with 4 directions. +--- ```text +--- N (North) +--- ▲ +--- │ +--- │ +--- W (West) ┼─────► E (East) +--- │ +--- │ +--- ▼ +--- S (South) +--- ``` +---@operator unm: CompassQuadrant +CompassQuadrant = {} + +---@param _self CompassQuadrant +---@return CompassQuadrant +function CompassQuadrant.opposite(_self) end + +---@param _self CompassQuadrant +---@param origin Vec2 +--- The starting position +---@param candidate Vec2 +--- The target position to check +---@return boolean +function CompassQuadrant.is_in_direction(_self,origin,candidate) end + +---@param _self CompassQuadrant +---@return CompassQuadrant +function CompassQuadrant.neg(_self) end + +---@param _self CompassQuadrant +---@param other CompassQuadrant +---@return boolean +function CompassQuadrant.__eq(_self,other) end + +---@param _self CompassQuadrant +---@param other CompassQuadrant +---@return boolean +function CompassQuadrant.eq(_self,other) end + +---@param _self CompassQuadrant +---@return nil +function CompassQuadrant.assert_receiver_is_total_eq(_self) end + +---@param _self CompassQuadrant +---@return integer +function CompassQuadrant.to_index(_self) end + +---@param _self CompassQuadrant +---@return CompassQuadrant +function CompassQuadrant.clone(_self) end + + + +---@class EaseFunction : ReflectReference +--- Curve functions over the [unit interval], commonly used for easing transitions. +--- +--- `EaseFunction` can be used on its own to interpolate between `0.0` and `1.0`. +--- It can also be combined with [`EasingCurve`] to interpolate between other +--- intervals and types, including vectors and rotations. +--- +--- # Example +--- +--- [`sample`] the smoothstep function at various points. This will return `None` +--- if the parameter is outside the unit interval. +--- +--- ``` +--- # use bevy_math::prelude::*; +--- let f = EaseFunction::SmoothStep; +--- +--- assert_eq!(f.sample(-1.0), None); +--- assert_eq!(f.sample(0.0), Some(0.0)); +--- assert_eq!(f.sample(0.5), Some(0.5)); +--- assert_eq!(f.sample(1.0), Some(1.0)); +--- assert_eq!(f.sample(2.0), None); +--- ``` +--- +--- [`sample_clamped`] will clamp the parameter to the unit interval, so it +--- always returns a value. +--- +--- ``` +--- # use bevy_math::prelude::*; +--- # let f = EaseFunction::SmoothStep; +--- assert_eq!(f.sample_clamped(-1.0), 0.0); +--- assert_eq!(f.sample_clamped(0.0), 0.0); +--- assert_eq!(f.sample_clamped(0.5), 0.5); +--- assert_eq!(f.sample_clamped(1.0), 1.0); +--- assert_eq!(f.sample_clamped(2.0), 1.0); +--- ``` +--- +--- [`sample`]: EaseFunction::sample +--- [`sample_clamped`]: EaseFunction::sample_clamped +--- [unit interval]: `Interval::UNIT` +EaseFunction = {} + +---@param _self EaseFunction +---@return EaseFunction +function EaseFunction.clone(_self) end + +---@param _self EaseFunction +---@param other EaseFunction +---@return boolean +function EaseFunction.__eq(_self,other) end + +---@param _self EaseFunction +---@param other EaseFunction +---@return boolean +function EaseFunction.eq(_self,other) end + + + +---@class JumpAt : ReflectReference +--- Configuration options for the [`EaseFunction::Steps`] curves. This closely replicates the +--- [CSS step function specification]. +--- +--- [CSS step function specification]: https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/steps#description +JumpAt = {} + +---@param _self JumpAt +---@return nil +function JumpAt.assert_receiver_is_total_eq(_self) end + +---@param _self JumpAt +---@param other JumpAt +---@return boolean +function JumpAt.__eq(_self,other) end + +---@param _self JumpAt +---@param other JumpAt +---@return boolean +function JumpAt.eq(_self,other) end + +---@param _self JumpAt +---@return JumpAt +function JumpAt.clone(_self) end + + + +---@class Interval : ReflectReference +--- A nonempty closed interval, possibly unbounded in either direction. +--- +--- In other words, the interval may stretch all the way to positive or negative infinity, but it +--- will always have some nonempty interior. +---@field start ? number +---@field end ? number +Interval = {} + +---@param _self Interval +---@return boolean +function Interval.has_finite_start(_self) end + +---@param _self Interval +---@return Interval +function Interval.clone(_self) end + + +---@param _self Interval +---@return number +function Interval.start(_self) end + +---@param _self Interval +---@param other Interval +---@return boolean +function Interval.contains_interval(_self,other) end + +---@param _self Interval +---@param other Interval +---@return boolean +function Interval.__eq(_self,other) end + +---@param _self Interval +---@param other Interval +---@return boolean +function Interval.eq(_self,other) end + +---@param _self Interval +---@return boolean +function Interval.is_bounded(_self) end + +---@param _self Interval +---@param value number +---@return number +function Interval.clamp(_self,value) end + +---@param _self Interval +---@return boolean +function Interval.has_finite_end(_self) end + +---@param _self Interval +---@return number +function Interval.length(_self) end + +---@param _self Interval +---@param item number +---@return boolean +function Interval.contains(_self,item) end + + + +---@class Dir2 : ReflectReference +--- A normalized vector pointing in a direction in 2D space +---@field [1] Vec2 +---@operator unm: Dir2 +---@operator mul(number): Vec2 +Dir2 = {} + +---@param _self Dir2 +---@return Rot2 +function Dir2.rotation_from_x(_self) end + +---@param value Vec2 +---@return Dir2 +function Dir2.new_unchecked(value) end + +---@param _self Dir2 +---@param other Dir2 +---@return boolean +function Dir2.__eq(_self,other) end + +---@param _self Dir2 +---@param other Dir2 +---@return boolean +function Dir2.eq(_self,other) end + +---@param _self Dir2 +---@param rhs Dir2 +---@param s number +---@return Dir2 +function Dir2.slerp(_self,rhs,s) end + +---@param _self Dir2 +---@return Rot2 +function Dir2.rotation_to_x(_self) end + +---@param _self Dir2 +---@return Rot2 +function Dir2.rotation_from_y(_self) end + +---@param _self Dir2 +---@return Rot2 +function Dir2.rotation_to_y(_self) end + +---@param _self Dir2 +---@return Dir2 +function Dir2.neg(_self) end + +---@param _self Dir2 +---@param other Dir2 +---@return Rot2 +function Dir2.rotation_to(_self,other) end + +---@param _self Dir2 +---@return Dir2 +function Dir2.fast_renormalize(_self) end + +---@param _self Dir2 +---@param rhs number +---@return Vec2 +function Dir2.mul(_self,rhs) end + +---@param _self Dir2 +---@return Vec2 +function Dir2.as_vec2(_self) end + +---@param _self Dir2 +---@return Dir2 +function Dir2.clone(_self) end + +---@param x number +---@param y number +---@return Dir2 +function Dir2.from_xy_unchecked(x,y) end + +---@param _self Dir2 +---@param other Dir2 +---@return Rot2 +function Dir2.rotation_from(_self,other) end + + + +---@class Dir3 : ReflectReference +--- A normalized vector pointing in a direction in 3D space +---@field [1] Vec3 +---@operator unm: Dir3 +---@operator mul(number): Vec3 +Dir3 = {} + +---@param value Vec3 +---@return Dir3 +function Dir3.new_unchecked(value) end + +---@param _self Dir3 +---@return Dir3 +function Dir3.neg(_self) end + +---@param _self Dir3 +---@param other Dir3 +---@return boolean +function Dir3.__eq(_self,other) end + +---@param _self Dir3 +---@param other Dir3 +---@return boolean +function Dir3.eq(_self,other) end + +---@param x number +---@param y number +---@param z number +---@return Dir3 +function Dir3.from_xyz_unchecked(x,y,z) end + +---@param _self Dir3 +---@return Dir3 +function Dir3.fast_renormalize(_self) end + +---@param _self Dir3 +---@return Dir3 +function Dir3.clone(_self) end + +---@param _self Dir3 +---@param rhs Dir3 +---@param s number +---@return Dir3 +function Dir3.slerp(_self,rhs,s) end + +---@param _self Dir3 +---@return Vec3 +function Dir3.as_vec3(_self) end + +---@param _self Dir3 +---@param rhs number +---@return Vec3 +function Dir3.mul(_self,rhs) end + + + +---@class Dir3A : ReflectReference +--- A normalized SIMD vector pointing in a direction in 3D space. +--- +--- This type stores a 16 byte aligned [`Vec3A`]. +--- This may or may not be faster than [`Dir3`]: make sure to benchmark! +---@field [1] Vec3A +---@operator mul(number): Vec3A +---@operator unm: Dir3A +Dir3A = {} + +---@param x number +---@param y number +---@param z number +---@return Dir3A +function Dir3A.from_xyz_unchecked(x,y,z) end + +---@param _self Dir3A +---@param other Dir3A +---@return boolean +function Dir3A.__eq(_self,other) end + +---@param _self Dir3A +---@param other Dir3A +---@return boolean +function Dir3A.eq(_self,other) end + +---@param _self Dir3A +---@param rhs number +---@return Vec3A +function Dir3A.mul(_self,rhs) end + +---@param _self Dir3A +---@return Dir3A +function Dir3A.fast_renormalize(_self) end + +---@param value Vec3A +---@return Dir3A +function Dir3A.new_unchecked(value) end + +---@param _self Dir3A +---@return Vec3A +function Dir3A.as_vec3a(_self) end + +---@param _self Dir3A +---@return Dir3A +function Dir3A.clone(_self) end + +---@param _self Dir3A +---@return Dir3A +function Dir3A.neg(_self) end + +---@param _self Dir3A +---@param rhs Dir3A +---@param s number +---@return Dir3A +function Dir3A.slerp(_self,rhs,s) end + + + +---@class Dir4 : ReflectReference +--- A normalized vector pointing in a direction in 4D space +---@field [1] Vec4 +---@operator mul(number): Vec4 +---@operator unm: Dir4 +Dir4 = {} + +---@param _self Dir4 +---@param rhs number +---@return Vec4 +function Dir4.mul(_self,rhs) end + +---@param value Vec4 +---@return Dir4 +function Dir4.new_unchecked(value) end + +---@param _self Dir4 +---@return Dir4 +function Dir4.clone(_self) end + +---@param _self Dir4 +---@return Dir4 +function Dir4.fast_renormalize(_self) end + +---@param _self Dir4 +---@param other Dir4 +---@return boolean +function Dir4.__eq(_self,other) end + +---@param _self Dir4 +---@param other Dir4 +---@return boolean +function Dir4.eq(_self,other) end + +---@param _self Dir4 +---@return Dir4 +function Dir4.neg(_self) end + +---@param _self Dir4 +---@return Vec4 +function Dir4.as_vec4(_self) end + +---@param x number +---@param y number +---@param z number +---@param w number +---@return Dir4 +function Dir4.from_xyzw_unchecked(x,y,z,w) end + + + +---@class FloatOrd : ReflectReference +--- A wrapper for floats that implements [`Ord`], [`Eq`], and [`Hash`] traits. +--- +--- This is a work around for the fact that the IEEE 754-2008 standard, +--- implemented by Rust's [`f32`] type, +--- doesn't define an ordering for [`NaN`](f32::NAN), +--- and `NaN` is not considered equal to any other `NaN`. +--- +--- Wrapping a float with `FloatOrd` breaks conformance with the standard +--- by sorting `NaN` as less than all other numbers and equal to any other `NaN`. +---@field [1] number +---@operator unm: FloatOrd +FloatOrd = {} + +---@param _self FloatOrd +---@param other FloatOrd +---@return boolean +function FloatOrd.le(_self,other) end + +---@param _self FloatOrd +---@param other FloatOrd +---@return boolean +function FloatOrd.ge(_self,other) end + +---@param _self FloatOrd +---@param other FloatOrd +---@return boolean +function FloatOrd.__eq(_self,other) end + +---@param _self FloatOrd +---@param other FloatOrd +---@return boolean +function FloatOrd.eq(_self,other) end + +---@param _self FloatOrd +---@param other FloatOrd +---@return boolean +function FloatOrd.__lt(_self,other) end + +---@param _self FloatOrd +---@param other FloatOrd +---@return boolean +function FloatOrd.lt(_self,other) end + +---@param _self FloatOrd +---@param other FloatOrd +---@return boolean +function FloatOrd.gt(_self,other) end + +---@param _self FloatOrd +---@return FloatOrd +function FloatOrd.clone(_self) end + +---@param _self FloatOrd +---@return FloatOrd +function FloatOrd.neg(_self) end + + + +---@class Isometry2d : ReflectReference +--- An isometry in two dimensions, representing a rotation followed by a translation. +--- This can often be useful for expressing relative positions and transformations from one position to another. +--- +--- In particular, this type represents a distance-preserving transformation known as a *rigid motion* or a *direct motion*, +--- and belongs to the special [Euclidean group] SE(2). This includes translation and rotation, but excludes reflection. +--- +--- For the three-dimensional version, see [`Isometry3d`]. +--- +--- [Euclidean group]: https://en.wikipedia.org/wiki/Euclidean_group +--- +--- # Example +--- +--- Isometries can be created from a given translation and rotation: +--- +--- ``` +--- # use bevy_math::{Isometry2d, Rot2, Vec2}; +--- # +--- let iso = Isometry2d::new(Vec2::new(2.0, 1.0), Rot2::degrees(90.0)); +--- ``` +--- +--- Or from separate parts: +--- +--- ``` +--- # use bevy_math::{Isometry2d, Rot2, Vec2}; +--- # +--- let iso1 = Isometry2d::from_translation(Vec2::new(2.0, 1.0)); +--- let iso2 = Isometry2d::from_rotation(Rot2::degrees(90.0)); +--- ``` +--- +--- The isometries can be used to transform points: +--- +--- ``` +--- # use approx::assert_abs_diff_eq; +--- # use bevy_math::{Isometry2d, Rot2, Vec2}; +--- # +--- let iso = Isometry2d::new(Vec2::new(2.0, 1.0), Rot2::degrees(90.0)); +--- let point = Vec2::new(4.0, 4.0); +--- +--- // These are equivalent +--- let result = iso.transform_point(point); +--- let result = iso * point; +--- +--- assert_eq!(result, Vec2::new(-2.0, 5.0)); +--- ``` +--- +--- Isometries can also be composed together: +--- +--- ``` +--- # use bevy_math::{Isometry2d, Rot2, Vec2}; +--- # +--- # let iso = Isometry2d::new(Vec2::new(2.0, 1.0), Rot2::degrees(90.0)); +--- # let iso1 = Isometry2d::from_translation(Vec2::new(2.0, 1.0)); +--- # let iso2 = Isometry2d::from_rotation(Rot2::degrees(90.0)); +--- # +--- assert_eq!(iso1 * iso2, iso); +--- ``` +--- +--- One common operation is to compute an isometry representing the relative positions of two objects +--- for things like intersection tests. This can be done with an inverse transformation: +--- +--- ``` +--- # use bevy_math::{Isometry2d, Rot2, Vec2}; +--- # +--- let circle_iso = Isometry2d::from_translation(Vec2::new(2.0, 1.0)); +--- let rectangle_iso = Isometry2d::from_rotation(Rot2::degrees(90.0)); +--- +--- // Compute the relative position and orientation between the two shapes +--- let relative_iso = circle_iso.inverse() * rectangle_iso; +--- +--- // Or alternatively, to skip an extra rotation operation: +--- let relative_iso = circle_iso.inverse_mul(rectangle_iso); +--- ``` +---@field rotation ? Rot2 +---@field translation ? Vec2 +---@operator mul(Vec2): Vec2 +---@operator mul(Isometry2d): Isometry2d +---@operator mul(Dir2): Dir2 +Isometry2d = {} + +---@param translation Vec2 +---@param rotation Rot2 +---@return Isometry2d +function Isometry2d.new(translation,rotation) end + +---@param _self Isometry2d +---@param point Vec2 +---@return Vec2 +function Isometry2d.transform_point(_self,point) end + +---@param _self Isometry2d +---@return Isometry2d +function Isometry2d.clone(_self) end + +---@param p1 Isometry2d +---@param p2 Vec2 +---@return Vec2 +function Isometry2d.mul(p1,p2) end + +---@param _self Isometry2d +---@return Isometry2d +function Isometry2d.inverse(_self) end + +---@param x number +---@param y number +---@return Isometry2d +function Isometry2d.from_xy(x,y) end + +---@param p1 Isometry2d +---@param p2 Isometry2d +---@return Isometry2d +function Isometry2d.mul(p1,p2) end + +---@param translation Vec2 +---@return Isometry2d +function Isometry2d.from_translation(translation) end + +---@param _self Isometry2d +---@param rhs Dir2 +---@return Dir2 +function Isometry2d.mul(_self,rhs) end + +---@param rotation Rot2 +---@return Isometry2d +function Isometry2d.from_rotation(rotation) end + +---@param _self Isometry2d +---@param rhs Isometry2d +---@return Isometry2d +function Isometry2d.inverse_mul(_self,rhs) end + +---@param _self Isometry2d +---@param point Vec2 +---@return Vec2 +function Isometry2d.inverse_transform_point(_self,point) end + +---@param _self Isometry2d +---@param other Isometry2d +---@return boolean +function Isometry2d.__eq(_self,other) end + +---@param _self Isometry2d +---@param other Isometry2d +---@return boolean +function Isometry2d.eq(_self,other) end + + + +---@class Isometry3d : ReflectReference +--- An isometry in three dimensions, representing a rotation followed by a translation. +--- This can often be useful for expressing relative positions and transformations from one position to another. +--- +--- In particular, this type represents a distance-preserving transformation known as a *rigid motion* or a *direct motion*, +--- and belongs to the special [Euclidean group] SE(3). This includes translation and rotation, but excludes reflection. +--- +--- For the two-dimensional version, see [`Isometry2d`]. +--- +--- [Euclidean group]: https://en.wikipedia.org/wiki/Euclidean_group +--- +--- # Example +--- +--- Isometries can be created from a given translation and rotation: +--- +--- ``` +--- # use bevy_math::{Isometry3d, Quat, Vec3}; +--- # use std::f32::consts::FRAC_PI_2; +--- # +--- let iso = Isometry3d::new(Vec3::new(2.0, 1.0, 3.0), Quat::from_rotation_z(FRAC_PI_2)); +--- ``` +--- +--- Or from separate parts: +--- +--- ``` +--- # use bevy_math::{Isometry3d, Quat, Vec3}; +--- # use std::f32::consts::FRAC_PI_2; +--- # +--- let iso1 = Isometry3d::from_translation(Vec3::new(2.0, 1.0, 3.0)); +--- let iso2 = Isometry3d::from_rotation(Quat::from_rotation_z(FRAC_PI_2)); +--- ``` +--- +--- The isometries can be used to transform points: +--- +--- ``` +--- # use approx::assert_relative_eq; +--- # use bevy_math::{Isometry3d, Quat, Vec3}; +--- # use std::f32::consts::FRAC_PI_2; +--- # +--- let iso = Isometry3d::new(Vec3::new(2.0, 1.0, 3.0), Quat::from_rotation_z(FRAC_PI_2)); +--- let point = Vec3::new(4.0, 4.0, 4.0); +--- +--- // These are equivalent +--- let result = iso.transform_point(point); +--- let result = iso * point; +--- +--- assert_relative_eq!(result, Vec3::new(-2.0, 5.0, 7.0)); +--- ``` +--- +--- Isometries can also be composed together: +--- +--- ``` +--- # use bevy_math::{Isometry3d, Quat, Vec3}; +--- # use std::f32::consts::FRAC_PI_2; +--- # +--- # let iso = Isometry3d::new(Vec3::new(2.0, 1.0, 3.0), Quat::from_rotation_z(FRAC_PI_2)); +--- # let iso1 = Isometry3d::from_translation(Vec3::new(2.0, 1.0, 3.0)); +--- # let iso2 = Isometry3d::from_rotation(Quat::from_rotation_z(FRAC_PI_2)); +--- # +--- assert_eq!(iso1 * iso2, iso); +--- ``` +--- +--- One common operation is to compute an isometry representing the relative positions of two objects +--- for things like intersection tests. This can be done with an inverse transformation: +--- +--- ``` +--- # use bevy_math::{Isometry3d, Quat, Vec3}; +--- # use std::f32::consts::FRAC_PI_2; +--- # +--- let sphere_iso = Isometry3d::from_translation(Vec3::new(2.0, 1.0, 3.0)); +--- let cuboid_iso = Isometry3d::from_rotation(Quat::from_rotation_z(FRAC_PI_2)); +--- +--- // Compute the relative position and orientation between the two shapes +--- let relative_iso = sphere_iso.inverse() * cuboid_iso; +--- +--- // Or alternatively, to skip an extra rotation operation: +--- let relative_iso = sphere_iso.inverse_mul(cuboid_iso); +--- ``` +---@field rotation ? Quat +---@field translation ? Vec3A +---@operator mul(Vec3): Vec3 +---@operator mul(Dir3): Dir3 +---@operator mul(Isometry3d): Isometry3d +---@operator mul(Vec3A): Vec3A +Isometry3d = {} + +---@param _self Isometry3d +---@param other Isometry3d +---@return boolean +function Isometry3d.__eq(_self,other) end + +---@param _self Isometry3d +---@param other Isometry3d +---@return boolean +function Isometry3d.eq(_self,other) end + +---@param p1 Isometry3d +---@param p2 Vec3 +---@return Vec3 +function Isometry3d.mul(p1,p2) end + +---@param x number +---@param y number +---@param z number +---@return Isometry3d +function Isometry3d.from_xyz(x,y,z) end + +---@param _self Isometry3d +---@param rhs Isometry3d +---@return Isometry3d +function Isometry3d.inverse_mul(_self,rhs) end + +---@param _self Isometry3d +---@param rhs Dir3 +---@return Dir3 +function Isometry3d.mul(_self,rhs) end + +---@param p1 Isometry3d +---@param p2 Isometry3d +---@return Isometry3d +function Isometry3d.mul(p1,p2) end + +---@param p1 Isometry3d +---@param p2 Vec3A +---@return Vec3A +function Isometry3d.mul(p1,p2) end + +---@param _self Isometry3d +---@return Isometry3d +function Isometry3d.clone(_self) end + +---@param rotation Quat +---@return Isometry3d +function Isometry3d.from_rotation(rotation) end + +---@param _self Isometry3d +---@return Isometry3d +function Isometry3d.inverse(_self) end + + + +---@class Annulus : ReflectReference +--- A primitive shape formed by the region between two circles, also known as a ring. +---@field inner_circle ? Circle +---@field outer_circle ? Circle +Annulus = {} + +---@param _self Annulus +---@return number +function Annulus.thickness(_self) end + +---@param _self Annulus +---@return Annulus +function Annulus.clone(_self) end + +---@param inner_radius number +---@param outer_radius number +---@return Annulus +function Annulus.new(inner_radius,outer_radius) end + +---@param _self Annulus +---@return number +function Annulus.diameter(_self) end + +---@param _self Annulus +---@param other Annulus +---@return boolean +function Annulus.__eq(_self,other) end + +---@param _self Annulus +---@param other Annulus +---@return boolean +function Annulus.eq(_self,other) end + +---@param _self Annulus +---@param point Vec2 +---@return Vec2 +function Annulus.closest_point(_self,point) end + + + +---@class Arc2d : ReflectReference +--- A primitive representing an arc between two points on a circle. +--- +--- An arc has no area. +--- If you want to include the portion of a circle's area swept out by the arc, +--- use the pie-shaped [`CircularSector`]. +--- If you want to include only the space inside the convex hull of the arc, +--- use the bowl-shaped [`CircularSegment`]. +--- +--- The arc is drawn starting from [`Vec2::Y`], extending by `half_angle` radians on +--- either side. The center of the circle is the origin [`Vec2::ZERO`]. Note that this +--- means that the origin may not be within the `Arc2d`'s convex hull. +--- +--- **Warning:** Arcs with negative angle or radius, or with angle greater than an entire circle, are not officially supported. +--- It is recommended to normalize arcs to have an angle in [0, 2π]. +---@field radius ? number +---@field half_angle ? number +Arc2d = {} + +---@param _self Arc2d +---@return Arc2d +function Arc2d.clone(_self) end + +---@param _self Arc2d +---@return number +function Arc2d.half_chord_length(_self) end + +---@param _self Arc2d +---@return Vec2 +function Arc2d.right_endpoint(_self) end + +---@param _self Arc2d +---@return Vec2 +function Arc2d.chord_midpoint(_self) end + +---@param radius number +---@param angle number +---@return Arc2d +function Arc2d.from_radians(radius,angle) end + +---@param _self Arc2d +---@return Vec2 +function Arc2d.left_endpoint(_self) end + +---@param radius number +---@param fraction number +---@return Arc2d +function Arc2d.from_turns(radius,fraction) end + +---@param _self Arc2d +---@return number +function Arc2d.apothem(_self) end + +---@param _self Arc2d +---@return boolean +function Arc2d.is_minor(_self) end + +---@param radius number +---@param half_angle number +---@return Arc2d +function Arc2d.new(radius,half_angle) end + +---@param _self Arc2d +---@return number +function Arc2d.angle(_self) end + +---@param _self Arc2d +---@return number +function Arc2d.chord_length(_self) end + +---@param _self Arc2d +---@param other Arc2d +---@return boolean +function Arc2d.__eq(_self,other) end + +---@param _self Arc2d +---@param other Arc2d +---@return boolean +function Arc2d.eq(_self,other) end + +---@param _self Arc2d +---@return boolean +function Arc2d.is_major(_self) end + +---@param _self Arc2d +---@return Vec2 +function Arc2d.midpoint(_self) end + +---@param _self Arc2d +---@return number +function Arc2d.sagitta(_self) end + +---@param radius number +---@param angle number +---@return Arc2d +function Arc2d.from_degrees(radius,angle) end + +---@param _self Arc2d +---@return number +function Arc2d.length(_self) end + + + +---@class Capsule2d : ReflectReference +--- A 2D capsule primitive, also known as a stadium or pill shape. +--- +--- A two-dimensional capsule is defined as a neighborhood of points at a distance (radius) from a line +---@field radius ? number +---@field half_length ? number +Capsule2d = {} + +---@param radius number +---@param length number +---@return Capsule2d +function Capsule2d.new(radius,length) end + +---@param _self Capsule2d +---@return Capsule2d +function Capsule2d.clone(_self) end + +---@param _self Capsule2d +---@param other Capsule2d +---@return boolean +function Capsule2d.__eq(_self,other) end + +---@param _self Capsule2d +---@param other Capsule2d +---@return boolean +function Capsule2d.eq(_self,other) end + +---@param _self Capsule2d +---@return Rectangle +function Capsule2d.to_inner_rectangle(_self) end + + + +---@class Circle : ReflectReference +--- A circle primitive, representing the set of points some distance from the origin +---@field radius ? number +Circle = {} + +---@param _self Circle +---@return Circle +function Circle.clone(_self) end + +---@param _self Circle +---@return number +function Circle.diameter(_self) end + +---@param radius number +---@return Circle +function Circle.new(radius) end + +---@param _self Circle +---@param other Circle +---@return boolean +function Circle.__eq(_self,other) end + +---@param _self Circle +---@param other Circle +---@return boolean +function Circle.eq(_self,other) end + +---@param _self Circle +---@param point Vec2 +---@return Vec2 +function Circle.closest_point(_self,point) end + + + +---@class CircularSector : ReflectReference +--- A primitive representing a circular sector: a pie slice of a circle. +--- +--- The segment is positioned so that it always includes [`Vec2::Y`] and is vertically symmetrical. +--- To orient the sector differently, apply a rotation. +--- The sector is drawn with the center of its circle at the origin [`Vec2::ZERO`]. +--- +--- **Warning:** Circular sectors with negative angle or radius, or with angle greater than an entire circle, are not officially supported. +--- We recommend normalizing circular sectors to have an angle in [0, 2π]. +---@field arc ? Arc2d +CircularSector = {} + +---@param _self CircularSector +---@return number +function CircularSector.arc_length(_self) end + +---@param radius number +---@param angle number +---@return CircularSector +function CircularSector.new(radius,angle) end + +---@param _self CircularSector +---@return number +function CircularSector.radius(_self) end + +---@param _self CircularSector +---@param other CircularSector +---@return boolean +function CircularSector.__eq(_self,other) end + +---@param _self CircularSector +---@param other CircularSector +---@return boolean +function CircularSector.eq(_self,other) end + +---@param _self CircularSector +---@return number +function CircularSector.half_chord_length(_self) end + +---@param radius number +---@param angle number +---@return CircularSector +function CircularSector.from_radians(radius,angle) end + +---@param radius number +---@param fraction number +---@return CircularSector +function CircularSector.from_turns(radius,fraction) end + +---@param _self CircularSector +---@return number +function CircularSector.sagitta(_self) end + +---@param _self CircularSector +---@return number +function CircularSector.chord_length(_self) end + +---@param _self CircularSector +---@return Vec2 +function CircularSector.chord_midpoint(_self) end + +---@param _self CircularSector +---@return CircularSector +function CircularSector.clone(_self) end + +---@param radius number +---@param angle number +---@return CircularSector +function CircularSector.from_degrees(radius,angle) end + +---@param _self CircularSector +---@return number +function CircularSector.apothem(_self) end + +---@param _self CircularSector +---@return number +function CircularSector.angle(_self) end + +---@param _self CircularSector +---@return number +function CircularSector.half_angle(_self) end + + + +---@class CircularSegment : ReflectReference +--- A primitive representing a circular segment: +--- the area enclosed by the arc of a circle and its chord (the line between its endpoints). +--- +--- The segment is drawn starting from [`Vec2::Y`], extending equally on either side. +--- To orient the segment differently, apply a rotation. +--- The segment is drawn with the center of its circle at the origin [`Vec2::ZERO`]. +--- When positioning a segment, the [`apothem`](Self::apothem) function may be particularly useful. +--- +--- **Warning:** Circular segments with negative angle or radius, or with angle greater than an entire circle, are not officially supported. +--- We recommend normalizing circular segments to have an angle in [0, 2π]. +---@field arc ? Arc2d +CircularSegment = {} + +---@param radius number +---@param fraction number +---@return CircularSegment +function CircularSegment.from_turns(radius,fraction) end + +---@param _self CircularSegment +---@return number +function CircularSegment.angle(_self) end + +---@param _self CircularSegment +---@return number +function CircularSegment.half_chord_length(_self) end + +---@param radius number +---@param angle number +---@return CircularSegment +function CircularSegment.from_degrees(radius,angle) end + +---@param _self CircularSegment +---@return number +function CircularSegment.arc_length(_self) end + +---@param _self CircularSegment +---@return number +function CircularSegment.radius(_self) end + +---@param _self CircularSegment +---@return number +function CircularSegment.sagitta(_self) end + +---@param radius number +---@param half_angle number +---@return CircularSegment +function CircularSegment.new(radius,half_angle) end + +---@param _self CircularSegment +---@return number +function CircularSegment.half_angle(_self) end + +---@param _self CircularSegment +---@return number +function CircularSegment.apothem(_self) end + +---@param _self CircularSegment +---@return Vec2 +function CircularSegment.chord_midpoint(_self) end + +---@param _self CircularSegment +---@return CircularSegment +function CircularSegment.clone(_self) end + +---@param _self CircularSegment +---@return number +function CircularSegment.chord_length(_self) end + +---@param _self CircularSegment +---@param other CircularSegment +---@return boolean +function CircularSegment.__eq(_self,other) end + +---@param _self CircularSegment +---@param other CircularSegment +---@return boolean +function CircularSegment.eq(_self,other) end + +---@param radius number +---@param angle number +---@return CircularSegment +function CircularSegment.from_radians(radius,angle) end + + + +---@class ConvexPolygon : ReflectReference +--- A convex polygon with `N` vertices. +---@field vertices ? Vec2[] +ConvexPolygon = {} + +---@param _self ConvexPolygon +---@param other ConvexPolygon +---@return boolean +function ConvexPolygon.__eq(_self,other) end + +---@param _self ConvexPolygon +---@param other ConvexPolygon +---@return boolean +function ConvexPolygon.eq(_self,other) end + +---@param _self ConvexPolygon +---@return ConvexPolygon +function ConvexPolygon.clone(_self) end + + + +---@class Ellipse : ReflectReference +--- An ellipse primitive, which is like a circle, but the width and height can be different +--- +--- Ellipse does not implement [`Inset`] as concentric ellipses do not have parallel curves: +--- if the ellipse is not a circle, the inset shape is not actually an ellipse (although it may look like one) but can also be a lens-like shape. +---@field half_size ? Vec2 +Ellipse = {} + +---@param _self Ellipse +---@return number +function Ellipse.eccentricity(_self) end + +---@param _self Ellipse +---@return number +function Ellipse.semi_minor(_self) end + +---@param _self Ellipse +---@return Ellipse +function Ellipse.clone(_self) end + +---@param _self Ellipse +---@return number +function Ellipse.semi_major(_self) end + +---@param _self Ellipse +---@param other Ellipse +---@return boolean +function Ellipse.__eq(_self,other) end + +---@param _self Ellipse +---@param other Ellipse +---@return boolean +function Ellipse.eq(_self,other) end + +---@param size Vec2 +---@return Ellipse +function Ellipse.from_size(size) end + +---@param half_width number +---@param half_height number +---@return Ellipse +function Ellipse.new(half_width,half_height) end + +---@param _self Ellipse +---@return number +function Ellipse.focal_length(_self) end + + + +---@class Line2d : ReflectReference +--- An infinite line going through the origin along a direction in 2D space. +--- +--- For a finite line: [`Segment2d`] +---@field direction ? Dir2 +Line2d = {} + +---@param _self Line2d +---@return Line2d +function Line2d.clone(_self) end + +---@param _self Line2d +---@param other Line2d +---@return boolean +function Line2d.__eq(_self,other) end + +---@param _self Line2d +---@param other Line2d +---@return boolean +function Line2d.eq(_self,other) end + + + +---@class Plane2d : ReflectReference +--- An unbounded plane in 2D space. It forms a separating surface through the origin, +--- stretching infinitely far +---@field normal ? Dir2 +Plane2d = {} + +---@param _self Plane2d +---@param other Plane2d +---@return boolean +function Plane2d.__eq(_self,other) end + +---@param _self Plane2d +---@param other Plane2d +---@return boolean +function Plane2d.eq(_self,other) end + +---@param _self Plane2d +---@return Plane2d +function Plane2d.clone(_self) end + +---@param normal Vec2 +---@return Plane2d +function Plane2d.new(normal) end + + + +---@class Polygon : ReflectReference +--- A polygon with N vertices. +---@field vertices ? Vec2[] +Polygon = {} + +---@param _self Polygon +---@param other Polygon +---@return boolean +function Polygon.__eq(_self,other) end + +---@param _self Polygon +---@param other Polygon +---@return boolean +function Polygon.eq(_self,other) end + +---@param _self Polygon +---@return Polygon +function Polygon.clone(_self) end + +---@param _self Polygon +---@return boolean +function Polygon.is_simple(_self) end + + + +---@class Polyline2d : ReflectReference +--- A series of connected line segments in 2D space. +---@field vertices ? Vec2[] +Polyline2d = {} + +---@param _self Polyline2d +---@param other Polyline2d +---@return boolean +function Polyline2d.__eq(_self,other) end + +---@param _self Polyline2d +---@param other Polyline2d +---@return boolean +function Polyline2d.eq(_self,other) end + +---@param _self Polyline2d +---@return Polyline2d +function Polyline2d.clone(_self) end + +---@param start Vec2 +---@param _end Vec2 +---@param subdivisions integer +---@return Polyline2d +function Polyline2d.with_subdivisions(start,_end,subdivisions) end + + + +---@class Rectangle : ReflectReference +--- A rectangle primitive, which is like a square, except that the width and height can be different +---@field half_size ? Vec2 +Rectangle = {} + +---@param _self Rectangle +---@param point Vec2 +---@return Vec2 +function Rectangle.closest_point(_self,point) end + +---@param length number +---@return Rectangle +function Rectangle.from_length(length) end + +---@param _self Rectangle +---@return Rectangle +function Rectangle.clone(_self) end + +---@param _self Rectangle +---@return Vec2 +function Rectangle.size(_self) end + +---@param _self Rectangle +---@param other Rectangle +---@return boolean +function Rectangle.__eq(_self,other) end + +---@param _self Rectangle +---@param other Rectangle +---@return boolean +function Rectangle.eq(_self,other) end + +---@param size Vec2 +---@return Rectangle +function Rectangle.from_size(size) end + +---@param point1 Vec2 +---@param point2 Vec2 +---@return Rectangle +function Rectangle.from_corners(point1,point2) end + +---@param width number +---@param height number +---@return Rectangle +function Rectangle.new(width,height) end + + + +---@class RegularPolygon : ReflectReference +--- A polygon centered on the origin where all vertices lie on a circle, equally far apart. +---@field circumcircle ? Circle +---@field sides ? integer +RegularPolygon = {} + +---@param _self RegularPolygon +---@return number +function RegularPolygon.internal_angle_degrees(_self) end + +---@param _self RegularPolygon +---@return number +function RegularPolygon.inradius(_self) end + +---@param _self RegularPolygon +---@return number +function RegularPolygon.external_angle_degrees(_self) end + +---@param _self RegularPolygon +---@return number +function RegularPolygon.circumradius(_self) end + +---@param _self RegularPolygon +---@return number +function RegularPolygon.internal_angle_radians(_self) end + +---@param _self RegularPolygon +---@return number +function RegularPolygon.side_length(_self) end + +---@param _self RegularPolygon +---@return number +function RegularPolygon.external_angle_radians(_self) end + +---@param circumradius number +---@param sides integer +---@return RegularPolygon +function RegularPolygon.new(circumradius,sides) end + +---@param _self RegularPolygon +---@return RegularPolygon +function RegularPolygon.clone(_self) end + +---@param _self RegularPolygon +---@param other RegularPolygon +---@return boolean +function RegularPolygon.__eq(_self,other) end + +---@param _self RegularPolygon +---@param other RegularPolygon +---@return boolean +function RegularPolygon.eq(_self,other) end + + + +---@class Rhombus : ReflectReference +--- A rhombus primitive, also known as a diamond shape. +--- A four sided polygon, centered on the origin, where opposite sides are parallel but without +--- requiring right angles. +---@field half_diagonals ? Vec2 +Rhombus = {} + +---@param horizontal_diagonal number +---@param vertical_diagonal number +---@return Rhombus +function Rhombus.new(horizontal_diagonal,vertical_diagonal) end + +---@param _self Rhombus +---@return number +function Rhombus.inradius(_self) end + +---@param _self Rhombus +---@param other Rhombus +---@return boolean +function Rhombus.__eq(_self,other) end + +---@param _self Rhombus +---@param other Rhombus +---@return boolean +function Rhombus.eq(_self,other) end + +---@param _self Rhombus +---@return Rhombus +function Rhombus.clone(_self) end + +---@param inradius number +---@return Rhombus +function Rhombus.from_inradius(inradius) end + +---@param side number +---@return Rhombus +function Rhombus.from_side(side) end + +---@param _self Rhombus +---@return number +function Rhombus.side(_self) end + +---@param _self Rhombus +---@return number +function Rhombus.circumradius(_self) end + +---@param _self Rhombus +---@param point Vec2 +---@return Vec2 +function Rhombus.closest_point(_self,point) end + + + +---@class Segment2d : ReflectReference +--- A line segment defined by two endpoints in 2D space. +---@field vertices ? Vec2[] +Segment2d = {} + +---@param _self Segment2d +---@return Segment2d +function Segment2d.centered(_self) end + +---@param point1 Vec2 +---@param point2 Vec2 +---@return Segment2d +function Segment2d.new(point1,point2) end + +---@param _self Segment2d +---@return Vec2 +function Segment2d.center(_self) end + +---@param _self Segment2d +---@return Segment2d +function Segment2d.reversed(_self) end + +---@param _self Segment2d +---@return Dir2 +function Segment2d.right_normal(_self) end + +---@param _self Segment2d +---@param other Segment2d +---@return boolean +function Segment2d.__eq(_self,other) end + +---@param _self Segment2d +---@param other Segment2d +---@return boolean +function Segment2d.eq(_self,other) end + +---@param _self Segment2d +---@return Vec2 +function Segment2d.scaled_direction(_self) end + +---@param _self Segment2d +---@return number +function Segment2d.length_squared(_self) end + +---@param _self Segment2d +---@return Vec2 +function Segment2d.point1(_self) end + +---@param _self Segment2d +---@param point Vec2 +---@return Vec2 +function Segment2d.closest_point(_self,point) end + +---@param _self Segment2d +---@return Vec2 +function Segment2d.point2(_self) end + +---@param ray Ray2d +---@param length number +---@return Segment2d +function Segment2d.from_ray_and_length(ray,length) end + +---@param _self Segment2d +---@param length number +---@return Segment2d +function Segment2d.resized(_self,length) end + +---@param _self Segment2d +---@return Vec2 +function Segment2d.scaled_right_normal(_self) end + +---@param direction Dir2 +---@param length number +---@return Segment2d +function Segment2d.from_direction_and_length(direction,length) end + +---@param _self Segment2d +---@return Segment2d +function Segment2d.clone(_self) end + +---@param _self Segment2d +---@return Dir2 +function Segment2d.direction(_self) end + +---@param _self Segment2d +---@param rotation Rot2 +---@return Segment2d +function Segment2d.rotated_around_center(_self,rotation) end + +---@param _self Segment2d +---@return number +function Segment2d.length(_self) end + +---@param _self Segment2d +---@param rotation Rot2 +---@return Segment2d +function Segment2d.rotated(_self,rotation) end + +---@param _self Segment2d +---@return Dir2 +function Segment2d.left_normal(_self) end + +---@param _self Segment2d +---@param translation Vec2 +---@return Segment2d +function Segment2d.translated(_self,translation) end + +---@param _self Segment2d +---@return Vec2 +function Segment2d.scaled_left_normal(_self) end + +---@param scaled_direction Vec2 +---@return Segment2d +function Segment2d.from_scaled_direction(scaled_direction) end + +---@param _self Segment2d +---@param rotation Rot2 +---@param point Vec2 +---@return Segment2d +function Segment2d.rotated_around(_self,rotation,point) end + +---@param _self Segment2d +---@return nil +function Segment2d.reverse(_self) end + + + +---@class Triangle2d : ReflectReference +--- A triangle in 2D space +---@field vertices ? Vec2[] +Triangle2d = {} + +---@param a Vec2 +---@param b Vec2 +---@param c Vec2 +---@return Triangle2d +function Triangle2d.new(a,b,c) end + +---@param _self Triangle2d +---@return Triangle2d +function Triangle2d.reversed(_self) end + +---@param _self Triangle2d +---@return boolean +function Triangle2d.is_obtuse(_self) end + +---@param _self Triangle2d +---@return boolean +function Triangle2d.is_acute(_self) end + +---@param _self Triangle2d +---@return boolean +function Triangle2d.is_degenerate(_self) end + +---@param _self Triangle2d +---@param other Triangle2d +---@return boolean +function Triangle2d.__eq(_self,other) end + +---@param _self Triangle2d +---@param other Triangle2d +---@return boolean +function Triangle2d.eq(_self,other) end + +---@param _self Triangle2d +---@return Triangle2d +function Triangle2d.clone(_self) end + +---@param _self Triangle2d +---@return nil +function Triangle2d.reverse(_self) end + + + +---@class Capsule3d : ReflectReference +--- A 3D capsule primitive centered on the origin +--- A three-dimensional capsule is defined as a surface at a distance (radius) from a line +---@field radius ? number +---@field half_length ? number +Capsule3d = {} + +---@param radius number +---@param length number +---@return Capsule3d +function Capsule3d.new(radius,length) end + +---@param _self Capsule3d +---@param other Capsule3d +---@return boolean +function Capsule3d.__eq(_self,other) end + +---@param _self Capsule3d +---@param other Capsule3d +---@return boolean +function Capsule3d.eq(_self,other) end + +---@param _self Capsule3d +---@return Capsule3d +function Capsule3d.clone(_self) end + +---@param _self Capsule3d +---@return Cylinder +function Capsule3d.to_cylinder(_self) end + + + +---@class Cone : ReflectReference +--- A cone primitive centered on the midpoint between the tip of the cone and the center of its base. +--- +--- The cone is oriented with its tip pointing towards the Y axis. +---@field radius ? number +---@field height ? number +Cone = {} + +---@param _self Cone +---@return number +function Cone.slant_height(_self) end + +---@param _self Cone +---@return number +function Cone.base_area(_self) end + +---@param _self Cone +---@return Circle +function Cone.base(_self) end + +---@param radius number +---@param height number +---@return Cone +function Cone.new(radius,height) end + +---@param _self Cone +---@return Cone +function Cone.clone(_self) end + +---@param _self Cone +---@param other Cone +---@return boolean +function Cone.__eq(_self,other) end + +---@param _self Cone +---@param other Cone +---@return boolean +function Cone.eq(_self,other) end + +---@param _self Cone +---@return number +function Cone.lateral_area(_self) end + + + +---@class ConicalFrustum : ReflectReference +--- A conical frustum primitive. +--- A conical frustum can be created +--- by slicing off a section of a cone. +---@field radius_top ? number +---@field radius_bottom ? number +---@field height ? number +ConicalFrustum = {} + +---@param _self ConicalFrustum +---@return number +function ConicalFrustum.slant_height(_self) end + +---@param _self ConicalFrustum +---@return number +function ConicalFrustum.lateral_area(_self) end + +---@param _self ConicalFrustum +---@return number +function ConicalFrustum.bottom_base_area(_self) end + +---@param _self ConicalFrustum +---@return ConicalFrustum +function ConicalFrustum.clone(_self) end + +---@param _self ConicalFrustum +---@return Circle +function ConicalFrustum.bottom_base(_self) end + +---@param _self ConicalFrustum +---@param other ConicalFrustum +---@return boolean +function ConicalFrustum.__eq(_self,other) end + +---@param _self ConicalFrustum +---@param other ConicalFrustum +---@return boolean +function ConicalFrustum.eq(_self,other) end + +---@param _self ConicalFrustum +---@return Circle +function ConicalFrustum.top_base(_self) end + +---@param _self ConicalFrustum +---@return number +function ConicalFrustum.top_base_area(_self) end + + + +---@class Cuboid : ReflectReference +--- A cuboid primitive, which is like a cube, except that the x, y, and z dimensions are not +--- required to be the same. +---@field half_size ? Vec3 +Cuboid = {} + +---@param length number +---@return Cuboid +function Cuboid.from_length(length) end + +---@param size Vec3 +---@return Cuboid +function Cuboid.from_size(size) end + +---@param _self Cuboid +---@return Vec3 +function Cuboid.size(_self) end + +---@param _self Cuboid +---@param point Vec3 +---@return Vec3 +function Cuboid.closest_point(_self,point) end + +---@param _self Cuboid +---@param other Cuboid +---@return boolean +function Cuboid.__eq(_self,other) end + +---@param _self Cuboid +---@param other Cuboid +---@return boolean +function Cuboid.eq(_self,other) end + +---@param x_length number +---@param y_length number +---@param z_length number +---@return Cuboid +function Cuboid.new(x_length,y_length,z_length) end + +---@param point1 Vec3 +---@param point2 Vec3 +---@return Cuboid +function Cuboid.from_corners(point1,point2) end + +---@param _self Cuboid +---@return Cuboid +function Cuboid.clone(_self) end + + + +---@class Cylinder : ReflectReference +--- A cylinder primitive centered on the origin +---@field radius ? number +---@field half_height ? number +Cylinder = {} + +---@param _self Cylinder +---@return Circle +function Cylinder.base(_self) end + +---@param radius number +---@param height number +---@return Cylinder +function Cylinder.new(radius,height) end + +---@param _self Cylinder +---@return number +function Cylinder.base_area(_self) end + +---@param _self Cylinder +---@return number +function Cylinder.lateral_area(_self) end + +---@param _self Cylinder +---@return Cylinder +function Cylinder.clone(_self) end + +---@param _self Cylinder +---@param other Cylinder +---@return boolean +function Cylinder.__eq(_self,other) end + +---@param _self Cylinder +---@param other Cylinder +---@return boolean +function Cylinder.eq(_self,other) end + + + +---@class InfinitePlane3d : ReflectReference +--- An unbounded plane in 3D space. It forms a separating surface through the origin, +--- stretching infinitely far +---@field normal ? Dir3 +InfinitePlane3d = {} + +---@param _self InfinitePlane3d +---@return InfinitePlane3d +function InfinitePlane3d.clone(_self) end + +---@param _self InfinitePlane3d +---@param origin Vec3 +---@return Isometry3d +function InfinitePlane3d.isometry_into_xy(_self,origin) end + +---@param _self InfinitePlane3d +---@param other InfinitePlane3d +---@return boolean +function InfinitePlane3d.__eq(_self,other) end + +---@param _self InfinitePlane3d +---@param other InfinitePlane3d +---@return boolean +function InfinitePlane3d.eq(_self,other) end + +---@param _self InfinitePlane3d +---@param origin Vec3 +---@return Isometry3d +function InfinitePlane3d.isometry_from_xy(_self,origin) end + + + +---@class Line3d : ReflectReference +--- An infinite line going through the origin along a direction in 3D space. +--- +--- For a finite line: [`Segment3d`] +---@field direction ? Dir3 +Line3d = {} + +---@param _self Line3d +---@return Line3d +function Line3d.clone(_self) end + +---@param _self Line3d +---@param other Line3d +---@return boolean +function Line3d.__eq(_self,other) end + +---@param _self Line3d +---@param other Line3d +---@return boolean +function Line3d.eq(_self,other) end + + + +---@class Plane3d : ReflectReference +--- A bounded plane in 3D space. It forms a surface starting from the origin with a defined height and width. +---@field normal ? Dir3 +---@field half_size ? Vec2 +Plane3d = {} + +---@param _self Plane3d +---@param other Plane3d +---@return boolean +function Plane3d.__eq(_self,other) end + +---@param _self Plane3d +---@param other Plane3d +---@return boolean +function Plane3d.eq(_self,other) end + +---@param _self Plane3d +---@return Plane3d +function Plane3d.clone(_self) end + +---@param normal Vec3 +---@param half_size Vec2 +---@return Plane3d +function Plane3d.new(normal,half_size) end + + + +---@class Polyline3d : ReflectReference +--- A series of connected line segments in 3D space. +---@field vertices ? Vec3[] +Polyline3d = {} + +---@param _self Polyline3d +---@param other Polyline3d +---@return boolean +function Polyline3d.__eq(_self,other) end + +---@param _self Polyline3d +---@param other Polyline3d +---@return boolean +function Polyline3d.eq(_self,other) end + +---@param _self Polyline3d +---@return Polyline3d +function Polyline3d.clone(_self) end + +---@param start Vec3 +---@param _end Vec3 +---@param subdivisions integer +---@return Polyline3d +function Polyline3d.with_subdivisions(start,_end,subdivisions) end + + + +---@class Segment3d : ReflectReference +--- A line segment defined by two endpoints in 3D space. +---@field vertices ? Vec3[] +Segment3d = {} + +---@param _self Segment3d +---@return Dir3 +function Segment3d.direction(_self) end + +---@param _self Segment3d +---@param point Vec3 +---@return Vec3 +function Segment3d.closest_point(_self,point) end + +---@param ray Ray3d +---@param length number +---@return Segment3d +function Segment3d.from_ray_and_length(ray,length) end + +---@param _self Segment3d +---@return number +function Segment3d.length_squared(_self) end + +---@param _self Segment3d +---@param other Segment3d +---@return boolean +function Segment3d.__eq(_self,other) end + +---@param _self Segment3d +---@param other Segment3d +---@return boolean +function Segment3d.eq(_self,other) end + +---@param _self Segment3d +---@param translation Vec3 +---@return Segment3d +function Segment3d.translated(_self,translation) end + +---@param _self Segment3d +---@param rotation Quat +---@param point Vec3 +---@return Segment3d +function Segment3d.rotated_around(_self,rotation,point) end + +---@param _self Segment3d +---@return Segment3d +function Segment3d.reversed(_self) end + +---@param _self Segment3d +---@return nil +function Segment3d.reverse(_self) end + +---@param _self Segment3d +---@param rotation Quat +---@return Segment3d +function Segment3d.rotated(_self,rotation) end + +---@param _self Segment3d +---@return number +function Segment3d.length(_self) end + +---@param scaled_direction Vec3 +---@return Segment3d +function Segment3d.from_scaled_direction(scaled_direction) end + +---@param _self Segment3d +---@return Segment3d +function Segment3d.centered(_self) end + +---@param _self Segment3d +---@return Vec3 +function Segment3d.point1(_self) end + +---@param _self Segment3d +---@return Vec3 +function Segment3d.point2(_self) end + +---@param _self Segment3d +---@return Vec3 +function Segment3d.center(_self) end + +---@param _self Segment3d +---@param rotation Quat +---@return Segment3d +function Segment3d.rotated_around_center(_self,rotation) end + +---@param _self Segment3d +---@param length number +---@return Segment3d +function Segment3d.resized(_self,length) end + +---@param direction Dir3 +---@param length number +---@return Segment3d +function Segment3d.from_direction_and_length(direction,length) end + +---@param _self Segment3d +---@return Segment3d +function Segment3d.clone(_self) end + +---@param point1 Vec3 +---@param point2 Vec3 +---@return Segment3d +function Segment3d.new(point1,point2) end + +---@param _self Segment3d +---@return Vec3 +function Segment3d.scaled_direction(_self) end + + + +---@class Sphere : ReflectReference +--- A sphere primitive, representing the set of all points some distance from the origin +---@field radius ? number +Sphere = {} + +---@param _self Sphere +---@return Sphere +function Sphere.clone(_self) end + +---@param _self Sphere +---@param other Sphere +---@return boolean +function Sphere.__eq(_self,other) end + +---@param _self Sphere +---@param other Sphere +---@return boolean +function Sphere.eq(_self,other) end + +---@param radius number +---@return Sphere +function Sphere.new(radius) end + +---@param _self Sphere +---@param point Vec3 +---@return Vec3 +function Sphere.closest_point(_self,point) end + +---@param _self Sphere +---@return number +function Sphere.diameter(_self) end + + + +---@class Tetrahedron : ReflectReference +--- A tetrahedron primitive. +---@field vertices ? Vec3[] +Tetrahedron = {} + +---@param a Vec3 +---@param b Vec3 +---@param c Vec3 +---@param d Vec3 +---@return Tetrahedron +function Tetrahedron.new(a,b,c,d) end + +---@param _self Tetrahedron +---@return Vec3 +function Tetrahedron.centroid(_self) end + +---@param _self Tetrahedron +---@return number +function Tetrahedron.signed_volume(_self) end + +---@param _self Tetrahedron +---@param other Tetrahedron +---@return boolean +function Tetrahedron.__eq(_self,other) end + +---@param _self Tetrahedron +---@param other Tetrahedron +---@return boolean +function Tetrahedron.eq(_self,other) end + +---@param _self Tetrahedron +---@return Tetrahedron +function Tetrahedron.clone(_self) end + + + +---@class Torus : ReflectReference +--- A torus primitive, often representing a ring or donut shape +--- The set of points some distance from a circle centered at the origin +---@field minor_radius ? number +---@field major_radius ? number +Torus = {} + +---@param inner_radius number +---@param outer_radius number +---@return Torus +function Torus.new(inner_radius,outer_radius) end + +---@param _self Torus +---@param other Torus +---@return boolean +function Torus.__eq(_self,other) end + +---@param _self Torus +---@param other Torus +---@return boolean +function Torus.eq(_self,other) end + +---@param _self Torus +---@return Torus +function Torus.clone(_self) end + +---@param _self Torus +---@return number +function Torus.inner_radius(_self) end + +---@param _self Torus +---@return number +function Torus.outer_radius(_self) end + + + +---@class Triangle3d : ReflectReference +--- A 3D triangle primitive. +---@field vertices ? Vec3[] +Triangle3d = {} + +---@param _self Triangle3d +---@return Vec3 +function Triangle3d.centroid(_self) end + +---@param _self Triangle3d +---@param other Triangle3d +---@return boolean +function Triangle3d.__eq(_self,other) end + +---@param _self Triangle3d +---@param other Triangle3d +---@return boolean +function Triangle3d.eq(_self,other) end + +---@param a Vec3 +---@param b Vec3 +---@param c Vec3 +---@return Triangle3d +function Triangle3d.new(a,b,c) end + +---@param _self Triangle3d +---@return boolean +function Triangle3d.is_obtuse(_self) end + +---@param _self Triangle3d +---@return nil +function Triangle3d.reverse(_self) end + +---@param _self Triangle3d +---@return boolean +function Triangle3d.is_acute(_self) end + +---@param _self Triangle3d +---@return Triangle3d +function Triangle3d.reversed(_self) end + +---@param _self Triangle3d +---@return Triangle3d +function Triangle3d.clone(_self) end + +---@param _self Triangle3d +---@return Vec3 +function Triangle3d.circumcenter(_self) end + +---@param _self Triangle3d +---@return boolean +function Triangle3d.is_degenerate(_self) end + + + +---@class Ray2d : ReflectReference +--- An infinite half-line starting at `origin` and going in `direction` in 2D space. +---@field origin ? Vec2 +---@field direction ? Dir2 +Ray2d = {} + +---@param _self Ray2d +---@param plane_origin Vec2 +---@param plane Plane2d +---@return number | nil +function Ray2d.intersect_plane(_self,plane_origin,plane) end + +---@param origin Vec2 +---@param direction Dir2 +---@return Ray2d +function Ray2d.new(origin,direction) end + +---@param _self Ray2d +---@param distance number +---@return Vec2 +function Ray2d.get_point(_self,distance) end + +---@param _self Ray2d +---@return Ray2d +function Ray2d.clone(_self) end + +---@param _self Ray2d +---@param other Ray2d +---@return boolean +function Ray2d.__eq(_self,other) end + +---@param _self Ray2d +---@param other Ray2d +---@return boolean +function Ray2d.eq(_self,other) end + + + +---@class Ray3d : ReflectReference +--- An infinite half-line starting at `origin` and going in `direction` in 3D space. +---@field origin ? Vec3 +---@field direction ? Dir3 +Ray3d = {} + +---@param _self Ray3d +---@return Ray3d +function Ray3d.clone(_self) end + +---@param origin Vec3 +---@param direction Dir3 +---@return Ray3d +function Ray3d.new(origin,direction) end + +---@param _self Ray3d +---@param plane_origin Vec3 +---@param plane InfinitePlane3d +---@return number | nil +function Ray3d.intersect_plane(_self,plane_origin,plane) end + +---@param _self Ray3d +---@param other Ray3d +---@return boolean +function Ray3d.__eq(_self,other) end + +---@param _self Ray3d +---@param other Ray3d +---@return boolean +function Ray3d.eq(_self,other) end + +---@param _self Ray3d +---@param distance number +---@return Vec3 +function Ray3d.get_point(_self,distance) end + + + +---@class IRect : ReflectReference +--- A rectangle defined by two opposite corners. +--- +--- The rectangle is axis aligned, and defined by its minimum and maximum coordinates, +--- stored in `IRect::min` and `IRect::max`, respectively. The minimum/maximum invariant +--- must be upheld by the user when directly assigning the fields, otherwise some methods +--- produce invalid results. It is generally recommended to use one of the constructor +--- methods instead, which will ensure this invariant is met, unless you already have +--- the minimum and maximum corners. +---@field min ? IVec2 +---@field max ? IVec2 +IRect = {} + +---@param _self IRect +---@return IRect +function IRect.clone(_self) end + +---@param _self IRect +---@return IVec2 +function IRect.half_size(_self) end + +---@param x0 integer +---@param y0 integer +---@param x1 integer +---@param y1 integer +---@return IRect +function IRect.new(x0,y0,x1,y1) end + +---@param _self IRect +---@param other IVec2 +---@return IRect +function IRect.union_point(_self,other) end + +---@param _self IRect +---@return Rect +function IRect.as_rect(_self) end + +---@param _self IRect +---@return IVec2 +function IRect.center(_self) end + +---@param _self IRect +---@return boolean +function IRect.is_empty(_self) end + +---@param _self IRect +---@param other IRect +---@return boolean +function IRect.__eq(_self,other) end + +---@param _self IRect +---@param other IRect +---@return boolean +function IRect.eq(_self,other) end + +---@param origin IVec2 +---@param half_size IVec2 +---@return IRect +function IRect.from_center_half_size(origin,half_size) end + +---@param _self IRect +---@param other IRect +---@return IRect +function IRect.intersect(_self,other) end + +---@param _self IRect +---@param point IVec2 +---@return boolean +function IRect.contains(_self,point) end + +---@param _self IRect +---@return IVec2 +function IRect.size(_self) end + +---@param _self IRect +---@param other IRect +---@return IRect +function IRect.union(_self,other) end + +---@param _self IRect +---@return integer +function IRect.height(_self) end + +---@param _self IRect +---@param expansion integer +---@return IRect +function IRect.inflate(_self,expansion) end + +---@param p0 IVec2 +---@param p1 IVec2 +---@return IRect +function IRect.from_corners(p0,p1) end + +---@param origin IVec2 +---@param size IVec2 +---@return IRect +function IRect.from_center_size(origin,size) end + +---@param _self IRect +---@return URect +function IRect.as_urect(_self) end + +---@param _self IRect +---@return integer +function IRect.width(_self) end + +---@param _self IRect +---@return nil +function IRect.assert_receiver_is_total_eq(_self) end + + + +---@class Rect : ReflectReference +--- A rectangle defined by two opposite corners. +--- +--- The rectangle is axis aligned, and defined by its minimum and maximum coordinates, +--- stored in `Rect::min` and `Rect::max`, respectively. The minimum/maximum invariant +--- must be upheld by the user when directly assigning the fields, otherwise some methods +--- produce invalid results. It is generally recommended to use one of the constructor +--- methods instead, which will ensure this invariant is met, unless you already have +--- the minimum and maximum corners. +---@field min ? Vec2 +---@field max ? Vec2 +Rect = {} + +---@param _self Rect +---@return Vec2 +function Rect.center(_self) end + +---@param _self Rect +---@return Vec2 +function Rect.half_size(_self) end + +---@param _self Rect +---@return Vec2 +function Rect.size(_self) end + +---@param _self Rect +---@return boolean +function Rect.is_empty(_self) end + +---@param _self Rect +---@param other Vec2 +---@return Rect +function Rect.union_point(_self,other) end + +---@param x0 number +---@param y0 number +---@param x1 number +---@param y1 number +---@return Rect +function Rect.new(x0,y0,x1,y1) end + +---@param _self Rect +---@param other Rect +---@return Rect +function Rect.union(_self,other) end + +---@param _self Rect +---@param other Rect +---@return Rect +function Rect.intersect(_self,other) end + +---@param _self Rect +---@param point Vec2 +---@return boolean +function Rect.contains(_self,point) end + +---@param p0 Vec2 +---@param p1 Vec2 +---@return Rect +function Rect.from_corners(p0,p1) end + +---@param _self Rect +---@return number +function Rect.height(_self) end + +---@param _self Rect +---@param expansion number +---@return Rect +function Rect.inflate(_self,expansion) end + +---@param _self Rect +---@return URect +function Rect.as_urect(_self) end + +---@param origin Vec2 +---@param size Vec2 +---@return Rect +function Rect.from_center_size(origin,size) end + +---@param _self Rect +---@param other Rect +---@return Rect +function Rect.normalize(_self,other) end + +---@param origin Vec2 +---@param half_size Vec2 +---@return Rect +function Rect.from_center_half_size(origin,half_size) end + +---@param _self Rect +---@return number +function Rect.width(_self) end + +---@param _self Rect +---@param other Rect +---@return boolean +function Rect.__eq(_self,other) end + +---@param _self Rect +---@param other Rect +---@return boolean +function Rect.eq(_self,other) end + +---@param _self Rect +---@return IRect +function Rect.as_irect(_self) end + +---@param _self Rect +---@return number +function Rect.area(_self) end + +---@param _self Rect +---@return Rect +function Rect.clone(_self) end + + + +---@class URect : ReflectReference +--- A rectangle defined by two opposite corners. +--- +--- The rectangle is axis aligned, and defined by its minimum and maximum coordinates, +--- stored in `URect::min` and `URect::max`, respectively. The minimum/maximum invariant +--- must be upheld by the user when directly assigning the fields, otherwise some methods +--- produce invalid results. It is generally recommended to use one of the constructor +--- methods instead, which will ensure this invariant is met, unless you already have +--- the minimum and maximum corners. +---@field min ? UVec2 +---@field max ? UVec2 +URect = {} + +---@param _self URect +---@return boolean +function URect.is_empty(_self) end + +---@param _self URect +---@param other URect +---@return URect +function URect.intersect(_self,other) end + +---@param _self URect +---@param other UVec2 +---@return URect +function URect.union_point(_self,other) end + +---@param _self URect +---@return UVec2 +function URect.half_size(_self) end + +---@param _self URect +---@return UVec2 +function URect.center(_self) end + +---@param _self URect +---@return Rect +function URect.as_rect(_self) end + +---@param _self URect +---@param other URect +---@return boolean +function URect.__eq(_self,other) end + +---@param _self URect +---@param other URect +---@return boolean +function URect.eq(_self,other) end + +---@param _self URect +---@return UVec2 +function URect.size(_self) end + +---@param _self URect +---@return IRect +function URect.as_irect(_self) end + +---@param _self URect +---@return URect +function URect.clone(_self) end + +---@param origin UVec2 +---@param size UVec2 +---@return URect +function URect.from_center_size(origin,size) end + +---@param _self URect +---@return integer +function URect.width(_self) end + +---@param _self URect +---@param expansion integer +---@return URect +function URect.inflate(_self,expansion) end + +---@param _self URect +---@param point UVec2 +---@return boolean +function URect.contains(_self,point) end + +---@param p0 UVec2 +---@param p1 UVec2 +---@return URect +function URect.from_corners(p0,p1) end + +---@param _self URect +---@return nil +function URect.assert_receiver_is_total_eq(_self) end + +---@param _self URect +---@param other URect +---@return URect +function URect.union(_self,other) end + +---@param x0 integer +---@param y0 integer +---@param x1 integer +---@param y1 integer +---@return URect +function URect.new(x0,y0,x1,y1) end + +---@param origin UVec2 +---@param half_size UVec2 +---@return URect +function URect.from_center_half_size(origin,half_size) end + +---@param _self URect +---@return integer +function URect.height(_self) end + + + +---@class Rot2 : ReflectReference +--- A 2D rotation. +--- +--- # Example +--- +--- ``` +--- # use approx::assert_relative_eq; +--- # use bevy_math::{Rot2, Vec2}; +--- use std::f32::consts::PI; +--- +--- // Create rotations from counterclockwise angles in radians or degrees +--- let rotation1 = Rot2::radians(PI / 2.0); +--- let rotation2 = Rot2::degrees(45.0); +--- +--- // Get the angle back as radians or degrees +--- assert_eq!(rotation1.as_degrees(), 90.0); +--- assert_eq!(rotation2.as_radians(), PI / 4.0); +--- +--- // "Add" rotations together using `*` +--- #[cfg(feature = "approx")] +--- assert_relative_eq!(rotation1 * rotation2, Rot2::degrees(135.0)); +--- +--- // Rotate vectors +--- #[cfg(feature = "approx")] +--- assert_relative_eq!(rotation1 * Vec2::X, Vec2::Y); +--- ``` +---@field cos ? number +---@field sin ? number +---@operator mul(Vec2): Vec2 +---@operator mul(Dir2): Dir2 +---@operator mul(Rot2): Rot2 +Rot2 = {} + +---@param _self Rot2 +---@param _end Rot2 +---@param s number +---@return Rot2 +function Rot2.slerp(_self,_end,s) end + +---@param _self Rot2 +---@return [number, number] +function Rot2.sin_cos(_self) end + +---@param _self Rot2 +---@return boolean +function Rot2.is_finite(_self) end + +---@param _self Rot2 +---@return Rot2 +function Rot2.normalize(_self) end + +---@param _self Rot2 +---@return boolean +function Rot2.is_normalized(_self) end + +---@param _self Rot2 +---@return boolean +function Rot2.is_near_identity(_self) end + +---@param _self Rot2 +---@return Rot2 +function Rot2.clone(_self) end + +---@param _self Rot2 +---@return number +function Rot2.length(_self) end + +---@param _self Rot2 +---@return Rot2 +function Rot2.inverse(_self) end + +---@param _self Rot2 +---@return number +function Rot2.as_radians(_self) end + +---@param p1 Rot2 +---@param p2 Vec2 +---@return Vec2 +function Rot2.mul(p1,p2) end + +---@param _self Rot2 +---@param other Rot2 +---@return boolean +function Rot2.__eq(_self,other) end + +---@param _self Rot2 +---@param other Rot2 +---@return boolean +function Rot2.eq(_self,other) end + +---@param sin number +---@param cos number +---@return Rot2 +function Rot2.from_sin_cos(sin,cos) end + +---@param _self Rot2 +---@return number +function Rot2.length_squared(_self) end + +---@param _self Rot2 +---@return boolean +function Rot2.is_nan(_self) end + +---@param _self Rot2 +---@return number +function Rot2.length_recip(_self) end + +---@param radians number +---@return Rot2 +function Rot2.radians(radians) end + +---@param _self Rot2 +---@param other Rot2 +---@return number +function Rot2.angle_to(_self,other) end + +---@param degrees number +---@return Rot2 +function Rot2.degrees(degrees) end + +---@param _self Rot2 +---@param _end Rot2 +---@param s number +---@return Rot2 +function Rot2.nlerp(_self,_end,s) end + +---@param _self Rot2 +---@return Rot2 +function Rot2.fast_renormalize(_self) end + +---@param fraction number +---@return Rot2 +function Rot2.turn_fraction(fraction) end + +---@param _self Rot2 +---@param direction Dir2 +---@return Dir2 +function Rot2.mul(_self,direction) end + +---@param _self Rot2 +---@return number +function Rot2.as_degrees(_self) end + +---@param _self Rot2 +---@return number +function Rot2.as_turn_fraction(_self) end + +---@param p1 Rot2 +---@param p2 Rot2 +---@return Rot2 +function Rot2.mul(p1,p2) end + + + +---@class Instant : ReflectReference +---@operator sub(Instant): Duration +---@operator add(Duration): Instant +---@operator sub(Duration): Instant +Instant = {} + +---@param _self Instant +---@param other Instant +---@return boolean +function Instant.__eq(_self,other) end + +---@param _self Instant +---@param other Instant +---@return boolean +function Instant.eq(_self,other) end + +---@param _self Instant +---@param earlier Instant +---@return Duration +function Instant.saturating_duration_since(_self,earlier) end + +---@param _self Instant +---@return nil +function Instant.assert_receiver_is_total_eq(_self) end + +---@param _self Instant +---@return Duration +function Instant.elapsed(_self) end + +---@param _self Instant +---@param earlier Instant +---@return Duration +function Instant.duration_since(_self,earlier) end + +---@param p1 Instant +---@param p2 Instant +---@return Duration +function Instant.sub(p1,p2) end + +---@return Instant +function Instant.now() end + +---@param _self Instant +---@param other Duration +---@return Instant +function Instant.add(_self,other) end + +---@param _self Instant +---@param other Duration +---@return Instant +function Instant.sub(_self,other) end + +---@param _self Instant +---@return Instant +function Instant.clone(_self) end + + + +---@class Fixed : ReflectReference +--- The fixed timestep game clock following virtual time. +--- +--- A specialization of the [`Time`] structure. **For method documentation, see +--- [`Time#impl-Time`].** +--- +--- It is automatically inserted as a resource by +--- [`TimePlugin`](crate::TimePlugin) and updated based on +--- [`Time`](Virtual). The fixed clock is automatically set as the +--- generic [`Time`] resource during [`FixedUpdate`](bevy_app::FixedUpdate) +--- schedule processing. +--- +--- The fixed timestep clock advances in fixed-size increments, which is +--- extremely useful for writing logic (like physics) that should have +--- consistent behavior, regardless of framerate. +--- +--- The default [`timestep()`](Time::timestep) is 64 hertz, or 15625 +--- microseconds. This value was chosen because using 60 hertz has the potential +--- for a pathological interaction with the monitor refresh rate where the game +--- alternates between running two fixed timesteps and zero fixed timesteps per +--- frame (for example when running two fixed timesteps takes longer than a +--- frame). Additionally, the value is a power of two which losslessly converts +--- into [`f32`] and [`f64`]. +--- +--- To run a system on a fixed timestep, add it to one of the [`FixedMain`] +--- schedules, most commonly [`FixedUpdate`](bevy_app::FixedUpdate). +--- +--- This schedule is run a number of times between +--- [`PreUpdate`](bevy_app::PreUpdate) and [`Update`](bevy_app::Update) +--- according to the accumulated [`overstep()`](Time::overstep) time divided by +--- the [`timestep()`](Time::timestep). This means the schedule may run 0, 1 or +--- more times during a single update (which typically corresponds to a rendered +--- frame). +--- +--- `Time` and the generic [`Time`] resource will report a +--- [`delta()`](Time::delta) equal to [`timestep()`](Time::timestep) and always +--- grow [`elapsed()`](Time::elapsed) by one [`timestep()`](Time::timestep) per +--- iteration. +--- +--- The fixed timestep clock follows the [`Time`](Virtual) clock, which +--- means it is affected by [`pause()`](Time::pause), +--- [`set_relative_speed()`](Time::set_relative_speed) and +--- [`set_max_delta()`](Time::set_max_delta) from virtual time. If the virtual +--- clock is paused, the [`FixedUpdate`](bevy_app::FixedUpdate) schedule will +--- not run. It is guaranteed that the [`elapsed()`](Time::elapsed) time in +--- `Time` is always between the previous `elapsed()` and the current +--- `elapsed()` value in `Time`, so the values are compatible. +--- +--- Changing the timestep size while the game is running should not normally be +--- done, as having a regular interval is the point of this schedule, but it may +--- be necessary for effects like "bullet-time" if the normal granularity of the +--- fixed timestep is too big for the slowed down time. In this case, +--- [`set_timestep()`](Time::set_timestep) and be called to set a new value. The +--- new value will be used immediately for the next run of the +--- [`FixedUpdate`](bevy_app::FixedUpdate) schedule, meaning that it will affect +--- the [`delta()`](Time::delta) value for the very next +--- [`FixedUpdate`](bevy_app::FixedUpdate), even if it is still during the same +--- frame. Any [`overstep()`](Time::overstep) present in the accumulator will be +--- processed according to the new [`timestep()`](Time::timestep) value. +---@field timestep ? Duration +---@field overstep ? Duration +Fixed = {} + +---@param _self Fixed +---@return Fixed +function Fixed.clone(_self) end + + + +---@class Real : ReflectReference +--- Real time clock representing elapsed wall clock time. +--- +--- A specialization of the [`Time`] structure. **For method documentation, see +--- [`Time#impl-Time`].** +--- +--- It is automatically inserted as a resource by +--- [`TimePlugin`](crate::TimePlugin) and updated with time instants according +--- to [`TimeUpdateStrategy`](crate::TimeUpdateStrategy).[^disclaimer] +--- +--- Note: +--- Using [`TimeUpdateStrategy::ManualDuration`](crate::TimeUpdateStrategy::ManualDuration) +--- allows for mocking the wall clock for testing purposes. +--- Besides this use case, it is not recommended to do this, as it will no longer +--- represent "wall clock" time as intended. +--- +--- The [`delta()`](Time::delta) and [`elapsed()`](Time::elapsed) values of this +--- clock should be used for anything which deals specifically with real time +--- (wall clock time). It will not be affected by relative game speed +--- adjustments, pausing or other adjustments.[^disclaimer] +--- +--- The clock does not count time from [`startup()`](Time::startup) to +--- [`first_update()`](Time::first_update()) into elapsed, but instead will +--- start counting time from the first update call. [`delta()`](Time::delta) and +--- [`elapsed()`](Time::elapsed) will report zero on the first update as there +--- is no previous update instant. This means that a [`delta()`](Time::delta) of +--- zero must be handled without errors in application logic, as it may +--- theoretically also happen at other times. +--- +--- [`Instant`]s for [`startup()`](Time::startup), +--- [`first_update()`](Time::first_update) and +--- [`last_update()`](Time::last_update) are recorded and accessible. +--- +--- [^disclaimer]: When using [`TimeUpdateStrategy::ManualDuration`](crate::TimeUpdateStrategy::ManualDuration), +--- [`Time#impl-Time`] is only a *mock* of wall clock time. +--- +---@field startup ? Instant +---@field first_update ? Instant | nil +---@field last_update ? Instant | nil +Real = {} + +---@param _self Real +---@return Real +function Real.clone(_self) end + + + +---@class Stopwatch : ReflectReference +--- A Stopwatch is a struct that tracks elapsed time when started. +--- +--- Note that in order to advance the stopwatch [`tick`](Stopwatch::tick) **MUST** be called. +--- # Examples +--- +--- ``` +--- # use bevy_time::*; +--- use std::time::Duration; +--- let mut stopwatch = Stopwatch::new(); +--- assert_eq!(stopwatch.elapsed_secs(), 0.0); +--- +--- stopwatch.tick(Duration::from_secs_f32(1.0)); // tick one second +--- assert_eq!(stopwatch.elapsed_secs(), 1.0); +--- +--- stopwatch.pause(); +--- stopwatch.tick(Duration::from_secs_f32(1.0)); // paused stopwatches don't tick +--- assert_eq!(stopwatch.elapsed_secs(), 1.0); +--- +--- stopwatch.reset(); // reset the stopwatch +--- assert!(stopwatch.is_paused()); +--- assert_eq!(stopwatch.elapsed_secs(), 0.0); +--- ``` +---@field elapsed ? Duration +---@field is_paused ? boolean +Stopwatch = {} + +---@param _self Stopwatch +---@return number +function Stopwatch.elapsed_secs(_self) end + +---@param _self Stopwatch +---@return nil +function Stopwatch.pause(_self) end + +---@param _self Stopwatch +---@return Stopwatch +function Stopwatch.clone(_self) end + +---@param _self Stopwatch +---@return nil +function Stopwatch.reset(_self) end + +---@param _self Stopwatch +---@return nil +function Stopwatch.assert_receiver_is_total_eq(_self) end + +---@param _self Stopwatch +---@param time Duration +---@return nil +function Stopwatch.set_elapsed(_self,time) end + +---@param _self Stopwatch +---@param other Stopwatch +---@return boolean +function Stopwatch.__eq(_self,other) end + +---@param _self Stopwatch +---@param other Stopwatch +---@return boolean +function Stopwatch.eq(_self,other) end + +---@return Stopwatch +function Stopwatch.new() end + +---@param _self Stopwatch +---@return number +function Stopwatch.elapsed_secs_f64(_self) end + +---@param _self Stopwatch +---@return boolean +function Stopwatch.is_paused(_self) end + +---@param _self Stopwatch +---@return nil +function Stopwatch.unpause(_self) end + +---@param _self Stopwatch +---@return Duration +function Stopwatch.elapsed(_self) end + + + +---@class Timer : ReflectReference +--- Tracks elapsed time. Enters the finished state once `duration` is reached. +--- +--- Note that in order to advance the timer [`tick`](Timer::tick) **MUST** be called. +--- +--- # Timer modes +--- +--- There are two timer modes ([`TimerMode`]): +--- +--- - Non repeating timers will stop tracking and stay in the finished state until reset. +--- - Repeating timers will only be in the finished state on each tick `duration` is reached or +--- exceeded, and can still be reset at any given point. +--- +--- # Pausing timers +--- +--- You can pause a timer using [`Timer::pause`]. Paused timers will not have elapsed time increased. +--- +--- # Elapsing multiple times a frame +--- +--- Repeating timers might elapse multiple times per frame if the time is advanced by more than the timer duration. +--- You can check how many times a timer elapsed each tick with [`Timer::times_finished_this_tick`]. +--- For non-repeating timers, this will always be 0 or 1. +---@field stopwatch ? Stopwatch +---@field duration ? Duration +---@field mode ? TimerMode +---@field finished ? boolean +---@field times_finished_this_tick ? integer +Timer = {} + +---@param duration number +---@param mode TimerMode +---@return Timer +function Timer.from_seconds(duration,mode) end + +---@param _self Timer +---@return number +function Timer.elapsed_secs_f64(_self) end + +---@param _self Timer +---@return nil +function Timer.unpause(_self) end + +---@param _self Timer +---@return Timer +function Timer.clone(_self) end + +---@param _self Timer +---@return Duration +function Timer.remaining(_self) end + +---@param duration Duration +---@param mode TimerMode +---@return Timer +function Timer.new(duration,mode) end + +---@param _self Timer +---@return TimerMode +function Timer.mode(_self) end + +---@param _self Timer +---@return number +function Timer.fraction_remaining(_self) end + +---@param _self Timer +---@return nil +function Timer.assert_receiver_is_total_eq(_self) end + +---@param _self Timer +---@return number +function Timer.fraction(_self) end + +---@param _self Timer +---@param duration Duration +---@return nil +function Timer.set_duration(_self,duration) end + +---@param _self Timer +---@return nil +function Timer.reset(_self) end + +---@param _self Timer +---@return boolean +function Timer.is_paused(_self) end + +---@param _self Timer +---@param other Timer +---@return boolean +function Timer.__eq(_self,other) end + +---@param _self Timer +---@param other Timer +---@return boolean +function Timer.eq(_self,other) end + +---@param _self Timer +---@return Duration +function Timer.duration(_self) end + +---@param _self Timer +---@return number +function Timer.elapsed_secs(_self) end + +---@param _self Timer +---@return boolean +function Timer.just_finished(_self) end + +---@param _self Timer +---@return nil +function Timer.finish(_self) end + +---@param _self Timer +---@return nil +function Timer.pause(_self) end + +---@param _self Timer +---@return boolean +function Timer.is_finished(_self) end + +---@param _self Timer +---@return Duration +function Timer.elapsed(_self) end + +---@param _self Timer +---@param mode TimerMode +---@return nil +function Timer.set_mode(_self,mode) end + +---@param _self Timer +---@return nil +function Timer.almost_finish(_self) end + +---@param _self Timer +---@param time Duration +---@return nil +function Timer.set_elapsed(_self,time) end + +---@param _self Timer +---@return number +function Timer.remaining_secs(_self) end + +---@param _self Timer +---@return integer +function Timer.times_finished_this_tick(_self) end + + + +---@class TimerMode : ReflectReference +--- Specifies [`Timer`] behavior. +TimerMode = {} + +---@param _self TimerMode +---@return TimerMode +function TimerMode.clone(_self) end + +---@param _self TimerMode +---@param other TimerMode +---@return boolean +function TimerMode.__eq(_self,other) end + +---@param _self TimerMode +---@param other TimerMode +---@return boolean +function TimerMode.eq(_self,other) end + +---@param _self TimerMode +---@return nil +function TimerMode.assert_receiver_is_total_eq(_self) end + + + +---@class Virtual : ReflectReference +--- The virtual game clock representing game time. +--- +--- A specialization of the [`Time`] structure. **For method documentation, see +--- [`Time#impl-Time`].** +--- +--- Normally used as `Time`. It is automatically inserted as a resource +--- by [`TimePlugin`](crate::TimePlugin) and updated based on +--- [`Time`](Real). The virtual clock is automatically set as the default +--- generic [`Time`] resource for the update. +--- +--- The virtual clock differs from real time clock in that it can be paused, sped up +--- and slowed down. It also limits how much it can advance in a single update +--- in order to prevent unexpected behavior in cases where updates do not happen +--- at regular intervals (e.g. coming back after the program was suspended a long time). +--- +--- The virtual clock can be paused by calling [`pause()`](Time::pause) and +--- unpaused by calling [`unpause()`](Time::unpause). When the game clock is +--- paused [`delta()`](Time::delta) will be zero on each update, and +--- [`elapsed()`](Time::elapsed) will not grow. +--- [`effective_speed()`](Time::effective_speed) will return `0.0`. Calling +--- [`pause()`](Time::pause) will not affect value the [`delta()`](Time::delta) +--- value for the update currently being processed. +--- +--- The speed of the virtual clock can be changed by calling +--- [`set_relative_speed()`](Time::set_relative_speed). A value of `2.0` means +--- that virtual clock should advance twice as fast as real time, meaning that +--- [`delta()`](Time::delta) values will be double of what +--- [`Time::delta()`](Time::delta) reports and +--- [`elapsed()`](Time::elapsed) will go twice as fast as +--- [`Time::elapsed()`](Time::elapsed). Calling +--- [`set_relative_speed()`](Time::set_relative_speed) will not affect the +--- [`delta()`](Time::delta) value for the update currently being processed. +--- +--- The maximum amount of delta time that can be added by a single update can be +--- set by [`set_max_delta()`](Time::set_max_delta). This value serves a dual +--- purpose in the virtual clock. +--- +--- If the game temporarily freezes due to any reason, such as disk access, a +--- blocking system call, or operating system level suspend, reporting the full +--- elapsed delta time is likely to cause bugs in game logic. Usually if a +--- laptop is suspended for an hour, it doesn't make sense to try to simulate +--- the game logic for the elapsed hour when resuming. Instead it is better to +--- lose the extra time and pretend a shorter duration of time passed. Setting +--- [`max_delta()`](Time::max_delta) to a relatively short time means that the +--- impact on game logic will be minimal. +--- +--- If the game lags for some reason, meaning that it will take a longer time to +--- compute a frame than the real time that passes during the computation, then +--- we would fall behind in processing virtual time. If this situation persists, +--- and computing a frame takes longer depending on how much virtual time has +--- passed, the game would enter a "death spiral" where computing each frame +--- takes longer and longer and the game will appear to freeze. By limiting the +--- maximum time that can be added at once, we also limit the amount of virtual +--- time the game needs to compute for each frame. This means that the game will +--- run slow, and it will run slower than real time, but it will not freeze and +--- it will recover as soon as computation becomes fast again. +--- +--- You should set [`max_delta()`](Time::max_delta) to a value that is +--- approximately the minimum FPS your game should have even if heavily lagged +--- for a moment. The actual FPS when lagged will be somewhat lower than this, +--- depending on how much more time it takes to compute a frame compared to real +--- time. You should also consider how stable your FPS is, as the limit will +--- also dictate how big of an FPS drop you can accept without losing time and +--- falling behind real time. +---@field max_delta ? Duration +---@field paused ? boolean +---@field relative_speed ? number +---@field effective_speed ? number +Virtual = {} + +---@param _self Virtual +---@return Virtual +function Virtual.clone(_self) end + + + +---@class GlobalTransform : ReflectReference +--- [`GlobalTransform`] is an affine transformation from entity-local coordinates to worldspace coordinates. +--- +--- You cannot directly mutate [`GlobalTransform`]; instead, you change an entity's transform by manipulating +--- its [`Transform`], which indirectly causes Bevy to update its [`GlobalTransform`]. +--- +--- * To get the global transform of an entity, you should get its [`GlobalTransform`]. +--- * For transform hierarchies to work correctly, you must have both a [`Transform`] and a [`GlobalTransform`]. +--- [`GlobalTransform`] is automatically inserted whenever [`Transform`] is inserted. +--- +--- ## [`Transform`] and [`GlobalTransform`] +--- +--- [`Transform`] transforms an entity relative to its parent's reference frame, or relative to world space coordinates, +--- if it doesn't have a [`ChildOf`](bevy_ecs::hierarchy::ChildOf) component. +--- +--- [`GlobalTransform`] is managed by Bevy; it is computed by successively applying the [`Transform`] of each ancestor +--- entity which has a Transform. This is done automatically by Bevy-internal systems in the [`TransformSystems::Propagate`] +--- system set. +--- +--- This system runs during [`PostUpdate`](bevy_app::PostUpdate). If you +--- update the [`Transform`] of an entity in this schedule or after, you will notice a 1 frame lag +--- before the [`GlobalTransform`] is updated. +--- +--- [`TransformSystems::Propagate`]: crate::TransformSystems::Propagate +--- +--- # Examples +--- +--- - [`transform`][transform_example] +--- +--- [transform_example]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/transform.rs +---@field [1] Affine3A +---@operator mul(GlobalTransform): GlobalTransform +---@operator mul(Transform): GlobalTransform +---@operator mul(Vec3): Vec3 +GlobalTransform = {} + +---@param p1 GlobalTransform +---@param p2 GlobalTransform +---@return GlobalTransform +function GlobalTransform.mul(p1,p2) end + +---@param _self GlobalTransform +---@param parent GlobalTransform +---@return Transform +function GlobalTransform.reparented_to(_self,parent) end + +---@param _self GlobalTransform +---@return Vec3A +function GlobalTransform.translation_vec3a(_self) end + +---@param x number +---@param y number +---@param z number +---@return GlobalTransform +function GlobalTransform.from_xyz(x,y,z) end + +---@param translation Vec3 +---@return GlobalTransform +function GlobalTransform.from_translation(translation) end + +---@param iso Isometry3d +---@return GlobalTransform +function GlobalTransform.from_isometry(iso) end + +---@param _self GlobalTransform +---@return Mat4 +function GlobalTransform.to_matrix(_self) end + +---@param _self GlobalTransform +---@return Affine3A +function GlobalTransform.affine(_self) end + +---@param _self GlobalTransform +---@return Dir3 +function GlobalTransform.down(_self) end + +---@param rotation Quat +---@return GlobalTransform +function GlobalTransform.from_rotation(rotation) end + +---@param _self GlobalTransform +---@param point Vec3 +---@return Vec3 +function GlobalTransform.transform_point(_self,point) end + +---@param _self GlobalTransform +---@return Vec3 +function GlobalTransform.translation(_self) end + +---@param _self GlobalTransform +---@return GlobalTransform +function GlobalTransform.clone(_self) end + +---@param _self GlobalTransform +---@return Dir3 +function GlobalTransform.up(_self) end + +---@param _self GlobalTransform +---@return Transform +function GlobalTransform.compute_transform(_self) end + +---@param _self GlobalTransform +---@return Isometry3d +function GlobalTransform.to_isometry(_self) end + +---@param _self GlobalTransform +---@return Vec3 +function GlobalTransform.scale(_self) end + +---@param _self GlobalTransform +---@return Dir3 +function GlobalTransform.left(_self) end + +---@param _self GlobalTransform +---@return Quat +function GlobalTransform.rotation(_self) end + +---@param p1 GlobalTransform +---@param p2 Transform +---@return GlobalTransform +function GlobalTransform.mul(p1,p2) end + +---@param scale Vec3 +---@return GlobalTransform +function GlobalTransform.from_scale(scale) end + +---@param _self GlobalTransform +---@param transform Transform +---@return GlobalTransform +function GlobalTransform.mul_transform(_self,transform) end + +---@param _self GlobalTransform +---@param other GlobalTransform +---@return boolean +function GlobalTransform.__eq(_self,other) end + +---@param _self GlobalTransform +---@param other GlobalTransform +---@return boolean +function GlobalTransform.eq(_self,other) end + +---@param _self GlobalTransform +---@param value Vec3 +---@return Vec3 +function GlobalTransform.mul(_self,value) end + +---@param _self GlobalTransform +---@return Dir3 +function GlobalTransform.right(_self) end + +---@param _self GlobalTransform +---@return Dir3 +function GlobalTransform.forward(_self) end + +---@param _self GlobalTransform +---@param extents Vec3A +---@return number +function GlobalTransform.radius_vec3a(_self,extents) end + +---@param _self GlobalTransform +---@return Dir3 +function GlobalTransform.back(_self) end + + + +---@class Transform : ReflectReference +--- Describe the position of an entity. If the entity has a parent, the position is relative +--- to its parent position. +--- +--- * To place or move an entity, you should set its [`Transform`]. +--- * To get the global transform of an entity, you should get its [`GlobalTransform`]. +--- * To be displayed, an entity must have both a [`Transform`] and a [`GlobalTransform`]. +--- [`GlobalTransform`] is automatically inserted whenever [`Transform`] is inserted. +--- +--- ## [`Transform`] and [`GlobalTransform`] +--- +--- [`Transform`] is the position of an entity relative to its parent position, or the reference +--- frame if it doesn't have a [`ChildOf`](bevy_ecs::hierarchy::ChildOf) component. +--- +--- [`GlobalTransform`] is the position of an entity relative to the reference frame. +--- +--- [`GlobalTransform`] is updated from [`Transform`] in the [`TransformSystems::Propagate`] +--- system set. +--- +--- This system runs during [`PostUpdate`](bevy_app::PostUpdate). If you +--- update the [`Transform`] of an entity during this set or after, you will notice a 1 frame lag +--- before the [`GlobalTransform`] is updated. +--- +--- [`TransformSystems::Propagate`]: crate::TransformSystems::Propagate +--- +--- # Examples +--- +--- - [`transform`][transform_example] +--- +--- [transform_example]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/transform.rs +---@field translation ? Vec3 +---@field rotation ? Quat +---@field scale ? Vec3 +---@operator mul(Vec3): Vec3 +---@operator mul(GlobalTransform): GlobalTransform +---@operator mul(Transform): Transform +Transform = {} + +---@param _self Transform +---@return Dir3 +function Transform.up(_self) end + +---@param _self Transform +---@param other Transform +---@return boolean +function Transform.__eq(_self,other) end + +---@param _self Transform +---@param other Transform +---@return boolean +function Transform.eq(_self,other) end + +---@param _self Transform +---@param rotation Quat +---@return Transform +function Transform.with_rotation(_self,rotation) end + +---@param _self Transform +---@param point Vec3 +---@return Vec3 +function Transform.transform_point(_self,point) end + +---@param _self Transform +---@param angle number +---@return nil +function Transform.rotate_x(_self,angle) end + +---@param _self Transform +---@param point Vec3 +---@param rotation Quat +---@return nil +function Transform.rotate_around(_self,point,rotation) end + +---@param _self Transform +---@return Mat4 +function Transform.to_matrix(_self) end + +---@param _self Transform +---@param point Vec3 +---@param rotation Quat +---@return nil +function Transform.translate_around(_self,point,rotation) end + +---@param _self Transform +---@param angle number +---@return nil +function Transform.rotate_local_z(_self,angle) end + +---@param _self Transform +---@return Dir3 +function Transform.local_y(_self) end + +---@param _self Transform +---@return Dir3 +function Transform.right(_self) end + +---@param _self Transform +---@return Dir3 +function Transform.local_z(_self) end + +---@param scale Vec3 +---@return Transform +function Transform.from_scale(scale) end + +---@param _self Transform +---@return Dir3 +function Transform.back(_self) end + +---@param rotation Quat +---@return Transform +function Transform.from_rotation(rotation) end + +---@param _self Transform +---@return Dir3 +function Transform.down(_self) end + +---@param _self Transform +---@return Dir3 +function Transform.forward(_self) end + +---@param _self Transform +---@return Isometry3d +function Transform.to_isometry(_self) end + +---@param _self Transform +---@return Affine3A +function Transform.compute_affine(_self) end + +---@param _self Transform +---@param transform Transform +---@return Transform +function Transform.mul_transform(_self,transform) end + +---@param _self Transform +---@return Dir3 +function Transform.left(_self) end + +---@param _self Transform +---@return Transform +function Transform.clone(_self) end + +---@param _self Transform +---@return boolean +function Transform.is_finite(_self) end + +---@param _self Transform +---@param value Vec3 +---@return Vec3 +function Transform.mul(_self,value) end + +---@param p1 Transform +---@param p2 GlobalTransform +---@return GlobalTransform +function Transform.mul(p1,p2) end + +---@param _self Transform +---@param axis Dir3 +---@param angle number +---@return nil +function Transform.rotate_axis(_self,axis,angle) end + +---@param _self Transform +---@param angle number +---@return nil +function Transform.rotate_local_y(_self,angle) end + +---@param _self Transform +---@param axis Dir3 +---@param angle number +---@return nil +function Transform.rotate_local_axis(_self,axis,angle) end + +---@param x number +---@param y number +---@param z number +---@return Transform +function Transform.from_xyz(x,y,z) end + +---@param p1 Transform +---@param p2 Transform +---@return Transform +function Transform.mul(p1,p2) end + +---@param world_from_local Mat4 +---@return Transform +function Transform.from_matrix(world_from_local) end + +---@param _self Transform +---@param rotation Quat +---@return nil +function Transform.rotate(_self,rotation) end + +---@param _self Transform +---@param translation Vec3 +---@return Transform +function Transform.with_translation(_self,translation) end + +---@param _self Transform +---@param scale Vec3 +---@return Transform +function Transform.with_scale(_self,scale) end + +---@param iso Isometry3d +---@return Transform +function Transform.from_isometry(iso) end + +---@param _self Transform +---@param angle number +---@return nil +function Transform.rotate_y(_self,angle) end + +---@param _self Transform +---@param angle number +---@return nil +function Transform.rotate_local_x(_self,angle) end + +---@param _self Transform +---@param rotation Quat +---@return nil +function Transform.rotate_local(_self,rotation) end + +---@param _self Transform +---@param angle number +---@return nil +function Transform.rotate_z(_self,angle) end + +---@param translation Vec3 +---@return Transform +function Transform.from_translation(translation) end + +---@param _self Transform +---@return Dir3 +function Transform.local_x(_self) end + + + +---@class TransformTreeChanged : ReflectReference +--- An optimization for transform propagation. This ZST marker component uses change detection to +--- mark all entities of the hierarchy as "dirty" if any of their descendants have a changed +--- `Transform`. If this component is *not* marked `is_changed()`, propagation will halt. +TransformTreeChanged = {} + +---@param _self TransformTreeChanged +---@return TransformTreeChanged +function TransformTreeChanged.clone(_self) end + +---@param _self TransformTreeChanged +---@param other TransformTreeChanged +---@return boolean +function TransformTreeChanged.__eq(_self,other) end + +---@param _self TransformTreeChanged +---@param other TransformTreeChanged +---@return boolean +function TransformTreeChanged.eq(_self,other) end + + + +---@class StaticTransformOptimizations : ReflectReference +--- Configure the behavior of static scene optimizations for [`Transform`] propagation. +--- +--- For scenes with many static entities, it is much faster to track trees of unchanged +--- [`Transform`]s and skip these during the expensive transform propagation step. If your scene is +--- very dynamic, the cost of tracking these trees can exceed the performance benefits. By default, +--- static scene optimization is disabled for worlds with more than 30% of its entities moving. +--- +--- This resource allows you to configure that threshold at runtime. +---@field threshold ? number +---@field enabled ? boolean +StaticTransformOptimizations = {} + +---@return StaticTransformOptimizations +function StaticTransformOptimizations.disabled() end + +---@param threshold number +---@return StaticTransformOptimizations +function StaticTransformOptimizations.from_threshold(threshold) end + +---@return StaticTransformOptimizations +function StaticTransformOptimizations.enabled() end + + + +---@class TypeId : ReflectReference +TypeId = {} + +---@param _self TypeId +---@param other TypeId +---@return boolean +function TypeId.__eq(_self,other) end + +---@param _self TypeId +---@param other TypeId +---@return boolean +function TypeId.eq(_self,other) end + +---@param _self TypeId +---@return nil +function TypeId.assert_receiver_is_total_eq(_self) end + +---@param _self TypeId +---@return TypeId +function TypeId.clone(_self) end + + + +---@class SocketAddr : ReflectReference +SocketAddr = {} + +---@param _self SocketAddr +---@return boolean +function SocketAddr.is_ipv6(_self) end + +---@param _self SocketAddr +---@param other SocketAddr +---@return boolean +function SocketAddr.__eq(_self,other) end + +---@param _self SocketAddr +---@param other SocketAddr +---@return boolean +function SocketAddr.eq(_self,other) end + +---@param _self SocketAddr +---@return nil +function SocketAddr.assert_receiver_is_total_eq(_self) end + +---@param _self SocketAddr +---@return SocketAddr +function SocketAddr.clone(_self) end + +---@param _self SocketAddr +---@param new_port integer +---@return nil +function SocketAddr.set_port(_self,new_port) end + +---@param _self SocketAddr +---@return integer +function SocketAddr.port(_self) end + +---@param _self SocketAddr +---@return boolean +function SocketAddr.is_ipv4(_self) end + + + +---@class RangeFull : ReflectReference +RangeFull = {} + +---@param _self RangeFull +---@return RangeFull +function RangeFull.clone(_self) end + +---@param _self RangeFull +---@param other RangeFull +---@return boolean +function RangeFull.__eq(_self,other) end + +---@param _self RangeFull +---@param other RangeFull +---@return boolean +function RangeFull.eq(_self,other) end + +---@param _self RangeFull +---@return nil +function RangeFull.assert_receiver_is_total_eq(_self) end + + + +---@class AtomicBool : ReflectReference +AtomicBool = {} + +---@param _self AtomicBool +---@return boolean +function AtomicBool.into_inner(_self) end + +---@param v boolean +---@return AtomicBool +function AtomicBool.new(v) end + + + +---@class AtomicI16 : ReflectReference +AtomicI16 = {} + +---@param v integer +---@return AtomicI16 +function AtomicI16.new(v) end + +---@param _self AtomicI16 +---@return integer +function AtomicI16.into_inner(_self) end + + + +---@class AtomicI32 : ReflectReference +AtomicI32 = {} + +---@param _self AtomicI32 +---@return integer +function AtomicI32.into_inner(_self) end + +---@param v integer +---@return AtomicI32 +function AtomicI32.new(v) end + + + +---@class AtomicI64 : ReflectReference +AtomicI64 = {} + +---@param v integer +---@return AtomicI64 +function AtomicI64.new(v) end + +---@param _self AtomicI64 +---@return integer +function AtomicI64.into_inner(_self) end + + + +---@class AtomicI8 : ReflectReference +AtomicI8 = {} + +---@param v integer +---@return AtomicI8 +function AtomicI8.new(v) end + +---@param _self AtomicI8 +---@return integer +function AtomicI8.into_inner(_self) end + + + +---@class AtomicIsize : ReflectReference +AtomicIsize = {} + +---@param _self AtomicIsize +---@return integer +function AtomicIsize.into_inner(_self) end + +---@param v integer +---@return AtomicIsize +function AtomicIsize.new(v) end + + + +---@class AtomicU16 : ReflectReference +AtomicU16 = {} + +---@param v integer +---@return AtomicU16 +function AtomicU16.new(v) end + +---@param _self AtomicU16 +---@return integer +function AtomicU16.into_inner(_self) end + + + +---@class AtomicU32 : ReflectReference +AtomicU32 = {} + +---@param _self AtomicU32 +---@return integer +function AtomicU32.into_inner(_self) end + +---@param v integer +---@return AtomicU32 +function AtomicU32.new(v) end + + + +---@class AtomicU64 : ReflectReference +AtomicU64 = {} + +---@param _self AtomicU64 +---@return integer +function AtomicU64.into_inner(_self) end + +---@param v integer +---@return AtomicU64 +function AtomicU64.new(v) end + + + +---@class AtomicU8 : ReflectReference +AtomicU8 = {} + +---@param v integer +---@return AtomicU8 +function AtomicU8.new(v) end + +---@param _self AtomicU8 +---@return integer +function AtomicU8.into_inner(_self) end + + + +---@class AtomicUsize : ReflectReference +AtomicUsize = {} + +---@param v integer +---@return AtomicUsize +function AtomicUsize.new(v) end + +---@param _self AtomicUsize +---@return integer +function AtomicUsize.into_inner(_self) end + + + +---@class Duration : ReflectReference +---@operator add(Duration): Duration +---@operator div(integer): Duration +---@operator sub(Duration): Duration +---@operator mul(integer): Duration +Duration = {} + +---@param _self Duration +---@param rhs integer +---@return Duration +function Duration.saturating_mul(_self,rhs) end + +---@param _self Duration +---@return integer +function Duration.as_nanos(_self) end + +---@param _self Duration +---@return integer +function Duration.subsec_nanos(_self) end + +---@param _self Duration +---@return number +function Duration.as_secs_f32(_self) end + +---@param secs number +---@return Duration +function Duration.from_secs_f32(secs) end + +---@param _self Duration +---@param rhs number +---@return Duration +function Duration.mul_f32(_self,rhs) end + +---@param _self Duration +---@param rhs Duration +---@return Duration +function Duration.saturating_add(_self,rhs) end + +---@param millis integer +---@return Duration +function Duration.from_millis(millis) end + +---@param _self Duration +---@param rhs Duration +---@return number +function Duration.div_duration_f32(_self,rhs) end + +---@param secs integer +---@param nanos integer +---@return Duration +function Duration.new(secs,nanos) end + +---@param secs number +---@return Duration +function Duration.from_secs_f64(secs) end + +---@param _self Duration +---@param rhs Duration +---@return Duration +function Duration.add(_self,rhs) end + +---@param _self Duration +---@param other Duration +---@return boolean +function Duration.__eq(_self,other) end + +---@param _self Duration +---@param other Duration +---@return boolean +function Duration.eq(_self,other) end + +---@param _self Duration +---@return number +function Duration.as_secs_f64(_self) end + +---@param _self Duration +---@return integer +function Duration.subsec_micros(_self) end + +---@param _self Duration +---@return nil +function Duration.assert_receiver_is_total_eq(_self) end + +---@param _self Duration +---@return Duration +function Duration.clone(_self) end + +---@param _self Duration +---@return integer +function Duration.subsec_millis(_self) end + +---@param _self Duration +---@param other Duration +---@return Duration +function Duration.abs_diff(_self,other) end + +---@param _self Duration +---@param rhs integer +---@return Duration +function Duration.div(_self,rhs) end + +---@param _self Duration +---@param rhs Duration +---@return Duration +function Duration.sub(_self,rhs) end + +---@param _self Duration +---@return integer +function Duration.as_secs(_self) end + +---@param micros integer +---@return Duration +function Duration.from_micros(micros) end + +---@param _self Duration +---@param rhs Duration +---@return number +function Duration.div_duration_f64(_self,rhs) end + +---@param _self Duration +---@param rhs integer +---@return Duration +function Duration.mul(_self,rhs) end + +---@param _self Duration +---@return integer +function Duration.as_micros(_self) end + +---@param nanos integer +---@return Duration +function Duration.from_nanos(nanos) end + +---@param secs integer +---@return Duration +function Duration.from_secs(secs) end + +---@param _self Duration +---@param rhs number +---@return Duration +function Duration.div_f32(_self,rhs) end + +---@param _self Duration +---@return integer +function Duration.as_millis(_self) end + +---@param _self Duration +---@param rhs number +---@return Duration +function Duration.div_f64(_self,rhs) end + +---@param _self Duration +---@param rhs number +---@return Duration +function Duration.mul_f64(_self,rhs) end + +---@param _self Duration +---@param rhs Duration +---@return Duration +function Duration.saturating_sub(_self,rhs) end + +---@param _self Duration +---@return boolean +function Duration.is_zero(_self) end + + + +---@class Affine2 : ReflectReference +---@field matrix2 ? Mat2 +---@field translation ? Vec2 +---@operator mul(Affine2): Affine2 +---@operator mul(Mat3A): Mat3A +---@operator mul(Mat3): Mat3 +---@operator mul(Mat3): Mat3 +---@operator mul(Mat3A): Mat3A +---@operator mul(Affine2): Affine2 +Affine2 = {} + +---@param _self Affine2 +---@param rhs Vec2 +---@return Vec2 +function Affine2.transform_point2(_self,rhs) end + +---@param scale Vec2 +---@return Affine2 +function Affine2.from_scale(scale) end + +---@param _self Affine2 +---@param rhs Vec2 +---@return Vec2 +function Affine2.transform_vector2(_self,rhs) end + +---@param _self Affine2 +---@return DAffine2 +function Affine2.as_daffine2(_self) end + +---@param _self Affine2 +---@return boolean +function Affine2.is_finite(_self) end + +---@param _self Affine2 +---@param rhs Affine2 +---@param max_abs_diff number +---@return boolean +function Affine2.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param p1 Affine2 +---@param p2 Affine2 +---@return Affine2 +function Affine2.mul(p1,p2) end + +---@param _self Affine2 +---@return Affine2 +function Affine2.clone(_self) end + +---@param m Mat3 +---@return Affine2 +function Affine2.from_mat3(m) end + +---@param _self Affine2 +---@return number[][] +function Affine2.to_cols_array_2d(_self) end + +---@param _self Affine2 +---@param rhs Affine2 +---@return boolean +function Affine2.__eq(_self,rhs) end + +---@param _self Affine2 +---@param rhs Affine2 +---@return boolean +function Affine2.eq(_self,rhs) end + +---@param p1 Affine2 +---@param p2 Mat3A +---@return Mat3A +function Affine2.mul(p1,p2) end + +---@param matrix2 Mat2 +---@return Affine2 +function Affine2.from_mat2(matrix2) end + +---@param _self Affine2 +---@return number[] +function Affine2.to_cols_array(_self) end + +---@param p1 Affine2 +---@param p2 Mat3 +---@return Mat3 +function Affine2.mul(p1,p2) end + +---@param _self Affine2 +---@return Affine2 +function Affine2.inverse(_self) end + +---@param angle number +---@param translation Vec2 +---@return Affine2 +function Affine2.from_angle_translation(angle,translation) end + +---@param m Mat3A +---@return Affine2 +function Affine2.from_mat3a(m) end + +---@param translation Vec2 +---@return Affine2 +function Affine2.from_translation(translation) end + +---@param matrix2 Mat2 +---@param translation Vec2 +---@return Affine2 +function Affine2.from_mat2_translation(matrix2,translation) end + +---@param angle number +---@return Affine2 +function Affine2.from_angle(angle) end + +---@param p1 Affine2 +---@param p2 Mat3 +---@return Mat3 +function Affine2.mul(p1,p2) end + +---@param p1 Affine2 +---@param p2 Mat3A +---@return Mat3A +function Affine2.mul(p1,p2) end + +---@param _self Affine2 +---@param rhs Affine2 +---@return Affine2 +function Affine2.mul(_self,rhs) end + +---@param scale Vec2 +---@param angle number +---@param translation Vec2 +---@return Affine2 +function Affine2.from_scale_angle_translation(scale,angle,translation) end + +---@param _self Affine2 +---@return boolean +function Affine2.is_nan(_self) end + +---@param x_axis Vec2 +---@param y_axis Vec2 +---@param z_axis Vec2 +---@return Affine2 +function Affine2.from_cols(x_axis,y_axis,z_axis) end + + + +---@class Affine3A : ReflectReference +---@field matrix3 ? Mat3A +---@field translation ? Vec3A +---@operator mul(Affine3A): Affine3A +---@operator mul(Mat4): Mat4 +---@operator mul(Affine3A): Affine3A +---@operator mul(Mat4): Mat4 +Affine3A = {} + +---@param angle number +---@return Affine3A +function Affine3A.from_rotation_x(angle) end + +---@param _self Affine3A +---@return boolean +function Affine3A.is_nan(_self) end + +---@param axis Vec3 +---@param angle number +---@return Affine3A +function Affine3A.from_axis_angle(axis,angle) end + +---@param scale Vec3 +---@return Affine3A +function Affine3A.from_scale(scale) end + +---@param _self Affine3A +---@param rhs Affine3A +---@return Affine3A +function Affine3A.mul(_self,rhs) end + +---@param _self Affine3A +---@param rhs Vec3 +---@return Vec3 +function Affine3A.transform_point3(_self,rhs) end + +---@param eye Vec3 +---@param dir Vec3 +---@param up Vec3 +---@return Affine3A +function Affine3A.look_to_rh(eye,dir,up) end + +---@param p1 Affine3A +---@param p2 Mat4 +---@return Mat4 +function Affine3A.mul(p1,p2) end + +---@param mat3 Mat3 +---@param translation Vec3 +---@return Affine3A +function Affine3A.from_mat3_translation(mat3,translation) end + +---@param angle number +---@return Affine3A +function Affine3A.from_rotation_z(angle) end + +---@param _self Affine3A +---@param rhs Vec3A +---@return Vec3A +function Affine3A.transform_point3a(_self,rhs) end + +---@param rotation Quat +---@return Affine3A +function Affine3A.from_quat(rotation) end + +---@param p1 Affine3A +---@param p2 Affine3A +---@return Affine3A +function Affine3A.mul(p1,p2) end + +---@param _self Affine3A +---@return Affine3A +function Affine3A.clone(_self) end + +---@param _self Affine3A +---@return boolean +function Affine3A.is_finite(_self) end + +---@param _self Affine3A +---@param rhs Vec3A +---@return Vec3A +function Affine3A.transform_vector3a(_self,rhs) end + +---@param scale Vec3 +---@param rotation Quat +---@param translation Vec3 +---@return Affine3A +function Affine3A.from_scale_rotation_translation(scale,rotation,translation) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Affine3A +function Affine3A.look_at_rh(eye,center,up) end + +---@param _self Affine3A +---@param rhs Affine3A +---@param max_abs_diff number +---@return boolean +function Affine3A.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Affine3A +function Affine3A.look_at_lh(eye,center,up) end + +---@param m Mat4 +---@return Affine3A +function Affine3A.from_mat4(m) end + +---@param eye Vec3 +---@param dir Vec3 +---@param up Vec3 +---@return Affine3A +function Affine3A.look_to_lh(eye,dir,up) end + +---@param rotation Quat +---@param translation Vec3 +---@return Affine3A +function Affine3A.from_rotation_translation(rotation,translation) end + +---@param mat3 Mat3 +---@return Affine3A +function Affine3A.from_mat3(mat3) end + +---@param p1 Affine3A +---@param p2 Mat4 +---@return Mat4 +function Affine3A.mul(p1,p2) end + +---@param _self Affine3A +---@return number[] +function Affine3A.to_cols_array(_self) end + +---@param x_axis Vec3A +---@param y_axis Vec3A +---@param z_axis Vec3A +---@param w_axis Vec3A +---@return Affine3A +function Affine3A.from_cols(x_axis,y_axis,z_axis,w_axis) end + +---@param _self Affine3A +---@param rhs Vec3 +---@return Vec3 +function Affine3A.transform_vector3(_self,rhs) end + +---@param angle number +---@return Affine3A +function Affine3A.from_rotation_y(angle) end + +---@param translation Vec3 +---@return Affine3A +function Affine3A.from_translation(translation) end + +---@param _self Affine3A +---@return number[][] +function Affine3A.to_cols_array_2d(_self) end + +---@param _self Affine3A +---@return DAffine3 +function Affine3A.as_daffine3(_self) end + +---@param _self Affine3A +---@return Affine3A +function Affine3A.inverse(_self) end + +---@param _self Affine3A +---@param rhs Affine3A +---@return boolean +function Affine3A.__eq(_self,rhs) end + +---@param _self Affine3A +---@param rhs Affine3A +---@return boolean +function Affine3A.eq(_self,rhs) end + + + +---@class BVec2 : ReflectReference +---@field x ? boolean +---@field y ? boolean +BVec2 = {} + +---@param a boolean[] +---@return BVec2 +function BVec2.from_array(a) end + +---@param _self BVec2 +---@return integer +function BVec2.bitmask(_self) end + +---@param _self BVec2 +---@return BVec2 +function BVec2.clone(_self) end + +---@param _self BVec2 +---@param other BVec2 +---@return boolean +function BVec2.__eq(_self,other) end + +---@param _self BVec2 +---@param other BVec2 +---@return boolean +function BVec2.eq(_self,other) end + +---@param _self BVec2 +---@param index integer +---@param value boolean +---@return nil +function BVec2.set(_self,index,value) end + +---@param _self BVec2 +---@return nil +function BVec2.assert_receiver_is_total_eq(_self) end + +---@param _self BVec2 +---@param index integer +---@return boolean +function BVec2.test(_self,index) end + +---@param _self BVec2 +---@return boolean +function BVec2.all(_self) end + +---@param v boolean +---@return BVec2 +function BVec2.splat(v) end + +---@param _self BVec2 +---@return boolean +function BVec2.any(_self) end + +---@param x boolean +---@param y boolean +---@return BVec2 +function BVec2.new(x,y) end + + + +---@class BVec3 : ReflectReference +---@field x ? boolean +---@field y ? boolean +---@field z ? boolean +BVec3 = {} + +---@param _self BVec3 +---@return nil +function BVec3.assert_receiver_is_total_eq(_self) end + +---@param x boolean +---@param y boolean +---@param z boolean +---@return BVec3 +function BVec3.new(x,y,z) end + +---@param v boolean +---@return BVec3 +function BVec3.splat(v) end + +---@param _self BVec3 +---@return integer +function BVec3.bitmask(_self) end + +---@param a boolean[] +---@return BVec3 +function BVec3.from_array(a) end + +---@param _self BVec3 +---@param other BVec3 +---@return boolean +function BVec3.__eq(_self,other) end + +---@param _self BVec3 +---@param other BVec3 +---@return boolean +function BVec3.eq(_self,other) end + +---@param _self BVec3 +---@return boolean +function BVec3.all(_self) end + +---@param _self BVec3 +---@return boolean +function BVec3.any(_self) end + +---@param _self BVec3 +---@param index integer +---@param value boolean +---@return nil +function BVec3.set(_self,index,value) end + +---@param _self BVec3 +---@param index integer +---@return boolean +function BVec3.test(_self,index) end + +---@param _self BVec3 +---@return BVec3 +function BVec3.clone(_self) end + + + +---@class BVec3A : ReflectReference +BVec3A = {} + +---@param a boolean[] +---@return BVec3A +function BVec3A.from_array(a) end + +---@param _self BVec3A +---@return BVec3A +function BVec3A.clone(_self) end + +---@param x boolean +---@param y boolean +---@param z boolean +---@return BVec3A +function BVec3A.new(x,y,z) end + +---@param _self BVec3A +---@param index integer +---@return boolean +function BVec3A.test(_self,index) end + +---@param _self BVec3A +---@param index integer +---@param value boolean +---@return nil +function BVec3A.set(_self,index,value) end + +---@param _self BVec3A +---@param rhs BVec3A +---@return boolean +function BVec3A.__eq(_self,rhs) end + +---@param _self BVec3A +---@param rhs BVec3A +---@return boolean +function BVec3A.eq(_self,rhs) end + +---@param _self BVec3A +---@return boolean +function BVec3A.all(_self) end + +---@param v boolean +---@return BVec3A +function BVec3A.splat(v) end + +---@param _self BVec3A +---@return boolean +function BVec3A.any(_self) end + +---@param _self BVec3A +---@return integer +function BVec3A.bitmask(_self) end + + + +---@class BVec4 : ReflectReference +---@field x ? boolean +---@field y ? boolean +---@field z ? boolean +---@field w ? boolean +BVec4 = {} + +---@param _self BVec4 +---@return boolean +function BVec4.any(_self) end + +---@param _self BVec4 +---@return nil +function BVec4.assert_receiver_is_total_eq(_self) end + +---@param _self BVec4 +---@param index integer +---@return boolean +function BVec4.test(_self,index) end + +---@param _self BVec4 +---@return boolean +function BVec4.all(_self) end + +---@param _self BVec4 +---@param index integer +---@param value boolean +---@return nil +function BVec4.set(_self,index,value) end + +---@param _self BVec4 +---@return integer +function BVec4.bitmask(_self) end + +---@param _self BVec4 +---@return BVec4 +function BVec4.clone(_self) end + +---@param _self BVec4 +---@param other BVec4 +---@return boolean +function BVec4.__eq(_self,other) end + +---@param _self BVec4 +---@param other BVec4 +---@return boolean +function BVec4.eq(_self,other) end + +---@param v boolean +---@return BVec4 +function BVec4.splat(v) end + +---@param x boolean +---@param y boolean +---@param z boolean +---@param w boolean +---@return BVec4 +function BVec4.new(x,y,z,w) end + +---@param a boolean[] +---@return BVec4 +function BVec4.from_array(a) end + + + +---@class BVec4A : ReflectReference +BVec4A = {} + +---@param v boolean +---@return BVec4A +function BVec4A.splat(v) end + +---@param _self BVec4A +---@return integer +function BVec4A.bitmask(_self) end + +---@param a boolean[] +---@return BVec4A +function BVec4A.from_array(a) end + +---@param _self BVec4A +---@return boolean +function BVec4A.any(_self) end + +---@param _self BVec4A +---@param index integer +---@param value boolean +---@return nil +function BVec4A.set(_self,index,value) end + +---@param _self BVec4A +---@return BVec4A +function BVec4A.clone(_self) end + +---@param x boolean +---@param y boolean +---@param z boolean +---@param w boolean +---@return BVec4A +function BVec4A.new(x,y,z,w) end + +---@param _self BVec4A +---@param index integer +---@return boolean +function BVec4A.test(_self,index) end + +---@param _self BVec4A +---@return boolean +function BVec4A.all(_self) end + +---@param _self BVec4A +---@param rhs BVec4A +---@return boolean +function BVec4A.__eq(_self,rhs) end + +---@param _self BVec4A +---@param rhs BVec4A +---@return boolean +function BVec4A.eq(_self,rhs) end + + + +---@class DAffine2 : ReflectReference +---@field matrix2 ? DMat2 +---@field translation ? DVec2 +---@operator mul(DMat3): DMat3 +---@operator mul(DAffine2): DAffine2 +---@operator mul(DMat3): DMat3 +---@operator mul(DAffine2): DAffine2 +DAffine2 = {} + +---@param scale DVec2 +---@param angle number +---@param translation DVec2 +---@return DAffine2 +function DAffine2.from_scale_angle_translation(scale,angle,translation) end + +---@param angle number +---@return DAffine2 +function DAffine2.from_angle(angle) end + +---@param _self DAffine2 +---@return boolean +function DAffine2.is_finite(_self) end + +---@param x_axis DVec2 +---@param y_axis DVec2 +---@param z_axis DVec2 +---@return DAffine2 +function DAffine2.from_cols(x_axis,y_axis,z_axis) end + +---@param _self DAffine2 +---@param rhs DAffine2 +---@return boolean +function DAffine2.__eq(_self,rhs) end + +---@param _self DAffine2 +---@param rhs DAffine2 +---@return boolean +function DAffine2.eq(_self,rhs) end + +---@param scale DVec2 +---@return DAffine2 +function DAffine2.from_scale(scale) end + +---@param p1 DAffine2 +---@param p2 DMat3 +---@return DMat3 +function DAffine2.mul(p1,p2) end + +---@param angle number +---@param translation DVec2 +---@return DAffine2 +function DAffine2.from_angle_translation(angle,translation) end + +---@param _self DAffine2 +---@param rhs DAffine2 +---@param max_abs_diff number +---@return boolean +function DAffine2.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self DAffine2 +---@param rhs DVec2 +---@return DVec2 +function DAffine2.transform_vector2(_self,rhs) end + +---@param matrix2 DMat2 +---@param translation DVec2 +---@return DAffine2 +function DAffine2.from_mat2_translation(matrix2,translation) end + +---@param p1 DAffine2 +---@param p2 DAffine2 +---@return DAffine2 +function DAffine2.mul(p1,p2) end + +---@param _self DAffine2 +---@return number[] +function DAffine2.to_cols_array(_self) end + +---@param p1 DAffine2 +---@param p2 DMat3 +---@return DMat3 +function DAffine2.mul(p1,p2) end + +---@param _self DAffine2 +---@param rhs DVec2 +---@return DVec2 +function DAffine2.transform_point2(_self,rhs) end + +---@param _self DAffine2 +---@param rhs DAffine2 +---@return DAffine2 +function DAffine2.mul(_self,rhs) end + +---@param _self DAffine2 +---@return number[][] +function DAffine2.to_cols_array_2d(_self) end + +---@param _self DAffine2 +---@return boolean +function DAffine2.is_nan(_self) end + +---@param translation DVec2 +---@return DAffine2 +function DAffine2.from_translation(translation) end + +---@param _self DAffine2 +---@return Affine2 +function DAffine2.as_affine2(_self) end + +---@param m DMat3 +---@return DAffine2 +function DAffine2.from_mat3(m) end + +---@param _self DAffine2 +---@return DAffine2 +function DAffine2.clone(_self) end + +---@param matrix2 DMat2 +---@return DAffine2 +function DAffine2.from_mat2(matrix2) end + +---@param _self DAffine2 +---@return DAffine2 +function DAffine2.inverse(_self) end + + + +---@class DAffine3 : ReflectReference +---@field matrix3 ? DMat3 +---@field translation ? DVec3 +---@operator mul(DMat4): DMat4 +---@operator mul(DAffine3): DAffine3 +---@operator mul(DMat4): DMat4 +---@operator mul(DAffine3): DAffine3 +DAffine3 = {} + +---@param p1 DAffine3 +---@param p2 DMat4 +---@return DMat4 +function DAffine3.mul(p1,p2) end + +---@param translation DVec3 +---@return DAffine3 +function DAffine3.from_translation(translation) end + +---@param eye DVec3 +---@param center DVec3 +---@param up DVec3 +---@return DAffine3 +function DAffine3.look_at_lh(eye,center,up) end + +---@param _self DAffine3 +---@return number[][] +function DAffine3.to_cols_array_2d(_self) end + +---@param rotation DQuat +---@param translation DVec3 +---@return DAffine3 +function DAffine3.from_rotation_translation(rotation,translation) end + +---@param rotation DQuat +---@return DAffine3 +function DAffine3.from_quat(rotation) end + +---@param _self DAffine3 +---@return Affine3A +function DAffine3.as_affine3a(_self) end + +---@param m DMat4 +---@return DAffine3 +function DAffine3.from_mat4(m) end + +---@param _self DAffine3 +---@return boolean +function DAffine3.is_finite(_self) end + +---@param mat3 DMat3 +---@param translation DVec3 +---@return DAffine3 +function DAffine3.from_mat3_translation(mat3,translation) end + +---@param eye DVec3 +---@param center DVec3 +---@param up DVec3 +---@return DAffine3 +function DAffine3.look_at_rh(eye,center,up) end + +---@param _self DAffine3 +---@return DAffine3 +function DAffine3.inverse(_self) end + +---@param mat3 DMat3 +---@return DAffine3 +function DAffine3.from_mat3(mat3) end + +---@param p1 DAffine3 +---@param p2 DAffine3 +---@return DAffine3 +function DAffine3.mul(p1,p2) end + +---@param _self DAffine3 +---@param rhs DAffine3 +---@return boolean +function DAffine3.__eq(_self,rhs) end + +---@param _self DAffine3 +---@param rhs DAffine3 +---@return boolean +function DAffine3.eq(_self,rhs) end + +---@param _self DAffine3 +---@return number[] +function DAffine3.to_cols_array(_self) end + +---@param _self DAffine3 +---@param rhs DVec3 +---@return DVec3 +function DAffine3.transform_point3(_self,rhs) end + +---@param p1 DAffine3 +---@param p2 DMat4 +---@return DMat4 +function DAffine3.mul(p1,p2) end + +---@param scale DVec3 +---@param rotation DQuat +---@param translation DVec3 +---@return DAffine3 +function DAffine3.from_scale_rotation_translation(scale,rotation,translation) end + +---@param x_axis DVec3 +---@param y_axis DVec3 +---@param z_axis DVec3 +---@param w_axis DVec3 +---@return DAffine3 +function DAffine3.from_cols(x_axis,y_axis,z_axis,w_axis) end + +---@param _self DAffine3 +---@param rhs DVec3 +---@return DVec3 +function DAffine3.transform_vector3(_self,rhs) end + +---@param scale DVec3 +---@return DAffine3 +function DAffine3.from_scale(scale) end + +---@param angle number +---@return DAffine3 +function DAffine3.from_rotation_y(angle) end + +---@param eye DVec3 +---@param dir DVec3 +---@param up DVec3 +---@return DAffine3 +function DAffine3.look_to_rh(eye,dir,up) end + +---@param _self DAffine3 +---@return DAffine3 +function DAffine3.clone(_self) end + +---@param eye DVec3 +---@param dir DVec3 +---@param up DVec3 +---@return DAffine3 +function DAffine3.look_to_lh(eye,dir,up) end + +---@param angle number +---@return DAffine3 +function DAffine3.from_rotation_x(angle) end + +---@param axis DVec3 +---@param angle number +---@return DAffine3 +function DAffine3.from_axis_angle(axis,angle) end + +---@param _self DAffine3 +---@param rhs DAffine3 +---@return DAffine3 +function DAffine3.mul(_self,rhs) end + +---@param _self DAffine3 +---@return boolean +function DAffine3.is_nan(_self) end + +---@param angle number +---@return DAffine3 +function DAffine3.from_rotation_z(angle) end + +---@param _self DAffine3 +---@param rhs DAffine3 +---@param max_abs_diff number +---@return boolean +function DAffine3.abs_diff_eq(_self,rhs,max_abs_diff) end + + + +---@class DMat2 : ReflectReference +---@field x_axis ? DVec2 +---@field y_axis ? DVec2 +---@operator add(DMat2): DMat2 +---@operator unm: DMat2 +---@operator mul(DVec2): DVec2 +---@operator mul(number): DMat2 +---@operator mul(DMat2): DMat2 +---@operator add(DMat2): DMat2 +---@operator div(number): DMat2 +---@operator sub(DMat2): DMat2 +---@operator sub(DMat2): DMat2 +---@operator mul(DVec2): DVec2 +---@operator mul(DMat2): DMat2 +DMat2 = {} + +---@param p1 DMat2 +---@param p2 DMat2 +---@return DMat2 +function DMat2.add(p1,p2) end + +---@param _self DMat2 +---@param rhs DMat2 +---@return boolean +function DMat2.__eq(_self,rhs) end + +---@param _self DMat2 +---@param rhs DMat2 +---@return boolean +function DMat2.eq(_self,rhs) end + +---@param _self DMat2 +---@return number[] +function DMat2.to_cols_array(_self) end + +---@param _self DMat2 +---@param rhs DMat2 +---@param max_abs_diff number +---@return boolean +function DMat2.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self DMat2 +---@param rhs DMat2 +---@return DMat2 +function DMat2.add_mat2(_self,rhs) end + +---@param _self DMat2 +---@return DMat2 +function DMat2.neg(_self) end + +---@param x_axis DVec2 +---@param y_axis DVec2 +---@return DMat2 +function DMat2.from_cols(x_axis,y_axis) end + +---@param _self DMat2 +---@return DMat2 +function DMat2.abs(_self) end + +---@param p1 DMat2 +---@param p2 DVec2 +---@return DVec2 +function DMat2.mul(p1,p2) end + +---@param p1 DMat2 +---@param p2 number +---@return DMat2 +function DMat2.mul(p1,p2) end + +---@param _self DMat2 +---@param index integer +---@return DVec2 +function DMat2.row(_self,index) end + +---@param m DMat3 +---@param i integer +---@param j integer +---@return DMat2 +function DMat2.from_mat3_minor(m,i,j) end + +---@param _self DMat2 +---@return boolean +function DMat2.is_finite(_self) end + +---@param diagonal DVec2 +---@return DMat2 +function DMat2.from_diagonal(diagonal) end + +---@param _self DMat2 +---@return DMat2 +function DMat2.clone(_self) end + +---@param _self DMat2 +---@param rhs DMat2 +---@return DMat2 +function DMat2.mul_mat2(_self,rhs) end + +---@param _self DMat2 +---@return DMat2 +function DMat2.transpose(_self) end + +---@param p1 DMat2 +---@param p2 DMat2 +---@return DMat2 +function DMat2.mul(p1,p2) end + +---@param _self DMat2 +---@param rhs DMat2 +---@return DMat2 +function DMat2.sub_mat2(_self,rhs) end + +---@param _self DMat2 +---@param rhs DMat2 +---@return DMat2 +function DMat2.add(_self,rhs) end + +---@param _self DMat2 +---@param rhs number +---@return DMat2 +function DMat2.div(_self,rhs) end + +---@param angle number +---@return DMat2 +function DMat2.from_angle(angle) end + +---@param m DMat3 +---@return DMat2 +function DMat2.from_mat3(m) end + +---@param _self DMat2 +---@param rhs DMat2 +---@return DMat2 +function DMat2.sub(_self,rhs) end + +---@param _self DMat2 +---@return boolean +function DMat2.is_nan(_self) end + +---@param _self DMat2 +---@return number +function DMat2.determinant(_self) end + +---@param _self DMat2 +---@param rhs DVec2 +---@return DVec2 +function DMat2.mul_vec2(_self,rhs) end + +---@param _self DMat2 +---@return DMat2 +function DMat2.inverse(_self) end + +---@param _self DMat2 +---@param index integer +---@return DVec2 +function DMat2.col(_self,index) end + +---@param p1 DMat2 +---@param p2 DMat2 +---@return DMat2 +function DMat2.sub(p1,p2) end + +---@param _self DMat2 +---@return Mat2 +function DMat2.as_mat2(_self) end + +---@param _self DMat2 +---@param rhs number +---@return DMat2 +function DMat2.mul_scalar(_self,rhs) end + +---@param _self DMat2 +---@return number[][] +function DMat2.to_cols_array_2d(_self) end + +---@param _self DMat2 +---@param rhs number +---@return DMat2 +function DMat2.div_scalar(_self,rhs) end + +---@param scale DVec2 +---@param angle number +---@return DMat2 +function DMat2.from_scale_angle(scale,angle) end + +---@param p1 DMat2 +---@param p2 DVec2 +---@return DVec2 +function DMat2.mul(p1,p2) end + +---@param _self DMat2 +---@param rhs DMat2 +---@return DMat2 +function DMat2.mul(_self,rhs) end + + + +---@class DMat3 : ReflectReference +---@field x_axis ? DVec3 +---@field y_axis ? DVec3 +---@field z_axis ? DVec3 +---@operator add(DMat3): DMat3 +---@operator unm: DMat3 +---@operator mul(number): DMat3 +---@operator mul(DMat3): DMat3 +---@operator div(number): DMat3 +---@operator sub(DMat3): DMat3 +---@operator add(DMat3): DMat3 +---@operator mul(DVec3): DVec3 +---@operator mul(DMat3): DMat3 +---@operator mul(DVec3): DVec3 +---@operator sub(DMat3): DMat3 +---@operator mul(DAffine2): DMat3 +---@operator mul(DAffine2): DMat3 +DMat3 = {} + +---@param _self DMat3 +---@param rhs DMat3 +---@return DMat3 +function DMat3.add(_self,rhs) end + +---@param _self DMat3 +---@return DMat3 +function DMat3.neg(_self) end + +---@param p1 DMat3 +---@param p2 number +---@return DMat3 +function DMat3.mul(p1,p2) end + +---@param translation DVec2 +---@return DMat3 +function DMat3.from_translation(translation) end + +---@param _self DMat3 +---@param rhs DVec2 +---@return DVec2 +function DMat3.transform_point2(_self,rhs) end + +---@param _self DMat3 +---@param order EulerRot +---@return [number, number, number] +function DMat3.to_euler(_self,order) end + +---@param diagonal DVec3 +---@return DMat3 +function DMat3.from_diagonal(diagonal) end + +---@param _self DMat3 +---@param index integer +---@return DVec3 +function DMat3.row(_self,index) end + +---@param angle number +---@return DMat3 +function DMat3.from_rotation_z(angle) end + +---@param angle number +---@return DMat3 +function DMat3.from_rotation_x(angle) end + +---@param _self DMat3 +---@return DMat3 +function DMat3.abs(_self) end + +---@param _self DMat3 +---@param rhs DMat3 +---@return boolean +function DMat3.__eq(_self,rhs) end + +---@param _self DMat3 +---@param rhs DMat3 +---@return boolean +function DMat3.eq(_self,rhs) end + +---@param p1 DMat3 +---@param p2 DMat3 +---@return DMat3 +function DMat3.mul(p1,p2) end + +---@param m DMat2 +---@return DMat3 +function DMat3.from_mat2(m) end + +---@param _self DMat3 +---@return DMat3 +function DMat3.transpose(_self) end + +---@param scale DVec2 +---@param angle number +---@param translation DVec2 +---@return DMat3 +function DMat3.from_scale_angle_translation(scale,angle,translation) end + +---@param _self DMat3 +---@param rhs DMat3 +---@param max_abs_diff number +---@return boolean +function DMat3.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self DMat3 +---@param rhs number +---@return DMat3 +function DMat3.mul_scalar(_self,rhs) end + +---@param _self DMat3 +---@param rhs number +---@return DMat3 +function DMat3.div(_self,rhs) end + +---@param _self DMat3 +---@param rhs DMat3 +---@return DMat3 +function DMat3.sub_mat3(_self,rhs) end + +---@param _self DMat3 +---@param rhs DVec2 +---@return DVec2 +function DMat3.transform_vector2(_self,rhs) end + +---@param _self DMat3 +---@param rhs number +---@return DMat3 +function DMat3.div_scalar(_self,rhs) end + +---@param _self DMat3 +---@param rhs DMat3 +---@return DMat3 +function DMat3.sub(_self,rhs) end + +---@param p1 DMat3 +---@param p2 DMat3 +---@return DMat3 +function DMat3.add(p1,p2) end + +---@param p1 DMat3 +---@param p2 DVec3 +---@return DVec3 +function DMat3.mul(p1,p2) end + +---@param angle number +---@return DMat3 +function DMat3.from_angle(angle) end + +---@param eye DVec3 +---@param center DVec3 +---@param up DVec3 +---@return DMat3 +function DMat3.look_at_lh(eye,center,up) end + +---@param angle number +---@return DMat3 +function DMat3.from_rotation_y(angle) end + +---@param axis DVec3 +---@param angle number +---@return DMat3 +function DMat3.from_axis_angle(axis,angle) end + +---@param _self DMat3 +---@param rhs DMat3 +---@return DMat3 +function DMat3.mul_mat3(_self,rhs) end + +---@param _self DMat3 +---@param rhs DMat3 +---@return DMat3 +function DMat3.add_mat3(_self,rhs) end + +---@param rotation DQuat +---@return DMat3 +function DMat3.from_quat(rotation) end + +---@param dir DVec3 +---@param up DVec3 +---@return DMat3 +function DMat3.look_to_rh(dir,up) end + +---@param _self DMat3 +---@return boolean +function DMat3.is_nan(_self) end + +---@param _self DMat3 +---@param rhs DVec3 +---@return DVec3 +function DMat3.mul_vec3(_self,rhs) end + +---@param _self DMat3 +---@return number[][] +function DMat3.to_cols_array_2d(_self) end + +---@param _self DMat3 +---@return number[] +function DMat3.to_cols_array(_self) end + +---@param p1 DMat3 +---@param p2 DMat3 +---@return DMat3 +function DMat3.mul(p1,p2) end + +---@param _self DMat3 +---@return DMat3 +function DMat3.inverse(_self) end + +---@param m DMat4 +---@return DMat3 +function DMat3.from_mat4(m) end + +---@param _self DMat3 +---@return boolean +function DMat3.is_finite(_self) end + +---@param x_axis DVec3 +---@param y_axis DVec3 +---@param z_axis DVec3 +---@return DMat3 +function DMat3.from_cols(x_axis,y_axis,z_axis) end + +---@param eye DVec3 +---@param center DVec3 +---@param up DVec3 +---@return DMat3 +function DMat3.look_at_rh(eye,center,up) end + +---@param _self DMat3 +---@return DMat3 +function DMat3.clone(_self) end + +---@param m DMat4 +---@param i integer +---@param j integer +---@return DMat3 +function DMat3.from_mat4_minor(m,i,j) end + +---@param _self DMat3 +---@param index integer +---@return DVec3 +function DMat3.col(_self,index) end + +---@param _self DMat3 +---@return Mat3 +function DMat3.as_mat3(_self) end + +---@param _self DMat3 +---@return number +function DMat3.determinant(_self) end + +---@param p1 DMat3 +---@param p2 DVec3 +---@return DVec3 +function DMat3.mul(p1,p2) end + +---@param scale DVec2 +---@return DMat3 +function DMat3.from_scale(scale) end + +---@param order EulerRot +---@param a number +---@param b number +---@param c number +---@return DMat3 +function DMat3.from_euler(order,a,b,c) end + +---@param p1 DMat3 +---@param p2 DMat3 +---@return DMat3 +function DMat3.sub(p1,p2) end + +---@param dir DVec3 +---@param up DVec3 +---@return DMat3 +function DMat3.look_to_lh(dir,up) end + +---@param _self DMat3 +---@param rhs DAffine2 +---@return DMat3 +function DMat3.mul(_self,rhs) end + +---@param p1 DMat3 +---@param p2 DAffine2 +---@return DMat3 +function DMat3.mul(p1,p2) end + + + +---@class DMat4 : ReflectReference +---@field x_axis ? DVec4 +---@field y_axis ? DVec4 +---@field z_axis ? DVec4 +---@field w_axis ? DVec4 +---@operator add(DMat4): DMat4 +---@operator unm: DMat4 +---@operator mul(DAffine3): DMat4 +---@operator mul(DAffine3): DMat4 +---@operator sub(DMat4): DMat4 +---@operator mul(DMat4): DMat4 +---@operator div(number): DMat4 +---@operator mul(number): DMat4 +---@operator sub(DMat4): DMat4 +---@operator mul(DVec4): DVec4 +---@operator mul(DMat4): DMat4 +---@operator add(DMat4): DMat4 +---@operator mul(DVec4): DVec4 +DMat4 = {} + +---@param p1 DMat4 +---@param p2 DMat4 +---@return DMat4 +function DMat4.add(p1,p2) end + +---@param _self DMat4 +---@return DMat4 +function DMat4.neg(_self) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@return DMat4 +function DMat4.perspective_infinite_reverse_lh(fov_y_radians,aspect_ratio,z_near) end + +---@param _self DMat4 +---@param rhs DVec3 +---@return DVec3 +function DMat4.transform_vector3(_self,rhs) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param z_near number +---@param z_far number +---@return DMat4 +function DMat4.frustum_rh(left,right,bottom,top,z_near,z_far) end + +---@param _self DMat4 +---@param rhs DVec3 +---@return DVec3 +function DMat4.transform_point3(_self,rhs) end + +---@param scale DVec3 +---@param rotation DQuat +---@param translation DVec3 +---@return DMat4 +function DMat4.from_scale_rotation_translation(scale,rotation,translation) end + +---@param m DMat3 +---@return DMat4 +function DMat4.from_mat3(m) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param z_near number +---@param z_far number +---@return DMat4 +function DMat4.frustum_lh(left,right,bottom,top,z_near,z_far) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@return DMat4 +function DMat4.perspective_infinite_rh(fov_y_radians,aspect_ratio,z_near) end + +---@param _self DMat4 +---@param rhs DMat4 +---@return DMat4 +function DMat4.add_mat4(_self,rhs) end + +---@param _self DMat4 +---@return DMat4 +function DMat4.inverse(_self) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@return DMat4 +function DMat4.perspective_infinite_lh(fov_y_radians,aspect_ratio,z_near) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param near number +---@param far number +---@return DMat4 +function DMat4.orthographic_rh(left,right,bottom,top,near,far) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param z_near number +---@param z_far number +---@return DMat4 +function DMat4.frustum_rh_gl(left,right,bottom,top,z_near,z_far) end + +---@param p1 DMat4 +---@param p2 DAffine3 +---@return DMat4 +function DMat4.mul(p1,p2) end + +---@param _self DMat4 +---@param rhs DMat4 +---@param max_abs_diff number +---@return boolean +function DMat4.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@return DMat4 +function DMat4.perspective_infinite_reverse_rh(fov_y_radians,aspect_ratio,z_near) end + +---@param _self DMat4 +---@param rhs DMat4 +---@return DMat4 +function DMat4.mul_mat4(_self,rhs) end + +---@param eye DVec3 +---@param dir DVec3 +---@param up DVec3 +---@return DMat4 +function DMat4.look_to_rh(eye,dir,up) end + +---@param _self DMat4 +---@param rhs DAffine3 +---@return DMat4 +function DMat4.mul(_self,rhs) end + +---@param _self DMat4 +---@return DMat4 +function DMat4.clone(_self) end + +---@param _self DMat4 +---@param rhs DMat4 +---@return DMat4 +function DMat4.sub(_self,rhs) end + +---@param _self DMat4 +---@param rhs DMat4 +---@return boolean +function DMat4.__eq(_self,rhs) end + +---@param _self DMat4 +---@param rhs DMat4 +---@return boolean +function DMat4.eq(_self,rhs) end + +---@param mat3 DMat3 +---@param translation DVec3 +---@return DMat4 +function DMat4.from_mat3_translation(mat3,translation) end + +---@param order EulerRot +---@param a number +---@param b number +---@param c number +---@return DMat4 +function DMat4.from_euler(order,a,b,c) end + +---@param _self DMat4 +---@param index integer +---@return DVec4 +function DMat4.col(_self,index) end + +---@param angle number +---@return DMat4 +function DMat4.from_rotation_z(angle) end + +---@param _self DMat4 +---@param rhs DVec4 +---@return DVec4 +function DMat4.mul_vec4(_self,rhs) end + +---@param _self DMat4 +---@return number[][] +function DMat4.to_cols_array_2d(_self) end + +---@param p1 DMat4 +---@param p2 DMat4 +---@return DMat4 +function DMat4.mul(p1,p2) end + +---@param translation DVec3 +---@return DMat4 +function DMat4.from_translation(translation) end + +---@param _self DMat4 +---@param rhs number +---@return DMat4 +function DMat4.div_scalar(_self,rhs) end + +---@param angle number +---@return DMat4 +function DMat4.from_rotation_x(angle) end + +---@param _self DMat4 +---@return DMat4 +function DMat4.abs(_self) end + +---@param _self DMat4 +---@param rhs number +---@return DMat4 +function DMat4.div(_self,rhs) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param near number +---@param far number +---@return DMat4 +function DMat4.orthographic_lh(left,right,bottom,top,near,far) end + +---@param p1 DMat4 +---@param p2 number +---@return DMat4 +function DMat4.mul(p1,p2) end + +---@param _self DMat4 +---@return boolean +function DMat4.is_finite(_self) end + +---@param axis DVec3 +---@param angle number +---@return DMat4 +function DMat4.from_axis_angle(axis,angle) end + +---@param _self DMat4 +---@param rhs DMat4 +---@return DMat4 +function DMat4.sub_mat4(_self,rhs) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param near number +---@param far number +---@return DMat4 +function DMat4.orthographic_rh_gl(left,right,bottom,top,near,far) end + +---@param _self DMat4 +---@return number +function DMat4.determinant(_self) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@param z_far number +---@return DMat4 +function DMat4.perspective_rh_gl(fov_y_radians,aspect_ratio,z_near,z_far) end + +---@param _self DMat4 +---@param index integer +---@return DVec4 +function DMat4.row(_self,index) end + +---@param eye DVec3 +---@param center DVec3 +---@param up DVec3 +---@return DMat4 +function DMat4.look_at_rh(eye,center,up) end + +---@param diagonal DVec4 +---@return DMat4 +function DMat4.from_diagonal(diagonal) end + +---@param _self DMat4 +---@param rhs number +---@return DMat4 +function DMat4.mul_scalar(_self,rhs) end + +---@param x_axis DVec4 +---@param y_axis DVec4 +---@param z_axis DVec4 +---@param w_axis DVec4 +---@return DMat4 +function DMat4.from_cols(x_axis,y_axis,z_axis,w_axis) end + +---@param _self DMat4 +---@return DMat4 +function DMat4.transpose(_self) end + +---@param eye DVec3 +---@param dir DVec3 +---@param up DVec3 +---@return DMat4 +function DMat4.look_to_lh(eye,dir,up) end + +---@param _self DMat4 +---@param rhs DVec3 +---@return DVec3 +function DMat4.project_point3(_self,rhs) end + +---@param angle number +---@return DMat4 +function DMat4.from_rotation_y(angle) end + +---@param p1 DMat4 +---@param p2 DMat4 +---@return DMat4 +function DMat4.sub(p1,p2) end + +---@param _self DMat4 +---@return boolean +function DMat4.is_nan(_self) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@param z_far number +---@return DMat4 +function DMat4.perspective_lh(fov_y_radians,aspect_ratio,z_near,z_far) end + +---@param p1 DMat4 +---@param p2 DVec4 +---@return DVec4 +function DMat4.mul(p1,p2) end + +---@param p1 DMat4 +---@param p2 DMat4 +---@return DMat4 +function DMat4.mul(p1,p2) end + +---@param rotation DQuat +---@param translation DVec3 +---@return DMat4 +function DMat4.from_rotation_translation(rotation,translation) end + +---@param eye DVec3 +---@param center DVec3 +---@param up DVec3 +---@return DMat4 +function DMat4.look_at_lh(eye,center,up) end + +---@param _self DMat4 +---@param order EulerRot +---@return [number, number, number] +function DMat4.to_euler(_self,order) end + +---@param _self DMat4 +---@return number[] +function DMat4.to_cols_array(_self) end + +---@param _self DMat4 +---@param rhs DMat4 +---@return DMat4 +function DMat4.add(_self,rhs) end + +---@param p1 DMat4 +---@param p2 DVec4 +---@return DVec4 +function DMat4.mul(p1,p2) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@param z_far number +---@return DMat4 +function DMat4.perspective_rh(fov_y_radians,aspect_ratio,z_near,z_far) end + +---@param rotation DQuat +---@return DMat4 +function DMat4.from_quat(rotation) end + +---@param _self DMat4 +---@return Mat4 +function DMat4.as_mat4(_self) end + +---@param scale DVec3 +---@return DMat4 +function DMat4.from_scale(scale) end + + + +---@class DQuat : ReflectReference +---@field x ? number +---@field y ? number +---@field z ? number +---@field w ? number +---@operator add(DQuat): DQuat +---@operator mul(number): DQuat +---@operator add(DQuat): DQuat +---@operator mul(DQuat): DQuat +---@operator sub(DQuat): DQuat +---@operator unm: DQuat +---@operator div(number): DQuat +---@operator mul(DVec3): DVec3 +---@operator mul(DVec3): DVec3 +---@operator mul(DQuat): DQuat +---@operator sub(DQuat): DQuat +DQuat = {} + +---@param _self DQuat +---@param rhs DQuat +---@return DQuat +function DQuat.add(_self,rhs) end + +---@param p1 DQuat +---@param p2 number +---@return DQuat +function DQuat.mul(p1,p2) end + +---@param _self DQuat +---@param rhs DQuat +---@return number +function DQuat.dot(_self,rhs) end + +---@param p1 DQuat +---@param p2 DQuat +---@return DQuat +function DQuat.add(p1,p2) end + +---@param from DVec3 +---@param to DVec3 +---@return DQuat +function DQuat.from_rotation_arc(from,to) end + +---@param _self DQuat +---@return DVec3 +function DQuat.to_scaled_axis(_self) end + +---@param angle number +---@return DQuat +function DQuat.from_rotation_z(angle) end + +---@param _self DQuat +---@param rhs DQuat +---@param max_abs_diff number +---@return boolean +function DQuat.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self DQuat +---@return boolean +function DQuat.is_near_identity(_self) end + +---@param euler EulerRot +---@param a number +---@param b number +---@param c number +---@return DQuat +function DQuat.from_euler(euler,a,b,c) end + +---@param _self DQuat +---@return number +function DQuat.length_squared(_self) end + +---@param a number[] +---@return DQuat +function DQuat.from_array(a) end + +---@param _self DQuat +---@param rhs DQuat +---@return DQuat +function DQuat.mul(_self,rhs) end + +---@param _self DQuat +---@return number +function DQuat.length(_self) end + +---@param _self DQuat +---@param rhs DQuat +---@return DQuat +function DQuat.sub(_self,rhs) end + +---@param v DVec3 +---@return DQuat +function DQuat.from_scaled_axis(v) end + +---@param v DVec4 +---@return DQuat +function DQuat.from_vec4(v) end + +---@param mat DMat4 +---@return DQuat +function DQuat.from_mat4(mat) end + +---@param _self DQuat +---@param rhs DVec3 +---@return DVec3 +function DQuat.mul_vec3(_self,rhs) end + +---@param _self DQuat +---@return DQuat +function DQuat.clone(_self) end + +---@param _self DQuat +---@return DQuat +function DQuat.inverse(_self) end + +---@param dir DVec3 +---@param up DVec3 +---@return DQuat +function DQuat.look_to_lh(dir,up) end + +---@param _self DQuat +---@return DQuat +function DQuat.neg(_self) end + +---@param _self DQuat +---@param rhs number +---@return DQuat +function DQuat.div(_self,rhs) end + +---@param _self DQuat +---@return boolean +function DQuat.is_normalized(_self) end + +---@param angle number +---@return DQuat +function DQuat.from_rotation_y(angle) end + +---@param _self DQuat +---@return boolean +function DQuat.is_nan(_self) end + +---@param _self DQuat +---@return DQuat +function DQuat.conjugate(_self) end + +---@param p1 DQuat +---@param p2 DVec3 +---@return DVec3 +function DQuat.mul(p1,p2) end + +---@param from DVec3 +---@param to DVec3 +---@return DQuat +function DQuat.from_rotation_arc_colinear(from,to) end + +---@param _self DQuat +---@param rhs DQuat +---@return DQuat +function DQuat.mul_quat(_self,rhs) end + +---@param axis DVec3 +---@param angle number +---@return DQuat +function DQuat.from_axis_angle(axis,angle) end + +---@param p1 DQuat +---@param p2 DVec3 +---@return DVec3 +function DQuat.mul(p1,p2) end + +---@param p1 DQuat +---@param p2 DQuat +---@return DQuat +function DQuat.mul(p1,p2) end + +---@param _self DQuat +---@return number +function DQuat.length_recip(_self) end + +---@param angle number +---@return DQuat +function DQuat.from_rotation_x(angle) end + +---@param _self DQuat +---@param rhs DQuat +---@return boolean +function DQuat.__eq(_self,rhs) end + +---@param _self DQuat +---@param rhs DQuat +---@return boolean +function DQuat.eq(_self,rhs) end + +---@param x number +---@param y number +---@param z number +---@param w number +---@return DQuat +function DQuat.from_xyzw(x,y,z,w) end + +---@param dir DVec3 +---@param up DVec3 +---@return DQuat +function DQuat.look_to_rh(dir,up) end + +---@param mat DMat3 +---@return DQuat +function DQuat.from_mat3(mat) end + +---@param _self DQuat +---@param rhs DQuat +---@param max_angle number +---@return DQuat +function DQuat.rotate_towards(_self,rhs,max_angle) end + +---@param _self DQuat +---@param rhs DQuat +---@return number +function DQuat.angle_between(_self,rhs) end + +---@param p1 DQuat +---@param p2 DQuat +---@return DQuat +function DQuat.sub(p1,p2) end + +---@param _self DQuat +---@param order EulerRot +---@return [number, number, number] +function DQuat.to_euler(_self,order) end + +---@param _self DQuat +---@return number[] +function DQuat.to_array(_self) end + +---@param a DAffine3 +---@return DQuat +function DQuat.from_affine3(a) end + +---@param _self DQuat +---@param _end DQuat +---@param s number +---@return DQuat +function DQuat.lerp(_self,_end,s) end + +---@param _self DQuat +---@return boolean +function DQuat.is_finite(_self) end + +---@param from DVec2 +---@param to DVec2 +---@return DQuat +function DQuat.from_rotation_arc_2d(from,to) end + +---@param _self DQuat +---@return DVec3 +function DQuat.xyz(_self) end + +---@param eye DVec3 +---@param center DVec3 +---@param up DVec3 +---@return DQuat +function DQuat.look_at_lh(eye,center,up) end + +---@param _self DQuat +---@return DQuat +function DQuat.normalize(_self) end + +---@param _self DQuat +---@param _end DQuat +---@param s number +---@return DQuat +function DQuat.slerp(_self,_end,s) end + +---@param eye DVec3 +---@param center DVec3 +---@param up DVec3 +---@return DQuat +function DQuat.look_at_rh(eye,center,up) end + +---@param _self DQuat +---@return Quat +function DQuat.as_quat(_self) end + + + +---@class DVec2 : ReflectReference +---@field x ? number +---@field y ? number +---@operator div(DVec2): DVec2 +---@operator mul(number): DVec2 +---@operator sub(number): DVec2 +---@operator mod(number): DVec2 +---@operator mul(DVec2): DVec2 +---@operator add(DVec2): DVec2 +---@operator div(number): DVec2 +---@operator unm: DVec2 +---@operator sub(DVec2): DVec2 +---@operator add(DVec2): DVec2 +---@operator div(DVec2): DVec2 +---@operator mul(DVec2): DVec2 +---@operator mod(DVec2): DVec2 +---@operator add(number): DVec2 +---@operator mod(DVec2): DVec2 +---@operator sub(DVec2): DVec2 +DVec2 = {} + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.project_onto(_self,rhs) end + +---@param _self DVec2 +---@param normal DVec2 +---@param eta number +---@return DVec2 +function DVec2.refract(_self,normal,eta) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.project_onto_normalized(_self,rhs) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.ceil(_self) end + +---@param _self DVec2 +---@return number +function DVec2.min_element(_self) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.ln(_self) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.fract_gl(_self) end + +---@param _self DVec2 +---@return integer +function DVec2.is_negative_bitmask(_self) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.trunc(_self) end + +---@param _self DVec2 +---@return I64Vec2 +function DVec2.as_i64vec2(_self) end + +---@param _self DVec2 +---@return number +function DVec2.length_recip(_self) end + +---@param _self DVec2 +---@return number +function DVec2.length(_self) end + +---@param _self DVec2 +---@return number +function DVec2.element_product(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@param s number +---@return DVec2 +function DVec2.lerp(_self,rhs,s) end + +---@param _self DVec2 +---@return UVec2 +function DVec2.as_uvec2(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.div(_self,rhs) end + +---@param p1 DVec2 +---@param p2 number +---@return DVec2 +function DVec2.mul(p1,p2) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.max(_self,rhs) end + +---@param _self DVec2 +---@return boolean +function DVec2.is_nan(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return number +function DVec2.angle_between(_self,rhs) end + +---@param _self DVec2 +---@return IVec2 +function DVec2.as_ivec2(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@param d number +---@return DVec2 +function DVec2.move_towards(_self,rhs,d) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return number +function DVec2.distance_squared(_self,rhs) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.exp2(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.div_euclid(_self,rhs) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.clone(_self) end + +---@param angle number +---@return DVec2 +function DVec2.from_angle(angle) end + +---@param _self DVec2 +---@param normal DVec2 +---@return DVec2 +function DVec2.reflect(_self,normal) end + +---@param mask BVec2 +---@param if_true DVec2 +---@param if_false DVec2 +---@return DVec2 +function DVec2.select(mask,if_true,if_false) end + +---@param x number +---@param y number +---@return DVec2 +function DVec2.new(x,y) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.rem_euclid(_self,rhs) end + +---@param _self DVec2 +---@return number +function DVec2.element_sum(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@param max_angle number +---@return DVec2 +function DVec2.rotate_towards(_self,rhs,max_angle) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return BVec2 +function DVec2.cmpeq(_self,rhs) end + +---@param _self DVec2 +---@return BVec2 +function DVec2.is_nan_mask(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.min(_self,rhs) end + +---@param _self DVec2 +---@return U8Vec2 +function DVec2.as_u8vec2(_self) end + +---@param p1 DVec2 +---@param p2 number +---@return DVec2 +function DVec2.sub(p1,p2) end + +---@param p1 DVec2 +---@param p2 number +---@return DVec2 +function DVec2.rem(p1,p2) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.copysign(_self,rhs) end + +---@param _self DVec2 +---@return boolean +function DVec2.is_normalized(_self) end + +---@param _self DVec2 +---@param max number +---@return DVec2 +function DVec2.clamp_length_max(_self,max) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.rotate(_self,rhs) end + +---@param p1 DVec2 +---@param p2 DVec2 +---@return DVec2 +function DVec2.mul(p1,p2) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return number +function DVec2.angle_to(_self,rhs) end + +---@param p1 DVec2 +---@param p2 DVec2 +---@return DVec2 +function DVec2.add(p1,p2) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.floor(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return number +function DVec2.dot(_self,rhs) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.normalize_or_zero(_self) end + +---@param p1 DVec2 +---@param p2 number +---@return DVec2 +function DVec2.div(p1,p2) end + +---@param _self DVec2 +---@param min number +---@param max number +---@return DVec2 +function DVec2.clamp_length(_self,min,max) end + +---@param _self DVec2 +---@return I16Vec2 +function DVec2.as_i16vec2(_self) end + +---@param a number[] +---@return DVec2 +function DVec2.from_array(a) end + +---@param _self DVec2 +---@return U16Vec2 +function DVec2.as_u16vec2(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return BVec2 +function DVec2.cmpge(_self,rhs) end + +---@param _self DVec2 +---@return boolean +function DVec2.is_finite(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.midpoint(_self,rhs) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return BVec2 +function DVec2.cmplt(_self,rhs) end + +---@param _self DVec2 +---@return U64Vec2 +function DVec2.as_u64vec2(_self) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.exp(_self) end + +---@param _self DVec2 +---@return BVec2 +function DVec2.is_finite_mask(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return BVec2 +function DVec2.cmpgt(_self,rhs) end + +---@param _self DVec2 +---@param n number +---@return DVec2 +function DVec2.powf(_self,n) end + +---@param _self DVec2 +---@param a DVec2 +---@param b DVec2 +---@return DVec2 +function DVec2.mul_add(_self,a,b) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.neg(_self) end + +---@param _self DVec2 +---@param z number +---@return DVec3 +function DVec2.extend(_self,z) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.signum(_self) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.abs(_self) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.fract(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.reject_from(_self,rhs) end + +---@param p1 DVec2 +---@param p2 DVec2 +---@return DVec2 +function DVec2.sub(p1,p2) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return number +function DVec2.perp_dot(_self,rhs) end + +---@param _self DVec2 +---@return integer +function DVec2.max_position(_self) end + +---@param _self DVec2 +---@return number +function DVec2.length_squared(_self) end + +---@param _self DVec2 +---@param other DVec2 +---@return boolean +function DVec2.__eq(_self,other) end + +---@param _self DVec2 +---@param other DVec2 +---@return boolean +function DVec2.eq(_self,other) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.recip(_self) end + +---@param _self DVec2 +---@return number[] +function DVec2.to_array(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@param max_abs_diff number +---@return boolean +function DVec2.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.add(_self,rhs) end + +---@param _self DVec2 +---@param min number +---@return DVec2 +function DVec2.clamp_length_min(_self,min) end + +---@param p1 DVec2 +---@param p2 DVec2 +---@return DVec2 +function DVec2.div(p1,p2) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return BVec2 +function DVec2.cmple(_self,rhs) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.dot_into_vec(_self,rhs) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.reject_from_normalized(_self,rhs) end + +---@param v number +---@return DVec2 +function DVec2.splat(v) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.round(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.mul(_self,rhs) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return number +function DVec2.distance(_self,rhs) end + +---@param _self DVec2 +---@param min DVec2 +---@param max DVec2 +---@return DVec2 +function DVec2.clamp(_self,min,max) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.normalize(_self) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.log2(_self) end + +---@param _self DVec2 +---@param fallback DVec2 +---@return DVec2 +function DVec2.normalize_or(_self,fallback) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.rem(_self,rhs) end + +---@param p1 DVec2 +---@param p2 number +---@return DVec2 +function DVec2.add(p1,p2) end + +---@param _self DVec2 +---@param y number +---@return DVec2 +function DVec2.with_y(_self,y) end + +---@param p1 DVec2 +---@param p2 DVec2 +---@return DVec2 +function DVec2.rem(p1,p2) end + +---@param _self DVec2 +---@return Vec2 +function DVec2.as_vec2(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return DVec2 +function DVec2.sub(_self,rhs) end + +---@param _self DVec2 +---@return number +function DVec2.max_element(_self) end + +---@param _self DVec2 +---@param x number +---@return DVec2 +function DVec2.with_x(_self,x) end + +---@param _self DVec2 +---@return number +function DVec2.to_angle(_self) end + +---@param _self DVec2 +---@param rhs DVec2 +---@return BVec2 +function DVec2.cmpne(_self,rhs) end + +---@param _self DVec2 +---@return I8Vec2 +function DVec2.as_i8vec2(_self) end + +---@param _self DVec2 +---@return DVec2 +function DVec2.perp(_self) end + +---@param _self DVec2 +---@return integer +function DVec2.min_position(_self) end + + + +---@class DVec3 : ReflectReference +---@field x ? number +---@field y ? number +---@field z ? number +---@operator div(DVec3): DVec3 +---@operator sub(number): DVec3 +---@operator mod(number): DVec3 +---@operator unm: DVec3 +---@operator sub(DVec3): DVec3 +---@operator div(number): DVec3 +---@operator mod(DVec3): DVec3 +---@operator mul(DVec3): DVec3 +---@operator div(DVec3): DVec3 +---@operator mul(DVec3): DVec3 +---@operator sub(DVec3): DVec3 +---@operator mul(number): DVec3 +---@operator mod(DVec3): DVec3 +---@operator add(number): DVec3 +---@operator add(DVec3): DVec3 +---@operator add(DVec3): DVec3 +DVec3 = {} + +---@param mask BVec3 +---@param if_true DVec3 +---@param if_false DVec3 +---@return DVec3 +function DVec3.select(mask,if_true,if_false) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.div(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return BVec3 +function DVec3.cmpge(_self,rhs) end + +---@param _self DVec3 +---@return BVec3 +function DVec3.is_finite_mask(_self) end + +---@param _self DVec3 +---@return Vec3A +function DVec3.as_vec3a(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return number +function DVec3.angle_between(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return BVec3 +function DVec3.cmpgt(_self,rhs) end + +---@param _self DVec3 +---@return boolean +function DVec3.is_nan(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.fract(_self) end + +---@param _self DVec3 +---@param z number +---@return DVec3 +function DVec3.with_z(_self,z) end + +---@param _self DVec3 +---@param angle number +---@return DVec3 +function DVec3.rotate_x(_self,angle) end + +---@param _self DVec3 +---@return I64Vec3 +function DVec3.as_i64vec3(_self) end + +---@param _self DVec3 +---@param max number +---@return DVec3 +function DVec3.clamp_length_max(_self,max) end + +---@param _self DVec3 +---@param angle number +---@return DVec3 +function DVec3.rotate_z(_self,angle) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.clone(_self) end + +---@param _self DVec3 +---@return number +function DVec3.element_product(_self) end + +---@param _self DVec3 +---@return number +function DVec3.length_squared(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.trunc(_self) end + +---@param p1 DVec3 +---@param p2 number +---@return DVec3 +function DVec3.sub(p1,p2) end + +---@param p1 DVec3 +---@param p2 number +---@return DVec3 +function DVec3.rem(p1,p2) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.neg(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.floor(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return number +function DVec3.dot(_self,rhs) end + +---@param _self DVec3 +---@return integer +function DVec3.min_position(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.ceil(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.ln(_self) end + +---@param _self DVec3 +---@param axis DVec3 +---@param angle number +---@return DVec3 +function DVec3.rotate_axis(_self,axis,angle) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.recip(_self) end + +---@param _self DVec3 +---@return boolean +function DVec3.is_finite(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.rem_euclid(_self,rhs) end + +---@param _self DVec3 +---@return BVec3 +function DVec3.is_nan_mask(_self) end + +---@param _self DVec3 +---@param min number +---@param max number +---@return DVec3 +function DVec3.clamp_length(_self,min,max) end + +---@param x number +---@param y number +---@param z number +---@return DVec3 +function DVec3.new(x,y,z) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.exp2(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.normalize(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.sub(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return number +function DVec3.distance(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.dot_into_vec(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.min(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@param d number +---@return DVec3 +function DVec3.move_towards(_self,rhs,d) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.any_orthogonal_vector(_self) end + +---@param _self DVec3 +---@return I16Vec3 +function DVec3.as_i16vec3(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.max(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.reject_from_normalized(_self,rhs) end + +---@param p1 DVec3 +---@param p2 number +---@return DVec3 +function DVec3.div(p1,p2) end + +---@param _self DVec3 +---@return integer +function DVec3.max_position(_self) end + +---@param _self DVec3 +---@param y number +---@return DVec3 +function DVec3.with_y(_self,y) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.fract_gl(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.reject_from(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@param max_abs_diff number +---@return boolean +function DVec3.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self DVec3 +---@return UVec3 +function DVec3.as_uvec3(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return BVec3 +function DVec3.cmple(_self,rhs) end + +---@param _self DVec3 +---@return DVec4 +function DVec3.to_homogeneous(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.rem(_self,rhs) end + +---@param _self DVec3 +---@return U16Vec3 +function DVec3.as_u16vec3(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return number +function DVec3.distance_squared(_self,rhs) end + +---@param _self DVec3 +---@param fallback DVec3 +---@return DVec3 +function DVec3.normalize_or(_self,fallback) end + +---@param _self DVec3 +---@return number +function DVec3.length(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.mul(_self,rhs) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.normalize_or_zero(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.abs(_self) end + +---@param a number[] +---@return DVec3 +function DVec3.from_array(a) end + +---@param _self DVec3 +---@return number +function DVec3.min_element(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.any_orthonormal_vector(_self) end + +---@param _self DVec3 +---@return I8Vec3 +function DVec3.as_i8vec3(_self) end + +---@param v number +---@return DVec3 +function DVec3.splat(v) end + +---@param _self DVec3 +---@return DVec2 +function DVec3.truncate(_self) end + +---@param _self DVec3 +---@param n number +---@return DVec3 +function DVec3.powf(_self,n) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return BVec3 +function DVec3.cmpne(_self,rhs) end + +---@param _self DVec3 +---@param min number +---@return DVec3 +function DVec3.clamp_length_min(_self,min) end + +---@param _self DVec3 +---@return Vec3 +function DVec3.as_vec3(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.exp(_self) end + +---@param v DVec4 +---@return DVec3 +function DVec3.from_homogeneous(v) end + +---@param _self DVec3 +---@return IVec3 +function DVec3.as_ivec3(_self) end + +---@param _self DVec3 +---@return integer +function DVec3.is_negative_bitmask(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@param s number +---@return DVec3 +function DVec3.slerp(_self,rhs,s) end + +---@param _self DVec3 +---@param normal DVec3 +---@return DVec3 +function DVec3.reflect(_self,normal) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return BVec3 +function DVec3.cmpeq(_self,rhs) end + +---@param p1 DVec3 +---@param p2 DVec3 +---@return DVec3 +function DVec3.div(p1,p2) end + +---@param p1 DVec3 +---@param p2 DVec3 +---@return DVec3 +function DVec3.mul(p1,p2) end + +---@param _self DVec3 +---@param a DVec3 +---@param b DVec3 +---@return DVec3 +function DVec3.mul_add(_self,a,b) end + +---@param p1 DVec3 +---@param p2 DVec3 +---@return DVec3 +function DVec3.sub(p1,p2) end + +---@param _self DVec3 +---@param rhs DVec3 +---@param max_angle number +---@return DVec3 +function DVec3.rotate_towards(_self,rhs,max_angle) end + +---@param _self DVec3 +---@param x number +---@return DVec3 +function DVec3.with_x(_self,x) end + +---@param _self DVec3 +---@return number +function DVec3.element_sum(_self) end + +---@param p1 DVec3 +---@param p2 number +---@return DVec3 +function DVec3.mul(p1,p2) end + +---@param _self DVec3 +---@param min DVec3 +---@param max DVec3 +---@return DVec3 +function DVec3.clamp(_self,min,max) end + +---@param _self DVec3 +---@return U8Vec3 +function DVec3.as_u8vec3(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.log2(_self) end + +---@param _self DVec3 +---@param normal DVec3 +---@param eta number +---@return DVec3 +function DVec3.refract(_self,normal,eta) end + +---@param _self DVec3 +---@return number +function DVec3.max_element(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.project_onto_normalized(_self,rhs) end + +---@param p1 DVec3 +---@param p2 DVec3 +---@return DVec3 +function DVec3.rem(p1,p2) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.cross(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.project_onto(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.midpoint(_self,rhs) end + +---@param _self DVec3 +---@return number +function DVec3.length_recip(_self) end + +---@param _self DVec3 +---@return number[] +function DVec3.to_array(_self) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.round(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.div_euclid(_self,rhs) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return BVec3 +function DVec3.cmplt(_self,rhs) end + +---@param _self DVec3 +---@return boolean +function DVec3.is_normalized(_self) end + +---@param p1 DVec3 +---@param p2 number +---@return DVec3 +function DVec3.add(p1,p2) end + +---@param _self DVec3 +---@return DVec3 +function DVec3.signum(_self) end + +---@param _self DVec3 +---@param other DVec3 +---@return boolean +function DVec3.__eq(_self,other) end + +---@param _self DVec3 +---@param other DVec3 +---@return boolean +function DVec3.eq(_self,other) end + +---@param _self DVec3 +---@param w number +---@return DVec4 +function DVec3.extend(_self,w) end + +---@param _self DVec3 +---@param rhs DVec3 +---@param s number +---@return DVec3 +function DVec3.lerp(_self,rhs,s) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.copysign(_self,rhs) end + +---@param _self DVec3 +---@param angle number +---@return DVec3 +function DVec3.rotate_y(_self,angle) end + +---@param p1 DVec3 +---@param p2 DVec3 +---@return DVec3 +function DVec3.add(p1,p2) end + +---@param _self DVec3 +---@return U64Vec3 +function DVec3.as_u64vec3(_self) end + +---@param _self DVec3 +---@param rhs DVec3 +---@return DVec3 +function DVec3.add(_self,rhs) end + + + +---@class DVec4 : ReflectReference +---@field x ? number +---@field y ? number +---@field z ? number +---@field w ? number +---@operator div(DVec4): DVec4 +---@operator mod(number): DVec4 +---@operator unm: DVec4 +---@operator mul(number): DVec4 +---@operator sub(number): DVec4 +---@operator add(number): DVec4 +---@operator div(number): DVec4 +---@operator mod(DVec4): DVec4 +---@operator mul(DVec4): DVec4 +---@operator sub(DVec4): DVec4 +---@operator add(DVec4): DVec4 +---@operator mul(DVec4): DVec4 +---@operator mod(DVec4): DVec4 +---@operator sub(DVec4): DVec4 +---@operator add(DVec4): DVec4 +---@operator div(DVec4): DVec4 +DVec4 = {} + +---@param _self DVec4 +---@return DVec4 +function DVec4.exp2(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.div_euclid(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.min(_self,rhs) end + +---@param p1 DVec4 +---@param p2 DVec4 +---@return DVec4 +function DVec4.div(p1,p2) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.copysign(_self,rhs) end + +---@param p1 DVec4 +---@param p2 number +---@return DVec4 +function DVec4.rem(p1,p2) end + +---@param _self DVec4 +---@param other DVec4 +---@return boolean +function DVec4.__eq(_self,other) end + +---@param _self DVec4 +---@param other DVec4 +---@return boolean +function DVec4.eq(_self,other) end + +---@param _self DVec4 +---@return boolean +function DVec4.is_nan(_self) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.neg(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return BVec4 +function DVec4.cmpeq(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return BVec4 +function DVec4.cmpne(_self,rhs) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.floor(_self) end + +---@param _self DVec4 +---@return number +function DVec4.element_product(_self) end + +---@param p1 DVec4 +---@param p2 number +---@return DVec4 +function DVec4.mul(p1,p2) end + +---@param _self DVec4 +---@return IVec4 +function DVec4.as_ivec4(_self) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.normalize_or_zero(_self) end + +---@param p1 DVec4 +---@param p2 number +---@return DVec4 +function DVec4.sub(p1,p2) end + +---@param _self DVec4 +---@param min number +---@return DVec4 +function DVec4.clamp_length_min(_self,min) end + +---@param p1 DVec4 +---@param p2 number +---@return DVec4 +function DVec4.add(p1,p2) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.rem_euclid(_self,rhs) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.normalize(_self) end + +---@param _self DVec4 +---@param n number +---@return DVec4 +function DVec4.powf(_self,n) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.midpoint(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return BVec4 +function DVec4.cmpgt(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return BVec4 +function DVec4.cmplt(_self,rhs) end + +---@param _self DVec4 +---@return U16Vec4 +function DVec4.as_u16vec4(_self) end + +---@param mask BVec4 +---@param if_true DVec4 +---@param if_false DVec4 +---@return DVec4 +function DVec4.select(mask,if_true,if_false) end + +---@param _self DVec4 +---@param rhs DVec4 +---@param max_abs_diff number +---@return boolean +function DVec4.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self DVec4 +---@param min number +---@param max number +---@return DVec4 +function DVec4.clamp_length(_self,min,max) end + +---@param _self DVec4 +---@return integer +function DVec4.max_position(_self) end + +---@param _self DVec4 +---@param z number +---@return DVec4 +function DVec4.with_z(_self,z) end + +---@param _self DVec4 +---@return boolean +function DVec4.is_normalized(_self) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.ln(_self) end + +---@param p1 DVec4 +---@param p2 number +---@return DVec4 +function DVec4.div(p1,p2) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return BVec4 +function DVec4.cmple(_self,rhs) end + +---@param _self DVec4 +---@return BVec4 +function DVec4.is_finite_mask(_self) end + +---@param _self DVec4 +---@param normal DVec4 +---@param eta number +---@return DVec4 +function DVec4.refract(_self,normal,eta) end + +---@param _self DVec4 +---@return U64Vec4 +function DVec4.as_u64vec4(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.rem(_self,rhs) end + +---@param _self DVec4 +---@param a DVec4 +---@param b DVec4 +---@return DVec4 +function DVec4.mul_add(_self,a,b) end + +---@param _self DVec4 +---@param normal DVec4 +---@return DVec4 +function DVec4.reflect(_self,normal) end + +---@param p1 DVec4 +---@param p2 DVec4 +---@return DVec4 +function DVec4.mul(p1,p2) end + +---@param x number +---@param y number +---@param z number +---@param w number +---@return DVec4 +function DVec4.new(x,y,z,w) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.sub(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@param s number +---@return DVec4 +function DVec4.lerp(_self,rhs,s) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.ceil(_self) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.round(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.reject_from_normalized(_self,rhs) end + +---@param p1 DVec4 +---@param p2 DVec4 +---@return DVec4 +function DVec4.add(p1,p2) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.max(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.project_onto_normalized(_self,rhs) end + +---@param _self DVec4 +---@return number[] +function DVec4.to_array(_self) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.abs(_self) end + +---@param _self DVec4 +---@return I16Vec4 +function DVec4.as_i16vec4(_self) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.recip(_self) end + +---@param v number +---@return DVec4 +function DVec4.splat(v) end + +---@param _self DVec4 +---@return DVec3 +function DVec4.truncate(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.mul(_self,rhs) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.trunc(_self) end + +---@param _self DVec4 +---@return DVec3 +function DVec4.project(_self) end + +---@param _self DVec4 +---@return number +function DVec4.length_squared(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.reject_from(_self,rhs) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.signum(_self) end + +---@param _self DVec4 +---@return boolean +function DVec4.is_finite(_self) end + +---@param _self DVec4 +---@return BVec4 +function DVec4.is_nan_mask(_self) end + +---@param p1 DVec4 +---@param p2 DVec4 +---@return DVec4 +function DVec4.rem(p1,p2) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return number +function DVec4.dot(_self,rhs) end + +---@param _self DVec4 +---@return number +function DVec4.element_sum(_self) end + +---@param _self DVec4 +---@return number +function DVec4.min_element(_self) end + +---@param a number[] +---@return DVec4 +function DVec4.from_array(a) end + +---@param _self DVec4 +---@return I8Vec4 +function DVec4.as_i8vec4(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return number +function DVec4.distance(_self,rhs) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.fract(_self) end + +---@param _self DVec4 +---@param w number +---@return DVec4 +function DVec4.with_w(_self,w) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.fract_gl(_self) end + +---@param _self DVec4 +---@param min DVec4 +---@param max DVec4 +---@return DVec4 +function DVec4.clamp(_self,min,max) end + +---@param _self DVec4 +---@return integer +function DVec4.is_negative_bitmask(_self) end + +---@param _self DVec4 +---@param y number +---@return DVec4 +function DVec4.with_y(_self,y) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.exp(_self) end + +---@param _self DVec4 +---@return Vec4 +function DVec4.as_vec4(_self) end + +---@param p1 DVec4 +---@param p2 DVec4 +---@return DVec4 +function DVec4.sub(p1,p2) end + +---@param _self DVec4 +---@return I64Vec4 +function DVec4.as_i64vec4(_self) end + +---@param _self DVec4 +---@param fallback DVec4 +---@return DVec4 +function DVec4.normalize_or(_self,fallback) end + +---@param _self DVec4 +---@param rhs DVec4 +---@param d number +---@return DVec4 +function DVec4.move_towards(_self,rhs,d) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.dot_into_vec(_self,rhs) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.log2(_self) end + +---@param _self DVec4 +---@return number +function DVec4.max_element(_self) end + +---@param _self DVec4 +---@return U8Vec4 +function DVec4.as_u8vec4(_self) end + +---@param _self DVec4 +---@param max number +---@return DVec4 +function DVec4.clamp_length_max(_self,max) end + +---@param _self DVec4 +---@return number +function DVec4.length_recip(_self) end + +---@param _self DVec4 +---@return number +function DVec4.length(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return number +function DVec4.distance_squared(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.add(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.project_onto(_self,rhs) end + +---@param _self DVec4 +---@return integer +function DVec4.min_position(_self) end + +---@param _self DVec4 +---@return UVec4 +function DVec4.as_uvec4(_self) end + +---@param _self DVec4 +---@return DVec4 +function DVec4.clone(_self) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return DVec4 +function DVec4.div(_self,rhs) end + +---@param _self DVec4 +---@param rhs DVec4 +---@return BVec4 +function DVec4.cmpge(_self,rhs) end + +---@param _self DVec4 +---@param x number +---@return DVec4 +function DVec4.with_x(_self,x) end + + + +---@class EulerRot : ReflectReference +EulerRot = {} + +---@param _self EulerRot +---@return EulerRot +function EulerRot.clone(_self) end + +---@param _self EulerRot +---@param other EulerRot +---@return boolean +function EulerRot.__eq(_self,other) end + +---@param _self EulerRot +---@param other EulerRot +---@return boolean +function EulerRot.eq(_self,other) end + +---@param _self EulerRot +---@return nil +function EulerRot.assert_receiver_is_total_eq(_self) end + + + +---@class I16Vec2 : ReflectReference +---@field x ? integer +---@field y ? integer +---@operator mod(I16Vec2): I16Vec2 +---@operator mod(integer): I16Vec2 +---@operator mul(I16Vec2): I16Vec2 +---@operator sub(integer): I16Vec2 +---@operator div(I16Vec2): I16Vec2 +---@operator sub(I16Vec2): I16Vec2 +---@operator mul(integer): I16Vec2 +---@operator sub(I16Vec2): I16Vec2 +---@operator mul(I16Vec2): I16Vec2 +---@operator mod(I16Vec2): I16Vec2 +---@operator add(I16Vec2): I16Vec2 +---@operator add(integer): I16Vec2 +---@operator add(I16Vec2): I16Vec2 +---@operator div(integer): I16Vec2 +---@operator unm: I16Vec2 +---@operator div(I16Vec2): I16Vec2 +I16Vec2 = {} + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.wrapping_sub(_self,rhs) end + +---@param p1 I16Vec2 +---@param p2 I16Vec2 +---@return I16Vec2 +function I16Vec2.rem(p1,p2) end + +---@param _self I16Vec2 +---@return UVec2 +function I16Vec2.as_uvec2(_self) end + +---@param _self I16Vec2 +---@return I64Vec2 +function I16Vec2.as_i64vec2(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.saturating_add(_self,rhs) end + +---@param _self I16Vec2 +---@param y integer +---@return I16Vec2 +function I16Vec2.with_y(_self,y) end + +---@param _self I16Vec2 +---@return integer +function I16Vec2.is_negative_bitmask(_self) end + +---@param p1 I16Vec2 +---@param p2 integer +---@return I16Vec2 +function I16Vec2.rem(p1,p2) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.saturating_sub(_self,rhs) end + +---@param _self I16Vec2 +---@param z integer +---@return I16Vec3 +function I16Vec2.extend(_self,z) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.max(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs U16Vec2 +---@return I16Vec2 +function I16Vec2.saturating_sub_unsigned(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.mul(_self,rhs) end + +---@param _self I16Vec2 +---@return integer +function I16Vec2.max_element(_self) end + +---@param p1 I16Vec2 +---@param p2 integer +---@return I16Vec2 +function I16Vec2.sub(p1,p2) end + +---@param mask BVec2 +---@param if_true I16Vec2 +---@param if_false I16Vec2 +---@return I16Vec2 +function I16Vec2.select(mask,if_true,if_false) end + +---@param p1 I16Vec2 +---@param p2 I16Vec2 +---@return I16Vec2 +function I16Vec2.div(p1,p2) end + +---@param p1 I16Vec2 +---@param p2 I16Vec2 +---@return I16Vec2 +function I16Vec2.sub(p1,p2) end + +---@param _self I16Vec2 +---@return U64Vec2 +function I16Vec2.as_u64vec2(_self) end + +---@param a integer[] +---@return I16Vec2 +function I16Vec2.from_array(a) end + +---@param _self I16Vec2 +---@return integer[] +function I16Vec2.to_array(_self) end + +---@param _self I16Vec2 +---@return nil +function I16Vec2.assert_receiver_is_total_eq(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.rotate(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.rem_euclid(_self,rhs) end + +---@param _self I16Vec2 +---@return I8Vec2 +function I16Vec2.as_i8vec2(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.min(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.wrapping_add(_self,rhs) end + +---@param p1 I16Vec2 +---@param p2 integer +---@return I16Vec2 +function I16Vec2.mul(p1,p2) end + +---@param _self I16Vec2 +---@param rhs U16Vec2 +---@return I16Vec2 +function I16Vec2.wrapping_add_unsigned(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.saturating_mul(_self,rhs) end + +---@param v integer +---@return I16Vec2 +function I16Vec2.splat(v) end + +---@param _self I16Vec2 +---@return U16Vec2 +function I16Vec2.as_u16vec2(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.sub(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return BVec2 +function I16Vec2.cmplt(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return integer +function I16Vec2.distance_squared(_self,rhs) end + +---@param p1 I16Vec2 +---@param p2 I16Vec2 +---@return I16Vec2 +function I16Vec2.mul(p1,p2) end + +---@param _self I16Vec2 +---@param min I16Vec2 +---@param max I16Vec2 +---@return I16Vec2 +function I16Vec2.clamp(_self,min,max) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.rem(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.div_euclid(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.add(_self,rhs) end + +---@param x integer +---@param y integer +---@return I16Vec2 +function I16Vec2.new(x,y) end + +---@param _self I16Vec2 +---@return I16Vec2 +function I16Vec2.clone(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return integer | nil +function I16Vec2.checked_manhattan_distance(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs U16Vec2 +---@return I16Vec2 +function I16Vec2.wrapping_sub_unsigned(_self,rhs) end + +---@param _self I16Vec2 +---@return DVec2 +function I16Vec2.as_dvec2(_self) end + +---@param _self I16Vec2 +---@param rhs U16Vec2 +---@return I16Vec2 +function I16Vec2.saturating_add_unsigned(_self,rhs) end + +---@param _self I16Vec2 +---@param x integer +---@return I16Vec2 +function I16Vec2.with_x(_self,x) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return integer +function I16Vec2.dot(_self,rhs) end + +---@param p1 I16Vec2 +---@param p2 integer +---@return I16Vec2 +function I16Vec2.add(p1,p2) end + +---@param _self I16Vec2 +---@return integer +function I16Vec2.element_product(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return BVec2 +function I16Vec2.cmpeq(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.dot_into_vec(_self,rhs) end + +---@param _self I16Vec2 +---@return integer +function I16Vec2.length_squared(_self) end + +---@param _self I16Vec2 +---@return Vec2 +function I16Vec2.as_vec2(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return integer +function I16Vec2.manhattan_distance(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.wrapping_mul(_self,rhs) end + +---@param _self I16Vec2 +---@return IVec2 +function I16Vec2.as_ivec2(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return BVec2 +function I16Vec2.cmpgt(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return BVec2 +function I16Vec2.cmpne(_self,rhs) end + +---@param _self I16Vec2 +---@return U8Vec2 +function I16Vec2.as_u8vec2(_self) end + +---@param _self I16Vec2 +---@return I16Vec2 +function I16Vec2.abs(_self) end + +---@param _self I16Vec2 +---@return integer +function I16Vec2.element_sum(_self) end + +---@param _self I16Vec2 +---@return integer +function I16Vec2.min_element(_self) end + +---@param p1 I16Vec2 +---@param p2 I16Vec2 +---@return I16Vec2 +function I16Vec2.add(p1,p2) end + +---@param _self I16Vec2 +---@return integer +function I16Vec2.max_position(_self) end + +---@param _self I16Vec2 +---@param other I16Vec2 +---@return boolean +function I16Vec2.__eq(_self,other) end + +---@param _self I16Vec2 +---@param other I16Vec2 +---@return boolean +function I16Vec2.eq(_self,other) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return BVec2 +function I16Vec2.cmple(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return integer +function I16Vec2.chebyshev_distance(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.saturating_div(_self,rhs) end + +---@param p1 I16Vec2 +---@param p2 integer +---@return I16Vec2 +function I16Vec2.div(p1,p2) end + +---@param _self I16Vec2 +---@return I16Vec2 +function I16Vec2.perp(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return integer +function I16Vec2.perp_dot(_self,rhs) end + +---@param _self I16Vec2 +---@return I16Vec2 +function I16Vec2.neg(_self) end + +---@param _self I16Vec2 +---@return integer +function I16Vec2.min_position(_self) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.wrapping_div(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return BVec2 +function I16Vec2.cmpge(_self,rhs) end + +---@param _self I16Vec2 +---@param rhs I16Vec2 +---@return I16Vec2 +function I16Vec2.div(_self,rhs) end + +---@param _self I16Vec2 +---@return I16Vec2 +function I16Vec2.signum(_self) end + + + +---@class I16Vec3 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@operator div(integer): I16Vec3 +---@operator unm: I16Vec3 +---@operator div(I16Vec3): I16Vec3 +---@operator mul(I16Vec3): I16Vec3 +---@operator mod(I16Vec3): I16Vec3 +---@operator add(I16Vec3): I16Vec3 +---@operator sub(I16Vec3): I16Vec3 +---@operator mod(integer): I16Vec3 +---@operator mod(I16Vec3): I16Vec3 +---@operator add(I16Vec3): I16Vec3 +---@operator add(integer): I16Vec3 +---@operator div(I16Vec3): I16Vec3 +---@operator sub(I16Vec3): I16Vec3 +---@operator mul(integer): I16Vec3 +---@operator sub(integer): I16Vec3 +---@operator mul(I16Vec3): I16Vec3 +I16Vec3 = {} + +---@param p1 I16Vec3 +---@param p2 integer +---@return I16Vec3 +function I16Vec3.div(p1,p2) end + +---@param _self I16Vec3 +---@return I16Vec3 +function I16Vec3.neg(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.div(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.saturating_add(_self,rhs) end + +---@param _self I16Vec3 +---@return integer +function I16Vec3.element_product(_self) end + +---@param _self I16Vec3 +---@param z integer +---@return I16Vec3 +function I16Vec3.with_z(_self,z) end + +---@param _self I16Vec3 +---@return Vec3A +function I16Vec3.as_vec3a(_self) end + +---@param p1 I16Vec3 +---@param p2 I16Vec3 +---@return I16Vec3 +function I16Vec3.mul(p1,p2) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.saturating_div(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.wrapping_sub(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return integer | nil +function I16Vec3.checked_manhattan_distance(_self,rhs) end + +---@param _self I16Vec3 +---@return I64Vec3 +function I16Vec3.as_i64vec3(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.div_euclid(_self,rhs) end + +---@param p1 I16Vec3 +---@param p2 I16Vec3 +---@return I16Vec3 +function I16Vec3.rem(p1,p2) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.max(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.wrapping_mul(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.saturating_sub(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.add(_self,rhs) end + +---@param _self I16Vec3 +---@param w integer +---@return I16Vec4 +function I16Vec3.extend(_self,w) end + +---@param _self I16Vec3 +---@param x integer +---@return I16Vec3 +function I16Vec3.with_x(_self,x) end + +---@param _self I16Vec3 +---@return integer +function I16Vec3.is_negative_bitmask(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return integer +function I16Vec3.chebyshev_distance(_self,rhs) end + +---@param _self I16Vec3 +---@return I16Vec3 +function I16Vec3.abs(_self) end + +---@param _self I16Vec3 +---@return nil +function I16Vec3.assert_receiver_is_total_eq(_self) end + +---@param _self I16Vec3 +---@return integer +function I16Vec3.max_element(_self) end + +---@param v integer +---@return I16Vec3 +function I16Vec3.splat(v) end + +---@param _self I16Vec3 +---@return U8Vec3 +function I16Vec3.as_u8vec3(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return BVec3 +function I16Vec3.cmpge(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return BVec3 +function I16Vec3.cmpgt(_self,rhs) end + +---@param _self I16Vec3 +---@return U16Vec3 +function I16Vec3.as_u16vec3(_self) end + +---@param _self I16Vec3 +---@return DVec3 +function I16Vec3.as_dvec3(_self) end + +---@param _self I16Vec3 +---@param rhs U16Vec3 +---@return I16Vec3 +function I16Vec3.saturating_add_unsigned(_self,rhs) end + +---@param _self I16Vec3 +---@return I16Vec2 +function I16Vec3.truncate(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.min(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return integer +function I16Vec3.dot(_self,rhs) end + +---@param _self I16Vec3 +---@return integer +function I16Vec3.element_sum(_self) end + +---@param _self I16Vec3 +---@param rhs U16Vec3 +---@return I16Vec3 +function I16Vec3.saturating_sub_unsigned(_self,rhs) end + +---@param _self I16Vec3 +---@return integer[] +function I16Vec3.to_array(_self) end + +---@param _self I16Vec3 +---@return I16Vec3 +function I16Vec3.clone(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return BVec3 +function I16Vec3.cmpeq(_self,rhs) end + +---@param _self I16Vec3 +---@return U64Vec3 +function I16Vec3.as_u64vec3(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.sub(_self,rhs) end + +---@param _self I16Vec3 +---@param min I16Vec3 +---@param max I16Vec3 +---@return I16Vec3 +function I16Vec3.clamp(_self,min,max) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.wrapping_div(_self,rhs) end + +---@param _self I16Vec3 +---@return UVec3 +function I16Vec3.as_uvec3(_self) end + +---@param x integer +---@param y integer +---@param z integer +---@return I16Vec3 +function I16Vec3.new(x,y,z) end + +---@param p1 I16Vec3 +---@param p2 integer +---@return I16Vec3 +function I16Vec3.rem(p1,p2) end + +---@param _self I16Vec3 +---@return integer +function I16Vec3.min_position(_self) end + +---@param _self I16Vec3 +---@param y integer +---@return I16Vec3 +function I16Vec3.with_y(_self,y) end + +---@param _self I16Vec3 +---@return integer +function I16Vec3.max_position(_self) end + +---@param mask BVec3 +---@param if_true I16Vec3 +---@param if_false I16Vec3 +---@return I16Vec3 +function I16Vec3.select(mask,if_true,if_false) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.rem(_self,rhs) end + +---@param _self I16Vec3 +---@return integer +function I16Vec3.min_element(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return BVec3 +function I16Vec3.cmple(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.dot_into_vec(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.wrapping_add(_self,rhs) end + +---@param _self I16Vec3 +---@return integer +function I16Vec3.length_squared(_self) end + +---@param _self I16Vec3 +---@param rhs U16Vec3 +---@return I16Vec3 +function I16Vec3.wrapping_sub_unsigned(_self,rhs) end + +---@param p1 I16Vec3 +---@param p2 I16Vec3 +---@return I16Vec3 +function I16Vec3.add(p1,p2) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.saturating_mul(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return BVec3 +function I16Vec3.cmpne(_self,rhs) end + +---@param p1 I16Vec3 +---@param p2 integer +---@return I16Vec3 +function I16Vec3.add(p1,p2) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return integer +function I16Vec3.distance_squared(_self,rhs) end + +---@param p1 I16Vec3 +---@param p2 I16Vec3 +---@return I16Vec3 +function I16Vec3.div(p1,p2) end + +---@param p1 I16Vec3 +---@param p2 I16Vec3 +---@return I16Vec3 +function I16Vec3.sub(p1,p2) end + +---@param _self I16Vec3 +---@return IVec3 +function I16Vec3.as_ivec3(_self) end + +---@param _self I16Vec3 +---@return I16Vec3 +function I16Vec3.signum(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return integer +function I16Vec3.manhattan_distance(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return BVec3 +function I16Vec3.cmplt(_self,rhs) end + +---@param p1 I16Vec3 +---@param p2 integer +---@return I16Vec3 +function I16Vec3.mul(p1,p2) end + +---@param p1 I16Vec3 +---@param p2 integer +---@return I16Vec3 +function I16Vec3.sub(p1,p2) end + +---@param a integer[] +---@return I16Vec3 +function I16Vec3.from_array(a) end + +---@param _self I16Vec3 +---@param other I16Vec3 +---@return boolean +function I16Vec3.__eq(_self,other) end + +---@param _self I16Vec3 +---@param other I16Vec3 +---@return boolean +function I16Vec3.eq(_self,other) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.mul(_self,rhs) end + +---@param _self I16Vec3 +---@return I8Vec3 +function I16Vec3.as_i8vec3(_self) end + +---@param _self I16Vec3 +---@return Vec3 +function I16Vec3.as_vec3(_self) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.rem_euclid(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs I16Vec3 +---@return I16Vec3 +function I16Vec3.cross(_self,rhs) end + +---@param _self I16Vec3 +---@param rhs U16Vec3 +---@return I16Vec3 +function I16Vec3.wrapping_add_unsigned(_self,rhs) end + + + +---@class I16Vec4 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@field w ? integer +---@operator sub(I16Vec4): I16Vec4 +---@operator div(I16Vec4): I16Vec4 +---@operator mul(I16Vec4): I16Vec4 +---@operator mod(integer): I16Vec4 +---@operator mod(I16Vec4): I16Vec4 +---@operator add(I16Vec4): I16Vec4 +---@operator sub(I16Vec4): I16Vec4 +---@operator unm: I16Vec4 +---@operator add(integer): I16Vec4 +---@operator div(integer): I16Vec4 +---@operator mul(I16Vec4): I16Vec4 +---@operator sub(integer): I16Vec4 +---@operator mod(I16Vec4): I16Vec4 +---@operator mul(integer): I16Vec4 +---@operator add(I16Vec4): I16Vec4 +---@operator div(I16Vec4): I16Vec4 +I16Vec4 = {} + +---@param p1 I16Vec4 +---@param p2 I16Vec4 +---@return I16Vec4 +function I16Vec4.sub(p1,p2) end + +---@param _self I16Vec4 +---@return I16Vec4 +function I16Vec4.abs(_self) end + +---@param p1 I16Vec4 +---@param p2 I16Vec4 +---@return I16Vec4 +function I16Vec4.div(p1,p2) end + +---@param _self I16Vec4 +---@param w integer +---@return I16Vec4 +function I16Vec4.with_w(_self,w) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return integer +function I16Vec4.manhattan_distance(_self,rhs) end + +---@param _self I16Vec4 +---@return integer +function I16Vec4.length_squared(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.mul(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return integer | nil +function I16Vec4.checked_manhattan_distance(_self,rhs) end + +---@param _self I16Vec4 +---@return integer +function I16Vec4.min_position(_self) end + +---@param _self I16Vec4 +---@return I8Vec4 +function I16Vec4.as_i8vec4(_self) end + +---@param _self I16Vec4 +---@return Vec4 +function I16Vec4.as_vec4(_self) end + +---@param x integer +---@param y integer +---@param z integer +---@param w integer +---@return I16Vec4 +function I16Vec4.new(x,y,z,w) end + +---@param _self I16Vec4 +---@param min I16Vec4 +---@param max I16Vec4 +---@return I16Vec4 +function I16Vec4.clamp(_self,min,max) end + +---@param p1 I16Vec4 +---@param p2 integer +---@return I16Vec4 +function I16Vec4.rem(p1,p2) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return integer +function I16Vec4.chebyshev_distance(_self,rhs) end + +---@param a integer[] +---@return I16Vec4 +function I16Vec4.from_array(a) end + +---@param _self I16Vec4 +---@return integer[] +function I16Vec4.to_array(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.saturating_mul(_self,rhs) end + +---@param _self I16Vec4 +---@return integer +function I16Vec4.element_product(_self) end + +---@param p1 I16Vec4 +---@param p2 I16Vec4 +---@return I16Vec4 +function I16Vec4.rem(p1,p2) end + +---@param _self I16Vec4 +---@param rhs U16Vec4 +---@return I16Vec4 +function I16Vec4.wrapping_add_unsigned(_self,rhs) end + +---@param _self I16Vec4 +---@return nil +function I16Vec4.assert_receiver_is_total_eq(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.wrapping_mul(_self,rhs) end + +---@param _self I16Vec4 +---@return UVec4 +function I16Vec4.as_uvec4(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return integer +function I16Vec4.distance_squared(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.add(_self,rhs) end + +---@param _self I16Vec4 +---@return integer +function I16Vec4.element_sum(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.min(_self,rhs) end + +---@param _self I16Vec4 +---@return integer +function I16Vec4.min_element(_self) end + +---@param _self I16Vec4 +---@return U8Vec4 +function I16Vec4.as_u8vec4(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.div_euclid(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.sub(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return BVec4 +function I16Vec4.cmpge(_self,rhs) end + +---@param _self I16Vec4 +---@return DVec4 +function I16Vec4.as_dvec4(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.saturating_sub(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.rem_euclid(_self,rhs) end + +---@param _self I16Vec4 +---@return I16Vec4 +function I16Vec4.signum(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return BVec4 +function I16Vec4.cmple(_self,rhs) end + +---@param _self I16Vec4 +---@param x integer +---@return I16Vec4 +function I16Vec4.with_x(_self,x) end + +---@param _self I16Vec4 +---@return I16Vec3 +function I16Vec4.truncate(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return integer +function I16Vec4.dot(_self,rhs) end + +---@param _self I16Vec4 +---@return I16Vec4 +function I16Vec4.neg(_self) end + +---@param _self I16Vec4 +---@return integer +function I16Vec4.max_position(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.wrapping_add(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs U16Vec4 +---@return I16Vec4 +function I16Vec4.saturating_add_unsigned(_self,rhs) end + +---@param p1 I16Vec4 +---@param p2 integer +---@return I16Vec4 +function I16Vec4.add(p1,p2) end + +---@param p1 I16Vec4 +---@param p2 integer +---@return I16Vec4 +function I16Vec4.div(p1,p2) end + +---@param _self I16Vec4 +---@return I64Vec4 +function I16Vec4.as_i64vec4(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.dot_into_vec(_self,rhs) end + +---@param _self I16Vec4 +---@return integer +function I16Vec4.is_negative_bitmask(_self) end + +---@param _self I16Vec4 +---@return U64Vec4 +function I16Vec4.as_u64vec4(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return BVec4 +function I16Vec4.cmpne(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return BVec4 +function I16Vec4.cmpgt(_self,rhs) end + +---@param _self I16Vec4 +---@return IVec4 +function I16Vec4.as_ivec4(_self) end + +---@param _self I16Vec4 +---@return U16Vec4 +function I16Vec4.as_u16vec4(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.saturating_add(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs U16Vec4 +---@return I16Vec4 +function I16Vec4.wrapping_sub_unsigned(_self,rhs) end + +---@param _self I16Vec4 +---@param other I16Vec4 +---@return boolean +function I16Vec4.__eq(_self,other) end + +---@param _self I16Vec4 +---@param other I16Vec4 +---@return boolean +function I16Vec4.eq(_self,other) end + +---@param p1 I16Vec4 +---@param p2 I16Vec4 +---@return I16Vec4 +function I16Vec4.mul(p1,p2) end + +---@param _self I16Vec4 +---@return I16Vec4 +function I16Vec4.clone(_self) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return BVec4 +function I16Vec4.cmpeq(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.max(_self,rhs) end + +---@param p1 I16Vec4 +---@param p2 integer +---@return I16Vec4 +function I16Vec4.sub(p1,p2) end + +---@param v integer +---@return I16Vec4 +function I16Vec4.splat(v) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.rem(_self,rhs) end + +---@param mask BVec4 +---@param if_true I16Vec4 +---@param if_false I16Vec4 +---@return I16Vec4 +function I16Vec4.select(mask,if_true,if_false) end + +---@param _self I16Vec4 +---@return integer +function I16Vec4.max_element(_self) end + +---@param _self I16Vec4 +---@param rhs U16Vec4 +---@return I16Vec4 +function I16Vec4.saturating_sub_unsigned(_self,rhs) end + +---@param p1 I16Vec4 +---@param p2 integer +---@return I16Vec4 +function I16Vec4.mul(p1,p2) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return BVec4 +function I16Vec4.cmplt(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.wrapping_div(_self,rhs) end + +---@param _self I16Vec4 +---@param y integer +---@return I16Vec4 +function I16Vec4.with_y(_self,y) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.saturating_div(_self,rhs) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.wrapping_sub(_self,rhs) end + +---@param p1 I16Vec4 +---@param p2 I16Vec4 +---@return I16Vec4 +function I16Vec4.add(p1,p2) end + +---@param _self I16Vec4 +---@param rhs I16Vec4 +---@return I16Vec4 +function I16Vec4.div(_self,rhs) end + +---@param _self I16Vec4 +---@param z integer +---@return I16Vec4 +function I16Vec4.with_z(_self,z) end + + + +---@class I64Vec2 : ReflectReference +---@field x ? integer +---@field y ? integer +---@operator add(I64Vec2): I64Vec2 +---@operator sub(I64Vec2): I64Vec2 +---@operator mod(integer): I64Vec2 +---@operator add(I64Vec2): I64Vec2 +---@operator add(integer): I64Vec2 +---@operator sub(integer): I64Vec2 +---@operator unm: I64Vec2 +---@operator sub(I64Vec2): I64Vec2 +---@operator div(I64Vec2): I64Vec2 +---@operator mul(integer): I64Vec2 +---@operator mul(I64Vec2): I64Vec2 +---@operator mod(I64Vec2): I64Vec2 +---@operator div(integer): I64Vec2 +---@operator mod(I64Vec2): I64Vec2 +---@operator div(I64Vec2): I64Vec2 +---@operator mul(I64Vec2): I64Vec2 +I64Vec2 = {} + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return BVec2 +function I64Vec2.cmple(_self,rhs) end + +---@param x integer +---@param y integer +---@return I64Vec2 +function I64Vec2.new(x,y) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.div_euclid(_self,rhs) end + +---@param _self I64Vec2 +---@param other I64Vec2 +---@return boolean +function I64Vec2.__eq(_self,other) end + +---@param _self I64Vec2 +---@param other I64Vec2 +---@return boolean +function I64Vec2.eq(_self,other) end + +---@param p1 I64Vec2 +---@param p2 I64Vec2 +---@return I64Vec2 +function I64Vec2.add(p1,p2) end + +---@param p1 I64Vec2 +---@param p2 I64Vec2 +---@return I64Vec2 +function I64Vec2.sub(p1,p2) end + +---@param _self I64Vec2 +---@return UVec2 +function I64Vec2.as_uvec2(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return integer +function I64Vec2.chebyshev_distance(_self,rhs) end + +---@param p1 I64Vec2 +---@param p2 integer +---@return I64Vec2 +function I64Vec2.rem(p1,p2) end + +---@param _self I64Vec2 +---@return nil +function I64Vec2.assert_receiver_is_total_eq(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.add(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.wrapping_add(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return BVec2 +function I64Vec2.cmpne(_self,rhs) end + +---@param v integer +---@return I64Vec2 +function I64Vec2.splat(v) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.saturating_add(_self,rhs) end + +---@param _self I64Vec2 +---@return integer +function I64Vec2.max_element(_self) end + +---@param _self I64Vec2 +---@return integer +function I64Vec2.length_squared(_self) end + +---@param p1 I64Vec2 +---@param p2 integer +---@return I64Vec2 +function I64Vec2.add(p1,p2) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return integer | nil +function I64Vec2.checked_manhattan_distance(_self,rhs) end + +---@param _self I64Vec2 +---@return DVec2 +function I64Vec2.as_dvec2(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return integer +function I64Vec2.manhattan_distance(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return BVec2 +function I64Vec2.cmpge(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return integer +function I64Vec2.distance_squared(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.min(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.dot_into_vec(_self,rhs) end + +---@param _self I64Vec2 +---@param min I64Vec2 +---@param max I64Vec2 +---@return I64Vec2 +function I64Vec2.clamp(_self,min,max) end + +---@param p1 I64Vec2 +---@param p2 integer +---@return I64Vec2 +function I64Vec2.sub(p1,p2) end + +---@param _self I64Vec2 +---@return I64Vec2 +function I64Vec2.neg(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.sub(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.wrapping_mul(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.div(_self,rhs) end + +---@param p1 I64Vec2 +---@param p2 integer +---@return I64Vec2 +function I64Vec2.mul(p1,p2) end + +---@param _self I64Vec2 +---@return Vec2 +function I64Vec2.as_vec2(_self) end + +---@param _self I64Vec2 +---@return U8Vec2 +function I64Vec2.as_u8vec2(_self) end + +---@param p1 I64Vec2 +---@param p2 I64Vec2 +---@return I64Vec2 +function I64Vec2.mul(p1,p2) end + +---@param mask BVec2 +---@param if_true I64Vec2 +---@param if_false I64Vec2 +---@return I64Vec2 +function I64Vec2.select(mask,if_true,if_false) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.rem(_self,rhs) end + +---@param p1 I64Vec2 +---@param p2 integer +---@return I64Vec2 +function I64Vec2.div(p1,p2) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.saturating_sub(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs U64Vec2 +---@return I64Vec2 +function I64Vec2.saturating_add_unsigned(_self,rhs) end + +---@param _self I64Vec2 +---@return IVec2 +function I64Vec2.as_ivec2(_self) end + +---@param _self I64Vec2 +---@param z integer +---@return I64Vec3 +function I64Vec2.extend(_self,z) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return integer +function I64Vec2.perp_dot(_self,rhs) end + +---@param _self I64Vec2 +---@return integer +function I64Vec2.min_element(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return BVec2 +function I64Vec2.cmpgt(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.saturating_div(_self,rhs) end + +---@param _self I64Vec2 +---@return integer[] +function I64Vec2.to_array(_self) end + +---@param _self I64Vec2 +---@param rhs U64Vec2 +---@return I64Vec2 +function I64Vec2.saturating_sub_unsigned(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.wrapping_div(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs U64Vec2 +---@return I64Vec2 +function I64Vec2.wrapping_add_unsigned(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.saturating_mul(_self,rhs) end + +---@param _self I64Vec2 +---@return integer +function I64Vec2.max_position(_self) end + +---@param _self I64Vec2 +---@param x integer +---@return I64Vec2 +function I64Vec2.with_x(_self,x) end + +---@param _self I64Vec2 +---@param rhs U64Vec2 +---@return I64Vec2 +function I64Vec2.wrapping_sub_unsigned(_self,rhs) end + +---@param _self I64Vec2 +---@return integer +function I64Vec2.element_product(_self) end + +---@param _self I64Vec2 +---@return U64Vec2 +function I64Vec2.as_u64vec2(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.rem_euclid(_self,rhs) end + +---@param a integer[] +---@return I64Vec2 +function I64Vec2.from_array(a) end + +---@param _self I64Vec2 +---@return integer +function I64Vec2.element_sum(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return BVec2 +function I64Vec2.cmplt(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.rotate(_self,rhs) end + +---@param p1 I64Vec2 +---@param p2 I64Vec2 +---@return I64Vec2 +function I64Vec2.rem(p1,p2) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return BVec2 +function I64Vec2.cmpeq(_self,rhs) end + +---@param _self I64Vec2 +---@return I64Vec2 +function I64Vec2.abs(_self) end + +---@param _self I64Vec2 +---@return I64Vec2 +function I64Vec2.perp(_self) end + +---@param _self I64Vec2 +---@return integer +function I64Vec2.is_negative_bitmask(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return integer +function I64Vec2.dot(_self,rhs) end + +---@param p1 I64Vec2 +---@param p2 I64Vec2 +---@return I64Vec2 +function I64Vec2.div(p1,p2) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.max(_self,rhs) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.mul(_self,rhs) end + +---@param _self I64Vec2 +---@return I16Vec2 +function I64Vec2.as_i16vec2(_self) end + +---@param _self I64Vec2 +---@return U16Vec2 +function I64Vec2.as_u16vec2(_self) end + +---@param _self I64Vec2 +---@return integer +function I64Vec2.min_position(_self) end + +---@param _self I64Vec2 +---@return I64Vec2 +function I64Vec2.clone(_self) end + +---@param _self I64Vec2 +---@param y integer +---@return I64Vec2 +function I64Vec2.with_y(_self,y) end + +---@param _self I64Vec2 +---@return I8Vec2 +function I64Vec2.as_i8vec2(_self) end + +---@param _self I64Vec2 +---@param rhs I64Vec2 +---@return I64Vec2 +function I64Vec2.wrapping_sub(_self,rhs) end + +---@param _self I64Vec2 +---@return I64Vec2 +function I64Vec2.signum(_self) end + + + +---@class I64Vec3 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@operator mod(I64Vec3): I64Vec3 +---@operator unm: I64Vec3 +---@operator sub(I64Vec3): I64Vec3 +---@operator div(integer): I64Vec3 +---@operator add(integer): I64Vec3 +---@operator div(I64Vec3): I64Vec3 +---@operator mod(I64Vec3): I64Vec3 +---@operator mod(integer): I64Vec3 +---@operator add(I64Vec3): I64Vec3 +---@operator mul(I64Vec3): I64Vec3 +---@operator div(I64Vec3): I64Vec3 +---@operator mul(I64Vec3): I64Vec3 +---@operator add(I64Vec3): I64Vec3 +---@operator mul(integer): I64Vec3 +---@operator sub(I64Vec3): I64Vec3 +---@operator sub(integer): I64Vec3 +I64Vec3 = {} + +---@param _self I64Vec3 +---@return integer +function I64Vec3.element_product(_self) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.max(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.rem(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.wrapping_add(_self,rhs) end + +---@param _self I64Vec3 +---@return UVec3 +function I64Vec3.as_uvec3(_self) end + +---@param _self I64Vec3 +---@return I8Vec3 +function I64Vec3.as_i8vec3(_self) end + +---@param _self I64Vec3 +---@return DVec3 +function I64Vec3.as_dvec3(_self) end + +---@param _self I64Vec3 +---@return integer +function I64Vec3.max_position(_self) end + +---@param _self I64Vec3 +---@return U8Vec3 +function I64Vec3.as_u8vec3(_self) end + +---@param _self I64Vec3 +---@return integer +function I64Vec3.is_negative_bitmask(_self) end + +---@param _self I64Vec3 +---@return Vec3A +function I64Vec3.as_vec3a(_self) end + +---@param _self I64Vec3 +---@return I64Vec3 +function I64Vec3.neg(_self) end + +---@param _self I64Vec3 +---@param y integer +---@return I64Vec3 +function I64Vec3.with_y(_self,y) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.wrapping_mul(_self,rhs) end + +---@param _self I64Vec3 +---@return integer[] +function I64Vec3.to_array(_self) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.div_euclid(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.sub(_self,rhs) end + +---@param _self I64Vec3 +---@return U64Vec3 +function I64Vec3.as_u64vec3(_self) end + +---@param _self I64Vec3 +---@param rhs U64Vec3 +---@return I64Vec3 +function I64Vec3.saturating_add_unsigned(_self,rhs) end + +---@param _self I64Vec3 +---@return I64Vec2 +function I64Vec3.truncate(_self) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return BVec3 +function I64Vec3.cmpne(_self,rhs) end + +---@param x integer +---@param y integer +---@param z integer +---@return I64Vec3 +function I64Vec3.new(x,y,z) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.wrapping_div(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return BVec3 +function I64Vec3.cmpeq(_self,rhs) end + +---@param p1 I64Vec3 +---@param p2 integer +---@return I64Vec3 +function I64Vec3.div(p1,p2) end + +---@param _self I64Vec3 +---@param rhs U64Vec3 +---@return I64Vec3 +function I64Vec3.wrapping_sub_unsigned(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return integer | nil +function I64Vec3.checked_manhattan_distance(_self,rhs) end + +---@param _self I64Vec3 +---@return I64Vec3 +function I64Vec3.signum(_self) end + +---@param p1 I64Vec3 +---@param p2 integer +---@return I64Vec3 +function I64Vec3.add(p1,p2) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return integer +function I64Vec3.manhattan_distance(_self,rhs) end + +---@param _self I64Vec3 +---@return integer +function I64Vec3.min_element(_self) end + +---@param _self I64Vec3 +---@return integer +function I64Vec3.length_squared(_self) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.div(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return integer +function I64Vec3.distance_squared(_self,rhs) end + +---@param p1 I64Vec3 +---@param p2 I64Vec3 +---@return I64Vec3 +function I64Vec3.rem(p1,p2) end + +---@param p1 I64Vec3 +---@param p2 integer +---@return I64Vec3 +function I64Vec3.rem(p1,p2) end + +---@param _self I64Vec3 +---@param other I64Vec3 +---@return boolean +function I64Vec3.__eq(_self,other) end + +---@param _self I64Vec3 +---@param other I64Vec3 +---@return boolean +function I64Vec3.eq(_self,other) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return BVec3 +function I64Vec3.cmpgt(_self,rhs) end + +---@param p1 I64Vec3 +---@param p2 I64Vec3 +---@return I64Vec3 +function I64Vec3.add(p1,p2) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.rem_euclid(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.saturating_sub(_self,rhs) end + +---@param _self I64Vec3 +---@return I16Vec3 +function I64Vec3.as_i16vec3(_self) end + +---@param _self I64Vec3 +---@return integer +function I64Vec3.element_sum(_self) end + +---@param _self I64Vec3 +---@param min I64Vec3 +---@param max I64Vec3 +---@return I64Vec3 +function I64Vec3.clamp(_self,min,max) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.mul(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.wrapping_sub(_self,rhs) end + +---@param p1 I64Vec3 +---@param p2 I64Vec3 +---@return I64Vec3 +function I64Vec3.div(p1,p2) end + +---@param p1 I64Vec3 +---@param p2 I64Vec3 +---@return I64Vec3 +function I64Vec3.mul(p1,p2) end + +---@param _self I64Vec3 +---@return U16Vec3 +function I64Vec3.as_u16vec3(_self) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.add(_self,rhs) end + +---@param _self I64Vec3 +---@param w integer +---@return I64Vec4 +function I64Vec3.extend(_self,w) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return integer +function I64Vec3.chebyshev_distance(_self,rhs) end + +---@param mask BVec3 +---@param if_true I64Vec3 +---@param if_false I64Vec3 +---@return I64Vec3 +function I64Vec3.select(mask,if_true,if_false) end + +---@param _self I64Vec3 +---@return IVec3 +function I64Vec3.as_ivec3(_self) end + +---@param _self I64Vec3 +---@return Vec3 +function I64Vec3.as_vec3(_self) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return integer +function I64Vec3.dot(_self,rhs) end + +---@param _self I64Vec3 +---@return integer +function I64Vec3.min_position(_self) end + +---@param a integer[] +---@return I64Vec3 +function I64Vec3.from_array(a) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.cross(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.saturating_div(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.min(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.saturating_mul(_self,rhs) end + +---@param _self I64Vec3 +---@return I64Vec3 +function I64Vec3.clone(_self) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return BVec3 +function I64Vec3.cmpge(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.saturating_add(_self,rhs) end + +---@param _self I64Vec3 +---@return nil +function I64Vec3.assert_receiver_is_total_eq(_self) end + +---@param _self I64Vec3 +---@param rhs U64Vec3 +---@return I64Vec3 +function I64Vec3.wrapping_add_unsigned(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return BVec3 +function I64Vec3.cmplt(_self,rhs) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return BVec3 +function I64Vec3.cmple(_self,rhs) end + +---@param _self I64Vec3 +---@return integer +function I64Vec3.max_element(_self) end + +---@param p1 I64Vec3 +---@param p2 integer +---@return I64Vec3 +function I64Vec3.mul(p1,p2) end + +---@param _self I64Vec3 +---@param z integer +---@return I64Vec3 +function I64Vec3.with_z(_self,z) end + +---@param _self I64Vec3 +---@param rhs U64Vec3 +---@return I64Vec3 +function I64Vec3.saturating_sub_unsigned(_self,rhs) end + +---@param v integer +---@return I64Vec3 +function I64Vec3.splat(v) end + +---@param _self I64Vec3 +---@param x integer +---@return I64Vec3 +function I64Vec3.with_x(_self,x) end + +---@param p1 I64Vec3 +---@param p2 I64Vec3 +---@return I64Vec3 +function I64Vec3.sub(p1,p2) end + +---@param p1 I64Vec3 +---@param p2 integer +---@return I64Vec3 +function I64Vec3.sub(p1,p2) end + +---@param _self I64Vec3 +---@return I64Vec3 +function I64Vec3.abs(_self) end + +---@param _self I64Vec3 +---@param rhs I64Vec3 +---@return I64Vec3 +function I64Vec3.dot_into_vec(_self,rhs) end + + + +---@class I64Vec4 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@field w ? integer +---@operator mod(integer): I64Vec4 +---@operator unm: I64Vec4 +---@operator sub(I64Vec4): I64Vec4 +---@operator div(I64Vec4): I64Vec4 +---@operator add(integer): I64Vec4 +---@operator mul(I64Vec4): I64Vec4 +---@operator sub(integer): I64Vec4 +---@operator mul(integer): I64Vec4 +---@operator add(I64Vec4): I64Vec4 +---@operator mod(I64Vec4): I64Vec4 +---@operator div(integer): I64Vec4 +---@operator sub(I64Vec4): I64Vec4 +---@operator mod(I64Vec4): I64Vec4 +---@operator div(I64Vec4): I64Vec4 +---@operator mul(I64Vec4): I64Vec4 +---@operator add(I64Vec4): I64Vec4 +I64Vec4 = {} + +---@param _self I64Vec4 +---@return integer +function I64Vec4.element_product(_self) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return integer +function I64Vec4.manhattan_distance(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.max(_self,rhs) end + +---@param p1 I64Vec4 +---@param p2 integer +---@return I64Vec4 +function I64Vec4.rem(p1,p2) end + +---@param _self I64Vec4 +---@return I64Vec4 +function I64Vec4.neg(_self) end + +---@param _self I64Vec4 +---@param rhs U64Vec4 +---@return I64Vec4 +function I64Vec4.wrapping_sub_unsigned(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return BVec4 +function I64Vec4.cmpne(_self,rhs) end + +---@param _self I64Vec4 +---@return U8Vec4 +function I64Vec4.as_u8vec4(_self) end + +---@param _self I64Vec4 +---@param rhs U64Vec4 +---@return I64Vec4 +function I64Vec4.saturating_add_unsigned(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.wrapping_sub(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.sub(_self,rhs) end + +---@param _self I64Vec4 +---@param w integer +---@return I64Vec4 +function I64Vec4.with_w(_self,w) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.div(_self,rhs) end + +---@param _self I64Vec4 +---@return I64Vec4 +function I64Vec4.clone(_self) end + +---@param _self I64Vec4 +---@return U16Vec4 +function I64Vec4.as_u16vec4(_self) end + +---@param _self I64Vec4 +---@param y integer +---@return I64Vec4 +function I64Vec4.with_y(_self,y) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.div_euclid(_self,rhs) end + +---@param _self I64Vec4 +---@return UVec4 +function I64Vec4.as_uvec4(_self) end + +---@param _self I64Vec4 +---@param rhs U64Vec4 +---@return I64Vec4 +function I64Vec4.wrapping_add_unsigned(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.wrapping_div(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.wrapping_mul(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return integer +function I64Vec4.chebyshev_distance(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.rem_euclid(_self,rhs) end + +---@param _self I64Vec4 +---@param z integer +---@return I64Vec4 +function I64Vec4.with_z(_self,z) end + +---@param _self I64Vec4 +---@return integer +function I64Vec4.min_element(_self) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return BVec4 +function I64Vec4.cmpgt(_self,rhs) end + +---@param _self I64Vec4 +---@return integer +function I64Vec4.max_element(_self) end + +---@param _self I64Vec4 +---@param rhs U64Vec4 +---@return I64Vec4 +function I64Vec4.saturating_sub_unsigned(_self,rhs) end + +---@param _self I64Vec4 +---@return I64Vec3 +function I64Vec4.truncate(_self) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.saturating_mul(_self,rhs) end + +---@param p1 I64Vec4 +---@param p2 integer +---@return I64Vec4 +function I64Vec4.add(p1,p2) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return integer +function I64Vec4.dot(_self,rhs) end + +---@param v integer +---@return I64Vec4 +function I64Vec4.splat(v) end + +---@param _self I64Vec4 +---@param x integer +---@return I64Vec4 +function I64Vec4.with_x(_self,x) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.mul(_self,rhs) end + +---@param _self I64Vec4 +---@return I16Vec4 +function I64Vec4.as_i16vec4(_self) end + +---@param _self I64Vec4 +---@return integer +function I64Vec4.element_sum(_self) end + +---@param p1 I64Vec4 +---@param p2 integer +---@return I64Vec4 +function I64Vec4.sub(p1,p2) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return integer +function I64Vec4.distance_squared(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.saturating_div(_self,rhs) end + +---@param p1 I64Vec4 +---@param p2 integer +---@return I64Vec4 +function I64Vec4.mul(p1,p2) end + +---@param a integer[] +---@return I64Vec4 +function I64Vec4.from_array(a) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return integer | nil +function I64Vec4.checked_manhattan_distance(_self,rhs) end + +---@param _self I64Vec4 +---@return I64Vec4 +function I64Vec4.abs(_self) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.saturating_sub(_self,rhs) end + +---@param p1 I64Vec4 +---@param p2 I64Vec4 +---@return I64Vec4 +function I64Vec4.add(p1,p2) end + +---@param mask BVec4 +---@param if_true I64Vec4 +---@param if_false I64Vec4 +---@return I64Vec4 +function I64Vec4.select(mask,if_true,if_false) end + +---@param x integer +---@param y integer +---@param z integer +---@param w integer +---@return I64Vec4 +function I64Vec4.new(x,y,z,w) end + +---@param _self I64Vec4 +---@return integer +function I64Vec4.max_position(_self) end + +---@param _self I64Vec4 +---@param other I64Vec4 +---@return boolean +function I64Vec4.__eq(_self,other) end + +---@param _self I64Vec4 +---@param other I64Vec4 +---@return boolean +function I64Vec4.eq(_self,other) end + +---@param _self I64Vec4 +---@return DVec4 +function I64Vec4.as_dvec4(_self) end + +---@param p1 I64Vec4 +---@param p2 I64Vec4 +---@return I64Vec4 +function I64Vec4.rem(p1,p2) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return BVec4 +function I64Vec4.cmple(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.saturating_add(_self,rhs) end + +---@param _self I64Vec4 +---@return integer[] +function I64Vec4.to_array(_self) end + +---@param _self I64Vec4 +---@return nil +function I64Vec4.assert_receiver_is_total_eq(_self) end + +---@param _self I64Vec4 +---@return I8Vec4 +function I64Vec4.as_i8vec4(_self) end + +---@param _self I64Vec4 +---@return integer +function I64Vec4.min_position(_self) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.wrapping_add(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.min(_self,rhs) end + +---@param _self I64Vec4 +---@return Vec4 +function I64Vec4.as_vec4(_self) end + +---@param _self I64Vec4 +---@return integer +function I64Vec4.is_negative_bitmask(_self) end + +---@param _self I64Vec4 +---@return I64Vec4 +function I64Vec4.signum(_self) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.dot_into_vec(_self,rhs) end + +---@param p1 I64Vec4 +---@param p2 integer +---@return I64Vec4 +function I64Vec4.div(p1,p2) end + +---@param _self I64Vec4 +---@return integer +function I64Vec4.length_squared(_self) end + +---@param p1 I64Vec4 +---@param p2 I64Vec4 +---@return I64Vec4 +function I64Vec4.sub(p1,p2) end + +---@param _self I64Vec4 +---@param min I64Vec4 +---@param max I64Vec4 +---@return I64Vec4 +function I64Vec4.clamp(_self,min,max) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return BVec4 +function I64Vec4.cmpge(_self,rhs) end + +---@param _self I64Vec4 +---@return IVec4 +function I64Vec4.as_ivec4(_self) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.rem(_self,rhs) end + +---@param p1 I64Vec4 +---@param p2 I64Vec4 +---@return I64Vec4 +function I64Vec4.div(p1,p2) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return BVec4 +function I64Vec4.cmplt(_self,rhs) end + +---@param _self I64Vec4 +---@return U64Vec4 +function I64Vec4.as_u64vec4(_self) end + +---@param p1 I64Vec4 +---@param p2 I64Vec4 +---@return I64Vec4 +function I64Vec4.mul(p1,p2) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return BVec4 +function I64Vec4.cmpeq(_self,rhs) end + +---@param _self I64Vec4 +---@param rhs I64Vec4 +---@return I64Vec4 +function I64Vec4.add(_self,rhs) end + + + +---@class I8Vec2 : ReflectReference +---@field x ? integer +---@field y ? integer +---@operator unm: I8Vec2 +---@operator mul(I8Vec2): I8Vec2 +---@operator div(I8Vec2): I8Vec2 +---@operator mod(integer): I8Vec2 +---@operator add(I8Vec2): I8Vec2 +---@operator add(integer): I8Vec2 +---@operator add(I8Vec2): I8Vec2 +---@operator sub(integer): I8Vec2 +---@operator mod(I8Vec2): I8Vec2 +---@operator sub(I8Vec2): I8Vec2 +---@operator mul(integer): I8Vec2 +---@operator sub(I8Vec2): I8Vec2 +---@operator div(I8Vec2): I8Vec2 +---@operator mod(I8Vec2): I8Vec2 +---@operator div(integer): I8Vec2 +---@operator mul(I8Vec2): I8Vec2 +I8Vec2 = {} + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.wrapping_mul(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.dot_into_vec(_self,rhs) end + +---@param _self I8Vec2 +---@return integer +function I8Vec2.max_position(_self) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return BVec2 +function I8Vec2.cmple(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs U8Vec2 +---@return I8Vec2 +function I8Vec2.saturating_sub_unsigned(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs U8Vec2 +---@return I8Vec2 +function I8Vec2.saturating_add_unsigned(_self,rhs) end + +---@param _self I8Vec2 +---@return I8Vec2 +function I8Vec2.neg(_self) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.mul(_self,rhs) end + +---@param _self I8Vec2 +---@return I8Vec2 +function I8Vec2.clone(_self) end + +---@param _self I8Vec2 +---@return I64Vec2 +function I8Vec2.as_i64vec2(_self) end + +---@param p1 I8Vec2 +---@param p2 I8Vec2 +---@return I8Vec2 +function I8Vec2.div(p1,p2) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return integer +function I8Vec2.perp_dot(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.div_euclid(_self,rhs) end + +---@param p1 I8Vec2 +---@param p2 integer +---@return I8Vec2 +function I8Vec2.rem(p1,p2) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return integer +function I8Vec2.distance_squared(_self,rhs) end + +---@param _self I8Vec2 +---@return integer +function I8Vec2.min_position(_self) end + +---@param _self I8Vec2 +---@param rhs U8Vec2 +---@return I8Vec2 +function I8Vec2.wrapping_add_unsigned(_self,rhs) end + +---@param _self I8Vec2 +---@return U64Vec2 +function I8Vec2.as_u64vec2(_self) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return integer +function I8Vec2.manhattan_distance(_self,rhs) end + +---@param _self I8Vec2 +---@return I16Vec2 +function I8Vec2.as_i16vec2(_self) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.add(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return integer +function I8Vec2.chebyshev_distance(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.wrapping_add(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return BVec2 +function I8Vec2.cmplt(_self,rhs) end + +---@param _self I8Vec2 +---@return integer +function I8Vec2.max_element(_self) end + +---@param _self I8Vec2 +---@return integer +function I8Vec2.element_sum(_self) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.saturating_mul(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.wrapping_div(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return integer | nil +function I8Vec2.checked_manhattan_distance(_self,rhs) end + +---@param _self I8Vec2 +---@return integer[] +function I8Vec2.to_array(_self) end + +---@param _self I8Vec2 +---@return I8Vec2 +function I8Vec2.abs(_self) end + +---@param x integer +---@param y integer +---@return I8Vec2 +function I8Vec2.new(x,y) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return BVec2 +function I8Vec2.cmpne(_self,rhs) end + +---@param _self I8Vec2 +---@param x integer +---@return I8Vec2 +function I8Vec2.with_x(_self,x) end + +---@param _self I8Vec2 +---@return Vec2 +function I8Vec2.as_vec2(_self) end + +---@param _self I8Vec2 +---@param other I8Vec2 +---@return boolean +function I8Vec2.__eq(_self,other) end + +---@param _self I8Vec2 +---@param other I8Vec2 +---@return boolean +function I8Vec2.eq(_self,other) end + +---@param _self I8Vec2 +---@param min I8Vec2 +---@param max I8Vec2 +---@return I8Vec2 +function I8Vec2.clamp(_self,min,max) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.saturating_add(_self,rhs) end + +---@param _self I8Vec2 +---@return U8Vec2 +function I8Vec2.as_u8vec2(_self) end + +---@param p1 I8Vec2 +---@param p2 integer +---@return I8Vec2 +function I8Vec2.add(p1,p2) end + +---@param _self I8Vec2 +---@return integer +function I8Vec2.is_negative_bitmask(_self) end + +---@param p1 I8Vec2 +---@param p2 I8Vec2 +---@return I8Vec2 +function I8Vec2.add(p1,p2) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.saturating_div(_self,rhs) end + +---@param _self I8Vec2 +---@return integer +function I8Vec2.element_product(_self) end + +---@param _self I8Vec2 +---@return DVec2 +function I8Vec2.as_dvec2(_self) end + +---@param p1 I8Vec2 +---@param p2 integer +---@return I8Vec2 +function I8Vec2.sub(p1,p2) end + +---@param _self I8Vec2 +---@return nil +function I8Vec2.assert_receiver_is_total_eq(_self) end + +---@param p1 I8Vec2 +---@param p2 I8Vec2 +---@return I8Vec2 +function I8Vec2.rem(p1,p2) end + +---@param _self I8Vec2 +---@return U16Vec2 +function I8Vec2.as_u16vec2(_self) end + +---@param a integer[] +---@return I8Vec2 +function I8Vec2.from_array(a) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.sub(_self,rhs) end + +---@param _self I8Vec2 +---@return I8Vec2 +function I8Vec2.signum(_self) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.rem_euclid(_self,rhs) end + +---@param p1 I8Vec2 +---@param p2 integer +---@return I8Vec2 +function I8Vec2.mul(p1,p2) end + +---@param p1 I8Vec2 +---@param p2 I8Vec2 +---@return I8Vec2 +function I8Vec2.sub(p1,p2) end + +---@param _self I8Vec2 +---@param rhs U8Vec2 +---@return I8Vec2 +function I8Vec2.wrapping_sub_unsigned(_self,rhs) end + +---@param _self I8Vec2 +---@param y integer +---@return I8Vec2 +function I8Vec2.with_y(_self,y) end + +---@param _self I8Vec2 +---@return IVec2 +function I8Vec2.as_ivec2(_self) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return integer +function I8Vec2.dot(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return BVec2 +function I8Vec2.cmpgt(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.min(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.rotate(_self,rhs) end + +---@param _self I8Vec2 +---@return I8Vec2 +function I8Vec2.perp(_self) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.div(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.saturating_sub(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.rem(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return BVec2 +function I8Vec2.cmpge(_self,rhs) end + +---@param _self I8Vec2 +---@return integer +function I8Vec2.min_element(_self) end + +---@param _self I8Vec2 +---@param z integer +---@return I8Vec3 +function I8Vec2.extend(_self,z) end + +---@param _self I8Vec2 +---@return UVec2 +function I8Vec2.as_uvec2(_self) end + +---@param p1 I8Vec2 +---@param p2 integer +---@return I8Vec2 +function I8Vec2.div(p1,p2) end + +---@param _self I8Vec2 +---@return integer +function I8Vec2.length_squared(_self) end + +---@param mask BVec2 +---@param if_true I8Vec2 +---@param if_false I8Vec2 +---@return I8Vec2 +function I8Vec2.select(mask,if_true,if_false) end + +---@param p1 I8Vec2 +---@param p2 I8Vec2 +---@return I8Vec2 +function I8Vec2.mul(p1,p2) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.wrapping_sub(_self,rhs) end + +---@param v integer +---@return I8Vec2 +function I8Vec2.splat(v) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return I8Vec2 +function I8Vec2.max(_self,rhs) end + +---@param _self I8Vec2 +---@param rhs I8Vec2 +---@return BVec2 +function I8Vec2.cmpeq(_self,rhs) end + + + +---@class I8Vec3 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@operator mul(I8Vec3): I8Vec3 +---@operator mod(integer): I8Vec3 +---@operator add(I8Vec3): I8Vec3 +---@operator div(I8Vec3): I8Vec3 +---@operator sub(integer): I8Vec3 +---@operator unm: I8Vec3 +---@operator mul(integer): I8Vec3 +---@operator mod(I8Vec3): I8Vec3 +---@operator sub(I8Vec3): I8Vec3 +---@operator div(integer): I8Vec3 +---@operator mod(I8Vec3): I8Vec3 +---@operator add(I8Vec3): I8Vec3 +---@operator add(integer): I8Vec3 +---@operator div(I8Vec3): I8Vec3 +---@operator sub(I8Vec3): I8Vec3 +---@operator mul(I8Vec3): I8Vec3 +I8Vec3 = {} + +---@param p1 I8Vec3 +---@param p2 I8Vec3 +---@return I8Vec3 +function I8Vec3.mul(p1,p2) end + +---@param _self I8Vec3 +---@param rhs U8Vec3 +---@return I8Vec3 +function I8Vec3.wrapping_sub_unsigned(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return BVec3 +function I8Vec3.cmpge(_self,rhs) end + +---@param _self I8Vec3 +---@return integer +function I8Vec3.min_element(_self) end + +---@param _self I8Vec3 +---@return Vec3 +function I8Vec3.as_vec3(_self) end + +---@param _self I8Vec3 +---@return Vec3A +function I8Vec3.as_vec3a(_self) end + +---@param _self I8Vec3 +---@return U16Vec3 +function I8Vec3.as_u16vec3(_self) end + +---@param p1 I8Vec3 +---@param p2 integer +---@return I8Vec3 +function I8Vec3.rem(p1,p2) end + +---@param p1 I8Vec3 +---@param p2 I8Vec3 +---@return I8Vec3 +function I8Vec3.add(p1,p2) end + +---@param _self I8Vec3 +---@return integer +function I8Vec3.element_product(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return BVec3 +function I8Vec3.cmplt(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return integer | nil +function I8Vec3.checked_manhattan_distance(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.saturating_div(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.div(_self,rhs) end + +---@param p1 I8Vec3 +---@param p2 integer +---@return I8Vec3 +function I8Vec3.sub(p1,p2) end + +---@param _self I8Vec3 +---@return DVec3 +function I8Vec3.as_dvec3(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.min(_self,rhs) end + +---@param a integer[] +---@return I8Vec3 +function I8Vec3.from_array(a) end + +---@param _self I8Vec3 +---@return I8Vec3 +function I8Vec3.clone(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.saturating_sub(_self,rhs) end + +---@param mask BVec3 +---@param if_true I8Vec3 +---@param if_false I8Vec3 +---@return I8Vec3 +function I8Vec3.select(mask,if_true,if_false) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return BVec3 +function I8Vec3.cmple(_self,rhs) end + +---@param _self I8Vec3 +---@return UVec3 +function I8Vec3.as_uvec3(_self) end + +---@param _self I8Vec3 +---@param x integer +---@return I8Vec3 +function I8Vec3.with_x(_self,x) end + +---@param _self I8Vec3 +---@param rhs U8Vec3 +---@return I8Vec3 +function I8Vec3.saturating_sub_unsigned(_self,rhs) end + +---@param _self I8Vec3 +---@return IVec3 +function I8Vec3.as_ivec3(_self) end + +---@param _self I8Vec3 +---@param w integer +---@return I8Vec4 +function I8Vec3.extend(_self,w) end + +---@param _self I8Vec3 +---@param y integer +---@return I8Vec3 +function I8Vec3.with_y(_self,y) end + +---@param _self I8Vec3 +---@return I8Vec3 +function I8Vec3.neg(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.wrapping_sub(_self,rhs) end + +---@param p1 I8Vec3 +---@param p2 integer +---@return I8Vec3 +function I8Vec3.mul(p1,p2) end + +---@param _self I8Vec3 +---@return I8Vec3 +function I8Vec3.abs(_self) end + +---@param v integer +---@return I8Vec3 +function I8Vec3.splat(v) end + +---@param _self I8Vec3 +---@return integer[] +function I8Vec3.to_array(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.rem(_self,rhs) end + +---@param _self I8Vec3 +---@return U64Vec3 +function I8Vec3.as_u64vec3(_self) end + +---@param _self I8Vec3 +---@return integer +function I8Vec3.is_negative_bitmask(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.rem_euclid(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return BVec3 +function I8Vec3.cmpeq(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.saturating_add(_self,rhs) end + +---@param p1 I8Vec3 +---@param p2 I8Vec3 +---@return I8Vec3 +function I8Vec3.sub(p1,p2) end + +---@param _self I8Vec3 +---@return I8Vec3 +function I8Vec3.signum(_self) end + +---@param p1 I8Vec3 +---@param p2 integer +---@return I8Vec3 +function I8Vec3.div(p1,p2) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.wrapping_add(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return integer +function I8Vec3.chebyshev_distance(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.div_euclid(_self,rhs) end + +---@param p1 I8Vec3 +---@param p2 I8Vec3 +---@return I8Vec3 +function I8Vec3.rem(p1,p2) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.saturating_mul(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.add(_self,rhs) end + +---@param p1 I8Vec3 +---@param p2 integer +---@return I8Vec3 +function I8Vec3.add(p1,p2) end + +---@param _self I8Vec3 +---@return nil +function I8Vec3.assert_receiver_is_total_eq(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return BVec3 +function I8Vec3.cmpne(_self,rhs) end + +---@param _self I8Vec3 +---@return integer +function I8Vec3.element_sum(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return BVec3 +function I8Vec3.cmpgt(_self,rhs) end + +---@param _self I8Vec3 +---@return I8Vec2 +function I8Vec3.truncate(_self) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.wrapping_mul(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.cross(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return integer +function I8Vec3.dot(_self,rhs) end + +---@param _self I8Vec3 +---@return integer +function I8Vec3.max_element(_self) end + +---@param _self I8Vec3 +---@param z integer +---@return I8Vec3 +function I8Vec3.with_z(_self,z) end + +---@param _self I8Vec3 +---@return integer +function I8Vec3.min_position(_self) end + +---@param _self I8Vec3 +---@return I64Vec3 +function I8Vec3.as_i64vec3(_self) end + +---@param p1 I8Vec3 +---@param p2 I8Vec3 +---@return I8Vec3 +function I8Vec3.div(p1,p2) end + +---@param _self I8Vec3 +---@param rhs U8Vec3 +---@return I8Vec3 +function I8Vec3.wrapping_add_unsigned(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs U8Vec3 +---@return I8Vec3 +function I8Vec3.saturating_add_unsigned(_self,rhs) end + +---@param _self I8Vec3 +---@return I16Vec3 +function I8Vec3.as_i16vec3(_self) end + +---@param _self I8Vec3 +---@return U8Vec3 +function I8Vec3.as_u8vec3(_self) end + +---@param _self I8Vec3 +---@param other I8Vec3 +---@return boolean +function I8Vec3.__eq(_self,other) end + +---@param _self I8Vec3 +---@param other I8Vec3 +---@return boolean +function I8Vec3.eq(_self,other) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return integer +function I8Vec3.manhattan_distance(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return integer +function I8Vec3.distance_squared(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.wrapping_div(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.sub(_self,rhs) end + +---@param _self I8Vec3 +---@param min I8Vec3 +---@param max I8Vec3 +---@return I8Vec3 +function I8Vec3.clamp(_self,min,max) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.dot_into_vec(_self,rhs) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.mul(_self,rhs) end + +---@param _self I8Vec3 +---@return integer +function I8Vec3.length_squared(_self) end + +---@param x integer +---@param y integer +---@param z integer +---@return I8Vec3 +function I8Vec3.new(x,y,z) end + +---@param _self I8Vec3 +---@param rhs I8Vec3 +---@return I8Vec3 +function I8Vec3.max(_self,rhs) end + +---@param _self I8Vec3 +---@return integer +function I8Vec3.max_position(_self) end + + + +---@class I8Vec4 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@field w ? integer +---@operator add(I8Vec4): I8Vec4 +---@operator sub(I8Vec4): I8Vec4 +---@operator div(integer): I8Vec4 +---@operator div(I8Vec4): I8Vec4 +---@operator unm: I8Vec4 +---@operator div(I8Vec4): I8Vec4 +---@operator add(integer): I8Vec4 +---@operator mul(I8Vec4): I8Vec4 +---@operator mod(integer): I8Vec4 +---@operator add(I8Vec4): I8Vec4 +---@operator mod(I8Vec4): I8Vec4 +---@operator sub(integer): I8Vec4 +---@operator mul(I8Vec4): I8Vec4 +---@operator mul(integer): I8Vec4 +---@operator mod(I8Vec4): I8Vec4 +---@operator sub(I8Vec4): I8Vec4 +I8Vec4 = {} + +---@param _self I8Vec4 +---@return U8Vec4 +function I8Vec4.as_u8vec4(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.saturating_add(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return BVec4 +function I8Vec4.cmpge(_self,rhs) end + +---@param p1 I8Vec4 +---@param p2 I8Vec4 +---@return I8Vec4 +function I8Vec4.add(p1,p2) end + +---@param _self I8Vec4 +---@param z integer +---@return I8Vec4 +function I8Vec4.with_z(_self,z) end + +---@param _self I8Vec4 +---@return integer +function I8Vec4.element_sum(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.wrapping_mul(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.sub(_self,rhs) end + +---@param p1 I8Vec4 +---@param p2 integer +---@return I8Vec4 +function I8Vec4.div(p1,p2) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return integer +function I8Vec4.distance_squared(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.wrapping_div(_self,rhs) end + +---@param p1 I8Vec4 +---@param p2 I8Vec4 +---@return I8Vec4 +function I8Vec4.div(p1,p2) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return integer +function I8Vec4.chebyshev_distance(_self,rhs) end + +---@param _self I8Vec4 +---@return I8Vec4 +function I8Vec4.neg(_self) end + +---@param _self I8Vec4 +---@return integer +function I8Vec4.min_position(_self) end + +---@param _self I8Vec4 +---@return I16Vec4 +function I8Vec4.as_i16vec4(_self) end + +---@param x integer +---@param y integer +---@param z integer +---@param w integer +---@return I8Vec4 +function I8Vec4.new(x,y,z,w) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.div(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs U8Vec4 +---@return I8Vec4 +function I8Vec4.saturating_sub_unsigned(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.min(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs U8Vec4 +---@return I8Vec4 +function I8Vec4.wrapping_sub_unsigned(_self,rhs) end + +---@param _self I8Vec4 +---@return DVec4 +function I8Vec4.as_dvec4(_self) end + +---@param _self I8Vec4 +---@return I8Vec4 +function I8Vec4.signum(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.saturating_sub(_self,rhs) end + +---@param _self I8Vec4 +---@return U16Vec4 +function I8Vec4.as_u16vec4(_self) end + +---@param _self I8Vec4 +---@param x integer +---@return I8Vec4 +function I8Vec4.with_x(_self,x) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.wrapping_add(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return BVec4 +function I8Vec4.cmplt(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return BVec4 +function I8Vec4.cmpeq(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return BVec4 +function I8Vec4.cmpne(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return integer | nil +function I8Vec4.checked_manhattan_distance(_self,rhs) end + +---@param _self I8Vec4 +---@param y integer +---@return I8Vec4 +function I8Vec4.with_y(_self,y) end + +---@param p1 I8Vec4 +---@param p2 integer +---@return I8Vec4 +function I8Vec4.add(p1,p2) end + +---@param p1 I8Vec4 +---@param p2 I8Vec4 +---@return I8Vec4 +function I8Vec4.mul(p1,p2) end + +---@param _self I8Vec4 +---@return integer +function I8Vec4.element_product(_self) end + +---@param _self I8Vec4 +---@return IVec4 +function I8Vec4.as_ivec4(_self) end + +---@param _self I8Vec4 +---@return Vec4 +function I8Vec4.as_vec4(_self) end + +---@param _self I8Vec4 +---@param other I8Vec4 +---@return boolean +function I8Vec4.__eq(_self,other) end + +---@param _self I8Vec4 +---@param other I8Vec4 +---@return boolean +function I8Vec4.eq(_self,other) end + +---@param p1 I8Vec4 +---@param p2 integer +---@return I8Vec4 +function I8Vec4.rem(p1,p2) end + +---@param _self I8Vec4 +---@param min I8Vec4 +---@param max I8Vec4 +---@return I8Vec4 +function I8Vec4.clamp(_self,min,max) end + +---@param _self I8Vec4 +---@return integer +function I8Vec4.length_squared(_self) end + +---@param _self I8Vec4 +---@return integer +function I8Vec4.max_position(_self) end + +---@param a integer[] +---@return I8Vec4 +function I8Vec4.from_array(a) end + +---@param _self I8Vec4 +---@param w integer +---@return I8Vec4 +function I8Vec4.with_w(_self,w) end + +---@param _self I8Vec4 +---@return I64Vec4 +function I8Vec4.as_i64vec4(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.add(_self,rhs) end + +---@param _self I8Vec4 +---@return integer[] +function I8Vec4.to_array(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.rem(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.wrapping_sub(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.max(_self,rhs) end + +---@param p1 I8Vec4 +---@param p2 integer +---@return I8Vec4 +function I8Vec4.sub(p1,p2) end + +---@param _self I8Vec4 +---@return UVec4 +function I8Vec4.as_uvec4(_self) end + +---@param _self I8Vec4 +---@param rhs U8Vec4 +---@return I8Vec4 +function I8Vec4.wrapping_add_unsigned(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs U8Vec4 +---@return I8Vec4 +function I8Vec4.saturating_add_unsigned(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return BVec4 +function I8Vec4.cmpgt(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.div_euclid(_self,rhs) end + +---@param _self I8Vec4 +---@return I8Vec4 +function I8Vec4.clone(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return BVec4 +function I8Vec4.cmple(_self,rhs) end + +---@param _self I8Vec4 +---@return U64Vec4 +function I8Vec4.as_u64vec4(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return integer +function I8Vec4.dot(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.mul(_self,rhs) end + +---@param _self I8Vec4 +---@return nil +function I8Vec4.assert_receiver_is_total_eq(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.dot_into_vec(_self,rhs) end + +---@param _self I8Vec4 +---@return I8Vec3 +function I8Vec4.truncate(_self) end + +---@param _self I8Vec4 +---@return integer +function I8Vec4.min_element(_self) end + +---@param v integer +---@return I8Vec4 +function I8Vec4.splat(v) end + +---@param mask BVec4 +---@param if_true I8Vec4 +---@param if_false I8Vec4 +---@return I8Vec4 +function I8Vec4.select(mask,if_true,if_false) end + +---@param p1 I8Vec4 +---@param p2 integer +---@return I8Vec4 +function I8Vec4.mul(p1,p2) end + +---@param _self I8Vec4 +---@return integer +function I8Vec4.is_negative_bitmask(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.saturating_div(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.rem_euclid(_self,rhs) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return I8Vec4 +function I8Vec4.saturating_mul(_self,rhs) end + +---@param p1 I8Vec4 +---@param p2 I8Vec4 +---@return I8Vec4 +function I8Vec4.rem(p1,p2) end + +---@param _self I8Vec4 +---@return integer +function I8Vec4.max_element(_self) end + +---@param p1 I8Vec4 +---@param p2 I8Vec4 +---@return I8Vec4 +function I8Vec4.sub(p1,p2) end + +---@param _self I8Vec4 +---@return I8Vec4 +function I8Vec4.abs(_self) end + +---@param _self I8Vec4 +---@param rhs I8Vec4 +---@return integer +function I8Vec4.manhattan_distance(_self,rhs) end + + + +---@class IVec2 : ReflectReference +---@field x ? integer +---@field y ? integer +---@operator mul(IVec2): IVec2 +---@operator sub(IVec2): IVec2 +---@operator add(integer): IVec2 +---@operator div(IVec2): IVec2 +---@operator add(IVec2): IVec2 +---@operator add(IVec2): IVec2 +---@operator mod(integer): IVec2 +---@operator mod(IVec2): IVec2 +---@operator sub(integer): IVec2 +---@operator sub(IVec2): IVec2 +---@operator mul(integer): IVec2 +---@operator div(integer): IVec2 +---@operator unm: IVec2 +---@operator mul(IVec2): IVec2 +---@operator mod(IVec2): IVec2 +---@operator div(IVec2): IVec2 +IVec2 = {} + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.mul(_self,rhs) end + +---@param _self IVec2 +---@param rhs UVec2 +---@return IVec2 +function IVec2.wrapping_sub_unsigned(_self,rhs) end + +---@param p1 IVec2 +---@param p2 IVec2 +---@return IVec2 +function IVec2.sub(p1,p2) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return BVec2 +function IVec2.cmpeq(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return BVec2 +function IVec2.cmplt(_self,rhs) end + +---@param _self IVec2 +---@return I8Vec2 +function IVec2.as_i8vec2(_self) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return integer +function IVec2.chebyshev_distance(_self,rhs) end + +---@param _self IVec2 +---@return U64Vec2 +function IVec2.as_u64vec2(_self) end + +---@param _self IVec2 +---@param rhs UVec2 +---@return IVec2 +function IVec2.wrapping_add_unsigned(_self,rhs) end + +---@param p1 IVec2 +---@param p2 integer +---@return IVec2 +function IVec2.add(p1,p2) end + +---@param _self IVec2 +---@return integer +function IVec2.min_element(_self) end + +---@param p1 IVec2 +---@param p2 IVec2 +---@return IVec2 +function IVec2.div(p1,p2) end + +---@param _self IVec2 +---@return IVec2 +function IVec2.perp(_self) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return integer +function IVec2.manhattan_distance(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.min(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.wrapping_div(_self,rhs) end + +---@param _self IVec2 +---@return IVec2 +function IVec2.signum(_self) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return integer +function IVec2.perp_dot(_self,rhs) end + +---@param p1 IVec2 +---@param p2 IVec2 +---@return IVec2 +function IVec2.add(p1,p2) end + +---@param _self IVec2 +---@param rhs UVec2 +---@return IVec2 +function IVec2.saturating_add_unsigned(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.add(_self,rhs) end + +---@param _self IVec2 +---@return integer +function IVec2.is_negative_bitmask(_self) end + +---@param _self IVec2 +---@return U8Vec2 +function IVec2.as_u8vec2(_self) end + +---@param a integer[] +---@return IVec2 +function IVec2.from_array(a) end + +---@param _self IVec2 +---@return DVec2 +function IVec2.as_dvec2(_self) end + +---@param _self IVec2 +---@return Vec2 +function IVec2.as_vec2(_self) end + +---@param _self IVec2 +---@return UVec2 +function IVec2.as_uvec2(_self) end + +---@param p1 IVec2 +---@param p2 integer +---@return IVec2 +function IVec2.rem(p1,p2) end + +---@param p1 IVec2 +---@param p2 IVec2 +---@return IVec2 +function IVec2.rem(p1,p2) end + +---@param p1 IVec2 +---@param p2 integer +---@return IVec2 +function IVec2.sub(p1,p2) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.wrapping_sub(_self,rhs) end + +---@param _self IVec2 +---@return integer +function IVec2.element_sum(_self) end + +---@param _self IVec2 +---@param x integer +---@return IVec2 +function IVec2.with_x(_self,x) end + +---@param _self IVec2 +---@return integer +function IVec2.length_squared(_self) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.sub(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return BVec2 +function IVec2.cmple(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return integer | nil +function IVec2.checked_manhattan_distance(_self,rhs) end + +---@param _self IVec2 +---@return integer[] +function IVec2.to_array(_self) end + +---@param _self IVec2 +---@return IVec2 +function IVec2.abs(_self) end + +---@param _self IVec2 +---@param y integer +---@return IVec2 +function IVec2.with_y(_self,y) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.wrapping_add(_self,rhs) end + +---@param _self IVec2 +---@return integer +function IVec2.max_element(_self) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.saturating_div(_self,rhs) end + +---@param p1 IVec2 +---@param p2 integer +---@return IVec2 +function IVec2.mul(p1,p2) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return integer +function IVec2.dot(_self,rhs) end + +---@param p1 IVec2 +---@param p2 integer +---@return IVec2 +function IVec2.div(p1,p2) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.dot_into_vec(_self,rhs) end + +---@param _self IVec2 +---@return integer +function IVec2.max_position(_self) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.max(_self,rhs) end + +---@param _self IVec2 +---@param min IVec2 +---@param max IVec2 +---@return IVec2 +function IVec2.clamp(_self,min,max) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.rem_euclid(_self,rhs) end + +---@param _self IVec2 +---@return IVec2 +function IVec2.clone(_self) end + +---@param _self IVec2 +---@return IVec2 +function IVec2.neg(_self) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return BVec2 +function IVec2.cmpge(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.rotate(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.saturating_mul(_self,rhs) end + +---@param p1 IVec2 +---@param p2 IVec2 +---@return IVec2 +function IVec2.mul(p1,p2) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.div_euclid(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.saturating_add(_self,rhs) end + +---@param _self IVec2 +---@return nil +function IVec2.assert_receiver_is_total_eq(_self) end + +---@param _self IVec2 +---@return U16Vec2 +function IVec2.as_u16vec2(_self) end + +---@param _self IVec2 +---@param rhs UVec2 +---@return IVec2 +function IVec2.saturating_sub_unsigned(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return BVec2 +function IVec2.cmpgt(_self,rhs) end + +---@param _self IVec2 +---@return I64Vec2 +function IVec2.as_i64vec2(_self) end + +---@param _self IVec2 +---@param other IVec2 +---@return boolean +function IVec2.__eq(_self,other) end + +---@param _self IVec2 +---@param other IVec2 +---@return boolean +function IVec2.eq(_self,other) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.rem(_self,rhs) end + +---@param _self IVec2 +---@return integer +function IVec2.element_product(_self) end + +---@param v integer +---@return IVec2 +function IVec2.splat(v) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return BVec2 +function IVec2.cmpne(_self,rhs) end + +---@param _self IVec2 +---@param z integer +---@return IVec3 +function IVec2.extend(_self,z) end + +---@param _self IVec2 +---@return I16Vec2 +function IVec2.as_i16vec2(_self) end + +---@param _self IVec2 +---@return integer +function IVec2.min_position(_self) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return integer +function IVec2.distance_squared(_self,rhs) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.saturating_sub(_self,rhs) end + +---@param mask BVec2 +---@param if_true IVec2 +---@param if_false IVec2 +---@return IVec2 +function IVec2.select(mask,if_true,if_false) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.div(_self,rhs) end + +---@param x integer +---@param y integer +---@return IVec2 +function IVec2.new(x,y) end + +---@param _self IVec2 +---@param rhs IVec2 +---@return IVec2 +function IVec2.wrapping_mul(_self,rhs) end + + + +---@class IVec3 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@operator div(integer): IVec3 +---@operator add(IVec3): IVec3 +---@operator div(IVec3): IVec3 +---@operator unm: IVec3 +---@operator add(IVec3): IVec3 +---@operator sub(IVec3): IVec3 +---@operator mul(IVec3): IVec3 +---@operator sub(IVec3): IVec3 +---@operator mod(IVec3): IVec3 +---@operator add(integer): IVec3 +---@operator mul(integer): IVec3 +---@operator mod(IVec3): IVec3 +---@operator mod(integer): IVec3 +---@operator sub(integer): IVec3 +---@operator mul(IVec3): IVec3 +---@operator div(IVec3): IVec3 +IVec3 = {} + +---@param a integer[] +---@return IVec3 +function IVec3.from_array(a) end + +---@param _self IVec3 +---@return integer[] +function IVec3.to_array(_self) end + +---@param _self IVec3 +---@return IVec2 +function IVec3.truncate(_self) end + +---@param p1 IVec3 +---@param p2 integer +---@return IVec3 +function IVec3.div(p1,p2) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return integer +function IVec3.distance_squared(_self,rhs) end + +---@param _self IVec3 +---@return I64Vec3 +function IVec3.as_i64vec3(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.add(_self,rhs) end + +---@param p1 IVec3 +---@param p2 IVec3 +---@return IVec3 +function IVec3.div(p1,p2) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.saturating_div(_self,rhs) end + +---@param _self IVec3 +---@return integer +function IVec3.min_position(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.saturating_mul(_self,rhs) end + +---@param _self IVec3 +---@return IVec3 +function IVec3.neg(_self) end + +---@param _self IVec3 +---@return integer +function IVec3.element_sum(_self) end + +---@param p1 IVec3 +---@param p2 IVec3 +---@return IVec3 +function IVec3.add(p1,p2) end + +---@param _self IVec3 +---@param other IVec3 +---@return boolean +function IVec3.__eq(_self,other) end + +---@param _self IVec3 +---@param other IVec3 +---@return boolean +function IVec3.eq(_self,other) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return integer +function IVec3.dot(_self,rhs) end + +---@param _self IVec3 +---@return integer +function IVec3.length_squared(_self) end + +---@param _self IVec3 +---@return Vec3A +function IVec3.as_vec3a(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.sub(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.saturating_sub(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.mul(_self,rhs) end + +---@param p1 IVec3 +---@param p2 IVec3 +---@return IVec3 +function IVec3.sub(p1,p2) end + +---@param mask BVec3 +---@param if_true IVec3 +---@param if_false IVec3 +---@return IVec3 +function IVec3.select(mask,if_true,if_false) end + +---@param p1 IVec3 +---@param p2 IVec3 +---@return IVec3 +function IVec3.rem(p1,p2) end + +---@param p1 IVec3 +---@param p2 integer +---@return IVec3 +function IVec3.add(p1,p2) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return BVec3 +function IVec3.cmpge(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.saturating_add(_self,rhs) end + +---@param _self IVec3 +---@return Vec3 +function IVec3.as_vec3(_self) end + +---@param _self IVec3 +---@return integer +function IVec3.element_product(_self) end + +---@param _self IVec3 +---@return integer +function IVec3.max_position(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.wrapping_div(_self,rhs) end + +---@param _self IVec3 +---@param rhs UVec3 +---@return IVec3 +function IVec3.saturating_sub_unsigned(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return BVec3 +function IVec3.cmpeq(_self,rhs) end + +---@param _self IVec3 +---@return nil +function IVec3.assert_receiver_is_total_eq(_self) end + +---@param p1 IVec3 +---@param p2 integer +---@return IVec3 +function IVec3.mul(p1,p2) end + +---@param v integer +---@return IVec3 +function IVec3.splat(v) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.rem(_self,rhs) end + +---@param _self IVec3 +---@return DVec3 +function IVec3.as_dvec3(_self) end + +---@param _self IVec3 +---@return integer +function IVec3.max_element(_self) end + +---@param _self IVec3 +---@param rhs UVec3 +---@return IVec3 +function IVec3.wrapping_sub_unsigned(_self,rhs) end + +---@param _self IVec3 +---@return IVec3 +function IVec3.abs(_self) end + +---@param _self IVec3 +---@return UVec3 +function IVec3.as_uvec3(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return integer +function IVec3.manhattan_distance(_self,rhs) end + +---@param _self IVec3 +---@return U16Vec3 +function IVec3.as_u16vec3(_self) end + +---@param _self IVec3 +---@param x integer +---@return IVec3 +function IVec3.with_x(_self,x) end + +---@param _self IVec3 +---@param z integer +---@return IVec3 +function IVec3.with_z(_self,z) end + +---@param _self IVec3 +---@param rhs UVec3 +---@return IVec3 +function IVec3.saturating_add_unsigned(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.min(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return BVec3 +function IVec3.cmple(_self,rhs) end + +---@param _self IVec3 +---@return U8Vec3 +function IVec3.as_u8vec3(_self) end + +---@param _self IVec3 +---@return U64Vec3 +function IVec3.as_u64vec3(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return BVec3 +function IVec3.cmpgt(_self,rhs) end + +---@param _self IVec3 +---@return I16Vec3 +function IVec3.as_i16vec3(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return BVec3 +function IVec3.cmplt(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return integer | nil +function IVec3.checked_manhattan_distance(_self,rhs) end + +---@param _self IVec3 +---@param min IVec3 +---@param max IVec3 +---@return IVec3 +function IVec3.clamp(_self,min,max) end + +---@param p1 IVec3 +---@param p2 integer +---@return IVec3 +function IVec3.rem(p1,p2) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.dot_into_vec(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.max(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.wrapping_sub(_self,rhs) end + +---@param _self IVec3 +---@return IVec3 +function IVec3.clone(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return BVec3 +function IVec3.cmpne(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return integer +function IVec3.chebyshev_distance(_self,rhs) end + +---@param x integer +---@param y integer +---@param z integer +---@return IVec3 +function IVec3.new(x,y,z) end + +---@param _self IVec3 +---@param rhs UVec3 +---@return IVec3 +function IVec3.wrapping_add_unsigned(_self,rhs) end + +---@param _self IVec3 +---@return integer +function IVec3.min_element(_self) end + +---@param _self IVec3 +---@return integer +function IVec3.is_negative_bitmask(_self) end + +---@param _self IVec3 +---@return IVec3 +function IVec3.signum(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.div_euclid(_self,rhs) end + +---@param p1 IVec3 +---@param p2 integer +---@return IVec3 +function IVec3.sub(p1,p2) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.rem_euclid(_self,rhs) end + +---@param p1 IVec3 +---@param p2 IVec3 +---@return IVec3 +function IVec3.mul(p1,p2) end + +---@param _self IVec3 +---@param w integer +---@return IVec4 +function IVec3.extend(_self,w) end + +---@param _self IVec3 +---@return I8Vec3 +function IVec3.as_i8vec3(_self) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.wrapping_add(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.wrapping_mul(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.cross(_self,rhs) end + +---@param _self IVec3 +---@param rhs IVec3 +---@return IVec3 +function IVec3.div(_self,rhs) end + +---@param _self IVec3 +---@param y integer +---@return IVec3 +function IVec3.with_y(_self,y) end + + + +---@class IVec4 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@field w ? integer +---@operator mod(integer): IVec4 +---@operator add(integer): IVec4 +---@operator div(integer): IVec4 +---@operator sub(IVec4): IVec4 +---@operator div(IVec4): IVec4 +---@operator sub(integer): IVec4 +---@operator mul(IVec4): IVec4 +---@operator mod(IVec4): IVec4 +---@operator div(IVec4): IVec4 +---@operator sub(IVec4): IVec4 +---@operator add(IVec4): IVec4 +---@operator mul(integer): IVec4 +---@operator add(IVec4): IVec4 +---@operator mod(IVec4): IVec4 +---@operator mul(IVec4): IVec4 +---@operator unm: IVec4 +IVec4 = {} + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.div_euclid(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.wrapping_div(_self,rhs) end + +---@param p1 IVec4 +---@param p2 integer +---@return IVec4 +function IVec4.rem(p1,p2) end + +---@param _self IVec4 +---@return integer +function IVec4.max_element(_self) end + +---@param _self IVec4 +---@return I64Vec4 +function IVec4.as_i64vec4(_self) end + +---@param p1 IVec4 +---@param p2 integer +---@return IVec4 +function IVec4.add(p1,p2) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.saturating_add(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return integer | nil +function IVec4.checked_manhattan_distance(_self,rhs) end + +---@param p1 IVec4 +---@param p2 integer +---@return IVec4 +function IVec4.div(p1,p2) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.saturating_sub(_self,rhs) end + +---@param _self IVec4 +---@return integer[] +function IVec4.to_array(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.sub(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return integer +function IVec4.manhattan_distance(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return BVec4 +function IVec4.cmpge(_self,rhs) end + +---@param _self IVec4 +---@return integer +function IVec4.element_sum(_self) end + +---@param _self IVec4 +---@param w integer +---@return IVec4 +function IVec4.with_w(_self,w) end + +---@param _self IVec4 +---@param rhs UVec4 +---@return IVec4 +function IVec4.wrapping_add_unsigned(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.saturating_div(_self,rhs) end + +---@param mask BVec4 +---@param if_true IVec4 +---@param if_false IVec4 +---@return IVec4 +function IVec4.select(mask,if_true,if_false) end + +---@param _self IVec4 +---@return U64Vec4 +function IVec4.as_u64vec4(_self) end + +---@param p1 IVec4 +---@param p2 IVec4 +---@return IVec4 +function IVec4.div(p1,p2) end + +---@param _self IVec4 +---@return Vec4 +function IVec4.as_vec4(_self) end + +---@param _self IVec4 +---@return IVec4 +function IVec4.abs(_self) end + +---@param _self IVec4 +---@param rhs UVec4 +---@return IVec4 +function IVec4.saturating_add_unsigned(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return BVec4 +function IVec4.cmple(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.min(_self,rhs) end + +---@param p1 IVec4 +---@param p2 integer +---@return IVec4 +function IVec4.sub(p1,p2) end + +---@param _self IVec4 +---@return U16Vec4 +function IVec4.as_u16vec4(_self) end + +---@param _self IVec4 +---@return I8Vec4 +function IVec4.as_i8vec4(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.dot_into_vec(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return integer +function IVec4.chebyshev_distance(_self,rhs) end + +---@param _self IVec4 +---@return integer +function IVec4.min_element(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.mul(_self,rhs) end + +---@param p1 IVec4 +---@param p2 IVec4 +---@return IVec4 +function IVec4.rem(p1,p2) end + +---@param _self IVec4 +---@return UVec4 +function IVec4.as_uvec4(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return integer +function IVec4.distance_squared(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return BVec4 +function IVec4.cmpgt(_self,rhs) end + +---@param v integer +---@return IVec4 +function IVec4.splat(v) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.div(_self,rhs) end + +---@param _self IVec4 +---@return nil +function IVec4.assert_receiver_is_total_eq(_self) end + +---@param _self IVec4 +---@return integer +function IVec4.is_negative_bitmask(_self) end + +---@param _self IVec4 +---@return integer +function IVec4.element_product(_self) end + +---@param _self IVec4 +---@param rhs UVec4 +---@return IVec4 +function IVec4.saturating_sub_unsigned(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return BVec4 +function IVec4.cmplt(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.wrapping_mul(_self,rhs) end + +---@param p1 IVec4 +---@param p2 IVec4 +---@return IVec4 +function IVec4.sub(p1,p2) end + +---@param _self IVec4 +---@param x integer +---@return IVec4 +function IVec4.with_x(_self,x) end + +---@param _self IVec4 +---@return I16Vec4 +function IVec4.as_i16vec4(_self) end + +---@param _self IVec4 +---@param min IVec4 +---@param max IVec4 +---@return IVec4 +function IVec4.clamp(_self,min,max) end + +---@param _self IVec4 +---@return integer +function IVec4.max_position(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.wrapping_sub(_self,rhs) end + +---@param _self IVec4 +---@param rhs UVec4 +---@return IVec4 +function IVec4.wrapping_sub_unsigned(_self,rhs) end + +---@param _self IVec4 +---@param y integer +---@return IVec4 +function IVec4.with_y(_self,y) end + +---@param _self IVec4 +---@return DVec4 +function IVec4.as_dvec4(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.max(_self,rhs) end + +---@param p1 IVec4 +---@param p2 IVec4 +---@return IVec4 +function IVec4.add(p1,p2) end + +---@param _self IVec4 +---@return IVec4 +function IVec4.clone(_self) end + +---@param _self IVec4 +---@param other IVec4 +---@return boolean +function IVec4.__eq(_self,other) end + +---@param _self IVec4 +---@param other IVec4 +---@return boolean +function IVec4.eq(_self,other) end + +---@param x integer +---@param y integer +---@param z integer +---@param w integer +---@return IVec4 +function IVec4.new(x,y,z,w) end + +---@param p1 IVec4 +---@param p2 integer +---@return IVec4 +function IVec4.mul(p1,p2) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return BVec4 +function IVec4.cmpeq(_self,rhs) end + +---@param _self IVec4 +---@return integer +function IVec4.min_position(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return BVec4 +function IVec4.cmpne(_self,rhs) end + +---@param _self IVec4 +---@return IVec4 +function IVec4.signum(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.add(_self,rhs) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.saturating_mul(_self,rhs) end + +---@param a integer[] +---@return IVec4 +function IVec4.from_array(a) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.rem(_self,rhs) end + +---@param p1 IVec4 +---@param p2 IVec4 +---@return IVec4 +function IVec4.mul(p1,p2) end + +---@param _self IVec4 +---@return integer +function IVec4.length_squared(_self) end + +---@param _self IVec4 +---@return U8Vec4 +function IVec4.as_u8vec4(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.rem_euclid(_self,rhs) end + +---@param _self IVec4 +---@param z integer +---@return IVec4 +function IVec4.with_z(_self,z) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return integer +function IVec4.dot(_self,rhs) end + +---@param _self IVec4 +---@return IVec4 +function IVec4.neg(_self) end + +---@param _self IVec4 +---@return IVec3 +function IVec4.truncate(_self) end + +---@param _self IVec4 +---@param rhs IVec4 +---@return IVec4 +function IVec4.wrapping_add(_self,rhs) end + + + +---@class Mat2 : ReflectReference +---@field x_axis ? Vec2 +---@field y_axis ? Vec2 +---@operator add(Mat2): Mat2 +---@operator add(Mat2): Mat2 +---@operator mul(Mat2): Mat2 +---@operator mul(Vec2): Vec2 +---@operator mul(number): Mat2 +---@operator mul(Vec2): Vec2 +---@operator sub(Mat2): Mat2 +---@operator mul(Mat2): Mat2 +---@operator sub(Mat2): Mat2 +---@operator unm: Mat2 +---@operator div(number): Mat2 +Mat2 = {} + +---@param _self Mat2 +---@param rhs number +---@return Mat2 +function Mat2.div_scalar(_self,rhs) end + +---@param _self Mat2 +---@return Mat2 +function Mat2.transpose(_self) end + +---@param _self Mat2 +---@param index integer +---@return Vec2 +function Mat2.col(_self,index) end + +---@param _self Mat2 +---@return number[] +function Mat2.to_cols_array(_self) end + +---@param _self Mat2 +---@param rhs Vec2 +---@return Vec2 +function Mat2.mul_vec2(_self,rhs) end + +---@param _self Mat2 +---@param rhs Mat2 +---@return Mat2 +function Mat2.add(_self,rhs) end + +---@param p1 Mat2 +---@param p2 Mat2 +---@return Mat2 +function Mat2.add(p1,p2) end + +---@param m Mat3A +---@param i integer +---@param j integer +---@return Mat2 +function Mat2.from_mat3a_minor(m,i,j) end + +---@param scale Vec2 +---@param angle number +---@return Mat2 +function Mat2.from_scale_angle(scale,angle) end + +---@param m Mat3 +---@return Mat2 +function Mat2.from_mat3(m) end + +---@param _self Mat2 +---@param rhs Mat2 +---@return Mat2 +function Mat2.mul(_self,rhs) end + +---@param m Mat3A +---@return Mat2 +function Mat2.from_mat3a(m) end + +---@param _self Mat2 +---@param rhs Mat2 +---@return Mat2 +function Mat2.mul_mat2(_self,rhs) end + +---@param _self Mat2 +---@return number[][] +function Mat2.to_cols_array_2d(_self) end + +---@param _self Mat2 +---@param rhs Mat2 +---@return boolean +function Mat2.__eq(_self,rhs) end + +---@param _self Mat2 +---@param rhs Mat2 +---@return boolean +function Mat2.eq(_self,rhs) end + +---@param angle number +---@return Mat2 +function Mat2.from_angle(angle) end + +---@param _self Mat2 +---@param index integer +---@return Vec2 +function Mat2.row(_self,index) end + +---@param p1 Mat2 +---@param p2 Vec2 +---@return Vec2 +function Mat2.mul(p1,p2) end + +---@param _self Mat2 +---@return Mat2 +function Mat2.abs(_self) end + +---@param p1 Mat2 +---@param p2 number +---@return Mat2 +function Mat2.mul(p1,p2) end + +---@param _self Mat2 +---@return boolean +function Mat2.is_nan(_self) end + +---@param diagonal Vec2 +---@return Mat2 +function Mat2.from_diagonal(diagonal) end + +---@param _self Mat2 +---@param rhs Mat2 +---@return Mat2 +function Mat2.sub_mat2(_self,rhs) end + +---@param _self Mat2 +---@return Mat2 +function Mat2.inverse(_self) end + +---@param _self Mat2 +---@param rhs number +---@return Mat2 +function Mat2.mul_scalar(_self,rhs) end + +---@param p1 Mat2 +---@param p2 Vec2 +---@return Vec2 +function Mat2.mul(p1,p2) end + +---@param _self Mat2 +---@param rhs Mat2 +---@return Mat2 +function Mat2.sub(_self,rhs) end + +---@param _self Mat2 +---@return boolean +function Mat2.is_finite(_self) end + +---@param p1 Mat2 +---@param p2 Mat2 +---@return Mat2 +function Mat2.mul(p1,p2) end + +---@param _self Mat2 +---@param rhs Mat2 +---@return Mat2 +function Mat2.add_mat2(_self,rhs) end + +---@param m Mat3 +---@param i integer +---@param j integer +---@return Mat2 +function Mat2.from_mat3_minor(m,i,j) end + +---@param _self Mat2 +---@return Mat2 +function Mat2.clone(_self) end + +---@param _self Mat2 +---@param rhs Mat2 +---@param max_abs_diff number +---@return boolean +function Mat2.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param x_axis Vec2 +---@param y_axis Vec2 +---@return Mat2 +function Mat2.from_cols(x_axis,y_axis) end + +---@param _self Mat2 +---@return number +function Mat2.determinant(_self) end + +---@param _self Mat2 +---@return DMat2 +function Mat2.as_dmat2(_self) end + +---@param p1 Mat2 +---@param p2 Mat2 +---@return Mat2 +function Mat2.sub(p1,p2) end + +---@param _self Mat2 +---@return Mat2 +function Mat2.neg(_self) end + +---@param _self Mat2 +---@param rhs number +---@return Mat2 +function Mat2.div(_self,rhs) end + + + +---@class Mat3 : ReflectReference +---@field x_axis ? Vec3 +---@field y_axis ? Vec3 +---@field z_axis ? Vec3 +---@operator mul(Affine2): Mat3 +---@operator mul(Affine2): Mat3 +---@operator sub(Mat3): Mat3 +---@operator sub(Mat3): Mat3 +---@operator mul(Vec3): Vec3 +---@operator mul(Vec3): Vec3 +---@operator mul(Vec3A): Vec3A +---@operator unm: Mat3 +---@operator mul(Mat3): Mat3 +---@operator add(Mat3): Mat3 +---@operator mul(Mat3): Mat3 +---@operator mul(number): Mat3 +---@operator add(Mat3): Mat3 +---@operator div(number): Mat3 +---@operator mul(Vec3A): Vec3A +Mat3 = {} + +---@param _self Mat3 +---@return number +function Mat3.determinant(_self) end + +---@param translation Vec2 +---@return Mat3 +function Mat3.from_translation(translation) end + +---@param dir Vec3 +---@param up Vec3 +---@return Mat3 +function Mat3.look_to_lh(dir,up) end + +---@param m Mat4 +---@return Mat3 +function Mat3.from_mat4(m) end + +---@param _self Mat3 +---@return number[][] +function Mat3.to_cols_array_2d(_self) end + +---@param _self Mat3 +---@param rhs Mat3 +---@return Mat3 +function Mat3.sub_mat3(_self,rhs) end + +---@param _self Mat3 +---@param rhs Mat3 +---@param max_abs_diff number +---@return boolean +function Mat3.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self Mat3 +---@param rhs Affine2 +---@return Mat3 +function Mat3.mul(_self,rhs) end + +---@param _self Mat3 +---@return number[] +function Mat3.to_cols_array(_self) end + +---@param _self Mat3 +---@param rhs Vec2 +---@return Vec2 +function Mat3.transform_vector2(_self,rhs) end + +---@param p1 Mat3 +---@param p2 Affine2 +---@return Mat3 +function Mat3.mul(p1,p2) end + +---@param angle number +---@return Mat3 +function Mat3.from_rotation_x(angle) end + +---@param _self Mat3 +---@param rhs Vec3A +---@return Vec3A +function Mat3.mul_vec3a(_self,rhs) end + +---@param angle number +---@return Mat3 +function Mat3.from_rotation_y(angle) end + +---@param _self Mat3 +---@param rhs Vec2 +---@return Vec2 +function Mat3.transform_point2(_self,rhs) end + +---@param scale Vec2 +---@param angle number +---@param translation Vec2 +---@return Mat3 +function Mat3.from_scale_angle_translation(scale,angle,translation) end + +---@param order EulerRot +---@param a number +---@param b number +---@param c number +---@return Mat3 +function Mat3.from_euler(order,a,b,c) end + +---@param x_axis Vec3 +---@param y_axis Vec3 +---@param z_axis Vec3 +---@return Mat3 +function Mat3.from_cols(x_axis,y_axis,z_axis) end + +---@param _self Mat3 +---@param rhs Mat3 +---@return Mat3 +function Mat3.sub(_self,rhs) end + +---@param p1 Mat3 +---@param p2 Mat3 +---@return Mat3 +function Mat3.sub(p1,p2) end + +---@param _self Mat3 +---@param index integer +---@return Vec3 +function Mat3.row(_self,index) end + +---@param p1 Mat3 +---@param p2 Vec3 +---@return Vec3 +function Mat3.mul(p1,p2) end + +---@param _self Mat3 +---@param rhs Mat3 +---@return boolean +function Mat3.__eq(_self,rhs) end + +---@param _self Mat3 +---@param rhs Mat3 +---@return boolean +function Mat3.eq(_self,rhs) end + +---@param _self Mat3 +---@return DMat3 +function Mat3.as_dmat3(_self) end + +---@param p1 Mat3 +---@param p2 Vec3 +---@return Vec3 +function Mat3.mul(p1,p2) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Mat3 +function Mat3.look_at_rh(eye,center,up) end + +---@param p1 Mat3 +---@param p2 Vec3A +---@return Vec3A +function Mat3.mul(p1,p2) end + +---@param _self Mat3 +---@return Mat3 +function Mat3.abs(_self) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Mat3 +function Mat3.look_at_lh(eye,center,up) end + +---@param _self Mat3 +---@return Mat3 +function Mat3.transpose(_self) end + +---@param angle number +---@return Mat3 +function Mat3.from_rotation_z(angle) end + +---@param _self Mat3 +---@return Mat3 +function Mat3.neg(_self) end + +---@param scale Vec2 +---@return Mat3 +function Mat3.from_scale(scale) end + +---@param dir Vec3 +---@param up Vec3 +---@return Mat3 +function Mat3.look_to_rh(dir,up) end + +---@param _self Mat3 +---@param rhs Mat3 +---@return Mat3 +function Mat3.mul_mat3(_self,rhs) end + +---@param m Mat2 +---@return Mat3 +function Mat3.from_mat2(m) end + +---@param _self Mat3 +---@param rhs number +---@return Mat3 +function Mat3.mul_scalar(_self,rhs) end + +---@param _self Mat3 +---@return Mat3 +function Mat3.clone(_self) end + +---@param _self Mat3 +---@param rhs Vec3 +---@return Vec3 +function Mat3.mul_vec3(_self,rhs) end + +---@param axis Vec3 +---@param angle number +---@return Mat3 +function Mat3.from_axis_angle(axis,angle) end + +---@param _self Mat3 +---@return boolean +function Mat3.is_nan(_self) end + +---@param _self Mat3 +---@param rhs Mat3 +---@return Mat3 +function Mat3.add_mat3(_self,rhs) end + +---@param _self Mat3 +---@return Mat3 +function Mat3.inverse(_self) end + +---@param diagonal Vec3 +---@return Mat3 +function Mat3.from_diagonal(diagonal) end + +---@param p1 Mat3 +---@param p2 Mat3 +---@return Mat3 +function Mat3.mul(p1,p2) end + +---@param angle number +---@return Mat3 +function Mat3.from_angle(angle) end + +---@param _self Mat3 +---@param order EulerRot +---@return [number, number, number] +function Mat3.to_euler(_self,order) end + +---@param p1 Mat3 +---@param p2 Mat3 +---@return Mat3 +function Mat3.add(p1,p2) end + +---@param _self Mat3 +---@return boolean +function Mat3.is_finite(_self) end + +---@param rotation Quat +---@return Mat3 +function Mat3.from_quat(rotation) end + +---@param m Mat4 +---@param i integer +---@param j integer +---@return Mat3 +function Mat3.from_mat4_minor(m,i,j) end + +---@param p1 Mat3 +---@param p2 Mat3 +---@return Mat3 +function Mat3.mul(p1,p2) end + +---@param p1 Mat3 +---@param p2 number +---@return Mat3 +function Mat3.mul(p1,p2) end + +---@param _self Mat3 +---@param rhs Mat3 +---@return Mat3 +function Mat3.add(_self,rhs) end + +---@param _self Mat3 +---@param rhs number +---@return Mat3 +function Mat3.div(_self,rhs) end + +---@param p1 Mat3 +---@param p2 Vec3A +---@return Vec3A +function Mat3.mul(p1,p2) end + +---@param _self Mat3 +---@param rhs number +---@return Mat3 +function Mat3.div_scalar(_self,rhs) end + +---@param _self Mat3 +---@param index integer +---@return Vec3 +function Mat3.col(_self,index) end + + + +---@class Mat3A : ReflectReference +---@field x_axis ? Vec3A +---@field y_axis ? Vec3A +---@field z_axis ? Vec3A +---@operator mul(Affine2): Mat3A +---@operator div(number): Mat3A +---@operator mul(Vec3): Vec3 +---@operator mul(Vec3): Vec3 +---@operator mul(number): Mat3A +---@operator sub(Mat3A): Mat3A +---@operator add(Mat3A): Mat3A +---@operator mul(Vec3A): Vec3A +---@operator mul(Affine2): Mat3A +---@operator mul(Vec3A): Vec3A +---@operator add(Mat3A): Mat3A +---@operator mul(Mat3A): Mat3A +---@operator sub(Mat3A): Mat3A +---@operator mul(Mat3A): Mat3A +---@operator unm: Mat3A +Mat3A = {} + +---@param axis Vec3 +---@param angle number +---@return Mat3A +function Mat3A.from_axis_angle(axis,angle) end + +---@param _self Mat3A +---@return number[][] +function Mat3A.to_cols_array_2d(_self) end + +---@param _self Mat3A +---@param order EulerRot +---@return [number, number, number] +function Mat3A.to_euler(_self,order) end + +---@param _self Mat3A +---@param index integer +---@return Vec3A +function Mat3A.col(_self,index) end + +---@param _self Mat3A +---@param rhs Mat3A +---@return Mat3A +function Mat3A.sub_mat3(_self,rhs) end + +---@param p1 Mat3A +---@param p2 Affine2 +---@return Mat3A +function Mat3A.mul(p1,p2) end + +---@param _self Mat3A +---@param rhs number +---@return Mat3A +function Mat3A.div(_self,rhs) end + +---@param _self Mat3A +---@return Mat3A +function Mat3A.abs(_self) end + +---@param angle number +---@return Mat3A +function Mat3A.from_rotation_z(angle) end + +---@param rotation Quat +---@return Mat3A +function Mat3A.from_quat(rotation) end + +---@param scale Vec2 +---@param angle number +---@param translation Vec2 +---@return Mat3A +function Mat3A.from_scale_angle_translation(scale,angle,translation) end + +---@param _self Mat3A +---@return Mat3A +function Mat3A.clone(_self) end + +---@param _self Mat3A +---@param rhs Mat3A +---@return boolean +function Mat3A.__eq(_self,rhs) end + +---@param _self Mat3A +---@param rhs Mat3A +---@return boolean +function Mat3A.eq(_self,rhs) end + +---@param p1 Mat3A +---@param p2 Vec3 +---@return Vec3 +function Mat3A.mul(p1,p2) end + +---@param p1 Mat3A +---@param p2 Vec3 +---@return Vec3 +function Mat3A.mul(p1,p2) end + +---@param x_axis Vec3A +---@param y_axis Vec3A +---@param z_axis Vec3A +---@return Mat3A +function Mat3A.from_cols(x_axis,y_axis,z_axis) end + +---@param _self Mat3A +---@return DMat3 +function Mat3A.as_dmat3(_self) end + +---@param _self Mat3A +---@param rhs Mat3A +---@return Mat3A +function Mat3A.mul_mat3(_self,rhs) end + +---@param _self Mat3A +---@param rhs Vec3 +---@return Vec3 +function Mat3A.mul_vec3(_self,rhs) end + +---@param p1 Mat3A +---@param p2 number +---@return Mat3A +function Mat3A.mul(p1,p2) end + +---@param _self Mat3A +---@return boolean +function Mat3A.is_nan(_self) end + +---@param _self Mat3A +---@param index integer +---@return Vec3A +function Mat3A.row(_self,index) end + +---@param _self Mat3A +---@param rhs Mat3A +---@return Mat3A +function Mat3A.sub(_self,rhs) end + +---@param _self Mat3A +---@param rhs number +---@return Mat3A +function Mat3A.div_scalar(_self,rhs) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Mat3A +function Mat3A.look_at_rh(eye,center,up) end + +---@param p1 Mat3A +---@param p2 Mat3A +---@return Mat3A +function Mat3A.add(p1,p2) end + +---@param m Mat2 +---@return Mat3A +function Mat3A.from_mat2(m) end + +---@param p1 Mat3A +---@param p2 Vec3A +---@return Vec3A +function Mat3A.mul(p1,p2) end + +---@param m Mat4 +---@return Mat3A +function Mat3A.from_mat4(m) end + +---@param _self Mat3A +---@return Mat3A +function Mat3A.inverse(_self) end + +---@param order EulerRot +---@param a number +---@param b number +---@param c number +---@return Mat3A +function Mat3A.from_euler(order,a,b,c) end + +---@param _self Mat3A +---@param rhs Mat3A +---@return Mat3A +function Mat3A.add_mat3(_self,rhs) end + +---@param dir Vec3 +---@param up Vec3 +---@return Mat3A +function Mat3A.look_to_lh(dir,up) end + +---@param scale Vec2 +---@return Mat3A +function Mat3A.from_scale(scale) end + +---@param _self Mat3A +---@param rhs Affine2 +---@return Mat3A +function Mat3A.mul(_self,rhs) end + +---@param dir Vec3 +---@param up Vec3 +---@return Mat3A +function Mat3A.look_to_rh(dir,up) end + +---@param _self Mat3A +---@return boolean +function Mat3A.is_finite(_self) end + +---@param p1 Mat3A +---@param p2 Vec3A +---@return Vec3A +function Mat3A.mul(p1,p2) end + +---@param _self Mat3A +---@param rhs Vec2 +---@return Vec2 +function Mat3A.transform_point2(_self,rhs) end + +---@param _self Mat3A +---@return number +function Mat3A.determinant(_self) end + +---@param _self Mat3A +---@param rhs Vec2 +---@return Vec2 +function Mat3A.transform_vector2(_self,rhs) end + +---@param _self Mat3A +---@return number[] +function Mat3A.to_cols_array(_self) end + +---@param _self Mat3A +---@param rhs Vec3A +---@return Vec3A +function Mat3A.mul_vec3a(_self,rhs) end + +---@param m Mat4 +---@param i integer +---@param j integer +---@return Mat3A +function Mat3A.from_mat4_minor(m,i,j) end + +---@param diagonal Vec3 +---@return Mat3A +function Mat3A.from_diagonal(diagonal) end + +---@param _self Mat3A +---@param rhs Mat3A +---@return Mat3A +function Mat3A.add(_self,rhs) end + +---@param p1 Mat3A +---@param p2 Mat3A +---@return Mat3A +function Mat3A.mul(p1,p2) end + +---@param angle number +---@return Mat3A +function Mat3A.from_rotation_y(angle) end + +---@param _self Mat3A +---@return Mat3A +function Mat3A.transpose(_self) end + +---@param _self Mat3A +---@param rhs Mat3A +---@param max_abs_diff number +---@return boolean +function Mat3A.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Mat3A +function Mat3A.look_at_lh(eye,center,up) end + +---@param p1 Mat3A +---@param p2 Mat3A +---@return Mat3A +function Mat3A.sub(p1,p2) end + +---@param p1 Mat3A +---@param p2 Mat3A +---@return Mat3A +function Mat3A.mul(p1,p2) end + +---@param angle number +---@return Mat3A +function Mat3A.from_rotation_x(angle) end + +---@param translation Vec2 +---@return Mat3A +function Mat3A.from_translation(translation) end + +---@param _self Mat3A +---@return Mat3A +function Mat3A.neg(_self) end + +---@param angle number +---@return Mat3A +function Mat3A.from_angle(angle) end + +---@param _self Mat3A +---@param rhs number +---@return Mat3A +function Mat3A.mul_scalar(_self,rhs) end + + + +---@class Mat4 : ReflectReference +---@field x_axis ? Vec4 +---@field y_axis ? Vec4 +---@field z_axis ? Vec4 +---@field w_axis ? Vec4 +---@operator mul(number): Mat4 +---@operator mul(Affine3A): Mat4 +---@operator mul(Mat4): Mat4 +---@operator mul(Vec4): Vec4 +---@operator add(Mat4): Mat4 +---@operator sub(Mat4): Mat4 +---@operator unm: Mat4 +---@operator add(Mat4): Mat4 +---@operator sub(Mat4): Mat4 +---@operator mul(Affine3A): Mat4 +---@operator mul(Vec4): Vec4 +---@operator div(number): Mat4 +---@operator mul(Mat4): Mat4 +Mat4 = {} + +---@param eye Vec3 +---@param dir Vec3 +---@param up Vec3 +---@return Mat4 +function Mat4.look_to_rh(eye,dir,up) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@return Mat4 +function Mat4.perspective_infinite_reverse_rh(fov_y_radians,aspect_ratio,z_near) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@param z_far number +---@return Mat4 +function Mat4.perspective_rh(fov_y_radians,aspect_ratio,z_near,z_far) end + +---@param rotation Quat +---@param translation Vec3 +---@return Mat4 +function Mat4.from_rotation_translation(rotation,translation) end + +---@param _self Mat4 +---@return number +function Mat4.determinant(_self) end + +---@param _self Mat4 +---@param rhs Vec3A +---@return Vec3A +function Mat4.project_point3a(_self,rhs) end + +---@param p1 Mat4 +---@param p2 number +---@return Mat4 +function Mat4.mul(p1,p2) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param near number +---@param far number +---@return Mat4 +function Mat4.orthographic_lh(left,right,bottom,top,near,far) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@return Mat4 +function Mat4.perspective_infinite_rh(fov_y_radians,aspect_ratio,z_near) end + +---@param axis Vec3 +---@param angle number +---@return Mat4 +function Mat4.from_axis_angle(axis,angle) end + +---@param _self Mat4 +---@return Mat4 +function Mat4.clone(_self) end + +---@param p1 Mat4 +---@param p2 Affine3A +---@return Mat4 +function Mat4.mul(p1,p2) end + +---@param _self Mat4 +---@param rhs Vec3 +---@return Vec3 +function Mat4.transform_point3(_self,rhs) end + +---@param _self Mat4 +---@param rhs Vec3A +---@return Vec3A +function Mat4.transform_vector3a(_self,rhs) end + +---@param _self Mat4 +---@param rhs number +---@return Mat4 +function Mat4.div_scalar(_self,rhs) end + +---@param scale Vec3 +---@return Mat4 +function Mat4.from_scale(scale) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@param z_far number +---@return Mat4 +function Mat4.perspective_rh_gl(fov_y_radians,aspect_ratio,z_near,z_far) end + +---@param angle number +---@return Mat4 +function Mat4.from_rotation_x(angle) end + +---@param p1 Mat4 +---@param p2 Mat4 +---@return Mat4 +function Mat4.mul(p1,p2) end + +---@param _self Mat4 +---@param rhs Vec3A +---@return Vec3A +function Mat4.transform_point3a(_self,rhs) end + +---@param _self Mat4 +---@return number[][] +function Mat4.to_cols_array_2d(_self) end + +---@param _self Mat4 +---@return number[] +function Mat4.to_cols_array(_self) end + +---@param p1 Mat4 +---@param p2 Vec4 +---@return Vec4 +function Mat4.mul(p1,p2) end + +---@param p1 Mat4 +---@param p2 Mat4 +---@return Mat4 +function Mat4.add(p1,p2) end + +---@param _self Mat4 +---@return boolean +function Mat4.is_nan(_self) end + +---@param _self Mat4 +---@return Mat4 +function Mat4.transpose(_self) end + +---@param _self Mat4 +---@param rhs Mat4 +---@return boolean +function Mat4.__eq(_self,rhs) end + +---@param _self Mat4 +---@param rhs Mat4 +---@return boolean +function Mat4.eq(_self,rhs) end + +---@param scale Vec3 +---@param rotation Quat +---@param translation Vec3 +---@return Mat4 +function Mat4.from_scale_rotation_translation(scale,rotation,translation) end + +---@param _self Mat4 +---@return DMat4 +function Mat4.as_dmat4(_self) end + +---@param m Mat3 +---@return Mat4 +function Mat4.from_mat3(m) end + +---@param eye Vec3 +---@param dir Vec3 +---@param up Vec3 +---@return Mat4 +function Mat4.look_to_lh(eye,dir,up) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param z_near number +---@param z_far number +---@return Mat4 +function Mat4.frustum_rh_gl(left,right,bottom,top,z_near,z_far) end + +---@param p1 Mat4 +---@param p2 Mat4 +---@return Mat4 +function Mat4.sub(p1,p2) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param near number +---@param far number +---@return Mat4 +function Mat4.orthographic_rh_gl(left,right,bottom,top,near,far) end + +---@param diagonal Vec4 +---@return Mat4 +function Mat4.from_diagonal(diagonal) end + +---@param order EulerRot +---@param a number +---@param b number +---@param c number +---@return Mat4 +function Mat4.from_euler(order,a,b,c) end + +---@param _self Mat4 +---@return Mat4 +function Mat4.abs(_self) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@param z_far number +---@return Mat4 +function Mat4.perspective_lh(fov_y_radians,aspect_ratio,z_near,z_far) end + +---@param _self Mat4 +---@param rhs number +---@return Mat4 +function Mat4.mul_scalar(_self,rhs) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Mat4 +function Mat4.look_at_lh(eye,center,up) end + +---@param _self Mat4 +---@param rhs Mat4 +---@return Mat4 +function Mat4.mul_mat4(_self,rhs) end + +---@param _self Mat4 +---@param index integer +---@return Vec4 +function Mat4.col(_self,index) end + +---@param _self Mat4 +---@return Mat4 +function Mat4.neg(_self) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@return Mat4 +function Mat4.perspective_infinite_lh(fov_y_radians,aspect_ratio,z_near) end + +---@param m Mat3A +---@return Mat4 +function Mat4.from_mat3a(m) end + +---@param _self Mat4 +---@param rhs Mat4 +---@return Mat4 +function Mat4.add(_self,rhs) end + +---@param _self Mat4 +---@return boolean +function Mat4.is_finite(_self) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param near number +---@param far number +---@return Mat4 +function Mat4.orthographic_rh(left,right,bottom,top,near,far) end + +---@param _self Mat4 +---@param rhs Vec3 +---@return Vec3 +function Mat4.transform_vector3(_self,rhs) end + +---@param _self Mat4 +---@param rhs Mat4 +---@return Mat4 +function Mat4.sub(_self,rhs) end + +---@param rotation Quat +---@return Mat4 +function Mat4.from_quat(rotation) end + +---@param angle number +---@return Mat4 +function Mat4.from_rotation_z(angle) end + +---@param _self Mat4 +---@param rhs Vec4 +---@return Vec4 +function Mat4.mul_vec4(_self,rhs) end + +---@param _self Mat4 +---@param rhs Affine3A +---@return Mat4 +function Mat4.mul(_self,rhs) end + +---@param p1 Mat4 +---@param p2 Vec4 +---@return Vec4 +function Mat4.mul(p1,p2) end + +---@param mat3 Mat3 +---@param translation Vec3 +---@return Mat4 +function Mat4.from_mat3_translation(mat3,translation) end + +---@param _self Mat4 +---@param rhs number +---@return Mat4 +function Mat4.div(_self,rhs) end + +---@param _self Mat4 +---@param rhs Mat4 +---@return Mat4 +function Mat4.add_mat4(_self,rhs) end + +---@param _self Mat4 +---@param rhs Mat4 +---@param max_abs_diff number +---@return boolean +function Mat4.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self Mat4 +---@param index integer +---@return Vec4 +function Mat4.row(_self,index) end + +---@param angle number +---@return Mat4 +function Mat4.from_rotation_y(angle) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param z_near number +---@param z_far number +---@return Mat4 +function Mat4.frustum_lh(left,right,bottom,top,z_near,z_far) end + +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param z_near number +---@param z_far number +---@return Mat4 +function Mat4.frustum_rh(left,right,bottom,top,z_near,z_far) end + +---@param translation Vec3 +---@return Mat4 +function Mat4.from_translation(translation) end + +---@param x_axis Vec4 +---@param y_axis Vec4 +---@param z_axis Vec4 +---@param w_axis Vec4 +---@return Mat4 +function Mat4.from_cols(x_axis,y_axis,z_axis,w_axis) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Mat4 +function Mat4.look_at_rh(eye,center,up) end + +---@param _self Mat4 +---@param rhs Vec3 +---@return Vec3 +function Mat4.project_point3(_self,rhs) end + +---@param _self Mat4 +---@param order EulerRot +---@return [number, number, number] +function Mat4.to_euler(_self,order) end + +---@param p1 Mat4 +---@param p2 Mat4 +---@return Mat4 +function Mat4.mul(p1,p2) end + +---@param _self Mat4 +---@param rhs Mat4 +---@return Mat4 +function Mat4.sub_mat4(_self,rhs) end + +---@param fov_y_radians number +---@param aspect_ratio number +---@param z_near number +---@return Mat4 +function Mat4.perspective_infinite_reverse_lh(fov_y_radians,aspect_ratio,z_near) end + +---@param _self Mat4 +---@return Mat4 +function Mat4.inverse(_self) end + + + +---@class Quat : ReflectReference +---@field x ? number +---@field y ? number +---@field z ? number +---@field w ? number +---@operator mul(Vec3): Vec3 +---@operator unm: Quat +---@operator add(Quat): Quat +---@operator mul(number): Quat +---@operator add(Quat): Quat +---@operator sub(Quat): Quat +---@operator mul(Vec3): Vec3 +---@operator sub(Quat): Quat +---@operator div(number): Quat +---@operator mul(Quat): Quat +---@operator mul(Vec3A): Vec3A +---@operator mul(Vec3A): Vec3A +---@operator mul(Quat): Quat +Quat = {} + +---@param _self Quat +---@param rhs Quat +---@return Quat +function Quat.mul_quat(_self,rhs) end + +---@param _self Quat +---@return number +function Quat.length_recip(_self) end + +---@param _self Quat +---@param rhs Quat +---@return number +function Quat.angle_between(_self,rhs) end + +---@param mat Mat3 +---@return Quat +function Quat.from_mat3(mat) end + +---@param dir Vec3 +---@param up Vec3 +---@return Quat +function Quat.look_to_lh(dir,up) end + +---@param dir Vec3 +---@param up Vec3 +---@return Quat +function Quat.look_to_rh(dir,up) end + +---@param _self Quat +---@return Quat +function Quat.conjugate(_self) end + +---@param from Vec3 +---@param to Vec3 +---@return Quat +function Quat.from_rotation_arc(from,to) end + +---@param _self Quat +---@param rhs Quat +---@return number +function Quat.dot(_self,rhs) end + +---@param _self Quat +---@return Vec3 +function Quat.xyz(_self) end + +---@param x number +---@param y number +---@param z number +---@param w number +---@return Quat +function Quat.from_xyzw(x,y,z,w) end + +---@param from Vec2 +---@param to Vec2 +---@return Quat +function Quat.from_rotation_arc_2d(from,to) end + +---@param a Affine3A +---@return Quat +function Quat.from_affine3(a) end + +---@param _self Quat +---@return number +function Quat.length_squared(_self) end + +---@param _self Quat +---@param _end Quat +---@param s number +---@return Quat +function Quat.slerp(_self,_end,s) end + +---@param _self Quat +---@param rhs Vec3 +---@return Vec3 +function Quat.mul_vec3(_self,rhs) end + +---@param p1 Quat +---@param p2 Vec3 +---@return Vec3 +function Quat.mul(p1,p2) end + +---@param _self Quat +---@param rhs Vec3A +---@return Vec3A +function Quat.mul_vec3a(_self,rhs) end + +---@param v Vec3 +---@return Quat +function Quat.from_scaled_axis(v) end + +---@param _self Quat +---@return number +function Quat.length(_self) end + +---@param _self Quat +---@return Quat +function Quat.neg(_self) end + +---@param _self Quat +---@param rhs Quat +---@return Quat +function Quat.add(_self,rhs) end + +---@param p1 Quat +---@param p2 number +---@return Quat +function Quat.mul(p1,p2) end + +---@param a number[] +---@return Quat +function Quat.from_array(a) end + +---@param axis Vec3 +---@param angle number +---@return Quat +function Quat.from_axis_angle(axis,angle) end + +---@param _self Quat +---@param rhs Quat +---@param max_angle number +---@return Quat +function Quat.rotate_towards(_self,rhs,max_angle) end + +---@param _self Quat +---@return Quat +function Quat.normalize(_self) end + +---@param _self Quat +---@param rhs Quat +---@return boolean +function Quat.__eq(_self,rhs) end + +---@param _self Quat +---@param rhs Quat +---@return boolean +function Quat.eq(_self,rhs) end + +---@param _self Quat +---@return boolean +function Quat.is_near_identity(_self) end + +---@param _self Quat +---@return Quat +function Quat.clone(_self) end + +---@param p1 Quat +---@param p2 Quat +---@return Quat +function Quat.add(p1,p2) end + +---@param mat Mat4 +---@return Quat +function Quat.from_mat4(mat) end + +---@param _self Quat +---@param rhs Quat +---@return Quat +function Quat.sub(_self,rhs) end + +---@param angle number +---@return Quat +function Quat.from_rotation_y(angle) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Quat +function Quat.look_at_lh(eye,center,up) end + +---@param _self Quat +---@return boolean +function Quat.is_finite(_self) end + +---@param angle number +---@return Quat +function Quat.from_rotation_x(angle) end + +---@param p1 Quat +---@param p2 Vec3 +---@return Vec3 +function Quat.mul(p1,p2) end + +---@param p1 Quat +---@param p2 Quat +---@return Quat +function Quat.sub(p1,p2) end + +---@param v Vec4 +---@return Quat +function Quat.from_vec4(v) end + +---@param _self Quat +---@return DQuat +function Quat.as_dquat(_self) end + +---@param _self Quat +---@param _end Quat +---@param s number +---@return Quat +function Quat.lerp(_self,_end,s) end + +---@param _self Quat +---@param rhs number +---@return Quat +function Quat.div(_self,rhs) end + +---@param _self Quat +---@param rhs Quat +---@param max_abs_diff number +---@return boolean +function Quat.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param p1 Quat +---@param p2 Quat +---@return Quat +function Quat.mul(p1,p2) end + +---@param eye Vec3 +---@param center Vec3 +---@param up Vec3 +---@return Quat +function Quat.look_at_rh(eye,center,up) end + +---@param from Vec3 +---@param to Vec3 +---@return Quat +function Quat.from_rotation_arc_colinear(from,to) end + +---@param p1 Quat +---@param p2 Vec3A +---@return Vec3A +function Quat.mul(p1,p2) end + +---@param mat Mat3A +---@return Quat +function Quat.from_mat3a(mat) end + +---@param _self Quat +---@return boolean +function Quat.is_normalized(_self) end + +---@param _self Quat +---@return Quat +function Quat.inverse(_self) end + +---@param p1 Quat +---@param p2 Vec3A +---@return Vec3A +function Quat.mul(p1,p2) end + +---@param _self Quat +---@return boolean +function Quat.is_nan(_self) end + +---@param _self Quat +---@param order EulerRot +---@return [number, number, number] +function Quat.to_euler(_self,order) end + +---@param angle number +---@return Quat +function Quat.from_rotation_z(angle) end + +---@param _self Quat +---@return number[] +function Quat.to_array(_self) end + +---@param _self Quat +---@return Vec3 +function Quat.to_scaled_axis(_self) end + +---@param _self Quat +---@param rhs Quat +---@return Quat +function Quat.mul(_self,rhs) end + +---@param euler EulerRot +---@param a number +---@param b number +---@param c number +---@return Quat +function Quat.from_euler(euler,a,b,c) end + + + +---@class U16Vec2 : ReflectReference +---@field x ? integer +---@field y ? integer +---@operator div(U16Vec2): U16Vec2 +---@operator div(U16Vec2): U16Vec2 +---@operator add(U16Vec2): U16Vec2 +---@operator mul(U16Vec2): U16Vec2 +---@operator add(integer): U16Vec2 +---@operator mod(U16Vec2): U16Vec2 +---@operator mod(integer): U16Vec2 +---@operator div(integer): U16Vec2 +---@operator mod(U16Vec2): U16Vec2 +---@operator add(U16Vec2): U16Vec2 +---@operator sub(U16Vec2): U16Vec2 +---@operator sub(U16Vec2): U16Vec2 +---@operator mul(U16Vec2): U16Vec2 +---@operator sub(integer): U16Vec2 +---@operator mul(integer): U16Vec2 +U16Vec2 = {} + +---@param _self U16Vec2 +---@return IVec2 +function U16Vec2.as_ivec2(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.div(_self,rhs) end + +---@param _self U16Vec2 +---@return nil +function U16Vec2.assert_receiver_is_total_eq(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.wrapping_mul(_self,rhs) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.saturating_add(_self,rhs) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return integer | nil +function U16Vec2.checked_manhattan_distance(_self,rhs) end + +---@param _self U16Vec2 +---@return integer[] +function U16Vec2.to_array(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.wrapping_add(_self,rhs) end + +---@param x integer +---@param y integer +---@return U16Vec2 +function U16Vec2.new(x,y) end + +---@param p1 U16Vec2 +---@param p2 U16Vec2 +---@return U16Vec2 +function U16Vec2.div(p1,p2) end + +---@param p1 U16Vec2 +---@param p2 U16Vec2 +---@return U16Vec2 +function U16Vec2.add(p1,p2) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.saturating_sub(_self,rhs) end + +---@param _self U16Vec2 +---@return integer +function U16Vec2.element_product(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.mul(_self,rhs) end + +---@param _self U16Vec2 +---@return U64Vec2 +function U16Vec2.as_u64vec2(_self) end + +---@param p1 U16Vec2 +---@param p2 integer +---@return U16Vec2 +function U16Vec2.add(p1,p2) end + +---@param _self U16Vec2 +---@return DVec2 +function U16Vec2.as_dvec2(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.rem(_self,rhs) end + +---@param _self U16Vec2 +---@param y integer +---@return U16Vec2 +function U16Vec2.with_y(_self,y) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return integer +function U16Vec2.chebyshev_distance(_self,rhs) end + +---@param a integer[] +---@return U16Vec2 +function U16Vec2.from_array(a) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return integer +function U16Vec2.dot(_self,rhs) end + +---@param _self U16Vec2 +---@param z integer +---@return U16Vec3 +function U16Vec2.extend(_self,z) end + +---@param _self U16Vec2 +---@return Vec2 +function U16Vec2.as_vec2(_self) end + +---@param p1 U16Vec2 +---@param p2 integer +---@return U16Vec2 +function U16Vec2.rem(p1,p2) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return integer +function U16Vec2.manhattan_distance(_self,rhs) end + +---@param _self U16Vec2 +---@return integer +function U16Vec2.min_position(_self) end + +---@param _self U16Vec2 +---@param rhs I16Vec2 +---@return U16Vec2 +function U16Vec2.saturating_add_signed(_self,rhs) end + +---@param p1 U16Vec2 +---@param p2 integer +---@return U16Vec2 +function U16Vec2.div(p1,p2) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.saturating_mul(_self,rhs) end + +---@param _self U16Vec2 +---@return integer +function U16Vec2.max_position(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return BVec2 +function U16Vec2.cmpeq(_self,rhs) end + +---@param _self U16Vec2 +---@return U16Vec2 +function U16Vec2.clone(_self) end + +---@param _self U16Vec2 +---@param x integer +---@return U16Vec2 +function U16Vec2.with_x(_self,x) end + +---@param _self U16Vec2 +---@param other U16Vec2 +---@return boolean +function U16Vec2.__eq(_self,other) end + +---@param _self U16Vec2 +---@param other U16Vec2 +---@return boolean +function U16Vec2.eq(_self,other) end + +---@param p1 U16Vec2 +---@param p2 U16Vec2 +---@return U16Vec2 +function U16Vec2.rem(p1,p2) end + +---@param _self U16Vec2 +---@return U8Vec2 +function U16Vec2.as_u8vec2(_self) end + +---@param _self U16Vec2 +---@param rhs I16Vec2 +---@return U16Vec2 +function U16Vec2.wrapping_add_signed(_self,rhs) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.add(_self,rhs) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.wrapping_sub(_self,rhs) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return BVec2 +function U16Vec2.cmpne(_self,rhs) end + +---@param p1 U16Vec2 +---@param p2 U16Vec2 +---@return U16Vec2 +function U16Vec2.sub(p1,p2) end + +---@param _self U16Vec2 +---@return integer +function U16Vec2.element_sum(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.min(_self,rhs) end + +---@param _self U16Vec2 +---@return I8Vec2 +function U16Vec2.as_i8vec2(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.sub(_self,rhs) end + +---@param _self U16Vec2 +---@return integer +function U16Vec2.max_element(_self) end + +---@param p1 U16Vec2 +---@param p2 U16Vec2 +---@return U16Vec2 +function U16Vec2.mul(p1,p2) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.dot_into_vec(_self,rhs) end + +---@param p1 U16Vec2 +---@param p2 integer +---@return U16Vec2 +function U16Vec2.sub(p1,p2) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return BVec2 +function U16Vec2.cmpge(_self,rhs) end + +---@param _self U16Vec2 +---@return I16Vec2 +function U16Vec2.as_i16vec2(_self) end + +---@param _self U16Vec2 +---@param min U16Vec2 +---@param max U16Vec2 +---@return U16Vec2 +function U16Vec2.clamp(_self,min,max) end + +---@param p1 U16Vec2 +---@param p2 integer +---@return U16Vec2 +function U16Vec2.mul(p1,p2) end + +---@param _self U16Vec2 +---@return UVec2 +function U16Vec2.as_uvec2(_self) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.saturating_div(_self,rhs) end + +---@param v integer +---@return U16Vec2 +function U16Vec2.splat(v) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return BVec2 +function U16Vec2.cmpgt(_self,rhs) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return BVec2 +function U16Vec2.cmple(_self,rhs) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.wrapping_div(_self,rhs) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return U16Vec2 +function U16Vec2.max(_self,rhs) end + +---@param _self U16Vec2 +---@return integer +function U16Vec2.min_element(_self) end + +---@param mask BVec2 +---@param if_true U16Vec2 +---@param if_false U16Vec2 +---@return U16Vec2 +function U16Vec2.select(mask,if_true,if_false) end + +---@param _self U16Vec2 +---@param rhs U16Vec2 +---@return BVec2 +function U16Vec2.cmplt(_self,rhs) end + +---@param _self U16Vec2 +---@return integer +function U16Vec2.length_squared(_self) end + +---@param _self U16Vec2 +---@return I64Vec2 +function U16Vec2.as_i64vec2(_self) end + + + +---@class U16Vec3 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@operator mul(integer): U16Vec3 +---@operator sub(integer): U16Vec3 +---@operator div(integer): U16Vec3 +---@operator add(U16Vec3): U16Vec3 +---@operator add(integer): U16Vec3 +---@operator mul(U16Vec3): U16Vec3 +---@operator mod(U16Vec3): U16Vec3 +---@operator add(U16Vec3): U16Vec3 +---@operator mod(integer): U16Vec3 +---@operator div(U16Vec3): U16Vec3 +---@operator mod(U16Vec3): U16Vec3 +---@operator sub(U16Vec3): U16Vec3 +---@operator div(U16Vec3): U16Vec3 +---@operator mul(U16Vec3): U16Vec3 +---@operator sub(U16Vec3): U16Vec3 +U16Vec3 = {} + +---@param p1 U16Vec3 +---@param p2 integer +---@return U16Vec3 +function U16Vec3.mul(p1,p2) end + +---@param _self U16Vec3 +---@return U64Vec3 +function U16Vec3.as_u64vec3(_self) end + +---@param p1 U16Vec3 +---@param p2 integer +---@return U16Vec3 +function U16Vec3.sub(p1,p2) end + +---@param _self U16Vec3 +---@return DVec3 +function U16Vec3.as_dvec3(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.wrapping_add(_self,rhs) end + +---@param _self U16Vec3 +---@return integer +function U16Vec3.min_element(_self) end + +---@param _self U16Vec3 +---@return Vec3 +function U16Vec3.as_vec3(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return BVec3 +function U16Vec3.cmpeq(_self,rhs) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.wrapping_mul(_self,rhs) end + +---@param _self U16Vec3 +---@return nil +function U16Vec3.assert_receiver_is_total_eq(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.saturating_div(_self,rhs) end + +---@param _self U16Vec3 +---@return integer[] +function U16Vec3.to_array(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.dot_into_vec(_self,rhs) end + +---@param mask BVec3 +---@param if_true U16Vec3 +---@param if_false U16Vec3 +---@return U16Vec3 +function U16Vec3.select(mask,if_true,if_false) end + +---@param _self U16Vec3 +---@param rhs I16Vec3 +---@return U16Vec3 +function U16Vec3.saturating_add_signed(_self,rhs) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.max(_self,rhs) end + +---@param _self U16Vec3 +---@return U16Vec2 +function U16Vec3.truncate(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return integer +function U16Vec3.dot(_self,rhs) end + +---@param p1 U16Vec3 +---@param p2 integer +---@return U16Vec3 +function U16Vec3.div(p1,p2) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.add(_self,rhs) end + +---@param _self U16Vec3 +---@return integer +function U16Vec3.max_position(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.wrapping_sub(_self,rhs) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return BVec3 +function U16Vec3.cmpne(_self,rhs) end + +---@param v integer +---@return U16Vec3 +function U16Vec3.splat(v) end + +---@param _self U16Vec3 +---@param min U16Vec3 +---@param max U16Vec3 +---@return U16Vec3 +function U16Vec3.clamp(_self,min,max) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.min(_self,rhs) end + +---@param p1 U16Vec3 +---@param p2 integer +---@return U16Vec3 +function U16Vec3.add(p1,p2) end + +---@param _self U16Vec3 +---@param z integer +---@return U16Vec3 +function U16Vec3.with_z(_self,z) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.mul(_self,rhs) end + +---@param _self U16Vec3 +---@return integer +function U16Vec3.min_position(_self) end + +---@param _self U16Vec3 +---@return U8Vec3 +function U16Vec3.as_u8vec3(_self) end + +---@param _self U16Vec3 +---@return integer +function U16Vec3.element_sum(_self) end + +---@param _self U16Vec3 +---@param rhs I16Vec3 +---@return U16Vec3 +function U16Vec3.wrapping_add_signed(_self,rhs) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return integer +function U16Vec3.chebyshev_distance(_self,rhs) end + +---@param p1 U16Vec3 +---@param p2 U16Vec3 +---@return U16Vec3 +function U16Vec3.rem(p1,p2) end + +---@param p1 U16Vec3 +---@param p2 U16Vec3 +---@return U16Vec3 +function U16Vec3.add(p1,p2) end + +---@param p1 U16Vec3 +---@param p2 integer +---@return U16Vec3 +function U16Vec3.rem(p1,p2) end + +---@param _self U16Vec3 +---@return integer +function U16Vec3.element_product(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return BVec3 +function U16Vec3.cmplt(_self,rhs) end + +---@param _self U16Vec3 +---@return UVec3 +function U16Vec3.as_uvec3(_self) end + +---@param a integer[] +---@return U16Vec3 +function U16Vec3.from_array(a) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.wrapping_div(_self,rhs) end + +---@param _self U16Vec3 +---@return I64Vec3 +function U16Vec3.as_i64vec3(_self) end + +---@param p1 U16Vec3 +---@param p2 U16Vec3 +---@return U16Vec3 +function U16Vec3.div(p1,p2) end + +---@param _self U16Vec3 +---@return I8Vec3 +function U16Vec3.as_i8vec3(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.rem(_self,rhs) end + +---@param _self U16Vec3 +---@param w integer +---@return U16Vec4 +function U16Vec3.extend(_self,w) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return BVec3 +function U16Vec3.cmple(_self,rhs) end + +---@param _self U16Vec3 +---@return integer +function U16Vec3.length_squared(_self) end + +---@param _self U16Vec3 +---@param other U16Vec3 +---@return boolean +function U16Vec3.__eq(_self,other) end + +---@param _self U16Vec3 +---@param other U16Vec3 +---@return boolean +function U16Vec3.eq(_self,other) end + +---@param _self U16Vec3 +---@return integer +function U16Vec3.max_element(_self) end + +---@param _self U16Vec3 +---@return U16Vec3 +function U16Vec3.clone(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return BVec3 +function U16Vec3.cmpge(_self,rhs) end + +---@param _self U16Vec3 +---@param x integer +---@return U16Vec3 +function U16Vec3.with_x(_self,x) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return integer | nil +function U16Vec3.checked_manhattan_distance(_self,rhs) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return integer +function U16Vec3.manhattan_distance(_self,rhs) end + +---@param _self U16Vec3 +---@param y integer +---@return U16Vec3 +function U16Vec3.with_y(_self,y) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.cross(_self,rhs) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.saturating_add(_self,rhs) end + +---@param _self U16Vec3 +---@return I16Vec3 +function U16Vec3.as_i16vec3(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return BVec3 +function U16Vec3.cmpgt(_self,rhs) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.saturating_mul(_self,rhs) end + +---@param _self U16Vec3 +---@return Vec3A +function U16Vec3.as_vec3a(_self) end + +---@param p1 U16Vec3 +---@param p2 U16Vec3 +---@return U16Vec3 +function U16Vec3.sub(p1,p2) end + +---@param x integer +---@param y integer +---@param z integer +---@return U16Vec3 +function U16Vec3.new(x,y,z) end + +---@param _self U16Vec3 +---@return IVec3 +function U16Vec3.as_ivec3(_self) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.div(_self,rhs) end + +---@param p1 U16Vec3 +---@param p2 U16Vec3 +---@return U16Vec3 +function U16Vec3.mul(p1,p2) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.sub(_self,rhs) end + +---@param _self U16Vec3 +---@param rhs U16Vec3 +---@return U16Vec3 +function U16Vec3.saturating_sub(_self,rhs) end + + + +---@class U16Vec4 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@field w ? integer +---@operator sub(integer): U16Vec4 +---@operator add(integer): U16Vec4 +---@operator add(U16Vec4): U16Vec4 +---@operator div(U16Vec4): U16Vec4 +---@operator add(U16Vec4): U16Vec4 +---@operator mul(U16Vec4): U16Vec4 +---@operator div(integer): U16Vec4 +---@operator sub(U16Vec4): U16Vec4 +---@operator mul(U16Vec4): U16Vec4 +---@operator mod(integer): U16Vec4 +---@operator mod(U16Vec4): U16Vec4 +---@operator div(U16Vec4): U16Vec4 +---@operator sub(U16Vec4): U16Vec4 +---@operator mul(integer): U16Vec4 +---@operator mod(U16Vec4): U16Vec4 +U16Vec4 = {} + +---@param _self U16Vec4 +---@param rhs I16Vec4 +---@return U16Vec4 +function U16Vec4.saturating_add_signed(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.min(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.wrapping_add(_self,rhs) end + +---@param _self U16Vec4 +---@return I16Vec4 +function U16Vec4.as_i16vec4(_self) end + +---@param p1 U16Vec4 +---@param p2 integer +---@return U16Vec4 +function U16Vec4.sub(p1,p2) end + +---@param _self U16Vec4 +---@return integer +function U16Vec4.max_position(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.dot_into_vec(_self,rhs) end + +---@param _self U16Vec4 +---@return integer +function U16Vec4.min_element(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return integer +function U16Vec4.dot(_self,rhs) end + +---@param _self U16Vec4 +---@return nil +function U16Vec4.assert_receiver_is_total_eq(_self) end + +---@param _self U16Vec4 +---@return integer +function U16Vec4.element_product(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.saturating_mul(_self,rhs) end + +---@param _self U16Vec4 +---@return integer +function U16Vec4.min_position(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return BVec4 +function U16Vec4.cmplt(_self,rhs) end + +---@param _self U16Vec4 +---@return U16Vec4 +function U16Vec4.clone(_self) end + +---@param p1 U16Vec4 +---@param p2 integer +---@return U16Vec4 +function U16Vec4.add(p1,p2) end + +---@param _self U16Vec4 +---@return UVec4 +function U16Vec4.as_uvec4(_self) end + +---@param _self U16Vec4 +---@param rhs I16Vec4 +---@return U16Vec4 +function U16Vec4.wrapping_add_signed(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return BVec4 +function U16Vec4.cmpge(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.wrapping_div(_self,rhs) end + +---@param _self U16Vec4 +---@return integer[] +function U16Vec4.to_array(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.saturating_div(_self,rhs) end + +---@param _self U16Vec4 +---@param y integer +---@return U16Vec4 +function U16Vec4.with_y(_self,y) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.add(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return BVec4 +function U16Vec4.cmpne(_self,rhs) end + +---@param _self U16Vec4 +---@param other U16Vec4 +---@return boolean +function U16Vec4.__eq(_self,other) end + +---@param _self U16Vec4 +---@param other U16Vec4 +---@return boolean +function U16Vec4.eq(_self,other) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.saturating_add(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return integer | nil +function U16Vec4.checked_manhattan_distance(_self,rhs) end + +---@param p1 U16Vec4 +---@param p2 U16Vec4 +---@return U16Vec4 +function U16Vec4.div(p1,p2) end + +---@param _self U16Vec4 +---@param w integer +---@return U16Vec4 +function U16Vec4.with_w(_self,w) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.wrapping_mul(_self,rhs) end + +---@param mask BVec4 +---@param if_true U16Vec4 +---@param if_false U16Vec4 +---@return U16Vec4 +function U16Vec4.select(mask,if_true,if_false) end + +---@param p1 U16Vec4 +---@param p2 U16Vec4 +---@return U16Vec4 +function U16Vec4.add(p1,p2) end + +---@param p1 U16Vec4 +---@param p2 U16Vec4 +---@return U16Vec4 +function U16Vec4.mul(p1,p2) end + +---@param p1 U16Vec4 +---@param p2 integer +---@return U16Vec4 +function U16Vec4.div(p1,p2) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.saturating_sub(_self,rhs) end + +---@param p1 U16Vec4 +---@param p2 U16Vec4 +---@return U16Vec4 +function U16Vec4.sub(p1,p2) end + +---@param _self U16Vec4 +---@return I8Vec4 +function U16Vec4.as_i8vec4(_self) end + +---@param _self U16Vec4 +---@return integer +function U16Vec4.length_squared(_self) end + +---@param a integer[] +---@return U16Vec4 +function U16Vec4.from_array(a) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return BVec4 +function U16Vec4.cmple(_self,rhs) end + +---@param _self U16Vec4 +---@return integer +function U16Vec4.element_sum(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.mul(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return integer +function U16Vec4.manhattan_distance(_self,rhs) end + +---@param _self U16Vec4 +---@param x integer +---@return U16Vec4 +function U16Vec4.with_x(_self,x) end + +---@param _self U16Vec4 +---@param min U16Vec4 +---@param max U16Vec4 +---@return U16Vec4 +function U16Vec4.clamp(_self,min,max) end + +---@param p1 U16Vec4 +---@param p2 integer +---@return U16Vec4 +function U16Vec4.rem(p1,p2) end + +---@param _self U16Vec4 +---@return Vec4 +function U16Vec4.as_vec4(_self) end + +---@param _self U16Vec4 +---@return integer +function U16Vec4.max_element(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.wrapping_sub(_self,rhs) end + +---@param _self U16Vec4 +---@param z integer +---@return U16Vec4 +function U16Vec4.with_z(_self,z) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.rem(_self,rhs) end + +---@param _self U16Vec4 +---@return U8Vec4 +function U16Vec4.as_u8vec4(_self) end + +---@param _self U16Vec4 +---@return U16Vec3 +function U16Vec4.truncate(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return BVec4 +function U16Vec4.cmpgt(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.max(_self,rhs) end + +---@param _self U16Vec4 +---@return U64Vec4 +function U16Vec4.as_u64vec4(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.div(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return BVec4 +function U16Vec4.cmpeq(_self,rhs) end + +---@param _self U16Vec4 +---@return I64Vec4 +function U16Vec4.as_i64vec4(_self) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return integer +function U16Vec4.chebyshev_distance(_self,rhs) end + +---@param _self U16Vec4 +---@param rhs U16Vec4 +---@return U16Vec4 +function U16Vec4.sub(_self,rhs) end + +---@param v integer +---@return U16Vec4 +function U16Vec4.splat(v) end + +---@param _self U16Vec4 +---@return DVec4 +function U16Vec4.as_dvec4(_self) end + +---@param p1 U16Vec4 +---@param p2 integer +---@return U16Vec4 +function U16Vec4.mul(p1,p2) end + +---@param p1 U16Vec4 +---@param p2 U16Vec4 +---@return U16Vec4 +function U16Vec4.rem(p1,p2) end + +---@param _self U16Vec4 +---@return IVec4 +function U16Vec4.as_ivec4(_self) end + +---@param x integer +---@param y integer +---@param z integer +---@param w integer +---@return U16Vec4 +function U16Vec4.new(x,y,z,w) end + + + +---@class U64Vec2 : ReflectReference +---@field x ? integer +---@field y ? integer +---@operator mul(U64Vec2): U64Vec2 +---@operator mod(integer): U64Vec2 +---@operator sub(integer): U64Vec2 +---@operator add(integer): U64Vec2 +---@operator sub(U64Vec2): U64Vec2 +---@operator mul(integer): U64Vec2 +---@operator div(integer): U64Vec2 +---@operator add(U64Vec2): U64Vec2 +---@operator mod(U64Vec2): U64Vec2 +---@operator add(U64Vec2): U64Vec2 +---@operator div(U64Vec2): U64Vec2 +---@operator mod(U64Vec2): U64Vec2 +---@operator sub(U64Vec2): U64Vec2 +---@operator div(U64Vec2): U64Vec2 +---@operator mul(U64Vec2): U64Vec2 +U64Vec2 = {} + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.mul(_self,rhs) end + +---@param _self U64Vec2 +---@return I8Vec2 +function U64Vec2.as_i8vec2(_self) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return integer +function U64Vec2.chebyshev_distance(_self,rhs) end + +---@param p1 U64Vec2 +---@param p2 integer +---@return U64Vec2 +function U64Vec2.rem(p1,p2) end + +---@param _self U64Vec2 +---@param rhs I64Vec2 +---@return U64Vec2 +function U64Vec2.saturating_add_signed(_self,rhs) end + +---@param _self U64Vec2 +---@param y integer +---@return U64Vec2 +function U64Vec2.with_y(_self,y) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.saturating_div(_self,rhs) end + +---@param _self U64Vec2 +---@return U8Vec2 +function U64Vec2.as_u8vec2(_self) end + +---@param a integer[] +---@return U64Vec2 +function U64Vec2.from_array(a) end + +---@param _self U64Vec2 +---@return integer +function U64Vec2.element_sum(_self) end + +---@param _self U64Vec2 +---@param z integer +---@return U64Vec3 +function U64Vec2.extend(_self,z) end + +---@param _self U64Vec2 +---@return UVec2 +function U64Vec2.as_uvec2(_self) end + +---@param _self U64Vec2 +---@param rhs I64Vec2 +---@return U64Vec2 +function U64Vec2.wrapping_add_signed(_self,rhs) end + +---@param _self U64Vec2 +---@param min U64Vec2 +---@param max U64Vec2 +---@return U64Vec2 +function U64Vec2.clamp(_self,min,max) end + +---@param _self U64Vec2 +---@return U16Vec2 +function U64Vec2.as_u16vec2(_self) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.wrapping_add(_self,rhs) end + +---@param _self U64Vec2 +---@return nil +function U64Vec2.assert_receiver_is_total_eq(_self) end + +---@param _self U64Vec2 +---@param other U64Vec2 +---@return boolean +function U64Vec2.__eq(_self,other) end + +---@param _self U64Vec2 +---@param other U64Vec2 +---@return boolean +function U64Vec2.eq(_self,other) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.wrapping_sub(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return integer | nil +function U64Vec2.checked_manhattan_distance(_self,rhs) end + +---@param p1 U64Vec2 +---@param p2 integer +---@return U64Vec2 +function U64Vec2.sub(p1,p2) end + +---@param _self U64Vec2 +---@return I64Vec2 +function U64Vec2.as_i64vec2(_self) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return BVec2 +function U64Vec2.cmpne(_self,rhs) end + +---@param _self U64Vec2 +---@return I16Vec2 +function U64Vec2.as_i16vec2(_self) end + +---@param p1 U64Vec2 +---@param p2 integer +---@return U64Vec2 +function U64Vec2.add(p1,p2) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return BVec2 +function U64Vec2.cmplt(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.sub(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.dot_into_vec(_self,rhs) end + +---@param p1 U64Vec2 +---@param p2 integer +---@return U64Vec2 +function U64Vec2.mul(p1,p2) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return integer +function U64Vec2.dot(_self,rhs) end + +---@param _self U64Vec2 +---@return integer +function U64Vec2.max_position(_self) end + +---@param p1 U64Vec2 +---@param p2 integer +---@return U64Vec2 +function U64Vec2.div(p1,p2) end + +---@param _self U64Vec2 +---@return integer +function U64Vec2.min_element(_self) end + +---@param _self U64Vec2 +---@return integer +function U64Vec2.max_element(_self) end + +---@param p1 U64Vec2 +---@param p2 U64Vec2 +---@return U64Vec2 +function U64Vec2.add(p1,p2) end + +---@param _self U64Vec2 +---@return integer +function U64Vec2.element_product(_self) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.rem(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.add(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.div(_self,rhs) end + +---@param _self U64Vec2 +---@return Vec2 +function U64Vec2.as_vec2(_self) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return integer +function U64Vec2.manhattan_distance(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return BVec2 +function U64Vec2.cmple(_self,rhs) end + +---@param p1 U64Vec2 +---@param p2 U64Vec2 +---@return U64Vec2 +function U64Vec2.rem(p1,p2) end + +---@param v integer +---@return U64Vec2 +function U64Vec2.splat(v) end + +---@param mask BVec2 +---@param if_true U64Vec2 +---@param if_false U64Vec2 +---@return U64Vec2 +function U64Vec2.select(mask,if_true,if_false) end + +---@param x integer +---@param y integer +---@return U64Vec2 +function U64Vec2.new(x,y) end + +---@param _self U64Vec2 +---@return integer +function U64Vec2.min_position(_self) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.wrapping_div(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.max(_self,rhs) end + +---@param _self U64Vec2 +---@param x integer +---@return U64Vec2 +function U64Vec2.with_x(_self,x) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.saturating_sub(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.saturating_add(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.wrapping_mul(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return BVec2 +function U64Vec2.cmpgt(_self,rhs) end + +---@param p1 U64Vec2 +---@param p2 U64Vec2 +---@return U64Vec2 +function U64Vec2.sub(p1,p2) end + +---@param _self U64Vec2 +---@return IVec2 +function U64Vec2.as_ivec2(_self) end + +---@param p1 U64Vec2 +---@param p2 U64Vec2 +---@return U64Vec2 +function U64Vec2.div(p1,p2) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.min(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return U64Vec2 +function U64Vec2.saturating_mul(_self,rhs) end + +---@param _self U64Vec2 +---@return DVec2 +function U64Vec2.as_dvec2(_self) end + +---@param _self U64Vec2 +---@return integer +function U64Vec2.length_squared(_self) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return BVec2 +function U64Vec2.cmpge(_self,rhs) end + +---@param _self U64Vec2 +---@param rhs U64Vec2 +---@return BVec2 +function U64Vec2.cmpeq(_self,rhs) end + +---@param p1 U64Vec2 +---@param p2 U64Vec2 +---@return U64Vec2 +function U64Vec2.mul(p1,p2) end + +---@param _self U64Vec2 +---@return U64Vec2 +function U64Vec2.clone(_self) end + +---@param _self U64Vec2 +---@return integer[] +function U64Vec2.to_array(_self) end + + + +---@class U64Vec3 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@operator mul(integer): U64Vec3 +---@operator add(U64Vec3): U64Vec3 +---@operator div(integer): U64Vec3 +---@operator mul(U64Vec3): U64Vec3 +---@operator mul(U64Vec3): U64Vec3 +---@operator div(U64Vec3): U64Vec3 +---@operator mod(integer): U64Vec3 +---@operator sub(U64Vec3): U64Vec3 +---@operator add(integer): U64Vec3 +---@operator mod(U64Vec3): U64Vec3 +---@operator add(U64Vec3): U64Vec3 +---@operator sub(integer): U64Vec3 +---@operator sub(U64Vec3): U64Vec3 +---@operator mod(U64Vec3): U64Vec3 +---@operator div(U64Vec3): U64Vec3 +U64Vec3 = {} + +---@param a integer[] +---@return U64Vec3 +function U64Vec3.from_array(a) end + +---@param _self U64Vec3 +---@return integer +function U64Vec3.max_element(_self) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.cross(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.saturating_div(_self,rhs) end + +---@param p1 U64Vec3 +---@param p2 integer +---@return U64Vec3 +function U64Vec3.mul(p1,p2) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.add(_self,rhs) end + +---@param _self U64Vec3 +---@return integer +function U64Vec3.element_sum(_self) end + +---@param p1 U64Vec3 +---@param p2 integer +---@return U64Vec3 +function U64Vec3.div(p1,p2) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.mul(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.wrapping_add(_self,rhs) end + +---@param _self U64Vec3 +---@return integer +function U64Vec3.element_product(_self) end + +---@param p1 U64Vec3 +---@param p2 U64Vec3 +---@return U64Vec3 +function U64Vec3.mul(p1,p2) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.wrapping_mul(_self,rhs) end + +---@param _self U64Vec3 +---@param x integer +---@return U64Vec3 +function U64Vec3.with_x(_self,x) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.saturating_add(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.div(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.dot_into_vec(_self,rhs) end + +---@param _self U64Vec3 +---@return Vec3 +function U64Vec3.as_vec3(_self) end + +---@param _self U64Vec3 +---@return integer[] +function U64Vec3.to_array(_self) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.wrapping_sub(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return integer +function U64Vec3.dot(_self,rhs) end + +---@param p1 U64Vec3 +---@param p2 integer +---@return U64Vec3 +function U64Vec3.rem(p1,p2) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return integer | nil +function U64Vec3.checked_manhattan_distance(_self,rhs) end + +---@param _self U64Vec3 +---@param other U64Vec3 +---@return boolean +function U64Vec3.__eq(_self,other) end + +---@param _self U64Vec3 +---@param other U64Vec3 +---@return boolean +function U64Vec3.eq(_self,other) end + +---@param _self U64Vec3 +---@return UVec3 +function U64Vec3.as_uvec3(_self) end + +---@param v integer +---@return U64Vec3 +function U64Vec3.splat(v) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.sub(_self,rhs) end + +---@param _self U64Vec3 +---@return DVec3 +function U64Vec3.as_dvec3(_self) end + +---@param p1 U64Vec3 +---@param p2 integer +---@return U64Vec3 +function U64Vec3.add(p1,p2) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return integer +function U64Vec3.chebyshev_distance(_self,rhs) end + +---@param _self U64Vec3 +---@return U8Vec3 +function U64Vec3.as_u8vec3(_self) end + +---@param _self U64Vec3 +---@param rhs I64Vec3 +---@return U64Vec3 +function U64Vec3.wrapping_add_signed(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return BVec3 +function U64Vec3.cmpne(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return BVec3 +function U64Vec3.cmpge(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.rem(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.wrapping_div(_self,rhs) end + +---@param _self U64Vec3 +---@return I8Vec3 +function U64Vec3.as_i8vec3(_self) end + +---@param _self U64Vec3 +---@return U16Vec3 +function U64Vec3.as_u16vec3(_self) end + +---@param _self U64Vec3 +---@return integer +function U64Vec3.min_element(_self) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.min(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs I64Vec3 +---@return U64Vec3 +function U64Vec3.saturating_add_signed(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.max(_self,rhs) end + +---@param _self U64Vec3 +---@return U64Vec3 +function U64Vec3.clone(_self) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.saturating_sub(_self,rhs) end + +---@param _self U64Vec3 +---@return integer +function U64Vec3.length_squared(_self) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return BVec3 +function U64Vec3.cmpgt(_self,rhs) end + +---@param p1 U64Vec3 +---@param p2 U64Vec3 +---@return U64Vec3 +function U64Vec3.add(p1,p2) end + +---@param _self U64Vec3 +---@return I16Vec3 +function U64Vec3.as_i16vec3(_self) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return U64Vec3 +function U64Vec3.saturating_mul(_self,rhs) end + +---@param p1 U64Vec3 +---@param p2 integer +---@return U64Vec3 +function U64Vec3.sub(p1,p2) end + +---@param _self U64Vec3 +---@return IVec3 +function U64Vec3.as_ivec3(_self) end + +---@param _self U64Vec3 +---@param y integer +---@return U64Vec3 +function U64Vec3.with_y(_self,y) end + +---@param _self U64Vec3 +---@return integer +function U64Vec3.max_position(_self) end + +---@param _self U64Vec3 +---@return Vec3A +function U64Vec3.as_vec3a(_self) end + +---@param mask BVec3 +---@param if_true U64Vec3 +---@param if_false U64Vec3 +---@return U64Vec3 +function U64Vec3.select(mask,if_true,if_false) end + +---@param _self U64Vec3 +---@return I64Vec3 +function U64Vec3.as_i64vec3(_self) end + +---@param _self U64Vec3 +---@param min U64Vec3 +---@param max U64Vec3 +---@return U64Vec3 +function U64Vec3.clamp(_self,min,max) end + +---@param _self U64Vec3 +---@return U64Vec2 +function U64Vec3.truncate(_self) end + +---@param _self U64Vec3 +---@return integer +function U64Vec3.min_position(_self) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return BVec3 +function U64Vec3.cmple(_self,rhs) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return BVec3 +function U64Vec3.cmpeq(_self,rhs) end + +---@param p1 U64Vec3 +---@param p2 U64Vec3 +---@return U64Vec3 +function U64Vec3.sub(p1,p2) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return integer +function U64Vec3.manhattan_distance(_self,rhs) end + +---@param _self U64Vec3 +---@param w integer +---@return U64Vec4 +function U64Vec3.extend(_self,w) end + +---@param p1 U64Vec3 +---@param p2 U64Vec3 +---@return U64Vec3 +function U64Vec3.rem(p1,p2) end + +---@param x integer +---@param y integer +---@param z integer +---@return U64Vec3 +function U64Vec3.new(x,y,z) end + +---@param _self U64Vec3 +---@return nil +function U64Vec3.assert_receiver_is_total_eq(_self) end + +---@param p1 U64Vec3 +---@param p2 U64Vec3 +---@return U64Vec3 +function U64Vec3.div(p1,p2) end + +---@param _self U64Vec3 +---@param rhs U64Vec3 +---@return BVec3 +function U64Vec3.cmplt(_self,rhs) end + +---@param _self U64Vec3 +---@param z integer +---@return U64Vec3 +function U64Vec3.with_z(_self,z) end + + + +---@class U64Vec4 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@field w ? integer +---@operator mod(integer): U64Vec4 +---@operator sub(integer): U64Vec4 +---@operator mod(U64Vec4): U64Vec4 +---@operator sub(U64Vec4): U64Vec4 +---@operator div(U64Vec4): U64Vec4 +---@operator add(U64Vec4): U64Vec4 +---@operator add(U64Vec4): U64Vec4 +---@operator mod(U64Vec4): U64Vec4 +---@operator sub(U64Vec4): U64Vec4 +---@operator mul(U64Vec4): U64Vec4 +---@operator div(U64Vec4): U64Vec4 +---@operator mul(integer): U64Vec4 +---@operator div(integer): U64Vec4 +---@operator add(integer): U64Vec4 +---@operator mul(U64Vec4): U64Vec4 +U64Vec4 = {} + +---@param _self U64Vec4 +---@param w integer +---@return U64Vec4 +function U64Vec4.with_w(_self,w) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.max(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.saturating_add(_self,rhs) end + +---@param _self U64Vec4 +---@return integer +function U64Vec4.element_sum(_self) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.min(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.wrapping_div(_self,rhs) end + +---@param _self U64Vec4 +---@return nil +function U64Vec4.assert_receiver_is_total_eq(_self) end + +---@param _self U64Vec4 +---@return integer +function U64Vec4.length_squared(_self) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return integer +function U64Vec4.chebyshev_distance(_self,rhs) end + +---@param _self U64Vec4 +---@param x integer +---@return U64Vec4 +function U64Vec4.with_x(_self,x) end + +---@param v integer +---@return U64Vec4 +function U64Vec4.splat(v) end + +---@param p1 U64Vec4 +---@param p2 integer +---@return U64Vec4 +function U64Vec4.rem(p1,p2) end + +---@param p1 U64Vec4 +---@param p2 integer +---@return U64Vec4 +function U64Vec4.sub(p1,p2) end + +---@param _self U64Vec4 +---@return integer +function U64Vec4.element_product(_self) end + +---@param _self U64Vec4 +---@return U16Vec4 +function U64Vec4.as_u16vec4(_self) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.wrapping_add(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.rem(_self,rhs) end + +---@param _self U64Vec4 +---@return U8Vec4 +function U64Vec4.as_u8vec4(_self) end + +---@param p1 U64Vec4 +---@param p2 U64Vec4 +---@return U64Vec4 +function U64Vec4.sub(p1,p2) end + +---@param mask BVec4 +---@param if_true U64Vec4 +---@param if_false U64Vec4 +---@return U64Vec4 +function U64Vec4.select(mask,if_true,if_false) end + +---@param _self U64Vec4 +---@return DVec4 +function U64Vec4.as_dvec4(_self) end + +---@param _self U64Vec4 +---@param rhs I64Vec4 +---@return U64Vec4 +function U64Vec4.saturating_add_signed(_self,rhs) end + +---@param _self U64Vec4 +---@return U64Vec4 +function U64Vec4.clone(_self) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.div(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.saturating_sub(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.add(_self,rhs) end + +---@param _self U64Vec4 +---@param min U64Vec4 +---@param max U64Vec4 +---@return U64Vec4 +function U64Vec4.clamp(_self,min,max) end + +---@param p1 U64Vec4 +---@param p2 U64Vec4 +---@return U64Vec4 +function U64Vec4.add(p1,p2) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return integer | nil +function U64Vec4.checked_manhattan_distance(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return integer +function U64Vec4.manhattan_distance(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return BVec4 +function U64Vec4.cmpne(_self,rhs) end + +---@param _self U64Vec4 +---@return UVec4 +function U64Vec4.as_uvec4(_self) end + +---@param p1 U64Vec4 +---@param p2 U64Vec4 +---@return U64Vec4 +function U64Vec4.rem(p1,p2) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return BVec4 +function U64Vec4.cmpeq(_self,rhs) end + +---@param _self U64Vec4 +---@return integer +function U64Vec4.max_position(_self) end + +---@param _self U64Vec4 +---@param other U64Vec4 +---@return boolean +function U64Vec4.__eq(_self,other) end + +---@param _self U64Vec4 +---@param other U64Vec4 +---@return boolean +function U64Vec4.eq(_self,other) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return BVec4 +function U64Vec4.cmple(_self,rhs) end + +---@param _self U64Vec4 +---@return Vec4 +function U64Vec4.as_vec4(_self) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return BVec4 +function U64Vec4.cmpgt(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.sub(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.mul(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return integer +function U64Vec4.dot(_self,rhs) end + +---@param x integer +---@param y integer +---@param z integer +---@param w integer +---@return U64Vec4 +function U64Vec4.new(x,y,z,w) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.saturating_div(_self,rhs) end + +---@param p1 U64Vec4 +---@param p2 U64Vec4 +---@return U64Vec4 +function U64Vec4.div(p1,p2) end + +---@param _self U64Vec4 +---@return integer[] +function U64Vec4.to_array(_self) end + +---@param _self U64Vec4 +---@param rhs I64Vec4 +---@return U64Vec4 +function U64Vec4.wrapping_add_signed(_self,rhs) end + +---@param p1 U64Vec4 +---@param p2 integer +---@return U64Vec4 +function U64Vec4.mul(p1,p2) end + +---@param _self U64Vec4 +---@return I16Vec4 +function U64Vec4.as_i16vec4(_self) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.wrapping_mul(_self,rhs) end + +---@param p1 U64Vec4 +---@param p2 integer +---@return U64Vec4 +function U64Vec4.div(p1,p2) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.saturating_mul(_self,rhs) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return BVec4 +function U64Vec4.cmpge(_self,rhs) end + +---@param p1 U64Vec4 +---@param p2 integer +---@return U64Vec4 +function U64Vec4.add(p1,p2) end + +---@param a integer[] +---@return U64Vec4 +function U64Vec4.from_array(a) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.wrapping_sub(_self,rhs) end + +---@param _self U64Vec4 +---@return integer +function U64Vec4.max_element(_self) end + +---@param _self U64Vec4 +---@return I64Vec4 +function U64Vec4.as_i64vec4(_self) end + +---@param _self U64Vec4 +---@return integer +function U64Vec4.min_element(_self) end + +---@param _self U64Vec4 +---@return IVec4 +function U64Vec4.as_ivec4(_self) end + +---@param _self U64Vec4 +---@return I8Vec4 +function U64Vec4.as_i8vec4(_self) end + +---@param _self U64Vec4 +---@return integer +function U64Vec4.min_position(_self) end + +---@param _self U64Vec4 +---@param y integer +---@return U64Vec4 +function U64Vec4.with_y(_self,y) end + +---@param _self U64Vec4 +---@return U64Vec3 +function U64Vec4.truncate(_self) end + +---@param p1 U64Vec4 +---@param p2 U64Vec4 +---@return U64Vec4 +function U64Vec4.mul(p1,p2) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return BVec4 +function U64Vec4.cmplt(_self,rhs) end + +---@param _self U64Vec4 +---@param z integer +---@return U64Vec4 +function U64Vec4.with_z(_self,z) end + +---@param _self U64Vec4 +---@param rhs U64Vec4 +---@return U64Vec4 +function U64Vec4.dot_into_vec(_self,rhs) end + + + +---@class U8Vec2 : ReflectReference +---@field x ? integer +---@field y ? integer +---@operator mod(integer): U8Vec2 +---@operator mod(U8Vec2): U8Vec2 +---@operator div(integer): U8Vec2 +---@operator mod(U8Vec2): U8Vec2 +---@operator sub(U8Vec2): U8Vec2 +---@operator add(integer): U8Vec2 +---@operator mul(U8Vec2): U8Vec2 +---@operator sub(integer): U8Vec2 +---@operator div(U8Vec2): U8Vec2 +---@operator add(U8Vec2): U8Vec2 +---@operator sub(U8Vec2): U8Vec2 +---@operator mul(U8Vec2): U8Vec2 +---@operator mul(integer): U8Vec2 +---@operator add(U8Vec2): U8Vec2 +---@operator div(U8Vec2): U8Vec2 +U8Vec2 = {} + +---@param _self U8Vec2 +---@return UVec2 +function U8Vec2.as_uvec2(_self) end + +---@param _self U8Vec2 +---@param z integer +---@return U8Vec3 +function U8Vec2.extend(_self,z) end + +---@param _self U8Vec2 +---@param rhs I8Vec2 +---@return U8Vec2 +function U8Vec2.saturating_add_signed(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return BVec2 +function U8Vec2.cmple(_self,rhs) end + +---@param mask BVec2 +---@param if_true U8Vec2 +---@param if_false U8Vec2 +---@return U8Vec2 +function U8Vec2.select(mask,if_true,if_false) end + +---@param _self U8Vec2 +---@return integer +function U8Vec2.element_sum(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return BVec2 +function U8Vec2.cmpgt(_self,rhs) end + +---@param _self U8Vec2 +---@return IVec2 +function U8Vec2.as_ivec2(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.saturating_sub(_self,rhs) end + +---@param _self U8Vec2 +---@return integer +function U8Vec2.min_element(_self) end + +---@param p1 U8Vec2 +---@param p2 integer +---@return U8Vec2 +function U8Vec2.rem(p1,p2) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.wrapping_sub(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return integer +function U8Vec2.chebyshev_distance(_self,rhs) end + +---@param p1 U8Vec2 +---@param p2 U8Vec2 +---@return U8Vec2 +function U8Vec2.rem(p1,p2) end + +---@param _self U8Vec2 +---@return integer +function U8Vec2.min_position(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.max(_self,rhs) end + +---@param _self U8Vec2 +---@return I64Vec2 +function U8Vec2.as_i64vec2(_self) end + +---@param p1 U8Vec2 +---@param p2 integer +---@return U8Vec2 +function U8Vec2.div(p1,p2) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return BVec2 +function U8Vec2.cmplt(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs I8Vec2 +---@return U8Vec2 +function U8Vec2.wrapping_add_signed(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.rem(_self,rhs) end + +---@param _self U8Vec2 +---@return DVec2 +function U8Vec2.as_dvec2(_self) end + +---@param p1 U8Vec2 +---@param p2 U8Vec2 +---@return U8Vec2 +function U8Vec2.sub(p1,p2) end + +---@param p1 U8Vec2 +---@param p2 integer +---@return U8Vec2 +function U8Vec2.add(p1,p2) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.wrapping_mul(_self,rhs) end + +---@param _self U8Vec2 +---@return I16Vec2 +function U8Vec2.as_i16vec2(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.wrapping_div(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.saturating_add(_self,rhs) end + +---@param a integer[] +---@return U8Vec2 +function U8Vec2.from_array(a) end + +---@param _self U8Vec2 +---@return Vec2 +function U8Vec2.as_vec2(_self) end + +---@param p1 U8Vec2 +---@param p2 U8Vec2 +---@return U8Vec2 +function U8Vec2.mul(p1,p2) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return integer | nil +function U8Vec2.checked_manhattan_distance(_self,rhs) end + +---@param _self U8Vec2 +---@param other U8Vec2 +---@return boolean +function U8Vec2.__eq(_self,other) end + +---@param _self U8Vec2 +---@param other U8Vec2 +---@return boolean +function U8Vec2.eq(_self,other) end + +---@param _self U8Vec2 +---@param y integer +---@return U8Vec2 +function U8Vec2.with_y(_self,y) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return integer +function U8Vec2.manhattan_distance(_self,rhs) end + +---@param _self U8Vec2 +---@return U16Vec2 +function U8Vec2.as_u16vec2(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return BVec2 +function U8Vec2.cmpge(_self,rhs) end + +---@param p1 U8Vec2 +---@param p2 integer +---@return U8Vec2 +function U8Vec2.sub(p1,p2) end + +---@param p1 U8Vec2 +---@param p2 U8Vec2 +---@return U8Vec2 +function U8Vec2.div(p1,p2) end + +---@param _self U8Vec2 +---@param min U8Vec2 +---@param max U8Vec2 +---@return U8Vec2 +function U8Vec2.clamp(_self,min,max) end + +---@param _self U8Vec2 +---@return U8Vec2 +function U8Vec2.clone(_self) end + +---@param _self U8Vec2 +---@return nil +function U8Vec2.assert_receiver_is_total_eq(_self) end + +---@param _self U8Vec2 +---@return integer +function U8Vec2.element_product(_self) end + +---@param p1 U8Vec2 +---@param p2 U8Vec2 +---@return U8Vec2 +function U8Vec2.add(p1,p2) end + +---@param _self U8Vec2 +---@return integer +function U8Vec2.max_position(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.sub(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.wrapping_add(_self,rhs) end + +---@param _self U8Vec2 +---@return integer[] +function U8Vec2.to_array(_self) end + +---@param _self U8Vec2 +---@param x integer +---@return U8Vec2 +function U8Vec2.with_x(_self,x) end + +---@param _self U8Vec2 +---@return I8Vec2 +function U8Vec2.as_i8vec2(_self) end + +---@param x integer +---@param y integer +---@return U8Vec2 +function U8Vec2.new(x,y) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.mul(_self,rhs) end + +---@param v integer +---@return U8Vec2 +function U8Vec2.splat(v) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return BVec2 +function U8Vec2.cmpeq(_self,rhs) end + +---@param _self U8Vec2 +---@return integer +function U8Vec2.length_squared(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return integer +function U8Vec2.dot(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.saturating_div(_self,rhs) end + +---@param _self U8Vec2 +---@return integer +function U8Vec2.max_element(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.saturating_mul(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.min(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.dot_into_vec(_self,rhs) end + +---@param p1 U8Vec2 +---@param p2 integer +---@return U8Vec2 +function U8Vec2.mul(p1,p2) end + +---@param _self U8Vec2 +---@return U64Vec2 +function U8Vec2.as_u64vec2(_self) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return BVec2 +function U8Vec2.cmpne(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.add(_self,rhs) end + +---@param _self U8Vec2 +---@param rhs U8Vec2 +---@return U8Vec2 +function U8Vec2.div(_self,rhs) end + + + +---@class U8Vec3 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@operator sub(U8Vec3): U8Vec3 +---@operator add(U8Vec3): U8Vec3 +---@operator add(integer): U8Vec3 +---@operator mul(U8Vec3): U8Vec3 +---@operator mod(U8Vec3): U8Vec3 +---@operator sub(integer): U8Vec3 +---@operator add(U8Vec3): U8Vec3 +---@operator div(U8Vec3): U8Vec3 +---@operator mod(integer): U8Vec3 +---@operator div(integer): U8Vec3 +---@operator mod(U8Vec3): U8Vec3 +---@operator mul(integer): U8Vec3 +---@operator mul(U8Vec3): U8Vec3 +---@operator div(U8Vec3): U8Vec3 +---@operator sub(U8Vec3): U8Vec3 +U8Vec3 = {} + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.sub(_self,rhs) end + +---@param _self U8Vec3 +---@return integer +function U8Vec3.element_sum(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.saturating_add(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return integer +function U8Vec3.dot(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return BVec3 +function U8Vec3.cmpgt(_self,rhs) end + +---@param _self U8Vec3 +---@return integer +function U8Vec3.min_element(_self) end + +---@param p1 U8Vec3 +---@param p2 U8Vec3 +---@return U8Vec3 +function U8Vec3.add(p1,p2) end + +---@param _self U8Vec3 +---@return U8Vec2 +function U8Vec3.truncate(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.min(_self,rhs) end + +---@param p1 U8Vec3 +---@param p2 integer +---@return U8Vec3 +function U8Vec3.add(p1,p2) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.cross(_self,rhs) end + +---@param _self U8Vec3 +---@return nil +function U8Vec3.assert_receiver_is_total_eq(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return integer +function U8Vec3.manhattan_distance(_self,rhs) end + +---@param _self U8Vec3 +---@return Vec3 +function U8Vec3.as_vec3(_self) end + +---@param _self U8Vec3 +---@return U64Vec3 +function U8Vec3.as_u64vec3(_self) end + +---@param _self U8Vec3 +---@param w integer +---@return U8Vec4 +function U8Vec3.extend(_self,w) end + +---@param _self U8Vec3 +---@return Vec3A +function U8Vec3.as_vec3a(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return integer | nil +function U8Vec3.checked_manhattan_distance(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs I8Vec3 +---@return U8Vec3 +function U8Vec3.wrapping_add_signed(_self,rhs) end + +---@param _self U8Vec3 +---@return integer[] +function U8Vec3.to_array(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.wrapping_div(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.mul(_self,rhs) end + +---@param _self U8Vec3 +---@return I64Vec3 +function U8Vec3.as_i64vec3(_self) end + +---@param _self U8Vec3 +---@return UVec3 +function U8Vec3.as_uvec3(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.rem(_self,rhs) end + +---@param p1 U8Vec3 +---@param p2 integer +---@return U8Vec3 +function U8Vec3.sub(p1,p2) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return BVec3 +function U8Vec3.cmpge(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.add(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.wrapping_add(_self,rhs) end + +---@param _self U8Vec3 +---@return integer +function U8Vec3.max_element(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.wrapping_sub(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.div(_self,rhs) end + +---@param v integer +---@return U8Vec3 +function U8Vec3.splat(v) end + +---@param _self U8Vec3 +---@param rhs I8Vec3 +---@return U8Vec3 +function U8Vec3.saturating_add_signed(_self,rhs) end + +---@param _self U8Vec3 +---@return DVec3 +function U8Vec3.as_dvec3(_self) end + +---@param _self U8Vec3 +---@return integer +function U8Vec3.max_position(_self) end + +---@param _self U8Vec3 +---@return integer +function U8Vec3.element_product(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.max(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.saturating_div(_self,rhs) end + +---@param mask BVec3 +---@param if_true U8Vec3 +---@param if_false U8Vec3 +---@return U8Vec3 +function U8Vec3.select(mask,if_true,if_false) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return BVec3 +function U8Vec3.cmpne(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return BVec3 +function U8Vec3.cmplt(_self,rhs) end + +---@param p1 U8Vec3 +---@param p2 integer +---@return U8Vec3 +function U8Vec3.rem(p1,p2) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.wrapping_mul(_self,rhs) end + +---@param _self U8Vec3 +---@return IVec3 +function U8Vec3.as_ivec3(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return BVec3 +function U8Vec3.cmple(_self,rhs) end + +---@param p1 U8Vec3 +---@param p2 integer +---@return U8Vec3 +function U8Vec3.div(p1,p2) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return BVec3 +function U8Vec3.cmpeq(_self,rhs) end + +---@param a integer[] +---@return U8Vec3 +function U8Vec3.from_array(a) end + +---@param _self U8Vec3 +---@return U16Vec3 +function U8Vec3.as_u16vec3(_self) end + +---@param _self U8Vec3 +---@return integer +function U8Vec3.length_squared(_self) end + +---@param p1 U8Vec3 +---@param p2 U8Vec3 +---@return U8Vec3 +function U8Vec3.rem(p1,p2) end + +---@param p1 U8Vec3 +---@param p2 integer +---@return U8Vec3 +function U8Vec3.mul(p1,p2) end + +---@param _self U8Vec3 +---@return I8Vec3 +function U8Vec3.as_i8vec3(_self) end + +---@param x integer +---@param y integer +---@param z integer +---@return U8Vec3 +function U8Vec3.new(x,y,z) end + +---@param p1 U8Vec3 +---@param p2 U8Vec3 +---@return U8Vec3 +function U8Vec3.mul(p1,p2) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.dot_into_vec(_self,rhs) end + +---@param _self U8Vec3 +---@param min U8Vec3 +---@param max U8Vec3 +---@return U8Vec3 +function U8Vec3.clamp(_self,min,max) end + +---@param _self U8Vec3 +---@param other U8Vec3 +---@return boolean +function U8Vec3.__eq(_self,other) end + +---@param _self U8Vec3 +---@param other U8Vec3 +---@return boolean +function U8Vec3.eq(_self,other) end + +---@param _self U8Vec3 +---@param z integer +---@return U8Vec3 +function U8Vec3.with_z(_self,z) end + +---@param _self U8Vec3 +---@return U8Vec3 +function U8Vec3.clone(_self) end + +---@param p1 U8Vec3 +---@param p2 U8Vec3 +---@return U8Vec3 +function U8Vec3.div(p1,p2) end + +---@param _self U8Vec3 +---@param x integer +---@return U8Vec3 +function U8Vec3.with_x(_self,x) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return integer +function U8Vec3.chebyshev_distance(_self,rhs) end + +---@param _self U8Vec3 +---@return integer +function U8Vec3.min_position(_self) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.saturating_sub(_self,rhs) end + +---@param _self U8Vec3 +---@param rhs U8Vec3 +---@return U8Vec3 +function U8Vec3.saturating_mul(_self,rhs) end + +---@param p1 U8Vec3 +---@param p2 U8Vec3 +---@return U8Vec3 +function U8Vec3.sub(p1,p2) end + +---@param _self U8Vec3 +---@param y integer +---@return U8Vec3 +function U8Vec3.with_y(_self,y) end + +---@param _self U8Vec3 +---@return I16Vec3 +function U8Vec3.as_i16vec3(_self) end + + + +---@class U8Vec4 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@field w ? integer +---@operator add(U8Vec4): U8Vec4 +---@operator mod(U8Vec4): U8Vec4 +---@operator div(U8Vec4): U8Vec4 +---@operator div(integer): U8Vec4 +---@operator mod(integer): U8Vec4 +---@operator sub(U8Vec4): U8Vec4 +---@operator div(U8Vec4): U8Vec4 +---@operator mul(U8Vec4): U8Vec4 +---@operator add(U8Vec4): U8Vec4 +---@operator sub(U8Vec4): U8Vec4 +---@operator mul(integer): U8Vec4 +---@operator sub(integer): U8Vec4 +---@operator add(integer): U8Vec4 +---@operator mul(U8Vec4): U8Vec4 +---@operator mod(U8Vec4): U8Vec4 +U8Vec4 = {} + +---@param _self U8Vec4 +---@return integer +function U8Vec4.max_element(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return BVec4 +function U8Vec4.cmpeq(_self,rhs) end + +---@param _self U8Vec4 +---@return integer +function U8Vec4.min_position(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return BVec4 +function U8Vec4.cmpge(_self,rhs) end + +---@param _self U8Vec4 +---@return U8Vec4 +function U8Vec4.clone(_self) end + +---@param _self U8Vec4 +---@param other U8Vec4 +---@return boolean +function U8Vec4.__eq(_self,other) end + +---@param _self U8Vec4 +---@param other U8Vec4 +---@return boolean +function U8Vec4.eq(_self,other) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return integer | nil +function U8Vec4.checked_manhattan_distance(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.wrapping_mul(_self,rhs) end + +---@param _self U8Vec4 +---@return I16Vec4 +function U8Vec4.as_i16vec4(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.max(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return BVec4 +function U8Vec4.cmplt(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.wrapping_add(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.add(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return BVec4 +function U8Vec4.cmple(_self,rhs) end + +---@param _self U8Vec4 +---@return nil +function U8Vec4.assert_receiver_is_total_eq(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return integer +function U8Vec4.manhattan_distance(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.wrapping_sub(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return BVec4 +function U8Vec4.cmpgt(_self,rhs) end + +---@param a integer[] +---@return U8Vec4 +function U8Vec4.from_array(a) end + +---@param _self U8Vec4 +---@return U64Vec4 +function U8Vec4.as_u64vec4(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.saturating_mul(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return BVec4 +function U8Vec4.cmpne(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.rem(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.saturating_div(_self,rhs) end + +---@param _self U8Vec4 +---@return I8Vec4 +function U8Vec4.as_i8vec4(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.div(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return integer +function U8Vec4.dot(_self,rhs) end + +---@param _self U8Vec4 +---@param min U8Vec4 +---@param max U8Vec4 +---@return U8Vec4 +function U8Vec4.clamp(_self,min,max) end + +---@param _self U8Vec4 +---@param rhs I8Vec4 +---@return U8Vec4 +function U8Vec4.wrapping_add_signed(_self,rhs) end + +---@param p1 U8Vec4 +---@param p2 integer +---@return U8Vec4 +function U8Vec4.div(p1,p2) end + +---@param p1 U8Vec4 +---@param p2 integer +---@return U8Vec4 +function U8Vec4.rem(p1,p2) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.sub(_self,rhs) end + +---@param _self U8Vec4 +---@return UVec4 +function U8Vec4.as_uvec4(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.dot_into_vec(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs I8Vec4 +---@return U8Vec4 +function U8Vec4.saturating_add_signed(_self,rhs) end + +---@param _self U8Vec4 +---@return DVec4 +function U8Vec4.as_dvec4(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.saturating_sub(_self,rhs) end + +---@param _self U8Vec4 +---@return Vec4 +function U8Vec4.as_vec4(_self) end + +---@param _self U8Vec4 +---@return integer +function U8Vec4.element_product(_self) end + +---@param _self U8Vec4 +---@param z integer +---@return U8Vec4 +function U8Vec4.with_z(_self,z) end + +---@param _self U8Vec4 +---@return U16Vec4 +function U8Vec4.as_u16vec4(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.saturating_add(_self,rhs) end + +---@param _self U8Vec4 +---@param w integer +---@return U8Vec4 +function U8Vec4.with_w(_self,w) end + +---@param x integer +---@param y integer +---@param z integer +---@param w integer +---@return U8Vec4 +function U8Vec4.new(x,y,z,w) end + +---@param mask BVec4 +---@param if_true U8Vec4 +---@param if_false U8Vec4 +---@return U8Vec4 +function U8Vec4.select(mask,if_true,if_false) end + +---@param _self U8Vec4 +---@return U8Vec3 +function U8Vec4.truncate(_self) end + +---@param v integer +---@return U8Vec4 +function U8Vec4.splat(v) end + +---@param p1 U8Vec4 +---@param p2 U8Vec4 +---@return U8Vec4 +function U8Vec4.div(p1,p2) end + +---@param _self U8Vec4 +---@param y integer +---@return U8Vec4 +function U8Vec4.with_y(_self,y) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.min(_self,rhs) end + +---@param p1 U8Vec4 +---@param p2 U8Vec4 +---@return U8Vec4 +function U8Vec4.mul(p1,p2) end + +---@param p1 U8Vec4 +---@param p2 U8Vec4 +---@return U8Vec4 +function U8Vec4.add(p1,p2) end + +---@param _self U8Vec4 +---@return IVec4 +function U8Vec4.as_ivec4(_self) end + +---@param _self U8Vec4 +---@return integer +function U8Vec4.element_sum(_self) end + +---@param p1 U8Vec4 +---@param p2 U8Vec4 +---@return U8Vec4 +function U8Vec4.sub(p1,p2) end + +---@param _self U8Vec4 +---@param x integer +---@return U8Vec4 +function U8Vec4.with_x(_self,x) end + +---@param _self U8Vec4 +---@return integer +function U8Vec4.min_element(_self) end + +---@param p1 U8Vec4 +---@param p2 integer +---@return U8Vec4 +function U8Vec4.mul(p1,p2) end + +---@param p1 U8Vec4 +---@param p2 integer +---@return U8Vec4 +function U8Vec4.sub(p1,p2) end + +---@param p1 U8Vec4 +---@param p2 integer +---@return U8Vec4 +function U8Vec4.add(p1,p2) end + +---@param _self U8Vec4 +---@return I64Vec4 +function U8Vec4.as_i64vec4(_self) end + +---@param _self U8Vec4 +---@return integer[] +function U8Vec4.to_array(_self) end + +---@param _self U8Vec4 +---@return integer +function U8Vec4.length_squared(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.mul(_self,rhs) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return U8Vec4 +function U8Vec4.wrapping_div(_self,rhs) end + +---@param _self U8Vec4 +---@return integer +function U8Vec4.max_position(_self) end + +---@param _self U8Vec4 +---@param rhs U8Vec4 +---@return integer +function U8Vec4.chebyshev_distance(_self,rhs) end + +---@param p1 U8Vec4 +---@param p2 U8Vec4 +---@return U8Vec4 +function U8Vec4.rem(p1,p2) end + + + +---@class UVec2 : ReflectReference +---@field x ? integer +---@field y ? integer +---@operator mod(UVec2): UVec2 +---@operator sub(integer): UVec2 +---@operator add(integer): UVec2 +---@operator mod(UVec2): UVec2 +---@operator sub(UVec2): UVec2 +---@operator add(UVec2): UVec2 +---@operator mod(integer): UVec2 +---@operator div(UVec2): UVec2 +---@operator mul(UVec2): UVec2 +---@operator div(UVec2): UVec2 +---@operator sub(UVec2): UVec2 +---@operator mul(integer): UVec2 +---@operator div(integer): UVec2 +---@operator add(UVec2): UVec2 +---@operator mul(UVec2): UVec2 +UVec2 = {} + +---@param _self UVec2 +---@param rhs IVec2 +---@return UVec2 +function UVec2.wrapping_add_signed(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return integer +function UVec2.manhattan_distance(_self,rhs) end + +---@param _self UVec2 +---@param y integer +---@return UVec2 +function UVec2.with_y(_self,y) end + +---@param _self UVec2 +---@return U64Vec2 +function UVec2.as_u64vec2(_self) end + +---@param _self UVec2 +---@return U16Vec2 +function UVec2.as_u16vec2(_self) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.max(_self,rhs) end + +---@param mask BVec2 +---@param if_true UVec2 +---@param if_false UVec2 +---@return UVec2 +function UVec2.select(mask,if_true,if_false) end + +---@param _self UVec2 +---@return integer[] +function UVec2.to_array(_self) end + +---@param _self UVec2 +---@return integer +function UVec2.element_sum(_self) end + +---@param _self UVec2 +---@param z integer +---@return UVec3 +function UVec2.extend(_self,z) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.wrapping_add(_self,rhs) end + +---@param _self UVec2 +---@return I16Vec2 +function UVec2.as_i16vec2(_self) end + +---@param _self UVec2 +---@param rhs IVec2 +---@return UVec2 +function UVec2.saturating_add_signed(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return BVec2 +function UVec2.cmplt(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.rem(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.wrapping_div(_self,rhs) end + +---@param p1 UVec2 +---@param p2 integer +---@return UVec2 +function UVec2.sub(p1,p2) end + +---@param _self UVec2 +---@return integer +function UVec2.min_position(_self) end + +---@param p1 UVec2 +---@param p2 integer +---@return UVec2 +function UVec2.add(p1,p2) end + +---@param _self UVec2 +---@return UVec2 +function UVec2.clone(_self) end + +---@param _self UVec2 +---@return I64Vec2 +function UVec2.as_i64vec2(_self) end + +---@param _self UVec2 +---@param x integer +---@return UVec2 +function UVec2.with_x(_self,x) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return BVec2 +function UVec2.cmpgt(_self,rhs) end + +---@param p1 UVec2 +---@param p2 UVec2 +---@return UVec2 +function UVec2.rem(p1,p2) end + +---@param _self UVec2 +---@return IVec2 +function UVec2.as_ivec2(_self) end + +---@param _self UVec2 +---@param min UVec2 +---@param max UVec2 +---@return UVec2 +function UVec2.clamp(_self,min,max) end + +---@param _self UVec2 +---@return integer +function UVec2.element_product(_self) end + +---@param p1 UVec2 +---@param p2 UVec2 +---@return UVec2 +function UVec2.sub(p1,p2) end + +---@param _self UVec2 +---@return U8Vec2 +function UVec2.as_u8vec2(_self) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.saturating_sub(_self,rhs) end + +---@param p1 UVec2 +---@param p2 UVec2 +---@return UVec2 +function UVec2.add(p1,p2) end + +---@param _self UVec2 +---@return integer +function UVec2.length_squared(_self) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.wrapping_mul(_self,rhs) end + +---@param _self UVec2 +---@param other UVec2 +---@return boolean +function UVec2.__eq(_self,other) end + +---@param _self UVec2 +---@param other UVec2 +---@return boolean +function UVec2.eq(_self,other) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return BVec2 +function UVec2.cmpne(_self,rhs) end + +---@param _self UVec2 +---@return I8Vec2 +function UVec2.as_i8vec2(_self) end + +---@param p1 UVec2 +---@param p2 integer +---@return UVec2 +function UVec2.rem(p1,p2) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.wrapping_sub(_self,rhs) end + +---@param v integer +---@return UVec2 +function UVec2.splat(v) end + +---@param _self UVec2 +---@return nil +function UVec2.assert_receiver_is_total_eq(_self) end + +---@param p1 UVec2 +---@param p2 UVec2 +---@return UVec2 +function UVec2.div(p1,p2) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.mul(_self,rhs) end + +---@param _self UVec2 +---@return Vec2 +function UVec2.as_vec2(_self) end + +---@param _self UVec2 +---@return integer +function UVec2.min_element(_self) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.div(_self,rhs) end + +---@param _self UVec2 +---@return integer +function UVec2.max_element(_self) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.saturating_add(_self,rhs) end + +---@param _self UVec2 +---@return DVec2 +function UVec2.as_dvec2(_self) end + +---@param x integer +---@param y integer +---@return UVec2 +function UVec2.new(x,y) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.sub(_self,rhs) end + +---@param p1 UVec2 +---@param p2 integer +---@return UVec2 +function UVec2.mul(p1,p2) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return integer +function UVec2.chebyshev_distance(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.saturating_mul(_self,rhs) end + +---@param p1 UVec2 +---@param p2 integer +---@return UVec2 +function UVec2.div(p1,p2) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.add(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return integer +function UVec2.dot(_self,rhs) end + +---@param a integer[] +---@return UVec2 +function UVec2.from_array(a) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return BVec2 +function UVec2.cmple(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.saturating_div(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return BVec2 +function UVec2.cmpeq(_self,rhs) end + +---@param _self UVec2 +---@return integer +function UVec2.max_position(_self) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return BVec2 +function UVec2.cmpge(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.min(_self,rhs) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return integer | nil +function UVec2.checked_manhattan_distance(_self,rhs) end + +---@param p1 UVec2 +---@param p2 UVec2 +---@return UVec2 +function UVec2.mul(p1,p2) end + +---@param _self UVec2 +---@param rhs UVec2 +---@return UVec2 +function UVec2.dot_into_vec(_self,rhs) end + + + +---@class UVec3 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@operator div(UVec3): UVec3 +---@operator mod(UVec3): UVec3 +---@operator sub(UVec3): UVec3 +---@operator div(integer): UVec3 +---@operator mod(UVec3): UVec3 +---@operator mul(integer): UVec3 +---@operator sub(integer): UVec3 +---@operator mod(integer): UVec3 +---@operator mul(UVec3): UVec3 +---@operator div(UVec3): UVec3 +---@operator add(UVec3): UVec3 +---@operator mul(UVec3): UVec3 +---@operator sub(UVec3): UVec3 +---@operator add(UVec3): UVec3 +---@operator add(integer): UVec3 +UVec3 = {} + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.div(_self,rhs) end + +---@param p1 UVec3 +---@param p2 UVec3 +---@return UVec3 +function UVec3.rem(p1,p2) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return integer +function UVec3.dot(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.sub(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return integer | nil +function UVec3.checked_manhattan_distance(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.cross(_self,rhs) end + +---@param _self UVec3 +---@return UVec3 +function UVec3.clone(_self) end + +---@param x integer +---@param y integer +---@param z integer +---@return UVec3 +function UVec3.new(x,y,z) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.saturating_add(_self,rhs) end + +---@param p1 UVec3 +---@param p2 integer +---@return UVec3 +function UVec3.div(p1,p2) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.saturating_sub(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.min(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return BVec3 +function UVec3.cmpgt(_self,rhs) end + +---@param _self UVec3 +---@return U16Vec3 +function UVec3.as_u16vec3(_self) end + +---@param _self UVec3 +---@return nil +function UVec3.assert_receiver_is_total_eq(_self) end + +---@param _self UVec3 +---@param w integer +---@return UVec4 +function UVec3.extend(_self,w) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.rem(_self,rhs) end + +---@param _self UVec3 +---@return integer[] +function UVec3.to_array(_self) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.saturating_div(_self,rhs) end + +---@param p1 UVec3 +---@param p2 integer +---@return UVec3 +function UVec3.mul(p1,p2) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.max(_self,rhs) end + +---@param p1 UVec3 +---@param p2 integer +---@return UVec3 +function UVec3.sub(p1,p2) end + +---@param _self UVec3 +---@return UVec2 +function UVec3.truncate(_self) end + +---@param _self UVec3 +---@return IVec3 +function UVec3.as_ivec3(_self) end + +---@param _self UVec3 +---@param min UVec3 +---@param max UVec3 +---@return UVec3 +function UVec3.clamp(_self,min,max) end + +---@param _self UVec3 +---@param y integer +---@return UVec3 +function UVec3.with_y(_self,y) end + +---@param _self UVec3 +---@return integer +function UVec3.length_squared(_self) end + +---@param p1 UVec3 +---@param p2 integer +---@return UVec3 +function UVec3.rem(p1,p2) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.dot_into_vec(_self,rhs) end + +---@param p1 UVec3 +---@param p2 UVec3 +---@return UVec3 +function UVec3.mul(p1,p2) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return integer +function UVec3.chebyshev_distance(_self,rhs) end + +---@param p1 UVec3 +---@param p2 UVec3 +---@return UVec3 +function UVec3.div(p1,p2) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return BVec3 +function UVec3.cmple(_self,rhs) end + +---@param _self UVec3 +---@return I16Vec3 +function UVec3.as_i16vec3(_self) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return BVec3 +function UVec3.cmpge(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.wrapping_add(_self,rhs) end + +---@param _self UVec3 +---@param z integer +---@return UVec3 +function UVec3.with_z(_self,z) end + +---@param _self UVec3 +---@return integer +function UVec3.element_sum(_self) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.wrapping_sub(_self,rhs) end + +---@param _self UVec3 +---@return integer +function UVec3.max_position(_self) end + +---@param v integer +---@return UVec3 +function UVec3.splat(v) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.wrapping_div(_self,rhs) end + +---@param _self UVec3 +---@return U8Vec3 +function UVec3.as_u8vec3(_self) end + +---@param a integer[] +---@return UVec3 +function UVec3.from_array(a) end + +---@param _self UVec3 +---@return I64Vec3 +function UVec3.as_i64vec3(_self) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.saturating_mul(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return integer +function UVec3.manhattan_distance(_self,rhs) end + +---@param _self UVec3 +---@param x integer +---@return UVec3 +function UVec3.with_x(_self,x) end + +---@param _self UVec3 +---@return integer +function UVec3.min_element(_self) end + +---@param _self UVec3 +---@param rhs IVec3 +---@return UVec3 +function UVec3.saturating_add_signed(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.add(_self,rhs) end + +---@param _self UVec3 +---@return DVec3 +function UVec3.as_dvec3(_self) end + +---@param _self UVec3 +---@return integer +function UVec3.element_product(_self) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.wrapping_mul(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return UVec3 +function UVec3.mul(_self,rhs) end + +---@param _self UVec3 +---@return Vec3A +function UVec3.as_vec3a(_self) end + +---@param _self UVec3 +---@return Vec3 +function UVec3.as_vec3(_self) end + +---@param _self UVec3 +---@param rhs IVec3 +---@return UVec3 +function UVec3.wrapping_add_signed(_self,rhs) end + +---@param p1 UVec3 +---@param p2 UVec3 +---@return UVec3 +function UVec3.sub(p1,p2) end + +---@param _self UVec3 +---@return integer +function UVec3.max_element(_self) end + +---@param mask BVec3 +---@param if_true UVec3 +---@param if_false UVec3 +---@return UVec3 +function UVec3.select(mask,if_true,if_false) end + +---@param _self UVec3 +---@param other UVec3 +---@return boolean +function UVec3.__eq(_self,other) end + +---@param _self UVec3 +---@param other UVec3 +---@return boolean +function UVec3.eq(_self,other) end + +---@param _self UVec3 +---@return U64Vec3 +function UVec3.as_u64vec3(_self) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return BVec3 +function UVec3.cmpne(_self,rhs) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return BVec3 +function UVec3.cmplt(_self,rhs) end + +---@param p1 UVec3 +---@param p2 UVec3 +---@return UVec3 +function UVec3.add(p1,p2) end + +---@param _self UVec3 +---@return integer +function UVec3.min_position(_self) end + +---@param p1 UVec3 +---@param p2 integer +---@return UVec3 +function UVec3.add(p1,p2) end + +---@param _self UVec3 +---@param rhs UVec3 +---@return BVec3 +function UVec3.cmpeq(_self,rhs) end + +---@param _self UVec3 +---@return I8Vec3 +function UVec3.as_i8vec3(_self) end + + + +---@class UVec4 : ReflectReference +---@field x ? integer +---@field y ? integer +---@field z ? integer +---@field w ? integer +---@operator mul(UVec4): UVec4 +---@operator add(UVec4): UVec4 +---@operator add(UVec4): UVec4 +---@operator div(UVec4): UVec4 +---@operator mod(UVec4): UVec4 +---@operator mod(UVec4): UVec4 +---@operator sub(UVec4): UVec4 +---@operator sub(integer): UVec4 +---@operator sub(UVec4): UVec4 +---@operator mul(integer): UVec4 +---@operator add(integer): UVec4 +---@operator div(UVec4): UVec4 +---@operator mod(integer): UVec4 +---@operator div(integer): UVec4 +---@operator mul(UVec4): UVec4 +UVec4 = {} + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.min(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.saturating_add(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.mul(_self,rhs) end + +---@param _self UVec4 +---@return IVec4 +function UVec4.as_ivec4(_self) end + +---@param _self UVec4 +---@return integer +function UVec4.min_element(_self) end + +---@param _self UVec4 +---@return integer +function UVec4.element_sum(_self) end + +---@param _self UVec4 +---@param z integer +---@return UVec4 +function UVec4.with_z(_self,z) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.wrapping_sub(_self,rhs) end + +---@param _self UVec4 +---@return UVec4 +function UVec4.clone(_self) end + +---@param p1 UVec4 +---@param p2 UVec4 +---@return UVec4 +function UVec4.add(p1,p2) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.add(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return integer +function UVec4.dot(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.saturating_sub(_self,rhs) end + +---@param _self UVec4 +---@return Vec4 +function UVec4.as_vec4(_self) end + +---@param _self UVec4 +---@param other UVec4 +---@return boolean +function UVec4.__eq(_self,other) end + +---@param _self UVec4 +---@param other UVec4 +---@return boolean +function UVec4.eq(_self,other) end + +---@param _self UVec4 +---@return U8Vec4 +function UVec4.as_u8vec4(_self) end + +---@param _self UVec4 +---@param rhs IVec4 +---@return UVec4 +function UVec4.wrapping_add_signed(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return BVec4 +function UVec4.cmpne(_self,rhs) end + +---@param _self UVec4 +---@param y integer +---@return UVec4 +function UVec4.with_y(_self,y) end + +---@param _self UVec4 +---@return I64Vec4 +function UVec4.as_i64vec4(_self) end + +---@param mask BVec4 +---@param if_true UVec4 +---@param if_false UVec4 +---@return UVec4 +function UVec4.select(mask,if_true,if_false) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.div(_self,rhs) end + +---@param v integer +---@return UVec4 +function UVec4.splat(v) end + +---@param a integer[] +---@return UVec4 +function UVec4.from_array(a) end + +---@param p1 UVec4 +---@param p2 UVec4 +---@return UVec4 +function UVec4.rem(p1,p2) end + +---@param _self UVec4 +---@return I8Vec4 +function UVec4.as_i8vec4(_self) end + +---@param _self UVec4 +---@return U64Vec4 +function UVec4.as_u64vec4(_self) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.rem(_self,rhs) end + +---@param _self UVec4 +---@return integer +function UVec4.element_product(_self) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.saturating_mul(_self,rhs) end + +---@param p1 UVec4 +---@param p2 UVec4 +---@return UVec4 +function UVec4.sub(p1,p2) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.max(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return BVec4 +function UVec4.cmpeq(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return BVec4 +function UVec4.cmple(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.saturating_div(_self,rhs) end + +---@param x integer +---@param y integer +---@param z integer +---@param w integer +---@return UVec4 +function UVec4.new(x,y,z,w) end + +---@param _self UVec4 +---@param rhs IVec4 +---@return UVec4 +function UVec4.saturating_add_signed(_self,rhs) end + +---@param p1 UVec4 +---@param p2 integer +---@return UVec4 +function UVec4.sub(p1,p2) end + +---@param _self UVec4 +---@return integer +function UVec4.length_squared(_self) end + +---@param _self UVec4 +---@return UVec3 +function UVec4.truncate(_self) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return BVec4 +function UVec4.cmpge(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.sub(_self,rhs) end + +---@param _self UVec4 +---@param w integer +---@return UVec4 +function UVec4.with_w(_self,w) end + +---@param _self UVec4 +---@return DVec4 +function UVec4.as_dvec4(_self) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return BVec4 +function UVec4.cmpgt(_self,rhs) end + +---@param p1 UVec4 +---@param p2 integer +---@return UVec4 +function UVec4.mul(p1,p2) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return integer +function UVec4.chebyshev_distance(_self,rhs) end + +---@param _self UVec4 +---@return integer +function UVec4.max_element(_self) end + +---@param p1 UVec4 +---@param p2 integer +---@return UVec4 +function UVec4.add(p1,p2) end + +---@param _self UVec4 +---@return U16Vec4 +function UVec4.as_u16vec4(_self) end + +---@param _self UVec4 +---@return I16Vec4 +function UVec4.as_i16vec4(_self) end + +---@param p1 UVec4 +---@param p2 UVec4 +---@return UVec4 +function UVec4.div(p1,p2) end + +---@param p1 UVec4 +---@param p2 integer +---@return UVec4 +function UVec4.rem(p1,p2) end + +---@param _self UVec4 +---@return integer +function UVec4.max_position(_self) end + +---@param _self UVec4 +---@return integer +function UVec4.min_position(_self) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.dot_into_vec(_self,rhs) end + +---@param p1 UVec4 +---@param p2 integer +---@return UVec4 +function UVec4.div(p1,p2) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return integer +function UVec4.manhattan_distance(_self,rhs) end + +---@param _self UVec4 +---@param min UVec4 +---@param max UVec4 +---@return UVec4 +function UVec4.clamp(_self,min,max) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.wrapping_add(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return integer | nil +function UVec4.checked_manhattan_distance(_self,rhs) end + +---@param _self UVec4 +---@return nil +function UVec4.assert_receiver_is_total_eq(_self) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return BVec4 +function UVec4.cmplt(_self,rhs) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.wrapping_div(_self,rhs) end + +---@param _self UVec4 +---@return integer[] +function UVec4.to_array(_self) end + +---@param _self UVec4 +---@param rhs UVec4 +---@return UVec4 +function UVec4.wrapping_mul(_self,rhs) end + +---@param p1 UVec4 +---@param p2 UVec4 +---@return UVec4 +function UVec4.mul(p1,p2) end + +---@param _self UVec4 +---@param x integer +---@return UVec4 +function UVec4.with_x(_self,x) end + + + +---@class Vec2 : ReflectReference +---@field x ? number +---@field y ? number +---@operator mod(Vec2): Vec2 +---@operator add(Vec2): Vec2 +---@operator sub(Vec2): Vec2 +---@operator mul(number): Vec2 +---@operator mul(Vec2): Vec2 +---@operator sub(number): Vec2 +---@operator mod(Vec2): Vec2 +---@operator sub(Vec2): Vec2 +---@operator add(number): Vec2 +---@operator mod(number): Vec2 +---@operator div(Vec2): Vec2 +---@operator div(Vec2): Vec2 +---@operator unm: Vec2 +---@operator mul(Vec2): Vec2 +---@operator div(number): Vec2 +---@operator add(Vec2): Vec2 +Vec2 = {} + +---@param _self Vec2 +---@return number +function Vec2.to_angle(_self) end + +---@param _self Vec2 +---@return number +function Vec2.length_recip(_self) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.round(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.project_onto_normalized(_self,rhs) end + +---@param _self Vec2 +---@return number +function Vec2.length(_self) end + +---@param p1 Vec2 +---@param p2 Vec2 +---@return Vec2 +function Vec2.rem(p1,p2) end + +---@param _self Vec2 +---@return number +function Vec2.element_sum(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.add(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.sub(_self,rhs) end + +---@param _self Vec2 +---@return number +function Vec2.length_squared(_self) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.fract_gl(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return BVec2 +function Vec2.cmpeq(_self,rhs) end + +---@param _self Vec2 +---@return U8Vec2 +function Vec2.as_u8vec2(_self) end + +---@param _self Vec2 +---@return number +function Vec2.max_element(_self) end + +---@param p1 Vec2 +---@param p2 number +---@return Vec2 +function Vec2.mul(p1,p2) end + +---@param _self Vec2 +---@return integer +function Vec2.min_position(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return number +function Vec2.distance_squared(_self,rhs) end + +---@param p1 Vec2 +---@param p2 Vec2 +---@return Vec2 +function Vec2.mul(p1,p2) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return number +function Vec2.perp_dot(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return BVec2 +function Vec2.cmplt(_self,rhs) end + +---@param _self Vec2 +---@return number +function Vec2.min_element(_self) end + +---@param p1 Vec2 +---@param p2 number +---@return Vec2 +function Vec2.sub(p1,p2) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.rotate(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return number +function Vec2.dot(_self,rhs) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.exp(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return number +function Vec2.distance(_self,rhs) end + +---@param _self Vec2 +---@return boolean +function Vec2.is_normalized(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.project_onto(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.rem_euclid(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.rem(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return BVec2 +function Vec2.cmple(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.dot_into_vec(_self,rhs) end + +---@param _self Vec2 +---@param normal Vec2 +---@param eta number +---@return Vec2 +function Vec2.refract(_self,normal,eta) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return number +function Vec2.angle_to(_self,rhs) end + +---@param a number[] +---@return Vec2 +function Vec2.from_array(a) end + +---@param _self Vec2 +---@return number[] +function Vec2.to_array(_self) end + +---@param mask BVec2 +---@param if_true Vec2 +---@param if_false Vec2 +---@return Vec2 +function Vec2.select(mask,if_true,if_false) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.ceil(_self) end + +---@param _self Vec2 +---@param a Vec2 +---@param b Vec2 +---@return Vec2 +function Vec2.mul_add(_self,a,b) end + +---@param p1 Vec2 +---@param p2 Vec2 +---@return Vec2 +function Vec2.sub(p1,p2) end + +---@param _self Vec2 +---@return U64Vec2 +function Vec2.as_u64vec2(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.copysign(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return BVec2 +function Vec2.cmpge(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.reject_from(_self,rhs) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.normalize_or_zero(_self) end + +---@param _self Vec2 +---@param min Vec2 +---@param max Vec2 +---@return Vec2 +function Vec2.clamp(_self,min,max) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.log2(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@param d number +---@return Vec2 +function Vec2.move_towards(_self,rhs,d) end + +---@param _self Vec2 +---@param normal Vec2 +---@return Vec2 +function Vec2.reflect(_self,normal) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.floor(_self) end + +---@param _self Vec2 +---@return U16Vec2 +function Vec2.as_u16vec2(_self) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.normalize(_self) end + +---@param _self Vec2 +---@param x number +---@return Vec2 +function Vec2.with_x(_self,x) end + +---@param x number +---@param y number +---@return Vec2 +function Vec2.new(x,y) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.reject_from_normalized(_self,rhs) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.recip(_self) end + +---@param _self Vec2 +---@return I8Vec2 +function Vec2.as_i8vec2(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return BVec2 +function Vec2.cmpgt(_self,rhs) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.trunc(_self) end + +---@param _self Vec2 +---@param fallback Vec2 +---@return Vec2 +function Vec2.normalize_or(_self,fallback) end + +---@param _self Vec2 +---@param rhs Vec2 +---@param max_angle number +---@return Vec2 +function Vec2.rotate_towards(_self,rhs,max_angle) end + +---@param _self Vec2 +---@return integer +function Vec2.is_negative_bitmask(_self) end + +---@param _self Vec2 +---@return DVec2 +function Vec2.as_dvec2(_self) end + +---@param _self Vec2 +---@return IVec2 +function Vec2.as_ivec2(_self) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.fract(_self) end + +---@param _self Vec2 +---@return I64Vec2 +function Vec2.as_i64vec2(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.min(_self,rhs) end + +---@param _self Vec2 +---@return UVec2 +function Vec2.as_uvec2(_self) end + +---@param _self Vec2 +---@return boolean +function Vec2.is_nan(_self) end + +---@param p1 Vec2 +---@param p2 number +---@return Vec2 +function Vec2.add(p1,p2) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.ln(_self) end + +---@param _self Vec2 +---@return number +function Vec2.element_product(_self) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.perp(_self) end + +---@param _self Vec2 +---@return integer +function Vec2.max_position(_self) end + +---@param _self Vec2 +---@return boolean +function Vec2.is_finite(_self) end + +---@param _self Vec2 +---@return I16Vec2 +function Vec2.as_i16vec2(_self) end + +---@param _self Vec2 +---@param other Vec2 +---@return boolean +function Vec2.__eq(_self,other) end + +---@param _self Vec2 +---@param other Vec2 +---@return boolean +function Vec2.eq(_self,other) end + +---@param _self Vec2 +---@param min number +---@return Vec2 +function Vec2.clamp_length_min(_self,min) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return BVec2 +function Vec2.cmpne(_self,rhs) end + +---@param p1 Vec2 +---@param p2 number +---@return Vec2 +function Vec2.rem(p1,p2) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.div(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return number +function Vec2.angle_between(_self,rhs) end + +---@param p1 Vec2 +---@param p2 Vec2 +---@return Vec2 +function Vec2.div(p1,p2) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.neg(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@param s number +---@return Vec2 +function Vec2.lerp(_self,rhs,s) end + +---@param _self Vec2 +---@param max number +---@return Vec2 +function Vec2.clamp_length_max(_self,max) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.div_euclid(_self,rhs) end + +---@param angle number +---@return Vec2 +function Vec2.from_angle(angle) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.exp2(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.midpoint(_self,rhs) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.mul(_self,rhs) end + +---@param _self Vec2 +---@return BVec2 +function Vec2.is_finite_mask(_self) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.signum(_self) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.abs(_self) end + +---@param _self Vec2 +---@return BVec2 +function Vec2.is_nan_mask(_self) end + +---@param _self Vec2 +---@param y number +---@return Vec2 +function Vec2.with_y(_self,y) end + +---@param _self Vec2 +---@return Vec2 +function Vec2.clone(_self) end + +---@param _self Vec2 +---@param rhs Vec2 +---@param max_abs_diff number +---@return boolean +function Vec2.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self Vec2 +---@param rhs Vec2 +---@return Vec2 +function Vec2.max(_self,rhs) end + +---@param p1 Vec2 +---@param p2 number +---@return Vec2 +function Vec2.div(p1,p2) end + +---@param _self Vec2 +---@param n number +---@return Vec2 +function Vec2.powf(_self,n) end + +---@param _self Vec2 +---@param z number +---@return Vec3 +function Vec2.extend(_self,z) end + +---@param p1 Vec2 +---@param p2 Vec2 +---@return Vec2 +function Vec2.add(p1,p2) end + +---@param v number +---@return Vec2 +function Vec2.splat(v) end + +---@param _self Vec2 +---@param min number +---@param max number +---@return Vec2 +function Vec2.clamp_length(_self,min,max) end + + + +---@class Vec3 : ReflectReference +---@field x ? number +---@field y ? number +---@field z ? number +---@operator mul(number): Vec3 +---@operator mod(Vec3): Vec3 +---@operator sub(Vec3): Vec3 +---@operator add(number): Vec3 +---@operator add(Vec3): Vec3 +---@operator sub(number): Vec3 +---@operator sub(Vec3): Vec3 +---@operator unm: Vec3 +---@operator mod(number): Vec3 +---@operator div(number): Vec3 +---@operator div(Vec3): Vec3 +---@operator mul(Vec3): Vec3 +---@operator mul(Vec3): Vec3 +---@operator mod(Vec3): Vec3 +---@operator add(Vec3): Vec3 +---@operator div(Vec3): Vec3 +Vec3 = {} + +---@param p1 Vec3 +---@param p2 number +---@return Vec3 +function Vec3.mul(p1,p2) end + +---@param _self Vec3 +---@param w number +---@return Vec4 +function Vec3.extend(_self,w) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.cross(_self,rhs) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.round(_self) end + +---@param v Vec4 +---@return Vec3 +function Vec3.from_homogeneous(v) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.reject_from_normalized(_self,rhs) end + +---@param _self Vec3 +---@return boolean +function Vec3.is_finite(_self) end + +---@param p1 Vec3 +---@param p2 Vec3 +---@return Vec3 +function Vec3.rem(p1,p2) end + +---@param _self Vec3 +---@param angle number +---@return Vec3 +function Vec3.rotate_x(_self,angle) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.sub(_self,rhs) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.any_orthonormal_vector(_self) end + +---@param _self Vec3 +---@return number +function Vec3.max_element(_self) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.ln(_self) end + +---@param _self Vec3 +---@return I16Vec3 +function Vec3.as_i16vec3(_self) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.normalize(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return BVec3 +function Vec3.cmpeq(_self,rhs) end + +---@param _self Vec3 +---@param min number +---@param max number +---@return Vec3 +function Vec3.clamp_length(_self,min,max) end + +---@param _self Vec3 +---@return I64Vec3 +function Vec3.as_i64vec3(_self) end + +---@param _self Vec3 +---@return number +function Vec3.element_product(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return BVec3 +function Vec3.cmpge(_self,rhs) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.floor(_self) end + +---@param _self Vec3 +---@return number +function Vec3.element_sum(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@param max_abs_diff number +---@return boolean +function Vec3.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return number +function Vec3.angle_between(_self,rhs) end + +---@param a number[] +---@return Vec3 +function Vec3.from_array(a) end + +---@param _self Vec3 +---@return Vec3A +function Vec3.to_vec3a(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@param d number +---@return Vec3 +function Vec3.move_towards(_self,rhs,d) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return BVec3 +function Vec3.cmple(_self,rhs) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.any_orthogonal_vector(_self) end + +---@param _self Vec3 +---@return number +function Vec3.length(_self) end + +---@param _self Vec3 +---@param min Vec3 +---@param max Vec3 +---@return Vec3 +function Vec3.clamp(_self,min,max) end + +---@param _self Vec3 +---@return boolean +function Vec3.is_normalized(_self) end + +---@param _self Vec3 +---@return integer +function Vec3.max_position(_self) end + +---@param _self Vec3 +---@return U16Vec3 +function Vec3.as_u16vec3(_self) end + +---@param _self Vec3 +---@param fallback Vec3 +---@return Vec3 +function Vec3.normalize_or(_self,fallback) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.signum(_self) end + +---@param _self Vec3 +---@return number +function Vec3.length_squared(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.midpoint(_self,rhs) end + +---@param _self Vec3 +---@return BVec3 +function Vec3.is_nan_mask(_self) end + +---@param _self Vec3 +---@return number[] +function Vec3.to_array(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.copysign(_self,rhs) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.project_onto_normalized(_self,rhs) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return number +function Vec3.distance(_self,rhs) end + +---@param p1 Vec3 +---@param p2 number +---@return Vec3 +function Vec3.add(p1,p2) end + +---@param _self Vec3 +---@return integer +function Vec3.is_negative_bitmask(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.rem_euclid(_self,rhs) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.fract_gl(_self) end + +---@param p1 Vec3 +---@param p2 Vec3 +---@return Vec3 +function Vec3.add(p1,p2) end + +---@param p1 Vec3 +---@param p2 number +---@return Vec3 +function Vec3.sub(p1,p2) end + +---@param _self Vec3 +---@param rhs Vec3 +---@param max_angle number +---@return Vec3 +function Vec3.rotate_towards(_self,rhs,max_angle) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.reject_from(_self,rhs) end + +---@param _self Vec3 +---@return Vec2 +function Vec3.truncate(_self) end + +---@param _self Vec3 +---@param z number +---@return Vec3 +function Vec3.with_z(_self,z) end + +---@param v number +---@return Vec3 +function Vec3.splat(v) end + +---@param _self Vec3 +---@return U64Vec3 +function Vec3.as_u64vec3(_self) end + +---@param p1 Vec3 +---@param p2 Vec3 +---@return Vec3 +function Vec3.sub(p1,p2) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return BVec3 +function Vec3.cmplt(_self,rhs) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.neg(_self) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.trunc(_self) end + +---@param _self Vec3 +---@param angle number +---@return Vec3 +function Vec3.rotate_z(_self,angle) end + +---@param _self Vec3 +---@param max number +---@return Vec3 +function Vec3.clamp_length_max(_self,max) end + +---@param mask BVec3 +---@param if_true Vec3 +---@param if_false Vec3 +---@return Vec3 +function Vec3.select(mask,if_true,if_false) end + +---@param _self Vec3 +---@param rhs Vec3 +---@param s number +---@return Vec3 +function Vec3.lerp(_self,rhs,s) end + +---@param p1 Vec3 +---@param p2 number +---@return Vec3 +function Vec3.rem(p1,p2) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.normalize_or_zero(_self) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.exp2(_self) end + +---@param _self Vec3 +---@param n number +---@return Vec3 +function Vec3.powf(_self,n) end + +---@param p1 Vec3 +---@param p2 number +---@return Vec3 +function Vec3.div(p1,p2) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.min(_self,rhs) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.div(_self,rhs) end + +---@param _self Vec3 +---@return number +function Vec3.length_recip(_self) end + +---@param _self Vec3 +---@param other Vec3 +---@return boolean +function Vec3.__eq(_self,other) end + +---@param _self Vec3 +---@param other Vec3 +---@return boolean +function Vec3.eq(_self,other) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.mul(_self,rhs) end + +---@param _self Vec3 +---@return IVec3 +function Vec3.as_ivec3(_self) end + +---@param _self Vec3 +---@return number +function Vec3.min_element(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return BVec3 +function Vec3.cmpne(_self,rhs) end + +---@param _self Vec3 +---@param min number +---@return Vec3 +function Vec3.clamp_length_min(_self,min) end + +---@param p1 Vec3 +---@param p2 Vec3 +---@return Vec3 +function Vec3.mul(p1,p2) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.rem(_self,rhs) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return number +function Vec3.distance_squared(_self,rhs) end + +---@param _self Vec3 +---@return integer +function Vec3.min_position(_self) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.ceil(_self) end + +---@param _self Vec3 +---@param normal Vec3 +---@return Vec3 +function Vec3.reflect(_self,normal) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return BVec3 +function Vec3.cmpgt(_self,rhs) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return number +function Vec3.dot(_self,rhs) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.abs(_self) end + +---@param _self Vec3 +---@return DVec3 +function Vec3.as_dvec3(_self) end + +---@param _self Vec3 +---@param normal Vec3 +---@param eta number +---@return Vec3 +function Vec3.refract(_self,normal,eta) end + +---@param _self Vec3 +---@return Vec4 +function Vec3.to_homogeneous(_self) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.log2(_self) end + +---@param _self Vec3 +---@return boolean +function Vec3.is_nan(_self) end + +---@param _self Vec3 +---@return BVec3 +function Vec3.is_finite_mask(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.add(_self,rhs) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.recip(_self) end + +---@param _self Vec3 +---@return U8Vec3 +function Vec3.as_u8vec3(_self) end + +---@param x number +---@param y number +---@param z number +---@return Vec3 +function Vec3.new(x,y,z) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.dot_into_vec(_self,rhs) end + +---@param _self Vec3 +---@return UVec3 +function Vec3.as_uvec3(_self) end + +---@param p1 Vec3 +---@param p2 Vec3 +---@return Vec3 +function Vec3.div(p1,p2) end + +---@param _self Vec3 +---@param angle number +---@return Vec3 +function Vec3.rotate_y(_self,angle) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.clone(_self) end + +---@param _self Vec3 +---@param x number +---@return Vec3 +function Vec3.with_x(_self,x) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.fract(_self) end + +---@param _self Vec3 +---@return Vec3 +function Vec3.exp(_self) end + +---@param _self Vec3 +---@param axis Vec3 +---@param angle number +---@return Vec3 +function Vec3.rotate_axis(_self,axis,angle) end + +---@param _self Vec3 +---@return I8Vec3 +function Vec3.as_i8vec3(_self) end + +---@param _self Vec3 +---@param rhs Vec3 +---@param s number +---@return Vec3 +function Vec3.slerp(_self,rhs,s) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.project_onto(_self,rhs) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.div_euclid(_self,rhs) end + +---@param _self Vec3 +---@param rhs Vec3 +---@return Vec3 +function Vec3.max(_self,rhs) end + +---@param _self Vec3 +---@param a Vec3 +---@param b Vec3 +---@return Vec3 +function Vec3.mul_add(_self,a,b) end + +---@param _self Vec3 +---@param y number +---@return Vec3 +function Vec3.with_y(_self,y) end + + + +---@class Vec3A : ReflectReference +---@field x ? number +---@field y ? number +---@field z ? number +---@operator add(Vec3A): Vec3A +---@operator sub(Vec3A): Vec3A +---@operator add(Vec3A): Vec3A +---@operator div(number): Vec3A +---@operator add(number): Vec3A +---@operator mul(Vec3A): Vec3A +---@operator sub(number): Vec3A +---@operator unm: Vec3A +---@operator mul(number): Vec3A +---@operator sub(Vec3A): Vec3A +---@operator mod(number): Vec3A +---@operator div(Vec3A): Vec3A +---@operator mod(Vec3A): Vec3A +---@operator mod(Vec3A): Vec3A +---@operator div(Vec3A): Vec3A +---@operator mul(Vec3A): Vec3A +Vec3A = {} + +---@param _self Vec3A +---@return Vec3 +function Vec3A.to_vec3(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.add(_self,rhs) end + +---@param p1 Vec3A +---@param p2 Vec3A +---@return Vec3A +function Vec3A.sub(p1,p2) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.round(_self) end + +---@param v Vec4 +---@return Vec3A +function Vec3A.from_homogeneous(v) end + +---@param _self Vec3A +---@return number +function Vec3A.element_product(_self) end + +---@param _self Vec3A +---@return number +function Vec3A.length(_self) end + +---@param _self Vec3A +---@return BVec3A +function Vec3A.is_nan_mask(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.dot_into_vec(_self,rhs) end + +---@param _self Vec3A +---@param fallback Vec3A +---@return Vec3A +function Vec3A.normalize_or(_self,fallback) end + +---@param _self Vec3A +---@param min Vec3A +---@param max Vec3A +---@return Vec3A +function Vec3A.clamp(_self,min,max) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.midpoint(_self,rhs) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return BVec3A +function Vec3A.cmpgt(_self,rhs) end + +---@param p1 Vec3A +---@param p2 Vec3A +---@return Vec3A +function Vec3A.add(p1,p2) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.floor(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.fract(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.reject_from(_self,rhs) end + +---@param _self Vec3A +---@return UVec3 +function Vec3A.as_uvec3(_self) end + +---@param _self Vec3A +---@return I64Vec3 +function Vec3A.as_i64vec3(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return BVec3A +function Vec3A.cmple(_self,rhs) end + +---@param p1 Vec3A +---@param p2 number +---@return Vec3A +function Vec3A.div(p1,p2) end + +---@param _self Vec3A +---@param normal Vec3A +---@param eta number +---@return Vec3A +function Vec3A.refract(_self,normal,eta) end + +---@param _self Vec3A +---@param axis Vec3A +---@param angle number +---@return Vec3A +function Vec3A.rotate_axis(_self,axis,angle) end + +---@param _self Vec3A +---@param z number +---@return Vec3A +function Vec3A.with_z(_self,z) end + +---@param x number +---@param y number +---@param z number +---@return Vec3A +function Vec3A.new(x,y,z) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return number +function Vec3A.distance(_self,rhs) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return number +function Vec3A.angle_between(_self,rhs) end + +---@param _self Vec3A +---@return boolean +function Vec3A.is_nan(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return boolean +function Vec3A.__eq(_self,rhs) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return boolean +function Vec3A.eq(_self,rhs) end + +---@param _self Vec3A +---@return I16Vec3 +function Vec3A.as_i16vec3(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@param s number +---@return Vec3A +function Vec3A.lerp(_self,rhs,s) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return BVec3A +function Vec3A.cmpge(_self,rhs) end + +---@param _self Vec3A +---@return DVec3 +function Vec3A.as_dvec3(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.exp2(_self) end + +---@param a number[] +---@return Vec3A +function Vec3A.from_array(a) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.exp(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.project_onto_normalized(_self,rhs) end + +---@param _self Vec3A +---@param rhs Vec3A +---@param d number +---@return Vec3A +function Vec3A.move_towards(_self,rhs,d) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return BVec3A +function Vec3A.cmpeq(_self,rhs) end + +---@param _self Vec3A +---@param x number +---@return Vec3A +function Vec3A.with_x(_self,x) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.log2(_self) end + +---@param _self Vec3A +---@return number +function Vec3A.element_sum(_self) end + +---@param _self Vec3A +---@return BVec3A +function Vec3A.is_finite_mask(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.signum(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.ln(_self) end + +---@param p1 Vec3A +---@param p2 number +---@return Vec3A +function Vec3A.add(p1,p2) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.div_euclid(_self,rhs) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.any_orthogonal_vector(_self) end + +---@param _self Vec3A +---@param max number +---@return Vec3A +function Vec3A.clamp_length_max(_self,max) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.reject_from_normalized(_self,rhs) end + +---@param _self Vec3A +---@return integer +function Vec3A.min_position(_self) end + +---@param _self Vec3A +---@return IVec3 +function Vec3A.as_ivec3(_self) end + +---@param _self Vec3A +---@return number +function Vec3A.max_element(_self) end + +---@param _self Vec3A +---@param y number +---@return Vec3A +function Vec3A.with_y(_self,y) end + +---@param _self Vec3A +---@return U8Vec3 +function Vec3A.as_u8vec3(_self) end + +---@param _self Vec3A +---@param n number +---@return Vec3A +function Vec3A.powf(_self,n) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.mul(_self,rhs) end + +---@param p1 Vec3A +---@param p2 number +---@return Vec3A +function Vec3A.sub(p1,p2) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return number +function Vec3A.distance_squared(_self,rhs) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.trunc(_self) end + +---@param _self Vec3A +---@return U16Vec3 +function Vec3A.as_u16vec3(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@param s number +---@return Vec3A +function Vec3A.slerp(_self,rhs,s) end + +---@param _self Vec3A +---@param rhs Vec3A +---@param max_angle number +---@return Vec3A +function Vec3A.rotate_towards(_self,rhs,max_angle) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return number +function Vec3A.dot(_self,rhs) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.neg(_self) end + +---@param _self Vec3A +---@return integer +function Vec3A.is_negative_bitmask(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.ceil(_self) end + +---@param v Vec4 +---@return Vec3A +function Vec3A.from_vec4(v) end + +---@param _self Vec3A +---@param angle number +---@return Vec3A +function Vec3A.rotate_z(_self,angle) end + +---@param _self Vec3A +---@return number +function Vec3A.length_recip(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.copysign(_self,rhs) end + +---@param _self Vec3A +---@return U64Vec3 +function Vec3A.as_u64vec3(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.normalize(_self) end + +---@param _self Vec3A +---@return integer +function Vec3A.max_position(_self) end + +---@param _self Vec3A +---@return number[] +function Vec3A.to_array(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return BVec3A +function Vec3A.cmpne(_self,rhs) end + +---@param p1 Vec3A +---@param p2 number +---@return Vec3A +function Vec3A.mul(p1,p2) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.min(_self,rhs) end + +---@param _self Vec3A +---@return number +function Vec3A.min_element(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.any_orthonormal_vector(_self) end + +---@param _self Vec3A +---@return number +function Vec3A.length_squared(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.sub(_self,rhs) end + +---@param p1 Vec3A +---@param p2 number +---@return Vec3A +function Vec3A.rem(p1,p2) end + +---@param p1 Vec3A +---@param p2 Vec3A +---@return Vec3A +function Vec3A.div(p1,p2) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.abs(_self) end + +---@param _self Vec3A +---@return Vec4 +function Vec3A.to_homogeneous(_self) end + +---@param _self Vec3A +---@return I8Vec3 +function Vec3A.as_i8vec3(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.clone(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@param max_abs_diff number +---@return boolean +function Vec3A.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.cross(_self,rhs) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.max(_self,rhs) end + +---@param mask BVec3A +---@param if_true Vec3A +---@param if_false Vec3A +---@return Vec3A +function Vec3A.select(mask,if_true,if_false) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.rem(_self,rhs) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.recip(_self) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.rem_euclid(_self,rhs) end + +---@param p1 Vec3A +---@param p2 Vec3A +---@return Vec3A +function Vec3A.rem(p1,p2) end + +---@param _self Vec3A +---@param w number +---@return Vec4 +function Vec3A.extend(_self,w) end + +---@param _self Vec3A +---@return boolean +function Vec3A.is_normalized(_self) end + +---@param _self Vec3A +---@param min number +---@return Vec3A +function Vec3A.clamp_length_min(_self,min) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.project_onto(_self,rhs) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return BVec3A +function Vec3A.cmplt(_self,rhs) end + +---@param _self Vec3A +---@param angle number +---@return Vec3A +function Vec3A.rotate_x(_self,angle) end + +---@param _self Vec3A +---@param angle number +---@return Vec3A +function Vec3A.rotate_y(_self,angle) end + +---@param _self Vec3A +---@param rhs Vec3A +---@return Vec3A +function Vec3A.div(_self,rhs) end + +---@param _self Vec3A +---@return boolean +function Vec3A.is_finite(_self) end + +---@param p1 Vec3A +---@param p2 Vec3A +---@return Vec3A +function Vec3A.mul(p1,p2) end + +---@param _self Vec3A +---@param min number +---@param max number +---@return Vec3A +function Vec3A.clamp_length(_self,min,max) end + +---@param v number +---@return Vec3A +function Vec3A.splat(v) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.normalize_or_zero(_self) end + +---@param _self Vec3A +---@return Vec3A +function Vec3A.fract_gl(_self) end + +---@param _self Vec3A +---@param a Vec3A +---@param b Vec3A +---@return Vec3A +function Vec3A.mul_add(_self,a,b) end + +---@param _self Vec3A +---@return Vec2 +function Vec3A.truncate(_self) end + +---@param _self Vec3A +---@param normal Vec3A +---@return Vec3A +function Vec3A.reflect(_self,normal) end + + + +---@class Vec4 : ReflectReference +---@field x ? number +---@field y ? number +---@field z ? number +---@field w ? number +---@operator add(Vec4): Vec4 +---@operator mod(Vec4): Vec4 +---@operator mul(Vec4): Vec4 +---@operator unm: Vec4 +---@operator mod(Vec4): Vec4 +---@operator sub(number): Vec4 +---@operator add(Vec4): Vec4 +---@operator mul(Vec4): Vec4 +---@operator div(Vec4): Vec4 +---@operator div(number): Vec4 +---@operator div(Vec4): Vec4 +---@operator sub(Vec4): Vec4 +---@operator add(number): Vec4 +---@operator mul(number): Vec4 +---@operator sub(Vec4): Vec4 +---@operator mod(number): Vec4 +Vec4 = {} + +---@param _self Vec4 +---@param rhs Vec4 +---@param max_abs_diff number +---@return boolean +function Vec4.abs_diff_eq(_self,rhs,max_abs_diff) end + +---@param _self Vec4 +---@return BVec4A +function Vec4.is_nan_mask(_self) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.fract(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.max(_self,rhs) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.ceil(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return BVec4A +function Vec4.cmpgt(_self,rhs) end + +---@param _self Vec4 +---@return DVec4 +function Vec4.as_dvec4(_self) end + +---@param _self Vec4 +---@return number +function Vec4.min_element(_self) end + +---@param _self Vec4 +---@param w number +---@return Vec4 +function Vec4.with_w(_self,w) end + +---@param _self Vec4 +---@return number +function Vec4.length_recip(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.project_onto(_self,rhs) end + +---@param p1 Vec4 +---@param p2 Vec4 +---@return Vec4 +function Vec4.add(p1,p2) end + +---@param _self Vec4 +---@return I16Vec4 +function Vec4.as_i16vec4(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@param s number +---@return Vec4 +function Vec4.lerp(_self,rhs,s) end + +---@param _self Vec4 +---@param normal Vec4 +---@param eta number +---@return Vec4 +function Vec4.refract(_self,normal,eta) end + +---@param p1 Vec4 +---@param p2 Vec4 +---@return Vec4 +function Vec4.rem(p1,p2) end + +---@param _self Vec4 +---@return number[] +function Vec4.to_array(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.mul(_self,rhs) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.exp(_self) end + +---@param _self Vec4 +---@param n number +---@return Vec4 +function Vec4.powf(_self,n) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.rem_euclid(_self,rhs) end + +---@param _self Vec4 +---@return number +function Vec4.element_product(_self) end + +---@param _self Vec4 +---@return UVec4 +function Vec4.as_uvec4(_self) end + +---@param _self Vec4 +---@return boolean +function Vec4.is_nan(_self) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.neg(_self) end + +---@param _self Vec4 +---@return Vec3 +function Vec4.project(_self) end + +---@param mask BVec4A +---@param if_true Vec4 +---@param if_false Vec4 +---@return Vec4 +function Vec4.select(mask,if_true,if_false) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.copysign(_self,rhs) end + +---@param _self Vec4 +---@return I8Vec4 +function Vec4.as_i8vec4(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.project_onto_normalized(_self,rhs) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.reject_from(_self,rhs) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return number +function Vec4.distance(_self,rhs) end + +---@param a number[] +---@return Vec4 +function Vec4.from_array(a) end + +---@param _self Vec4 +---@param a Vec4 +---@param b Vec4 +---@return Vec4 +function Vec4.mul_add(_self,a,b) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return BVec4A +function Vec4.cmpeq(_self,rhs) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return BVec4A +function Vec4.cmpne(_self,rhs) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.reject_from_normalized(_self,rhs) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.exp2(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.rem(_self,rhs) end + +---@param _self Vec4 +---@return I64Vec4 +function Vec4.as_i64vec4(_self) end + +---@param p1 Vec4 +---@param p2 number +---@return Vec4 +function Vec4.sub(p1,p2) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return boolean +function Vec4.__eq(_self,rhs) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return boolean +function Vec4.eq(_self,rhs) end + +---@param _self Vec4 +---@param normal Vec4 +---@return Vec4 +function Vec4.reflect(_self,normal) end + +---@param _self Vec4 +---@return U16Vec4 +function Vec4.as_u16vec4(_self) end + +---@param _self Vec4 +---@param fallback Vec4 +---@return Vec4 +function Vec4.normalize_or(_self,fallback) end + +---@param _self Vec4 +---@return BVec4A +function Vec4.is_finite_mask(_self) end + +---@param _self Vec4 +---@return boolean +function Vec4.is_finite(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.add(_self,rhs) end + +---@param _self Vec4 +---@return integer +function Vec4.max_position(_self) end + +---@param _self Vec4 +---@param max number +---@return Vec4 +function Vec4.clamp_length_max(_self,max) end + +---@param v number +---@return Vec4 +function Vec4.splat(v) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.signum(_self) end + +---@param _self Vec4 +---@return U64Vec4 +function Vec4.as_u64vec4(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.div_euclid(_self,rhs) end + +---@param p1 Vec4 +---@param p2 Vec4 +---@return Vec4 +function Vec4.mul(p1,p2) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.div(_self,rhs) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return number +function Vec4.distance_squared(_self,rhs) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.log2(_self) end + +---@param _self Vec4 +---@return U8Vec4 +function Vec4.as_u8vec4(_self) end + +---@param _self Vec4 +---@param min number +---@return Vec4 +function Vec4.clamp_length_min(_self,min) end + +---@param _self Vec4 +---@return IVec4 +function Vec4.as_ivec4(_self) end + +---@param _self Vec4 +---@return number +function Vec4.max_element(_self) end + +---@param _self Vec4 +---@param min Vec4 +---@param max Vec4 +---@return Vec4 +function Vec4.clamp(_self,min,max) end + +---@param _self Vec4 +---@return number +function Vec4.length_squared(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.midpoint(_self,rhs) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.trunc(_self) end + +---@param _self Vec4 +---@return Vec3 +function Vec4.truncate(_self) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return BVec4A +function Vec4.cmple(_self,rhs) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return number +function Vec4.dot(_self,rhs) end + +---@param _self Vec4 +---@param min number +---@param max number +---@return Vec4 +function Vec4.clamp_length(_self,min,max) end + +---@param x number +---@param y number +---@param z number +---@param w number +---@return Vec4 +function Vec4.new(x,y,z,w) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.min(_self,rhs) end + +---@param p1 Vec4 +---@param p2 number +---@return Vec4 +function Vec4.div(p1,p2) end + +---@param _self Vec4 +---@param rhs Vec4 +---@param d number +---@return Vec4 +function Vec4.move_towards(_self,rhs,d) end + +---@param p1 Vec4 +---@param p2 Vec4 +---@return Vec4 +function Vec4.div(p1,p2) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.sub(_self,rhs) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.round(_self) end + +---@param _self Vec4 +---@return number +function Vec4.element_sum(_self) end + +---@param _self Vec4 +---@return boolean +function Vec4.is_normalized(_self) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.recip(_self) end + +---@param _self Vec4 +---@return number +function Vec4.length(_self) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.floor(_self) end + +---@param p1 Vec4 +---@param p2 number +---@return Vec4 +function Vec4.add(p1,p2) end + +---@param _self Vec4 +---@return integer +function Vec4.is_negative_bitmask(_self) end + +---@param _self Vec4 +---@return integer +function Vec4.min_position(_self) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.normalize_or_zero(_self) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.fract_gl(_self) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.abs(_self) end + +---@param _self Vec4 +---@param y number +---@return Vec4 +function Vec4.with_y(_self,y) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return Vec4 +function Vec4.dot_into_vec(_self,rhs) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return BVec4A +function Vec4.cmpge(_self,rhs) end + +---@param p1 Vec4 +---@param p2 number +---@return Vec4 +function Vec4.mul(p1,p2) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.normalize(_self) end + +---@param _self Vec4 +---@param z number +---@return Vec4 +function Vec4.with_z(_self,z) end + +---@param _self Vec4 +---@param rhs Vec4 +---@return BVec4A +function Vec4.cmplt(_self,rhs) end + +---@param p1 Vec4 +---@param p2 Vec4 +---@return Vec4 +function Vec4.sub(p1,p2) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.ln(_self) end + +---@param p1 Vec4 +---@param p2 number +---@return Vec4 +function Vec4.rem(p1,p2) end + +---@param _self Vec4 +---@param x number +---@return Vec4 +function Vec4.with_x(_self,x) end + +---@param _self Vec4 +---@return Vec4 +function Vec4.clone(_self) end + + + +---@class SmolStr : ReflectReference +---@operator len: integer +SmolStr = {} + +---@param _self SmolStr +---@return string +function SmolStr.to_string(_self) end + +---@param _self SmolStr +---@return boolean +function SmolStr.is_heap_allocated(_self) end + +---@param _self SmolStr +---@return SmolStr +function SmolStr.clone(_self) end + +---@param _self SmolStr +---@return boolean +function SmolStr.is_empty(_self) end + +---@param _self SmolStr +---@param other SmolStr +---@return boolean +function SmolStr.__eq(_self,other) end + +---@param _self SmolStr +---@param other SmolStr +---@return boolean +function SmolStr.eq(_self,other) end + +---@param _self SmolStr +---@return integer +function SmolStr.len(_self) end + + + +---@class NonNilUuid : ReflectReference +NonNilUuid = {} + +---@param _self NonNilUuid +---@return Uuid +function NonNilUuid.get(_self) end + +---@param _self NonNilUuid +---@param other NonNilUuid +---@return boolean +function NonNilUuid.__eq(_self,other) end + +---@param _self NonNilUuid +---@param other NonNilUuid +---@return boolean +function NonNilUuid.eq(_self,other) end + +---@param _self NonNilUuid +---@return NonNilUuid +function NonNilUuid.clone(_self) end + +---@param _self NonNilUuid +---@return nil +function NonNilUuid.assert_receiver_is_total_eq(_self) end + +---@param p1 NonNilUuid +---@param p2 Uuid +---@return boolean +function NonNilUuid.__eq(p1,p2) end + +---@param p1 NonNilUuid +---@param p2 Uuid +---@return boolean +function NonNilUuid.eq(p1,p2) end + + + +---@class Uuid : ReflectReference +Uuid = {} + +---@param _self Uuid +---@return integer[] | nil +function Uuid.get_node_id(_self) end + +---@return Uuid +function Uuid.new_v4() end + +---@param _self Uuid +---@return integer[] +function Uuid.into_bytes(_self) end + +---@param _self Uuid +---@return integer +function Uuid.get_version_num(_self) end + +---@param _self Uuid +---@return boolean +function Uuid.is_max(_self) end + +---@param _self Uuid +---@return integer[] +function Uuid.to_bytes_le(_self) end + +---@param b integer[] +---@return Uuid +function Uuid.from_bytes_le(b) end + + +---@param bytes integer[] +---@return Uuid +function Uuid.from_bytes(bytes) end + +---@param v integer +---@return Uuid +function Uuid.from_u128_le(v) end + +---@return Uuid +function Uuid.max() end + +---@param p1 Uuid +---@param p2 Uuid +---@return boolean +function Uuid.__eq(p1,p2) end + +---@param p1 Uuid +---@param p2 Uuid +---@return boolean +function Uuid.eq(p1,p2) end + +---@param _self Uuid +---@return [integer, integer] +function Uuid.as_u64_pair(_self) end + +---@param _self Uuid +---@return Uuid +function Uuid.clone(_self) end + +---@return integer[] +function Uuid.encode_buffer() end + +---@param _self Uuid +---@return boolean +function Uuid.is_nil(_self) end + +---@param _self Uuid +---@return integer +function Uuid.to_u128_le(_self) end + +---@param _self Uuid +---@return nil +function Uuid.assert_receiver_is_total_eq(_self) end + +---@param _self Uuid +---@param other NonNilUuid +---@return boolean +function Uuid.__eq(_self,other) end + +---@param _self Uuid +---@param other NonNilUuid +---@return boolean +function Uuid.eq(_self,other) end + +---@param v integer +---@return Uuid +function Uuid.from_u128(v) end + +---@param high_bits integer +---@param low_bits integer +---@return Uuid +function Uuid.from_u64_pair(high_bits,low_bits) end + +---@param _self Uuid +---@return integer +function Uuid.as_u128(_self) end + + + +---@class BlendState : ReflectReference +BlendState = {} + +---@param _self BlendState +---@param other BlendState +---@return boolean +function BlendState.__eq(_self,other) end + +---@param _self BlendState +---@param other BlendState +---@return boolean +function BlendState.eq(_self,other) end + +---@param _self BlendState +---@return BlendState +function BlendState.clone(_self) end + +---@param _self BlendState +---@return nil +function BlendState.assert_receiver_is_total_eq(_self) end + + + +---@class TextureFormat : ReflectReference +TextureFormat = {} + +---@param _self TextureFormat +---@return integer +function TextureFormat.components(_self) end + +---@param _self TextureFormat +---@return integer | nil +function TextureFormat.planes(_self) end + +---@param _self TextureFormat +---@return TextureFormat +function TextureFormat.clone(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.is_srgb(_self) end + +---@param _self TextureFormat +---@return [integer, integer] +function TextureFormat.block_dimensions(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.is_depth_stencil_format(_self) end + +---@param _self TextureFormat +---@param other TextureFormat +---@return boolean +function TextureFormat.__eq(_self,other) end + +---@param _self TextureFormat +---@param other TextureFormat +---@return boolean +function TextureFormat.eq(_self,other) end + +---@param _self TextureFormat +---@return [integer, integer] +function TextureFormat.size_multiple_requirement(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.has_depth_aspect(_self) end + +---@param _self TextureFormat +---@return nil +function TextureFormat.assert_receiver_is_total_eq(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.is_compressed(_self) end + +---@param _self TextureFormat +---@param combined_format TextureFormat +---@return boolean +function TextureFormat.is_depth_stencil_component(_self,combined_format) end + +---@param _self TextureFormat +---@return TextureFormat +function TextureFormat.remove_srgb_suffix(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.is_combined_depth_stencil_format(_self) end + +---@param _self TextureFormat +---@return integer | nil +function TextureFormat.target_pixel_byte_cost(_self) end + +---@param _self TextureFormat +---@return TextureFormat +function TextureFormat.add_srgb_suffix(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.is_astc(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.has_color_aspect(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.has_stencil_aspect(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.is_bcn(_self) end + +---@param _self TextureFormat +---@return boolean +function TextureFormat.is_multi_planar_format(_self) end + +---@param _self TextureFormat +---@return integer | nil +function TextureFormat.target_component_alignment(_self) end + + + +---@class Bool +--- A boolean value +Bool = {} + + + +---@class Char +--- An 8-bit character +Char = {} + + + +---@class DynamicFunction +--- A callable dynamic function +DynamicFunction = {} + + + +---@class DynamicFunctionMut +--- A stateful and callable dynamic function +DynamicFunctionMut = {} + + + +---@class F32 +--- A 32-bit floating point number +F32 = {} + + + +---@class F64 +--- A 64-bit floating point number +F64 = {} + + + +---@class FunctionCallContext +--- Function call context, if accepted by a function, means the function can access the world in arbitrary ways. +FunctionCallContext = {} + + + +---@class I128 +--- A signed 128-bit integer +I128 = {} + + + +---@class I16 +--- A signed 16-bit integer +I16 = {} + + + +---@class I32 +--- A signed 32-bit integer +I32 = {} + + + +---@class I64 +--- A signed 64-bit integer +I64 = {} + + + +---@class I8 +--- A signed 8-bit integer +I8 = {} + + + +---@class Isize +--- A signed pointer-sized integer +Isize = {} + + + +---@class OsString +--- A heap allocated OS string +OsString = {} + + + +---@class PathBuf +--- A heap allocated file path +PathBuf = {} + + + +---@class ScriptValue : ReflectReference +--- An abstraction of values that can be passed to and from scripts. +--- This allows us to re-use logic between scripting languages. +ScriptValue = {} + + + +---@class Str +--- A string slice +Str = {} + + + +---@class String +--- A heap allocated string +String = {} + + + +---@class U128 +--- An unsigned 128-bit integer +U128 = {} + + + +---@class U16 +--- An unsigned 16-bit integer +U16 = {} + + + +---@class U32 +--- An unsigned 32-bit integer +U32 = {} + + + +---@class U64 +--- An unsigned 64-bit integer +U64 = {} + + + +---@class U8 +--- An unsigned 8-bit integer +U8 = {} + + + +---@class Usize +--- An unsigned pointer-sized integer +Usize = {} + + + +---@class AccessibilityRequested : ReflectReference +--- Tracks whether an assistive technology has requested accessibility +--- information. +--- +--- This type is a [`Resource`] initialized by the +--- [`AccessibilityPlugin`]. It may be useful if a third-party plugin needs to +--- conditionally integrate with `AccessKit`. +--- +--- In other words, this resource represents whether accessibility providers +--- are "turned on" or "turned off" across an entire Bevy `App`. +--- +--- By default, it is set to `false`, indicating that nothing has requested +--- accessibility information yet. +--- +--- [`Resource`]: bevy_ecs::resource::Resource +---@field [1] Arc +AccessibilityRequested = {} + + + +---@class AccessibilitySystems : ReflectReference +--- A system set relating to accessibility. +--- +--- Helps run accessibility updates all at once. +AccessibilitySystems = {} + + + +---@class ManageAccessibilityUpdates : ReflectReference +--- Determines whether Bevy's ECS updates the accessibility tree. +--- +--- This [`Resource`] tells Bevy internals whether it should be handling +--- `AccessKit` updates (`true`), or if something else is doing that (`false`). +--- +--- It defaults to `true`. So, by default, Bevy is configured to maintain the +--- `AccessKit` tree. +--- +--- Set to `false` in cases where an external GUI library is sending +--- accessibility updates instead. When this option is set inconsistently with +--- that requirement, the external library and ECS will generate conflicting +--- updates. +--- +--- [`Resource`]: bevy_ecs::resource::Resource +---@field [1] boolean +ManageAccessibilityUpdates = {} + + + +---@class AssetIndex : ReflectReference +--- A generational runtime-only identifier for a specific [`Asset`] stored in [`Assets`]. This is optimized for efficient runtime +--- usage and is not suitable for identifying assets across app runs. +---@field generation ? integer +---@field index ? integer +AssetIndex = {} + + + +---@class UntypedHandle : ReflectReference +--- An untyped variant of [`Handle`], which internally stores the [`Asset`] type information at runtime +--- as a [`TypeId`] instead of encoding it in the compile-time type. This allows handles across [`Asset`] types +--- to be stored together and compared. +--- +--- See [`Handle`] for more information. +UntypedHandle = {} + + + +---@class UntypedAssetId : ReflectReference +--- An "untyped" / "generic-less" [`Asset`] identifier that behaves much like [`AssetId`], but stores the [`Asset`] type +--- information at runtime instead of compile-time. This increases the size of the type, but it enables storing asset ids +--- across asset types together and enables comparisons between them. +UntypedAssetId = {} + + + +---@class AssetPath : ReflectReference +--- Represents a path to an asset in a "virtual filesystem". +--- +--- Asset paths consist of three main parts: +--- * [`AssetPath::source`]: The name of the [`AssetSource`](crate::io::AssetSource) to load the asset from. +--- This is optional. If one is not set the default source will be used (which is the `assets` folder by default). +--- * [`AssetPath::path`]: The "virtual filesystem path" pointing to an asset source file. +--- * [`AssetPath::label`]: An optional "named sub asset". When assets are loaded, they are +--- allowed to load "sub assets" of any type, which are identified by a named "label". +--- +--- Asset paths are generally constructed (and visualized) as strings: +--- +--- ```no_run +--- # use bevy_asset::{Asset, AssetServer, Handle}; +--- # use bevy_reflect::TypePath; +--- # +--- # #[derive(Asset, TypePath, Default)] +--- # struct Mesh; +--- # +--- # #[derive(Asset, TypePath, Default)] +--- # struct Scene; +--- # +--- # let asset_server: AssetServer = panic!(); +--- // This loads the `my_scene.scn` base asset from the default asset source. +--- let scene: Handle = asset_server.load("my_scene.scn"); +--- +--- // This loads the `PlayerMesh` labeled asset from the `my_scene.scn` base asset in the default asset source. +--- let mesh: Handle = asset_server.load("my_scene.scn#PlayerMesh"); +--- +--- // This loads the `my_scene.scn` base asset from a custom 'remote' asset source. +--- let scene: Handle = asset_server.load("remote://my_scene.scn"); +--- ``` +--- +--- [`AssetPath`] implements [`From`] for `&'static str`, `&'static Path`, and `&'a String`, +--- which allows us to optimize the static cases. +--- This means that the common case of `asset_server.load("my_scene.scn")` when it creates and +--- clones internal owned [`AssetPaths`](AssetPath). +--- This also means that you should use [`AssetPath::parse`] in cases where `&str` is the explicit type. +AssetPath = {} + + + +---@class RenderAssetUsages : ReflectReference +--- Defines where the asset will be used. +--- +--- If an asset is set to the `RENDER_WORLD` but not the `MAIN_WORLD`, the asset data (pixel data, +--- mesh vertex data, etc) will be removed from the cpu-side asset once it's been extracted and prepared +--- in the render world. The asset will remain in the assets collection, but with only metadata. +--- +--- Unloading the asset data saves on memory, as for most cases it is no longer necessary to keep +--- it in RAM once it's been uploaded to the GPU's VRAM. However, this means you cannot access the +--- asset data from the CPU (via the `Assets` resource) once unloaded (without re-loading it). +--- +--- If you never need access to the asset from the CPU past the first frame it's loaded on, +--- or only need very infrequent access, then set this to `RENDER_WORLD`. Otherwise, set this to +--- `RENDER_WORLD | MAIN_WORLD`. +--- +--- If you have an asset that doesn't actually need to end up in the render world, like an Image +--- that will be decoded into another Image asset, use `MAIN_WORLD` only. +--- +--- ## Platform-specific +--- +--- On Wasm, it is not possible for now to free reserved memory. To control memory usage, load assets +--- in sequence and unload one before loading the next. See this +--- [discussion about memory management](https://github.com/WebAssembly/design/issues/1397) for more +--- details. +RenderAssetUsages = {} + + + +---@class Camera : ReflectReference +--- The defining [`Component`] for camera entities, +--- storing information about how and what to render through this camera. +--- +--- The [`Camera`] component is added to an entity to define the properties of the viewpoint from +--- which rendering occurs. It defines the position of the view to render, the projection method +--- to transform the 3D objects into a 2D image, as well as the render target into which that image +--- is produced. +--- +--- Note that a [`Camera`] needs a `CameraRenderGraph` to render anything. +--- This is typically provided by adding a [`Camera2d`] or [`Camera3d`] component, +--- but custom render graphs can also be defined. Inserting a [`Camera`] with no render +--- graph will emit an error at runtime. +--- +--- [`Camera2d`]: crate::Camera2d +--- [`Camera3d`]: crate::Camera3d +---@field viewport ? Viewport | nil +---@field order ? integer +---@field is_active ? boolean +---@field output_mode ? CameraOutputMode +---@field msaa_writeback ? MsaaWriteback +---@field clear_color ? ClearColorConfig +---@field invert_culling ? boolean +---@field sub_camera_view ? SubCameraView | nil +Camera = {} + + + +---@class CameraMainTextureUsages : ReflectReference +--- This component lets you control the [`TextureUsages`] field of the main texture generated for the camera +CameraMainTextureUsages = {} + + + +---@class CameraOutputMode : ReflectReference +--- Control how this [`Camera`] outputs once rendering is completed. +CameraOutputMode = {} + + + +---@class Exposure : ReflectReference +--- How much energy a [`Camera3d`](crate::Camera3d) absorbs from incoming light. +--- +--- +Exposure = {} + + + +---@class ImageRenderTarget : ReflectReference +--- A render target that renders to an [`Image`]. +---@field handle ? any +---@field scale_factor ? number +ImageRenderTarget = {} + + + +---@class MainPassResolutionOverride : ReflectReference +--- Override the resolution a 3d camera's main pass is rendered at. +--- +--- Does not affect post processing. +--- +--- ## Usage +--- +--- * Insert this component on a 3d camera entity in the render world. +--- * The resolution override must be smaller than the camera's viewport size. +--- * The resolution override is specified in physical pixels. +--- * In shaders, use `View::main_pass_viewport` instead of `View::viewport`. +---@field [1] UVec2 +MainPassResolutionOverride = {} + + + +---@class ManualTextureViewHandle : ReflectReference +--- A unique id that corresponds to a specific `ManualTextureView` in the `ManualTextureViews` collection. +--- +--- See `ManualTextureViews` in `bevy_camera` for more details. +---@field [1] integer +ManualTextureViewHandle = {} + + + +---@class NormalizedRenderTarget : ReflectReference +--- Normalized version of the render target. +--- +--- Once we have this we shouldn't need to resolve it down anymore. +NormalizedRenderTarget = {} + + + +---@class RenderTarget : ReflectReference +--- The "target" that a [`Camera`] will render to. For example, this could be a `Window` +--- swapchain or an [`Image`]. +RenderTarget = {} + + + +---@class SubCameraView : ReflectReference +--- Settings to define a camera sub view. +--- +--- When [`Camera::sub_camera_view`] is `Some`, only the sub-section of the +--- image defined by `size` and `offset` (relative to the `full_size` of the +--- whole image) is projected to the cameras viewport. +--- +--- Take the example of the following multi-monitor setup: +--- ```css +--- ┌───┬───┐ +--- │ A │ B │ +--- ├───┼───┤ +--- │ C │ D │ +--- └───┴───┘ +--- ``` +--- If each monitor is 1920x1080, the whole image will have a resolution of +--- 3840x2160. For each monitor we can use a single camera with a viewport of +--- the same size as the monitor it corresponds to. To ensure that the image is +--- cohesive, we can use a different sub view on each camera: +--- - Camera A: `full_size` = 3840x2160, `size` = 1920x1080, `offset` = 0,0 +--- - Camera B: `full_size` = 3840x2160, `size` = 1920x1080, `offset` = 1920,0 +--- - Camera C: `full_size` = 3840x2160, `size` = 1920x1080, `offset` = 0,1080 +--- - Camera D: `full_size` = 3840x2160, `size` = 1920x1080, `offset` = +--- 1920,1080 +--- +--- However since only the ratio between the values is important, they could all +--- be divided by 120 and still produce the same image. Camera D would for +--- example have the following values: +--- `full_size` = 32x18, `size` = 16x9, `offset` = 16,9 +---@field full_size ? UVec2 +---@field offset ? Vec2 +---@field size ? UVec2 +SubCameraView = {} + + + +---@class Viewport : ReflectReference +--- Render viewport configuration for the [`Camera`] component. +--- +--- The viewport defines the area on the render target to which the camera renders its image. +--- You can overlay multiple cameras in a single window using viewports to create effects like +--- split screen, minimaps, and character viewers. +---@field physical_position ? UVec2 +---@field physical_size ? UVec2 +---@field depth ? Range +Viewport = {} + + + +---@class ClearColor : ReflectReference +--- A [`Resource`] that stores the default color that cameras use to clear the screen between frames. +--- +--- This color appears as the "background" color for simple apps, +--- when there are portions of the screen with nothing rendered. +--- +--- Individual cameras may use [`Camera.clear_color`] to specify a different +--- clear color or opt out of clearing their viewport. +--- +--- [`Camera.clear_color`]: crate::camera::Camera::clear_color +---@field [1] Color +ClearColor = {} + + + +---@class ClearColorConfig : ReflectReference +--- For a camera, specifies the color used to clear the viewport +--- [before rendering](crate::camera::Camera::clear_color) +--- or when [writing to the final render target texture](crate::camera::Camera::output_mode). +ClearColorConfig = {} + + + +---@class MsaaWriteback : ReflectReference +--- Controls when MSAA writeback occurs for a camera. +--- +--- MSAA writeback copies the previous camera's output into the MSAA sampled texture before +--- rendering, allowing multiple cameras to layer their results when MSAA is enabled. +MsaaWriteback = {} + + + +---@class Camera2d : ReflectReference +--- A 2D camera component. Enables the 2D render graph for a [`Camera`]. +Camera2d = {} + + + +---@class Camera3d : ReflectReference +--- A 3D camera component. Enables the main 3D render graph for a [`Camera`]. +--- +--- The camera coordinate space is right-handed X-right, Y-up, Z-back. +--- This means "forward" is -Z. +---@field depth_load_op ? Camera3dDepthLoadOp +---@field depth_texture_usages ? Camera3dDepthTextureUsage +---@field screen_space_specular_transmission_steps ? integer +---@field screen_space_specular_transmission_quality ? ScreenSpaceTransmissionQuality +Camera3d = {} + + + +---@class Camera3dDepthLoadOp : ReflectReference +--- The depth clear operation to perform for the main 3d pass. +Camera3dDepthLoadOp = {} + + + +---@class Camera3dDepthTextureUsage : ReflectReference +---@field [1] integer +Camera3dDepthTextureUsage = {} + + + +---@class ScreenSpaceTransmissionQuality : ReflectReference +--- The quality of the screen space transmission blur effect, applied to whatever's “behind” transmissive +--- objects when their `roughness` is greater than `0.0`. +--- +--- Higher qualities are more GPU-intensive. +--- +--- **Note:** You can get better-looking results at any quality level by enabling TAA. See: `TemporalAntiAliasPlugin` +ScreenSpaceTransmissionQuality = {} + + + +---@class Aabb : ReflectReference +--- An axis-aligned bounding box, defined by: +--- - a center, +--- - the distances from the center to each faces along the axis, +--- the faces are orthogonal to the axis. +--- +--- It is typically used as a component on an entity to represent the local space +--- occupied by this entity, with faces orthogonal to its local axis. +--- +--- This component is notably used during "frustum culling", a process to determine +--- if an entity should be rendered by a [`Camera`] if its bounding box intersects +--- with the camera's [`Frustum`]. +--- +--- It will be added automatically by the systems in [`CalculateBounds`] to entities that: +--- - could be subject to frustum culling, for example with a [`Mesh3d`] +--- or `Sprite` component, +--- - don't have the [`NoFrustumCulling`] component. +--- +--- It won't be updated automatically if the space occupied by the entity changes, +--- for example if the vertex positions of a [`Mesh3d`] are updated. +--- +--- [`Camera`]: crate::Camera +--- [`NoFrustumCulling`]: crate::visibility::NoFrustumCulling +--- [`CalculateBounds`]: crate::visibility::VisibilitySystems::CalculateBounds +--- [`Mesh3d`]: bevy_mesh::Mesh +---@field center ? Vec3A +---@field half_extents ? Vec3A +Aabb = {} + + + +---@class CascadesFrusta : ReflectReference +CascadesFrusta = {} + + + +---@class CubemapFrusta : ReflectReference +CubemapFrusta = {} + + + +---@class CubemapLayout : ReflectReference +--- Cubemap layout defines the order of images in a packed cubemap image. +CubemapLayout = {} + + + +---@class Frustum : ReflectReference +--- A region of 3D space defined by the intersection of 6 [`HalfSpace`]s. +--- +--- Frustums are typically an apex-truncated square pyramid (a pyramid without the top) or a cuboid. +--- +--- Half spaces are ordered left, right, top, bottom, near, far. The normal vectors +--- of the half-spaces point towards the interior of the frustum. +--- +--- A frustum component is used on an entity with a [`Camera`] component to +--- determine which entities will be considered for rendering by this camera. +--- All entities with an [`Aabb`] component that are not contained by (or crossing +--- the boundary of) the frustum will not be rendered, and not be used in rendering computations. +--- +--- This process is called frustum culling, and entities can opt out of it using +--- the [`NoFrustumCulling`] component. +--- +--- The frustum component is typically added automatically for cameras, either [`Camera2d`] or [`Camera3d`]. +--- It is usually updated automatically by [`update_frusta`] from the +--- [`CameraProjection`] component and [`GlobalTransform`] of the camera entity. +--- +--- [`Camera`]: crate::Camera +--- [`NoFrustumCulling`]: crate::visibility::NoFrustumCulling +--- [`update_frusta`]: crate::visibility::update_frusta +--- [`CameraProjection`]: crate::CameraProjection +--- [`GlobalTransform`]: bevy_transform::components::GlobalTransform +--- [`Camera2d`]: crate::Camera2d +--- [`Camera3d`]: crate::Camera3d +Frustum = {} + + + +---@class CustomProjection : ReflectReference +--- Holds a dynamic [`CameraProjection`] trait object. Use [`Projection::custom()`] to construct a +--- custom projection. +--- +--- The contained dynamic object can be downcast into a static type using [`CustomProjection::get`]. +CustomProjection = {} + + + +---@class OrthographicProjection : ReflectReference +--- Project a 3D space onto a 2D surface using parallel lines, i.e., unlike [`PerspectiveProjection`], +--- the size of objects remains the same regardless of their distance to the camera. +--- +--- The volume contained in the projection is called the *view frustum*. Since the viewport is rectangular +--- and projection lines are parallel, the view frustum takes the shape of a cuboid. +--- +--- Note that the scale of the projection and the apparent size of objects are inversely proportional. +--- As the size of the projection increases, the size of objects decreases. +--- +--- # Examples +--- +--- Configure the orthographic projection to one world unit per 100 window pixels: +--- +--- ``` +--- # use bevy_camera::{OrthographicProjection, Projection, ScalingMode}; +--- let projection = Projection::Orthographic(OrthographicProjection { +--- scaling_mode: ScalingMode::WindowSize, +--- scale: 0.01, +--- ..OrthographicProjection::default_2d() +--- }); +--- ``` +---@field near ? number +---@field far ? number +---@field viewport_origin ? Vec2 +---@field scaling_mode ? ScalingMode +---@field scale ? number +---@field area ? Rect +OrthographicProjection = {} + + + +---@class PerspectiveProjection : ReflectReference +--- A 3D camera projection in which distant objects appear smaller than close objects. +---@field fov ? number +---@field aspect_ratio ? number +---@field near ? number +---@field far ? number +---@field near_clip_plane ? Vec4 +PerspectiveProjection = {} + + + +---@class Projection : ReflectReference +--- Component that defines how to compute a [`Camera`]'s projection matrix. +--- +--- Common projections, like perspective and orthographic, are provided out of the box to handle the +--- majority of use cases. Custom projections can be added using the [`CameraProjection`] trait and +--- the [`Projection::custom`] constructor. +--- +--- ## What's a projection? +--- +--- A camera projection essentially describes how 3d points from the point of view of a camera are +--- projected onto a 2d screen. This is where properties like a camera's field of view are defined. +--- More specifically, a projection is a 4x4 matrix that transforms points from view space (the +--- point of view of the camera) into clip space. Clip space is almost, but not quite, equivalent to +--- the rectangle that is rendered to your screen, with a depth axis. Any points that land outside +--- the bounds of this cuboid are "clipped" and not rendered. +--- +--- You can also think of the projection as the thing that describes the shape of a camera's +--- frustum: the volume in 3d space that is visible to a camera. +--- +--- [`Camera`]: crate::camera::Camera +Projection = {} + + + +---@class ScalingMode : ReflectReference +--- Scaling mode for [`OrthographicProjection`]. +--- +--- The effect of these scaling modes are combined with the [`OrthographicProjection::scale`] property. +--- +--- For example, if the scaling mode is `ScalingMode::Fixed { width: 100.0, height: 300 }` and the scale is `2.0`, +--- the projection will be 200 world units wide and 600 world units tall. +--- +--- # Examples +--- +--- Configure the orthographic projection to two world units per window height: +--- +--- ``` +--- # use bevy_camera::{OrthographicProjection, Projection, ScalingMode}; +--- let projection = Projection::Orthographic(OrthographicProjection { +--- scaling_mode: ScalingMode::FixedVertical { viewport_height: 2.0 }, +--- ..OrthographicProjection::default_2d() +--- }); +--- ``` +ScalingMode = {} + + + +---@class CascadesVisibleEntities : ReflectReference +CascadesVisibleEntities = {} + + + +---@class CubemapVisibleEntities : ReflectReference +CubemapVisibleEntities = {} + + + +---@class InheritedVisibility : ReflectReference +--- Whether or not an entity is visible in the hierarchy. +--- This will not be accurate until [`VisibilityPropagate`] runs in the [`PostUpdate`] schedule. +--- +--- If this is false, then [`ViewVisibility`] should also be false. +--- +--- [`VisibilityPropagate`]: VisibilitySystems::VisibilityPropagate +---@field [1] boolean +InheritedVisibility = {} + + + +---@class NoAutoAabb : ReflectReference +--- Add this component to an entity to prevent its `AABB` from being automatically recomputed. +--- +--- This is useful if entities are already spawned with a correct `Aabb` component, or you have +--- many entities and want to avoid the cost of table scans searching for entities that need to have +--- their AABB recomputed. +NoAutoAabb = {} + + + +---@class NoFrustumCulling : ReflectReference +--- Use this component to opt-out of built-in frustum culling for entities, see +--- [`Frustum`]. +--- +--- It can be used for example: +--- - when a [`Mesh`] is updated but its [`Aabb`] is not, which might happen with animations, +--- - when using some light effects, like wanting a [`Mesh`] out of the [`Frustum`] +--- to appear in the reflection of a [`Mesh`] within. +NoFrustumCulling = {} + + + +---@class ViewVisibility : ReflectReference +--- Algorithmically computed indication of whether an entity is visible and should be extracted for +--- rendering. +--- +--- Each frame, this will be reset to `false` during [`VisibilityPropagate`] systems in +--- [`PostUpdate`]. Later in the frame, systems in [`CheckVisibility`] will mark any visible +--- entities using [`ViewVisibility::set`]. Because of this, values of this type will be marked as +--- changed every frame, even when they do not change. +--- +--- If you wish to add a custom visibility system that sets this value, be sure to add it to the +--- [`CheckVisibility`] set. +--- +--- [`VisibilityPropagate`]: VisibilitySystems::VisibilityPropagate +--- [`CheckVisibility`]: VisibilitySystems::CheckVisibility +---@field [1] integer +ViewVisibility = {} + + + +---@class Visibility : ReflectReference +--- User indication of whether an entity is visible. Propagates down the entity hierarchy. +--- +--- If an entity is hidden in this way, all [`Children`] (and all of their children and so on) who +--- are set to [`Inherited`](Self::Inherited) will also be hidden. +--- +--- This is done by the `visibility_propagate_system` which uses the entity hierarchy and +--- `Visibility` to set the values of each entity's [`InheritedVisibility`] component. +Visibility = {} + + + +---@class VisibilityClass : ReflectReference +--- A bucket into which we group entities for the purposes of visibility. +--- +--- Bevy's various rendering subsystems (3D, 2D, etc.) want to be able to +--- quickly winnow the set of entities to only those that the subsystem is +--- tasked with rendering, to avoid spending time examining irrelevant entities. +--- At the same time, Bevy wants the [`check_visibility`] system to determine +--- all entities' visibilities at the same time, regardless of what rendering +--- subsystem is responsible for drawing them. Additionally, your application +--- may want to add more types of renderable objects that Bevy determines +--- visibility for just as it does for Bevy's built-in objects. +--- +--- The solution to this problem is *visibility classes*. A visibility class is +--- a type, typically the type of a component, that represents the subsystem +--- that renders it: for example, `Mesh3d`, `Mesh2d`, and `Sprite`. The +--- [`VisibilityClass`] component stores the visibility class or classes that +--- the entity belongs to. (Generally, an object will belong to only one +--- visibility class, but in rare cases it may belong to multiple.) +--- +--- When adding a new renderable component, you'll typically want to write an +--- add-component hook that adds the type ID of that component to the +--- [`VisibilityClass`] array. See `custom_phase_item` for an example. +--- +--- `VisibilityClass` is automatically added by a hook on the `Mesh3d` and +--- `Mesh2d` components. To avoid duplicating the `VisibilityClass` and +--- causing issues when cloning, we use `#[component(clone_behavior=Ignore)]` +---@field [1] TypeId[] +VisibilityClass = {} + + + +---@class VisibleEntities : ReflectReference +--- Collection of entities visible from the current view. +--- +--- This component contains all entities which are visible from the currently +--- rendered view. The collection is updated automatically by the [`VisibilitySystems::CheckVisibility`] +--- system set. Renderers can use the equivalent `RenderVisibleEntities` to optimize rendering of +--- a particular view, to prevent drawing items not visible from that view. +--- +--- This component is intended to be attached to the same entity as the [`Camera`] and +--- the [`Frustum`] defining the view. +VisibleEntities = {} + + + +---@class VisibleMeshEntities : ReflectReference +--- Collection of mesh entities visible for 3D lighting. +--- +--- This component contains all mesh entities visible from the current light view. +--- The collection is updated automatically by `bevy_pbr::SimulationLightSystems`. +VisibleMeshEntities = {} + + + +---@class VisibilityRange : ReflectReference +--- Specifies the range of distances that this entity must be from the camera in +--- order to be rendered. +--- +--- This is also known as *hierarchical level of detail* or *HLOD*. +--- +--- Use this component when you want to render a high-polygon mesh when the +--- camera is close and a lower-polygon mesh when the camera is far away. This +--- is a common technique for improving performance, because fine details are +--- hard to see in a mesh at a distance. To avoid an artifact known as *popping* +--- between levels, each level has a *margin*, within which the object +--- transitions gradually from invisible to visible using a dithering effect. +--- +--- You can also use this feature to replace multiple meshes with a single mesh +--- when the camera is distant. This is the reason for the term "*hierarchical* +--- level of detail". Reducing the number of meshes can be useful for reducing +--- drawcall count. Note that you must place the [`VisibilityRange`] component +--- on each entity you want to be part of a LOD group, as [`VisibilityRange`] +--- isn't automatically propagated down to children. +--- +--- A typical use of this feature might look like this: +--- +--- | Entity | `start_margin` | `end_margin` | +--- |-------------------------|----------------|--------------| +--- | Root | N/A | N/A | +--- | ├─ High-poly mesh | [0, 0) | [20, 25) | +--- | ├─ Low-poly mesh | [20, 25) | [70, 75) | +--- | └─ Billboard *imposter* | [70, 75) | [150, 160) | +--- +--- With this setup, the user will see a high-poly mesh when the camera is +--- closer than 20 units. As the camera zooms out, between 20 units to 25 units, +--- the high-poly mesh will gradually fade to a low-poly mesh. When the camera +--- is 70 to 75 units away, the low-poly mesh will fade to a single textured +--- quad. And between 150 and 160 units, the object fades away entirely. Note +--- that the `end_margin` of a higher LOD is always identical to the +--- `start_margin` of the next lower LOD; this is important for the crossfade +--- effect to function properly. +---@field start_margin ? Range +---@field end_margin ? Range +---@field use_aabb ? boolean +VisibilityRange = {} + + + +---@class RenderLayers : ReflectReference +--- Defines which rendering layers an entity belongs to. +--- +--- A camera renders an entity only when their render layers intersect. +--- +--- The [`Default`] instance of `RenderLayers` contains layer `0`, the first layer. Entities +--- without this component also belong to layer `0`. +--- +--- An empty `RenderLayers` makes the entity invisible. +---@field [1] integer[] +RenderLayers = {} + + + +---@class DeferredPrepass : ReflectReference +--- If added to a [`bevy_camera::Camera3d`] then deferred materials will be rendered to the deferred gbuffer texture and will be available to subsequent passes. +--- Note the default deferred lighting plugin also requires `DepthPrepass` to work correctly. +DeferredPrepass = {} + + + +---@class ObservedBy : ReflectReference +--- Tracks a list of entity observers for the [`Entity`] [`ObservedBy`] is added to. +---@field [1] Entity[] +ObservedBy = {} + + + +---@class Image : ReflectReference +--- An image, optimized for usage in rendering. +--- +--- ## Remote Inspection +--- +--- To transmit an [`Image`] between two running Bevy apps, e.g. through BRP, use [`SerializedImage`](crate::SerializedImage). +--- This type is only meant for short-term transmission between same versions and should not be stored anywhere. +Image = {} + + + +---@class TextureAtlas : ReflectReference +--- An index into a [`TextureAtlasLayout`], which corresponds to a specific section of a texture. +--- +--- It stores a handle to [`TextureAtlasLayout`] and the index of the current section of the atlas. +--- The texture atlas contains various *sections* of a given texture, allowing users to have a single +--- image file for either sprite animation or global mapping. +--- You can change the texture [`index`](Self::index) of the atlas to animate the sprite or display only a *section* of the texture +--- for efficient rendering of related game objects. +--- +--- Check the following examples for usage: +--- - [`animated sprite sheet example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_sheet.rs) +--- - [`sprite animation event example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_animation.rs) +--- - [`texture atlas example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/texture_atlas.rs) +---@field layout ? any +---@field index ? integer +TextureAtlas = {} + + + +---@class TextureAtlasLayout : ReflectReference +--- Stores a map used to lookup the position of a texture in a [`TextureAtlas`]. +--- This can be used to either use and look up a specific section of a texture, or animate frame-by-frame as a sprite sheet. +--- +--- Optionally it can store a mapping from sub texture handles to the related area index (see +--- [`TextureAtlasBuilder`]). +--- +--- [Example usage animating sprite.](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_sheet.rs) +--- [Example usage animating sprite in response to an event.](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_animation.rs) +--- [Example usage loading sprite sheet.](https://github.com/bevyengine/bevy/blob/latest/examples/2d/texture_atlas.rs) +--- +--- [`TextureAtlasBuilder`]: crate::TextureAtlasBuilder +---@field size ? UVec2 +---@field textures ? URect[] +TextureAtlasLayout = {} + + + +---@class InputFocus : ReflectReference +--- Resource representing which entity has input focus, if any. Input events (other than pointer-like inputs) will be +--- dispatched to the current focus entity, or to the primary window if no entity has focus. +--- +--- Changing the input focus is as easy as modifying this resource. +--- +--- # Examples +--- +--- From within a system: +--- +--- ```rust +--- use bevy_ecs::prelude::*; +--- use bevy_input_focus::InputFocus; +--- +--- fn clear_focus(mut input_focus: ResMut) { +--- input_focus.clear(); +--- } +--- ``` +--- +--- With exclusive (or deferred) world access: +--- +--- ```rust +--- use bevy_ecs::prelude::*; +--- use bevy_input_focus::InputFocus; +--- +--- fn set_focus_from_world(world: &mut World) { +--- let entity = world.spawn_empty().id(); +--- +--- // Fetch the resource from the world +--- let mut input_focus = world.resource_mut::(); +--- // Then mutate it! +--- input_focus.set(entity); +--- +--- // Or you can just insert a fresh copy of the resource +--- // which will overwrite the existing one. +--- world.insert_resource(InputFocus::from_entity(entity)); +--- } +--- ``` +---@field [1] Entity | nil +InputFocus = {} + + + +---@class InputFocusVisible : ReflectReference +--- Resource representing whether the input focus indicator should be visible on UI elements. +--- +--- Note that this resource is not used by [`bevy_input_focus`](crate) itself, but is provided for +--- convenience to UI widgets or frameworks that want to display a focus indicator. +--- [`InputFocus`] may still be `Some` even if the focus indicator is not visible. +--- +--- The value of this resource should be set by your focus navigation solution. +--- For a desktop/web style of user interface this would be set to true when the user presses the tab key, +--- and set to false when the user clicks on a different element. +--- By contrast, a console-style UI intended to be navigated with a gamepad may always have the focus indicator visible. +--- +--- To easily access information about whether focus indicators should be shown for a given entity, use the [`IsFocused`] trait. +--- +--- By default, this resource is set to `false`. +---@field [1] boolean +InputFocusVisible = {} + + + +---@class AutoFocus : ReflectReference +--- Indicates that this widget should automatically receive [`InputFocus`]. +--- +--- This can be useful for things like dialog boxes, the first text input in a form, +--- or the first button in a game menu. +--- +--- The focus is swapped when this component is added +--- or an entity with this component is spawned. +AutoFocus = {} + + + +---@class AutoNavigationConfig : ReflectReference +--- Configuration resource for automatic directional navigation and for generating manual +--- navigation edges via [`auto_generate_navigation_edges`] +--- +--- This resource controls how nodes should be automatically connected in each direction. +---@field min_alignment_factor ? number +---@field max_search_distance ? number | nil +---@field prefer_aligned ? boolean +AutoNavigationConfig = {} + + + +---@class DirectionalNavigationMap : ReflectReference +--- A resource that stores the manually specified traversable graph of focusable entities. +--- +--- Each entity can have up to 8 neighbors, one for each [`CompassOctant`]. +--- +--- To ensure that your graph is intuitive to navigate and generally works correctly, it should be: +--- +--- - **Connected**: Every focusable entity should be reachable from every other focusable entity. +--- - **Symmetric**: If entity A is a neighbor of entity B, then entity B should be a neighbor of entity A, ideally in the reverse direction. +--- - **Physical**: The direction of navigation should match the layout of the entities when possible, +--- although looping around the edges of the screen is also acceptable. +--- - **Not self-connected**: An entity should not be a neighbor of itself; use [`None`] instead. +--- +--- This graph must be built and maintained manually, and the developer is responsible for ensuring that it meets the above criteria. +--- Notably, if the developer adds or removes the navigability of an entity, the developer should update the map as necessary. +---@field neighbors ? any +DirectionalNavigationMap = {} + + + +---@class FocusableArea : ReflectReference +--- A focusable area with position and size information. +--- +--- This struct represents a UI element used during directional navigation, +--- containing its entity ID, center position, and size for spatial navigation calculations. +--- +--- The term "focusable area" avoids confusion with UI `Node` components in `bevy_ui`. +---@field entity ? Entity +---@field position ? Vec2 +---@field size ? Vec2 +FocusableArea = {} + + + +---@class NavNeighbors : ReflectReference +--- The up-to-eight neighbors of a focusable entity, one for each [`CompassOctant`]. +---@field neighbors ? Entity | nil[] +NavNeighbors = {} + + + +---@class TabGroup : ReflectReference +--- A component used to mark a tree of entities as containing tabbable elements. +---@field order ? integer +---@field modal ? boolean +TabGroup = {} + + + +---@class TabIndex : ReflectReference +--- A component which indicates that an entity wants to participate in tab navigation. +--- +--- Note that you must also add the [`TabGroup`] component to the entity's ancestor in order +--- for this component to have any effect. +---@field [1] integer +TabIndex = {} + + + +---@class Affine3 : ReflectReference +--- Reduced-size version of `glam::Affine3A` for use when storage has +--- significant performance impact. Convert to `glam::Affine3A` to do +--- non-trivial calculations. +---@field matrix3 ? Mat3 +---@field translation ? Vec3 +Affine3 = {} + + + +---@class Mesh2d : ReflectReference +--- A component for 2D meshes. Requires a [`MeshMaterial2d`] to be rendered, commonly using a [`ColorMaterial`]. +--- +--- [`MeshMaterial2d`]: +--- [`ColorMaterial`]: +--- +--- # Example +--- +--- ```ignore +--- # use bevy_sprite::{ColorMaterial, MeshMaterial2d}; +--- # use bevy_ecs::prelude::*; +--- # use bevy_mesh::{Mesh, Mesh2d}; +--- # use bevy_color::palettes::basic::RED; +--- # use bevy_asset::Assets; +--- # use bevy_math::primitives::Circle; +--- # +--- // Spawn an entity with a mesh using `ColorMaterial`. +--- fn setup( +--- mut commands: Commands, +--- mut meshes: ResMut>, +--- mut materials: ResMut>, +--- ) { +--- commands.spawn(( +--- Mesh2d(meshes.add(Circle::new(50.0))), +--- MeshMaterial2d(materials.add(ColorMaterial::from_color(RED))), +--- )); +--- } +--- ``` +---@field [1] any +Mesh2d = {} + + + +---@class Mesh3d : ReflectReference +--- A component for 3D meshes. Requires a [`MeshMaterial3d`] to be rendered, commonly using a [`StandardMaterial`]. +--- +--- [`MeshMaterial3d`]: +--- [`StandardMaterial`]: +--- +--- # Example +--- +--- ```ignore +--- # use bevy_pbr::{Material, MeshMaterial3d, StandardMaterial}; +--- # use bevy_ecs::prelude::*; +--- # use bevy_mesh::{Mesh, Mesh3d}; +--- # use bevy_color::palettes::basic::RED; +--- # use bevy_asset::Assets; +--- # use bevy_math::primitives::Capsule3d; +--- # +--- // Spawn an entity with a mesh using `StandardMaterial`. +--- fn setup( +--- mut commands: Commands, +--- mut meshes: ResMut>, +--- mut materials: ResMut>, +--- ) { +--- commands.spawn(( +--- Mesh3d(meshes.add(Capsule3d::default())), +--- MeshMaterial3d(materials.add(StandardMaterial { +--- base_color: RED.into(), +--- ..Default::default() +--- })), +--- )); +--- } +--- ``` +---@field [1] any +Mesh3d = {} + + + +---@class MeshTag : ReflectReference +--- A component that stores an arbitrary index used to identify the mesh instance when rendering. +---@field [1] integer +MeshTag = {} + + + +---@class Indices : ReflectReference +--- An array of indices into the [`VertexAttributeValues`](super::VertexAttributeValues) for a mesh. +--- +--- It describes the order in which the vertex attributes should be joined into faces. +Indices = {} + + + +---@class Mesh : ReflectReference +--- A 3D object made out of vertices representing triangles, lines, or points, +--- with "attribute" values for each vertex. +--- +--- Meshes can be automatically generated by a bevy `AssetLoader` (generally by loading a `Gltf` file), +--- or by converting a [primitive](bevy_math::primitives) using [`into`](Into). +--- It is also possible to create one manually. They can be edited after creation. +--- +--- Meshes can be rendered with a [`Mesh2d`](crate::Mesh2d) and `MeshMaterial2d` +--- or [`Mesh3d`](crate::Mesh3d) and `MeshMaterial3d` for 2D and 3D respectively. +--- +--- A [`Mesh`] in Bevy is equivalent to a "primitive" in the glTF format, for a +--- glTF Mesh representation, see `GltfMesh`. +--- +--- ## Manual creation +--- +--- The following function will construct a flat mesh, to be rendered with a +--- `StandardMaterial` or `ColorMaterial`: +--- +--- ``` +--- # use bevy_mesh::{Mesh, Indices, PrimitiveTopology}; +--- # use bevy_asset::RenderAssetUsages; +--- fn create_simple_parallelogram() -> Mesh { +--- // Create a new mesh using a triangle list topology, where each set of 3 vertices composes a triangle. +--- Mesh::new(PrimitiveTopology::TriangleList, RenderAssetUsages::default()) +--- // Add 4 vertices, each with its own position attribute (coordinate in +--- // 3D space), for each of the corners of the parallelogram. +--- .with_inserted_attribute( +--- Mesh::ATTRIBUTE_POSITION, +--- vec![[0.0, 0.0, 0.0], [1.0, 2.0, 0.0], [2.0, 2.0, 0.0], [1.0, 0.0, 0.0]] +--- ) +--- // Assign a UV coordinate to each vertex. +--- .with_inserted_attribute( +--- Mesh::ATTRIBUTE_UV_0, +--- vec![[0.0, 1.0], [0.5, 0.0], [1.0, 0.0], [0.5, 1.0]] +--- ) +--- // Assign normals (everything points outwards) +--- .with_inserted_attribute( +--- Mesh::ATTRIBUTE_NORMAL, +--- vec![[0.0, 0.0, 1.0], [0.0, 0.0, 1.0], [0.0, 0.0, 1.0], [0.0, 0.0, 1.0]] +--- ) +--- // After defining all the vertices and their attributes, build each triangle using the +--- // indices of the vertices that make it up in a counter-clockwise order. +--- .with_inserted_indices(Indices::U32(vec![ +--- // First triangle +--- 0, 3, 1, +--- // Second triangle +--- 1, 3, 2 +--- ])) +--- } +--- ``` +--- +--- You can see how it looks like [here](https://github.com/bevyengine/bevy/blob/main/assets/docs/Mesh.png), +--- used in a [`Mesh3d`](crate::Mesh3d) with a square bevy logo texture, with added axis, points, +--- lines and text for clarity. +--- +--- ## Other examples +--- +--- For further visualization, explanation, and examples, see the built-in Bevy examples, +--- and the [implementation of the built-in shapes](https://github.com/bevyengine/bevy/tree/main/crates/bevy_mesh/src/primitives). +--- In particular, [generate_custom_mesh](https://github.com/bevyengine/bevy/blob/main/examples/3d/generate_custom_mesh.rs) +--- teaches you to access and modify the attributes of a [`Mesh`] after creating it. +--- +--- ## Common points of confusion +--- +--- - UV maps in Bevy start at the top-left, see [`ATTRIBUTE_UV_0`](Mesh::ATTRIBUTE_UV_0), +--- other APIs can have other conventions, `OpenGL` starts at bottom-left. +--- - It is possible and sometimes useful for multiple vertices to have the same +--- [position attribute](Mesh::ATTRIBUTE_POSITION) value, +--- it's a common technique in 3D modeling for complex UV mapping or other calculations. +--- - Bevy performs frustum culling based on the `Aabb` of meshes, which is calculated +--- and added automatically for new meshes only. If a mesh is modified, the entity's `Aabb` +--- needs to be updated manually or deleted so that it is re-calculated. +--- +--- ## Use with `StandardMaterial` +--- +--- To render correctly with `StandardMaterial`, a mesh needs to have properly defined: +--- - [`UVs`](Mesh::ATTRIBUTE_UV_0): Bevy needs to know how to map a texture onto the mesh +--- (also true for `ColorMaterial`). +--- - [`Normals`](Mesh::ATTRIBUTE_NORMAL): Bevy needs to know how light interacts with your mesh. +--- [0.0, 0.0, 1.0] is very common for simple flat meshes on the XY plane, +--- because simple meshes are smooth and they don't require complex light calculations. +--- - Vertex winding order: by default, `StandardMaterial.cull_mode` is `Some(Face::Back)`, +--- which means that Bevy would *only* render the "front" of each triangle, which +--- is the side of the triangle from where the vertices appear in a *counter-clockwise* order. +--- +--- ## Remote Inspection +--- +--- To transmit a [`Mesh`] between two running Bevy apps, e.g. through BRP, use [`SerializedMesh`]. +--- This type is only meant for short-term transmission between same versions and should not be stored anywhere. +---@field indices ? any +---@field morph_targets ? any +---@field morph_target_names ? any +---@field asset_usage ? RenderAssetUsages +---@field enable_raytracing ? boolean +---@field final_aabb ? Aabb3d | nil +Mesh = {} + + + +---@class MeshMorphWeights : ReflectReference +--- Control a specific [`Mesh`] instance's [morph targets]. These control the weights of +--- specific "mesh primitives" in scene formats like GLTF. They can be set manually, but +--- in most cases they should "automatically" synced by setting the [`MorphWeights`] component +--- on a parent entity. +--- +--- See [`MorphWeights`] for more details on Bevy's morph target implementation. +--- +--- Add this to an [`Entity`] with a [`Mesh3d`](crate::Mesh3d) with a [`MorphAttributes`] set +--- to control individual weights of each morph target. +--- +--- [morph targets]: https://en.wikipedia.org/wiki/Morph_target_animation +---@field weights ? number[] +MeshMorphWeights = {} + + + +---@class MorphWeights : ReflectReference +--- Controls the [morph targets] for all child [`Mesh3d`](crate::Mesh3d) entities. In most cases, [`MorphWeights`] should be considered +--- the "source of truth" when writing morph targets for meshes. However you can choose to write child [`MeshMorphWeights`] +--- if your situation requires more granularity. Just note that if you set [`MorphWeights`], it will overwrite child +--- [`MeshMorphWeights`] values. +--- +--- This exists because Bevy's [`Mesh`] corresponds to a _single_ surface / material, whereas morph targets +--- as defined in the GLTF spec exist on "multi-primitive meshes" (where each primitive is its own surface with its own material). +--- Therefore in Bevy [`MorphWeights`] an a parent entity are the "canonical weights" from a GLTF perspective, which then +--- synchronized to child [`Mesh3d`](crate::Mesh3d) / [`MeshMorphWeights`] (which correspond to "primitives" / "surfaces" from a GLTF perspective). +--- +--- Add this to the parent of one or more [`Entities`](`Entity`) with a [`Mesh3d`](crate::Mesh3d) with a [`MeshMorphWeights`]. +--- +--- [morph targets]: https://en.wikipedia.org/wiki/Morph_target_animation +---@field weights ? number[] +---@field first_mesh ? any +MorphWeights = {} + + + +---@class AnnulusMeshBuilder : ReflectReference +--- A builder for creating a [`Mesh`] with an [`Annulus`] shape. +---@field annulus ? Annulus +---@field resolution ? integer +AnnulusMeshBuilder = {} + + + +---@class Capsule2dMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Capsule2d`] shape. +---@field capsule ? Capsule2d +---@field resolution ? integer +Capsule2dMeshBuilder = {} + + + +---@class CircleMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Circle`] shape. +---@field circle ? Circle +---@field resolution ? integer +CircleMeshBuilder = {} + + + +---@class CircularMeshUvMode : ReflectReference +--- Specifies how to generate UV-mappings for the [`CircularSector`] and [`CircularSegment`] shapes. +--- +--- Currently the only variant is `Mask`, which is good for showing a portion of a texture that includes +--- the entire circle, particularly the same texture will be displayed with different fractions of a +--- complete circle. +--- +--- It's expected that more will be added in the future, such as a variant that causes the texture to be +--- scaled to fit the bounding box of the shape, which would be good for packed textures only including the +--- portion of the circle that is needed to display. +CircularMeshUvMode = {} + + + +---@class CircularSectorMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`CircularSector`] shape. +--- +--- The resulting mesh will have a UV-map such that the center of the circle is +--- at the center of the texture. +---@field sector ? CircularSector +---@field resolution ? integer +---@field uv_mode ? CircularMeshUvMode +CircularSectorMeshBuilder = {} + + + +---@class CircularSegmentMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`CircularSegment`] shape. +--- +--- The resulting mesh will have a UV-map such that the center of the circle is +--- at the center of the texture. +---@field segment ? CircularSegment +---@field resolution ? integer +---@field uv_mode ? CircularMeshUvMode +CircularSegmentMeshBuilder = {} + + + +---@class ConvexPolygonMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`ConvexPolygon`] shape. +--- +--- You must verify that the `vertices` are not concave when constructing this type. You can +--- guarantee this by creating a [`ConvexPolygon`] first, then calling [`ConvexPolygon::mesh()`]. +---@field vertices ? Vec2[] +ConvexPolygonMeshBuilder = {} + + + +---@class EllipseMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with an [`Ellipse`] shape. +---@field ellipse ? Ellipse +---@field resolution ? integer +EllipseMeshBuilder = {} + + + +---@class Polyline2dMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Polyline2d`] shape. +---@field polyline ? Polyline2d +Polyline2dMeshBuilder = {} + + + +---@class RectangleMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Rectangle`] shape. +---@field half_size ? Vec2 +RectangleMeshBuilder = {} + + + +---@class RegularPolygonMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`RegularPolygon`] shape. +---@field circumradius ? number +---@field sides ? integer +RegularPolygonMeshBuilder = {} + + + +---@class RhombusMeshBuilder : ReflectReference +--- A builder for creating a [`Mesh`] with an [`Rhombus`] shape. +---@field half_diagonals ? Vec2 +RhombusMeshBuilder = {} + + + +---@class Triangle2dMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Triangle2d`] shape. +---@field triangle ? Triangle2d +Triangle2dMeshBuilder = {} + + + +---@class Capsule3dMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Capsule3d`] shape. +---@field capsule ? Capsule3d +---@field rings ? integer +---@field longitudes ? integer +---@field latitudes ? integer +---@field uv_profile ? CapsuleUvProfile +Capsule3dMeshBuilder = {} + + + +---@class CapsuleUvProfile : ReflectReference +--- Manner in which UV coordinates are distributed vertically. +CapsuleUvProfile = {} + + + +---@class ConeAnchor : ReflectReference +--- Anchoring options for [`ConeMeshBuilder`] +ConeAnchor = {} + + + +---@class ConeMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Cone`] shape. +---@field cone ? Cone +---@field resolution ? integer +---@field anchor ? ConeAnchor +ConeMeshBuilder = {} + + + +---@class ConicalFrustumMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`ConicalFrustum`] shape. +---@field frustum ? ConicalFrustum +---@field resolution ? integer +---@field segments ? integer +ConicalFrustumMeshBuilder = {} + + + +---@class CuboidMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Cuboid`] shape. +---@field half_size ? Vec3 +CuboidMeshBuilder = {} + + + +---@class CylinderAnchor : ReflectReference +--- Anchoring options for [`CylinderMeshBuilder`] +CylinderAnchor = {} + + + +---@class CylinderMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Cylinder`] shape. +---@field cylinder ? Cylinder +---@field resolution ? integer +---@field segments ? integer +---@field caps ? boolean +---@field anchor ? CylinderAnchor +CylinderMeshBuilder = {} + + + +---@class PlaneMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Plane3d`] shape. +---@field plane ? Plane3d +---@field subdivisions ? integer +PlaneMeshBuilder = {} + + + +---@class Polyline3dMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Polyline3d`] shape. +---@field polyline ? Polyline3d +Polyline3dMeshBuilder = {} + + + +---@class Segment3dMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Segment3d`] shape. +---@field segment ? Segment3d +Segment3dMeshBuilder = {} + + + +---@class SphereKind : ReflectReference +--- A type of sphere mesh. +SphereKind = {} + + + +---@class SphereMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with an [`Sphere`] shape. +---@field sphere ? Sphere +---@field kind ? SphereKind +SphereMeshBuilder = {} + + + +---@class TetrahedronMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Tetrahedron`] shape. +---@field tetrahedron ? Tetrahedron +TetrahedronMeshBuilder = {} + + + +---@class TorusMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Torus`] shape. +---@field torus ? Torus +---@field minor_resolution ? integer +---@field major_resolution ? integer +---@field angle_range ? RangeInclusive +TorusMeshBuilder = {} + + + +---@class Triangle3dMeshBuilder : ReflectReference +--- A builder used for creating a [`Mesh`] with a [`Triangle3d`] shape. +---@field triangle ? Triangle3d +Triangle3dMeshBuilder = {} + + + +---@class SkinnedMesh : ReflectReference +---@field inverse_bindposes ? bevy_asset::handle::Handle +---@field joints ? Entity[] +SkinnedMesh = {} + + + +---@class ScriptAsset : ReflectReference +--- Represents a script loaded into memory as an asset +ScriptAsset = {} + + + +---@class FunctionArgInfo : ReflectReference +--- Information about a function argument. +---@field name ? Cow | nil +---@field arg_index ? integer +---@field type_id ? TypeId +FunctionArgInfo = {} + + + +---@class FunctionInfo : ReflectReference +--- Information about a function. +---@field name ? Cow +---@field namespace ? Namespace +---@field arg_info ? FunctionArgInfo[] +---@field return_info ? FunctionReturnInfo +---@field docs ? Cow | nil +FunctionInfo = {} + + + +---@class FunctionReturnInfo : ReflectReference +--- Information about a function return value. +---@field type_id ? TypeId +FunctionReturnInfo = {} + + + +---@class InteropError : ReflectReference +--- An error occurring when converting between rust and a script context. +InteropError = {} + + + +---@class Namespace : ReflectReference +--- A namespace for functions +Namespace = {} + + + +---@class LocationContext : ReflectReference +--- Describes a location within a script +---@field script_name ? string | nil +---@field line ? integer +---@field col ? integer | nil +LocationContext = {} + + + +---@class DynamicComponent : ReflectReference +--- A dynamic script component +---@field data ? ScriptValue +DynamicComponent = {} + + + +---@class VariadicTuple : ReflectReference +--- A tuple variant of script value +VariadicTuple = {} + + + +---@class ScriptError : ReflectReference +--- An error with an optional script Context +ScriptError = {} + + + +---@class CallbackLabel : ReflectReference +--- A string which disallows common invalid characters in callback labels, +--- particularly at the start of the string +--- +--- a valid callback label starts with a letter or underscore, and contains only ascii characters, as well as disallows some common keywords +---@field [1] string +CallbackLabel = {} + + + +---@class ScriptComponent : ReflectReference +--- A component which identifies the scripts existing on an entity. +--- +--- Event handlers search for components with this component to figure out which scripts to run and on which entities. +---@field [1] any +ScriptComponent = {} + + + +---@class ContextKey : ReflectReference +--- The key for a context. The context key is used for: +--- - Identifying the script itself, uniquely. +--- - later on it's mapped to a context, which will determine how the scripts are grouped in execution environments. +---@field entity ? Entity | nil +---@field script ? any +ContextKey = {} + + + +---@class AlphaMode : ReflectReference +--- Sets how a material's base color alpha channel is used for transparency. +AlphaMode = {} + + + +---@class CameraRenderGraph : ReflectReference +--- Configures the [`RenderGraph`] name assigned to be run for a given [`Camera`] entity. +CameraRenderGraph = {} + + + +---@class MipBias : ReflectReference +--- Camera component specifying a mip bias to apply when sampling from material textures. +--- +--- Often used in conjunction with antialiasing post-process effects to reduce textures blurriness. +---@field [1] number +MipBias = {} + + + +---@class TemporalJitter : ReflectReference +--- A subpixel offset to jitter a perspective camera's frustum by. +--- +--- Useful for temporal rendering techniques. +---@field offset ? Vec2 +TemporalJitter = {} + + + +---@class OcclusionCulling : ReflectReference +--- Add this component to a view in order to enable experimental GPU occlusion +--- culling. +--- +--- *Bevy's occlusion culling is currently marked as experimental.* There are +--- known issues whereby, in rare circumstances, occlusion culling can result in +--- meshes being culled that shouldn't be (i.e. meshes that turn invisible). +--- Please try it out and report issues. +--- +--- *Occlusion culling* allows Bevy to avoid rendering objects that are fully +--- behind other opaque or alpha tested objects. This is different from, and +--- complements, depth fragment rejection as the `DepthPrepass` enables. While +--- depth rejection allows Bevy to avoid rendering *pixels* that are behind +--- other objects, the GPU still has to examine those pixels to reject them, +--- which requires transforming the vertices of the objects and performing +--- skinning if the objects were skinned. Occlusion culling allows the GPU to go +--- a step further, avoiding even transforming the vertices of objects that it +--- can quickly prove to be behind other objects. +--- +--- Occlusion culling inherently has some overhead, because Bevy must examine +--- the objects' bounding boxes, and create an acceleration structure +--- (hierarchical Z-buffer) to perform the occlusion tests. Therefore, occlusion +--- culling is disabled by default. Only enable it if you measure it to be a +--- speedup on your scene. Note that, because Bevy's occlusion culling runs on +--- the GPU and is quite efficient, it's rare for occlusion culling to result in +--- a significant slowdown. +--- +--- Occlusion culling currently requires a `DepthPrepass`. If no depth prepass +--- is present on the view, the [`OcclusionCulling`] component will be ignored. +--- Additionally, occlusion culling is currently incompatible with deferred +--- shading; including both `DeferredPrepass` and [`OcclusionCulling`] results +--- in unspecified behavior. +--- +--- The algorithm that Bevy uses is known as [*two-phase occlusion culling*]. +--- When you enable occlusion culling, Bevy splits the depth prepass into two: +--- an *early* depth prepass and a *late* depth prepass. The early depth prepass +--- renders all the meshes that were visible last frame to produce a +--- conservative approximation of the depth buffer. Then, after producing an +--- acceleration structure known as a hierarchical Z-buffer or depth pyramid, +--- Bevy tests the bounding boxes of all meshes against that depth buffer. Those +--- that can be quickly proven to be behind the geometry rendered during the +--- early depth prepass are skipped entirely. The other potentially-visible +--- meshes are rendered during the late prepass, and finally all the visible +--- meshes are rendered as usual during the opaque, transparent, etc. passes. +--- +--- Unlike other occlusion culling systems you may be familiar with, Bevy's +--- occlusion culling is fully dynamic and requires no baking step. The CPU +--- overhead is minimal. Large skinned meshes and other dynamic objects can +--- occlude other objects. +--- +--- [*two-phase occlusion culling*]: +--- https://medium.com/@mil_kru/two-pass-occlusion-culling-4100edcad501 +OcclusionCulling = {} + + + +---@class GlobalsUniform : ReflectReference +--- Contains global values useful when writing shaders. +--- Currently only contains values related to time. +---@field time ? number +---@field delta_time ? number +---@field frame_count ? integer +GlobalsUniform = {} + + + +---@class ReadbackComplete : ReflectReference +--- An event that is triggered when a gpu readback is complete. +--- +--- The event contains the data as a `Vec`, which can be interpreted as the raw bytes of the +--- requested buffer or texture. +---@field entity ? Entity +---@field data ? integer[] +ReadbackComplete = {} + + + +---@class ShaderStorageBuffer : ReflectReference +--- A storage buffer that is prepared as a [`RenderAsset`] and uploaded to the GPU. +ShaderStorageBuffer = {} + + + +---@class MainEntity : ReflectReference +--- Component added on the render world entities to keep track of the corresponding main world entity. +--- +--- Can also be used as a newtype wrapper for main world entities. +---@field [1] Entity +MainEntity = {} + + + +---@class RenderEntity : ReflectReference +--- Component added on the main world entities that are synced to the Render World in order to keep track of the corresponding render world entity. +--- +--- Can also be used as a newtype wrapper for render world entities. +---@field [1] Entity +RenderEntity = {} + + + +---@class SyncToRenderWorld : ReflectReference +--- Marker component that indicates that its entity needs to be synchronized to the render world. +--- +--- This component is automatically added as a required component by [`ExtractComponentPlugin`] and [`SyncComponentPlugin`]. +--- For more information see [`SyncWorldPlugin`]. +--- +--- NOTE: This component should persist throughout the entity's entire lifecycle. +--- If this component is removed from its entity, the entity will be despawned. +--- +--- [`ExtractComponentPlugin`]: crate::extract_component::ExtractComponentPlugin +--- [`SyncComponentPlugin`]: crate::sync_component::SyncComponentPlugin +SyncToRenderWorld = {} + + + +---@class TemporaryRenderEntity : ReflectReference +--- Marker component that indicates that its entity needs to be despawned at the end of the frame. +TemporaryRenderEntity = {} + + + +---@class ColorGrading : ReflectReference +--- Configures filmic color grading parameters to adjust the image appearance. +--- +--- Color grading is applied just before tonemapping for a given +--- [`Camera`](bevy_camera::Camera) entity, with the sole exception of the +--- `post_saturation` value in [`ColorGradingGlobal`], which is applied after +--- tonemapping. +---@field global ? ColorGradingGlobal +---@field shadows ? ColorGradingSection +---@field midtones ? ColorGradingSection +---@field highlights ? ColorGradingSection +ColorGrading = {} + + + +---@class ColorGradingGlobal : ReflectReference +--- Filmic color grading values applied to the image as a whole (as opposed to +--- individual sections, like shadows and highlights). +---@field exposure ? number +---@field temperature ? number +---@field tint ? number +---@field hue ? number +---@field post_saturation ? number +---@field midtones_range ? Range +ColorGradingGlobal = {} + + + +---@class ColorGradingSection : ReflectReference +--- A section of color grading values that can be selectively applied to +--- shadows, midtones, and highlights. +---@field saturation ? number +---@field contrast ? number +---@field gamma ? number +---@field gain ? number +---@field lift ? number +ColorGradingSection = {} + + + +---@class Hdr : ReflectReference +--- If this component is added to a camera, the camera will use an intermediate "high dynamic range" render texture. +--- This allows rendering with a wider range of lighting values. However, this does *not* affect +--- whether the camera will render with hdr display output (which bevy does not support currently) +--- and only affects the intermediate render texture. +Hdr = {} + + + +---@class Msaa : ReflectReference +--- Component for configuring the number of samples for [Multi-Sample Anti-Aliasing](https://en.wikipedia.org/wiki/Multisample_anti-aliasing) +--- for a [`Camera`](bevy_camera::Camera). +--- +--- Defaults to 4 samples. A higher number of samples results in smoother edges. +--- +--- Some advanced rendering features may require that MSAA is disabled. +--- +--- Note that the web currently only supports 1 or 4 samples. +Msaa = {} + + + +---@class RenderVisibleEntities : ReflectReference +--- Collection of entities visible from the current view. +--- +--- This component is extracted from [`VisibleEntities`]. +RenderVisibleEntities = {} + + + +---@class Screenshot : ReflectReference +--- A component that signals to the renderer to capture a screenshot this frame. +--- +--- This component should be spawned on a new entity with an observer that will trigger +--- with [`ScreenshotCaptured`] when the screenshot is ready. +--- +--- Screenshots are captured asynchronously and may not be available immediately after the frame +--- that the component is spawned on. The observer should be used to handle the screenshot when it +--- is ready. +--- +--- Note that the screenshot entity will be despawned after the screenshot is captured and the +--- observer is triggered. +--- +--- # Usage +--- +--- ``` +--- # use bevy_ecs::prelude::*; +--- # use bevy_render::view::screenshot::{save_to_disk, Screenshot}; +--- +--- fn take_screenshot(mut commands: Commands) { +--- commands.spawn(Screenshot::primary_window()) +--- .observe(save_to_disk("screenshot.png")); +--- } +--- ``` +---@field [1] RenderTarget +Screenshot = {} + + + +---@class ScreenshotCaptured : ReflectReference +---@field entity ? Entity +---@field image ? Image +ScreenshotCaptured = {} + + + +---@class Anchor : ReflectReference +--- Normalized (relative to its size) offset of a 2d renderable entity from its [`Transform`]. +---@field [1] Vec2 +Anchor = {} + + + +---@class Sprite : ReflectReference +--- Describes a sprite to be rendered to a 2D camera +---@field image ? any +---@field texture_atlas ? TextureAtlas | nil +---@field color ? Color +---@field flip_x ? boolean +---@field flip_y ? boolean +---@field custom_size ? Vec2 | nil +---@field rect ? Rect | nil +---@field image_mode ? SpriteImageMode +Sprite = {} + + + +---@class SpriteImageMode : ReflectReference +--- Controls how the image is altered when scaled. +SpriteImageMode = {} + + + +---@class SpriteScalingMode : ReflectReference +--- Represents various modes for proportional scaling of a texture. +--- +--- Can be used in [`SpriteImageMode::Scale`]. +SpriteScalingMode = {} + + + +---@class Text2d : ReflectReference +--- The top-level 2D text component. +--- +--- Adding `Text2d` to an entity will pull in required components for setting up 2d text. +--- [Example usage.](https://github.com/bevyengine/bevy/blob/latest/examples/2d/text2d.rs) +--- +--- The string in this component is the first 'text span' in a hierarchy of text spans that are collected into +--- a [`ComputedTextBlock`]. See `TextSpan` for the component used by children of entities with [`Text2d`]. +--- +--- With `Text2d` the `justify` field of [`TextLayout`] only affects the internal alignment of a block of text and not its +--- relative position, which is controlled by the [`Anchor`] component. +--- This means that for a block of text consisting of only one line that doesn't wrap, the `justify` field will have no effect. +--- +--- +--- ``` +--- # use bevy_asset::Handle; +--- # use bevy_color::Color; +--- # use bevy_color::palettes::basic::BLUE; +--- # use bevy_ecs::world::World; +--- # use bevy_text::{Font, Justify, TextLayout, TextFont, TextColor, TextSpan}; +--- # use bevy_sprite::Text2d; +--- # +--- # let font_handle: Handle = Default::default(); +--- # let mut world = World::default(); +--- # +--- // Basic usage. +--- world.spawn(Text2d::new("hello world!")); +--- +--- // With non-default style. +--- world.spawn(( +--- Text2d::new("hello world!"), +--- TextFont { +--- font: font_handle.clone().into(), +--- font_size: 60.0, +--- ..Default::default() +--- }, +--- TextColor(BLUE.into()), +--- )); +--- +--- // With text justification. +--- world.spawn(( +--- Text2d::new("hello world\nand bevy!"), +--- TextLayout::new_with_justify(Justify::Center) +--- )); +--- +--- // With spans +--- world.spawn(Text2d::new("hello ")).with_children(|parent| { +--- parent.spawn(TextSpan::new("world")); +--- parent.spawn((TextSpan::new("!"), TextColor(BLUE.into()))); +--- }); +--- ``` +---@field [1] string +Text2d = {} + + + +---@class Text2dShadow : ReflectReference +--- Adds a shadow behind `Text2d` text +--- +--- Use `TextShadow` for text drawn with `bevy_ui` +---@field offset ? Vec2 +---@field color ? Color +Text2dShadow = {} + + + +---@class BorderRect : ReflectReference +--- Defines border insets that shrink a rectangle from its minimum and maximum corners. +--- +--- This struct is used to represent thickness or offsets from the four edges +--- of a rectangle, with values increasing inwards. +---@field min_inset ? Vec2 +---@field max_inset ? Vec2 +BorderRect = {} + + + +---@class SliceScaleMode : ReflectReference +--- Defines how a texture slice scales when resized +SliceScaleMode = {} + + + +---@class TextureSlicer : ReflectReference +--- Slices a texture using the **9-slicing** technique. This allows to reuse an image at various sizes +--- without needing to prepare multiple assets. The associated texture will be split into nine portions, +--- so that on resize the different portions scale or tile in different ways to keep the texture in proportion. +--- +--- For example, when resizing a 9-sliced texture the corners will remain unscaled while the other +--- sections will be scaled or tiled. +--- +--- See [9-sliced](https://en.wikipedia.org/wiki/9-slice_scaling) textures. +---@field border ? BorderRect +---@field center_scale_mode ? SliceScaleMode +---@field sides_scale_mode ? SliceScaleMode +---@field max_corner_scale ? number +TextureSlicer = {} + + + +---@class ColorMaterial : ReflectReference +--- A [2d material](Material2d) that renders [2d meshes](crate::Mesh2d) with a texture tinted by a uniform color +---@field color ? Color +---@field alpha_mode ? AlphaMode2d +---@field uv_transform ? Affine2 +---@field texture ? any +ColorMaterial = {} + + + +---@class AlphaMode2d : ReflectReference +--- Sets how a 2d material's base color alpha channel is used for transparency. +--- Currently, this only works with [`Mesh2d`]. Sprites are always transparent. +--- +--- This is very similar to [`AlphaMode`](bevy_render::alpha::AlphaMode) but this only applies to 2d meshes. +--- We use a separate type because 2d doesn't support all the transparency modes that 3d does. +AlphaMode2d = {} + + + +---@class Mesh2dWireframe : ReflectReference +---@field [1] any +Mesh2dWireframe = {} + + + +---@class NoWireframe2d : ReflectReference +--- Disables wireframe rendering for any entity it is attached to. +--- It will ignore the [`Wireframe2dConfig`] global setting. +--- +--- This requires the [`Wireframe2dPlugin`] to be enabled. +NoWireframe2d = {} + + + +---@class Wireframe2d : ReflectReference +--- Enables wireframe rendering for any entity it is attached to. +--- It will ignore the [`Wireframe2dConfig`] global setting. +--- +--- This requires the [`Wireframe2dPlugin`] to be enabled. +Wireframe2d = {} + + + +---@class Wireframe2dColor : ReflectReference +--- Sets the color of the [`Wireframe2d`] of the entity it is attached to. +--- +--- If this component is present but there's no [`Wireframe2d`] component, +--- it will still affect the color of the wireframe when [`Wireframe2dConfig::global`] is set to true. +--- +--- This overrides the [`Wireframe2dConfig::default_color`]. +---@field color ? Color +Wireframe2dColor = {} + + + +---@class Wireframe2dConfig : ReflectReference +---@field global ? boolean +---@field default_color ? Color +Wireframe2dConfig = {} + + + +---@class Wireframe2dMaterial : ReflectReference +---@field color ? Color +Wireframe2dMaterial = {} + + + +---@class TileData : ReflectReference +--- Data for a single tile in the tilemap chunk. +---@field tileset_index ? integer +---@field color ? Color +---@field visible ? boolean +TileData = {} + + + +---@class TilemapChunk : ReflectReference +--- A component representing a chunk of a tilemap. +--- Each chunk is a rectangular section of tiles that is rendered as a single mesh. +---@field chunk_size ? UVec2 +---@field tile_display_size ? UVec2 +---@field tileset ? any +---@field alpha_mode ? AlphaMode2d +TilemapChunk = {} + + + +---@class TilemapChunkMeshCache : ReflectReference +--- A resource storing the meshes for each tilemap chunk size. +---@field [1] any +TilemapChunkMeshCache = {} + + + +---@class TilemapChunkTileData : ReflectReference +--- Component storing the data of tiles within a chunk. +--- Each index corresponds to a specific tile in the tileset. `None` indicates an empty tile. +---@field [1] TileData | nil[] +TilemapChunkTileData = {} + + + +---@class Edge : ReflectReference +--- An edge in the graph +---@field from ? ReflectNodeId +---@field to ? ReflectNodeId +Edge = {} + + + +---@class ReflectNodeId : ReflectReference +ReflectNodeId = {} + + + +---@class ReflectSystemGraph : ReflectReference +--- A graph of systems and system sets for a single schedule +---@field schedule ? ReflectSchedule +---@field nodes ? ReflectSystemGraphNode[] +---@field dependencies ? Edge[] +---@field hierarchy ? Edge[] +ReflectSystemGraph = {} + + + +---@class ReflectSystemGraphNode : ReflectReference +--- A node in the reflectable system graph +ReflectSystemGraphNode = {} + + + +---@class ReflectSystemSet : ReflectReference +--- A reflectable system set. +---@field node_id ? ReflectNodeId +---@field debug ? string +---@field type_id ? TypeId | nil +ReflectSystemSet = {} + + + +---@class ReflectableScheduleLabel : ReflectReference +ReflectableScheduleLabel = {} + + + +---@class TextBounds : ReflectReference +--- The maximum width and height of text. The text will wrap according to the specified size. +--- +--- Characters out of the bounds after wrapping will be truncated. Text is aligned according to the +--- specified [`Justify`](crate::text::Justify). +--- +--- Note: only characters that are completely out of the bounds will be truncated, so this is not a +--- reliable limit if it is necessary to contain the text strictly in the bounds. Currently this +--- component is mainly useful for text wrapping only. +---@field width ? number | nil +---@field height ? number | nil +TextBounds = {} + + + +---@class GlyphAtlasInfo : ReflectReference +--- Information about a glyph in an atlas. +--- +--- Rasterized glyphs are stored as rectangles +--- in one or more [`FontAtlas`](crate::FontAtlas)es. +--- +--- Used in [`PositionedGlyph`] and [`FontAtlasSet`](crate::FontAtlasSet). +---@field texture ? any +---@field texture_atlas ? any +---@field location ? GlyphAtlasLocation +GlyphAtlasInfo = {} + + + +---@class GlyphAtlasLocation : ReflectReference +--- The location of a glyph in an atlas, +--- and how it should be positioned when placed. +--- +--- Used in [`GlyphAtlasInfo`] and [`FontAtlas`](crate::FontAtlas). +---@field glyph_index ? integer +---@field offset ? IVec2 +GlyphAtlasLocation = {} + + + +---@class PositionedGlyph : ReflectReference +--- A glyph of a font, typically representing a single character, positioned in screen space. +--- +--- Contains information about how and where to render a glyph. +--- +--- Used in [`TextPipeline::update_text_layout_info`](crate::TextPipeline::update_text_layout_info) and [`TextLayoutInfo`](`crate::TextLayoutInfo`) for rendering glyphs. +---@field position ? Vec2 +---@field size ? Vec2 +---@field atlas_info ? GlyphAtlasInfo +---@field span_index ? integer +---@field line_index ? integer +---@field byte_index ? integer +---@field byte_length ? integer +PositionedGlyph = {} + + + +---@class RunGeometry : ReflectReference +--- Geometry of a text run used to render text decorations like background colors, strikethrough, and underline. +--- A run in `bevy_text` is a contiguous sequence of glyphs on a line that share the same text attributes like font, +--- font size, and line height. +---@field span_index ? integer +---@field bounds ? Rect +---@field strikethrough_y ? number +---@field strikethrough_thickness ? number +---@field underline_y ? number +---@field underline_thickness ? number +RunGeometry = {} + + + +---@class TextLayoutInfo : ReflectReference +--- Render information for a corresponding text block. +--- +--- Contains scaled glyphs and their size. Generated via [`TextPipeline::update_text_layout_info`] when an entity has +--- [`TextLayout`] and [`ComputedTextBlock`] components. +---@field scale_factor ? number +---@field glyphs ? PositionedGlyph[] +---@field run_geometry ? RunGeometry[] +---@field size ? Vec2 +TextLayoutInfo = {} + + + +---@class ComputedTextBlock : ReflectReference +--- Computed information for a text block. +--- +--- See [`TextLayout`]. +--- +--- Automatically updated by 2d and UI text systems. +---@field entities ? TextEntity[] +---@field needs_rerender ? boolean +ComputedTextBlock = {} + + + +---@class FontFeatureTag : ReflectReference +--- An OpenType font feature tag. +---@field [1] integer[] +FontFeatureTag = {} + + + +---@class FontFeatures : ReflectReference +--- OpenType features for .otf fonts that support them. +--- +--- Examples features include ligatures, small-caps, and fractional number display. For the complete +--- list of OpenType features, see the spec at +--- ``. +--- +--- # Usage: +--- ``` +--- use bevy_text::{FontFeatureTag, FontFeatures}; +--- +--- // Create using the builder +--- let font_features = FontFeatures::builder() +--- .enable(FontFeatureTag::STANDARD_LIGATURES) +--- .set(FontFeatureTag::WEIGHT, 300) +--- .build(); +--- +--- // Create from a list +--- let more_font_features: FontFeatures = [ +--- FontFeatureTag::STANDARD_LIGATURES, +--- FontFeatureTag::OLDSTYLE_FIGURES, +--- FontFeatureTag::TABULAR_FIGURES +--- ].into(); +--- ``` +---@field features ? [FontFeatureTag, integer][] +FontFeatures = {} + + + +---@class FontHinting : ReflectReference +--- Font hinting strategy. +--- +--- The text bounds can underflow or overflow slightly with `FontHinting::Enabled`. +--- +--- +FontHinting = {} + + + +---@class FontSmoothing : ReflectReference +--- Determines which antialiasing method to use when rendering text. By default, text is +--- rendered with grayscale antialiasing, but this can be changed to achieve a pixelated look. +--- +--- **Note:** Subpixel antialiasing is not currently supported. +FontSmoothing = {} + + + +---@class FontWeight : ReflectReference +--- How thick or bold the strokes of a font appear. +--- +--- Valid font weights range from 1 to 1000, inclusive. +--- Weights above 1000 are clamped to 1000. +--- A weight of 0 is treated as [`FontWeight::DEFAULT`]. +--- +--- `` +---@field [1] integer +FontWeight = {} + + + +---@class Justify : ReflectReference +--- Describes the horizontal alignment of multiple lines of text relative to each other. +--- +--- This only affects the internal positioning of the lines of text within a text entity and +--- does not affect the text entity's position. +--- +--- _Has no affect on a single line text entity_, unless used together with a +--- [`TextBounds`](super::bounds::TextBounds) component with an explicit `width` value. +Justify = {} + + + +---@class LineBreak : ReflectReference +--- Determines how lines will be broken when preventing text from running out of bounds. +LineBreak = {} + + + +---@class LineHeight : ReflectReference +--- Specifies the height of each line of text for `Text` and `Text2d` +--- +--- Default is 1.2x the font size +LineHeight = {} + + + +---@class Strikethrough : ReflectReference +--- A text entity with this component is drawn with strikethrough. +Strikethrough = {} + + + +---@class StrikethroughColor : ReflectReference +--- Color for the text's strikethrough. If this component is not present, its `TextColor` will be used. +---@field [1] Color +StrikethroughColor = {} + + + +---@class TextBackgroundColor : ReflectReference +--- The background color of the text for this section. +---@field [1] Color +TextBackgroundColor = {} + + + +---@class TextColor : ReflectReference +--- The color of the text for this section. +---@field [1] Color +TextColor = {} + + + +---@class TextEntity : ReflectReference +--- A sub-entity of a [`ComputedTextBlock`]. +--- +--- Returned by [`ComputedTextBlock::entities`]. +---@field entity ? Entity +---@field depth ? integer +TextEntity = {} + + + +---@class TextFont : ReflectReference +--- `TextFont` determines the style of a text span within a [`ComputedTextBlock`], specifically +--- the font face, the font size, the line height, and the antialiasing method. +---@field font ? bevy_asset::handle::Handle +---@field font_size ? number +---@field weight ? FontWeight +---@field font_smoothing ? FontSmoothing +---@field font_features ? FontFeatures +TextFont = {} + + + +---@class TextLayout : ReflectReference +--- Component with text format settings for a block of text. +--- +--- A block of text is composed of text spans, which each have a separate string value and [`TextFont`]. Text +--- spans associated with a text block are collected into [`ComputedTextBlock`] for layout, and then inserted +--- to [`TextLayoutInfo`] for rendering. +--- +--- See `Text2d` in `bevy_sprite` for the core component of 2d text, and `Text` in `bevy_ui` for UI text. +---@field justify ? Justify +---@field linebreak ? LineBreak +TextLayout = {} + + + +---@class TextSpan : ReflectReference +--- A span of text in a tree of spans. +--- +--- A `TextSpan` is only valid when it exists as a child of a parent that has either `Text` or +--- `Text2d`. The parent's `Text` / `Text2d` component contains the base text content. Any children +--- with `TextSpan` extend this text by appending their content to the parent's text in sequence to +--- form a [`ComputedTextBlock`]. The parent's [`TextLayout`] determines the layout of the block +--- but each node has its own [`TextFont`] and [`TextColor`]. +---@field [1] string +TextSpan = {} + + + +---@class Underline : ReflectReference +--- Add to a text entity to draw its text with underline. +Underline = {} + + + +---@class UnderlineColor : ReflectReference +--- Color for the text's underline. If this component is not present, its `TextColor` will be used. +---@field [1] Color +UnderlineColor = {} + + + +---@class UiScale : ReflectReference +--- The current scale of the UI. +--- +--- A multiplier to fixed-sized ui values. +--- **Note:** This will only affect fixed ui values like [`Val::Px`] +---@field [1] number +UiScale = {} + + + +---@class AutoDirectionalNavigation : ReflectReference +--- Marker component to enable automatic directional navigation to and from the entity. +--- +--- Simply add this component to your UI entities so that the navigation algorithm will +--- consider this entity in its calculations: +--- +--- ```rust +--- # use bevy_ecs::prelude::*; +--- # use bevy_ui::auto_directional_navigation::AutoDirectionalNavigation; +--- fn spawn_auto_nav_button(mut commands: Commands) { +--- commands.spawn(( +--- // ... Button, Node, etc. ... +--- AutoDirectionalNavigation::default(), // That's it! +--- )); +--- } +--- ``` +--- +--- # Multi-Layer UIs and Z-Index +--- +--- **Important**: Automatic navigation is currently **z-index agnostic** and treats +--- all entities with `AutoDirectionalNavigation` as a flat set, regardless of which UI layer +--- or z-index they belong to. This means navigation may jump between different layers (e.g., +--- from a background menu to an overlay popup). +--- +--- **Workarounds** for multi-layer UIs: +--- +--- 1. **Per-layer manual edge generation**: Query entities by layer and call +--- [`auto_generate_navigation_edges()`](bevy_input_focus::directional_navigation::auto_generate_navigation_edges) +--- separately for each layer: +--- ```rust,ignore +--- for layer in &layers { +--- let nodes: Vec = query_layer(layer).collect(); +--- auto_generate_navigation_edges(&mut nav_map, &nodes, &config); +--- } +--- ``` +--- +--- 2. **Manual cross-layer navigation**: Use +--- [`DirectionalNavigationMap::add_edge()`](bevy_input_focus::directional_navigation::DirectionalNavigationMap::add_edge) +--- to define explicit connections between layers (e.g., "Back" button to main menu). +--- +--- 3. **Remove component when layer is hidden**: Dynamically add/remove +--- [`AutoDirectionalNavigation`] based on which layers are currently active. +--- +--- See issue [#21679](https://github.com/bevyengine/bevy/issues/21679) for planned +--- improvements to layer-aware automatic navigation. +--- +--- # Opting Out +--- +--- To disable automatic navigation for specific entities: +--- +--- - **Remove the component**: Simply don't add [`AutoDirectionalNavigation`] to entities +--- that should only use manual navigation edges. +--- - **Dynamically toggle**: Remove/insert the component at runtime to enable/disable +--- automatic navigation as needed. +--- +--- Manual edges defined via [`DirectionalNavigationMap`](bevy_input_focus::directional_navigation::DirectionalNavigationMap) +--- are completely independent and will continue to work regardless of this component. +--- +--- # Additional Requirements +--- +--- Entities must also have: +--- - [`ComputedNode`] - for size information +--- - [`UiGlobalTransform`] - for position information +--- +--- These are automatically added by `bevy_ui` when you spawn UI entities. +--- +--- # Custom UI Systems +--- +--- For custom UI frameworks, you can call +--- [`auto_generate_navigation_edges`](bevy_input_focus::directional_navigation::auto_generate_navigation_edges) +--- directly in your own system instead of using this component. +---@field respect_tab_order ? boolean +AutoDirectionalNavigation = {} + + + +---@class FocusPolicy : ReflectReference +--- Describes whether the node should block interactions with lower nodes +FocusPolicy = {} + + + +---@class Interaction : ReflectReference +--- Describes what type of input interaction has occurred for a UI node. +--- +--- This is commonly queried with a `Changed` filter. +--- +--- Updated in [`ui_focus_system`]. +--- +--- If a UI node has both [`Interaction`] and [`InheritedVisibility`] components, +--- [`Interaction`] will always be [`Interaction::None`] +--- when [`InheritedVisibility::get()`] is false. +--- This ensures that hidden UI nodes are not interactable, +--- and do not end up stuck in an active state if hidden at the wrong time. +--- +--- Note that you can also control the visibility of a node using the [`Display`](crate::ui_node::Display) property, +--- which fully collapses it during layout calculations. +--- +--- # See also +--- +--- - [`Button`](crate::widget::Button) which requires this component +--- - [`RelativeCursorPosition`] to obtain the position of the cursor relative to current node +Interaction = {} + + + +---@class RelativeCursorPosition : ReflectReference +--- A component storing the position of the mouse relative to the node, (0., 0.) being the center and (0.5, 0.5) being the bottom-right +--- If the mouse is not over the node, the value will go beyond the range of (-0.5, -0.5) to (0.5, 0.5) +--- +--- It can be used alongside [`Interaction`] to get the position of the press. +--- +--- The component is updated when it is in the same entity with [`Node`]. +---@field cursor_over ? boolean +---@field normalized ? Vec2 | nil +RelativeCursorPosition = {} + + + +---@class UiPosition : ReflectReference +--- Responsive position relative to a UI node. +---@field anchor ? Vec2 +---@field x ? Val +---@field y ? Val +UiPosition = {} + + + +---@class UiRect : ReflectReference +--- A type which is commonly used to define margins, paddings and borders. +--- +--- # Examples +--- +--- ## Margin +--- +--- A margin is used to create space around UI elements, outside of any defined borders. +--- +--- ``` +--- # use bevy_ui::{UiRect, Val}; +--- # +--- let margin = UiRect::all(Val::Auto); // Centers the UI element +--- ``` +--- +--- ## Padding +--- +--- A padding is used to create space around UI elements, inside of any defined borders. +--- +--- ``` +--- # use bevy_ui::{UiRect, Val}; +--- # +--- let padding = UiRect { +--- left: Val::Px(10.0), +--- right: Val::Px(20.0), +--- top: Val::Px(30.0), +--- bottom: Val::Px(40.0), +--- }; +--- ``` +--- +--- ## Borders +--- +--- A border is used to define the width of the border of a UI element. +--- +--- ``` +--- # use bevy_ui::{UiRect, Val}; +--- # +--- let border = UiRect { +--- left: Val::Px(10.0), +--- right: Val::Px(20.0), +--- top: Val::Px(30.0), +--- bottom: Val::Px(40.0), +--- }; +--- ``` +---@field left ? Val +---@field right ? Val +---@field top ? Val +---@field bottom ? Val +UiRect = {} + + + +---@class Val : ReflectReference +--- Represents the possible value types for layout properties. +--- +--- This enum allows specifying values for various [`Node`](crate::Node) properties in different units, +--- such as logical pixels, percentages, or automatically determined values. +--- +--- `Val` also implements [`core::str::FromStr`] to allow parsing values from strings in the format `#.#px`. Whitespaces between the value and unit is allowed. The following units are supported: +--- * `px`: logical pixels +--- * `%`: percentage +--- * `vw`: percentage of the viewport width +--- * `vh`: percentage of the viewport height +--- * `vmin`: percentage of the viewport's smaller dimension +--- * `vmax`: percentage of the viewport's larger dimension +--- +--- Additionally, `auto` will be parsed as [`Val::Auto`]. +Val = {} + + + +---@class AngularColorStop : ReflectReference +--- An angular color stop for a conic gradient +---@field color ? Color +---@field angle ? number | nil +---@field hint ? number +AngularColorStop = {} + + + +---@class BackgroundGradient : ReflectReference +--- A UI node that displays a gradient +---@field [1] Gradient[] +BackgroundGradient = {} + + + +---@class BorderGradient : ReflectReference +--- A UI node border that displays a gradient +---@field [1] Gradient[] +BorderGradient = {} + + + +---@class ColorStop : ReflectReference +--- A color stop for a gradient +---@field color ? Color +---@field point ? Val +---@field hint ? number +ColorStop = {} + + + +---@class ConicGradient : ReflectReference +--- A conic gradient +--- +--- +---@field color_space ? InterpolationColorSpace +---@field start ? number +---@field position ? UiPosition +---@field stops ? AngularColorStop[] +ConicGradient = {} + + + +---@class Gradient : ReflectReference +Gradient = {} + + + +---@class InterpolationColorSpace : ReflectReference +--- The color space used for interpolation. +InterpolationColorSpace = {} + + + +---@class LinearGradient : ReflectReference +--- A linear gradient +--- +--- +---@field color_space ? InterpolationColorSpace +---@field angle ? number +---@field stops ? ColorStop[] +LinearGradient = {} + + + +---@class RadialGradient : ReflectReference +--- A radial gradient +--- +--- +---@field color_space ? InterpolationColorSpace +---@field position ? UiPosition +---@field shape ? RadialGradientShape +---@field stops ? ColorStop[] +RadialGradient = {} + + + +---@class RadialGradientShape : ReflectReference +RadialGradientShape = {} + + + +---@class ContentSize : ReflectReference +--- A node with a `ContentSize` component is a node where its size +--- is based on its content. +ContentSize = {} + + + +---@class AlignContent : ReflectReference +--- Used to control how items are distributed. +--- - For Flexbox containers, controls alignment of lines if `flex_wrap` is set to [`FlexWrap::Wrap`] and there are multiple lines of items. +--- - For CSS Grid containers, controls alignment of grid rows. +--- +--- +AlignContent = {} + + + +---@class AlignItems : ReflectReference +--- Used to control how each individual item is aligned by default within the space they're given. +--- - For Flexbox containers, sets default cross axis alignment of the child items. +--- - For CSS Grid containers, controls block (vertical) axis alignment of children of this grid container within their grid areas. +--- +--- +AlignItems = {} + + + +---@class AlignSelf : ReflectReference +--- Used to control how the specified item is aligned within the space it's given. +--- - For Flexbox items, controls cross axis alignment of the item. +--- - For CSS Grid items, controls block (vertical) axis alignment of a grid item within its grid area. +--- +--- +AlignSelf = {} + + + +---@class BackgroundColor : ReflectReference +--- The background color of the node +--- +--- This serves as the "fill" color. +---@field [1] Color +BackgroundColor = {} + + + +---@class BorderColor : ReflectReference +--- The border color of the UI node. +---@field top ? Color +---@field right ? Color +---@field bottom ? Color +---@field left ? Color +BorderColor = {} + + + +---@class BorderRadius : ReflectReference +--- Used to add rounded corners to a UI node. You can set a UI node to have uniformly +--- rounded corners or specify different radii for each corner. If a given radius exceeds half +--- the length of the smallest dimension between the node's height or width, the radius will +--- calculated as half the smallest dimension. +--- +--- Elliptical nodes are not supported yet. Percentage values are based on the node's smallest +--- dimension, either width or height. +--- +--- # Example +--- ```rust +--- # use bevy_ecs::prelude::*; +--- # use bevy_ui::prelude::*; +--- # use bevy_color::palettes::basic::{BLUE}; +--- fn setup_ui(mut commands: Commands) { +--- commands.spawn(( +--- Node { +--- width: Val::Px(100.), +--- height: Val::Px(100.), +--- border: UiRect::all(Val::Px(2.)), +--- border_radius: BorderRadius::new( +--- // top left +--- Val::Px(10.), +--- // top right +--- Val::Px(20.), +--- // bottom right +--- Val::Px(30.), +--- // bottom left +--- Val::Px(40.), +--- ), +--- ..Default::default() +--- }, +--- BackgroundColor(BLUE.into()), +--- )); +--- } +--- ``` +--- +--- +---@field top_left ? Val +---@field top_right ? Val +---@field bottom_right ? Val +---@field bottom_left ? Val +BorderRadius = {} + + + +---@class BoxShadow : ReflectReference +--- List of shadows to draw for a [`Node`]. +--- +--- Draw order is determined implicitly from the vector of [`ShadowStyle`]s, back-to-front. +---@field [1] ShadowStyle[] +BoxShadow = {} + + + +---@class BoxSizing : ReflectReference +--- Which part of a Node's box length styles like width and height control +--- +--- See: +BoxSizing = {} + + + +---@class CalculatedClip : ReflectReference +--- The calculated clip of the node +---@field clip ? Rect +CalculatedClip = {} + + + +---@class ComputedNode : ReflectReference +--- Provides the computed size and layout properties of the node. +--- +--- Fields in this struct are public but should not be modified under most circumstances. +--- For example, in a scrollbar you may want to derive the handle's size from the proportion of +--- scrollable content in-view. You can directly modify `ComputedNode` after layout to set the +--- handle size without any delays. +---@field stack_index ? integer +---@field size ? Vec2 +---@field content_size ? Vec2 +---@field scrollbar_size ? Vec2 +---@field scroll_position ? Vec2 +---@field outline_width ? number +---@field outline_offset ? number +---@field unrounded_size ? Vec2 +---@field border ? BorderRect +---@field border_radius ? ResolvedBorderRadius +---@field padding ? BorderRect +---@field inverse_scale_factor ? number +ComputedNode = {} + + + +---@class ComputedUiRenderTargetInfo : ReflectReference +--- Derived information about the render target for this UI node. +---@field scale_factor ? number +---@field physical_size ? UVec2 +ComputedUiRenderTargetInfo = {} + + + +---@class ComputedUiTargetCamera : ReflectReference +--- Derived information about the camera target for this UI node. +--- +--- Updated in [`UiSystems::Prepare`](crate::UiSystems::Prepare) by [`propagate_ui_target_cameras`](crate::update::propagate_ui_target_cameras) +---@field camera ? Entity +ComputedUiTargetCamera = {} + + + +---@class Display : ReflectReference +--- Defines the layout model used by this node. +--- +--- Part of the [`Node`] component. +Display = {} + + + +---@class FlexDirection : ReflectReference +--- Defines how flexbox items are ordered within a flexbox +FlexDirection = {} + + + +---@class FlexWrap : ReflectReference +--- Defines if flexbox items appear on a single line or on multiple lines +FlexWrap = {} + + + +---@class GlobalZIndex : ReflectReference +--- `GlobalZIndex` allows a [`Node`] entity anywhere in the UI hierarchy to escape the implicit draw ordering of the UI's layout tree and +--- be rendered above or below other UI nodes. +--- Nodes with a `GlobalZIndex` of greater than 0 will be drawn on top of nodes without a `GlobalZIndex` or nodes with a lower `GlobalZIndex`. +--- Nodes with a `GlobalZIndex` of less than 0 will be drawn below nodes without a `GlobalZIndex` or nodes with a greater `GlobalZIndex`. +--- +--- If two Nodes have the same `GlobalZIndex`, the node with the greater [`ZIndex`] will be drawn on top. +---@field [1] integer +GlobalZIndex = {} + + + +---@class GridAutoFlow : ReflectReference +--- Controls whether grid items are placed row-wise or column-wise as well as whether the sparse or dense packing algorithm is used. +--- +--- The "dense" packing algorithm attempts to fill in holes earlier in the grid, if smaller items come up later. +--- This may cause items to appear out-of-order when doing so would fill in holes left by larger items. +--- +--- Defaults to [`GridAutoFlow::Row`]. +--- +--- +GridAutoFlow = {} + + + +---@class GridPlacement : ReflectReference +--- Represents the position of a grid item in a single axis. +--- +--- There are 3 fields which may be set: +--- - `start`: which grid line the item should start at +--- - `end`: which grid line the item should end at +--- - `span`: how many tracks the item should span +--- +--- The default `span` is 1. If neither `start` or `end` is set then the item will be placed automatically. +--- +--- Generally, at most two fields should be set. If all three fields are specified then `span` will be ignored. If `end` specifies an earlier +--- grid line than `start` then `end` will be ignored and the item will have a span of 1. +--- +--- +---@field start ? NonZeroI16 | nil +---@field span ? NonZeroU16 | nil +---@field end ? NonZeroI16 | nil +GridPlacement = {} + + + +---@class GridTrack : ReflectReference +--- A [`GridTrack`] is a Row or Column of a CSS Grid. This struct specifies what size the track should be. +--- See below for the different "track sizing functions" you can specify. +---@field min_sizing_function ? MinTrackSizingFunction +---@field max_sizing_function ? MaxTrackSizingFunction +GridTrack = {} + + + +---@class GridTrackRepetition : ReflectReference +--- How many times to repeat a repeated grid track +--- +--- +GridTrackRepetition = {} + + + +---@class IgnoreScroll : ReflectReference +--- Controls whether a UI element ignores its parent's [`ScrollPosition`] along specific axes. +--- +--- When an axis is set to `true`, the node will not have the parent’s scroll position applied +--- on that axis. This can be used to keep an element visually fixed along one or both axes +--- even when its parent UI element is scrolled. +---@field [1] BVec2 +IgnoreScroll = {} + + + +---@class JustifyContent : ReflectReference +--- Used to control how items are distributed. +--- - For Flexbox containers, controls alignment of items in the main axis. +--- - For CSS Grid containers, controls alignment of grid columns. +--- +--- +JustifyContent = {} + + + +---@class JustifyItems : ReflectReference +--- Used to control how each individual item is aligned by default within the space they're given. +--- - For Flexbox containers, this property has no effect. See `justify_content` for main axis alignment of flex items. +--- - For CSS Grid containers, sets default inline (horizontal) axis alignment of child items within their grid areas. +--- +--- +JustifyItems = {} + + + +---@class JustifySelf : ReflectReference +--- Used to control how the specified item is aligned within the space it's given. +--- - For children of flex nodes, this property has no effect. See `justify_content` for main axis alignment of flex items. +--- - For CSS Grid items, controls inline (horizontal) axis alignment of a grid item within its grid area. +--- +--- +JustifySelf = {} + + + +---@class LayoutConfig : ReflectReference +--- This component can be added to any UI node to modify its layout behavior. +---@field use_rounding ? boolean +LayoutConfig = {} + + + +---@class MaxTrackSizingFunction : ReflectReference +MaxTrackSizingFunction = {} + + + +---@class MinTrackSizingFunction : ReflectReference +MinTrackSizingFunction = {} + + + +---@class Node : ReflectReference +--- The base component for UI entities. It describes UI layout and style properties. +--- +--- When defining new types of UI entities, require [`Node`] to make them behave like UI nodes. +--- +--- Nodes can be laid out using either Flexbox or CSS Grid Layout. +--- +--- See below for general learning resources and for documentation on the individual style properties. +--- +--- ### Flexbox +--- +--- - [MDN: Basic Concepts of Flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox) +--- - [A Complete Guide To Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) by CSS Tricks. This is detailed guide with illustrations and comprehensive written explanation of the different Flexbox properties and how they work. +--- - [Flexbox Froggy](https://flexboxfroggy.com/). An interactive tutorial/game that teaches the essential parts of Flexbox in a fun engaging way. +--- +--- ### CSS Grid +--- +--- - [MDN: Basic Concepts of Grid Layout](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Basic_Concepts_of_Grid_Layout) +--- - [A Complete Guide To CSS Grid](https://css-tricks.com/snippets/css/complete-guide-grid/) by CSS Tricks. This is detailed guide with illustrations and comprehensive written explanation of the different CSS Grid properties and how they work. +--- - [CSS Grid Garden](https://cssgridgarden.com/). An interactive tutorial/game that teaches the essential parts of CSS Grid in a fun engaging way. +--- +--- # See also +--- +--- - [`RelativeCursorPosition`](crate::RelativeCursorPosition) to obtain the cursor position relative to this node +--- - [`Interaction`](crate::Interaction) to obtain the interaction state of this node +---@field display ? Display +---@field box_sizing ? BoxSizing +---@field position_type ? PositionType +---@field overflow ? Overflow +---@field scrollbar_width ? number +---@field overflow_clip_margin ? OverflowClipMargin +---@field left ? Val +---@field right ? Val +---@field top ? Val +---@field bottom ? Val +---@field width ? Val +---@field height ? Val +---@field min_width ? Val +---@field min_height ? Val +---@field max_width ? Val +---@field max_height ? Val +---@field aspect_ratio ? number | nil +---@field align_items ? AlignItems +---@field justify_items ? JustifyItems +---@field align_self ? AlignSelf +---@field justify_self ? JustifySelf +---@field align_content ? AlignContent +---@field justify_content ? JustifyContent +---@field margin ? UiRect +---@field padding ? UiRect +---@field border ? UiRect +---@field border_radius ? BorderRadius +---@field flex_direction ? FlexDirection +---@field flex_wrap ? FlexWrap +---@field flex_grow ? number +---@field flex_shrink ? number +---@field flex_basis ? Val +---@field row_gap ? Val +---@field column_gap ? Val +---@field grid_auto_flow ? GridAutoFlow +---@field grid_template_rows ? RepeatedGridTrack[] +---@field grid_template_columns ? RepeatedGridTrack[] +---@field grid_auto_rows ? GridTrack[] +---@field grid_auto_columns ? GridTrack[] +---@field grid_row ? GridPlacement +---@field grid_column ? GridPlacement +Node = {} + + + +---@class Outline : ReflectReference +--- The [`Outline`] component adds an outline outside the edge of a UI node. +--- Outlines do not take up space in the layout. +--- +--- To add an [`Outline`] to a ui node you can spawn a `(Node, Outline)` tuple bundle: +--- ``` +--- # use bevy_ecs::prelude::*; +--- # use bevy_ui::prelude::*; +--- # use bevy_color::palettes::basic::{RED, BLUE}; +--- fn setup_ui(mut commands: Commands) { +--- commands.spawn(( +--- Node { +--- width: Val::Px(100.), +--- height: Val::Px(100.), +--- ..Default::default() +--- }, +--- BackgroundColor(BLUE.into()), +--- Outline::new(Val::Px(10.), Val::ZERO, RED.into()) +--- )); +--- } +--- ``` +--- +--- [`Outline`] components can also be added later to existing UI nodes: +--- ``` +--- # use bevy_ecs::prelude::*; +--- # use bevy_ui::prelude::*; +--- # use bevy_color::Color; +--- fn outline_hovered_button_system( +--- mut commands: Commands, +--- mut node_query: Query<(Entity, &Interaction, Option<&mut Outline>), Changed>, +--- ) { +--- for (entity, interaction, mut maybe_outline) in node_query.iter_mut() { +--- let outline_color = +--- if matches!(*interaction, Interaction::Hovered) { +--- Color::WHITE +--- } else { +--- Color::NONE +--- }; +--- if let Some(mut outline) = maybe_outline { +--- outline.color = outline_color; +--- } else { +--- commands.entity(entity).insert(Outline::new(Val::Px(10.), Val::ZERO, outline_color)); +--- } +--- } +--- } +--- ``` +--- Inserting and removing an [`Outline`] component repeatedly will result in table moves, so it is generally preferable to +--- set `Outline::color` to [`Color::NONE`] to hide an outline. +---@field width ? Val +---@field offset ? Val +---@field color ? Color +Outline = {} + + + +---@class Overflow : ReflectReference +--- Whether to show or hide overflowing items +---@field x ? OverflowAxis +---@field y ? OverflowAxis +Overflow = {} + + + +---@class OverflowAxis : ReflectReference +--- Whether to show or hide overflowing items +OverflowAxis = {} + + + +---@class OverflowClipBox : ReflectReference +--- Used to determine the bounds of the visible area when a UI node is clipped. +OverflowClipBox = {} + + + +---@class OverflowClipMargin : ReflectReference +--- The bounds of the visible area when a UI node is clipped. +---@field visual_box ? OverflowClipBox +---@field margin ? number +OverflowClipMargin = {} + + + +---@class PositionType : ReflectReference +--- The strategy used to position this node +PositionType = {} + + + +---@class RepeatedGridTrack : ReflectReference +--- Represents a *possibly* repeated [`GridTrack`]. +--- +--- The repetition parameter can either be: +--- - The integer `1`, in which case the track is non-repeated. +--- - a `u16` count to repeat the track N times. +--- - A `GridTrackRepetition::AutoFit` or `GridTrackRepetition::AutoFill`. +--- +--- Note: that in the common case you want a non-repeating track (repetition count 1), you may use the constructor methods on [`GridTrack`] +--- to create a `RepeatedGridTrack`. i.e. `GridTrack::px(10.0)` is equivalent to `RepeatedGridTrack::px(1, 10.0)`. +--- +--- You may only use one auto-repetition per track list. And if your track list contains an auto repetition +--- then all tracks (in and outside of the repetition) must be fixed size (px or percent). Integer repetitions are just shorthand for writing out +--- N tracks longhand and are not subject to the same limitations. +---@field repetition ? GridTrackRepetition +---@field tracks ? GridTrack[] +RepeatedGridTrack = {} + + + +---@class ResolvedBorderRadius : ReflectReference +--- Represents the resolved border radius values for a UI node. +--- +--- The values are in physical pixels. +---@field top_left ? number +---@field top_right ? number +---@field bottom_right ? number +---@field bottom_left ? number +ResolvedBorderRadius = {} + + + +---@class ScrollPosition : ReflectReference +--- The scroll position of the node. Values are in logical pixels, increasing from top-left to bottom-right. +--- +--- Increasing the x-coordinate causes the scrolled content to visibly move left on the screen, while increasing the y-coordinate causes the scrolled content to move up. +--- This might seem backwards, however what's really happening is that +--- the scroll position is moving the visible "window" in the local coordinate system of the scrolled content - +--- moving the window down causes the content to move up. +--- +--- Updating the values of `ScrollPosition` will reposition the children of the node by the offset amount in logical pixels. +--- `ScrollPosition` may be updated by the layout system when a layout change makes a previously valid `ScrollPosition` invalid. +--- Changing this does nothing on a `Node` without setting at least one `OverflowAxis` to `OverflowAxis::Scroll`. +---@field [1] Vec2 +ScrollPosition = {} + + + +---@class ShadowStyle : ReflectReference +---@field color ? Color +---@field x_offset ? Val +---@field y_offset ? Val +---@field spread_radius ? Val +---@field blur_radius ? Val +ShadowStyle = {} + + + +---@class UiTargetCamera : ReflectReference +--- Indicates that this root [`Node`] entity should be rendered to a specific camera. +--- +--- UI then will be laid out respecting the camera's viewport and scale factor, and +--- rendered to this camera's [`bevy_camera::RenderTarget`]. +--- +--- Setting this component on a non-root node will have no effect. It will be overridden +--- by the root node's component. +--- +--- Root node's without an explicit [`UiTargetCamera`] will be rendered to the default UI camera, +--- which is either a single camera with the [`IsDefaultUiCamera`] marker component or the highest +--- order camera targeting the primary window. +---@field [1] Entity +UiTargetCamera = {} + + + +---@class ZIndex : ReflectReference +--- Indicates that this [`Node`] entity's front-to-back ordering is not controlled solely +--- by its location in the UI hierarchy. A node with a higher z-index will appear on top +--- of sibling nodes with a lower z-index. +--- +--- UI nodes that have the same z-index will appear according to the order in which they +--- appear in the UI hierarchy. In such a case, the last node to be added to its parent +--- will appear in front of its siblings. +--- +--- Nodes without this component will be treated as if they had a value of +--- [ZIndex][ZIndex]\(0\). +--- +--- Use [`GlobalZIndex`] if you need to order separate UI hierarchies or nodes that are +--- not siblings in a given UI hierarchy. +---@field [1] integer +ZIndex = {} + + + +---@class UiGlobalTransform : ReflectReference +--- Absolute 2D transform for UI nodes +--- +--- [`UiGlobalTransform`]s are updated from [`UiTransform`] and [`Node`](crate::ui_node::Node) +--- in [`ui_layout_system`](crate::layout::ui_layout_system) +---@field [1] Affine2 +UiGlobalTransform = {} + + + +---@class UiTransform : ReflectReference +--- Relative 2D transform for UI nodes +--- +--- [`UiGlobalTransform`] is automatically inserted whenever [`UiTransform`] is inserted. +---@field translation ? Val2 +---@field scale ? Vec2 +---@field rotation ? Rot2 +UiTransform = {} + + + +---@class Val2 : ReflectReference +--- A pair of [`Val`]s used to represent a 2-dimensional size or offset. +---@field x ? Val +---@field y ? Val +Val2 = {} + + + +---@class Button : ReflectReference +--- Marker struct for buttons +Button = {} + + + +---@class ImageNode : ReflectReference +--- A UI Node that renders an image. +---@field color ? Color +---@field image ? any +---@field texture_atlas ? TextureAtlas | nil +---@field flip_x ? boolean +---@field flip_y ? boolean +---@field rect ? Rect | nil +---@field image_mode ? NodeImageMode +ImageNode = {} + + + +---@class ImageNodeSize : ReflectReference +--- The size of the image's texture +--- +--- This component is updated automatically by [`update_image_content_size_system`] +---@field size ? UVec2 +ImageNodeSize = {} + + + +---@class NodeImageMode : ReflectReference +--- Controls how the image is altered to fit within the layout and how the layout algorithm determines the space in the layout for the image +NodeImageMode = {} + + + +---@class Label : ReflectReference +--- Marker struct for labels +Label = {} + + + +---@class Text : ReflectReference +--- The top-level UI text component. +--- +--- Adding [`Text`] to an entity will pull in required components for setting up a UI text node. +--- +--- The string in this component is the first 'text span' in a hierarchy of text spans that are collected into +--- a [`ComputedTextBlock`]. See [`TextSpan`](bevy_text::TextSpan) for the component used by children of entities with [`Text`]. +--- +--- Note that [`Transform`](bevy_transform::components::Transform) on this entity is managed automatically by the UI layout system. +--- +--- +--- ``` +--- # use bevy_asset::Handle; +--- # use bevy_color::Color; +--- # use bevy_color::palettes::basic::BLUE; +--- # use bevy_ecs::world::World; +--- # use bevy_text::{Font, Justify, TextLayout, TextFont, TextColor, TextSpan}; +--- # use bevy_ui::prelude::Text; +--- # +--- # let font_handle: Handle = Default::default(); +--- # let mut world = World::default(); +--- # +--- // Basic usage. +--- world.spawn(Text::new("hello world!")); +--- +--- // With non-default style. +--- world.spawn(( +--- Text::new("hello world!"), +--- TextFont { +--- font: font_handle.clone().into(), +--- font_size: 60.0, +--- ..Default::default() +--- }, +--- TextColor(BLUE.into()), +--- )); +--- +--- // With text justification. +--- world.spawn(( +--- Text::new("hello world\nand bevy!"), +--- TextLayout::new_with_justify(Justify::Center) +--- )); +--- +--- // With spans +--- world.spawn(Text::new("hello ")).with_children(|parent| { +--- parent.spawn(TextSpan::new("world")); +--- parent.spawn((TextSpan::new("!"), TextColor(BLUE.into()))); +--- }); +--- ``` +---@field [1] string +Text = {} + + + +---@class TextNodeFlags : ReflectReference +--- UI text system flags. +--- +--- Used internally by [`measure_text_system`] and [`text_system`] to schedule text for processing. +---@field needs_measure_fn ? boolean +---@field needs_recompute ? boolean +TextNodeFlags = {} + + + +---@class TextShadow : ReflectReference +--- Adds a shadow behind text +--- +--- Use the `Text2dShadow` component for `Text2d` shadows +---@field offset ? Vec2 +---@field color ? Color +TextShadow = {} + + + +---@class ViewportNode : ReflectReference +--- Component used to render a [`RenderTarget`] to a node. +--- +--- # See Also +--- +--- [`update_viewport_render_target_size`] +---@field camera ? Entity +ViewportNode = {} + + + +---@class CursorIcon : ReflectReference +--- Insert into a window entity to set the cursor for that window. +CursorIcon = {} + + + +---@class CustomCursor : ReflectReference +--- Custom cursor image data. +CustomCursor = {} + + + +---@class CustomCursorImage : ReflectReference +--- A custom cursor created from an image. +---@field handle ? any +---@field texture_atlas ? TextureAtlas | nil +---@field flip_x ? boolean +---@field flip_y ? boolean +---@field rect ? URect | nil +---@field hotspot ? [integer, integer] +CustomCursorImage = {} + + + +---@class CustomCursorUrl : ReflectReference +--- A custom cursor created from a URL. Note that this currently only works on the web. +---@field url ? string +---@field hotspot ? [integer, integer] +CustomCursorUrl = {} + + + +---@class SystemCursorIcon : ReflectReference +--- The icon to display for a window. +--- +--- Examples of all of these cursors can be found [here](https://www.w3schools.com/cssref/playit.php?filename=playcss_cursor&preval=crosshair). +--- This `enum` is simply a copy of a similar `enum` found in [`winit`](https://docs.rs/winit/latest/winit/window/enum.CursorIcon.html). +--- `winit`, in turn, is based upon the [CSS3 UI spec](https://www.w3.org/TR/css-ui-3/#cursor). +--- +--- See the [`window_settings`] example for usage. +--- +--- [`window_settings`]: https://github.com/bevyengine/bevy/blob/latest/examples/window/window_settings.rs +SystemCursorIcon = {} + + + +---@class AppLifecycle : ReflectReference +--- Application lifetime events +AppLifecycle = {} + + + +---@class CursorEntered : ReflectReference +--- An event that is sent whenever the user's cursor enters a window. +---@field window ? Entity +CursorEntered = {} + + + +---@class CursorLeft : ReflectReference +--- An event that is sent whenever the user's cursor leaves a window. +---@field window ? Entity +CursorLeft = {} + + + +---@class CursorMoved : ReflectReference +--- An event reporting that the mouse cursor has moved inside a window. +--- +--- The event is sent only if the cursor is over one of the application's windows. +--- It is the translated version of [`WindowEvent::CursorMoved`] from the `winit` crate with the addition of `delta`. +--- +--- Not to be confused with the `MouseMotion` event from `bevy_input`. +--- +--- Because the range of data is limited by the window area and it may have been transformed by the OS to implement certain effects like acceleration, +--- you should not use it for non-cursor-like behavior such as 3D camera control. Please see `MouseMotion` instead. +--- +--- [`WindowEvent::CursorMoved`]: https://docs.rs/winit/latest/winit/event/enum.WindowEvent.html#variant.CursorMoved +---@field window ? Entity +---@field position ? Vec2 +---@field delta ? Vec2 | nil +CursorMoved = {} + + + +---@class FileDragAndDrop : ReflectReference +--- Events related to files being dragged and dropped on a window. +FileDragAndDrop = {} + + + +---@class Ime : ReflectReference +--- An Input Method Editor event. +--- +--- This event is the translated version of the `WindowEvent::Ime` from the `winit` crate. +--- +--- It is only sent if IME was enabled on the window with [`Window::ime_enabled`](crate::window::Window::ime_enabled). +Ime = {} + + + +---@class RequestRedraw : ReflectReference +--- An event that indicates all of the application's windows should be redrawn, +--- even if their control flow is set to `Wait` and there have been no window events. +RequestRedraw = {} + + + +---@class WindowBackendScaleFactorChanged : ReflectReference +--- An event that indicates a window's OS-reported scale factor has changed. +---@field window ? Entity +---@field scale_factor ? number +WindowBackendScaleFactorChanged = {} + + + +---@class WindowCloseRequested : ReflectReference +--- An event that is sent whenever the operating systems requests that a window +--- be closed. This will be sent when the close button of the window is pressed. +--- +--- If the default [`WindowPlugin`] is used, these events are handled +--- by closing the corresponding [`Window`]. +--- To disable this behavior, set `close_when_requested` on the [`WindowPlugin`] +--- to `false`. +--- +--- [`WindowPlugin`]: crate::WindowPlugin +--- [`Window`]: crate::Window +---@field window ? Entity +WindowCloseRequested = {} + + + +---@class WindowClosed : ReflectReference +--- An event that is sent whenever a window is closed. This will be sent when +--- the window entity loses its [`Window`](crate::window::Window) component or is despawned. +---@field window ? Entity +WindowClosed = {} + + + +---@class WindowClosing : ReflectReference +--- An event that is sent whenever a window is closing. This will be sent when +--- after a [`WindowCloseRequested`] event is received and the window is in the process of closing. +---@field window ? Entity +WindowClosing = {} + + + +---@class WindowCreated : ReflectReference +--- An event that is sent whenever a new window is created. +--- +--- To create a new window, spawn an entity with a [`Window`](`crate::Window`) on it. +---@field window ? Entity +WindowCreated = {} + + + +---@class WindowDestroyed : ReflectReference +--- An event that is sent whenever a window is destroyed by the underlying window system. +--- +--- Note that if your application only has a single window, this event may be your last chance to +--- persist state before the application terminates. +---@field window ? Entity +WindowDestroyed = {} + + + +---@class WindowEvent : ReflectReference +--- Wraps all `bevy_window` and `bevy_input` events in a common enum. +--- +--- Read these events with `MessageReader` if you need to +--- access window events in the order they were received from the +--- operating system. Otherwise, the event types are individually +--- readable with `MessageReader` (e.g. `MessageReader`). +WindowEvent = {} + + + +---@class WindowFocused : ReflectReference +--- An event that indicates a window has received or lost focus. +---@field window ? Entity +---@field focused ? boolean +WindowFocused = {} + + + +---@class WindowMoved : ReflectReference +--- An event that is sent when a window is repositioned in physical pixels. +---@field window ? Entity +---@field position ? IVec2 +WindowMoved = {} + + + +---@class WindowOccluded : ReflectReference +--- The window has been occluded (completely hidden from view). +--- +--- This is different to window visibility as it depends on +--- whether the window is closed, minimized, set invisible, +--- or fully occluded by another window. +--- +--- It is the translated version of [`WindowEvent::Occluded`] from the `winit` crate. +--- +--- [`WindowEvent::Occluded`]: https://docs.rs/winit/latest/winit/event/enum.WindowEvent.html#variant.Occluded +---@field window ? Entity +---@field occluded ? boolean +WindowOccluded = {} + + + +---@class WindowResized : ReflectReference +--- A window event that is sent whenever a window's logical size has changed. +---@field window ? Entity +---@field width ? number +---@field height ? number +WindowResized = {} + + + +---@class WindowScaleFactorChanged : ReflectReference +--- An event that indicates a window's scale factor has changed. +---@field window ? Entity +---@field scale_factor ? number +WindowScaleFactorChanged = {} + + + +---@class WindowThemeChanged : ReflectReference +--- An event sent when the system theme changes for a window. +--- +--- This event is only sent when the window is relying on the system theme to control its appearance. +--- i.e. It is only sent when [`Window::window_theme`](crate::window::Window::window_theme) is `None` and the system theme changes. +---@field window ? Entity +---@field theme ? WindowTheme +WindowThemeChanged = {} + + + +---@class Monitor : ReflectReference +--- Represents an available monitor as reported by the user's operating system, which can be used +--- to query information about the display, such as its size, position, and video modes. +--- +--- Each monitor corresponds to an entity and can be used to position a monitor using +--- [`MonitorSelection::Entity`](`crate::window::MonitorSelection::Entity`). +--- +--- # Warning +--- +--- This component is synchronized with `winit` through `bevy_winit`, but is effectively +--- read-only as `winit` does not support changing monitor properties. +---@field name ? string | nil +---@field physical_height ? integer +---@field physical_width ? integer +---@field physical_position ? IVec2 +---@field refresh_rate_millihertz ? integer | nil +---@field scale_factor ? number +---@field video_modes ? VideoMode[] +Monitor = {} + + + +---@class PrimaryMonitor : ReflectReference +--- A marker component for the primary monitor +PrimaryMonitor = {} + + + +---@class VideoMode : ReflectReference +--- Represents a video mode that a monitor supports +---@field physical_size ? UVec2 +---@field bit_depth ? integer +---@field refresh_rate_millihertz ? integer +VideoMode = {} + + + +---@class CompositeAlphaMode : ReflectReference +--- Specifies how the alpha channel of the textures should be handled during compositing, for a [`Window`]. +CompositeAlphaMode = {} + + + +---@class CursorGrabMode : ReflectReference +--- Defines if and how the cursor is grabbed by a [`Window`]. +--- +--- ## Platform-specific +--- +--- - **`macOS`** doesn't support [`CursorGrabMode::Confined`] +--- - **`X11`** doesn't support [`CursorGrabMode::Locked`] +--- - **`iOS/Android`** don't have cursors. +--- +--- Since `macOS` and `X11` don't have full [`CursorGrabMode`] support, we first try to set the grab mode that was asked for. If it doesn't work then use the alternate grab mode. +CursorGrabMode = {} + + + +---@class CursorOptions : ReflectReference +--- Cursor data for a [`Window`]. +---@field visible ? boolean +---@field grab_mode ? CursorGrabMode +---@field hit_test ? boolean +CursorOptions = {} + + + +---@class EnabledButtons : ReflectReference +--- Specifies which [`Window`] control buttons should be enabled. +--- +--- ## Platform-specific +--- +--- **`iOS`**, **`Android`**, and the **`Web`** do not have window control buttons. +--- +--- On some **`Linux`** environments these values have no effect. +---@field minimize ? boolean +---@field maximize ? boolean +---@field close ? boolean +EnabledButtons = {} + + + +---@class InternalWindowState : ReflectReference +--- Stores internal [`Window`] state that isn't directly accessible. +---@field minimize_request ? boolean | nil +---@field maximize_request ? boolean | nil +---@field drag_move_request ? boolean +---@field drag_resize_request ? CompassOctant | nil +---@field physical_cursor_position ? DVec2 | nil +InternalWindowState = {} + + + +---@class MonitorSelection : ReflectReference +--- References a screen monitor. +--- +--- Used when centering a [`Window`] on a monitor. +MonitorSelection = {} + + + +---@class NormalizedWindowRef : ReflectReference +--- A flattened representation of a window reference for equality/hashing purposes. +--- +--- For most purposes you probably want to use the unnormalized version [`WindowRef`]. +---@field [1] Entity +NormalizedWindowRef = {} + + + +---@class PresentMode : ReflectReference +--- Presentation mode for a [`Window`]. +--- +--- The presentation mode specifies when a frame is presented to the window. The [`Fifo`] +--- option corresponds to a traditional `VSync`, where the framerate is capped by the +--- display refresh rate. Both [`Immediate`] and [`Mailbox`] are low-latency and are not +--- capped by the refresh rate, but may not be available on all platforms. Tearing +--- may be observed with [`Immediate`] mode, but will not be observed with [`Mailbox`] or +--- [`Fifo`]. +--- +--- [`AutoVsync`] or [`AutoNoVsync`] will gracefully fallback to [`Fifo`] when unavailable. +--- +--- [`Immediate`] or [`Mailbox`] will panic if not supported by the platform. +--- +--- [`Fifo`]: PresentMode::Fifo +--- [`FifoRelaxed`]: PresentMode::FifoRelaxed +--- [`Immediate`]: PresentMode::Immediate +--- [`Mailbox`]: PresentMode::Mailbox +--- [`AutoVsync`]: PresentMode::AutoVsync +--- [`AutoNoVsync`]: PresentMode::AutoNoVsync +PresentMode = {} + + + +---@class PrimaryWindow : ReflectReference +--- Marker [`Component`] for the window considered the primary window. +--- +--- Currently this is assumed to only exist on 1 entity at a time. +--- +--- [`WindowPlugin`](crate::WindowPlugin) will spawn a [`Window`] entity +--- with this component if [`primary_window`](crate::WindowPlugin::primary_window) +--- is `Some`. +PrimaryWindow = {} + + + +---@class ScreenEdge : ReflectReference +--- The edges of a screen. Corresponds to [`winit::platform::ios::ScreenEdge`]. +--- +--- # Platform-specific +--- +--- - Only used on iOS. +--- +--- [`winit::platform::ios::ScreenEdge`]: https://docs.rs/winit/latest/x86_64-apple-darwin/winit/platform/ios/struct.ScreenEdge.html +ScreenEdge = {} + + + +---@class VideoModeSelection : ReflectReference +--- References an exclusive fullscreen video mode. +--- +--- Used when setting [`WindowMode::Fullscreen`] on a window. +VideoModeSelection = {} + + + +---@class Window : ReflectReference +--- The defining [`Component`] for window entities, +--- storing information about how it should appear and behave. +--- +--- Each window corresponds to an entity, and is uniquely identified by the value of their [`Entity`]. +--- When the [`Window`] component is added to an entity, a new window will be opened. +--- When it is removed or the entity is despawned, the window will close. +--- +--- The primary window entity (and the corresponding window) is spawned by default +--- by [`WindowPlugin`](crate::WindowPlugin) and is marked with the [`PrimaryWindow`] component. +--- +--- This component is synchronized with `winit` through `bevy_winit`: +--- it will reflect the current state of the window and can be modified to change this state. +--- +--- # Example +--- +--- Because this component is synchronized with `winit`, it can be used to perform +--- OS-integrated windowing operations. For example, here's a simple system +--- to change the window mode: +--- +--- ``` +--- # use bevy_ecs::query::With; +--- # use bevy_ecs::system::Query; +--- # use bevy_window::{WindowMode, PrimaryWindow, Window, MonitorSelection, VideoModeSelection}; +--- fn change_window_mode(mut windows: Query<&mut Window, With>) { +--- // Query returns one window typically. +--- for mut window in windows.iter_mut() { +--- window.mode = +--- WindowMode::Fullscreen(MonitorSelection::Current, VideoModeSelection::Current); +--- } +--- } +--- ``` +---@field present_mode ? PresentMode +---@field mode ? WindowMode +---@field position ? WindowPosition +---@field resolution ? WindowResolution +---@field title ? string +---@field name ? string | nil +---@field composite_alpha_mode ? CompositeAlphaMode +---@field resize_constraints ? WindowResizeConstraints +---@field resizable ? boolean +---@field enabled_buttons ? EnabledButtons +---@field decorations ? boolean +---@field transparent ? boolean +---@field focused ? boolean +---@field window_level ? WindowLevel +---@field canvas ? string | nil +---@field fit_canvas_to_parent ? boolean +---@field prevent_default_event_handling ? boolean +---@field internal ? InternalWindowState +---@field ime_enabled ? boolean +---@field ime_position ? Vec2 +---@field window_theme ? WindowTheme | nil +---@field visible ? boolean +---@field skip_taskbar ? boolean +---@field clip_children ? boolean +---@field desired_maximum_frame_latency ? NonZeroU32 | nil +---@field recognize_pinch_gesture ? boolean +---@field recognize_rotation_gesture ? boolean +---@field recognize_doubletap_gesture ? boolean +---@field recognize_pan_gesture ? [integer, integer] | nil +---@field movable_by_window_background ? boolean +---@field fullsize_content_view ? boolean +---@field has_shadow ? boolean +---@field titlebar_shown ? boolean +---@field titlebar_transparent ? boolean +---@field titlebar_show_title ? boolean +---@field titlebar_show_buttons ? boolean +---@field prefers_home_indicator_hidden ? boolean +---@field prefers_status_bar_hidden ? boolean +---@field preferred_screen_edges_deferring_system_gestures ? ScreenEdge +Window = {} + + + +---@class WindowLevel : ReflectReference +--- Specifies where a [`Window`] should appear relative to other overlapping windows (on top or under) . +--- +--- Levels are groups of windows with respect to their z-position. +--- +--- The relative ordering between windows in different window levels is fixed. +--- The z-order of windows within the same window level may change dynamically on user interaction. +--- +--- ## Platform-specific +--- +--- - **iOS / Android / Web / Wayland:** Unsupported. +WindowLevel = {} + + + +---@class WindowMode : ReflectReference +--- Defines the way a [`Window`] is displayed. +WindowMode = {} + + + +---@class WindowPosition : ReflectReference +--- Defines where a [`Window`] should be placed on the screen. +WindowPosition = {} + + + +---@class WindowRef : ReflectReference +--- Reference to a [`Window`], whether it be a direct link to a specific entity or +--- a more vague defaulting choice. +WindowRef = {} + + + +---@class WindowResizeConstraints : ReflectReference +--- The size limits on a [`Window`]. +--- +--- These values are measured in logical pixels (see [`WindowResolution`]), so the user's +--- scale factor does affect the size limits on the window. +--- +--- Please note that if the window is resizable, then when the window is +--- maximized it may have a size outside of these limits. The functionality +--- required to disable maximizing is not yet exposed by winit. +---@field min_width ? number +---@field min_height ? number +---@field max_width ? number +---@field max_height ? number +WindowResizeConstraints = {} + + + +---@class WindowResolution : ReflectReference +--- Controls the size of a [`Window`] +--- +--- ## Physical, logical and requested sizes +--- +--- There are three sizes associated with a window: +--- - the physical size, +--- which represents the actual height and width in physical pixels +--- the window occupies on the monitor, +--- - the logical size, +--- which represents the size that should be used to scale elements +--- inside the window, measured in logical pixels, +--- - the requested size, +--- measured in logical pixels, which is the value submitted +--- to the API when creating the window, or requesting that it be resized. +--- +--- ## Scale factor +--- +--- The reason logical size and physical size are separated and can be different +--- is to account for the cases where: +--- - several monitors have different pixel densities, +--- - the user has set up a pixel density preference in its operating system, +--- - the Bevy `App` has specified a specific scale factor between both. +--- +--- The factor between physical size and logical size can be retrieved with +--- [`WindowResolution::scale_factor`]. +--- +--- For the first two cases, a scale factor is set automatically by the operating +--- system through the window backend. You can get it with +--- [`WindowResolution::base_scale_factor`]. +--- +--- For the third case, you can override this automatic scale factor with +--- [`WindowResolution::set_scale_factor_override`]. +--- +--- ## Requested and obtained sizes +--- +--- The logical size should be equal to the requested size after creating/resizing, +--- when possible. +--- The reason the requested size and logical size might be different +--- is because the corresponding physical size might exceed limits (either the +--- size limits of the monitor, or limits defined in [`WindowResizeConstraints`]). +--- +--- Note: The requested size is not kept in memory, for example requesting a size +--- too big for the screen, making the logical size different from the requested size, +--- and then setting a scale factor that makes the previous requested size within +--- the limits of the screen will not get back that previous requested size. +---@field physical_width ? integer +---@field physical_height ? integer +---@field scale_factor_override ? number | nil +---@field scale_factor ? number +WindowResolution = {} + + + +---@class WindowTheme : ReflectReference +--- The [`Window`] theme variant to use. +WindowTheme = {} + + + +---@class WinitUserEvent : ReflectReference +--- Events that can be sent to perform actions inside the winit event loop. +--- +--- Sent via the [`EventLoopProxyWrapper`] resource. +--- +--- # Example +--- +--- ``` +--- # use bevy_ecs::prelude::*; +--- # use bevy_winit::{EventLoopProxyWrapper, WinitUserEvent}; +--- fn wakeup_system(event_loop_proxy: Res) -> Result { +--- event_loop_proxy.send_event(WinitUserEvent::WakeUp)?; +--- +--- Ok(()) +--- } +--- ``` +WinitUserEvent = {} + + + +---@class NonZeroI128 : ReflectReference +NonZeroI128 = {} + + + +---@class NonZeroI16 : ReflectReference +NonZeroI16 = {} + + + +---@class NonZeroI32 : ReflectReference +NonZeroI32 = {} + + + +---@class NonZeroI64 : ReflectReference +NonZeroI64 = {} + + + +---@class NonZeroI8 : ReflectReference +NonZeroI8 = {} + + + +---@class NonZeroIsize : ReflectReference +NonZeroIsize = {} + + + +---@class NonZeroU128 : ReflectReference +NonZeroU128 = {} + + + +---@class NonZeroU16 : ReflectReference +NonZeroU16 = {} + + + +---@class NonZeroU32 : ReflectReference +NonZeroU32 = {} + + + +---@class NonZeroU64 : ReflectReference +NonZeroU64 = {} + + + +---@class NonZeroU8 : ReflectReference +NonZeroU8 = {} + + + +---@class NonZeroUsize : ReflectReference +NonZeroUsize = {} + + + +---@class Cow : ReflectReference +Cow = {} + + + +---@class Range : ReflectReference +Range = {} + + + +---@class RangeInclusive : ReflectReference +RangeInclusive = {} + + + + +---@param registration ScriptTypeRegistration | ScriptComponentRegistration | ScriptResourceRegistration +--- The type to construct. +---@param payload table +--- The values to use to construct the type. +---@return ReflectReference +function construct(registration,payload) end + +---@param message string +---@return nil +function log_debug(message) end + +---@param message string +---@return nil +function log_error(message) end + +---@param message string +--- the message to log +---@return nil +function log_info(message) end + +---@param message string +---@return nil +function log_trace(message) end + +---@param message string +---@return nil +function log_warn(message) end + +---@param tuple ... any +--- The tuple of values to curry +---@return any[] +function pack_args(... tuple) end + +---@param callback string +--- the callback label to register this function against. +---@param _function function +--- the callback function which will be stored as a handler for this callback label. +---@return nil +function register_callback(callback,_function) end + +---@param callback string +--- The function name in the script this system should call when run. +---@param attachment ScriptAttachment +--- The script attachment to use for the system. This is the attachment that will be used for the system's callback. +---@return ScriptSystemBuilder +function system_builder(callback,attachment) end + +---@param values any[] +--- The list of values to uncurry +---@return any ... +function unpack_args(values) end + + +---@type ScalingMode +--- A static class allowing calls through the "." operator only. +ScalingMode = {} + +---@type GamepadButton +--- A static class allowing calls through the "." operator only. +GamepadButton = {} + +---@type Polyline2d +--- A static class allowing calls through the "." operator only. +Polyline2d = {} + +---@type Replace +--- A static class allowing calls through the "." operator only. +Replace = {} + +---@type RadialGradientShape +--- A static class allowing calls through the "." operator only. +RadialGradientShape = {} + +---@type I16Vec4 +--- A static class allowing calls through the "." operator only. +I16Vec4 = {} + +---@type TextureSlicer +--- A static class allowing calls through the "." operator only. +TextureSlicer = {} + +---@type AccessibilityRequested +--- A static class allowing calls through the "." operator only. +AccessibilityRequested = {} + +---@type AssetPath +--- A static class allowing calls through the "." operator only. +AssetPath = {} + +---@type MsaaWriteback +--- A static class allowing calls through the "." operator only. +MsaaWriteback = {} + +---@type LinearGradient +--- A static class allowing calls through the "." operator only. +LinearGradient = {} + +---@type SpriteScalingMode +--- A static class allowing calls through the "." operator only. +SpriteScalingMode = {} + +---@type SmolStr +--- A static class allowing calls through the "." operator only. +SmolStr = {} + +---@type InfinitePlane3d +--- A static class allowing calls through the "." operator only. +InfinitePlane3d = {} + +---@type SphereMeshBuilder +--- A static class allowing calls through the "." operator only. +SphereMeshBuilder = {} + +---@type RegularPolygon +--- A static class allowing calls through the "." operator only. +RegularPolygon = {} + +---@type GamepadConnection +--- A static class allowing calls through the "." operator only. +GamepadConnection = {} + +---@type OcclusionCulling +--- A static class allowing calls through the "." operator only. +OcclusionCulling = {} + +---@type Screenshot +--- A static class allowing calls through the "." operator only. +Screenshot = {} + +---@type Rect +--- A static class allowing calls through the "." operator only. +Rect = {} + +---@type ViewportNode +--- A static class allowing calls through the "." operator only. +ViewportNode = {} + +---@type table +--- An global instance of this type +types = {} + +---@type GlyphAtlasLocation +--- A static class allowing calls through the "." operator only. +GlyphAtlasLocation = {} + +---@type MorphWeights +--- A static class allowing calls through the "." operator only. +MorphWeights = {} + +---@type GlyphAtlasInfo +--- A static class allowing calls through the "." operator only. +GlyphAtlasInfo = {} + +---@type Oklcha +--- A static class allowing calls through the "." operator only. +Oklcha = {} + +---@type MotionVectorPrepass +--- A static class allowing calls through the "." operator only. +MotionVectorPrepass = {} + +---@type AlignSelf +--- A static class allowing calls through the "." operator only. +AlignSelf = {} + +---@type Window +--- A static class allowing calls through the "." operator only. +Window = {} + +---@type FloatOrd +--- A static class allowing calls through the "." operator only. +FloatOrd = {} + +---@type ButtonSettings +--- A static class allowing calls through the "." operator only. +ButtonSettings = {} + +---@type Affine3A +--- A static class allowing calls through the "." operator only. +Affine3A = {} + +---@type URect +--- A static class allowing calls through the "." operator only. +URect = {} + +---@type GamepadInput +--- A static class allowing calls through the "." operator only. +GamepadInput = {} + +---@type RepeatedGridTrack +--- A static class allowing calls through the "." operator only. +RepeatedGridTrack = {} + +---@type IVec4 +--- A static class allowing calls through the "." operator only. +IVec4 = {} + +---@type Wireframe2dConfig +--- A static class allowing calls through the "." operator only. +Wireframe2dConfig = {} + +---@type StaticTransformOptimizations +--- A static class allowing calls through the "." operator only. +StaticTransformOptimizations = {} + +---@type ScriptAttachment +--- A static class allowing calls through the "." operator only. +ScriptAttachment = {} + +---@type Hwba +--- A static class allowing calls through the "." operator only. +Hwba = {} + +---@type WindowBackendScaleFactorChanged +--- A static class allowing calls through the "." operator only. +WindowBackendScaleFactorChanged = {} + +---@type BorderRadius +--- A static class allowing calls through the "." operator only. +BorderRadius = {} + +---@type Polyline3d +--- A static class allowing calls through the "." operator only. +Polyline3d = {} + +---@type DMat3 +--- A static class allowing calls through the "." operator only. +DMat3 = {} + +---@type StrikethroughColor +--- A static class allowing calls through the "." operator only. +StrikethroughColor = {} + +---@type MainEntity +--- A static class allowing calls through the "." operator only. +MainEntity = {} + +---@type LineBreak +--- A static class allowing calls through the "." operator only. +LineBreak = {} + +---@type Polygon +--- A static class allowing calls through the "." operator only. +Polygon = {} + +---@type CircularSectorMeshBuilder +--- A static class allowing calls through the "." operator only. +CircularSectorMeshBuilder = {} + +---@type Cuboid +--- A static class allowing calls through the "." operator only. +Cuboid = {} + +---@type RayCast2d +--- A static class allowing calls through the "." operator only. +RayCast2d = {} + +---@type ManageAccessibilityUpdates +--- A static class allowing calls through the "." operator only. +ManageAccessibilityUpdates = {} + +---@type ConicGradient +--- A static class allowing calls through the "." operator only. +ConicGradient = {} + +---@type AtomicUsize +--- A static class allowing calls through the "." operator only. +AtomicUsize = {} + +---@type ScriptAsset +--- A static class allowing calls through the "." operator only. +ScriptAsset = {} + +---@type NonZeroU16 +--- A static class allowing calls through the "." operator only. +NonZeroU16 = {} + +---@type I16Vec3 +--- A static class allowing calls through the "." operator only. +I16Vec3 = {} + +---@type Rectangle +--- A static class allowing calls through the "." operator only. +Rectangle = {} + +---@type NonZeroUsize +--- A static class allowing calls through the "." operator only. +NonZeroUsize = {} + +---@type TextLayout +--- A static class allowing calls through the "." operator only. +TextLayout = {} + +---@type PrimaryWindow +--- A static class allowing calls through the "." operator only. +PrimaryWindow = {} + +---@type Quat +--- A static class allowing calls through the "." operator only. +Quat = {} + +---@type Underline +--- A static class allowing calls through the "." operator only. +Underline = {} + +---@type LinearRgba +--- A static class allowing calls through the "." operator only. +LinearRgba = {} + +---@type Segment3d +--- A static class allowing calls through the "." operator only. +Segment3d = {} + +---@type GamepadButtonStateChangedEvent +--- A static class allowing calls through the "." operator only. +GamepadButtonStateChangedEvent = {} + +---@type Camera2d +--- A static class allowing calls through the "." operator only. +Camera2d = {} + +---@type BoundingCircle +--- A static class allowing calls through the "." operator only. +BoundingCircle = {} + +---@type AlphaMode2d +--- A static class allowing calls through the "." operator only. +AlphaMode2d = {} + +---@type ShadowStyle +--- A static class allowing calls through the "." operator only. +ShadowStyle = {} + +---@type WinitUserEvent +--- A static class allowing calls through the "." operator only. +WinitUserEvent = {} + +---@type NativeKeyCode +--- A static class allowing calls through the "." operator only. +NativeKeyCode = {} + +---@type GlobalTransform +--- A static class allowing calls through the "." operator only. +GlobalTransform = {} + +---@type Vec4 +--- A static class allowing calls through the "." operator only. +Vec4 = {} + +---@type NonZeroU32 +--- A static class allowing calls through the "." operator only. +NonZeroU32 = {} + +---@type PresentMode +--- A static class allowing calls through the "." operator only. +PresentMode = {} + +---@type DepthPrepassDoubleBuffer +--- A static class allowing calls through the "." operator only. +DepthPrepassDoubleBuffer = {} + +---@type Xyza +--- A static class allowing calls through the "." operator only. +Xyza = {} + +---@type ScriptTypeRegistration +--- A static class allowing calls through the "." operator only. +ScriptTypeRegistration = {} + +---@type BorderColor +--- A static class allowing calls through the "." operator only. +BorderColor = {} + +---@type CustomCursorUrl +--- A static class allowing calls through the "." operator only. +CustomCursorUrl = {} + +---@type TextLayoutInfo +--- A static class allowing calls through the "." operator only. +TextLayoutInfo = {} + +---@type CalculatedClip +--- A static class allowing calls through the "." operator only. +CalculatedClip = {} + +---@type ConicalFrustumMeshBuilder +--- A static class allowing calls through the "." operator only. +ConicalFrustumMeshBuilder = {} + +---@type Stopwatch +--- A static class allowing calls through the "." operator only. +Stopwatch = {} + +---@type BorderGradient +--- A static class allowing calls through the "." operator only. +BorderGradient = {} + +---@type RangeInclusive +--- A static class allowing calls through the "." operator only. +RangeInclusive = {} + +---@type Cylinder +--- A static class allowing calls through the "." operator only. +Cylinder = {} + +---@type AtomicI16 +--- A static class allowing calls through the "." operator only. +AtomicI16 = {} + +---@type Real +--- A static class allowing calls through the "." operator only. +Real = {} + +---@type Polyline2dMeshBuilder +--- A static class allowing calls through the "." operator only. +Polyline2dMeshBuilder = {} + +---@type RenderEntity +--- A static class allowing calls through the "." operator only. +RenderEntity = {} + +---@type Line3d +--- A static class allowing calls through the "." operator only. +Line3d = {} + +---@type Cone +--- A static class allowing calls through the "." operator only. +Cone = {} + +---@type JustifyContent +--- A static class allowing calls through the "." operator only. +JustifyContent = {} + +---@type Add +--- A static class allowing calls through the "." operator only. +Add = {} + +---@type Edge +--- A static class allowing calls through the "." operator only. +Edge = {} + +---@type UVec2 +--- A static class allowing calls through the "." operator only. +UVec2 = {} + +---@type NonZeroI16 +--- A static class allowing calls through the "." operator only. +NonZeroI16 = {} + +---@type TextFont +--- A static class allowing calls through the "." operator only. +TextFont = {} + +---@type ColorGradingGlobal +--- A static class allowing calls through the "." operator only. +ColorGradingGlobal = {} + +---@type Rhombus +--- A static class allowing calls through the "." operator only. +Rhombus = {} + +---@type GlobalZIndex +--- A static class allowing calls through the "." operator only. +GlobalZIndex = {} + +---@type CascadesFrusta +--- A static class allowing calls through the "." operator only. +CascadesFrusta = {} + +---@type ImageNode +--- A static class allowing calls through the "." operator only. +ImageNode = {} + +---@type Dir2 +--- A static class allowing calls through the "." operator only. +Dir2 = {} + +---@type Wireframe2dMaterial +--- A static class allowing calls through the "." operator only. +Wireframe2dMaterial = {} + +---@type AccumulatedMouseMotion +--- A static class allowing calls through the "." operator only. +AccumulatedMouseMotion = {} + +---@type ScriptQueryResult +--- A static class allowing calls through the "." operator only. +ScriptQueryResult = {} + +---@type Cow +--- A static class allowing calls through the "." operator only. +Cow = {} + +---@type AtomicI64 +--- A static class allowing calls through the "." operator only. +AtomicI64 = {} + +---@type Hsva +--- A static class allowing calls through the "." operator only. +Hsva = {} + +---@type EulerRot +--- A static class allowing calls through the "." operator only. +EulerRot = {} + +---@type AccessibilitySystems +--- A static class allowing calls through the "." operator only. +AccessibilitySystems = {} + +---@type Color +--- A static class allowing calls through the "." operator only. +Color = {} + +---@type RenderTarget +--- A static class allowing calls through the "." operator only. +RenderTarget = {} + +---@type GamepadRumbleRequest +--- A static class allowing calls through the "." operator only. +GamepadRumbleRequest = {} + +---@type I8Vec4 +--- A static class allowing calls through the "." operator only. +I8Vec4 = {} + +---@type ClearColorConfig +--- A static class allowing calls through the "." operator only. +ClearColorConfig = {} + +---@type ConeMeshBuilder +--- A static class allowing calls through the "." operator only. +ConeMeshBuilder = {} + +---@type Rot2 +--- A static class allowing calls through the "." operator only. +Rot2 = {} + +---@type InputFocusVisible +--- A static class allowing calls through the "." operator only. +InputFocusVisible = {} + +---@type ChildOf +--- A static class allowing calls through the "." operator only. +ChildOf = {} + +---@type SphereKind +--- A static class allowing calls through the "." operator only. +SphereKind = {} + +---@type RenderVisibleEntities +--- A static class allowing calls through the "." operator only. +RenderVisibleEntities = {} + +---@type ScriptResourceRegistration +--- A static class allowing calls through the "." operator only. +ScriptResourceRegistration = {} + +---@type Text +--- A static class allowing calls through the "." operator only. +Text = {} + +---@type TransformTreeChanged +--- A static class allowing calls through the "." operator only. +TransformTreeChanged = {} + +---@type Camera +--- A static class allowing calls through the "." operator only. +Camera = {} + +---@type WindowMoved +--- A static class allowing calls through the "." operator only. +WindowMoved = {} + +---@type NormalPrepass +--- A static class allowing calls through the "." operator only. +NormalPrepass = {} + +---@type WindowScaleFactorChanged +--- A static class allowing calls through the "." operator only. +WindowScaleFactorChanged = {} + +---@type MouseMotion +--- A static class allowing calls through the "." operator only. +MouseMotion = {} + +---@type GridTrackRepetition +--- A static class allowing calls through the "." operator only. +GridTrackRepetition = {} + +---@type Key +--- A static class allowing calls through the "." operator only. +Key = {} + +---@type I8Vec2 +--- A static class allowing calls through the "." operator only. +I8Vec2 = {} + +---@type ColorMaterial +--- A static class allowing calls through the "." operator only. +ColorMaterial = {} + +---@type ZIndex +--- A static class allowing calls through the "." operator only. +ZIndex = {} + +---@type Visibility +--- A static class allowing calls through the "." operator only. +Visibility = {} + +---@type WindowPosition +--- A static class allowing calls through the "." operator only. +WindowPosition = {} + +---@type BlendState +--- A static class allowing calls through the "." operator only. +BlendState = {} + +---@type NoAutoAabb +--- A static class allowing calls through the "." operator only. +NoAutoAabb = {} + +---@type Affine3 +--- A static class allowing calls through the "." operator only. +Affine3 = {} + +---@type Triangle3dMeshBuilder +--- A static class allowing calls through the "." operator only. +Triangle3dMeshBuilder = {} + +---@type ColorGrading +--- A static class allowing calls through the "." operator only. +ColorGrading = {} + +---@type VisibilityRange +--- A static class allowing calls through the "." operator only. +VisibilityRange = {} + +---@type AutoNavigationConfig +--- A static class allowing calls through the "." operator only. +AutoNavigationConfig = {} + +---@type DeferredPrepass +--- A static class allowing calls through the "." operator only. +DeferredPrepass = {} + +---@type TextNodeFlags +--- A static class allowing calls through the "." operator only. +TextNodeFlags = {} + +---@type GamepadRumbleIntensity +--- A static class allowing calls through the "." operator only. +GamepadRumbleIntensity = {} + +---@type InteropError +--- A static class allowing calls through the "." operator only. +InteropError = {} + +---@type TilemapChunk +--- A static class allowing calls through the "." operator only. +TilemapChunk = {} + +---@type FunctionArgInfo +--- A static class allowing calls through the "." operator only. +FunctionArgInfo = {} + +---@type Name +--- A static class allowing calls through the "." operator only. +Name = {} + +---@type Justify +--- A static class allowing calls through the "." operator only. +Justify = {} + +---@type Triangle2dMeshBuilder +--- A static class allowing calls through the "." operator only. +Triangle2dMeshBuilder = {} + +---@type CylinderAnchor +--- A static class allowing calls through the "." operator only. +CylinderAnchor = {} + +---@type OverflowClipBox +--- A static class allowing calls through the "." operator only. +OverflowClipBox = {} + +---@type Range +--- A static class allowing calls through the "." operator only. +Range = {} + +---@type ButtonAxisSettings +--- A static class allowing calls through the "." operator only. +ButtonAxisSettings = {} + +---@type ShaderStorageBuffer +--- A static class allowing calls through the "." operator only. +ShaderStorageBuffer = {} + +---@type ComponentTicks +--- A static class allowing calls through the "." operator only. +ComponentTicks = {} + +---@type PlaneMeshBuilder +--- A static class allowing calls through the "." operator only. +PlaneMeshBuilder = {} + +---@type SyncToRenderWorld +--- A static class allowing calls through the "." operator only. +SyncToRenderWorld = {} + +---@type ScreenSpaceTransmissionQuality +--- A static class allowing calls through the "." operator only. +ScreenSpaceTransmissionQuality = {} + +---@type TilemapChunkMeshCache +--- A static class allowing calls through the "." operator only. +TilemapChunkMeshCache = {} + +---@type CylinderMeshBuilder +--- A static class allowing calls through the "." operator only. +CylinderMeshBuilder = {} + +---@type GlobalsUniform +--- A static class allowing calls through the "." operator only. +GlobalsUniform = {} + +---@type Duration +--- A static class allowing calls through the "." operator only. +Duration = {} + +---@type Fixed +--- A static class allowing calls through the "." operator only. +Fixed = {} + +---@type U8Vec4 +--- A static class allowing calls through the "." operator only. +U8Vec4 = {} + +---@type FontWeight +--- A static class allowing calls through the "." operator only. +FontWeight = {} + +---@type TemporaryRenderEntity +--- A static class allowing calls through the "." operator only. +TemporaryRenderEntity = {} + +---@type GamepadEvent +--- A static class allowing calls through the "." operator only. +GamepadEvent = {} + +---@type Children +--- A static class allowing calls through the "." operator only. +Children = {} + +---@type BoxShadow +--- A static class allowing calls through the "." operator only. +BoxShadow = {} + +---@type DVec2 +--- A static class allowing calls through the "." operator only. +DVec2 = {} + +---@type GamepadConnectionEvent +--- A static class allowing calls through the "." operator only. +GamepadConnectionEvent = {} + +---@type NormalizedRenderTarget +--- A static class allowing calls through the "." operator only. +NormalizedRenderTarget = {} + +---@type Mesh3d +--- A static class allowing calls through the "." operator only. +Mesh3d = {} + +---@type MipBias +--- A static class allowing calls through the "." operator only. +MipBias = {} + +---@type I64Vec3 +--- A static class allowing calls through the "." operator only. +I64Vec3 = {} + +---@type WindowResizeConstraints +--- A static class allowing calls through the "." operator only. +WindowResizeConstraints = {} + +---@type MouseScrollUnit +--- A static class allowing calls through the "." operator only. +MouseScrollUnit = {} + +---@type BVec3A +--- A static class allowing calls through the "." operator only. +BVec3A = {} + +---@type CuboidMeshBuilder +--- A static class allowing calls through the "." operator only. +CuboidMeshBuilder = {} + +---@type CapsuleUvProfile +--- A static class allowing calls through the "." operator only. +CapsuleUvProfile = {} + +---@type Wireframe2d +--- A static class allowing calls through the "." operator only. +Wireframe2d = {} + +---@type DefaultQueryFilters +--- A static class allowing calls through the "." operator only. +DefaultQueryFilters = {} + +---@type LayoutConfig +--- A static class allowing calls through the "." operator only. +LayoutConfig = {} + +---@type BoxSizing +--- A static class allowing calls through the "." operator only. +BoxSizing = {} + +---@type DoubleTapGesture +--- A static class allowing calls through the "." operator only. +DoubleTapGesture = {} + +---@type EnabledButtons +--- A static class allowing calls through the "." operator only. +EnabledButtons = {} + +---@type AxisSettings +--- A static class allowing calls through the "." operator only. +AxisSettings = {} + +---@type Laba +--- A static class allowing calls through the "." operator only. +Laba = {} + +---@type Exposure +--- A static class allowing calls through the "." operator only. +Exposure = {} + +---@type Wireframe2dColor +--- A static class allowing calls through the "." operator only. +Wireframe2dColor = {} + +---@type ContextKey +--- A static class allowing calls through the "." operator only. +ContextKey = {} + +---@type Dir3 +--- A static class allowing calls through the "." operator only. +Dir3 = {} + +---@type PositionedGlyph +--- A static class allowing calls through the "." operator only. +PositionedGlyph = {} + +---@type MonitorSelection +--- A static class allowing calls through the "." operator only. +MonitorSelection = {} + +---@type Sprite +--- A static class allowing calls through the "." operator only. +Sprite = {} + +---@type Ellipse +--- A static class allowing calls through the "." operator only. +Ellipse = {} + +---@type TabGroup +--- A static class allowing calls through the "." operator only. +TabGroup = {} + +---@type BVec3 +--- A static class allowing calls through the "." operator only. +BVec3 = {} + +---@type TextSpan +--- A static class allowing calls through the "." operator only. +TextSpan = {} + +---@type CallbackLabel +--- A static class allowing calls through the "." operator only. +CallbackLabel = {} + +---@type Tonemapping +--- A static class allowing calls through the "." operator only. +Tonemapping = {} + +---@type RunGeometry +--- A static class allowing calls through the "." operator only. +RunGeometry = {} + +---@type RayCast3d +--- A static class allowing calls through the "." operator only. +RayCast3d = {} + +---@type ScriptComponentRegistration +--- A static class allowing calls through the "." operator only. +ScriptComponentRegistration = {} + +---@type CursorOptions +--- A static class allowing calls through the "." operator only. +CursorOptions = {} + +---@type AtomicU8 +--- A static class allowing calls through the "." operator only. +AtomicU8 = {} + +---@type WindowLevel +--- A static class allowing calls through the "." operator only. +WindowLevel = {} + +---@type TorusMeshBuilder +--- A static class allowing calls through the "." operator only. +TorusMeshBuilder = {} + +---@type NonNilUuid +--- A static class allowing calls through the "." operator only. +NonNilUuid = {} + +---@type CubemapLayout +--- A static class allowing calls through the "." operator only. +CubemapLayout = {} + +---@type Tick +--- A static class allowing calls through the "." operator only. +Tick = {} + +---@type PinchGesture +--- A static class allowing calls through the "." operator only. +PinchGesture = {} + +---@type AtomicU32 +--- A static class allowing calls through the "." operator only. +AtomicU32 = {} + +---@type ReflectSystemGraphNode +--- A static class allowing calls through the "." operator only. +ReflectSystemGraphNode = {} + +---@type BVec4 +--- A static class allowing calls through the "." operator only. +BVec4 = {} + +---@type MaxTrackSizingFunction +--- A static class allowing calls through the "." operator only. +MaxTrackSizingFunction = {} + +---@type CameraRenderGraph +--- A static class allowing calls through the "." operator only. +CameraRenderGraph = {} + +---@type InputFocus +--- A static class allowing calls through the "." operator only. +InputFocus = {} + +---@type Ime +--- A static class allowing calls through the "." operator only. +Ime = {} + +---@type Frustum +--- A static class allowing calls through the "." operator only. +Frustum = {} + +---@type DebandDither +--- A static class allowing calls through the "." operator only. +DebandDither = {} + +---@type FocusableArea +--- A static class allowing calls through the "." operator only. +FocusableArea = {} + +---@type WindowResolution +--- A static class allowing calls through the "." operator only. +WindowResolution = {} + +---@type WindowOccluded +--- A static class allowing calls through the "." operator only. +WindowOccluded = {} + +---@type Mat3A +--- A static class allowing calls through the "." operator only. +Mat3A = {} + +---@type JustifySelf +--- A static class allowing calls through the "." operator only. +JustifySelf = {} + +---@type Indices +--- A static class allowing calls through the "." operator only. +Indices = {} + +---@type ResolvedBorderRadius +--- A static class allowing calls through the "." operator only. +ResolvedBorderRadius = {} + +---@type ReflectNodeId +--- A static class allowing calls through the "." operator only. +ReflectNodeId = {} + +---@type NoWireframe2d +--- A static class allowing calls through the "." operator only. +NoWireframe2d = {} + +---@type Camera3dDepthTextureUsage +--- A static class allowing calls through the "." operator only. +Camera3dDepthTextureUsage = {} + +---@type AtomicIsize +--- A static class allowing calls through the "." operator only. +AtomicIsize = {} + +---@type CursorMoved +--- A static class allowing calls through the "." operator only. +CursorMoved = {} + +---@type KeyboardFocusLost +--- A static class allowing calls through the "." operator only. +KeyboardFocusLost = {} + +---@type ImageRenderTarget +--- A static class allowing calls through the "." operator only. +ImageRenderTarget = {} + +---@type Text2d +--- A static class allowing calls through the "." operator only. +Text2d = {} + +---@type Polyline3dMeshBuilder +--- A static class allowing calls through the "." operator only. +Polyline3dMeshBuilder = {} + +---@type FontSmoothing +--- A static class allowing calls through the "." operator only. +FontSmoothing = {} + +---@type WindowFocused +--- A static class allowing calls through the "." operator only. +WindowFocused = {} + +---@type DAffine3 +--- A static class allowing calls through the "." operator only. +DAffine3 = {} + +---@type LocationContext +--- A static class allowing calls through the "." operator only. +LocationContext = {} + +---@type IgnoreScroll +--- A static class allowing calls through the "." operator only. +IgnoreScroll = {} + +---@type Plane3d +--- A static class allowing calls through the "." operator only. +Plane3d = {} + +---@type U64Vec3 +--- A static class allowing calls through the "." operator only. +U64Vec3 = {} + +---@type Text2dShadow +--- A static class allowing calls through the "." operator only. +Text2dShadow = {} + +---@type AlignItems +--- A static class allowing calls through the "." operator only. +AlignItems = {} + +---@type ImageNodeSize +--- A static class allowing calls through the "." operator only. +ImageNodeSize = {} + +---@type Val +--- A static class allowing calls through the "." operator only. +Val = {} + +---@type UVec3 +--- A static class allowing calls through the "." operator only. +UVec3 = {} + +---@type MainPassResolutionOverride +--- A static class allowing calls through the "." operator only. +MainPassResolutionOverride = {} + +---@type UiRect +--- A static class allowing calls through the "." operator only. +UiRect = {} + +---@type BoundingSphereCast +--- A static class allowing calls through the "." operator only. +BoundingSphereCast = {} + +---@type GridAutoFlow +--- A static class allowing calls through the "." operator only. +GridAutoFlow = {} + +---@type UntypedAssetId +--- A static class allowing calls through the "." operator only. +UntypedAssetId = {} + +---@type Capsule2d +--- A static class allowing calls through the "." operator only. +Capsule2d = {} + +---@type MinTrackSizingFunction +--- A static class allowing calls through the "." operator only. +MinTrackSizingFunction = {} + +---@type InheritedVisibility +--- A static class allowing calls through the "." operator only. +InheritedVisibility = {} + +---@type VideoMode +--- A static class allowing calls through the "." operator only. +VideoMode = {} + +---@type SliceScaleMode +--- A static class allowing calls through the "." operator only. +SliceScaleMode = {} + +---@type Arc2d +--- A static class allowing calls through the "." operator only. +Arc2d = {} + +---@type ReflectReference +--- A static class allowing calls through the "." operator only. +ReflectReference = {} + +---@type ClearColor +--- A static class allowing calls through the "." operator only. +ClearColor = {} + +---@type ScriptValue +--- A static class allowing calls through the "." operator only. +ScriptValue = {} + +---@type CircleMeshBuilder +--- A static class allowing calls through the "." operator only. +CircleMeshBuilder = {} + +---@type Label +--- A static class allowing calls through the "." operator only. +Label = {} + +---@type CursorIcon +--- A static class allowing calls through the "." operator only. +CursorIcon = {} + +---@type FocusPolicy +--- A static class allowing calls through the "." operator only. +FocusPolicy = {} + +---@type Vec3 +--- A static class allowing calls through the "." operator only. +Vec3 = {} + +---@type CircularSector +--- A static class allowing calls through the "." operator only. +CircularSector = {} + +---@type CustomCursor +--- A static class allowing calls through the "." operator only. +CustomCursor = {} + +---@type BackgroundGradient +--- A static class allowing calls through the "." operator only. +BackgroundGradient = {} + +---@type ObservedBy +--- A static class allowing calls through the "." operator only. +ObservedBy = {} + +---@type ReflectableScheduleLabel +--- A static class allowing calls through the "." operator only. +ReflectableScheduleLabel = {} + +---@type Tetrahedron +--- A static class allowing calls through the "." operator only. +Tetrahedron = {} + +---@type EaseFunction +--- A static class allowing calls through the "." operator only. +EaseFunction = {} + +---@type SubCameraView +--- A static class allowing calls through the "." operator only. +SubCameraView = {} + +---@type PanGesture +--- A static class allowing calls through the "." operator only. +PanGesture = {} + +---@type Projection +--- A static class allowing calls through the "." operator only. +Projection = {} + +---@type Oklaba +--- A static class allowing calls through the "." operator only. +Oklaba = {} + +---@type Capsule3dMeshBuilder +--- A static class allowing calls through the "." operator only. +Capsule3dMeshBuilder = {} + +---@type GamepadButtonChangedEvent +--- A static class allowing calls through the "." operator only. +GamepadButtonChangedEvent = {} + +---@type U16Vec3 +--- A static class allowing calls through the "." operator only. +U16Vec3 = {} + +---@type Segment2d +--- A static class allowing calls through the "." operator only. +Segment2d = {} + +---@type Triangle2d +--- A static class allowing calls through the "." operator only. +Triangle2d = {} + +---@type WindowRef +--- A static class allowing calls through the "." operator only. +WindowRef = {} + +---@type AutoDirectionalNavigation +--- A static class allowing calls through the "." operator only. +AutoDirectionalNavigation = {} + +---@type Isometry2d +--- A static class allowing calls through the "." operator only. +Isometry2d = {} + +---@type WindowEvent +--- A static class allowing calls through the "." operator only. +WindowEvent = {} + +---@type CircularSegmentMeshBuilder +--- A static class allowing calls through the "." operator only. +CircularSegmentMeshBuilder = {} + +---@type Strikethrough +--- A static class allowing calls through the "." operator only. +Strikethrough = {} + +---@type CompositeAlphaMode +--- A static class allowing calls through the "." operator only. +CompositeAlphaMode = {} + +---@type PrimaryMonitor +--- A static class allowing calls through the "." operator only. +PrimaryMonitor = {} + +---@type DirectionalNavigationMap +--- A static class allowing calls through the "." operator only. +DirectionalNavigationMap = {} + +---@type ComputedUiTargetCamera +--- A static class allowing calls through the "." operator only. +ComputedUiTargetCamera = {} + +---@type NodeImageMode +--- A static class allowing calls through the "." operator only. +NodeImageMode = {} + +---@type EntityGeneration +--- A static class allowing calls through the "." operator only. +EntityGeneration = {} + +---@type ContentSize +--- A static class allowing calls through the "." operator only. +ContentSize = {} + +---@type CascadesVisibleEntities +--- A static class allowing calls through the "." operator only. +CascadesVisibleEntities = {} + +---@type RenderLayers +--- A static class allowing calls through the "." operator only. +RenderLayers = {} + +---@type AtomicU16 +--- A static class allowing calls through the "." operator only. +AtomicU16 = {} + +---@type ButtonState +--- A static class allowing calls through the "." operator only. +ButtonState = {} + +---@type I64Vec4 +--- A static class allowing calls through the "." operator only. +I64Vec4 = {} + +---@type Ray3d +--- A static class allowing calls through the "." operator only. +Ray3d = {} + +---@type DMat2 +--- A static class allowing calls through the "." operator only. +DMat2 = {} + +---@type CubemapVisibleEntities +--- A static class allowing calls through the "." operator only. +CubemapVisibleEntities = {} + +---@type BackgroundColor +--- A static class allowing calls through the "." operator only. +BackgroundColor = {} + +---@type Node +--- A static class allowing calls through the "." operator only. +Node = {} + +---@type DVec3 +--- A static class allowing calls through the "." operator only. +DVec3 = {} + +---@type Transform +--- A static class allowing calls through the "." operator only. +Transform = {} + +---@type TileData +--- A static class allowing calls through the "." operator only. +TileData = {} + +---@type EntityHash +--- A static class allowing calls through the "." operator only. +EntityHash = {} + +---@type Aabb2d +--- A static class allowing calls through the "." operator only. +Aabb2d = {} + +---@type InterpolationColorSpace +--- A static class allowing calls through the "." operator only. +InterpolationColorSpace = {} + +---@type NonZeroU128 +--- A static class allowing calls through the "." operator only. +NonZeroU128 = {} + +---@type OverflowClipMargin +--- A static class allowing calls through the "." operator only. +OverflowClipMargin = {} + +---@type TouchInput +--- A static class allowing calls through the "." operator only. +TouchInput = {} + +---@type Namespace +--- A static class allowing calls through the "." operator only. +Namespace = {} + +---@type LineHeight +--- A static class allowing calls through the "." operator only. +LineHeight = {} + +---@type WindowClosed +--- A static class allowing calls through the "." operator only. +WindowClosed = {} + +---@type Ray2d +--- A static class allowing calls through the "." operator only. +Ray2d = {} + +---@type ScriptError +--- A static class allowing calls through the "." operator only. +ScriptError = {} + +---@type Aabb +--- A static class allowing calls through the "." operator only. +Aabb = {} + +---@type DepthPrepass +--- A static class allowing calls through the "." operator only. +DepthPrepass = {} + +---@type UVec4 +--- A static class allowing calls through the "." operator only. +UVec4 = {} + +---@type Instant +--- A static class allowing calls through the "." operator only. +Instant = {} + +---@type DVec4 +--- A static class allowing calls through the "." operator only. +DVec4 = {} + +---@type Circle +--- A static class allowing calls through the "." operator only. +Circle = {} + +---@type GridTrack +--- A static class allowing calls through the "." operator only. +GridTrack = {} + +---@type UiTransform +--- A static class allowing calls through the "." operator only. +UiTransform = {} + +---@type JumpAt +--- A static class allowing calls through the "." operator only. +JumpAt = {} + +---@type GamepadAxisChangedEvent +--- A static class allowing calls through the "." operator only. +GamepadAxisChangedEvent = {} + +---@type RawGamepadEvent +--- A static class allowing calls through the "." operator only. +RawGamepadEvent = {} + +---@type MeshMorphWeights +--- A static class allowing calls through the "." operator only. +MeshMorphWeights = {} + +---@type VariadicTuple +--- A static class allowing calls through the "." operator only. +VariadicTuple = {} + +---@type IRect +--- A static class allowing calls through the "." operator only. +IRect = {} + +---@type BoundingCircleCast +--- A static class allowing calls through the "." operator only. +BoundingCircleCast = {} + +---@type Segment3dMeshBuilder +--- A static class allowing calls through the "." operator only. +Segment3dMeshBuilder = {} + +---@type Triangle3d +--- A static class allowing calls through the "." operator only. +Triangle3d = {} + +---@type AngularColorStop +--- A static class allowing calls through the "." operator only. +AngularColorStop = {} + +---@type DMat4 +--- A static class allowing calls through the "." operator only. +DMat4 = {} + +---@type Image +--- A static class allowing calls through the "." operator only. +Image = {} + +---@type Mesh2d +--- A static class allowing calls through the "." operator only. +Mesh2d = {} + +---@type TabIndex +--- A static class allowing calls through the "." operator only. +TabIndex = {} + +---@type NonZeroI32 +--- A static class allowing calls through the "." operator only. +NonZeroI32 = {} + +---@type CustomProjection +--- A static class allowing calls through the "." operator only. +CustomProjection = {} + +---@type AtomicBool +--- A static class allowing calls through the "." operator only. +AtomicBool = {} + +---@type ReflectSystemSet +--- A static class allowing calls through the "." operator only. +ReflectSystemSet = {} + +---@type Entity +--- A static class allowing calls through the "." operator only. +Entity = {} + +---@type CircularSegment +--- A static class allowing calls through the "." operator only. +CircularSegment = {} + +---@type ComputedUiRenderTargetInfo +--- A static class allowing calls through the "." operator only. +ComputedUiRenderTargetInfo = {} + +---@type ColorStop +--- A static class allowing calls through the "." operator only. +ColorStop = {} + +---@type BVec4A +--- A static class allowing calls through the "." operator only. +BVec4A = {} + +---@type Dir3A +--- A static class allowing calls through the "." operator only. +Dir3A = {} + +---@type Gradient +--- A static class allowing calls through the "." operator only. +Gradient = {} + +---@type ScriptSystemBuilder +--- A static class allowing calls through the "." operator only. +ScriptSystemBuilder = {} + +---@type EllipseMeshBuilder +--- A static class allowing calls through the "." operator only. +EllipseMeshBuilder = {} + +---@type TextColor +--- A static class allowing calls through the "." operator only. +TextColor = {} + +---@type RadialGradient +--- A static class allowing calls through the "." operator only. +RadialGradient = {} + +---@type Vec2 +--- A static class allowing calls through the "." operator only. +Vec2 = {} + +---@type U64Vec2 +--- A static class allowing calls through the "." operator only. +U64Vec2 = {} + +---@type NonZeroI8 +--- A static class allowing calls through the "." operator only. +NonZeroI8 = {} + +---@type DAffine2 +--- A static class allowing calls through the "." operator only. +DAffine2 = {} + +---@type NonZeroI64 +--- A static class allowing calls through the "." operator only. +NonZeroI64 = {} + +---@type Lcha +--- A static class allowing calls through the "." operator only. +Lcha = {} + +---@type Vec3A +--- A static class allowing calls through the "." operator only. +Vec3A = {} + +---@type DynamicComponent +--- A static class allowing calls through the "." operator only. +DynamicComponent = {} + +---@type WindowResized +--- A static class allowing calls through the "." operator only. +WindowResized = {} + +---@type TypeId +--- A static class allowing calls through the "." operator only. +TypeId = {} + +---@type FlexDirection +--- A static class allowing calls through the "." operator only. +FlexDirection = {} + +---@type Disabled +--- A static class allowing calls through the "." operator only. +Disabled = {} + +---@type JustifyItems +--- A static class allowing calls through the "." operator only. +JustifyItems = {} + +---@type AnnulusMeshBuilder +--- A static class allowing calls through the "." operator only. +AnnulusMeshBuilder = {} + +---@type Val2 +--- A static class allowing calls through the "." operator only. +Val2 = {} + +---@type AlignContent +--- A static class allowing calls through the "." operator only. +AlignContent = {} + +---@type Interval +--- A static class allowing calls through the "." operator only. +Interval = {} + +---@type UiTargetCamera +--- A static class allowing calls through the "." operator only. +UiTargetCamera = {} + +---@type OrthographicProjection +--- A static class allowing calls through the "." operator only. +OrthographicProjection = {} + +---@type RawGamepadAxisChangedEvent +--- A static class allowing calls through the "." operator only. +RawGamepadAxisChangedEvent = {} + +---@type U16Vec4 +--- A static class allowing calls through the "." operator only. +U16Vec4 = {} + +---@type ScriptComponent +--- A static class allowing calls through the "." operator only. +ScriptComponent = {} + +---@type WindowThemeChanged +--- A static class allowing calls through the "." operator only. +WindowThemeChanged = {} + +---@type DeferredPrepassDoubleBuffer +--- A static class allowing calls through the "." operator only. +DeferredPrepassDoubleBuffer = {} + +---@type AlphaMode +--- A static class allowing calls through the "." operator only. +AlphaMode = {} + +---@type any +--- A static class allowing calls through the "." operator only. +FunctionCallContext = {} + +---@type AssetIndex +--- A static class allowing calls through the "." operator only. +AssetIndex = {} + +---@type CompassQuadrant +--- A static class allowing calls through the "." operator only. +CompassQuadrant = {} + +---@type CompassOctant +--- A static class allowing calls through the "." operator only. +CompassOctant = {} + +---@type FunctionInfo +--- A static class allowing calls through the "." operator only. +FunctionInfo = {} + +---@type RotationGesture +--- A static class allowing calls through the "." operator only. +RotationGesture = {} + +---@type TextBounds +--- A static class allowing calls through the "." operator only. +TextBounds = {} + +---@type ReflectSystemGraph +--- A static class allowing calls through the "." operator only. +ReflectSystemGraph = {} + +---@type Monitor +--- A static class allowing calls through the "." operator only. +Monitor = {} + +---@type Outline +--- A static class allowing calls through the "." operator only. +Outline = {} + +---@type Capsule3d +--- A static class allowing calls through the "." operator only. +Capsule3d = {} + +---@type Gamepad +--- A static class allowing calls through the "." operator only. +Gamepad = {} + +---@type EntityIndexSet +--- A static class allowing calls through the "." operator only. +EntityIndexSet = {} + +---@type RangeFull +--- A static class allowing calls through the "." operator only. +RangeFull = {} + +---@type Uuid +--- A static class allowing calls through the "." operator only. +Uuid = {} + +---@type ReflectSchedule +--- A static class allowing calls through the "." operator only. +ReflectSchedule = {} + +---@type BorderRect +--- A static class allowing calls through the "." operator only. +BorderRect = {} + +---@type UntypedHandle +--- A static class allowing calls through the "." operator only. +UntypedHandle = {} + +---@type Mesh2dWireframe +--- A static class allowing calls through the "." operator only. +Mesh2dWireframe = {} + +---@type ReflectSystem +--- A static class allowing calls through the "." operator only. +ReflectSystem = {} + +---@type ReadbackComplete +--- A static class allowing calls through the "." operator only. +ReadbackComplete = {} + +---@type U8Vec3 +--- A static class allowing calls through the "." operator only. +U8Vec3 = {} + +---@type Torus +--- A static class allowing calls through the "." operator only. +Torus = {} + +---@type ConeAnchor +--- A static class allowing calls through the "." operator only. +ConeAnchor = {} + +---@type FontFeatures +--- A static class allowing calls through the "." operator only. +FontFeatures = {} + +---@type Hsla +--- A static class allowing calls through the "." operator only. +Hsla = {} + +---@type DQuat +--- A static class allowing calls through the "." operator only. +DQuat = {} + +---@type U64Vec4 +--- A static class allowing calls through the "." operator only. +U64Vec4 = {} + +---@type WindowDestroyed +--- A static class allowing calls through the "." operator only. +WindowDestroyed = {} + +---@type I8Vec3 +--- A static class allowing calls through the "." operator only. +I8Vec3 = {} + +---@type SpriteImageMode +--- A static class allowing calls through the "." operator only. +SpriteImageMode = {} + +---@type BoundingSphere +--- A static class allowing calls through the "." operator only. +BoundingSphere = {} + +---@type Mesh +--- A static class allowing calls through the "." operator only. +Mesh = {} + +---@type NativeKey +--- A static class allowing calls through the "." operator only. +NativeKey = {} + +---@type UiScale +--- A static class allowing calls through the "." operator only. +UiScale = {} + +---@type Virtual +--- A static class allowing calls through the "." operator only. +Virtual = {} + +---@type TextEntity +--- A static class allowing calls through the "." operator only. +TextEntity = {} + +---@type OverflowAxis +--- A static class allowing calls through the "." operator only. +OverflowAxis = {} + +---@type ColorGradingSection +--- A static class allowing calls through the "." operator only. +ColorGradingSection = {} + +---@type AtomicU64 +--- A static class allowing calls through the "." operator only. +AtomicU64 = {} + +---@type AabbCast2d +--- A static class allowing calls through the "." operator only. +AabbCast2d = {} + +---@type Remove +--- A static class allowing calls through the "." operator only. +Remove = {} + +---@type CursorLeft +--- A static class allowing calls through the "." operator only. +CursorLeft = {} + +---@type Insert +--- A static class allowing calls through the "." operator only. +Insert = {} + +---@type OrderIndependentTransparencySettings +--- A static class allowing calls through the "." operator only. +OrderIndependentTransparencySettings = {} + +---@type TemporalJitter +--- A static class allowing calls through the "." operator only. +TemporalJitter = {} + +---@type WindowCloseRequested +--- A static class allowing calls through the "." operator only. +WindowCloseRequested = {} + +---@type Dir4 +--- A static class allowing calls through the "." operator only. +Dir4 = {} + +---@type ConicalFrustum +--- A static class allowing calls through the "." operator only. +ConicalFrustum = {} + +---@type CameraMainTextureUsages +--- A static class allowing calls through the "." operator only. +CameraMainTextureUsages = {} + +---@type RequestRedraw +--- A static class allowing calls through the "." operator only. +RequestRedraw = {} + +---@type NavNeighbors +--- A static class allowing calls through the "." operator only. +NavNeighbors = {} + +---@type RegularPolygonMeshBuilder +--- A static class allowing calls through the "." operator only. +RegularPolygonMeshBuilder = {} + +---@type Sphere +--- A static class allowing calls through the "." operator only. +Sphere = {} + +---@type TextBackgroundColor +--- A static class allowing calls through the "." operator only. +TextBackgroundColor = {} + +---@type ScreenshotCaptured +--- A static class allowing calls through the "." operator only. +ScreenshotCaptured = {} + +---@type WindowTheme +--- A static class allowing calls through the "." operator only. +WindowTheme = {} + +---@type TouchPhase +--- A static class allowing calls through the "." operator only. +TouchPhase = {} + +---@type BVec2 +--- A static class allowing calls through the "." operator only. +BVec2 = {} + +---@type Viewport +--- A static class allowing calls through the "." operator only. +Viewport = {} + +---@type Overflow +--- A static class allowing calls through the "." operator only. +Overflow = {} + +---@type U16Vec2 +--- A static class allowing calls through the "." operator only. +U16Vec2 = {} + +---@type SocketAddr +--- A static class allowing calls through the "." operator only. +SocketAddr = {} + +---@type ConvexPolygon +--- A static class allowing calls through the "." operator only. +ConvexPolygon = {} + +---@type Timer +--- A static class allowing calls through the "." operator only. +Timer = {} + +---@type NonZeroI128 +--- A static class allowing calls through the "." operator only. +NonZeroI128 = {} + +---@type NonZeroU8 +--- A static class allowing calls through the "." operator only. +NonZeroU8 = {} + +---@type MouseButtonInput +--- A static class allowing calls through the "." operator only. +MouseButtonInput = {} + +---@type CustomCursorImage +--- A static class allowing calls through the "." operator only. +CustomCursorImage = {} + +---@type VisibleEntities +--- A static class allowing calls through the "." operator only. +VisibleEntities = {} + +---@type ScreenEdge +--- A static class allowing calls through the "." operator only. +ScreenEdge = {} + +---@type CameraOutputMode +--- A static class allowing calls through the "." operator only. +CameraOutputMode = {} + +---@type TextureFormat +--- A static class allowing calls through the "." operator only. +TextureFormat = {} + +---@type WindowMode +--- A static class allowing calls through the "." operator only. +WindowMode = {} + +---@type Isometry3d +--- A static class allowing calls through the "." operator only. +Isometry3d = {} + +---@type IVec2 +--- A static class allowing calls through the "." operator only. +IVec2 = {} + +---@type VideoModeSelection +--- A static class allowing calls through the "." operator only. +VideoModeSelection = {} + +---@type RemovedComponentEntity +--- A static class allowing calls through the "." operator only. +RemovedComponentEntity = {} + +---@type I64Vec2 +--- A static class allowing calls through the "." operator only. +I64Vec2 = {} + +---@type TextureAtlas +--- A static class allowing calls through the "." operator only. +TextureAtlas = {} + +---@type FlexWrap +--- A static class allowing calls through the "." operator only. +FlexWrap = {} + +---@type UiPosition +--- A static class allowing calls through the "." operator only. +UiPosition = {} + +---@type CubemapFrusta +--- A static class allowing calls through the "." operator only. +CubemapFrusta = {} + +---@type Srgba +--- A static class allowing calls through the "." operator only. +Srgba = {} + +---@type Button +--- A static class allowing calls through the "." operator only. +Button = {} + +---@type KeyboardInput +--- A static class allowing calls through the "." operator only. +KeyboardInput = {} + +---@type Mat2 +--- A static class allowing calls through the "." operator only. +Mat2 = {} + +---@type PositionType +--- A static class allowing calls through the "." operator only. +PositionType = {} + +---@type GamepadAxis +--- A static class allowing calls through the "." operator only. +GamepadAxis = {} + +---@type NormalizedWindowRef +--- A static class allowing calls through the "." operator only. +NormalizedWindowRef = {} + +---@type NonZeroIsize +--- A static class allowing calls through the "." operator only. +NonZeroIsize = {} + +---@type AtomicI8 +--- A static class allowing calls through the "." operator only. +AtomicI8 = {} + +---@type CursorGrabMode +--- A static class allowing calls through the "." operator only. +CursorGrabMode = {} + +---@type CircularMeshUvMode +--- A static class allowing calls through the "." operator only. +CircularMeshUvMode = {} + +---@type GamepadSettings +--- A static class allowing calls through the "." operator only. +GamepadSettings = {} + +---@type VisibilityClass +--- A static class allowing calls through the "." operator only. +VisibilityClass = {} + +---@type ViewVisibility +--- A static class allowing calls through the "." operator only. +ViewVisibility = {} + +---@type Mat4 +--- A static class allowing calls through the "." operator only. +Mat4 = {} + +---@type AabbCast3d +--- A static class allowing calls through the "." operator only. +AabbCast3d = {} + +---@type GridPlacement +--- A static class allowing calls through the "." operator only. +GridPlacement = {} + +---@type ScriptQueryBuilder +--- A static class allowing calls through the "." operator only. +ScriptQueryBuilder = {} + +---@type U8Vec2 +--- A static class allowing calls through the "." operator only. +U8Vec2 = {} + +---@type AspectRatio +--- A static class allowing calls through the "." operator only. +AspectRatio = {} + +---@type UnderlineColor +--- A static class allowing calls through the "." operator only. +UnderlineColor = {} + +---@type Capsule2dMeshBuilder +--- A static class allowing calls through the "." operator only. +Capsule2dMeshBuilder = {} + +---@type ConvexPolygonMeshBuilder +--- A static class allowing calls through the "." operator only. +ConvexPolygonMeshBuilder = {} + +---@type Camera3d +--- A static class allowing calls through the "." operator only. +Camera3d = {} + +---@type NoFrustumCulling +--- A static class allowing calls through the "." operator only. +NoFrustumCulling = {} + +---@type ComputedTextBlock +--- A static class allowing calls through the "." operator only. +ComputedTextBlock = {} + +---@type CursorEntered +--- A static class allowing calls through the "." operator only. +CursorEntered = {} + +---@type FontFeatureTag +--- A static class allowing calls through the "." operator only. +FontFeatureTag = {} + +---@type ForceTouch +--- A static class allowing calls through the "." operator only. +ForceTouch = {} + +---@type WindowClosing +--- A static class allowing calls through the "." operator only. +WindowClosing = {} + +---@type InternalWindowState +--- A static class allowing calls through the "." operator only. +InternalWindowState = {} + +---@type WindowCreated +--- A static class allowing calls through the "." operator only. +WindowCreated = {} + +---@type TilemapChunkTileData +--- A static class allowing calls through the "." operator only. +TilemapChunkTileData = {} + +---@type Despawn +--- A static class allowing calls through the "." operator only. +Despawn = {} + +---@type RhombusMeshBuilder +--- A static class allowing calls through the "." operator only. +RhombusMeshBuilder = {} + +---@type Aabb3d +--- A static class allowing calls through the "." operator only. +Aabb3d = {} + +---@type SkinnedMesh +--- A static class allowing calls through the "." operator only. +SkinnedMesh = {} + +---@type Affine2 +--- A static class allowing calls through the "." operator only. +Affine2 = {} + +---@type VisibleMeshEntities +--- A static class allowing calls through the "." operator only. +VisibleMeshEntities = {} + +---@type Mat3 +--- A static class allowing calls through the "." operator only. +Mat3 = {} + +---@type ManualTextureViewHandle +--- A static class allowing calls through the "." operator only. +ManualTextureViewHandle = {} + +---@type EntityHashSet +--- A static class allowing calls through the "." operator only. +EntityHashSet = {} + +---@type TextShadow +--- A static class allowing calls through the "." operator only. +TextShadow = {} + +---@type Plane2d +--- A static class allowing calls through the "." operator only. +Plane2d = {} + +---@type RenderAssetUsages +--- A static class allowing calls through the "." operator only. +RenderAssetUsages = {} + +---@type Msaa +--- A static class allowing calls through the "." operator only. +Msaa = {} + +---@type AccumulatedMouseScroll +--- A static class allowing calls through the "." operator only. +AccumulatedMouseScroll = {} + +---@type Skybox +--- A static class allowing calls through the "." operator only. +Skybox = {} + +---@type FileDragAndDrop +--- A static class allowing calls through the "." operator only. +FileDragAndDrop = {} + +---@type MouseWheel +--- A static class allowing calls through the "." operator only. +MouseWheel = {} + +---@type Annulus +--- A static class allowing calls through the "." operator only. +Annulus = {} + +---@type ComponentId +--- A static class allowing calls through the "." operator only. +ComponentId = {} + +---@type KeyCode +--- A static class allowing calls through the "." operator only. +KeyCode = {} + +---@type ScrollPosition +--- A static class allowing calls through the "." operator only. +ScrollPosition = {} + +---@type EntityIndex +--- A static class allowing calls through the "." operator only. +EntityIndex = {} + +---@type FunctionReturnInfo +--- A static class allowing calls through the "." operator only. +FunctionReturnInfo = {} + +---@type ComputedNode +--- A static class allowing calls through the "." operator only. +ComputedNode = {} + +---@type MeshTag +--- A static class allowing calls through the "." operator only. +MeshTag = {} + +---@type Camera3dDepthLoadOp +--- A static class allowing calls through the "." operator only. +Camera3dDepthLoadOp = {} + +---@type Arc +--- A static class allowing calls through the "." operator only. +Arc = {} + +---@type Line2d +--- A static class allowing calls through the "." operator only. +Line2d = {} + +---@type NonZeroU64 +--- A static class allowing calls through the "." operator only. +NonZeroU64 = {} + +---@type AutoFocus +--- A static class allowing calls through the "." operator only. +AutoFocus = {} + +---@type Display +--- A static class allowing calls through the "." operator only. +Display = {} + +---@type AppLifecycle +--- A static class allowing calls through the "." operator only. +AppLifecycle = {} + +---@type PerspectiveProjection +--- A static class allowing calls through the "." operator only. +PerspectiveProjection = {} + +---@type Hdr +--- A static class allowing calls through the "." operator only. +Hdr = {} + +---@type FontHinting +--- A static class allowing calls through the "." operator only. +FontHinting = {} + +---@type TextureAtlasLayout +--- A static class allowing calls through the "." operator only. +TextureAtlasLayout = {} + +---@type TetrahedronMeshBuilder +--- A static class allowing calls through the "." operator only. +TetrahedronMeshBuilder = {} + +---@type SystemCursorIcon +--- A static class allowing calls through the "." operator only. +SystemCursorIcon = {} + +---@type UiGlobalTransform +--- A static class allowing calls through the "." operator only. +UiGlobalTransform = {} + +---@type AtomicI32 +--- A static class allowing calls through the "." operator only. +AtomicI32 = {} + +---@type RelativeCursorPosition +--- A static class allowing calls through the "." operator only. +RelativeCursorPosition = {} + +---@type RawGamepadButtonChangedEvent +--- A static class allowing calls through the "." operator only. +RawGamepadButtonChangedEvent = {} + +---@type MouseButton +--- A static class allowing calls through the "." operator only. +MouseButton = {} + +---@type Interaction +--- A static class allowing calls through the "." operator only. +Interaction = {} + +---@type IVec3 +--- A static class allowing calls through the "." operator only. +IVec3 = {} + +---@type TimerMode +--- A static class allowing calls through the "." operator only. +TimerMode = {} + +---@type I16Vec2 +--- A static class allowing calls through the "." operator only. +I16Vec2 = {} + +---@type Anchor +--- A static class allowing calls through the "." operator only. +Anchor = {} + +---@type RectangleMeshBuilder +--- A static class allowing calls through the "." operator only. +RectangleMeshBuilder = {} + +---@type World +--- An global instance of this type +world = {} + +---@type any +--- An global instance of this type +script_asset = {} + +---@type Entity +--- An global instance of this type +entity = {} + diff --git a/crates/lad_backends/assets/definitions/bindings.lad.json b/crates/lad_backends/assets/definitions/bindings.lad.json new file mode 100644 index 0000000000..92fe3cb1bf --- /dev/null +++ b/crates/lad_backends/assets/definitions/bindings.lad.json @@ -0,0 +1,142831 @@ +{ + "version": "0.19.0", + "globals": { + "ScalingMode": { + "type_kind": { + "val": "bevy_camera::projection::ScalingMode" + }, + "is_static": true + }, + "GamepadButton": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadButton" + }, + "is_static": true + }, + "Polyline2d": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Polyline2d" + }, + "is_static": true + }, + "Replace": { + "type_kind": { + "val": "bevy_ecs::lifecycle::Replace" + }, + "is_static": true + }, + "RadialGradientShape": { + "type_kind": { + "val": "bevy_ui::gradients::RadialGradientShape" + }, + "is_static": true + }, + "I16Vec4": { + "type_kind": { + "val": "glam::I16Vec4" + }, + "is_static": true + }, + "TextureSlicer": { + "type_kind": { + "val": "bevy_sprite::texture_slice::slicer::TextureSlicer" + }, + "is_static": true + }, + "AccessibilityRequested": { + "type_kind": { + "val": "bevy_a11y::AccessibilityRequested" + }, + "is_static": true + }, + "AssetPath": { + "type_kind": { + "val": "bevy_asset::path::AssetPath" + }, + "is_static": true + }, + "MsaaWriteback": { + "type_kind": { + "val": "bevy_camera::clear_color::MsaaWriteback" + }, + "is_static": true + }, + "LinearGradient": { + "type_kind": { + "val": "bevy_ui::gradients::LinearGradient" + }, + "is_static": true + }, + "SpriteScalingMode": { + "type_kind": { + "val": "bevy_sprite::sprite::SpriteScalingMode" + }, + "is_static": true + }, + "SmolStr": { + "type_kind": { + "val": "smol_str::SmolStr" + }, + "is_static": true + }, + "InfinitePlane3d": { + "type_kind": { + "val": "bevy_math::primitives::dim3::InfinitePlane3d" + }, + "is_static": true + }, + "SphereMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::sphere::SphereMeshBuilder" + }, + "is_static": true + }, + "RegularPolygon": { + "type_kind": { + "val": "bevy_math::primitives::dim2::RegularPolygon" + }, + "is_static": true + }, + "GamepadConnection": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadConnection" + }, + "is_static": true + }, + "OcclusionCulling": { + "type_kind": { + "val": "bevy_render::experimental::occlusion_culling::OcclusionCulling" + }, + "is_static": true + }, + "Screenshot": { + "type_kind": { + "val": "bevy_render::view::window::screenshot::Screenshot" + }, + "is_static": true + }, + "Rect": { + "type_kind": { + "val": "bevy_math::rects::rect::Rect" + }, + "is_static": true + }, + "ViewportNode": { + "type_kind": { + "val": "bevy_ui::widget::viewport::ViewportNode" + }, + "is_static": true + }, + "types": { + "type_kind": { + "hashMap": [ + { + "primitive": "string" + }, + { + "union": [ + { + "val": "bevy_mod_scripting_bindings::query::ScriptTypeRegistration" + }, + { + "union": [ + { + "val": "bevy_mod_scripting_bindings::query::ScriptComponentRegistration" + }, + { + "val": "bevy_mod_scripting_bindings::query::ScriptResourceRegistration" + } + ] + } + ] + } + ] + }, + "is_static": false + }, + "GlyphAtlasLocation": { + "type_kind": { + "val": "bevy_text::glyph::GlyphAtlasLocation" + }, + "is_static": true + }, + "MorphWeights": { + "type_kind": { + "val": "bevy_mesh::morph::MorphWeights" + }, + "is_static": true + }, + "GlyphAtlasInfo": { + "type_kind": { + "val": "bevy_text::glyph::GlyphAtlasInfo" + }, + "is_static": true + }, + "Oklcha": { + "type_kind": { + "val": "bevy_color::oklcha::Oklcha" + }, + "is_static": true + }, + "MotionVectorPrepass": { + "type_kind": { + "val": "bevy_core_pipeline::prepass::MotionVectorPrepass" + }, + "is_static": true + }, + "AlignSelf": { + "type_kind": { + "val": "bevy_ui::ui_node::AlignSelf" + }, + "is_static": true + }, + "Window": { + "type_kind": { + "val": "bevy_window::window::Window" + }, + "is_static": true + }, + "FloatOrd": { + "type_kind": { + "val": "bevy_math::float_ord::FloatOrd" + }, + "is_static": true + }, + "ButtonSettings": { + "type_kind": { + "val": "bevy_input::gamepad::ButtonSettings" + }, + "is_static": true + }, + "Affine3A": { + "type_kind": { + "val": "glam::Affine3A" + }, + "is_static": true + }, + "URect": { + "type_kind": { + "val": "bevy_math::rects::urect::URect" + }, + "is_static": true + }, + "GamepadInput": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadInput" + }, + "is_static": true + }, + "RepeatedGridTrack": { + "type_kind": { + "val": "bevy_ui::ui_node::RepeatedGridTrack" + }, + "is_static": true + }, + "i8": { + "type_kind": { + "primitive": "i8" + }, + "is_static": true + }, + "bool": { + "type_kind": { + "primitive": "bool" + }, + "is_static": true + }, + "IVec4": { + "type_kind": { + "val": "glam::IVec4" + }, + "is_static": true + }, + "Wireframe2dConfig": { + "type_kind": { + "val": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dConfig" + }, + "is_static": true + }, + "StaticTransformOptimizations": { + "type_kind": { + "val": "bevy_transform::systems::StaticTransformOptimizations" + }, + "is_static": true + }, + "ScriptAttachment": { + "type_kind": { + "val": "bevy_mod_scripting_script::ScriptAttachment" + }, + "is_static": true + }, + "Hwba": { + "type_kind": { + "val": "bevy_color::hwba::Hwba" + }, + "is_static": true + }, + "WindowBackendScaleFactorChanged": { + "type_kind": { + "val": "bevy_window::event::WindowBackendScaleFactorChanged" + }, + "is_static": true + }, + "BorderRadius": { + "type_kind": { + "val": "bevy_ui::ui_node::BorderRadius" + }, + "is_static": true + }, + "Polyline3d": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Polyline3d" + }, + "is_static": true + }, + "DMat3": { + "type_kind": { + "val": "glam::DMat3" + }, + "is_static": true + }, + "StrikethroughColor": { + "type_kind": { + "val": "bevy_text::text::StrikethroughColor" + }, + "is_static": true + }, + "MainEntity": { + "type_kind": { + "val": "bevy_render::sync_world::MainEntity" + }, + "is_static": true + }, + "LineBreak": { + "type_kind": { + "val": "bevy_text::text::LineBreak" + }, + "is_static": true + }, + "Polygon": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Polygon" + }, + "is_static": true + }, + "CircularSectorMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::CircularSectorMeshBuilder" + }, + "is_static": true + }, + "Cuboid": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Cuboid" + }, + "is_static": true + }, + "RayCast2d": { + "type_kind": { + "val": "bevy_math::bounding::raycast2d::RayCast2d" + }, + "is_static": true + }, + "ManageAccessibilityUpdates": { + "type_kind": { + "val": "bevy_a11y::ManageAccessibilityUpdates" + }, + "is_static": true + }, + "ConicGradient": { + "type_kind": { + "val": "bevy_ui::gradients::ConicGradient" + }, + "is_static": true + }, + "AtomicUsize": { + "type_kind": { + "val": "core::sync::atomic::AtomicUsize" + }, + "is_static": true + }, + "ScriptAsset": { + "type_kind": { + "val": "bevy_mod_scripting_asset::script_asset::ScriptAsset" + }, + "is_static": true + }, + "NonZeroU16": { + "type_kind": { + "val": "core::num::NonZeroU16" + }, + "is_static": true + }, + "I16Vec3": { + "type_kind": { + "val": "glam::I16Vec3" + }, + "is_static": true + }, + "Rectangle": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Rectangle" + }, + "is_static": true + }, + "NonZeroUsize": { + "type_kind": { + "val": "core::num::NonZeroUsize" + }, + "is_static": true + }, + "TextLayout": { + "type_kind": { + "val": "bevy_text::text::TextLayout" + }, + "is_static": true + }, + "PrimaryWindow": { + "type_kind": { + "val": "bevy_window::window::PrimaryWindow" + }, + "is_static": true + }, + "Quat": { + "type_kind": { + "val": "glam::Quat" + }, + "is_static": true + }, + "Underline": { + "type_kind": { + "val": "bevy_text::text::Underline" + }, + "is_static": true + }, + "LinearRgba": { + "type_kind": { + "val": "bevy_color::linear_rgba::LinearRgba" + }, + "is_static": true + }, + "Segment3d": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Segment3d" + }, + "is_static": true + }, + "GamepadButtonStateChangedEvent": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadButtonStateChangedEvent" + }, + "is_static": true + }, + "Camera2d": { + "type_kind": { + "val": "bevy_camera::components::Camera2d" + }, + "is_static": true + }, + "BoundingCircle": { + "type_kind": { + "val": "bevy_math::bounding::bounded2d::BoundingCircle" + }, + "is_static": true + }, + "AlphaMode2d": { + "type_kind": { + "val": "bevy_sprite_render::mesh2d::material::AlphaMode2d" + }, + "is_static": true + }, + "ShadowStyle": { + "type_kind": { + "val": "bevy_ui::ui_node::ShadowStyle" + }, + "is_static": true + }, + "WinitUserEvent": { + "type_kind": { + "val": "bevy_winit::WinitUserEvent" + }, + "is_static": true + }, + "NativeKeyCode": { + "type_kind": { + "val": "bevy_input::keyboard::NativeKeyCode" + }, + "is_static": true + }, + "GlobalTransform": { + "type_kind": { + "val": "bevy_transform::components::global_transform::GlobalTransform" + }, + "is_static": true + }, + "Vec4": { + "type_kind": { + "val": "glam::Vec4" + }, + "is_static": true + }, + "NonZeroU32": { + "type_kind": { + "val": "core::num::NonZeroU32" + }, + "is_static": true + }, + "PresentMode": { + "type_kind": { + "val": "bevy_window::window::PresentMode" + }, + "is_static": true + }, + "DepthPrepassDoubleBuffer": { + "type_kind": { + "val": "bevy_core_pipeline::prepass::DepthPrepassDoubleBuffer" + }, + "is_static": true + }, + "Xyza": { + "type_kind": { + "val": "bevy_color::xyza::Xyza" + }, + "is_static": true + }, + "ScriptTypeRegistration": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::query::ScriptTypeRegistration" + }, + "is_static": true + }, + "BorderColor": { + "type_kind": { + "val": "bevy_ui::ui_node::BorderColor" + }, + "is_static": true + }, + "CustomCursorUrl": { + "type_kind": { + "val": "bevy_window::cursor::custom_cursor::CustomCursorUrl" + }, + "is_static": true + }, + "TextLayoutInfo": { + "type_kind": { + "val": "bevy_text::pipeline::TextLayoutInfo" + }, + "is_static": true + }, + "CalculatedClip": { + "type_kind": { + "val": "bevy_ui::ui_node::CalculatedClip" + }, + "is_static": true + }, + "ConicalFrustumMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::conical_frustum::ConicalFrustumMeshBuilder" + }, + "is_static": true + }, + "Stopwatch": { + "type_kind": { + "val": "bevy_time::stopwatch::Stopwatch" + }, + "is_static": true + }, + "BorderGradient": { + "type_kind": { + "val": "bevy_ui::gradients::BorderGradient" + }, + "is_static": true + }, + "RangeInclusive": { + "type_kind": { + "val": "core::ops::RangeInclusive" + }, + "is_static": true + }, + "Cylinder": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Cylinder" + }, + "is_static": true + }, + "AtomicI16": { + "type_kind": { + "val": "core::sync::atomic::AtomicI16" + }, + "is_static": true + }, + "Real": { + "type_kind": { + "val": "bevy_time::real::Real" + }, + "is_static": true + }, + "Polyline2dMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::Polyline2dMeshBuilder" + }, + "is_static": true + }, + "RenderEntity": { + "type_kind": { + "val": "bevy_render::sync_world::RenderEntity" + }, + "is_static": true + }, + "Line3d": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Line3d" + }, + "is_static": true + }, + "Cone": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Cone" + }, + "is_static": true + }, + "JustifyContent": { + "type_kind": { + "val": "bevy_ui::ui_node::JustifyContent" + }, + "is_static": true + }, + "Add": { + "type_kind": { + "val": "bevy_ecs::lifecycle::Add" + }, + "is_static": true + }, + "Edge": { + "type_kind": { + "val": "bevy_system_reflection::Edge" + }, + "is_static": true + }, + "UVec2": { + "type_kind": { + "val": "glam::UVec2" + }, + "is_static": true + }, + "NonZeroI16": { + "type_kind": { + "val": "core::num::NonZeroI16" + }, + "is_static": true + }, + "TextFont": { + "type_kind": { + "val": "bevy_text::text::TextFont" + }, + "is_static": true + }, + "ColorGradingGlobal": { + "type_kind": { + "val": "bevy_render::view::ColorGradingGlobal" + }, + "is_static": true + }, + "Rhombus": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Rhombus" + }, + "is_static": true + }, + "GlobalZIndex": { + "type_kind": { + "val": "bevy_ui::ui_node::GlobalZIndex" + }, + "is_static": true + }, + "CascadesFrusta": { + "type_kind": { + "val": "bevy_camera::primitives::CascadesFrusta" + }, + "is_static": true + }, + "ImageNode": { + "type_kind": { + "val": "bevy_ui::widget::image::ImageNode" + }, + "is_static": true + }, + "Dir2": { + "type_kind": { + "val": "bevy_math::direction::Dir2" + }, + "is_static": true + }, + "Wireframe2dMaterial": { + "type_kind": { + "val": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dMaterial" + }, + "is_static": true + }, + "AccumulatedMouseMotion": { + "type_kind": { + "val": "bevy_input::mouse::AccumulatedMouseMotion" + }, + "is_static": true + }, + "ScriptQueryResult": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::query::ScriptQueryResult" + }, + "is_static": true + }, + "Cow": { + "type_kind": { + "val": "alloc::borrow::Cow" + }, + "is_static": true + }, + "AtomicI64": { + "type_kind": { + "val": "core::sync::atomic::AtomicI64" + }, + "is_static": true + }, + "Hsva": { + "type_kind": { + "val": "bevy_color::hsva::Hsva" + }, + "is_static": true + }, + "EulerRot": { + "type_kind": { + "val": "glam::EulerRot" + }, + "is_static": true + }, + "AccessibilitySystems": { + "type_kind": { + "val": "bevy_a11y::AccessibilitySystems" + }, + "is_static": true + }, + "Color": { + "type_kind": { + "val": "bevy_color::color::Color" + }, + "is_static": true + }, + "RenderTarget": { + "type_kind": { + "val": "bevy_camera::camera::RenderTarget" + }, + "is_static": true + }, + "GamepadRumbleRequest": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadRumbleRequest" + }, + "is_static": true + }, + "I8Vec4": { + "type_kind": { + "val": "glam::I8Vec4" + }, + "is_static": true + }, + "ClearColorConfig": { + "type_kind": { + "val": "bevy_camera::clear_color::ClearColorConfig" + }, + "is_static": true + }, + "ConeMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::cone::ConeMeshBuilder" + }, + "is_static": true + }, + "Rot2": { + "type_kind": { + "val": "bevy_math::rotation2d::Rot2" + }, + "is_static": true + }, + "InputFocusVisible": { + "type_kind": { + "val": "bevy_input_focus::InputFocusVisible" + }, + "is_static": true + }, + "ChildOf": { + "type_kind": { + "val": "bevy_ecs::hierarchy::ChildOf" + }, + "is_static": true + }, + "SphereKind": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::sphere::SphereKind" + }, + "is_static": true + }, + "RenderVisibleEntities": { + "type_kind": { + "val": "bevy_render::view::visibility::RenderVisibleEntities" + }, + "is_static": true + }, + "ScriptResourceRegistration": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::query::ScriptResourceRegistration" + }, + "is_static": true + }, + "Text": { + "type_kind": { + "val": "bevy_ui::widget::text::Text" + }, + "is_static": true + }, + "TransformTreeChanged": { + "type_kind": { + "val": "bevy_transform::components::transform::TransformTreeChanged" + }, + "is_static": true + }, + "Camera": { + "type_kind": { + "val": "bevy_camera::camera::Camera" + }, + "is_static": true + }, + "WindowMoved": { + "type_kind": { + "val": "bevy_window::event::WindowMoved" + }, + "is_static": true + }, + "NormalPrepass": { + "type_kind": { + "val": "bevy_core_pipeline::prepass::NormalPrepass" + }, + "is_static": true + }, + "WindowScaleFactorChanged": { + "type_kind": { + "val": "bevy_window::event::WindowScaleFactorChanged" + }, + "is_static": true + }, + "MouseMotion": { + "type_kind": { + "val": "bevy_input::mouse::MouseMotion" + }, + "is_static": true + }, + "GridTrackRepetition": { + "type_kind": { + "val": "bevy_ui::ui_node::GridTrackRepetition" + }, + "is_static": true + }, + "Key": { + "type_kind": { + "val": "bevy_input::keyboard::Key" + }, + "is_static": true + }, + "I8Vec2": { + "type_kind": { + "val": "glam::I8Vec2" + }, + "is_static": true + }, + "ColorMaterial": { + "type_kind": { + "val": "bevy_sprite_render::mesh2d::color_material::ColorMaterial" + }, + "is_static": true + }, + "ZIndex": { + "type_kind": { + "val": "bevy_ui::ui_node::ZIndex" + }, + "is_static": true + }, + "Visibility": { + "type_kind": { + "val": "bevy_camera::visibility::Visibility" + }, + "is_static": true + }, + "WindowPosition": { + "type_kind": { + "val": "bevy_window::window::WindowPosition" + }, + "is_static": true + }, + "BlendState": { + "type_kind": { + "val": "wgpu_types::BlendState" + }, + "is_static": true + }, + "NoAutoAabb": { + "type_kind": { + "val": "bevy_camera::visibility::NoAutoAabb" + }, + "is_static": true + }, + "Affine3": { + "type_kind": { + "val": "bevy_math::affine3::Affine3" + }, + "is_static": true + }, + "Triangle3dMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::triangle3d::Triangle3dMeshBuilder" + }, + "is_static": true + }, + "ColorGrading": { + "type_kind": { + "val": "bevy_render::view::ColorGrading" + }, + "is_static": true + }, + "VisibilityRange": { + "type_kind": { + "val": "bevy_camera::visibility::range::VisibilityRange" + }, + "is_static": true + }, + "AutoNavigationConfig": { + "type_kind": { + "val": "bevy_input_focus::directional_navigation::AutoNavigationConfig" + }, + "is_static": true + }, + "DeferredPrepass": { + "type_kind": { + "val": "bevy_core_pipeline::prepass::DeferredPrepass" + }, + "is_static": true + }, + "TextNodeFlags": { + "type_kind": { + "val": "bevy_ui::widget::text::TextNodeFlags" + }, + "is_static": true + }, + "GamepadRumbleIntensity": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadRumbleIntensity" + }, + "is_static": true + }, + "InteropError": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::error::InteropError" + }, + "is_static": true + }, + "TilemapChunk": { + "type_kind": { + "val": "bevy_sprite_render::tilemap_chunk::TilemapChunk" + }, + "is_static": true + }, + "FunctionArgInfo": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::docgen::info::FunctionArgInfo" + }, + "is_static": true + }, + "Name": { + "type_kind": { + "val": "bevy_ecs::name::Name" + }, + "is_static": true + }, + "isize": { + "type_kind": { + "primitive": "isize" + }, + "is_static": true + }, + "Justify": { + "type_kind": { + "val": "bevy_text::text::Justify" + }, + "is_static": true + }, + "Triangle2dMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::Triangle2dMeshBuilder" + }, + "is_static": true + }, + "CylinderAnchor": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::cylinder::CylinderAnchor" + }, + "is_static": true + }, + "OverflowClipBox": { + "type_kind": { + "val": "bevy_ui::ui_node::OverflowClipBox" + }, + "is_static": true + }, + "Range": { + "type_kind": { + "val": "core::ops::Range" + }, + "is_static": true + }, + "ButtonAxisSettings": { + "type_kind": { + "val": "bevy_input::gamepad::ButtonAxisSettings" + }, + "is_static": true + }, + "ShaderStorageBuffer": { + "type_kind": { + "val": "bevy_render::storage::ShaderStorageBuffer" + }, + "is_static": true + }, + "ComponentTicks": { + "type_kind": { + "val": "bevy_ecs::change_detection::tick::ComponentTicks" + }, + "is_static": true + }, + "PlaneMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::plane::PlaneMeshBuilder" + }, + "is_static": true + }, + "SyncToRenderWorld": { + "type_kind": { + "val": "bevy_render::sync_world::SyncToRenderWorld" + }, + "is_static": true + }, + "ScreenSpaceTransmissionQuality": { + "type_kind": { + "val": "bevy_camera::components::ScreenSpaceTransmissionQuality" + }, + "is_static": true + }, + "TilemapChunkMeshCache": { + "type_kind": { + "val": "bevy_sprite_render::tilemap_chunk::TilemapChunkMeshCache" + }, + "is_static": true + }, + "CylinderMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::cylinder::CylinderMeshBuilder" + }, + "is_static": true + }, + "GlobalsUniform": { + "type_kind": { + "val": "bevy_render::globals::GlobalsUniform" + }, + "is_static": true + }, + "Duration": { + "type_kind": { + "val": "core::time::Duration" + }, + "is_static": true + }, + "Fixed": { + "type_kind": { + "val": "bevy_time::fixed::Fixed" + }, + "is_static": true + }, + "U8Vec4": { + "type_kind": { + "val": "glam::U8Vec4" + }, + "is_static": true + }, + "FontWeight": { + "type_kind": { + "val": "bevy_text::text::FontWeight" + }, + "is_static": true + }, + "TemporaryRenderEntity": { + "type_kind": { + "val": "bevy_render::sync_world::TemporaryRenderEntity" + }, + "is_static": true + }, + "GamepadEvent": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadEvent" + }, + "is_static": true + }, + "Children": { + "type_kind": { + "val": "bevy_ecs::hierarchy::Children" + }, + "is_static": true + }, + "BoxShadow": { + "type_kind": { + "val": "bevy_ui::ui_node::BoxShadow" + }, + "is_static": true + }, + "DVec2": { + "type_kind": { + "val": "glam::DVec2" + }, + "is_static": true + }, + "GamepadConnectionEvent": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadConnectionEvent" + }, + "is_static": true + }, + "NormalizedRenderTarget": { + "type_kind": { + "val": "bevy_camera::camera::NormalizedRenderTarget" + }, + "is_static": true + }, + "Mesh3d": { + "type_kind": { + "val": "bevy_mesh::components::Mesh3d" + }, + "is_static": true + }, + "MipBias": { + "type_kind": { + "val": "bevy_render::camera::MipBias" + }, + "is_static": true + }, + "I64Vec3": { + "type_kind": { + "val": "glam::I64Vec3" + }, + "is_static": true + }, + "u64": { + "type_kind": { + "primitive": "u64" + }, + "is_static": true + }, + "WindowResizeConstraints": { + "type_kind": { + "val": "bevy_window::window::WindowResizeConstraints" + }, + "is_static": true + }, + "MouseScrollUnit": { + "type_kind": { + "val": "bevy_input::mouse::MouseScrollUnit" + }, + "is_static": true + }, + "BVec3A": { + "type_kind": { + "val": "glam::BVec3A" + }, + "is_static": true + }, + "CuboidMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::cuboid::CuboidMeshBuilder" + }, + "is_static": true + }, + "CapsuleUvProfile": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::capsule::CapsuleUvProfile" + }, + "is_static": true + }, + "u128": { + "type_kind": { + "primitive": "u128" + }, + "is_static": true + }, + "Wireframe2d": { + "type_kind": { + "val": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2d" + }, + "is_static": true + }, + "DefaultQueryFilters": { + "type_kind": { + "val": "bevy_ecs::entity_disabling::DefaultQueryFilters" + }, + "is_static": true + }, + "LayoutConfig": { + "type_kind": { + "val": "bevy_ui::ui_node::LayoutConfig" + }, + "is_static": true + }, + "BoxSizing": { + "type_kind": { + "val": "bevy_ui::ui_node::BoxSizing" + }, + "is_static": true + }, + "DoubleTapGesture": { + "type_kind": { + "val": "bevy_input::gestures::DoubleTapGesture" + }, + "is_static": true + }, + "EnabledButtons": { + "type_kind": { + "val": "bevy_window::window::EnabledButtons" + }, + "is_static": true + }, + "AxisSettings": { + "type_kind": { + "val": "bevy_input::gamepad::AxisSettings" + }, + "is_static": true + }, + "Laba": { + "type_kind": { + "val": "bevy_color::laba::Laba" + }, + "is_static": true + }, + "Exposure": { + "type_kind": { + "val": "bevy_camera::camera::Exposure" + }, + "is_static": true + }, + "usize": { + "type_kind": { + "primitive": "usize" + }, + "is_static": true + }, + "Wireframe2dColor": { + "type_kind": { + "val": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dColor" + }, + "is_static": true + }, + "ContextKey": { + "type_kind": { + "val": "bevy_mod_scripting_core::script::context_key::ContextKey" + }, + "is_static": true + }, + "Dir3": { + "type_kind": { + "val": "bevy_math::direction::Dir3" + }, + "is_static": true + }, + "i32": { + "type_kind": { + "primitive": "i32" + }, + "is_static": true + }, + "PositionedGlyph": { + "type_kind": { + "val": "bevy_text::glyph::PositionedGlyph" + }, + "is_static": true + }, + "MonitorSelection": { + "type_kind": { + "val": "bevy_window::window::MonitorSelection" + }, + "is_static": true + }, + "Sprite": { + "type_kind": { + "val": "bevy_sprite::sprite::Sprite" + }, + "is_static": true + }, + "Ellipse": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Ellipse" + }, + "is_static": true + }, + "TabGroup": { + "type_kind": { + "val": "bevy_input_focus::tab_navigation::TabGroup" + }, + "is_static": true + }, + "BVec3": { + "type_kind": { + "val": "glam::BVec3" + }, + "is_static": true + }, + "TextSpan": { + "type_kind": { + "val": "bevy_text::text::TextSpan" + }, + "is_static": true + }, + "CallbackLabel": { + "type_kind": { + "val": "bevy_mod_scripting_core::event::CallbackLabel" + }, + "is_static": true + }, + "Tonemapping": { + "type_kind": { + "val": "bevy_core_pipeline::tonemapping::Tonemapping" + }, + "is_static": true + }, + "RunGeometry": { + "type_kind": { + "val": "bevy_text::pipeline::RunGeometry" + }, + "is_static": true + }, + "RayCast3d": { + "type_kind": { + "val": "bevy_math::bounding::raycast3d::RayCast3d" + }, + "is_static": true + }, + "ScriptComponentRegistration": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::query::ScriptComponentRegistration" + }, + "is_static": true + }, + "CursorOptions": { + "type_kind": { + "val": "bevy_window::window::CursorOptions" + }, + "is_static": true + }, + "AtomicU8": { + "type_kind": { + "val": "core::sync::atomic::AtomicU8" + }, + "is_static": true + }, + "WindowLevel": { + "type_kind": { + "val": "bevy_window::window::WindowLevel" + }, + "is_static": true + }, + "TorusMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::torus::TorusMeshBuilder" + }, + "is_static": true + }, + "OsString": { + "type_kind": { + "primitive": "osString" + }, + "is_static": true + }, + "NonNilUuid": { + "type_kind": { + "val": "uuid::NonNilUuid" + }, + "is_static": true + }, + "CubemapLayout": { + "type_kind": { + "val": "bevy_camera::primitives::CubemapLayout" + }, + "is_static": true + }, + "Tick": { + "type_kind": { + "val": "bevy_ecs::change_detection::tick::Tick" + }, + "is_static": true + }, + "PinchGesture": { + "type_kind": { + "val": "bevy_input::gestures::PinchGesture" + }, + "is_static": true + }, + "AtomicU32": { + "type_kind": { + "val": "core::sync::atomic::AtomicU32" + }, + "is_static": true + }, + "ReflectSystemGraphNode": { + "type_kind": { + "val": "bevy_system_reflection::ReflectSystemGraphNode" + }, + "is_static": true + }, + "BVec4": { + "type_kind": { + "val": "glam::BVec4" + }, + "is_static": true + }, + "MaxTrackSizingFunction": { + "type_kind": { + "val": "bevy_ui::ui_node::MaxTrackSizingFunction" + }, + "is_static": true + }, + "CameraRenderGraph": { + "type_kind": { + "val": "bevy_render::camera::CameraRenderGraph" + }, + "is_static": true + }, + "InputFocus": { + "type_kind": { + "val": "bevy_input_focus::InputFocus" + }, + "is_static": true + }, + "Ime": { + "type_kind": { + "val": "bevy_window::event::Ime" + }, + "is_static": true + }, + "Frustum": { + "type_kind": { + "val": "bevy_camera::primitives::Frustum" + }, + "is_static": true + }, + "DebandDither": { + "type_kind": { + "val": "bevy_core_pipeline::tonemapping::DebandDither" + }, + "is_static": true + }, + "FocusableArea": { + "type_kind": { + "val": "bevy_input_focus::directional_navigation::FocusableArea" + }, + "is_static": true + }, + "WindowResolution": { + "type_kind": { + "val": "bevy_window::window::WindowResolution" + }, + "is_static": true + }, + "WindowOccluded": { + "type_kind": { + "val": "bevy_window::event::WindowOccluded" + }, + "is_static": true + }, + "Mat3A": { + "type_kind": { + "val": "glam::Mat3A" + }, + "is_static": true + }, + "JustifySelf": { + "type_kind": { + "val": "bevy_ui::ui_node::JustifySelf" + }, + "is_static": true + }, + "Indices": { + "type_kind": { + "val": "bevy_mesh::index::Indices" + }, + "is_static": true + }, + "ResolvedBorderRadius": { + "type_kind": { + "val": "bevy_ui::ui_node::ResolvedBorderRadius" + }, + "is_static": true + }, + "ReflectNodeId": { + "type_kind": { + "val": "bevy_system_reflection::ReflectNodeId" + }, + "is_static": true + }, + "NoWireframe2d": { + "type_kind": { + "val": "bevy_sprite_render::mesh2d::wireframe2d::NoWireframe2d" + }, + "is_static": true + }, + "Camera3dDepthTextureUsage": { + "type_kind": { + "val": "bevy_camera::components::Camera3dDepthTextureUsage" + }, + "is_static": true + }, + "AtomicIsize": { + "type_kind": { + "val": "core::sync::atomic::AtomicIsize" + }, + "is_static": true + }, + "CursorMoved": { + "type_kind": { + "val": "bevy_window::event::CursorMoved" + }, + "is_static": true + }, + "KeyboardFocusLost": { + "type_kind": { + "val": "bevy_input::keyboard::KeyboardFocusLost" + }, + "is_static": true + }, + "ImageRenderTarget": { + "type_kind": { + "val": "bevy_camera::camera::ImageRenderTarget" + }, + "is_static": true + }, + "Text2d": { + "type_kind": { + "val": "bevy_sprite::text2d::Text2d" + }, + "is_static": true + }, + "Polyline3dMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::polyline3d::Polyline3dMeshBuilder" + }, + "is_static": true + }, + "FontSmoothing": { + "type_kind": { + "val": "bevy_text::text::FontSmoothing" + }, + "is_static": true + }, + "WindowFocused": { + "type_kind": { + "val": "bevy_window::event::WindowFocused" + }, + "is_static": true + }, + "DAffine3": { + "type_kind": { + "val": "glam::DAffine3" + }, + "is_static": true + }, + "LocationContext": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::function::script_function::LocationContext" + }, + "is_static": true + }, + "IgnoreScroll": { + "type_kind": { + "val": "bevy_ui::ui_node::IgnoreScroll" + }, + "is_static": true + }, + "Plane3d": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Plane3d" + }, + "is_static": true + }, + "U64Vec3": { + "type_kind": { + "val": "glam::U64Vec3" + }, + "is_static": true + }, + "Text2dShadow": { + "type_kind": { + "val": "bevy_sprite::text2d::Text2dShadow" + }, + "is_static": true + }, + "AlignItems": { + "type_kind": { + "val": "bevy_ui::ui_node::AlignItems" + }, + "is_static": true + }, + "ImageNodeSize": { + "type_kind": { + "val": "bevy_ui::widget::image::ImageNodeSize" + }, + "is_static": true + }, + "Val": { + "type_kind": { + "val": "bevy_ui::geometry::Val" + }, + "is_static": true + }, + "UVec3": { + "type_kind": { + "val": "glam::UVec3" + }, + "is_static": true + }, + "i128": { + "type_kind": { + "primitive": "i128" + }, + "is_static": true + }, + "MainPassResolutionOverride": { + "type_kind": { + "val": "bevy_camera::camera::MainPassResolutionOverride" + }, + "is_static": true + }, + "UiRect": { + "type_kind": { + "val": "bevy_ui::geometry::UiRect" + }, + "is_static": true + }, + "BoundingSphereCast": { + "type_kind": { + "val": "bevy_math::bounding::raycast3d::BoundingSphereCast" + }, + "is_static": true + }, + "GridAutoFlow": { + "type_kind": { + "val": "bevy_ui::ui_node::GridAutoFlow" + }, + "is_static": true + }, + "UntypedAssetId": { + "type_kind": { + "val": "bevy_asset::id::UntypedAssetId" + }, + "is_static": true + }, + "Capsule2d": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Capsule2d" + }, + "is_static": true + }, + "MinTrackSizingFunction": { + "type_kind": { + "val": "bevy_ui::ui_node::MinTrackSizingFunction" + }, + "is_static": true + }, + "InheritedVisibility": { + "type_kind": { + "val": "bevy_camera::visibility::InheritedVisibility" + }, + "is_static": true + }, + "VideoMode": { + "type_kind": { + "val": "bevy_window::monitor::VideoMode" + }, + "is_static": true + }, + "SliceScaleMode": { + "type_kind": { + "val": "bevy_sprite::texture_slice::slicer::SliceScaleMode" + }, + "is_static": true + }, + "Arc2d": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Arc2d" + }, + "is_static": true + }, + "ReflectReference": { + "type_kind": { + "primitive": "reflectReference" + }, + "is_static": true + }, + "ClearColor": { + "type_kind": { + "val": "bevy_camera::clear_color::ClearColor" + }, + "is_static": true + }, + "ScriptValue": { + "type_kind": { + "val": "ScriptValue" + }, + "is_static": true + }, + "CircleMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::CircleMeshBuilder" + }, + "is_static": true + }, + "Label": { + "type_kind": { + "val": "bevy_ui::widget::label::Label" + }, + "is_static": true + }, + "CursorIcon": { + "type_kind": { + "val": "bevy_window::cursor::CursorIcon" + }, + "is_static": true + }, + "FocusPolicy": { + "type_kind": { + "val": "bevy_ui::focus::FocusPolicy" + }, + "is_static": true + }, + "Vec3": { + "type_kind": { + "val": "glam::Vec3" + }, + "is_static": true + }, + "CircularSector": { + "type_kind": { + "val": "bevy_math::primitives::dim2::CircularSector" + }, + "is_static": true + }, + "CustomCursor": { + "type_kind": { + "val": "bevy_window::cursor::custom_cursor::CustomCursor" + }, + "is_static": true + }, + "BackgroundGradient": { + "type_kind": { + "val": "bevy_ui::gradients::BackgroundGradient" + }, + "is_static": true + }, + "ObservedBy": { + "type_kind": { + "val": "bevy_ecs::observer::distributed_storage::ObservedBy" + }, + "is_static": true + }, + "ReflectableScheduleLabel": { + "type_kind": { + "val": "bevy_system_reflection::ReflectableScheduleLabel" + }, + "is_static": true + }, + "Tetrahedron": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Tetrahedron" + }, + "is_static": true + }, + "EaseFunction": { + "type_kind": { + "val": "bevy_math::curve::easing::EaseFunction" + }, + "is_static": true + }, + "SubCameraView": { + "type_kind": { + "val": "bevy_camera::camera::SubCameraView" + }, + "is_static": true + }, + "PanGesture": { + "type_kind": { + "val": "bevy_input::gestures::PanGesture" + }, + "is_static": true + }, + "Projection": { + "type_kind": { + "val": "bevy_camera::projection::Projection" + }, + "is_static": true + }, + "Oklaba": { + "type_kind": { + "val": "bevy_color::oklaba::Oklaba" + }, + "is_static": true + }, + "Capsule3dMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::capsule::Capsule3dMeshBuilder" + }, + "is_static": true + }, + "GamepadButtonChangedEvent": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadButtonChangedEvent" + }, + "is_static": true + }, + "U16Vec3": { + "type_kind": { + "val": "glam::U16Vec3" + }, + "is_static": true + }, + "Segment2d": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Segment2d" + }, + "is_static": true + }, + "Triangle2d": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Triangle2d" + }, + "is_static": true + }, + "u16": { + "type_kind": { + "primitive": "u16" + }, + "is_static": true + }, + "WindowRef": { + "type_kind": { + "val": "bevy_window::window::WindowRef" + }, + "is_static": true + }, + "AutoDirectionalNavigation": { + "type_kind": { + "val": "bevy_ui::auto_directional_navigation::AutoDirectionalNavigation" + }, + "is_static": true + }, + "Isometry2d": { + "type_kind": { + "val": "bevy_math::isometry::Isometry2d" + }, + "is_static": true + }, + "WindowEvent": { + "type_kind": { + "val": "bevy_window::event::WindowEvent" + }, + "is_static": true + }, + "CircularSegmentMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::CircularSegmentMeshBuilder" + }, + "is_static": true + }, + "Strikethrough": { + "type_kind": { + "val": "bevy_text::text::Strikethrough" + }, + "is_static": true + }, + "CompositeAlphaMode": { + "type_kind": { + "val": "bevy_window::window::CompositeAlphaMode" + }, + "is_static": true + }, + "PrimaryMonitor": { + "type_kind": { + "val": "bevy_window::monitor::PrimaryMonitor" + }, + "is_static": true + }, + "DirectionalNavigationMap": { + "type_kind": { + "val": "bevy_input_focus::directional_navigation::DirectionalNavigationMap" + }, + "is_static": true + }, + "ComputedUiTargetCamera": { + "type_kind": { + "val": "bevy_ui::ui_node::ComputedUiTargetCamera" + }, + "is_static": true + }, + "f32": { + "type_kind": { + "primitive": "f32" + }, + "is_static": true + }, + "NodeImageMode": { + "type_kind": { + "val": "bevy_ui::widget::image::NodeImageMode" + }, + "is_static": true + }, + "EntityGeneration": { + "type_kind": { + "val": "bevy_ecs::entity::EntityGeneration" + }, + "is_static": true + }, + "ContentSize": { + "type_kind": { + "val": "bevy_ui::measurement::ContentSize" + }, + "is_static": true + }, + "CascadesVisibleEntities": { + "type_kind": { + "val": "bevy_camera::visibility::CascadesVisibleEntities" + }, + "is_static": true + }, + "RenderLayers": { + "type_kind": { + "val": "bevy_camera::visibility::render_layers::RenderLayers" + }, + "is_static": true + }, + "AtomicU16": { + "type_kind": { + "val": "core::sync::atomic::AtomicU16" + }, + "is_static": true + }, + "ButtonState": { + "type_kind": { + "val": "bevy_input::ButtonState" + }, + "is_static": true + }, + "I64Vec4": { + "type_kind": { + "val": "glam::I64Vec4" + }, + "is_static": true + }, + "Ray3d": { + "type_kind": { + "val": "bevy_math::ray::Ray3d" + }, + "is_static": true + }, + "DMat2": { + "type_kind": { + "val": "glam::DMat2" + }, + "is_static": true + }, + "CubemapVisibleEntities": { + "type_kind": { + "val": "bevy_camera::visibility::CubemapVisibleEntities" + }, + "is_static": true + }, + "BackgroundColor": { + "type_kind": { + "val": "bevy_ui::ui_node::BackgroundColor" + }, + "is_static": true + }, + "Node": { + "type_kind": { + "val": "bevy_ui::ui_node::Node" + }, + "is_static": true + }, + "DVec3": { + "type_kind": { + "val": "glam::DVec3" + }, + "is_static": true + }, + "Transform": { + "type_kind": { + "val": "bevy_transform::components::transform::Transform" + }, + "is_static": true + }, + "TileData": { + "type_kind": { + "val": "bevy_sprite_render::tilemap_chunk::TileData" + }, + "is_static": true + }, + "EntityHash": { + "type_kind": { + "val": "bevy_ecs::entity::hash::EntityHash" + }, + "is_static": true + }, + "Aabb2d": { + "type_kind": { + "val": "bevy_math::bounding::bounded2d::Aabb2d" + }, + "is_static": true + }, + "InterpolationColorSpace": { + "type_kind": { + "val": "bevy_ui::gradients::InterpolationColorSpace" + }, + "is_static": true + }, + "NonZeroU128": { + "type_kind": { + "val": "core::num::NonZeroU128" + }, + "is_static": true + }, + "OverflowClipMargin": { + "type_kind": { + "val": "bevy_ui::ui_node::OverflowClipMargin" + }, + "is_static": true + }, + "TouchInput": { + "type_kind": { + "val": "bevy_input::touch::TouchInput" + }, + "is_static": true + }, + "Namespace": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::function::namespace::Namespace" + }, + "is_static": true + }, + "LineHeight": { + "type_kind": { + "val": "bevy_text::text::LineHeight" + }, + "is_static": true + }, + "WindowClosed": { + "type_kind": { + "val": "bevy_window::event::WindowClosed" + }, + "is_static": true + }, + "Ray2d": { + "type_kind": { + "val": "bevy_math::ray::Ray2d" + }, + "is_static": true + }, + "DynamicScriptFunctionMut": { + "type_kind": { + "primitive": "dynamicFunctionMut" + }, + "is_static": true + }, + "char": { + "type_kind": { + "primitive": "char" + }, + "is_static": true + }, + "ScriptError": { + "type_kind": { + "val": "bevy_mod_scripting_core::error::ScriptError" + }, + "is_static": true + }, + "Aabb": { + "type_kind": { + "val": "bevy_camera::primitives::Aabb" + }, + "is_static": true + }, + "DepthPrepass": { + "type_kind": { + "val": "bevy_core_pipeline::prepass::DepthPrepass" + }, + "is_static": true + }, + "UVec4": { + "type_kind": { + "val": "glam::UVec4" + }, + "is_static": true + }, + "DynamicScriptFunction": { + "type_kind": { + "primitive": "dynamicFunction" + }, + "is_static": true + }, + "Instant": { + "type_kind": { + "val": "bevy_platform::time::Instant" + }, + "is_static": true + }, + "DVec4": { + "type_kind": { + "val": "glam::DVec4" + }, + "is_static": true + }, + "Circle": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Circle" + }, + "is_static": true + }, + "GridTrack": { + "type_kind": { + "val": "bevy_ui::ui_node::GridTrack" + }, + "is_static": true + }, + "UiTransform": { + "type_kind": { + "val": "bevy_ui::ui_transform::UiTransform" + }, + "is_static": true + }, + "JumpAt": { + "type_kind": { + "val": "bevy_math::curve::easing::JumpAt" + }, + "is_static": true + }, + "GamepadAxisChangedEvent": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadAxisChangedEvent" + }, + "is_static": true + }, + "RawGamepadEvent": { + "type_kind": { + "val": "bevy_input::gamepad::RawGamepadEvent" + }, + "is_static": true + }, + "MeshMorphWeights": { + "type_kind": { + "val": "bevy_mesh::morph::MeshMorphWeights" + }, + "is_static": true + }, + "VariadicTuple": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::script_value::VariadicTuple" + }, + "is_static": true + }, + "IRect": { + "type_kind": { + "val": "bevy_math::rects::irect::IRect" + }, + "is_static": true + }, + "BoundingCircleCast": { + "type_kind": { + "val": "bevy_math::bounding::raycast2d::BoundingCircleCast" + }, + "is_static": true + }, + "Segment3dMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::segment3d::Segment3dMeshBuilder" + }, + "is_static": true + }, + "Triangle3d": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Triangle3d" + }, + "is_static": true + }, + "AngularColorStop": { + "type_kind": { + "val": "bevy_ui::gradients::AngularColorStop" + }, + "is_static": true + }, + "DMat4": { + "type_kind": { + "val": "glam::DMat4" + }, + "is_static": true + }, + "Image": { + "type_kind": { + "val": "bevy_image::image::Image" + }, + "is_static": true + }, + "u32": { + "type_kind": { + "primitive": "u32" + }, + "is_static": true + }, + "Mesh2d": { + "type_kind": { + "val": "bevy_mesh::components::Mesh2d" + }, + "is_static": true + }, + "TabIndex": { + "type_kind": { + "val": "bevy_input_focus::tab_navigation::TabIndex" + }, + "is_static": true + }, + "NonZeroI32": { + "type_kind": { + "val": "core::num::NonZeroI32" + }, + "is_static": true + }, + "CustomProjection": { + "type_kind": { + "val": "bevy_camera::projection::CustomProjection" + }, + "is_static": true + }, + "AtomicBool": { + "type_kind": { + "val": "core::sync::atomic::AtomicBool" + }, + "is_static": true + }, + "ReflectSystemSet": { + "type_kind": { + "val": "bevy_system_reflection::ReflectSystemSet" + }, + "is_static": true + }, + "Entity": { + "type_kind": { + "val": "bevy_ecs::entity::Entity" + }, + "is_static": true + }, + "CircularSegment": { + "type_kind": { + "val": "bevy_math::primitives::dim2::CircularSegment" + }, + "is_static": true + }, + "ComputedUiRenderTargetInfo": { + "type_kind": { + "val": "bevy_ui::ui_node::ComputedUiRenderTargetInfo" + }, + "is_static": true + }, + "ColorStop": { + "type_kind": { + "val": "bevy_ui::gradients::ColorStop" + }, + "is_static": true + }, + "BVec4A": { + "type_kind": { + "val": "glam::BVec4A" + }, + "is_static": true + }, + "Dir3A": { + "type_kind": { + "val": "bevy_math::direction::Dir3A" + }, + "is_static": true + }, + "Gradient": { + "type_kind": { + "val": "bevy_ui::gradients::Gradient" + }, + "is_static": true + }, + "ScriptSystemBuilder": { + "type_kind": { + "val": "bevy_mod_scripting_core::script_system::ScriptSystemBuilder" + }, + "is_static": true + }, + "EllipseMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::EllipseMeshBuilder" + }, + "is_static": true + }, + "TextColor": { + "type_kind": { + "val": "bevy_text::text::TextColor" + }, + "is_static": true + }, + "RadialGradient": { + "type_kind": { + "val": "bevy_ui::gradients::RadialGradient" + }, + "is_static": true + }, + "Vec2": { + "type_kind": { + "val": "glam::Vec2" + }, + "is_static": true + }, + "U64Vec2": { + "type_kind": { + "val": "glam::U64Vec2" + }, + "is_static": true + }, + "NonZeroI8": { + "type_kind": { + "val": "core::num::NonZeroI8" + }, + "is_static": true + }, + "DAffine2": { + "type_kind": { + "val": "glam::DAffine2" + }, + "is_static": true + }, + "NonZeroI64": { + "type_kind": { + "val": "core::num::NonZeroI64" + }, + "is_static": true + }, + "Lcha": { + "type_kind": { + "val": "bevy_color::lcha::Lcha" + }, + "is_static": true + }, + "Vec3A": { + "type_kind": { + "val": "glam::Vec3A" + }, + "is_static": true + }, + "DynamicComponent": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::script_component::DynamicComponent" + }, + "is_static": true + }, + "WindowResized": { + "type_kind": { + "val": "bevy_window::event::WindowResized" + }, + "is_static": true + }, + "TypeId": { + "type_kind": { + "val": "core::any::TypeId" + }, + "is_static": true + }, + "FlexDirection": { + "type_kind": { + "val": "bevy_ui::ui_node::FlexDirection" + }, + "is_static": true + }, + "Disabled": { + "type_kind": { + "val": "bevy_ecs::entity_disabling::Disabled" + }, + "is_static": true + }, + "JustifyItems": { + "type_kind": { + "val": "bevy_ui::ui_node::JustifyItems" + }, + "is_static": true + }, + "AnnulusMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::AnnulusMeshBuilder" + }, + "is_static": true + }, + "Val2": { + "type_kind": { + "val": "bevy_ui::ui_transform::Val2" + }, + "is_static": true + }, + "AlignContent": { + "type_kind": { + "val": "bevy_ui::ui_node::AlignContent" + }, + "is_static": true + }, + "Interval": { + "type_kind": { + "val": "bevy_math::curve::interval::Interval" + }, + "is_static": true + }, + "UiTargetCamera": { + "type_kind": { + "val": "bevy_ui::ui_node::UiTargetCamera" + }, + "is_static": true + }, + "OrthographicProjection": { + "type_kind": { + "val": "bevy_camera::projection::OrthographicProjection" + }, + "is_static": true + }, + "RawGamepadAxisChangedEvent": { + "type_kind": { + "val": "bevy_input::gamepad::RawGamepadAxisChangedEvent" + }, + "is_static": true + }, + "U16Vec4": { + "type_kind": { + "val": "glam::U16Vec4" + }, + "is_static": true + }, + "ScriptComponent": { + "type_kind": { + "val": "bevy_mod_scripting_core::script::ScriptComponent" + }, + "is_static": true + }, + "WindowThemeChanged": { + "type_kind": { + "val": "bevy_window::event::WindowThemeChanged" + }, + "is_static": true + }, + "DeferredPrepassDoubleBuffer": { + "type_kind": { + "val": "bevy_core_pipeline::prepass::DeferredPrepassDoubleBuffer" + }, + "is_static": true + }, + "AlphaMode": { + "type_kind": { + "val": "bevy_render::alpha::AlphaMode" + }, + "is_static": true + }, + "FunctionCallContext": { + "type_kind": { + "primitive": "functionCallContext" + }, + "is_static": true + }, + "AssetIndex": { + "type_kind": { + "val": "bevy_asset::assets::AssetIndex" + }, + "is_static": true + }, + "CompassQuadrant": { + "type_kind": { + "val": "bevy_math::compass::CompassQuadrant" + }, + "is_static": true + }, + "CompassOctant": { + "type_kind": { + "val": "bevy_math::compass::CompassOctant" + }, + "is_static": true + }, + "FunctionInfo": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::docgen::info::FunctionInfo" + }, + "is_static": true + }, + "RotationGesture": { + "type_kind": { + "val": "bevy_input::gestures::RotationGesture" + }, + "is_static": true + }, + "TextBounds": { + "type_kind": { + "val": "bevy_text::bounds::TextBounds" + }, + "is_static": true + }, + "ReflectSystemGraph": { + "type_kind": { + "val": "bevy_system_reflection::ReflectSystemGraph" + }, + "is_static": true + }, + "Monitor": { + "type_kind": { + "val": "bevy_window::monitor::Monitor" + }, + "is_static": true + }, + "Outline": { + "type_kind": { + "val": "bevy_ui::ui_node::Outline" + }, + "is_static": true + }, + "Capsule3d": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Capsule3d" + }, + "is_static": true + }, + "Gamepad": { + "type_kind": { + "val": "bevy_input::gamepad::Gamepad" + }, + "is_static": true + }, + "EntityIndexSet": { + "type_kind": { + "val": "bevy_ecs::entity::index_set::EntityIndexSet" + }, + "is_static": true + }, + "RangeFull": { + "type_kind": { + "val": "core::ops::RangeFull" + }, + "is_static": true + }, + "PathBuf": { + "type_kind": { + "primitive": "pathBuf" + }, + "is_static": true + }, + "Uuid": { + "type_kind": { + "val": "uuid::Uuid" + }, + "is_static": true + }, + "ReflectSchedule": { + "type_kind": { + "val": "bevy_system_reflection::ReflectSchedule" + }, + "is_static": true + }, + "BorderRect": { + "type_kind": { + "val": "bevy_sprite::texture_slice::border_rect::BorderRect" + }, + "is_static": true + }, + "UntypedHandle": { + "type_kind": { + "val": "bevy_asset::handle::UntypedHandle" + }, + "is_static": true + }, + "Mesh2dWireframe": { + "type_kind": { + "val": "bevy_sprite_render::mesh2d::wireframe2d::Mesh2dWireframe" + }, + "is_static": true + }, + "ReflectSystem": { + "type_kind": { + "val": "bevy_system_reflection::ReflectSystem" + }, + "is_static": true + }, + "ReadbackComplete": { + "type_kind": { + "val": "bevy_render::gpu_readback::ReadbackComplete" + }, + "is_static": true + }, + "U8Vec3": { + "type_kind": { + "val": "glam::U8Vec3" + }, + "is_static": true + }, + "Torus": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Torus" + }, + "is_static": true + }, + "ConeAnchor": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::cone::ConeAnchor" + }, + "is_static": true + }, + "FontFeatures": { + "type_kind": { + "val": "bevy_text::text::FontFeatures" + }, + "is_static": true + }, + "Hsla": { + "type_kind": { + "val": "bevy_color::hsla::Hsla" + }, + "is_static": true + }, + "DQuat": { + "type_kind": { + "val": "glam::DQuat" + }, + "is_static": true + }, + "U64Vec4": { + "type_kind": { + "val": "glam::U64Vec4" + }, + "is_static": true + }, + "WindowDestroyed": { + "type_kind": { + "val": "bevy_window::event::WindowDestroyed" + }, + "is_static": true + }, + "f64": { + "type_kind": { + "primitive": "f64" + }, + "is_static": true + }, + "I8Vec3": { + "type_kind": { + "val": "glam::I8Vec3" + }, + "is_static": true + }, + "SpriteImageMode": { + "type_kind": { + "val": "bevy_sprite::sprite::SpriteImageMode" + }, + "is_static": true + }, + "BoundingSphere": { + "type_kind": { + "val": "bevy_math::bounding::bounded3d::BoundingSphere" + }, + "is_static": true + }, + "Mesh": { + "type_kind": { + "val": "bevy_mesh::mesh::Mesh" + }, + "is_static": true + }, + "NativeKey": { + "type_kind": { + "val": "bevy_input::keyboard::NativeKey" + }, + "is_static": true + }, + "UiScale": { + "type_kind": { + "val": "bevy_ui::UiScale" + }, + "is_static": true + }, + "Virtual": { + "type_kind": { + "val": "bevy_time::virt::Virtual" + }, + "is_static": true + }, + "TextEntity": { + "type_kind": { + "val": "bevy_text::text::TextEntity" + }, + "is_static": true + }, + "OverflowAxis": { + "type_kind": { + "val": "bevy_ui::ui_node::OverflowAxis" + }, + "is_static": true + }, + "ColorGradingSection": { + "type_kind": { + "val": "bevy_render::view::ColorGradingSection" + }, + "is_static": true + }, + "AtomicU64": { + "type_kind": { + "val": "core::sync::atomic::AtomicU64" + }, + "is_static": true + }, + "AabbCast2d": { + "type_kind": { + "val": "bevy_math::bounding::raycast2d::AabbCast2d" + }, + "is_static": true + }, + "Remove": { + "type_kind": { + "val": "bevy_ecs::lifecycle::Remove" + }, + "is_static": true + }, + "CursorLeft": { + "type_kind": { + "val": "bevy_window::event::CursorLeft" + }, + "is_static": true + }, + "Insert": { + "type_kind": { + "val": "bevy_ecs::lifecycle::Insert" + }, + "is_static": true + }, + "OrderIndependentTransparencySettings": { + "type_kind": { + "val": "bevy_core_pipeline::oit::OrderIndependentTransparencySettings" + }, + "is_static": true + }, + "TemporalJitter": { + "type_kind": { + "val": "bevy_render::camera::TemporalJitter" + }, + "is_static": true + }, + "WindowCloseRequested": { + "type_kind": { + "val": "bevy_window::event::WindowCloseRequested" + }, + "is_static": true + }, + "Dir4": { + "type_kind": { + "val": "bevy_math::direction::Dir4" + }, + "is_static": true + }, + "ConicalFrustum": { + "type_kind": { + "val": "bevy_math::primitives::dim3::ConicalFrustum" + }, + "is_static": true + }, + "i64": { + "type_kind": { + "primitive": "i64" + }, + "is_static": true + }, + "CameraMainTextureUsages": { + "type_kind": { + "val": "bevy_camera::camera::CameraMainTextureUsages" + }, + "is_static": true + }, + "RequestRedraw": { + "type_kind": { + "val": "bevy_window::event::RequestRedraw" + }, + "is_static": true + }, + "NavNeighbors": { + "type_kind": { + "val": "bevy_input_focus::directional_navigation::NavNeighbors" + }, + "is_static": true + }, + "RegularPolygonMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::RegularPolygonMeshBuilder" + }, + "is_static": true + }, + "Sphere": { + "type_kind": { + "val": "bevy_math::primitives::dim3::Sphere" + }, + "is_static": true + }, + "TextBackgroundColor": { + "type_kind": { + "val": "bevy_text::text::TextBackgroundColor" + }, + "is_static": true + }, + "ScreenshotCaptured": { + "type_kind": { + "val": "bevy_render::view::window::screenshot::ScreenshotCaptured" + }, + "is_static": true + }, + "WindowTheme": { + "type_kind": { + "val": "bevy_window::window::WindowTheme" + }, + "is_static": true + }, + "TouchPhase": { + "type_kind": { + "val": "bevy_input::touch::TouchPhase" + }, + "is_static": true + }, + "BVec2": { + "type_kind": { + "val": "glam::BVec2" + }, + "is_static": true + }, + "Viewport": { + "type_kind": { + "val": "bevy_camera::camera::Viewport" + }, + "is_static": true + }, + "Overflow": { + "type_kind": { + "val": "bevy_ui::ui_node::Overflow" + }, + "is_static": true + }, + "U16Vec2": { + "type_kind": { + "val": "glam::U16Vec2" + }, + "is_static": true + }, + "SocketAddr": { + "type_kind": { + "val": "core::net::SocketAddr" + }, + "is_static": true + }, + "ConvexPolygon": { + "type_kind": { + "val": "bevy_math::primitives::dim2::ConvexPolygon" + }, + "is_static": true + }, + "Timer": { + "type_kind": { + "val": "bevy_time::timer::Timer" + }, + "is_static": true + }, + "NonZeroI128": { + "type_kind": { + "val": "core::num::NonZeroI128" + }, + "is_static": true + }, + "NonZeroU8": { + "type_kind": { + "val": "core::num::NonZeroU8" + }, + "is_static": true + }, + "u8": { + "type_kind": { + "primitive": "u8" + }, + "is_static": true + }, + "MouseButtonInput": { + "type_kind": { + "val": "bevy_input::mouse::MouseButtonInput" + }, + "is_static": true + }, + "CustomCursorImage": { + "type_kind": { + "val": "bevy_window::cursor::custom_cursor::CustomCursorImage" + }, + "is_static": true + }, + "VisibleEntities": { + "type_kind": { + "val": "bevy_camera::visibility::VisibleEntities" + }, + "is_static": true + }, + "ScreenEdge": { + "type_kind": { + "val": "bevy_window::window::ScreenEdge" + }, + "is_static": true + }, + "CameraOutputMode": { + "type_kind": { + "val": "bevy_camera::camera::CameraOutputMode" + }, + "is_static": true + }, + "TextureFormat": { + "type_kind": { + "val": "wgpu_types::TextureFormat" + }, + "is_static": true + }, + "WindowMode": { + "type_kind": { + "val": "bevy_window::window::WindowMode" + }, + "is_static": true + }, + "Isometry3d": { + "type_kind": { + "val": "bevy_math::isometry::Isometry3d" + }, + "is_static": true + }, + "IVec2": { + "type_kind": { + "val": "glam::IVec2" + }, + "is_static": true + }, + "VideoModeSelection": { + "type_kind": { + "val": "bevy_window::window::VideoModeSelection" + }, + "is_static": true + }, + "RemovedComponentEntity": { + "type_kind": { + "val": "bevy_ecs::lifecycle::RemovedComponentEntity" + }, + "is_static": true + }, + "I64Vec2": { + "type_kind": { + "val": "glam::I64Vec2" + }, + "is_static": true + }, + "TextureAtlas": { + "type_kind": { + "val": "bevy_image::texture_atlas::TextureAtlas" + }, + "is_static": true + }, + "FlexWrap": { + "type_kind": { + "val": "bevy_ui::ui_node::FlexWrap" + }, + "is_static": true + }, + "UiPosition": { + "type_kind": { + "val": "bevy_ui::geometry::UiPosition" + }, + "is_static": true + }, + "CubemapFrusta": { + "type_kind": { + "val": "bevy_camera::primitives::CubemapFrusta" + }, + "is_static": true + }, + "Srgba": { + "type_kind": { + "val": "bevy_color::srgba::Srgba" + }, + "is_static": true + }, + "Button": { + "type_kind": { + "val": "bevy_ui::widget::button::Button" + }, + "is_static": true + }, + "KeyboardInput": { + "type_kind": { + "val": "bevy_input::keyboard::KeyboardInput" + }, + "is_static": true + }, + "Mat2": { + "type_kind": { + "val": "glam::Mat2" + }, + "is_static": true + }, + "PositionType": { + "type_kind": { + "val": "bevy_ui::ui_node::PositionType" + }, + "is_static": true + }, + "GamepadAxis": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadAxis" + }, + "is_static": true + }, + "NormalizedWindowRef": { + "type_kind": { + "val": "bevy_window::window::NormalizedWindowRef" + }, + "is_static": true + }, + "String": { + "type_kind": { + "primitive": "string" + }, + "is_static": true + }, + "NonZeroIsize": { + "type_kind": { + "val": "core::num::NonZeroIsize" + }, + "is_static": true + }, + "AtomicI8": { + "type_kind": { + "val": "core::sync::atomic::AtomicI8" + }, + "is_static": true + }, + "CursorGrabMode": { + "type_kind": { + "val": "bevy_window::window::CursorGrabMode" + }, + "is_static": true + }, + "CircularMeshUvMode": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::CircularMeshUvMode" + }, + "is_static": true + }, + "GamepadSettings": { + "type_kind": { + "val": "bevy_input::gamepad::GamepadSettings" + }, + "is_static": true + }, + "VisibilityClass": { + "type_kind": { + "val": "bevy_camera::visibility::VisibilityClass" + }, + "is_static": true + }, + "ViewVisibility": { + "type_kind": { + "val": "bevy_camera::visibility::ViewVisibility" + }, + "is_static": true + }, + "Mat4": { + "type_kind": { + "val": "glam::Mat4" + }, + "is_static": true + }, + "AabbCast3d": { + "type_kind": { + "val": "bevy_math::bounding::raycast3d::AabbCast3d" + }, + "is_static": true + }, + "GridPlacement": { + "type_kind": { + "val": "bevy_ui::ui_node::GridPlacement" + }, + "is_static": true + }, + "ScriptQueryBuilder": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::query::ScriptQueryBuilder" + }, + "is_static": true + }, + "U8Vec2": { + "type_kind": { + "val": "glam::U8Vec2" + }, + "is_static": true + }, + "AspectRatio": { + "type_kind": { + "val": "bevy_math::aspect_ratio::AspectRatio" + }, + "is_static": true + }, + "UnderlineColor": { + "type_kind": { + "val": "bevy_text::text::UnderlineColor" + }, + "is_static": true + }, + "Capsule2dMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::Capsule2dMeshBuilder" + }, + "is_static": true + }, + "i16": { + "type_kind": { + "primitive": "i16" + }, + "is_static": true + }, + "ConvexPolygonMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::ConvexPolygonMeshBuilder" + }, + "is_static": true + }, + "Camera3d": { + "type_kind": { + "val": "bevy_camera::components::Camera3d" + }, + "is_static": true + }, + "NoFrustumCulling": { + "type_kind": { + "val": "bevy_camera::visibility::NoFrustumCulling" + }, + "is_static": true + }, + "ComputedTextBlock": { + "type_kind": { + "val": "bevy_text::text::ComputedTextBlock" + }, + "is_static": true + }, + "CursorEntered": { + "type_kind": { + "val": "bevy_window::event::CursorEntered" + }, + "is_static": true + }, + "FontFeatureTag": { + "type_kind": { + "val": "bevy_text::text::FontFeatureTag" + }, + "is_static": true + }, + "ForceTouch": { + "type_kind": { + "val": "bevy_input::touch::ForceTouch" + }, + "is_static": true + }, + "WindowClosing": { + "type_kind": { + "val": "bevy_window::event::WindowClosing" + }, + "is_static": true + }, + "InternalWindowState": { + "type_kind": { + "val": "bevy_window::window::InternalWindowState" + }, + "is_static": true + }, + "WindowCreated": { + "type_kind": { + "val": "bevy_window::event::WindowCreated" + }, + "is_static": true + }, + "TilemapChunkTileData": { + "type_kind": { + "val": "bevy_sprite_render::tilemap_chunk::TilemapChunkTileData" + }, + "is_static": true + }, + "Despawn": { + "type_kind": { + "val": "bevy_ecs::lifecycle::Despawn" + }, + "is_static": true + }, + "RhombusMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::RhombusMeshBuilder" + }, + "is_static": true + }, + "Aabb3d": { + "type_kind": { + "val": "bevy_math::bounding::bounded3d::Aabb3d" + }, + "is_static": true + }, + "SkinnedMesh": { + "type_kind": { + "val": "bevy_mesh::skinning::SkinnedMesh" + }, + "is_static": true + }, + "Affine2": { + "type_kind": { + "val": "glam::Affine2" + }, + "is_static": true + }, + "VisibleMeshEntities": { + "type_kind": { + "val": "bevy_camera::visibility::VisibleMeshEntities" + }, + "is_static": true + }, + "Mat3": { + "type_kind": { + "val": "glam::Mat3" + }, + "is_static": true + }, + "ManualTextureViewHandle": { + "type_kind": { + "val": "bevy_camera::camera::ManualTextureViewHandle" + }, + "is_static": true + }, + "EntityHashSet": { + "type_kind": { + "val": "bevy_ecs::entity::hash_set::EntityHashSet" + }, + "is_static": true + }, + "TextShadow": { + "type_kind": { + "val": "bevy_ui::widget::text::TextShadow" + }, + "is_static": true + }, + "Plane2d": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Plane2d" + }, + "is_static": true + }, + "RenderAssetUsages": { + "type_kind": { + "val": "bevy_asset::render_asset::RenderAssetUsages" + }, + "is_static": true + }, + "Msaa": { + "type_kind": { + "val": "bevy_render::view::Msaa" + }, + "is_static": true + }, + "AccumulatedMouseScroll": { + "type_kind": { + "val": "bevy_input::mouse::AccumulatedMouseScroll" + }, + "is_static": true + }, + "Skybox": { + "type_kind": { + "val": "bevy_core_pipeline::skybox::Skybox" + }, + "is_static": true + }, + "FileDragAndDrop": { + "type_kind": { + "val": "bevy_window::event::FileDragAndDrop" + }, + "is_static": true + }, + "MouseWheel": { + "type_kind": { + "val": "bevy_input::mouse::MouseWheel" + }, + "is_static": true + }, + "Annulus": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Annulus" + }, + "is_static": true + }, + "ComponentId": { + "type_kind": { + "val": "bevy_ecs::component::info::ComponentId" + }, + "is_static": true + }, + "KeyCode": { + "type_kind": { + "val": "bevy_input::keyboard::KeyCode" + }, + "is_static": true + }, + "ScrollPosition": { + "type_kind": { + "val": "bevy_ui::ui_node::ScrollPosition" + }, + "is_static": true + }, + "EntityIndex": { + "type_kind": { + "val": "bevy_ecs::entity::EntityIndex" + }, + "is_static": true + }, + "FunctionReturnInfo": { + "type_kind": { + "val": "bevy_mod_scripting_bindings::docgen::info::FunctionReturnInfo" + }, + "is_static": true + }, + "ComputedNode": { + "type_kind": { + "val": "bevy_ui::ui_node::ComputedNode" + }, + "is_static": true + }, + "MeshTag": { + "type_kind": { + "val": "bevy_mesh::components::MeshTag" + }, + "is_static": true + }, + "Camera3dDepthLoadOp": { + "type_kind": { + "val": "bevy_camera::components::Camera3dDepthLoadOp" + }, + "is_static": true + }, + "Arc": { + "type_kind": { + "val": "bevy_platform::sync::Arc" + }, + "is_static": true + }, + "Line2d": { + "type_kind": { + "val": "bevy_math::primitives::dim2::Line2d" + }, + "is_static": true + }, + "NonZeroU64": { + "type_kind": { + "val": "core::num::NonZeroU64" + }, + "is_static": true + }, + "AutoFocus": { + "type_kind": { + "val": "bevy_input_focus::autofocus::AutoFocus" + }, + "is_static": true + }, + "Display": { + "type_kind": { + "val": "bevy_ui::ui_node::Display" + }, + "is_static": true + }, + "AppLifecycle": { + "type_kind": { + "val": "bevy_window::event::AppLifecycle" + }, + "is_static": true + }, + "PerspectiveProjection": { + "type_kind": { + "val": "bevy_camera::projection::PerspectiveProjection" + }, + "is_static": true + }, + "Hdr": { + "type_kind": { + "val": "bevy_render::view::Hdr" + }, + "is_static": true + }, + "FontHinting": { + "type_kind": { + "val": "bevy_text::text::FontHinting" + }, + "is_static": true + }, + "TextureAtlasLayout": { + "type_kind": { + "val": "bevy_image::texture_atlas::TextureAtlasLayout" + }, + "is_static": true + }, + "TetrahedronMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim3::tetrahedron::TetrahedronMeshBuilder" + }, + "is_static": true + }, + "SystemCursorIcon": { + "type_kind": { + "val": "bevy_window::cursor::system_cursor::SystemCursorIcon" + }, + "is_static": true + }, + "UiGlobalTransform": { + "type_kind": { + "val": "bevy_ui::ui_transform::UiGlobalTransform" + }, + "is_static": true + }, + "AtomicI32": { + "type_kind": { + "val": "core::sync::atomic::AtomicI32" + }, + "is_static": true + }, + "RelativeCursorPosition": { + "type_kind": { + "val": "bevy_ui::focus::RelativeCursorPosition" + }, + "is_static": true + }, + "RawGamepadButtonChangedEvent": { + "type_kind": { + "val": "bevy_input::gamepad::RawGamepadButtonChangedEvent" + }, + "is_static": true + }, + "MouseButton": { + "type_kind": { + "val": "bevy_input::mouse::MouseButton" + }, + "is_static": true + }, + "Interaction": { + "type_kind": { + "val": "bevy_ui::focus::Interaction" + }, + "is_static": true + }, + "IVec3": { + "type_kind": { + "val": "glam::IVec3" + }, + "is_static": true + }, + "TimerMode": { + "type_kind": { + "val": "bevy_time::timer::TimerMode" + }, + "is_static": true + }, + "I16Vec2": { + "type_kind": { + "val": "glam::I16Vec2" + }, + "is_static": true + }, + "Anchor": { + "type_kind": { + "val": "bevy_sprite::sprite::Anchor" + }, + "is_static": true + }, + "RectangleMeshBuilder": { + "type_kind": { + "val": "bevy_mesh::primitives::dim2::RectangleMeshBuilder" + }, + "is_static": true + }, + "world": { + "type_kind": { + "val": "World" + }, + "is_static": false + }, + "script_asset": { + "type_kind": { + "val": "bevy_asset::handle::Handle" + }, + "is_static": false + }, + "entity": { + "type_kind": { + "val": "bevy_ecs::entity::Entity" + }, + "is_static": false + } + }, + "types": { + "World": { + "identifier": "World", + "crate": "bevy_ecs", + "path": "bevy_ecs::world::World", + "documentation": "The ECS world containing all Components, Resources and Systems. Main point of interaction with a Bevy App.", + "associated_functions": [ + "World::query", + "World::remove_component", + "World::get_type_by_name", + "World::get_children", + "World::insert_children", + "World::get_asset", + "World::get_parent", + "World::get_resource", + "World::spawn", + "World::insert_component", + "World::exit", + "World::despawn", + "World::register_new_component", + "World::has_resource", + "World::get_component", + "World::add_system", + "World::despawn_descendants", + "World::has_asset", + "World::despawn_recursive", + "World::has_entity", + "World::has_component", + "World::get_schedule_by_name", + "World::add_default_component", + "World::push_children", + "World::remove_resource" + ], + "layout": null, + "generated": false, + "insignificance": 499, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::query::ScriptComponentRegistration": { + "identifier": "ScriptComponentRegistration", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::query::ScriptComponentRegistration", + "documentation": " A reference to a component type's reflection registration.\n\n In general think of this as a handle to a type.\n\n Not to be confused with script registered dynamic components, although this can point to a script registered component.", + "associated_functions": [ + "bevy_mod_scripting_bindings::query::ScriptComponentRegistration::short_name", + "bevy_mod_scripting_bindings::query::ScriptComponentRegistration::type_name" + ], + "layout": { + "kind": "Struct", + "name": "ScriptComponentRegistration", + "fields": [ + { + "name": "registration", + "type": { + "val": "bevy_mod_scripting_bindings::query::ScriptTypeRegistration" + } + }, + { + "name": "component_id", + "type": { + "val": "bevy_ecs::component::info::ComponentId" + } + }, + { + "name": "is_dynamic_script_component", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::query::ScriptQueryBuilder": { + "identifier": "ScriptQueryBuilder", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::query::ScriptQueryBuilder", + "documentation": " The query builder is used to build ECS queries which retrieve spefific components filtered by specific conditions.\n\n For example:\n ```rust,ignore\n builder.component(componentA)\n .component(componentB)\n .with(componentC)\n .without(componentD) \n ```\n\n Will retrieve entities which:\n - Have componentA\n - Have componentB\n - Have componentC\n - Do not have componentD\n\n As well as references to components:\n - componentA\n - componentB", + "associated_functions": [ + "bevy_mod_scripting_bindings::query::ScriptQueryBuilder::without", + "bevy_mod_scripting_bindings::query::ScriptQueryBuilder::with", + "bevy_mod_scripting_bindings::query::ScriptQueryBuilder::build", + "bevy_mod_scripting_bindings::query::ScriptQueryBuilder::component" + ], + "layout": null, + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::query::ScriptQueryResult": { + "identifier": "ScriptQueryResult", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::query::ScriptQueryResult", + "documentation": " A result from a query.", + "associated_functions": [ + "bevy_mod_scripting_bindings::query::ScriptQueryResult::components", + "bevy_mod_scripting_bindings::query::ScriptQueryResult::entity" + ], + "layout": null, + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::query::ScriptResourceRegistration": { + "identifier": "ScriptResourceRegistration", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::query::ScriptResourceRegistration", + "documentation": " A reference to a resource type's reflection registration.\n\n In general think of this as a handle to a type.", + "associated_functions": [ + "bevy_mod_scripting_bindings::query::ScriptResourceRegistration::type_name", + "bevy_mod_scripting_bindings::query::ScriptResourceRegistration::short_name" + ], + "layout": { + "kind": "Struct", + "name": "ScriptResourceRegistration", + "fields": [ + { + "name": "registration", + "type": { + "val": "bevy_mod_scripting_bindings::query::ScriptTypeRegistration" + } + }, + { + "name": "resource_id", + "type": { + "val": "bevy_ecs::component::info::ComponentId" + } + } + ] + }, + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::query::ScriptTypeRegistration": { + "identifier": "ScriptTypeRegistration", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::query::ScriptTypeRegistration", + "documentation": " A reference to a type which is not a `Resource` or `Component`.\n\n In general think of this as a handle to a type.", + "associated_functions": [ + "bevy_mod_scripting_bindings::query::ScriptTypeRegistration::short_name", + "bevy_mod_scripting_bindings::query::ScriptTypeRegistration::type_name" + ], + "layout": null, + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_core::script_system::ScriptSystemBuilder": { + "identifier": "ScriptSystemBuilder", + "crate": "bevy_mod_scripting_core", + "path": "bevy_mod_scripting_core::script_system::ScriptSystemBuilder", + "documentation": " A builder for systems living in scripts", + "associated_functions": [ + "bevy_mod_scripting_core::script_system::ScriptSystemBuilder::before", + "bevy_mod_scripting_core::script_system::ScriptSystemBuilder::resource", + "bevy_mod_scripting_core::script_system::ScriptSystemBuilder::query", + "bevy_mod_scripting_core::script_system::ScriptSystemBuilder::exclusive", + "bevy_mod_scripting_core::script_system::ScriptSystemBuilder::after" + ], + "layout": null, + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_script::ScriptAttachment": { + "identifier": "ScriptAttachment", + "crate": "bevy_mod_scripting_script", + "path": "bevy_mod_scripting_script::ScriptAttachment", + "documentation": " Specifies a unique attachment of a script. These attachments are mapped to [`bevy_mod_scripting_core::ContextKey`]'s depending on the context policy used.", + "associated_functions": [ + "bevy_mod_scripting_script::ScriptAttachment::new_static_script", + "bevy_mod_scripting_script::ScriptAttachment::new_entity_script" + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "EntityScript", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "type": { + "val": "bevy_asset::handle::Handle" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "StaticScript", + "fields": [ + { + "type": { + "val": "bevy_asset::handle::Handle" + } + } + ] + } + ], + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_system_reflection::ReflectSchedule": { + "identifier": "ReflectSchedule", + "crate": "bevy_system_reflection", + "path": "bevy_system_reflection::ReflectSchedule", + "documentation": " A reflectable schedule.", + "associated_functions": [ + "bevy_system_reflection::ReflectSchedule::get_system_by_name", + "bevy_system_reflection::ReflectSchedule::render_dot", + "bevy_system_reflection::ReflectSchedule::systems" + ], + "layout": { + "kind": "Struct", + "name": "ReflectSchedule", + "fields": [ + { + "name": "type_path", + "type": { + "primitive": "str" + } + }, + { + "name": "label", + "type": { + "val": "bevy_system_reflection::ReflectableScheduleLabel" + } + } + ] + }, + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_system_reflection::ReflectSystem": { + "identifier": "ReflectSystem", + "crate": "bevy_system_reflection", + "path": "bevy_system_reflection::ReflectSystem", + "documentation": " A reflectable system.", + "associated_functions": [ + "bevy_system_reflection::ReflectSystem::identifier", + "bevy_system_reflection::ReflectSystem::path" + ], + "layout": null, + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::Handle": { + "identifier": "Handle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::Handle", + "generics": [ + { + "type_id": "bevy_mod_scripting_asset::script_asset::ScriptAsset", + "name": "A" + } + ], + "documentation": " A handle to a specific [`Asset`] of type `A`. Handles act as abstract \"references\" to\n assets, whose data are stored in the [`Assets`](crate::prelude::Assets) resource,\n avoiding the need to store multiple copies of the same data.\n\n If a [`Handle`] is [`Handle::Strong`], the [`Asset`] will be kept\n alive until the [`Handle`] is dropped. If a [`Handle`] is [`Handle::Uuid`], it does not necessarily reference a live [`Asset`],\n nor will it keep assets alive.\n\n Modifying a *handle* will change which existing asset is referenced, but modifying the *asset*\n (by mutating the [`Assets`](crate::prelude::Assets) resource) will change the asset for all handles referencing it.\n\n [`Handle`] can be cloned. If a [`Handle::Strong`] is cloned, the referenced [`Asset`] will not be freed until _all_ instances\n of the [`Handle`] are dropped.\n\n [`Handle::Strong`], via [`StrongHandle`] also provides access to useful [`Asset`] metadata, such as the [`AssetPath`] (if it exists).", + "associated_functions": [ + "bevy_asset::handle::Handle::asset_path" + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Uuid", + "fields": [ + { + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 500, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "ReflectReference": { + "identifier": "ReflectReference", + "path": "ReflectReference", + "documentation": "A reference to a reflectable type", + "associated_functions": [ + "ReflectReference::insert", + "ReflectReference::pop", + "ReflectReference::len", + "ReflectReference::map_get", + "ReflectReference::push", + "ReflectReference::iter", + "ReflectReference::clear", + "ReflectReference::display", + "ReflectReference::variant_name", + "ReflectReference::remove", + "ReflectReference::functions", + "ReflectReference::debug" + ], + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "reflectReference" + } + }, + "bevy_color::color::Color": { + "identifier": "Color", + "crate": "bevy_color", + "path": "bevy_color::color::Color", + "documentation": " An enumerated type that can represent any of the color types in this crate.\n\n This is useful when you need to store a color in a data structure that can't be generic over\n the color type.\n
\n
\n\n # Operations\n\n [`Color`] supports all the standard color operations, such as [mixing](Mix),\n [luminance](Luminance) and [hue](Hue) adjustment,\n and [diffing](EuclideanDistance). These operations delegate to the concrete color space contained\n by [`Color`], but will convert to [`Oklch`](Oklcha) for operations which aren't supported in the\n current space. After performing the operation, if a conversion was required, the result will be\n converted back into the original color space.\n\n ```rust\n # use bevy_color::{Hue, Color};\n let red_hsv = Color::hsv(0., 1., 1.);\n let red_srgb = Color::srgb(1., 0., 0.);\n\n // HSV has a definition of hue, so it will be returned.\n red_hsv.hue();\n\n // SRGB doesn't have a native definition for hue.\n // Converts to Oklch and returns that result.\n red_srgb.hue();\n ```\n\n [`Oklch`](Oklcha) has been chosen as the intermediary space in cases where conversion is required\n due to its perceptual uniformity and broad support for Bevy's color operations.\n To avoid the cost of repeated conversion, and ensure consistent results where that is desired,\n first convert this [`Color`] into your desired color space.", + "associated_functions": [ + "bevy_color::color::Color::oklch", + "bevy_color::color::Color::lcha", + "bevy_color::color::Color::oklaba", + "bevy_color::color::Color::to_srgba", + "bevy_color::color::Color::to_linear", + "bevy_color::color::Color::oklab", + "bevy_color::color::Color::hwba", + "bevy_color::color::Color::xyza", + "bevy_color::color::Color::srgb_from_array", + "bevy_color::color::Color::srgb", + "bevy_color::color::Color::hsl", + "bevy_color::color::Color::lch", + "bevy_color::color::Color::hsla", + "bevy_color::color::Color::srgba", + "bevy_color::color::Color::linear_rgba", + "bevy_color::color::Color::eq", + "bevy_color::color::Color::linear_rgb", + "bevy_color::color::Color::hsva", + "bevy_color::color::Color::xyz", + "bevy_color::color::Color::srgb_u8", + "bevy_color::color::Color::hwb", + "bevy_color::color::Color::srgba_u8", + "bevy_color::color::Color::hsv", + "bevy_color::color::Color::clone", + "bevy_color::color::Color::lab", + "bevy_color::color::Color::oklcha", + "bevy_color::color::Color::laba" + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "Srgba", + "fields": [ + { + "type": { + "val": "bevy_color::srgba::Srgba" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "LinearRgba", + "fields": [ + { + "type": { + "val": "bevy_color::linear_rgba::LinearRgba" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Hsla", + "fields": [ + { + "type": { + "val": "bevy_color::hsla::Hsla" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Hsva", + "fields": [ + { + "type": { + "val": "bevy_color::hsva::Hsva" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Hwba", + "fields": [ + { + "type": { + "val": "bevy_color::hwba::Hwba" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Laba", + "fields": [ + { + "type": { + "val": "bevy_color::laba::Laba" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Lcha", + "fields": [ + { + "type": { + "val": "bevy_color::lcha::Lcha" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Oklaba", + "fields": [ + { + "type": { + "val": "bevy_color::oklaba::Oklaba" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Oklcha", + "fields": [ + { + "type": { + "val": "bevy_color::oklcha::Oklcha" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Xyza", + "fields": [ + { + "type": { + "val": "bevy_color::xyza::Xyza" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::hsla::Hsla": { + "identifier": "Hsla", + "crate": "bevy_color", + "path": "bevy_color::hsla::Hsla", + "documentation": " Color in Hue-Saturation-Lightness (HSL) color space with alpha.\n Further information on this color model can be found on [Wikipedia](https://en.wikipedia.org/wiki/HSL_and_HSV).\n
\n
", + "associated_functions": [ + "bevy_color::hsla::Hsla::with_saturation", + "bevy_color::hsla::Hsla::with_lightness", + "bevy_color::hsla::Hsla::eq", + "bevy_color::hsla::Hsla::hsl", + "bevy_color::hsla::Hsla::new", + "bevy_color::hsla::Hsla::clone", + "bevy_color::hsla::Hsla::sequential_dispersed" + ], + "layout": { + "kind": "Struct", + "name": "Hsla", + "fields": [ + { + "name": "hue", + "type": { + "primitive": "f32" + } + }, + { + "name": "saturation", + "type": { + "primitive": "f32" + } + }, + { + "name": "lightness", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::hsva::Hsva": { + "identifier": "Hsva", + "crate": "bevy_color", + "path": "bevy_color::hsva::Hsva", + "documentation": " Color in Hue-Saturation-Value (HSV) color space with alpha.\n Further information on this color model can be found on [Wikipedia](https://en.wikipedia.org/wiki/HSL_and_HSV).\n
\n
", + "associated_functions": [ + "bevy_color::hsva::Hsva::with_value", + "bevy_color::hsva::Hsva::with_saturation", + "bevy_color::hsva::Hsva::eq", + "bevy_color::hsva::Hsva::new", + "bevy_color::hsva::Hsva::hsv", + "bevy_color::hsva::Hsva::clone" + ], + "layout": { + "kind": "Struct", + "name": "Hsva", + "fields": [ + { + "name": "hue", + "type": { + "primitive": "f32" + } + }, + { + "name": "saturation", + "type": { + "primitive": "f32" + } + }, + { + "name": "value", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::hwba::Hwba": { + "identifier": "Hwba", + "crate": "bevy_color", + "path": "bevy_color::hwba::Hwba", + "documentation": " Color in Hue-Whiteness-Blackness (HWB) color space with alpha.\n Further information on this color model can be found on [Wikipedia](https://en.wikipedia.org/wiki/HWB_color_model).\n
\n
", + "associated_functions": [ + "bevy_color::hwba::Hwba::eq", + "bevy_color::hwba::Hwba::with_blackness", + "bevy_color::hwba::Hwba::with_whiteness", + "bevy_color::hwba::Hwba::new", + "bevy_color::hwba::Hwba::hwb", + "bevy_color::hwba::Hwba::clone" + ], + "layout": { + "kind": "Struct", + "name": "Hwba", + "fields": [ + { + "name": "hue", + "type": { + "primitive": "f32" + } + }, + { + "name": "whiteness", + "type": { + "primitive": "f32" + } + }, + { + "name": "blackness", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::laba::Laba": { + "identifier": "Laba", + "crate": "bevy_color", + "path": "bevy_color::laba::Laba", + "documentation": " Color in LAB color space, with alpha\n
\n
", + "associated_functions": [ + "bevy_color::laba::Laba::new", + "bevy_color::laba::Laba::neg", + "bevy_color::laba::Laba::eq", + "bevy_color::laba::Laba::with_lightness", + "bevy_color::laba::Laba::div", + "bevy_color::laba::Laba::lab", + "bevy_color::laba::Laba::sub", + "bevy_color::laba::Laba::mul", + "bevy_color::laba::Laba::add", + "bevy_color::laba::Laba::clone" + ], + "layout": { + "kind": "Struct", + "name": "Laba", + "fields": [ + { + "name": "lightness", + "type": { + "primitive": "f32" + } + }, + { + "name": "a", + "type": { + "primitive": "f32" + } + }, + { + "name": "b", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::lcha::Lcha": { + "identifier": "Lcha", + "crate": "bevy_color", + "path": "bevy_color::lcha::Lcha", + "documentation": " Color in LCH color space, with alpha\n
\n
", + "associated_functions": [ + "bevy_color::lcha::Lcha::sequential_dispersed", + "bevy_color::lcha::Lcha::clone", + "bevy_color::lcha::Lcha::eq", + "bevy_color::lcha::Lcha::lch", + "bevy_color::lcha::Lcha::new", + "bevy_color::lcha::Lcha::with_lightness", + "bevy_color::lcha::Lcha::with_chroma" + ], + "layout": { + "kind": "Struct", + "name": "Lcha", + "fields": [ + { + "name": "lightness", + "type": { + "primitive": "f32" + } + }, + { + "name": "chroma", + "type": { + "primitive": "f32" + } + }, + { + "name": "hue", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::linear_rgba::LinearRgba": { + "identifier": "LinearRgba", + "crate": "bevy_color", + "path": "bevy_color::linear_rgba::LinearRgba", + "documentation": " Linear RGB color with alpha.\n
\n
", + "associated_functions": [ + "bevy_color::linear_rgba::LinearRgba::div", + "bevy_color::linear_rgba::LinearRgba::neg", + "bevy_color::linear_rgba::LinearRgba::mul", + "bevy_color::linear_rgba::LinearRgba::rgb", + "bevy_color::linear_rgba::LinearRgba::add", + "bevy_color::linear_rgba::LinearRgba::with_blue", + "bevy_color::linear_rgba::LinearRgba::clone", + "bevy_color::linear_rgba::LinearRgba::with_green", + "bevy_color::linear_rgba::LinearRgba::as_u32", + "bevy_color::linear_rgba::LinearRgba::new", + "bevy_color::linear_rgba::LinearRgba::eq", + "bevy_color::linear_rgba::LinearRgba::with_red", + "bevy_color::linear_rgba::LinearRgba::sub" + ], + "layout": { + "kind": "Struct", + "name": "LinearRgba", + "fields": [ + { + "name": "red", + "type": { + "primitive": "f32" + } + }, + { + "name": "green", + "type": { + "primitive": "f32" + } + }, + { + "name": "blue", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::oklaba::Oklaba": { + "identifier": "Oklaba", + "crate": "bevy_color", + "path": "bevy_color::oklaba::Oklaba", + "documentation": " Color in Oklab color space, with alpha\n
\n
", + "associated_functions": [ + "bevy_color::oklaba::Oklaba::with_lightness", + "bevy_color::oklaba::Oklaba::add", + "bevy_color::oklaba::Oklaba::with_a", + "bevy_color::oklaba::Oklaba::new", + "bevy_color::oklaba::Oklaba::clone", + "bevy_color::oklaba::Oklaba::div", + "bevy_color::oklaba::Oklaba::mul", + "bevy_color::oklaba::Oklaba::sub", + "bevy_color::oklaba::Oklaba::with_b", + "bevy_color::oklaba::Oklaba::eq", + "bevy_color::oklaba::Oklaba::lab", + "bevy_color::oklaba::Oklaba::neg" + ], + "layout": { + "kind": "Struct", + "name": "Oklaba", + "fields": [ + { + "name": "lightness", + "type": { + "primitive": "f32" + } + }, + { + "name": "a", + "type": { + "primitive": "f32" + } + }, + { + "name": "b", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::oklcha::Oklcha": { + "identifier": "Oklcha", + "crate": "bevy_color", + "path": "bevy_color::oklcha::Oklcha", + "documentation": " Color in Oklch color space, with alpha\n
\n
", + "associated_functions": [ + "bevy_color::oklcha::Oklcha::with_lightness", + "bevy_color::oklcha::Oklcha::sequential_dispersed", + "bevy_color::oklcha::Oklcha::with_chroma", + "bevy_color::oklcha::Oklcha::lch", + "bevy_color::oklcha::Oklcha::new", + "bevy_color::oklcha::Oklcha::clone", + "bevy_color::oklcha::Oklcha::eq" + ], + "layout": { + "kind": "Struct", + "name": "Oklcha", + "fields": [ + { + "name": "lightness", + "type": { + "primitive": "f32" + } + }, + { + "name": "chroma", + "type": { + "primitive": "f32" + } + }, + { + "name": "hue", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::srgba::Srgba": { + "identifier": "Srgba", + "crate": "bevy_color", + "path": "bevy_color::srgba::Srgba", + "documentation": " Non-linear standard RGB with alpha.\n
\n
", + "associated_functions": [ + "bevy_color::srgba::Srgba::div", + "bevy_color::srgba::Srgba::sub", + "bevy_color::srgba::Srgba::rgba_u8", + "bevy_color::srgba::Srgba::gamma_function_inverse", + "bevy_color::srgba::Srgba::neg", + "bevy_color::srgba::Srgba::mul", + "bevy_color::srgba::Srgba::with_red", + "bevy_color::srgba::Srgba::rgb_u8", + "bevy_color::srgba::Srgba::rgb", + "bevy_color::srgba::Srgba::clone", + "bevy_color::srgba::Srgba::new", + "bevy_color::srgba::Srgba::to_hex", + "bevy_color::srgba::Srgba::eq", + "bevy_color::srgba::Srgba::gamma_function", + "bevy_color::srgba::Srgba::with_green", + "bevy_color::srgba::Srgba::add", + "bevy_color::srgba::Srgba::with_blue" + ], + "layout": { + "kind": "Struct", + "name": "Srgba", + "fields": [ + { + "name": "red", + "type": { + "primitive": "f32" + } + }, + { + "name": "green", + "type": { + "primitive": "f32" + } + }, + { + "name": "blue", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_color::xyza::Xyza": { + "identifier": "Xyza", + "crate": "bevy_color", + "path": "bevy_color::xyza::Xyza", + "documentation": " [CIE 1931](https://en.wikipedia.org/wiki/CIE_1931_color_space) color space, also known as XYZ, with an alpha channel.\n
\n
", + "associated_functions": [ + "bevy_color::xyza::Xyza::sub", + "bevy_color::xyza::Xyza::clone", + "bevy_color::xyza::Xyza::div", + "bevy_color::xyza::Xyza::new", + "bevy_color::xyza::Xyza::xyz", + "bevy_color::xyza::Xyza::with_y", + "bevy_color::xyza::Xyza::eq", + "bevy_color::xyza::Xyza::mul", + "bevy_color::xyza::Xyza::with_x", + "bevy_color::xyza::Xyza::neg", + "bevy_color::xyza::Xyza::with_z", + "bevy_color::xyza::Xyza::add" + ], + "layout": { + "kind": "Struct", + "name": "Xyza", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f32" + } + }, + { + "name": "y", + "type": { + "primitive": "f32" + } + }, + { + "name": "z", + "type": { + "primitive": "f32" + } + }, + { + "name": "alpha", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::oit::OrderIndependentTransparencySettings": { + "identifier": "OrderIndependentTransparencySettings", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::oit::OrderIndependentTransparencySettings", + "documentation": " Used to identify which camera will use OIT to render transparent meshes\n and to configure OIT.", + "associated_functions": [ + "bevy_core_pipeline::oit::OrderIndependentTransparencySettings::clone" + ], + "layout": { + "kind": "Struct", + "name": "OrderIndependentTransparencySettings", + "fields": [ + { + "name": "layer_count", + "type": { + "primitive": "i32" + } + }, + { + "name": "alpha_threshold", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::prepass::DeferredPrepassDoubleBuffer": { + "identifier": "DeferredPrepassDoubleBuffer", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::prepass::DeferredPrepassDoubleBuffer", + "documentation": " Allows querying the previous frame's [`DeferredPrepass`].", + "associated_functions": [ + "bevy_core_pipeline::prepass::DeferredPrepassDoubleBuffer::clone" + ], + "layout": { + "kind": "Struct", + "name": "DeferredPrepassDoubleBuffer" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::prepass::DepthPrepass": { + "identifier": "DepthPrepass", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::prepass::DepthPrepass", + "documentation": " If added to a [`bevy_camera::Camera3d`] then depth values will be copied to a separate texture available to the main pass.", + "associated_functions": [ + "bevy_core_pipeline::prepass::DepthPrepass::clone" + ], + "layout": { + "kind": "Struct", + "name": "DepthPrepass" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::prepass::DepthPrepassDoubleBuffer": { + "identifier": "DepthPrepassDoubleBuffer", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::prepass::DepthPrepassDoubleBuffer", + "documentation": " Allows querying the previous frame's [`DepthPrepass`].", + "associated_functions": [ + "bevy_core_pipeline::prepass::DepthPrepassDoubleBuffer::clone" + ], + "layout": { + "kind": "Struct", + "name": "DepthPrepassDoubleBuffer" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::prepass::MotionVectorPrepass": { + "identifier": "MotionVectorPrepass", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::prepass::MotionVectorPrepass", + "documentation": " If added to a [`bevy_camera::Camera3d`] then screen space motion vectors will be copied to a separate texture available to the main pass.\n\n Motion vectors are stored in the range -1,1, with +x right and +y down.\n A value of (1.0,1.0) indicates a pixel moved from the top left corner to the bottom right corner of the screen.", + "associated_functions": [ + "bevy_core_pipeline::prepass::MotionVectorPrepass::clone" + ], + "layout": { + "kind": "Struct", + "name": "MotionVectorPrepass" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::prepass::NormalPrepass": { + "identifier": "NormalPrepass", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::prepass::NormalPrepass", + "documentation": " If added to a [`bevy_camera::Camera3d`] then vertex world normals will be copied to a separate texture available to the main pass.\n Normals will have normal map textures already applied.", + "associated_functions": [ + "bevy_core_pipeline::prepass::NormalPrepass::clone" + ], + "layout": { + "kind": "Struct", + "name": "NormalPrepass" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::skybox::Skybox": { + "identifier": "Skybox", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::skybox::Skybox", + "documentation": " Adds a skybox to a 3D camera, based on a cubemap texture.\n\n Note that this component does not (currently) affect the scene's lighting.\n To do so, use `EnvironmentMapLight` alongside this component.\n\n See also .", + "associated_functions": [ + "bevy_core_pipeline::skybox::Skybox::clone" + ], + "layout": { + "kind": "Struct", + "name": "Skybox", + "fields": [ + { + "name": "image", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "brightness", + "type": { + "primitive": "f32" + } + }, + { + "name": "rotation", + "type": { + "val": "glam::Quat" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::tonemapping::DebandDither": { + "identifier": "DebandDither", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::tonemapping::DebandDither", + "documentation": " Enables a debanding shader that applies dithering to mitigate color banding in the final image for a given [`Camera`] entity.", + "associated_functions": [ + "bevy_core_pipeline::tonemapping::DebandDither::eq", + "bevy_core_pipeline::tonemapping::DebandDither::clone", + "bevy_core_pipeline::tonemapping::DebandDither::assert_receiver_is_total_eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "Disabled" + }, + { + "kind": "Unit", + "name": "Enabled" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::tonemapping::Tonemapping": { + "identifier": "Tonemapping", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::tonemapping::Tonemapping", + "documentation": " Optionally enables a tonemapping shader that attempts to map linear input stimulus into a perceptually uniform image for a given [`Camera`] entity.", + "associated_functions": [ + "bevy_core_pipeline::tonemapping::Tonemapping::clone", + "bevy_core_pipeline::tonemapping::Tonemapping::assert_receiver_is_total_eq", + "bevy_core_pipeline::tonemapping::Tonemapping::eq", + "bevy_core_pipeline::tonemapping::Tonemapping::is_enabled" + ], + "layout": [ + { + "kind": "Unit", + "name": "None" + }, + { + "kind": "Unit", + "name": "Reinhard" + }, + { + "kind": "Unit", + "name": "ReinhardLuminance" + }, + { + "kind": "Unit", + "name": "AcesFitted" + }, + { + "kind": "Unit", + "name": "AgX" + }, + { + "kind": "Unit", + "name": "SomewhatBoringDisplayTransform" + }, + { + "kind": "Unit", + "name": "TonyMcMapface" + }, + { + "kind": "Unit", + "name": "BlenderFilmic" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::change_detection::tick::ComponentTicks": { + "identifier": "ComponentTicks", + "crate": "bevy_ecs", + "path": "bevy_ecs::change_detection::tick::ComponentTicks", + "documentation": " Records when a component or resource was added and when it was last mutably dereferenced (or added).", + "associated_functions": [ + "bevy_ecs::change_detection::tick::ComponentTicks::new", + "bevy_ecs::change_detection::tick::ComponentTicks::clone", + "bevy_ecs::change_detection::tick::ComponentTicks::is_changed", + "bevy_ecs::change_detection::tick::ComponentTicks::set_changed", + "bevy_ecs::change_detection::tick::ComponentTicks::is_added" + ], + "layout": { + "kind": "Struct", + "name": "ComponentTicks", + "fields": [ + { + "name": "added", + "type": { + "val": "bevy_ecs::change_detection::tick::Tick" + } + }, + { + "name": "changed", + "type": { + "val": "bevy_ecs::change_detection::tick::Tick" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::change_detection::tick::Tick": { + "identifier": "Tick", + "crate": "bevy_ecs", + "path": "bevy_ecs::change_detection::tick::Tick", + "documentation": " A value that tracks when a system ran relative to other systems.\n This is used to power change detection.\n\n *Note* that a system that hasn't been run yet has a `Tick` of 0.", + "associated_functions": [ + "bevy_ecs::change_detection::tick::Tick::assert_receiver_is_total_eq", + "bevy_ecs::change_detection::tick::Tick::is_newer_than", + "bevy_ecs::change_detection::tick::Tick::get", + "bevy_ecs::change_detection::tick::Tick::set", + "bevy_ecs::change_detection::tick::Tick::new", + "bevy_ecs::change_detection::tick::Tick::clone", + "bevy_ecs::change_detection::tick::Tick::eq" + ], + "layout": { + "kind": "Struct", + "name": "Tick", + "fields": [ + { + "name": "tick", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::component::info::ComponentId": { + "identifier": "ComponentId", + "crate": "bevy_ecs", + "path": "bevy_ecs::component::info::ComponentId", + "documentation": " A value which uniquely identifies the type of a [`Component`] or [`Resource`] within a\n [`World`](crate::world::World).\n\n Each time a new `Component` type is registered within a `World` using\n e.g. [`World::register_component`](crate::world::World::register_component) or\n [`World::register_component_with_descriptor`](crate::world::World::register_component_with_descriptor)\n or a Resource with e.g. [`World::init_resource`](crate::world::World::init_resource),\n a corresponding `ComponentId` is created to track it.\n\n While the distinction between `ComponentId` and [`TypeId`] may seem superficial, breaking them\n into two separate but related concepts allows components to exist outside of Rust's type system.\n Each Rust type registered as a `Component` will have a corresponding `ComponentId`, but additional\n `ComponentId`s may exist in a `World` to track components which cannot be\n represented as Rust types for scripting or other advanced use-cases.\n\n A `ComponentId` is tightly coupled to its parent `World`. Attempting to use a `ComponentId` from\n one `World` to access the metadata of a `Component` in a different `World` is undefined behavior\n and must not be attempted.\n\n Given a type `T` which implements [`Component`], the `ComponentId` for `T` can be retrieved\n from a `World` using [`World::component_id()`](crate::world::World::component_id) or via [`Components::component_id()`].\n Access to the `ComponentId` for a [`Resource`] is available via [`Components::resource_id()`].", + "associated_functions": [ + "bevy_ecs::component::info::ComponentId::index", + "bevy_ecs::component::info::ComponentId::eq", + "bevy_ecs::component::info::ComponentId::clone", + "bevy_ecs::component::info::ComponentId::new", + "bevy_ecs::component::info::ComponentId::assert_receiver_is_total_eq" + ], + "layout": { + "kind": "TupleStruct", + "name": "ComponentId", + "fields": [ + { + "type": { + "primitive": "usize" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity::Entity": { + "identifier": "Entity", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity::Entity", + "documentation": " Unique identifier for an entity in a [`World`].\n Note that this is just an id, not the entity itself.\n Further, the entity this id refers to may no longer exist in the [`World`].\n For more information about entities, their ids, and how to use them, see the module [docs](crate::entity).\n\n # Aliasing\n\n Once an entity is despawned, it ceases to exist.\n However, its [`Entity`] id is still present, and may still be contained in some data.\n This becomes problematic because it is possible for a later entity to be spawned at the exact same id!\n If this happens, which is rare but very possible, it will be logged.\n\n Aliasing can happen without warning.\n Holding onto a [`Entity`] id corresponding to an entity well after that entity was despawned can cause un-intuitive behavior for both ordering, and comparing in general.\n To prevent these bugs, it is generally best practice to stop holding an [`Entity`] or [`EntityGeneration`] value as soon as you know it has been despawned.\n If you must do otherwise, do not assume the [`Entity`] id corresponds to the same entity it originally did.\n See [`EntityGeneration`]'s docs for more information about aliasing and why it occurs.\n\n # Stability warning\n For all intents and purposes, `Entity` should be treated as an opaque identifier. The internal bit\n representation is liable to change from release to release as are the behaviors or performance\n characteristics of any of its trait implementations (i.e. `Ord`, `Hash`, etc.). This means that changes in\n `Entity`'s representation, though made readable through various functions on the type, are not considered\n breaking changes under [SemVer].\n\n In particular, directly serializing with `Serialize` and `Deserialize` make zero guarantee of long\n term wire format compatibility. Changes in behavior will cause serialized `Entity` values persisted\n to long term storage (i.e. disk, databases, etc.) will fail to deserialize upon being updated.\n\n # Usage\n\n This data type is returned by iterating a `Query` that has `Entity` as part of its query fetch type parameter ([learn more]).\n It can also be obtained by calling [`EntityCommands::id`] or [`EntityWorldMut::id`].\n\n ```\n # use bevy_ecs::prelude::*;\n # #[derive(Component)]\n # struct SomeComponent;\n fn setup(mut commands: Commands) {\n // Calling `spawn` returns `EntityCommands`.\n let entity = commands.spawn(SomeComponent).id();\n }\n\n fn exclusive_system(world: &mut World) {\n // Calling `spawn` returns `EntityWorldMut`.\n let entity = world.spawn(SomeComponent).id();\n }\n #\n # bevy_ecs::system::assert_is_system(setup);\n # bevy_ecs::system::assert_is_system(exclusive_system);\n ```\n\n It can be used to refer to a specific entity to apply [`EntityCommands`], or to call [`Query::get`] (or similar methods) to access its components.\n\n ```\n # use bevy_ecs::prelude::*;\n #\n # #[derive(Component)]\n # struct Expired;\n #\n fn dispose_expired_food(mut commands: Commands, query: Query>) {\n for food_entity in &query {\n commands.entity(food_entity).despawn();\n }\n }\n #\n # bevy_ecs::system::assert_is_system(dispose_expired_food);\n ```\n\n [learn more]: crate::system::Query#entity-id-access\n [`EntityCommands::id`]: crate::system::EntityCommands::id\n [`EntityWorldMut::id`]: crate::world::EntityWorldMut::id\n [`EntityCommands`]: crate::system::EntityCommands\n [`Query::get`]: crate::system::Query::get\n [`World`]: crate::world::World\n [SemVer]: https://semver.org/", + "associated_functions": [ + "bevy_ecs::entity::Entity::to_bits", + "bevy_ecs::entity::Entity::eq", + "bevy_ecs::entity::Entity::index_u32", + "bevy_ecs::entity::Entity::generation", + "bevy_ecs::entity::Entity::from_bits", + "bevy_ecs::entity::Entity::from_index", + "bevy_ecs::entity::Entity::clone", + "bevy_ecs::entity::Entity::index", + "bevy_ecs::entity::Entity::from_index_and_generation" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity::EntityGeneration": { + "identifier": "EntityGeneration", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity::EntityGeneration", + "documentation": " This tracks different versions or generations of an [`EntityIndex`].\n Importantly, this can wrap, meaning each generation is not necessarily unique per [`EntityIndex`].\n\n This should be treated as a opaque identifier, and its internal representation may be subject to change.\n\n # Aliasing\n\n Internally [`EntityGeneration`] wraps a `u32`, so it can't represent *every* possible generation.\n Eventually, generations can (and do) wrap or alias.\n This can cause [`Entity`] and [`EntityGeneration`] values to be equal while still referring to different conceptual entities.\n This can cause some surprising behavior:\n\n ```\n # use bevy_ecs::entity::EntityGeneration;\n let (aliased, did_alias) = EntityGeneration::FIRST.after_versions(1u32 << 31).after_versions_and_could_alias(1u32 << 31);\n assert!(did_alias);\n assert!(EntityGeneration::FIRST == aliased);\n ```\n\n This can cause some unintended side effects.\n See [`Entity`] docs for practical concerns and how to minimize any risks.", + "associated_functions": [ + "bevy_ecs::entity::EntityGeneration::assert_receiver_is_total_eq", + "bevy_ecs::entity::EntityGeneration::eq", + "bevy_ecs::entity::EntityGeneration::clone", + "bevy_ecs::entity::EntityGeneration::to_bits", + "bevy_ecs::entity::EntityGeneration::after_versions", + "bevy_ecs::entity::EntityGeneration::from_bits" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity::EntityIndex": { + "identifier": "EntityIndex", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity::EntityIndex", + "documentation": " This represents the index of an [`Entity`] within the [`Entities`] array.\n This is a lighter weight version of [`Entity`].\n\n This is a unique identifier for an entity in the world.\n This differs from [`Entity`] in that [`Entity`] is unique for all entities total (unless the [`Entity::generation`] wraps),\n but this is only unique for entities that are active.\n\n This can be used over [`Entity`] to improve performance in some cases,\n but improper use can cause this to identify a different entity than intended.\n Use with caution.", + "associated_functions": [ + "bevy_ecs::entity::EntityIndex::eq", + "bevy_ecs::entity::EntityIndex::index", + "bevy_ecs::entity::EntityIndex::assert_receiver_is_total_eq", + "bevy_ecs::entity::EntityIndex::clone" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity::hash::EntityHash": { + "identifier": "EntityHash", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity::hash::EntityHash", + "documentation": " A [`BuildHasher`] that results in a [`EntityHasher`].", + "associated_functions": [ + "bevy_ecs::entity::hash::EntityHash::clone" + ], + "layout": { + "kind": "Struct", + "name": "EntityHash" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity::hash_set::EntityHashSet": { + "identifier": "EntityHashSet", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity::hash_set::EntityHashSet", + "documentation": " A [`HashSet`] pre-configured to use [`EntityHash`] hashing.", + "associated_functions": [ + "bevy_ecs::entity::hash_set::EntityHashSet::assert_receiver_is_total_eq", + "bevy_ecs::entity::hash_set::EntityHashSet::clone", + "bevy_ecs::entity::hash_set::EntityHashSet::with_capacity", + "bevy_ecs::entity::hash_set::EntityHashSet::len", + "bevy_ecs::entity::hash_set::EntityHashSet::new", + "bevy_ecs::entity::hash_set::EntityHashSet::eq", + "bevy_ecs::entity::hash_set::EntityHashSet::is_empty" + ], + "layout": { + "kind": "TupleStruct", + "name": "EntityHashSet", + "fields": [ + { + "type": { + "val": "bevy_platform::collections::HashSet" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity::index_set::EntityIndexSet": { + "identifier": "EntityIndexSet", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity::index_set::EntityIndexSet", + "documentation": " An [`IndexSet`] pre-configured to use [`EntityHash`] hashing.", + "associated_functions": [ + "bevy_ecs::entity::index_set::EntityIndexSet::with_capacity", + "bevy_ecs::entity::index_set::EntityIndexSet::eq", + "bevy_ecs::entity::index_set::EntityIndexSet::new", + "bevy_ecs::entity::index_set::EntityIndexSet::clone" + ], + "layout": { + "kind": "TupleStruct", + "name": "EntityIndexSet", + "fields": [ + { + "type": { + "val": "indexmap::IndexSet" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity_disabling::DefaultQueryFilters": { + "identifier": "DefaultQueryFilters", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity_disabling::DefaultQueryFilters", + "documentation": " Default query filters work by excluding entities with certain components from most queries.\n\n If a query does not explicitly mention a given disabling component, it will not include entities with that component.\n To be more precise, this checks if the query's [`FilteredAccess`] contains the component,\n and if it does not, adds a [`Without`](crate::prelude::Without) filter for that component to the query.\n\n [`Allow`](crate::query::Allow) and [`Has`](crate::prelude::Has) can be used to include entities\n with and without the disabling component.\n [`Allow`](crate::query::Allow) is a [`QueryFilter`](crate::query::QueryFilter) and will simply change\n the list of shown entities, while [`Has`](crate::prelude::Has) is a [`QueryData`](crate::query::QueryData)\n and will allow you to see if each entity has the disabling component or not.\n\n This resource is initialized in the [`World`] whenever a new world is created,\n with the [`Disabled`] component as a disabling component.\n\n Note that you can remove default query filters by overwriting the [`DefaultQueryFilters`] resource.\n This can be useful as a last resort escape hatch, but is liable to break compatibility with other libraries.\n\n See the [module docs](crate::entity_disabling) for more info.\n\n\n # Warning\n\n Default query filters are a global setting that affects all queries in the [`World`],\n and incur a small performance cost for each query.\n\n They can cause significant interoperability issues within the ecosystem,\n as users must be aware of each disabling component in use.\n\n Think carefully about whether you need to use a new disabling component,\n and clearly communicate their presence in any libraries you publish.", + "associated_functions": [ + "bevy_ecs::entity_disabling::DefaultQueryFilters::empty", + "bevy_ecs::entity_disabling::DefaultQueryFilters::register_disabling_component" + ], + "layout": { + "kind": "Struct", + "name": "DefaultQueryFilters", + "fields": [ + { + "name": "disabling", + "type": { + "vec": { + "val": "bevy_ecs::component::info::ComponentId" + } + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity_disabling::Disabled": { + "identifier": "Disabled", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity_disabling::Disabled", + "documentation": " A marker component for disabled entities.\n\n Semantically, this component is used to mark entities that are temporarily disabled (typically for gameplay reasons),\n but will likely be re-enabled at some point.\n\n Like all disabling components, this only disables the entity itself,\n not its children or other entities that reference it.\n To disable an entire tree of entities, use [`EntityCommands::insert_recursive`](crate::prelude::EntityCommands::insert_recursive).\n\n Every [`World`] has a default query filter that excludes entities with this component,\n registered in the [`DefaultQueryFilters`] resource.\n See [the module docs] for more info.\n\n [the module docs]: crate::entity_disabling", + "associated_functions": [ + "bevy_ecs::entity_disabling::Disabled::clone" + ], + "layout": { + "kind": "Struct", + "name": "Disabled" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::hierarchy::ChildOf": { + "identifier": "ChildOf", + "crate": "bevy_ecs", + "path": "bevy_ecs::hierarchy::ChildOf", + "documentation": " Stores the parent entity of this child entity with this component.\n\n This is a [`Relationship`] component, and creates the canonical\n \"parent / child\" hierarchy. This is the \"source of truth\" component, and it pairs with\n the [`Children`] [`RelationshipTarget`](crate::relationship::RelationshipTarget).\n\n This relationship should be used for things like:\n\n 1. Organizing entities in a scene\n 2. Propagating configuration or data inherited from a parent, such as \"visibility\" or \"world-space global transforms\".\n 3. Ensuring a hierarchy is despawned when an entity is despawned.\n\n [`ChildOf`] contains a single \"target\" [`Entity`]. When [`ChildOf`] is inserted on a \"source\" entity,\n the \"target\" entity will automatically (and immediately, via a component hook) have a [`Children`]\n component inserted, and the \"source\" entity will be added to that [`Children`] instance.\n\n If the [`ChildOf`] component is replaced with a different \"target\" entity, the old target's [`Children`]\n will be automatically (and immediately, via a component hook) be updated to reflect that change.\n\n Likewise, when the [`ChildOf`] component is removed, the \"source\" entity will be removed from the old\n target's [`Children`]. If this results in [`Children`] being empty, [`Children`] will be automatically removed.\n\n When a parent is despawned, all children (and their descendants) will _also_ be despawned.\n\n You can create parent-child relationships in a variety of ways. The most direct way is to insert a [`ChildOf`] component:\n\n ```\n # use bevy_ecs::prelude::*;\n # let mut world = World::new();\n let root = world.spawn_empty().id();\n let child1 = world.spawn(ChildOf(root)).id();\n let child2 = world.spawn(ChildOf(root)).id();\n let grandchild = world.spawn(ChildOf(child1)).id();\n\n assert_eq!(&**world.entity(root).get::().unwrap(), &[child1, child2]);\n assert_eq!(&**world.entity(child1).get::().unwrap(), &[grandchild]);\n\n world.entity_mut(child2).remove::();\n assert_eq!(&**world.entity(root).get::().unwrap(), &[child1]);\n\n world.entity_mut(root).despawn();\n assert!(world.get_entity(root).is_err());\n assert!(world.get_entity(child1).is_err());\n assert!(world.get_entity(grandchild).is_err());\n ```\n\n However if you are spawning many children, you might want to use the [`EntityWorldMut::with_children`] helper instead:\n\n ```\n # use bevy_ecs::prelude::*;\n # let mut world = World::new();\n let mut child1 = Entity::PLACEHOLDER;\n let mut child2 = Entity::PLACEHOLDER;\n let mut grandchild = Entity::PLACEHOLDER;\n let root = world.spawn_empty().with_children(|p| {\n child1 = p.spawn_empty().with_children(|p| {\n grandchild = p.spawn_empty().id();\n }).id();\n child2 = p.spawn_empty().id();\n }).id();\n\n assert_eq!(&**world.entity(root).get::().unwrap(), &[child1, child2]);\n assert_eq!(&**world.entity(child1).get::().unwrap(), &[grandchild]);\n ```\n\n [`Relationship`]: crate::relationship::Relationship", + "associated_functions": [ + "bevy_ecs::hierarchy::ChildOf::parent", + "bevy_ecs::hierarchy::ChildOf::assert_receiver_is_total_eq", + "bevy_ecs::hierarchy::ChildOf::eq", + "bevy_ecs::hierarchy::ChildOf::clone" + ], + "layout": { + "kind": "TupleStruct", + "name": "ChildOf", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::hierarchy::Children": { + "identifier": "Children", + "crate": "bevy_ecs", + "path": "bevy_ecs::hierarchy::Children", + "documentation": " Tracks which entities are children of this parent entity.\n\n A [`RelationshipTarget`] collection component that is populated\n with entities that \"target\" this entity with the [`ChildOf`] [`Relationship`] component.\n\n Together, these components form the \"canonical parent-child hierarchy\". See the [`ChildOf`] component for the full\n description of this relationship and instructions on how to use it.\n\n # Usage\n\n Like all [`RelationshipTarget`] components, this data should not be directly manipulated to avoid desynchronization.\n Instead, modify the [`ChildOf`] components on the \"source\" entities.\n\n To access the children of an entity, you can iterate over the [`Children`] component,\n using the [`IntoIterator`] trait.\n For more complex access patterns, see the [`RelationshipTarget`] trait.\n\n [`Relationship`]: crate::relationship::Relationship\n [`RelationshipTarget`]: crate::relationship::RelationshipTarget", + "associated_functions": [ + "bevy_ecs::hierarchy::Children::swap", + "bevy_ecs::hierarchy::Children::assert_receiver_is_total_eq", + "bevy_ecs::hierarchy::Children::eq" + ], + "layout": { + "kind": "TupleStruct", + "name": "Children", + "fields": [ + { + "type": { + "vec": { + "val": "bevy_ecs::entity::Entity" + } + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::lifecycle::Add": { + "identifier": "Add", + "crate": "bevy_ecs", + "path": "bevy_ecs::lifecycle::Add", + "documentation": " Trigger emitted when a component is inserted onto an entity that does not already have that\n component. Runs before `Insert`.\n See [`ComponentHooks::on_add`](`crate::lifecycle::ComponentHooks::on_add`) for more information.", + "associated_functions": [ + "bevy_ecs::lifecycle::Add::clone" + ], + "layout": { + "kind": "Struct", + "name": "Add", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::lifecycle::Despawn": { + "identifier": "Despawn", + "crate": "bevy_ecs", + "path": "bevy_ecs::lifecycle::Despawn", + "documentation": " [`EntityEvent`] emitted for each component on an entity when it is despawned.\n See [`ComponentHooks::on_despawn`](`crate::lifecycle::ComponentHooks::on_despawn`) for more information.", + "associated_functions": [ + "bevy_ecs::lifecycle::Despawn::clone" + ], + "layout": { + "kind": "Struct", + "name": "Despawn", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::lifecycle::Insert": { + "identifier": "Insert", + "crate": "bevy_ecs", + "path": "bevy_ecs::lifecycle::Insert", + "documentation": " Trigger emitted when a component is inserted, regardless of whether or not the entity already\n had that component. Runs after `Add`, if it ran.\n See [`ComponentHooks::on_insert`](`crate::lifecycle::ComponentHooks::on_insert`) for more information.", + "associated_functions": [ + "bevy_ecs::lifecycle::Insert::clone" + ], + "layout": { + "kind": "Struct", + "name": "Insert", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::lifecycle::Remove": { + "identifier": "Remove", + "crate": "bevy_ecs", + "path": "bevy_ecs::lifecycle::Remove", + "documentation": " Trigger emitted when a component is removed from an entity, and runs before the component is\n removed, so you can still access the component data.\n See [`ComponentHooks::on_remove`](`crate::lifecycle::ComponentHooks::on_remove`) for more information.", + "associated_functions": [ + "bevy_ecs::lifecycle::Remove::clone" + ], + "layout": { + "kind": "Struct", + "name": "Remove", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::lifecycle::RemovedComponentEntity": { + "identifier": "RemovedComponentEntity", + "crate": "bevy_ecs", + "path": "bevy_ecs::lifecycle::RemovedComponentEntity", + "documentation": " Wrapper around [`Entity`] for [`RemovedComponents`].\n Internally, `RemovedComponents` uses these as an [`Messages`].", + "associated_functions": [ + "bevy_ecs::lifecycle::RemovedComponentEntity::clone" + ], + "layout": { + "kind": "TupleStruct", + "name": "RemovedComponentEntity", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::lifecycle::Replace": { + "identifier": "Replace", + "crate": "bevy_ecs", + "path": "bevy_ecs::lifecycle::Replace", + "documentation": " Trigger emitted when a component is removed from an entity, regardless\n of whether or not it is later replaced.\n\n Runs before the value is replaced, so you can still access the original component data.\n See [`ComponentHooks::on_replace`](`crate::lifecycle::ComponentHooks::on_replace`) for more information.", + "associated_functions": [ + "bevy_ecs::lifecycle::Replace::clone" + ], + "layout": { + "kind": "Struct", + "name": "Replace", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::name::Name": { + "identifier": "Name", + "crate": "bevy_ecs", + "path": "bevy_ecs::name::Name", + "documentation": " Component used to identify an entity. Stores a hash for faster comparisons.\n\n The hash is eagerly re-computed upon each update to the name.\n\n [`Name`] should not be treated as a globally unique identifier for entities,\n as multiple entities can have the same name. [`Entity`] should be\n used instead as the default unique identifier.", + "associated_functions": [ + "bevy_ecs::name::Name::clone", + "bevy_ecs::name::Name::eq" + ], + "layout": { + "kind": "Struct", + "name": "Name", + "fields": [ + { + "name": "hash", + "type": { + "primitive": "u64" + } + }, + { + "name": "name", + "type": { + "val": "alloc::borrow::Cow" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::ButtonState": { + "identifier": "ButtonState", + "crate": "bevy_input", + "path": "bevy_input::ButtonState", + "documentation": " The current \"press\" state of an element", + "associated_functions": [ + "bevy_input::ButtonState::clone", + "bevy_input::ButtonState::eq", + "bevy_input::ButtonState::is_pressed", + "bevy_input::ButtonState::assert_receiver_is_total_eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "Pressed" + }, + { + "kind": "Unit", + "name": "Released" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::AxisSettings": { + "identifier": "AxisSettings", + "crate": "bevy_input", + "path": "bevy_input::gamepad::AxisSettings", + "documentation": " Settings for a [`GamepadAxis`].\n\n It is used inside the [`GamepadSettings`] to define the sensitivity range and\n threshold for an axis.\n Values that are higher than `livezone_upperbound` will be rounded up to 1.0.\n Values that are lower than `livezone_lowerbound` will be rounded down to -1.0.\n Values that are in-between `deadzone_lowerbound` and `deadzone_upperbound` will be rounded to 0.0.\n Otherwise, values will be linearly rescaled to fit into the sensitivity range.\n For example, a value that is one fourth of the way from `deadzone_upperbound` to `livezone_upperbound` will be scaled to 0.25.\n\n The valid range is `[-1.0, 1.0]`.", + "associated_functions": [ + "bevy_input::gamepad::AxisSettings::threshold", + "bevy_input::gamepad::AxisSettings::set_livezone_upperbound", + "bevy_input::gamepad::AxisSettings::deadzone_lowerbound", + "bevy_input::gamepad::AxisSettings::set_threshold", + "bevy_input::gamepad::AxisSettings::set_deadzone_lowerbound", + "bevy_input::gamepad::AxisSettings::livezone_lowerbound", + "bevy_input::gamepad::AxisSettings::livezone_upperbound", + "bevy_input::gamepad::AxisSettings::clone", + "bevy_input::gamepad::AxisSettings::set_deadzone_upperbound", + "bevy_input::gamepad::AxisSettings::eq", + "bevy_input::gamepad::AxisSettings::clamp", + "bevy_input::gamepad::AxisSettings::deadzone_upperbound", + "bevy_input::gamepad::AxisSettings::set_livezone_lowerbound" + ], + "layout": { + "kind": "Struct", + "name": "AxisSettings", + "fields": [ + { + "name": "livezone_upperbound", + "type": { + "primitive": "f32" + } + }, + { + "name": "deadzone_upperbound", + "type": { + "primitive": "f32" + } + }, + { + "name": "deadzone_lowerbound", + "type": { + "primitive": "f32" + } + }, + { + "name": "livezone_lowerbound", + "type": { + "primitive": "f32" + } + }, + { + "name": "threshold", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::ButtonAxisSettings": { + "identifier": "ButtonAxisSettings", + "crate": "bevy_input", + "path": "bevy_input::gamepad::ButtonAxisSettings", + "documentation": " Settings for a [`GamepadButton`].\n\n It is used inside the [`GamepadSettings`] to define the sensitivity range and\n threshold for a button axis.\n\n ## Logic\n\n - Values that are higher than or equal to `high` will be rounded to 1.0.\n - Values that are lower than or equal to `low` will be rounded to 0.0.\n - Otherwise, values will not be rounded.\n\n The valid range is from 0.0 to 1.0, inclusive.", + "associated_functions": [ + "bevy_input::gamepad::ButtonAxisSettings::clone" + ], + "layout": { + "kind": "Struct", + "name": "ButtonAxisSettings", + "fields": [ + { + "name": "high", + "type": { + "primitive": "f32" + } + }, + { + "name": "low", + "type": { + "primitive": "f32" + } + }, + { + "name": "threshold", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::ButtonSettings": { + "identifier": "ButtonSettings", + "crate": "bevy_input", + "path": "bevy_input::gamepad::ButtonSettings", + "documentation": " Manages settings for gamepad buttons.\n\n It is used inside [`GamepadSettings`] to define the threshold for a [`GamepadButton`]\n to be considered pressed or released. A button is considered pressed if the `press_threshold`\n value is surpassed and released if the `release_threshold` value is undercut.\n\n Allowed values: `0.0 <= ``release_threshold`` <= ``press_threshold`` <= 1.0`", + "associated_functions": [ + "bevy_input::gamepad::ButtonSettings::set_press_threshold", + "bevy_input::gamepad::ButtonSettings::release_threshold", + "bevy_input::gamepad::ButtonSettings::eq", + "bevy_input::gamepad::ButtonSettings::is_released", + "bevy_input::gamepad::ButtonSettings::press_threshold", + "bevy_input::gamepad::ButtonSettings::clone", + "bevy_input::gamepad::ButtonSettings::set_release_threshold", + "bevy_input::gamepad::ButtonSettings::is_pressed" + ], + "layout": { + "kind": "Struct", + "name": "ButtonSettings", + "fields": [ + { + "name": "press_threshold", + "type": { + "primitive": "f32" + } + }, + { + "name": "release_threshold", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::Gamepad": { + "identifier": "Gamepad", + "crate": "bevy_input", + "path": "bevy_input::gamepad::Gamepad", + "documentation": " Stores a connected gamepad's metadata such as the name and its [`GamepadButton`] and [`GamepadAxis`].\n\n An entity with this component is spawned automatically after [`GamepadConnectionEvent`]\n and updated by [`gamepad_event_processing_system`].\n\n See also [`GamepadSettings`] for configuration.\n\n # Examples\n\n ```\n # use bevy_input::gamepad::{Gamepad, GamepadAxis, GamepadButton};\n # use bevy_ecs::system::Query;\n # use bevy_ecs::name::Name;\n #\n fn gamepad_usage_system(gamepads: Query<(&Name, &Gamepad)>) {\n for (name, gamepad) in &gamepads {\n println!(\"{name}\");\n\n if gamepad.just_pressed(GamepadButton::North) {\n println!(\"{} just pressed North\", name)\n }\n\n if let Some(left_stick_x) = gamepad.get(GamepadAxis::LeftStickX) {\n println!(\"left stick X: {}\", left_stick_x)\n }\n }\n }\n ```", + "associated_functions": [ + "bevy_input::gamepad::Gamepad::just_released", + "bevy_input::gamepad::Gamepad::right_stick", + "bevy_input::gamepad::Gamepad::vendor_id", + "bevy_input::gamepad::Gamepad::product_id", + "bevy_input::gamepad::Gamepad::pressed", + "bevy_input::gamepad::Gamepad::just_pressed", + "bevy_input::gamepad::Gamepad::left_stick", + "bevy_input::gamepad::Gamepad::dpad" + ], + "layout": { + "kind": "Struct", + "name": "Gamepad", + "fields": [ + { + "name": "vendor_id", + "type": { + "option": { + "primitive": "u16" + } + } + }, + { + "name": "product_id", + "type": { + "option": { + "primitive": "u16" + } + } + }, + { + "name": "digital", + "type": { + "val": "bevy_input::button_input::ButtonInput" + } + }, + { + "name": "analog", + "type": { + "val": "bevy_input::axis::Axis" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadAxis": { + "identifier": "GamepadAxis", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadAxis", + "documentation": " Represents gamepad input types that are mapped in the range [-1.0, 1.0].\n\n ## Usage\n\n This is used to determine which axis has changed its value when receiving a\n gamepad axis event. It is also used in the [`Gamepad`] component.", + "associated_functions": [ + "bevy_input::gamepad::GamepadAxis::assert_receiver_is_total_eq", + "bevy_input::gamepad::GamepadAxis::eq", + "bevy_input::gamepad::GamepadAxis::clone" + ], + "layout": [ + { + "kind": "Unit", + "name": "LeftStickX" + }, + { + "kind": "Unit", + "name": "LeftStickY" + }, + { + "kind": "Unit", + "name": "LeftZ" + }, + { + "kind": "Unit", + "name": "RightStickX" + }, + { + "kind": "Unit", + "name": "RightStickY" + }, + { + "kind": "Unit", + "name": "RightZ" + }, + { + "kind": "TupleStruct", + "name": "Other", + "fields": [ + { + "type": { + "primitive": "u8" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadAxisChangedEvent": { + "identifier": "GamepadAxisChangedEvent", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadAxisChangedEvent", + "documentation": " [`GamepadAxis`] event triggered by an analog state change.", + "associated_functions": [ + "bevy_input::gamepad::GamepadAxisChangedEvent::clone", + "bevy_input::gamepad::GamepadAxisChangedEvent::new", + "bevy_input::gamepad::GamepadAxisChangedEvent::eq" + ], + "layout": { + "kind": "Struct", + "name": "GamepadAxisChangedEvent", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "axis", + "type": { + "val": "bevy_input::gamepad::GamepadAxis" + } + }, + { + "name": "value", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadButton": { + "identifier": "GamepadButton", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadButton", + "documentation": " Represents gamepad input types that are mapped in the range [0.0, 1.0].\n\n ## Usage\n\n This is used to determine which button has changed its value when receiving gamepad button events.\n It is also used in the [`Gamepad`] component.", + "associated_functions": [ + "bevy_input::gamepad::GamepadButton::eq", + "bevy_input::gamepad::GamepadButton::assert_receiver_is_total_eq", + "bevy_input::gamepad::GamepadButton::clone" + ], + "layout": [ + { + "kind": "Unit", + "name": "South" + }, + { + "kind": "Unit", + "name": "East" + }, + { + "kind": "Unit", + "name": "North" + }, + { + "kind": "Unit", + "name": "West" + }, + { + "kind": "Unit", + "name": "C" + }, + { + "kind": "Unit", + "name": "Z" + }, + { + "kind": "Unit", + "name": "LeftTrigger" + }, + { + "kind": "Unit", + "name": "LeftTrigger2" + }, + { + "kind": "Unit", + "name": "RightTrigger" + }, + { + "kind": "Unit", + "name": "RightTrigger2" + }, + { + "kind": "Unit", + "name": "Select" + }, + { + "kind": "Unit", + "name": "Start" + }, + { + "kind": "Unit", + "name": "Mode" + }, + { + "kind": "Unit", + "name": "LeftThumb" + }, + { + "kind": "Unit", + "name": "RightThumb" + }, + { + "kind": "Unit", + "name": "DPadUp" + }, + { + "kind": "Unit", + "name": "DPadDown" + }, + { + "kind": "Unit", + "name": "DPadLeft" + }, + { + "kind": "Unit", + "name": "DPadRight" + }, + { + "kind": "TupleStruct", + "name": "Other", + "fields": [ + { + "type": { + "primitive": "u8" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadButtonChangedEvent": { + "identifier": "GamepadButtonChangedEvent", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadButtonChangedEvent", + "documentation": " [`GamepadButton`] event triggered by an analog state change.", + "associated_functions": [ + "bevy_input::gamepad::GamepadButtonChangedEvent::new", + "bevy_input::gamepad::GamepadButtonChangedEvent::eq", + "bevy_input::gamepad::GamepadButtonChangedEvent::clone" + ], + "layout": { + "kind": "Struct", + "name": "GamepadButtonChangedEvent", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "button", + "type": { + "val": "bevy_input::gamepad::GamepadButton" + } + }, + { + "name": "state", + "type": { + "val": "bevy_input::ButtonState" + } + }, + { + "name": "value", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadButtonStateChangedEvent": { + "identifier": "GamepadButtonStateChangedEvent", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadButtonStateChangedEvent", + "documentation": " [`GamepadButton`] event triggered by a digital state change.", + "associated_functions": [ + "bevy_input::gamepad::GamepadButtonStateChangedEvent::eq", + "bevy_input::gamepad::GamepadButtonStateChangedEvent::clone", + "bevy_input::gamepad::GamepadButtonStateChangedEvent::new", + "bevy_input::gamepad::GamepadButtonStateChangedEvent::assert_receiver_is_total_eq" + ], + "layout": { + "kind": "Struct", + "name": "GamepadButtonStateChangedEvent", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "button", + "type": { + "val": "bevy_input::gamepad::GamepadButton" + } + }, + { + "name": "state", + "type": { + "val": "bevy_input::ButtonState" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadConnection": { + "identifier": "GamepadConnection", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadConnection", + "documentation": " The connection status of a gamepad.", + "associated_functions": [ + "bevy_input::gamepad::GamepadConnection::clone", + "bevy_input::gamepad::GamepadConnection::eq" + ], + "layout": [ + { + "kind": "Struct", + "name": "Connected", + "fields": [ + { + "name": "name", + "type": { + "primitive": "string" + } + }, + { + "name": "vendor_id", + "type": { + "option": { + "primitive": "u16" + } + } + }, + { + "name": "product_id", + "type": { + "option": { + "primitive": "u16" + } + } + } + ] + }, + { + "kind": "Unit", + "name": "Disconnected" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadConnectionEvent": { + "identifier": "GamepadConnectionEvent", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadConnectionEvent", + "documentation": " A [`Gamepad`] connection event. Created when a connection to a gamepad\n is established and when a gamepad is disconnected.", + "associated_functions": [ + "bevy_input::gamepad::GamepadConnectionEvent::disconnected", + "bevy_input::gamepad::GamepadConnectionEvent::clone", + "bevy_input::gamepad::GamepadConnectionEvent::eq", + "bevy_input::gamepad::GamepadConnectionEvent::connected", + "bevy_input::gamepad::GamepadConnectionEvent::new" + ], + "layout": { + "kind": "Struct", + "name": "GamepadConnectionEvent", + "fields": [ + { + "name": "gamepad", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "connection", + "type": { + "val": "bevy_input::gamepad::GamepadConnection" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadEvent": { + "identifier": "GamepadEvent", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadEvent", + "documentation": " A gamepad event.\n\n This event type is used over the [`GamepadConnectionEvent`],\n [`GamepadButtonChangedEvent`] and [`GamepadAxisChangedEvent`] when\n the in-frame relative ordering of events is important.\n\n This event is produced by `bevy_input`.", + "associated_functions": [ + "bevy_input::gamepad::GamepadEvent::clone", + "bevy_input::gamepad::GamepadEvent::eq" + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "Connection", + "fields": [ + { + "type": { + "val": "bevy_input::gamepad::GamepadConnectionEvent" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Button", + "fields": [ + { + "type": { + "val": "bevy_input::gamepad::GamepadButtonChangedEvent" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Axis", + "fields": [ + { + "type": { + "val": "bevy_input::gamepad::GamepadAxisChangedEvent" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadInput": { + "identifier": "GamepadInput", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadInput", + "documentation": " Encapsulation over [`GamepadAxis`] and [`GamepadButton`].", + "associated_functions": [ + "bevy_input::gamepad::GamepadInput::assert_receiver_is_total_eq", + "bevy_input::gamepad::GamepadInput::clone", + "bevy_input::gamepad::GamepadInput::eq" + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "Axis", + "fields": [ + { + "type": { + "val": "bevy_input::gamepad::GamepadAxis" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Button", + "fields": [ + { + "type": { + "val": "bevy_input::gamepad::GamepadButton" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadRumbleIntensity": { + "identifier": "GamepadRumbleIntensity", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadRumbleIntensity", + "documentation": " The intensity at which a gamepad's force-feedback motors may rumble.", + "associated_functions": [ + "bevy_input::gamepad::GamepadRumbleIntensity::eq", + "bevy_input::gamepad::GamepadRumbleIntensity::strong_motor", + "bevy_input::gamepad::GamepadRumbleIntensity::weak_motor", + "bevy_input::gamepad::GamepadRumbleIntensity::clone" + ], + "layout": { + "kind": "Struct", + "name": "GamepadRumbleIntensity", + "fields": [ + { + "name": "strong_motor", + "type": { + "primitive": "f32" + } + }, + { + "name": "weak_motor", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadRumbleRequest": { + "identifier": "GamepadRumbleRequest", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadRumbleRequest", + "documentation": " An event that controls force-feedback rumbling of a [`Gamepad`] [`entity`](Entity).\n\n # Notes\n\n Does nothing if the gamepad or platform does not support rumble.\n\n # Example\n\n ```\n # use bevy_input::gamepad::{Gamepad, GamepadRumbleRequest, GamepadRumbleIntensity};\n # use bevy_ecs::prelude::{MessageWriter, Res, Query, Entity, With};\n # use core::time::Duration;\n fn rumble_gamepad_system(\n mut rumble_requests: MessageWriter,\n gamepads: Query>,\n ) {\n for entity in gamepads.iter() {\n rumble_requests.write(GamepadRumbleRequest::Add {\n gamepad: entity,\n intensity: GamepadRumbleIntensity::MAX,\n duration: Duration::from_secs_f32(0.5),\n });\n }\n }\n ```", + "associated_functions": [ + "bevy_input::gamepad::GamepadRumbleRequest::clone", + "bevy_input::gamepad::GamepadRumbleRequest::gamepad" + ], + "layout": [ + { + "kind": "Struct", + "name": "Add", + "fields": [ + { + "name": "duration", + "type": { + "val": "core::time::Duration" + } + }, + { + "name": "intensity", + "type": { + "val": "bevy_input::gamepad::GamepadRumbleIntensity" + } + }, + { + "name": "gamepad", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + { + "kind": "Struct", + "name": "Stop", + "fields": [ + { + "name": "gamepad", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::GamepadSettings": { + "identifier": "GamepadSettings", + "crate": "bevy_input", + "path": "bevy_input::gamepad::GamepadSettings", + "documentation": " Gamepad settings component.\n\n ## Usage\n\n It is used to create a `bevy` component that stores the settings of [`GamepadButton`] and [`GamepadAxis`] in [`Gamepad`].\n If no user defined [`ButtonSettings`], [`AxisSettings`], or [`ButtonAxisSettings`]\n are defined, the default settings of each are used as a fallback accordingly.\n\n ## Note\n\n The [`GamepadSettings`] are used to determine when raw gamepad events\n should register. Events that don't meet the change thresholds defined in [`GamepadSettings`]\n will not register. To modify these settings, mutate the corresponding component.", + "associated_functions": [ + "bevy_input::gamepad::GamepadSettings::clone" + ], + "layout": { + "kind": "Struct", + "name": "GamepadSettings", + "fields": [ + { + "name": "default_button_settings", + "type": { + "val": "bevy_input::gamepad::ButtonSettings" + } + }, + { + "name": "default_axis_settings", + "type": { + "val": "bevy_input::gamepad::AxisSettings" + } + }, + { + "name": "default_button_axis_settings", + "type": { + "val": "bevy_input::gamepad::ButtonAxisSettings" + } + }, + { + "name": "button_settings", + "type": { + "hashMap": [ + { + "val": "bevy_input::gamepad::GamepadButton" + }, + { + "val": "bevy_input::gamepad::ButtonSettings" + } + ] + } + }, + { + "name": "axis_settings", + "type": { + "hashMap": [ + { + "val": "bevy_input::gamepad::GamepadAxis" + }, + { + "val": "bevy_input::gamepad::AxisSettings" + } + ] + } + }, + { + "name": "button_axis_settings", + "type": { + "hashMap": [ + { + "val": "bevy_input::gamepad::GamepadButton" + }, + { + "val": "bevy_input::gamepad::ButtonAxisSettings" + } + ] + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::RawGamepadAxisChangedEvent": { + "identifier": "RawGamepadAxisChangedEvent", + "crate": "bevy_input", + "path": "bevy_input::gamepad::RawGamepadAxisChangedEvent", + "documentation": " [`GamepadAxis`] changed event unfiltered by [`GamepadSettings`].", + "associated_functions": [ + "bevy_input::gamepad::RawGamepadAxisChangedEvent::eq", + "bevy_input::gamepad::RawGamepadAxisChangedEvent::new", + "bevy_input::gamepad::RawGamepadAxisChangedEvent::clone" + ], + "layout": { + "kind": "Struct", + "name": "RawGamepadAxisChangedEvent", + "fields": [ + { + "name": "gamepad", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "axis", + "type": { + "val": "bevy_input::gamepad::GamepadAxis" + } + }, + { + "name": "value", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::RawGamepadButtonChangedEvent": { + "identifier": "RawGamepadButtonChangedEvent", + "crate": "bevy_input", + "path": "bevy_input::gamepad::RawGamepadButtonChangedEvent", + "documentation": " [`GamepadButton`] changed event unfiltered by [`GamepadSettings`].", + "associated_functions": [ + "bevy_input::gamepad::RawGamepadButtonChangedEvent::eq", + "bevy_input::gamepad::RawGamepadButtonChangedEvent::clone", + "bevy_input::gamepad::RawGamepadButtonChangedEvent::new" + ], + "layout": { + "kind": "Struct", + "name": "RawGamepadButtonChangedEvent", + "fields": [ + { + "name": "gamepad", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "button", + "type": { + "val": "bevy_input::gamepad::GamepadButton" + } + }, + { + "name": "value", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gamepad::RawGamepadEvent": { + "identifier": "RawGamepadEvent", + "crate": "bevy_input", + "path": "bevy_input::gamepad::RawGamepadEvent", + "documentation": " A raw gamepad event.\n\n This event type is used over the [`GamepadConnectionEvent`],\n [`RawGamepadButtonChangedEvent`] and [`RawGamepadAxisChangedEvent`] when\n the in-frame relative ordering of events is important.\n\n This event type is used by `bevy_input` to feed its components.", + "associated_functions": [ + "bevy_input::gamepad::RawGamepadEvent::clone", + "bevy_input::gamepad::RawGamepadEvent::eq" + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "Connection", + "fields": [ + { + "type": { + "val": "bevy_input::gamepad::GamepadConnectionEvent" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Button", + "fields": [ + { + "type": { + "val": "bevy_input::gamepad::RawGamepadButtonChangedEvent" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Axis", + "fields": [ + { + "type": { + "val": "bevy_input::gamepad::RawGamepadAxisChangedEvent" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gestures::DoubleTapGesture": { + "identifier": "DoubleTapGesture", + "crate": "bevy_input", + "path": "bevy_input::gestures::DoubleTapGesture", + "documentation": " Double tap gesture.\n\n ## Platform-specific\n\n - Only available on **`macOS`** and **`iOS`**.\n - On **`iOS`**, must be enabled first", + "associated_functions": [ + "bevy_input::gestures::DoubleTapGesture::clone", + "bevy_input::gestures::DoubleTapGesture::eq" + ], + "layout": { + "kind": "Struct", + "name": "DoubleTapGesture" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gestures::PanGesture": { + "identifier": "PanGesture", + "crate": "bevy_input", + "path": "bevy_input::gestures::PanGesture", + "documentation": " Pan gesture.\n\n ## Platform-specific\n\n - On **`iOS`**, must be enabled first", + "associated_functions": [ + "bevy_input::gestures::PanGesture::clone", + "bevy_input::gestures::PanGesture::eq" + ], + "layout": { + "kind": "TupleStruct", + "name": "PanGesture", + "fields": [ + { + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gestures::PinchGesture": { + "identifier": "PinchGesture", + "crate": "bevy_input", + "path": "bevy_input::gestures::PinchGesture", + "documentation": " Two-finger pinch gesture, often used for magnifications.\n\n Positive delta values indicate magnification (zooming in) and\n negative delta values indicate shrinking (zooming out).\n\n ## Platform-specific\n\n - Only available on **`macOS`** and **`iOS`**.\n - On **`iOS`**, must be enabled first", + "associated_functions": [ + "bevy_input::gestures::PinchGesture::clone", + "bevy_input::gestures::PinchGesture::eq" + ], + "layout": { + "kind": "TupleStruct", + "name": "PinchGesture", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::gestures::RotationGesture": { + "identifier": "RotationGesture", + "crate": "bevy_input", + "path": "bevy_input::gestures::RotationGesture", + "documentation": " Two-finger rotation gesture.\n\n Positive delta values indicate rotation counterclockwise and\n negative delta values indicate rotation clockwise.\n\n ## Platform-specific\n\n - Only available on **`macOS`** and **`iOS`**.\n - On **`iOS`**, must be enabled first", + "associated_functions": [ + "bevy_input::gestures::RotationGesture::clone", + "bevy_input::gestures::RotationGesture::eq" + ], + "layout": { + "kind": "TupleStruct", + "name": "RotationGesture", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::keyboard::Key": { + "identifier": "Key", + "crate": "bevy_input", + "path": "bevy_input::keyboard::Key", + "documentation": " The logical key code of a [`KeyboardInput`].\n\n This contains the actual value that is produced by pressing the key. This is\n useful when you need the actual letters, and for symbols like `+` and `-`\n when implementing zoom, as they can be in different locations depending on\n the keyboard layout.\n\n In many cases you want the key location instead, for example when\n implementing WASD controls so the keys are located the same place on QWERTY\n and other layouts. In that case use [`KeyCode`] instead.\n\n ## Usage\n\n It is used as the generic `T` value of an [`ButtonInput`] to create a `Res>`.\n\n ## Technical\n\n Its values map 1 to 1 to winit's Key.", + "associated_functions": [ + "bevy_input::keyboard::Key::eq", + "bevy_input::keyboard::Key::assert_receiver_is_total_eq", + "bevy_input::keyboard::Key::clone" + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "Character", + "fields": [ + { + "type": { + "val": "smol_str::SmolStr" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Unidentified", + "fields": [ + { + "type": { + "val": "bevy_input::keyboard::NativeKey" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Dead", + "fields": [ + { + "type": { + "option": { + "primitive": "char" + } + } + } + ] + }, + { + "kind": "Unit", + "name": "Alt" + }, + { + "kind": "Unit", + "name": "AltGraph" + }, + { + "kind": "Unit", + "name": "CapsLock" + }, + { + "kind": "Unit", + "name": "Control" + }, + { + "kind": "Unit", + "name": "Fn" + }, + { + "kind": "Unit", + "name": "FnLock" + }, + { + "kind": "Unit", + "name": "NumLock" + }, + { + "kind": "Unit", + "name": "ScrollLock" + }, + { + "kind": "Unit", + "name": "Shift" + }, + { + "kind": "Unit", + "name": "Symbol" + }, + { + "kind": "Unit", + "name": "SymbolLock" + }, + { + "kind": "Unit", + "name": "Meta" + }, + { + "kind": "Unit", + "name": "Hyper" + }, + { + "kind": "Unit", + "name": "Super" + }, + { + "kind": "Unit", + "name": "Enter" + }, + { + "kind": "Unit", + "name": "Tab" + }, + { + "kind": "Unit", + "name": "Space" + }, + { + "kind": "Unit", + "name": "ArrowDown" + }, + { + "kind": "Unit", + "name": "ArrowLeft" + }, + { + "kind": "Unit", + "name": "ArrowRight" + }, + { + "kind": "Unit", + "name": "ArrowUp" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "Home" + }, + { + "kind": "Unit", + "name": "PageDown" + }, + { + "kind": "Unit", + "name": "PageUp" + }, + { + "kind": "Unit", + "name": "Backspace" + }, + { + "kind": "Unit", + "name": "Clear" + }, + { + "kind": "Unit", + "name": "Copy" + }, + { + "kind": "Unit", + "name": "CrSel" + }, + { + "kind": "Unit", + "name": "Cut" + }, + { + "kind": "Unit", + "name": "Delete" + }, + { + "kind": "Unit", + "name": "EraseEof" + }, + { + "kind": "Unit", + "name": "ExSel" + }, + { + "kind": "Unit", + "name": "Insert" + }, + { + "kind": "Unit", + "name": "Paste" + }, + { + "kind": "Unit", + "name": "Redo" + }, + { + "kind": "Unit", + "name": "Undo" + }, + { + "kind": "Unit", + "name": "Accept" + }, + { + "kind": "Unit", + "name": "Again" + }, + { + "kind": "Unit", + "name": "Attn" + }, + { + "kind": "Unit", + "name": "Cancel" + }, + { + "kind": "Unit", + "name": "ContextMenu" + }, + { + "kind": "Unit", + "name": "Escape" + }, + { + "kind": "Unit", + "name": "Execute" + }, + { + "kind": "Unit", + "name": "Find" + }, + { + "kind": "Unit", + "name": "Help" + }, + { + "kind": "Unit", + "name": "Pause" + }, + { + "kind": "Unit", + "name": "Play" + }, + { + "kind": "Unit", + "name": "Props" + }, + { + "kind": "Unit", + "name": "Select" + }, + { + "kind": "Unit", + "name": "ZoomIn" + }, + { + "kind": "Unit", + "name": "ZoomOut" + }, + { + "kind": "Unit", + "name": "BrightnessDown" + }, + { + "kind": "Unit", + "name": "BrightnessUp" + }, + { + "kind": "Unit", + "name": "Eject" + }, + { + "kind": "Unit", + "name": "LogOff" + }, + { + "kind": "Unit", + "name": "Power" + }, + { + "kind": "Unit", + "name": "PowerOff" + }, + { + "kind": "Unit", + "name": "PrintScreen" + }, + { + "kind": "Unit", + "name": "Hibernate" + }, + { + "kind": "Unit", + "name": "Standby" + }, + { + "kind": "Unit", + "name": "WakeUp" + }, + { + "kind": "Unit", + "name": "AllCandidates" + }, + { + "kind": "Unit", + "name": "Alphanumeric" + }, + { + "kind": "Unit", + "name": "CodeInput" + }, + { + "kind": "Unit", + "name": "Compose" + }, + { + "kind": "Unit", + "name": "Convert" + }, + { + "kind": "Unit", + "name": "FinalMode" + }, + { + "kind": "Unit", + "name": "GroupFirst" + }, + { + "kind": "Unit", + "name": "GroupLast" + }, + { + "kind": "Unit", + "name": "GroupNext" + }, + { + "kind": "Unit", + "name": "GroupPrevious" + }, + { + "kind": "Unit", + "name": "ModeChange" + }, + { + "kind": "Unit", + "name": "NextCandidate" + }, + { + "kind": "Unit", + "name": "NonConvert" + }, + { + "kind": "Unit", + "name": "PreviousCandidate" + }, + { + "kind": "Unit", + "name": "Process" + }, + { + "kind": "Unit", + "name": "SingleCandidate" + }, + { + "kind": "Unit", + "name": "HangulMode" + }, + { + "kind": "Unit", + "name": "HanjaMode" + }, + { + "kind": "Unit", + "name": "JunjaMode" + }, + { + "kind": "Unit", + "name": "Eisu" + }, + { + "kind": "Unit", + "name": "Hankaku" + }, + { + "kind": "Unit", + "name": "Hiragana" + }, + { + "kind": "Unit", + "name": "HiraganaKatakana" + }, + { + "kind": "Unit", + "name": "KanaMode" + }, + { + "kind": "Unit", + "name": "KanjiMode" + }, + { + "kind": "Unit", + "name": "Katakana" + }, + { + "kind": "Unit", + "name": "Romaji" + }, + { + "kind": "Unit", + "name": "Zenkaku" + }, + { + "kind": "Unit", + "name": "ZenkakuHankaku" + }, + { + "kind": "Unit", + "name": "Soft1" + }, + { + "kind": "Unit", + "name": "Soft2" + }, + { + "kind": "Unit", + "name": "Soft3" + }, + { + "kind": "Unit", + "name": "Soft4" + }, + { + "kind": "Unit", + "name": "ChannelDown" + }, + { + "kind": "Unit", + "name": "ChannelUp" + }, + { + "kind": "Unit", + "name": "Close" + }, + { + "kind": "Unit", + "name": "MailForward" + }, + { + "kind": "Unit", + "name": "MailReply" + }, + { + "kind": "Unit", + "name": "MailSend" + }, + { + "kind": "Unit", + "name": "MediaClose" + }, + { + "kind": "Unit", + "name": "MediaFastForward" + }, + { + "kind": "Unit", + "name": "MediaPause" + }, + { + "kind": "Unit", + "name": "MediaPlay" + }, + { + "kind": "Unit", + "name": "MediaPlayPause" + }, + { + "kind": "Unit", + "name": "MediaRecord" + }, + { + "kind": "Unit", + "name": "MediaRewind" + }, + { + "kind": "Unit", + "name": "MediaStop" + }, + { + "kind": "Unit", + "name": "MediaTrackNext" + }, + { + "kind": "Unit", + "name": "MediaTrackPrevious" + }, + { + "kind": "Unit", + "name": "New" + }, + { + "kind": "Unit", + "name": "Open" + }, + { + "kind": "Unit", + "name": "Print" + }, + { + "kind": "Unit", + "name": "Save" + }, + { + "kind": "Unit", + "name": "SpellCheck" + }, + { + "kind": "Unit", + "name": "Key11" + }, + { + "kind": "Unit", + "name": "Key12" + }, + { + "kind": "Unit", + "name": "AudioBalanceLeft" + }, + { + "kind": "Unit", + "name": "AudioBalanceRight" + }, + { + "kind": "Unit", + "name": "AudioBassBoostDown" + }, + { + "kind": "Unit", + "name": "AudioBassBoostToggle" + }, + { + "kind": "Unit", + "name": "AudioBassBoostUp" + }, + { + "kind": "Unit", + "name": "AudioFaderFront" + }, + { + "kind": "Unit", + "name": "AudioFaderRear" + }, + { + "kind": "Unit", + "name": "AudioSurroundModeNext" + }, + { + "kind": "Unit", + "name": "AudioTrebleDown" + }, + { + "kind": "Unit", + "name": "AudioTrebleUp" + }, + { + "kind": "Unit", + "name": "AudioVolumeDown" + }, + { + "kind": "Unit", + "name": "AudioVolumeUp" + }, + { + "kind": "Unit", + "name": "AudioVolumeMute" + }, + { + "kind": "Unit", + "name": "MicrophoneToggle" + }, + { + "kind": "Unit", + "name": "MicrophoneVolumeDown" + }, + { + "kind": "Unit", + "name": "MicrophoneVolumeUp" + }, + { + "kind": "Unit", + "name": "MicrophoneVolumeMute" + }, + { + "kind": "Unit", + "name": "SpeechCorrectionList" + }, + { + "kind": "Unit", + "name": "SpeechInputToggle" + }, + { + "kind": "Unit", + "name": "LaunchApplication1" + }, + { + "kind": "Unit", + "name": "LaunchApplication2" + }, + { + "kind": "Unit", + "name": "LaunchCalendar" + }, + { + "kind": "Unit", + "name": "LaunchContacts" + }, + { + "kind": "Unit", + "name": "LaunchMail" + }, + { + "kind": "Unit", + "name": "LaunchMediaPlayer" + }, + { + "kind": "Unit", + "name": "LaunchMusicPlayer" + }, + { + "kind": "Unit", + "name": "LaunchPhone" + }, + { + "kind": "Unit", + "name": "LaunchScreenSaver" + }, + { + "kind": "Unit", + "name": "LaunchSpreadsheet" + }, + { + "kind": "Unit", + "name": "LaunchWebBrowser" + }, + { + "kind": "Unit", + "name": "LaunchWebCam" + }, + { + "kind": "Unit", + "name": "LaunchWordProcessor" + }, + { + "kind": "Unit", + "name": "BrowserBack" + }, + { + "kind": "Unit", + "name": "BrowserFavorites" + }, + { + "kind": "Unit", + "name": "BrowserForward" + }, + { + "kind": "Unit", + "name": "BrowserHome" + }, + { + "kind": "Unit", + "name": "BrowserRefresh" + }, + { + "kind": "Unit", + "name": "BrowserSearch" + }, + { + "kind": "Unit", + "name": "BrowserStop" + }, + { + "kind": "Unit", + "name": "AppSwitch" + }, + { + "kind": "Unit", + "name": "Call" + }, + { + "kind": "Unit", + "name": "Camera" + }, + { + "kind": "Unit", + "name": "CameraFocus" + }, + { + "kind": "Unit", + "name": "EndCall" + }, + { + "kind": "Unit", + "name": "GoBack" + }, + { + "kind": "Unit", + "name": "GoHome" + }, + { + "kind": "Unit", + "name": "HeadsetHook" + }, + { + "kind": "Unit", + "name": "LastNumberRedial" + }, + { + "kind": "Unit", + "name": "Notification" + }, + { + "kind": "Unit", + "name": "MannerMode" + }, + { + "kind": "Unit", + "name": "VoiceDial" + }, + { + "kind": "Unit", + "name": "TV" + }, + { + "kind": "Unit", + "name": "TV3DMode" + }, + { + "kind": "Unit", + "name": "TVAntennaCable" + }, + { + "kind": "Unit", + "name": "TVAudioDescription" + }, + { + "kind": "Unit", + "name": "TVAudioDescriptionMixDown" + }, + { + "kind": "Unit", + "name": "TVAudioDescriptionMixUp" + }, + { + "kind": "Unit", + "name": "TVContentsMenu" + }, + { + "kind": "Unit", + "name": "TVDataService" + }, + { + "kind": "Unit", + "name": "TVInput" + }, + { + "kind": "Unit", + "name": "TVInputComponent1" + }, + { + "kind": "Unit", + "name": "TVInputComponent2" + }, + { + "kind": "Unit", + "name": "TVInputComposite1" + }, + { + "kind": "Unit", + "name": "TVInputComposite2" + }, + { + "kind": "Unit", + "name": "TVInputHDMI1" + }, + { + "kind": "Unit", + "name": "TVInputHDMI2" + }, + { + "kind": "Unit", + "name": "TVInputHDMI3" + }, + { + "kind": "Unit", + "name": "TVInputHDMI4" + }, + { + "kind": "Unit", + "name": "TVInputVGA1" + }, + { + "kind": "Unit", + "name": "TVMediaContext" + }, + { + "kind": "Unit", + "name": "TVNetwork" + }, + { + "kind": "Unit", + "name": "TVNumberEntry" + }, + { + "kind": "Unit", + "name": "TVPower" + }, + { + "kind": "Unit", + "name": "TVRadioService" + }, + { + "kind": "Unit", + "name": "TVSatellite" + }, + { + "kind": "Unit", + "name": "TVSatelliteBS" + }, + { + "kind": "Unit", + "name": "TVSatelliteCS" + }, + { + "kind": "Unit", + "name": "TVSatelliteToggle" + }, + { + "kind": "Unit", + "name": "TVTerrestrialAnalog" + }, + { + "kind": "Unit", + "name": "TVTerrestrialDigital" + }, + { + "kind": "Unit", + "name": "TVTimer" + }, + { + "kind": "Unit", + "name": "AVRInput" + }, + { + "kind": "Unit", + "name": "AVRPower" + }, + { + "kind": "Unit", + "name": "ColorF0Red" + }, + { + "kind": "Unit", + "name": "ColorF1Green" + }, + { + "kind": "Unit", + "name": "ColorF2Yellow" + }, + { + "kind": "Unit", + "name": "ColorF3Blue" + }, + { + "kind": "Unit", + "name": "ColorF4Grey" + }, + { + "kind": "Unit", + "name": "ColorF5Brown" + }, + { + "kind": "Unit", + "name": "ClosedCaptionToggle" + }, + { + "kind": "Unit", + "name": "Dimmer" + }, + { + "kind": "Unit", + "name": "DisplaySwap" + }, + { + "kind": "Unit", + "name": "DVR" + }, + { + "kind": "Unit", + "name": "Exit" + }, + { + "kind": "Unit", + "name": "FavoriteClear0" + }, + { + "kind": "Unit", + "name": "FavoriteClear1" + }, + { + "kind": "Unit", + "name": "FavoriteClear2" + }, + { + "kind": "Unit", + "name": "FavoriteClear3" + }, + { + "kind": "Unit", + "name": "FavoriteRecall0" + }, + { + "kind": "Unit", + "name": "FavoriteRecall1" + }, + { + "kind": "Unit", + "name": "FavoriteRecall2" + }, + { + "kind": "Unit", + "name": "FavoriteRecall3" + }, + { + "kind": "Unit", + "name": "FavoriteStore0" + }, + { + "kind": "Unit", + "name": "FavoriteStore1" + }, + { + "kind": "Unit", + "name": "FavoriteStore2" + }, + { + "kind": "Unit", + "name": "FavoriteStore3" + }, + { + "kind": "Unit", + "name": "Guide" + }, + { + "kind": "Unit", + "name": "GuideNextDay" + }, + { + "kind": "Unit", + "name": "GuidePreviousDay" + }, + { + "kind": "Unit", + "name": "Info" + }, + { + "kind": "Unit", + "name": "InstantReplay" + }, + { + "kind": "Unit", + "name": "Link" + }, + { + "kind": "Unit", + "name": "ListProgram" + }, + { + "kind": "Unit", + "name": "LiveContent" + }, + { + "kind": "Unit", + "name": "Lock" + }, + { + "kind": "Unit", + "name": "MediaApps" + }, + { + "kind": "Unit", + "name": "MediaAudioTrack" + }, + { + "kind": "Unit", + "name": "MediaLast" + }, + { + "kind": "Unit", + "name": "MediaSkipBackward" + }, + { + "kind": "Unit", + "name": "MediaSkipForward" + }, + { + "kind": "Unit", + "name": "MediaStepBackward" + }, + { + "kind": "Unit", + "name": "MediaStepForward" + }, + { + "kind": "Unit", + "name": "MediaTopMenu" + }, + { + "kind": "Unit", + "name": "NavigateIn" + }, + { + "kind": "Unit", + "name": "NavigateNext" + }, + { + "kind": "Unit", + "name": "NavigateOut" + }, + { + "kind": "Unit", + "name": "NavigatePrevious" + }, + { + "kind": "Unit", + "name": "NextFavoriteChannel" + }, + { + "kind": "Unit", + "name": "NextUserProfile" + }, + { + "kind": "Unit", + "name": "OnDemand" + }, + { + "kind": "Unit", + "name": "Pairing" + }, + { + "kind": "Unit", + "name": "PinPDown" + }, + { + "kind": "Unit", + "name": "PinPMove" + }, + { + "kind": "Unit", + "name": "PinPToggle" + }, + { + "kind": "Unit", + "name": "PinPUp" + }, + { + "kind": "Unit", + "name": "PlaySpeedDown" + }, + { + "kind": "Unit", + "name": "PlaySpeedReset" + }, + { + "kind": "Unit", + "name": "PlaySpeedUp" + }, + { + "kind": "Unit", + "name": "RandomToggle" + }, + { + "kind": "Unit", + "name": "RcLowBattery" + }, + { + "kind": "Unit", + "name": "RecordSpeedNext" + }, + { + "kind": "Unit", + "name": "RfBypass" + }, + { + "kind": "Unit", + "name": "ScanChannelsToggle" + }, + { + "kind": "Unit", + "name": "ScreenModeNext" + }, + { + "kind": "Unit", + "name": "Settings" + }, + { + "kind": "Unit", + "name": "SplitScreenToggle" + }, + { + "kind": "Unit", + "name": "STBInput" + }, + { + "kind": "Unit", + "name": "STBPower" + }, + { + "kind": "Unit", + "name": "Subtitle" + }, + { + "kind": "Unit", + "name": "Teletext" + }, + { + "kind": "Unit", + "name": "VideoModeNext" + }, + { + "kind": "Unit", + "name": "Wink" + }, + { + "kind": "Unit", + "name": "ZoomToggle" + }, + { + "kind": "Unit", + "name": "F1" + }, + { + "kind": "Unit", + "name": "F2" + }, + { + "kind": "Unit", + "name": "F3" + }, + { + "kind": "Unit", + "name": "F4" + }, + { + "kind": "Unit", + "name": "F5" + }, + { + "kind": "Unit", + "name": "F6" + }, + { + "kind": "Unit", + "name": "F7" + }, + { + "kind": "Unit", + "name": "F8" + }, + { + "kind": "Unit", + "name": "F9" + }, + { + "kind": "Unit", + "name": "F10" + }, + { + "kind": "Unit", + "name": "F11" + }, + { + "kind": "Unit", + "name": "F12" + }, + { + "kind": "Unit", + "name": "F13" + }, + { + "kind": "Unit", + "name": "F14" + }, + { + "kind": "Unit", + "name": "F15" + }, + { + "kind": "Unit", + "name": "F16" + }, + { + "kind": "Unit", + "name": "F17" + }, + { + "kind": "Unit", + "name": "F18" + }, + { + "kind": "Unit", + "name": "F19" + }, + { + "kind": "Unit", + "name": "F20" + }, + { + "kind": "Unit", + "name": "F21" + }, + { + "kind": "Unit", + "name": "F22" + }, + { + "kind": "Unit", + "name": "F23" + }, + { + "kind": "Unit", + "name": "F24" + }, + { + "kind": "Unit", + "name": "F25" + }, + { + "kind": "Unit", + "name": "F26" + }, + { + "kind": "Unit", + "name": "F27" + }, + { + "kind": "Unit", + "name": "F28" + }, + { + "kind": "Unit", + "name": "F29" + }, + { + "kind": "Unit", + "name": "F30" + }, + { + "kind": "Unit", + "name": "F31" + }, + { + "kind": "Unit", + "name": "F32" + }, + { + "kind": "Unit", + "name": "F33" + }, + { + "kind": "Unit", + "name": "F34" + }, + { + "kind": "Unit", + "name": "F35" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::keyboard::KeyCode": { + "identifier": "KeyCode", + "crate": "bevy_input", + "path": "bevy_input::keyboard::KeyCode", + "documentation": " The key code of a [`KeyboardInput`].\n\n ## Usage\n\n It is used as the generic `T` value of an [`ButtonInput`] to create a `Res>`.\n\n Code representing the location of a physical key\n This mostly conforms to the [`UI Events Specification's KeyboardEvent.code`] with a few\n exceptions:\n - The keys that the specification calls `MetaLeft` and `MetaRight` are named `SuperLeft` and\n `SuperRight` here.\n - The key that the specification calls \"Super\" is reported as `Unidentified` here.\n\n [`UI Events Specification's KeyboardEvent.code`]: https://w3c.github.io/uievents-code/#code-value-tables\n\n ## Updating\n\n The resource is updated inside of the [`keyboard_input_system`].", + "associated_functions": [ + "bevy_input::keyboard::KeyCode::assert_receiver_is_total_eq", + "bevy_input::keyboard::KeyCode::eq", + "bevy_input::keyboard::KeyCode::clone" + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "Unidentified", + "fields": [ + { + "type": { + "val": "bevy_input::keyboard::NativeKeyCode" + } + } + ] + }, + { + "kind": "Unit", + "name": "Backquote" + }, + { + "kind": "Unit", + "name": "Backslash" + }, + { + "kind": "Unit", + "name": "BracketLeft" + }, + { + "kind": "Unit", + "name": "BracketRight" + }, + { + "kind": "Unit", + "name": "Comma" + }, + { + "kind": "Unit", + "name": "Digit0" + }, + { + "kind": "Unit", + "name": "Digit1" + }, + { + "kind": "Unit", + "name": "Digit2" + }, + { + "kind": "Unit", + "name": "Digit3" + }, + { + "kind": "Unit", + "name": "Digit4" + }, + { + "kind": "Unit", + "name": "Digit5" + }, + { + "kind": "Unit", + "name": "Digit6" + }, + { + "kind": "Unit", + "name": "Digit7" + }, + { + "kind": "Unit", + "name": "Digit8" + }, + { + "kind": "Unit", + "name": "Digit9" + }, + { + "kind": "Unit", + "name": "Equal" + }, + { + "kind": "Unit", + "name": "IntlBackslash" + }, + { + "kind": "Unit", + "name": "IntlRo" + }, + { + "kind": "Unit", + "name": "IntlYen" + }, + { + "kind": "Unit", + "name": "KeyA" + }, + { + "kind": "Unit", + "name": "KeyB" + }, + { + "kind": "Unit", + "name": "KeyC" + }, + { + "kind": "Unit", + "name": "KeyD" + }, + { + "kind": "Unit", + "name": "KeyE" + }, + { + "kind": "Unit", + "name": "KeyF" + }, + { + "kind": "Unit", + "name": "KeyG" + }, + { + "kind": "Unit", + "name": "KeyH" + }, + { + "kind": "Unit", + "name": "KeyI" + }, + { + "kind": "Unit", + "name": "KeyJ" + }, + { + "kind": "Unit", + "name": "KeyK" + }, + { + "kind": "Unit", + "name": "KeyL" + }, + { + "kind": "Unit", + "name": "KeyM" + }, + { + "kind": "Unit", + "name": "KeyN" + }, + { + "kind": "Unit", + "name": "KeyO" + }, + { + "kind": "Unit", + "name": "KeyP" + }, + { + "kind": "Unit", + "name": "KeyQ" + }, + { + "kind": "Unit", + "name": "KeyR" + }, + { + "kind": "Unit", + "name": "KeyS" + }, + { + "kind": "Unit", + "name": "KeyT" + }, + { + "kind": "Unit", + "name": "KeyU" + }, + { + "kind": "Unit", + "name": "KeyV" + }, + { + "kind": "Unit", + "name": "KeyW" + }, + { + "kind": "Unit", + "name": "KeyX" + }, + { + "kind": "Unit", + "name": "KeyY" + }, + { + "kind": "Unit", + "name": "KeyZ" + }, + { + "kind": "Unit", + "name": "Minus" + }, + { + "kind": "Unit", + "name": "Period" + }, + { + "kind": "Unit", + "name": "Quote" + }, + { + "kind": "Unit", + "name": "Semicolon" + }, + { + "kind": "Unit", + "name": "Slash" + }, + { + "kind": "Unit", + "name": "AltLeft" + }, + { + "kind": "Unit", + "name": "AltRight" + }, + { + "kind": "Unit", + "name": "Backspace" + }, + { + "kind": "Unit", + "name": "CapsLock" + }, + { + "kind": "Unit", + "name": "ContextMenu" + }, + { + "kind": "Unit", + "name": "ControlLeft" + }, + { + "kind": "Unit", + "name": "ControlRight" + }, + { + "kind": "Unit", + "name": "Enter" + }, + { + "kind": "Unit", + "name": "SuperLeft" + }, + { + "kind": "Unit", + "name": "SuperRight" + }, + { + "kind": "Unit", + "name": "ShiftLeft" + }, + { + "kind": "Unit", + "name": "ShiftRight" + }, + { + "kind": "Unit", + "name": "Space" + }, + { + "kind": "Unit", + "name": "Tab" + }, + { + "kind": "Unit", + "name": "Convert" + }, + { + "kind": "Unit", + "name": "KanaMode" + }, + { + "kind": "Unit", + "name": "Lang1" + }, + { + "kind": "Unit", + "name": "Lang2" + }, + { + "kind": "Unit", + "name": "Lang3" + }, + { + "kind": "Unit", + "name": "Lang4" + }, + { + "kind": "Unit", + "name": "Lang5" + }, + { + "kind": "Unit", + "name": "NonConvert" + }, + { + "kind": "Unit", + "name": "Delete" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "Help" + }, + { + "kind": "Unit", + "name": "Home" + }, + { + "kind": "Unit", + "name": "Insert" + }, + { + "kind": "Unit", + "name": "PageDown" + }, + { + "kind": "Unit", + "name": "PageUp" + }, + { + "kind": "Unit", + "name": "ArrowDown" + }, + { + "kind": "Unit", + "name": "ArrowLeft" + }, + { + "kind": "Unit", + "name": "ArrowRight" + }, + { + "kind": "Unit", + "name": "ArrowUp" + }, + { + "kind": "Unit", + "name": "NumLock" + }, + { + "kind": "Unit", + "name": "Numpad0" + }, + { + "kind": "Unit", + "name": "Numpad1" + }, + { + "kind": "Unit", + "name": "Numpad2" + }, + { + "kind": "Unit", + "name": "Numpad3" + }, + { + "kind": "Unit", + "name": "Numpad4" + }, + { + "kind": "Unit", + "name": "Numpad5" + }, + { + "kind": "Unit", + "name": "Numpad6" + }, + { + "kind": "Unit", + "name": "Numpad7" + }, + { + "kind": "Unit", + "name": "Numpad8" + }, + { + "kind": "Unit", + "name": "Numpad9" + }, + { + "kind": "Unit", + "name": "NumpadAdd" + }, + { + "kind": "Unit", + "name": "NumpadBackspace" + }, + { + "kind": "Unit", + "name": "NumpadClear" + }, + { + "kind": "Unit", + "name": "NumpadClearEntry" + }, + { + "kind": "Unit", + "name": "NumpadComma" + }, + { + "kind": "Unit", + "name": "NumpadDecimal" + }, + { + "kind": "Unit", + "name": "NumpadDivide" + }, + { + "kind": "Unit", + "name": "NumpadEnter" + }, + { + "kind": "Unit", + "name": "NumpadEqual" + }, + { + "kind": "Unit", + "name": "NumpadHash" + }, + { + "kind": "Unit", + "name": "NumpadMemoryAdd" + }, + { + "kind": "Unit", + "name": "NumpadMemoryClear" + }, + { + "kind": "Unit", + "name": "NumpadMemoryRecall" + }, + { + "kind": "Unit", + "name": "NumpadMemoryStore" + }, + { + "kind": "Unit", + "name": "NumpadMemorySubtract" + }, + { + "kind": "Unit", + "name": "NumpadMultiply" + }, + { + "kind": "Unit", + "name": "NumpadParenLeft" + }, + { + "kind": "Unit", + "name": "NumpadParenRight" + }, + { + "kind": "Unit", + "name": "NumpadStar" + }, + { + "kind": "Unit", + "name": "NumpadSubtract" + }, + { + "kind": "Unit", + "name": "Escape" + }, + { + "kind": "Unit", + "name": "Fn" + }, + { + "kind": "Unit", + "name": "FnLock" + }, + { + "kind": "Unit", + "name": "PrintScreen" + }, + { + "kind": "Unit", + "name": "ScrollLock" + }, + { + "kind": "Unit", + "name": "Pause" + }, + { + "kind": "Unit", + "name": "BrowserBack" + }, + { + "kind": "Unit", + "name": "BrowserFavorites" + }, + { + "kind": "Unit", + "name": "BrowserForward" + }, + { + "kind": "Unit", + "name": "BrowserHome" + }, + { + "kind": "Unit", + "name": "BrowserRefresh" + }, + { + "kind": "Unit", + "name": "BrowserSearch" + }, + { + "kind": "Unit", + "name": "BrowserStop" + }, + { + "kind": "Unit", + "name": "Eject" + }, + { + "kind": "Unit", + "name": "LaunchApp1" + }, + { + "kind": "Unit", + "name": "LaunchApp2" + }, + { + "kind": "Unit", + "name": "LaunchMail" + }, + { + "kind": "Unit", + "name": "MediaPlayPause" + }, + { + "kind": "Unit", + "name": "MediaSelect" + }, + { + "kind": "Unit", + "name": "MediaStop" + }, + { + "kind": "Unit", + "name": "MediaTrackNext" + }, + { + "kind": "Unit", + "name": "MediaTrackPrevious" + }, + { + "kind": "Unit", + "name": "Power" + }, + { + "kind": "Unit", + "name": "Sleep" + }, + { + "kind": "Unit", + "name": "AudioVolumeDown" + }, + { + "kind": "Unit", + "name": "AudioVolumeMute" + }, + { + "kind": "Unit", + "name": "AudioVolumeUp" + }, + { + "kind": "Unit", + "name": "WakeUp" + }, + { + "kind": "Unit", + "name": "Meta" + }, + { + "kind": "Unit", + "name": "Hyper" + }, + { + "kind": "Unit", + "name": "Turbo" + }, + { + "kind": "Unit", + "name": "Abort" + }, + { + "kind": "Unit", + "name": "Resume" + }, + { + "kind": "Unit", + "name": "Suspend" + }, + { + "kind": "Unit", + "name": "Again" + }, + { + "kind": "Unit", + "name": "Copy" + }, + { + "kind": "Unit", + "name": "Cut" + }, + { + "kind": "Unit", + "name": "Find" + }, + { + "kind": "Unit", + "name": "Open" + }, + { + "kind": "Unit", + "name": "Paste" + }, + { + "kind": "Unit", + "name": "Props" + }, + { + "kind": "Unit", + "name": "Select" + }, + { + "kind": "Unit", + "name": "Undo" + }, + { + "kind": "Unit", + "name": "Hiragana" + }, + { + "kind": "Unit", + "name": "Katakana" + }, + { + "kind": "Unit", + "name": "F1" + }, + { + "kind": "Unit", + "name": "F2" + }, + { + "kind": "Unit", + "name": "F3" + }, + { + "kind": "Unit", + "name": "F4" + }, + { + "kind": "Unit", + "name": "F5" + }, + { + "kind": "Unit", + "name": "F6" + }, + { + "kind": "Unit", + "name": "F7" + }, + { + "kind": "Unit", + "name": "F8" + }, + { + "kind": "Unit", + "name": "F9" + }, + { + "kind": "Unit", + "name": "F10" + }, + { + "kind": "Unit", + "name": "F11" + }, + { + "kind": "Unit", + "name": "F12" + }, + { + "kind": "Unit", + "name": "F13" + }, + { + "kind": "Unit", + "name": "F14" + }, + { + "kind": "Unit", + "name": "F15" + }, + { + "kind": "Unit", + "name": "F16" + }, + { + "kind": "Unit", + "name": "F17" + }, + { + "kind": "Unit", + "name": "F18" + }, + { + "kind": "Unit", + "name": "F19" + }, + { + "kind": "Unit", + "name": "F20" + }, + { + "kind": "Unit", + "name": "F21" + }, + { + "kind": "Unit", + "name": "F22" + }, + { + "kind": "Unit", + "name": "F23" + }, + { + "kind": "Unit", + "name": "F24" + }, + { + "kind": "Unit", + "name": "F25" + }, + { + "kind": "Unit", + "name": "F26" + }, + { + "kind": "Unit", + "name": "F27" + }, + { + "kind": "Unit", + "name": "F28" + }, + { + "kind": "Unit", + "name": "F29" + }, + { + "kind": "Unit", + "name": "F30" + }, + { + "kind": "Unit", + "name": "F31" + }, + { + "kind": "Unit", + "name": "F32" + }, + { + "kind": "Unit", + "name": "F33" + }, + { + "kind": "Unit", + "name": "F34" + }, + { + "kind": "Unit", + "name": "F35" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::keyboard::KeyboardFocusLost": { + "identifier": "KeyboardFocusLost", + "crate": "bevy_input", + "path": "bevy_input::keyboard::KeyboardFocusLost", + "documentation": " Gets generated from `bevy_winit::winit_runner`\n\n Used for clearing all cached states to avoid having 'stuck' key presses\n when, for example, switching between windows with 'Alt-Tab' or using any other\n OS specific key combination that leads to Bevy window losing focus and not receiving any\n input events", + "associated_functions": [ + "bevy_input::keyboard::KeyboardFocusLost::assert_receiver_is_total_eq", + "bevy_input::keyboard::KeyboardFocusLost::eq", + "bevy_input::keyboard::KeyboardFocusLost::clone" + ], + "layout": { + "kind": "Struct", + "name": "KeyboardFocusLost" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::keyboard::KeyboardInput": { + "identifier": "KeyboardInput", + "crate": "bevy_input", + "path": "bevy_input::keyboard::KeyboardInput", + "documentation": " A keyboard input event.\n\n This event is the translated version of the `WindowEvent::KeyboardInput` from the `winit` crate.\n It is available to the end user and can be used for game logic.\n\n ## Usage\n\n The event is consumed inside of the [`keyboard_input_system`] to update the\n [`ButtonInput`](ButtonInput) and\n [`ButtonInput`](ButtonInput) resources.", + "associated_functions": [ + "bevy_input::keyboard::KeyboardInput::clone", + "bevy_input::keyboard::KeyboardInput::assert_receiver_is_total_eq", + "bevy_input::keyboard::KeyboardInput::eq" + ], + "layout": { + "kind": "Struct", + "name": "KeyboardInput", + "fields": [ + { + "name": "key_code", + "type": { + "val": "bevy_input::keyboard::KeyCode" + } + }, + { + "name": "logical_key", + "type": { + "val": "bevy_input::keyboard::Key" + } + }, + { + "name": "state", + "type": { + "val": "bevy_input::ButtonState" + } + }, + { + "name": "text", + "type": { + "option": { + "val": "smol_str::SmolStr" + } + } + }, + { + "name": "repeat", + "type": { + "primitive": "bool" + } + }, + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::keyboard::NativeKey": { + "identifier": "NativeKey", + "crate": "bevy_input", + "path": "bevy_input::keyboard::NativeKey", + "documentation": " Contains the platform-native logical key identifier, known as keysym.\n\n Exactly what that means differs from platform to platform, but the values are to some degree\n tied to the currently active keyboard layout. The same key on the same keyboard may also report\n different values on different platforms, which is one of the reasons this is a per-platform\n enum.\n\n This enum is primarily used to store raw keysym when Winit doesn't map a given native logical\n key identifier to a meaningful [`Key`] variant. This lets you use [`Key`], and let the user\n define keybinds which work in the presence of identifiers we haven't mapped for you yet.", + "associated_functions": [ + "bevy_input::keyboard::NativeKey::assert_receiver_is_total_eq", + "bevy_input::keyboard::NativeKey::clone", + "bevy_input::keyboard::NativeKey::eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "Unidentified" + }, + { + "kind": "TupleStruct", + "name": "Android", + "fields": [ + { + "type": { + "primitive": "u32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "MacOS", + "fields": [ + { + "type": { + "primitive": "u16" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Windows", + "fields": [ + { + "type": { + "primitive": "u16" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Xkb", + "fields": [ + { + "type": { + "primitive": "u32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Web", + "fields": [ + { + "type": { + "val": "smol_str::SmolStr" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::keyboard::NativeKeyCode": { + "identifier": "NativeKeyCode", + "crate": "bevy_input", + "path": "bevy_input::keyboard::NativeKeyCode", + "documentation": " Contains the platform-native physical key identifier\n\n The exact values vary from platform to platform (which is part of why this is a per-platform\n enum), but the values are primarily tied to the key's physical location on the keyboard.\n\n This enum is primarily used to store raw keycodes when Winit doesn't map a given native\n physical key identifier to a meaningful [`KeyCode`] variant. In the presence of identifiers we\n haven't mapped for you yet, this lets you use [`KeyCode`] to:\n\n - Correctly match key press and release events.\n - On non-web platforms, support assigning keybinds to virtually any key through a UI.", + "associated_functions": [ + "bevy_input::keyboard::NativeKeyCode::assert_receiver_is_total_eq", + "bevy_input::keyboard::NativeKeyCode::clone", + "bevy_input::keyboard::NativeKeyCode::eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "Unidentified" + }, + { + "kind": "TupleStruct", + "name": "Android", + "fields": [ + { + "type": { + "primitive": "u32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "MacOS", + "fields": [ + { + "type": { + "primitive": "u16" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Windows", + "fields": [ + { + "type": { + "primitive": "u16" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Xkb", + "fields": [ + { + "type": { + "primitive": "u32" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::mouse::AccumulatedMouseMotion": { + "identifier": "AccumulatedMouseMotion", + "crate": "bevy_input", + "path": "bevy_input::mouse::AccumulatedMouseMotion", + "documentation": " Tracks how much the mouse has moved every frame.\n\n This resource is reset to zero every frame.\n\n This resource sums the total [`MouseMotion`] events received this frame.", + "associated_functions": [ + "bevy_input::mouse::AccumulatedMouseMotion::clone", + "bevy_input::mouse::AccumulatedMouseMotion::eq" + ], + "layout": { + "kind": "Struct", + "name": "AccumulatedMouseMotion", + "fields": [ + { + "name": "delta", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::mouse::AccumulatedMouseScroll": { + "identifier": "AccumulatedMouseScroll", + "crate": "bevy_input", + "path": "bevy_input::mouse::AccumulatedMouseScroll", + "documentation": " Tracks how much the mouse has scrolled every frame.\n\n This resource is reset to zero every frame.\n\n This resource sums the total [`MouseWheel`] events received this frame.", + "associated_functions": [ + "bevy_input::mouse::AccumulatedMouseScroll::clone", + "bevy_input::mouse::AccumulatedMouseScroll::eq" + ], + "layout": { + "kind": "Struct", + "name": "AccumulatedMouseScroll", + "fields": [ + { + "name": "unit", + "type": { + "val": "bevy_input::mouse::MouseScrollUnit" + } + }, + { + "name": "delta", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::mouse::MouseButton": { + "identifier": "MouseButton", + "crate": "bevy_input", + "path": "bevy_input::mouse::MouseButton", + "documentation": " A button on a mouse device.\n\n ## Usage\n\n It is used as the generic `T` value of an [`ButtonInput`] to create a `bevy`\n resource.\n\n ## Updating\n\n The resource is updated inside of the [`mouse_button_input_system`].", + "associated_functions": [ + "bevy_input::mouse::MouseButton::eq", + "bevy_input::mouse::MouseButton::clone", + "bevy_input::mouse::MouseButton::assert_receiver_is_total_eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "Left" + }, + { + "kind": "Unit", + "name": "Right" + }, + { + "kind": "Unit", + "name": "Middle" + }, + { + "kind": "Unit", + "name": "Back" + }, + { + "kind": "Unit", + "name": "Forward" + }, + { + "kind": "TupleStruct", + "name": "Other", + "fields": [ + { + "type": { + "primitive": "u16" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::mouse::MouseButtonInput": { + "identifier": "MouseButtonInput", + "crate": "bevy_input", + "path": "bevy_input::mouse::MouseButtonInput", + "documentation": " A mouse button input event.\n\n This event is the translated version of the `WindowEvent::MouseInput` from the `winit` crate.\n\n ## Usage\n\n The event is read inside of the [`mouse_button_input_system`]\n to update the [`ButtonInput`] resource.", + "associated_functions": [ + "bevy_input::mouse::MouseButtonInput::clone", + "bevy_input::mouse::MouseButtonInput::eq", + "bevy_input::mouse::MouseButtonInput::assert_receiver_is_total_eq" + ], + "layout": { + "kind": "Struct", + "name": "MouseButtonInput", + "fields": [ + { + "name": "button", + "type": { + "val": "bevy_input::mouse::MouseButton" + } + }, + { + "name": "state", + "type": { + "val": "bevy_input::ButtonState" + } + }, + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::mouse::MouseMotion": { + "identifier": "MouseMotion", + "crate": "bevy_input", + "path": "bevy_input::mouse::MouseMotion", + "documentation": " An event reporting the change in physical position of a pointing device.\n\n This represents raw, unfiltered physical motion.\n It is the translated version of [`DeviceEvent::MouseMotion`] from the `winit` crate.\n\n All pointing devices connected to a single machine at the same time can emit the event independently.\n However, the event data does not make it possible to distinguish which device it is referring to.\n\n [`DeviceEvent::MouseMotion`]: https://docs.rs/winit/latest/winit/event/enum.DeviceEvent.html#variant.MouseMotion", + "associated_functions": [ + "bevy_input::mouse::MouseMotion::clone", + "bevy_input::mouse::MouseMotion::eq" + ], + "layout": { + "kind": "Struct", + "name": "MouseMotion", + "fields": [ + { + "name": "delta", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::mouse::MouseScrollUnit": { + "identifier": "MouseScrollUnit", + "crate": "bevy_input", + "path": "bevy_input::mouse::MouseScrollUnit", + "documentation": " The scroll unit.\n\n Describes how a value of a [`MouseWheel`] event has to be interpreted.\n\n The value of the event can either be interpreted as the amount of lines or the amount of pixels\n to scroll.", + "associated_functions": [ + "bevy_input::mouse::MouseScrollUnit::assert_receiver_is_total_eq", + "bevy_input::mouse::MouseScrollUnit::eq", + "bevy_input::mouse::MouseScrollUnit::clone" + ], + "layout": [ + { + "kind": "Unit", + "name": "Line" + }, + { + "kind": "Unit", + "name": "Pixel" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::mouse::MouseWheel": { + "identifier": "MouseWheel", + "crate": "bevy_input", + "path": "bevy_input::mouse::MouseWheel", + "documentation": " A mouse wheel event.\n\n This event is the translated version of the `WindowEvent::MouseWheel` from the `winit` crate.", + "associated_functions": [ + "bevy_input::mouse::MouseWheel::clone", + "bevy_input::mouse::MouseWheel::eq" + ], + "layout": { + "kind": "Struct", + "name": "MouseWheel", + "fields": [ + { + "name": "unit", + "type": { + "val": "bevy_input::mouse::MouseScrollUnit" + } + }, + { + "name": "x", + "type": { + "primitive": "f32" + } + }, + { + "name": "y", + "type": { + "primitive": "f32" + } + }, + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::touch::ForceTouch": { + "identifier": "ForceTouch", + "crate": "bevy_input", + "path": "bevy_input::touch::ForceTouch", + "documentation": " A force description of a [`Touch`] input.", + "associated_functions": [ + "bevy_input::touch::ForceTouch::clone", + "bevy_input::touch::ForceTouch::eq" + ], + "layout": [ + { + "kind": "Struct", + "name": "Calibrated", + "fields": [ + { + "name": "force", + "type": { + "primitive": "f64" + } + }, + { + "name": "max_possible_force", + "type": { + "primitive": "f64" + } + }, + { + "name": "altitude_angle", + "type": { + "option": { + "primitive": "f64" + } + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Normalized", + "fields": [ + { + "type": { + "primitive": "f64" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::touch::TouchInput": { + "identifier": "TouchInput", + "crate": "bevy_input", + "path": "bevy_input::touch::TouchInput", + "documentation": " A touch input event.\n\n ## Logic\n\n Every time the user touches the screen, a new [`TouchPhase::Started`] event with an unique\n identifier for the finger is generated. When the finger is lifted, the [`TouchPhase::Ended`]\n event is generated with the same finger id.\n\n After a [`TouchPhase::Started`] event has been emitted, there may be zero or more [`TouchPhase::Moved`]\n events when the finger is moved or the touch pressure changes.\n\n The finger id may be reused by the system after an [`TouchPhase::Ended`] event. The user\n should assume that a new [`TouchPhase::Started`] event received with the same id has nothing\n to do with the old finger and is a new finger.\n\n A [`TouchPhase::Canceled`] event is emitted when the system has canceled tracking this\n touch, such as when the window loses focus, or on iOS if the user moves the\n device against their face.\n\n ## Note\n\n This event is the translated version of the `WindowEvent::Touch` from the `winit` crate.\n It is available to the end user and can be used for game logic.", + "associated_functions": [ + "bevy_input::touch::TouchInput::clone", + "bevy_input::touch::TouchInput::eq" + ], + "layout": { + "kind": "Struct", + "name": "TouchInput", + "fields": [ + { + "name": "phase", + "type": { + "val": "bevy_input::touch::TouchPhase" + } + }, + { + "name": "position", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "force", + "type": { + "option": { + "val": "bevy_input::touch::ForceTouch" + } + } + }, + { + "name": "id", + "type": { + "primitive": "u64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::touch::TouchPhase": { + "identifier": "TouchPhase", + "crate": "bevy_input", + "path": "bevy_input::touch::TouchPhase", + "documentation": " A phase of a [`TouchInput`].\n\n ## Usage\n\n It is used to describe the phase of the touch input that is currently active.\n This includes a phase that indicates that a touch input has started or ended,\n or that a finger has moved. There is also a canceled phase that indicates that\n the system canceled the tracking of the finger.", + "associated_functions": [ + "bevy_input::touch::TouchPhase::clone", + "bevy_input::touch::TouchPhase::eq", + "bevy_input::touch::TouchPhase::assert_receiver_is_total_eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "Started" + }, + { + "kind": "Unit", + "name": "Moved" + }, + { + "kind": "Unit", + "name": "Ended" + }, + { + "kind": "Unit", + "name": "Canceled" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::aspect_ratio::AspectRatio": { + "identifier": "AspectRatio", + "crate": "bevy_math", + "path": "bevy_math::aspect_ratio::AspectRatio", + "documentation": " An `AspectRatio` is the ratio of width to height.", + "associated_functions": [ + "bevy_math::aspect_ratio::AspectRatio::ratio", + "bevy_math::aspect_ratio::AspectRatio::clone", + "bevy_math::aspect_ratio::AspectRatio::inverse", + "bevy_math::aspect_ratio::AspectRatio::is_portrait", + "bevy_math::aspect_ratio::AspectRatio::is_square", + "bevy_math::aspect_ratio::AspectRatio::is_landscape", + "bevy_math::aspect_ratio::AspectRatio::eq" + ], + "layout": { + "kind": "TupleStruct", + "name": "AspectRatio", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::bounded2d::Aabb2d": { + "identifier": "Aabb2d", + "crate": "bevy_math", + "path": "bevy_math::bounding::bounded2d::Aabb2d", + "documentation": " A 2D axis-aligned bounding box, or bounding rectangle", + "associated_functions": [ + "bevy_math::bounding::bounded2d::Aabb2d::eq", + "bevy_math::bounding::bounded2d::Aabb2d::clone", + "bevy_math::bounding::bounded2d::Aabb2d::new", + "bevy_math::bounding::bounded2d::Aabb2d::closest_point", + "bevy_math::bounding::bounded2d::Aabb2d::bounding_circle" + ], + "layout": { + "kind": "Struct", + "name": "Aabb2d", + "fields": [ + { + "name": "min", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "max", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::bounded2d::BoundingCircle": { + "identifier": "BoundingCircle", + "crate": "bevy_math", + "path": "bevy_math::bounding::bounded2d::BoundingCircle", + "documentation": " A bounding circle", + "associated_functions": [ + "bevy_math::bounding::bounded2d::BoundingCircle::radius", + "bevy_math::bounding::bounded2d::BoundingCircle::aabb_2d", + "bevy_math::bounding::bounded2d::BoundingCircle::clone", + "bevy_math::bounding::bounded2d::BoundingCircle::new", + "bevy_math::bounding::bounded2d::BoundingCircle::eq", + "bevy_math::bounding::bounded2d::BoundingCircle::closest_point" + ], + "layout": { + "kind": "Struct", + "name": "BoundingCircle", + "fields": [ + { + "name": "center", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "circle", + "type": { + "val": "bevy_math::primitives::dim2::Circle" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::bounded3d::Aabb3d": { + "identifier": "Aabb3d", + "crate": "bevy_math", + "path": "bevy_math::bounding::bounded3d::Aabb3d", + "documentation": " A 3D axis-aligned bounding box", + "associated_functions": [ + "bevy_math::bounding::bounded3d::Aabb3d::clone", + "bevy_math::bounding::bounded3d::Aabb3d::bounding_sphere", + "bevy_math::bounding::bounded3d::Aabb3d::eq" + ], + "layout": { + "kind": "Struct", + "name": "Aabb3d", + "fields": [ + { + "name": "min", + "type": { + "val": "glam::Vec3A" + } + }, + { + "name": "max", + "type": { + "val": "glam::Vec3A" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::bounded3d::BoundingSphere": { + "identifier": "BoundingSphere", + "crate": "bevy_math", + "path": "bevy_math::bounding::bounded3d::BoundingSphere", + "documentation": " A bounding sphere", + "associated_functions": [ + "bevy_math::bounding::bounded3d::BoundingSphere::eq", + "bevy_math::bounding::bounded3d::BoundingSphere::aabb_3d", + "bevy_math::bounding::bounded3d::BoundingSphere::clone", + "bevy_math::bounding::bounded3d::BoundingSphere::radius" + ], + "layout": { + "kind": "Struct", + "name": "BoundingSphere", + "fields": [ + { + "name": "center", + "type": { + "val": "glam::Vec3A" + } + }, + { + "name": "sphere", + "type": { + "val": "bevy_math::primitives::dim3::Sphere" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::raycast2d::AabbCast2d": { + "identifier": "AabbCast2d", + "crate": "bevy_math", + "path": "bevy_math::bounding::raycast2d::AabbCast2d", + "documentation": " An intersection test that casts an [`Aabb2d`] along a ray.", + "associated_functions": [ + "bevy_math::bounding::raycast2d::AabbCast2d::new", + "bevy_math::bounding::raycast2d::AabbCast2d::aabb_collision_at", + "bevy_math::bounding::raycast2d::AabbCast2d::from_ray", + "bevy_math::bounding::raycast2d::AabbCast2d::clone" + ], + "layout": { + "kind": "Struct", + "name": "AabbCast2d", + "fields": [ + { + "name": "ray", + "type": { + "val": "bevy_math::bounding::raycast2d::RayCast2d" + } + }, + { + "name": "aabb", + "type": { + "val": "bevy_math::bounding::bounded2d::Aabb2d" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::raycast2d::BoundingCircleCast": { + "identifier": "BoundingCircleCast", + "crate": "bevy_math", + "path": "bevy_math::bounding::raycast2d::BoundingCircleCast", + "documentation": " An intersection test that casts a [`BoundingCircle`] along a ray.", + "associated_functions": [ + "bevy_math::bounding::raycast2d::BoundingCircleCast::circle_collision_at", + "bevy_math::bounding::raycast2d::BoundingCircleCast::clone", + "bevy_math::bounding::raycast2d::BoundingCircleCast::new", + "bevy_math::bounding::raycast2d::BoundingCircleCast::from_ray" + ], + "layout": { + "kind": "Struct", + "name": "BoundingCircleCast", + "fields": [ + { + "name": "ray", + "type": { + "val": "bevy_math::bounding::raycast2d::RayCast2d" + } + }, + { + "name": "circle", + "type": { + "val": "bevy_math::bounding::bounded2d::BoundingCircle" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::raycast2d::RayCast2d": { + "identifier": "RayCast2d", + "crate": "bevy_math", + "path": "bevy_math::bounding::raycast2d::RayCast2d", + "documentation": " A raycast intersection test for 2D bounding volumes", + "associated_functions": [ + "bevy_math::bounding::raycast2d::RayCast2d::from_ray", + "bevy_math::bounding::raycast2d::RayCast2d::clone", + "bevy_math::bounding::raycast2d::RayCast2d::circle_intersection_at", + "bevy_math::bounding::raycast2d::RayCast2d::direction_recip", + "bevy_math::bounding::raycast2d::RayCast2d::aabb_intersection_at", + "bevy_math::bounding::raycast2d::RayCast2d::new" + ], + "layout": { + "kind": "Struct", + "name": "RayCast2d", + "fields": [ + { + "name": "ray", + "type": { + "val": "bevy_math::ray::Ray2d" + } + }, + { + "name": "max", + "type": { + "primitive": "f32" + } + }, + { + "name": "direction_recip", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::raycast3d::AabbCast3d": { + "identifier": "AabbCast3d", + "crate": "bevy_math", + "path": "bevy_math::bounding::raycast3d::AabbCast3d", + "documentation": " An intersection test that casts an [`Aabb3d`] along a ray.", + "associated_functions": [ + "bevy_math::bounding::raycast3d::AabbCast3d::from_ray", + "bevy_math::bounding::raycast3d::AabbCast3d::aabb_collision_at", + "bevy_math::bounding::raycast3d::AabbCast3d::clone" + ], + "layout": { + "kind": "Struct", + "name": "AabbCast3d", + "fields": [ + { + "name": "ray", + "type": { + "val": "bevy_math::bounding::raycast3d::RayCast3d" + } + }, + { + "name": "aabb", + "type": { + "val": "bevy_math::bounding::bounded3d::Aabb3d" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::raycast3d::BoundingSphereCast": { + "identifier": "BoundingSphereCast", + "crate": "bevy_math", + "path": "bevy_math::bounding::raycast3d::BoundingSphereCast", + "documentation": " An intersection test that casts a [`BoundingSphere`] along a ray.", + "associated_functions": [ + "bevy_math::bounding::raycast3d::BoundingSphereCast::sphere_collision_at", + "bevy_math::bounding::raycast3d::BoundingSphereCast::from_ray", + "bevy_math::bounding::raycast3d::BoundingSphereCast::clone" + ], + "layout": { + "kind": "Struct", + "name": "BoundingSphereCast", + "fields": [ + { + "name": "ray", + "type": { + "val": "bevy_math::bounding::raycast3d::RayCast3d" + } + }, + { + "name": "sphere", + "type": { + "val": "bevy_math::bounding::bounded3d::BoundingSphere" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::bounding::raycast3d::RayCast3d": { + "identifier": "RayCast3d", + "crate": "bevy_math", + "path": "bevy_math::bounding::raycast3d::RayCast3d", + "documentation": " A raycast intersection test for 3D bounding volumes", + "associated_functions": [ + "bevy_math::bounding::raycast3d::RayCast3d::from_ray", + "bevy_math::bounding::raycast3d::RayCast3d::aabb_intersection_at", + "bevy_math::bounding::raycast3d::RayCast3d::sphere_intersection_at", + "bevy_math::bounding::raycast3d::RayCast3d::direction_recip", + "bevy_math::bounding::raycast3d::RayCast3d::clone" + ], + "layout": { + "kind": "Struct", + "name": "RayCast3d", + "fields": [ + { + "name": "origin", + "type": { + "val": "glam::Vec3A" + } + }, + { + "name": "direction", + "type": { + "val": "bevy_math::direction::Dir3A" + } + }, + { + "name": "max", + "type": { + "primitive": "f32" + } + }, + { + "name": "direction_recip", + "type": { + "val": "glam::Vec3A" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::compass::CompassOctant": { + "identifier": "CompassOctant", + "crate": "bevy_math", + "path": "bevy_math::compass::CompassOctant", + "documentation": " A compass enum with 8 directions.\n ```text\n N (North)\n ▲\n NW │ NE\n ╲ │ ╱\n W (West) ┼─────► E (East)\n ╱ │ ╲\n SW │ SE\n ▼\n S (South)\n ```", + "associated_functions": [ + "bevy_math::compass::CompassOctant::assert_receiver_is_total_eq", + "bevy_math::compass::CompassOctant::eq", + "bevy_math::compass::CompassOctant::clone", + "bevy_math::compass::CompassOctant::is_in_direction", + "bevy_math::compass::CompassOctant::neg", + "bevy_math::compass::CompassOctant::to_index", + "bevy_math::compass::CompassOctant::opposite" + ], + "layout": [ + { + "kind": "Unit", + "name": "North" + }, + { + "kind": "Unit", + "name": "NorthEast" + }, + { + "kind": "Unit", + "name": "East" + }, + { + "kind": "Unit", + "name": "SouthEast" + }, + { + "kind": "Unit", + "name": "South" + }, + { + "kind": "Unit", + "name": "SouthWest" + }, + { + "kind": "Unit", + "name": "West" + }, + { + "kind": "Unit", + "name": "NorthWest" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::compass::CompassQuadrant": { + "identifier": "CompassQuadrant", + "crate": "bevy_math", + "path": "bevy_math::compass::CompassQuadrant", + "documentation": " A compass enum with 4 directions.\n ```text\n N (North)\n ▲\n │\n │\n W (West) ┼─────► E (East)\n │\n │\n ▼\n S (South)\n ```", + "associated_functions": [ + "bevy_math::compass::CompassQuadrant::opposite", + "bevy_math::compass::CompassQuadrant::is_in_direction", + "bevy_math::compass::CompassQuadrant::neg", + "bevy_math::compass::CompassQuadrant::eq", + "bevy_math::compass::CompassQuadrant::assert_receiver_is_total_eq", + "bevy_math::compass::CompassQuadrant::to_index", + "bevy_math::compass::CompassQuadrant::clone" + ], + "layout": [ + { + "kind": "Unit", + "name": "North" + }, + { + "kind": "Unit", + "name": "East" + }, + { + "kind": "Unit", + "name": "South" + }, + { + "kind": "Unit", + "name": "West" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::curve::easing::EaseFunction": { + "identifier": "EaseFunction", + "crate": "bevy_math", + "path": "bevy_math::curve::easing::EaseFunction", + "documentation": " Curve functions over the [unit interval], commonly used for easing transitions.\n\n `EaseFunction` can be used on its own to interpolate between `0.0` and `1.0`.\n It can also be combined with [`EasingCurve`] to interpolate between other\n intervals and types, including vectors and rotations.\n\n # Example\n\n [`sample`] the smoothstep function at various points. This will return `None`\n if the parameter is outside the unit interval.\n\n ```\n # use bevy_math::prelude::*;\n let f = EaseFunction::SmoothStep;\n\n assert_eq!(f.sample(-1.0), None);\n assert_eq!(f.sample(0.0), Some(0.0));\n assert_eq!(f.sample(0.5), Some(0.5));\n assert_eq!(f.sample(1.0), Some(1.0));\n assert_eq!(f.sample(2.0), None);\n ```\n\n [`sample_clamped`] will clamp the parameter to the unit interval, so it\n always returns a value.\n\n ```\n # use bevy_math::prelude::*;\n # let f = EaseFunction::SmoothStep;\n assert_eq!(f.sample_clamped(-1.0), 0.0);\n assert_eq!(f.sample_clamped(0.0), 0.0);\n assert_eq!(f.sample_clamped(0.5), 0.5);\n assert_eq!(f.sample_clamped(1.0), 1.0);\n assert_eq!(f.sample_clamped(2.0), 1.0);\n ```\n\n [`sample`]: EaseFunction::sample\n [`sample_clamped`]: EaseFunction::sample_clamped\n [unit interval]: `Interval::UNIT`", + "associated_functions": [ + "bevy_math::curve::easing::EaseFunction::clone", + "bevy_math::curve::easing::EaseFunction::eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "Linear" + }, + { + "kind": "Unit", + "name": "QuadraticIn" + }, + { + "kind": "Unit", + "name": "QuadraticOut" + }, + { + "kind": "Unit", + "name": "QuadraticInOut" + }, + { + "kind": "Unit", + "name": "CubicIn" + }, + { + "kind": "Unit", + "name": "CubicOut" + }, + { + "kind": "Unit", + "name": "CubicInOut" + }, + { + "kind": "Unit", + "name": "QuarticIn" + }, + { + "kind": "Unit", + "name": "QuarticOut" + }, + { + "kind": "Unit", + "name": "QuarticInOut" + }, + { + "kind": "Unit", + "name": "QuinticIn" + }, + { + "kind": "Unit", + "name": "QuinticOut" + }, + { + "kind": "Unit", + "name": "QuinticInOut" + }, + { + "kind": "Unit", + "name": "SmoothStepIn" + }, + { + "kind": "Unit", + "name": "SmoothStepOut" + }, + { + "kind": "Unit", + "name": "SmoothStep" + }, + { + "kind": "Unit", + "name": "SmootherStepIn" + }, + { + "kind": "Unit", + "name": "SmootherStepOut" + }, + { + "kind": "Unit", + "name": "SmootherStep" + }, + { + "kind": "Unit", + "name": "SineIn" + }, + { + "kind": "Unit", + "name": "SineOut" + }, + { + "kind": "Unit", + "name": "SineInOut" + }, + { + "kind": "Unit", + "name": "CircularIn" + }, + { + "kind": "Unit", + "name": "CircularOut" + }, + { + "kind": "Unit", + "name": "CircularInOut" + }, + { + "kind": "Unit", + "name": "ExponentialIn" + }, + { + "kind": "Unit", + "name": "ExponentialOut" + }, + { + "kind": "Unit", + "name": "ExponentialInOut" + }, + { + "kind": "Unit", + "name": "ElasticIn" + }, + { + "kind": "Unit", + "name": "ElasticOut" + }, + { + "kind": "Unit", + "name": "ElasticInOut" + }, + { + "kind": "Unit", + "name": "BackIn" + }, + { + "kind": "Unit", + "name": "BackOut" + }, + { + "kind": "Unit", + "name": "BackInOut" + }, + { + "kind": "Unit", + "name": "BounceIn" + }, + { + "kind": "Unit", + "name": "BounceOut" + }, + { + "kind": "Unit", + "name": "BounceInOut" + }, + { + "kind": "TupleStruct", + "name": "Steps", + "fields": [ + { + "type": { + "primitive": "usize" + } + }, + { + "type": { + "val": "bevy_math::curve::easing::JumpAt" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Elastic", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::curve::easing::JumpAt": { + "identifier": "JumpAt", + "crate": "bevy_math", + "path": "bevy_math::curve::easing::JumpAt", + "documentation": " Configuration options for the [`EaseFunction::Steps`] curves. This closely replicates the\n [CSS step function specification].\n\n [CSS step function specification]: https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function/steps#description", + "associated_functions": [ + "bevy_math::curve::easing::JumpAt::assert_receiver_is_total_eq", + "bevy_math::curve::easing::JumpAt::eq", + "bevy_math::curve::easing::JumpAt::clone" + ], + "layout": [ + { + "kind": "Unit", + "name": "Start" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "None" + }, + { + "kind": "Unit", + "name": "Both" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::curve::interval::Interval": { + "identifier": "Interval", + "crate": "bevy_math", + "path": "bevy_math::curve::interval::Interval", + "documentation": " A nonempty closed interval, possibly unbounded in either direction.\n\n In other words, the interval may stretch all the way to positive or negative infinity, but it\n will always have some nonempty interior.", + "associated_functions": [ + "bevy_math::curve::interval::Interval::has_finite_start", + "bevy_math::curve::interval::Interval::clone", + "bevy_math::curve::interval::Interval::end", + "bevy_math::curve::interval::Interval::start", + "bevy_math::curve::interval::Interval::contains_interval", + "bevy_math::curve::interval::Interval::eq", + "bevy_math::curve::interval::Interval::is_bounded", + "bevy_math::curve::interval::Interval::clamp", + "bevy_math::curve::interval::Interval::has_finite_end", + "bevy_math::curve::interval::Interval::length", + "bevy_math::curve::interval::Interval::contains" + ], + "layout": { + "kind": "Struct", + "name": "Interval", + "fields": [ + { + "name": "start", + "type": { + "primitive": "f32" + } + }, + { + "name": "end", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::direction::Dir2": { + "identifier": "Dir2", + "crate": "bevy_math", + "path": "bevy_math::direction::Dir2", + "documentation": " A normalized vector pointing in a direction in 2D space", + "associated_functions": [ + "bevy_math::direction::Dir2::rotation_from_x", + "bevy_math::direction::Dir2::new_unchecked", + "bevy_math::direction::Dir2::eq", + "bevy_math::direction::Dir2::slerp", + "bevy_math::direction::Dir2::rotation_to_x", + "bevy_math::direction::Dir2::rotation_from_y", + "bevy_math::direction::Dir2::rotation_to_y", + "bevy_math::direction::Dir2::neg", + "bevy_math::direction::Dir2::rotation_to", + "bevy_math::direction::Dir2::fast_renormalize", + "bevy_math::direction::Dir2::mul", + "bevy_math::direction::Dir2::as_vec2", + "bevy_math::direction::Dir2::clone", + "bevy_math::direction::Dir2::from_xy_unchecked", + "bevy_math::direction::Dir2::rotation_from" + ], + "layout": { + "kind": "TupleStruct", + "name": "Dir2", + "fields": [ + { + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::direction::Dir3": { + "identifier": "Dir3", + "crate": "bevy_math", + "path": "bevy_math::direction::Dir3", + "documentation": " A normalized vector pointing in a direction in 3D space", + "associated_functions": [ + "bevy_math::direction::Dir3::new_unchecked", + "bevy_math::direction::Dir3::neg", + "bevy_math::direction::Dir3::eq", + "bevy_math::direction::Dir3::from_xyz_unchecked", + "bevy_math::direction::Dir3::fast_renormalize", + "bevy_math::direction::Dir3::clone", + "bevy_math::direction::Dir3::slerp", + "bevy_math::direction::Dir3::as_vec3", + "bevy_math::direction::Dir3::mul" + ], + "layout": { + "kind": "TupleStruct", + "name": "Dir3", + "fields": [ + { + "type": { + "val": "glam::Vec3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::direction::Dir3A": { + "identifier": "Dir3A", + "crate": "bevy_math", + "path": "bevy_math::direction::Dir3A", + "documentation": " A normalized SIMD vector pointing in a direction in 3D space.\n\n This type stores a 16 byte aligned [`Vec3A`].\n This may or may not be faster than [`Dir3`]: make sure to benchmark!", + "associated_functions": [ + "bevy_math::direction::Dir3A::from_xyz_unchecked", + "bevy_math::direction::Dir3A::eq", + "bevy_math::direction::Dir3A::mul", + "bevy_math::direction::Dir3A::fast_renormalize", + "bevy_math::direction::Dir3A::new_unchecked", + "bevy_math::direction::Dir3A::as_vec3a", + "bevy_math::direction::Dir3A::clone", + "bevy_math::direction::Dir3A::neg", + "bevy_math::direction::Dir3A::slerp" + ], + "layout": { + "kind": "TupleStruct", + "name": "Dir3A", + "fields": [ + { + "type": { + "val": "glam::Vec3A" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::direction::Dir4": { + "identifier": "Dir4", + "crate": "bevy_math", + "path": "bevy_math::direction::Dir4", + "documentation": " A normalized vector pointing in a direction in 4D space", + "associated_functions": [ + "bevy_math::direction::Dir4::mul", + "bevy_math::direction::Dir4::new_unchecked", + "bevy_math::direction::Dir4::clone", + "bevy_math::direction::Dir4::fast_renormalize", + "bevy_math::direction::Dir4::eq", + "bevy_math::direction::Dir4::neg", + "bevy_math::direction::Dir4::as_vec4", + "bevy_math::direction::Dir4::from_xyzw_unchecked" + ], + "layout": { + "kind": "TupleStruct", + "name": "Dir4", + "fields": [ + { + "type": { + "val": "glam::Vec4" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::float_ord::FloatOrd": { + "identifier": "FloatOrd", + "crate": "bevy_math", + "path": "bevy_math::float_ord::FloatOrd", + "documentation": " A wrapper for floats that implements [`Ord`], [`Eq`], and [`Hash`] traits.\n\n This is a work around for the fact that the IEEE 754-2008 standard,\n implemented by Rust's [`f32`] type,\n doesn't define an ordering for [`NaN`](f32::NAN),\n and `NaN` is not considered equal to any other `NaN`.\n\n Wrapping a float with `FloatOrd` breaks conformance with the standard\n by sorting `NaN` as less than all other numbers and equal to any other `NaN`.", + "associated_functions": [ + "bevy_math::float_ord::FloatOrd::le", + "bevy_math::float_ord::FloatOrd::ge", + "bevy_math::float_ord::FloatOrd::eq", + "bevy_math::float_ord::FloatOrd::lt", + "bevy_math::float_ord::FloatOrd::gt", + "bevy_math::float_ord::FloatOrd::clone", + "bevy_math::float_ord::FloatOrd::neg" + ], + "layout": { + "kind": "TupleStruct", + "name": "FloatOrd", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::isometry::Isometry2d": { + "identifier": "Isometry2d", + "crate": "bevy_math", + "path": "bevy_math::isometry::Isometry2d", + "documentation": " An isometry in two dimensions, representing a rotation followed by a translation.\n This can often be useful for expressing relative positions and transformations from one position to another.\n\n In particular, this type represents a distance-preserving transformation known as a *rigid motion* or a *direct motion*,\n and belongs to the special [Euclidean group] SE(2). This includes translation and rotation, but excludes reflection.\n\n For the three-dimensional version, see [`Isometry3d`].\n\n [Euclidean group]: https://en.wikipedia.org/wiki/Euclidean_group\n\n # Example\n\n Isometries can be created from a given translation and rotation:\n\n ```\n # use bevy_math::{Isometry2d, Rot2, Vec2};\n #\n let iso = Isometry2d::new(Vec2::new(2.0, 1.0), Rot2::degrees(90.0));\n ```\n\n Or from separate parts:\n\n ```\n # use bevy_math::{Isometry2d, Rot2, Vec2};\n #\n let iso1 = Isometry2d::from_translation(Vec2::new(2.0, 1.0));\n let iso2 = Isometry2d::from_rotation(Rot2::degrees(90.0));\n ```\n\n The isometries can be used to transform points:\n\n ```\n # use approx::assert_abs_diff_eq;\n # use bevy_math::{Isometry2d, Rot2, Vec2};\n #\n let iso = Isometry2d::new(Vec2::new(2.0, 1.0), Rot2::degrees(90.0));\n let point = Vec2::new(4.0, 4.0);\n\n // These are equivalent\n let result = iso.transform_point(point);\n let result = iso * point;\n\n assert_eq!(result, Vec2::new(-2.0, 5.0));\n ```\n\n Isometries can also be composed together:\n\n ```\n # use bevy_math::{Isometry2d, Rot2, Vec2};\n #\n # let iso = Isometry2d::new(Vec2::new(2.0, 1.0), Rot2::degrees(90.0));\n # let iso1 = Isometry2d::from_translation(Vec2::new(2.0, 1.0));\n # let iso2 = Isometry2d::from_rotation(Rot2::degrees(90.0));\n #\n assert_eq!(iso1 * iso2, iso);\n ```\n\n One common operation is to compute an isometry representing the relative positions of two objects\n for things like intersection tests. This can be done with an inverse transformation:\n\n ```\n # use bevy_math::{Isometry2d, Rot2, Vec2};\n #\n let circle_iso = Isometry2d::from_translation(Vec2::new(2.0, 1.0));\n let rectangle_iso = Isometry2d::from_rotation(Rot2::degrees(90.0));\n\n // Compute the relative position and orientation between the two shapes\n let relative_iso = circle_iso.inverse() * rectangle_iso;\n\n // Or alternatively, to skip an extra rotation operation:\n let relative_iso = circle_iso.inverse_mul(rectangle_iso);\n ```", + "associated_functions": [ + "bevy_math::isometry::Isometry2d::new", + "bevy_math::isometry::Isometry2d::transform_point", + "bevy_math::isometry::Isometry2d::clone", + "bevy_math::isometry::Isometry2d::mul-2", + "bevy_math::isometry::Isometry2d::inverse", + "bevy_math::isometry::Isometry2d::from_xy", + "bevy_math::isometry::Isometry2d::mul-1", + "bevy_math::isometry::Isometry2d::from_translation", + "bevy_math::isometry::Isometry2d::mul", + "bevy_math::isometry::Isometry2d::from_rotation", + "bevy_math::isometry::Isometry2d::inverse_mul", + "bevy_math::isometry::Isometry2d::inverse_transform_point", + "bevy_math::isometry::Isometry2d::eq" + ], + "layout": { + "kind": "Struct", + "name": "Isometry2d", + "fields": [ + { + "name": "rotation", + "type": { + "val": "bevy_math::rotation2d::Rot2" + } + }, + { + "name": "translation", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::isometry::Isometry3d": { + "identifier": "Isometry3d", + "crate": "bevy_math", + "path": "bevy_math::isometry::Isometry3d", + "documentation": " An isometry in three dimensions, representing a rotation followed by a translation.\n This can often be useful for expressing relative positions and transformations from one position to another.\n\n In particular, this type represents a distance-preserving transformation known as a *rigid motion* or a *direct motion*,\n and belongs to the special [Euclidean group] SE(3). This includes translation and rotation, but excludes reflection.\n\n For the two-dimensional version, see [`Isometry2d`].\n\n [Euclidean group]: https://en.wikipedia.org/wiki/Euclidean_group\n\n # Example\n\n Isometries can be created from a given translation and rotation:\n\n ```\n # use bevy_math::{Isometry3d, Quat, Vec3};\n # use std::f32::consts::FRAC_PI_2;\n #\n let iso = Isometry3d::new(Vec3::new(2.0, 1.0, 3.0), Quat::from_rotation_z(FRAC_PI_2));\n ```\n\n Or from separate parts:\n\n ```\n # use bevy_math::{Isometry3d, Quat, Vec3};\n # use std::f32::consts::FRAC_PI_2;\n #\n let iso1 = Isometry3d::from_translation(Vec3::new(2.0, 1.0, 3.0));\n let iso2 = Isometry3d::from_rotation(Quat::from_rotation_z(FRAC_PI_2));\n ```\n\n The isometries can be used to transform points:\n\n ```\n # use approx::assert_relative_eq;\n # use bevy_math::{Isometry3d, Quat, Vec3};\n # use std::f32::consts::FRAC_PI_2;\n #\n let iso = Isometry3d::new(Vec3::new(2.0, 1.0, 3.0), Quat::from_rotation_z(FRAC_PI_2));\n let point = Vec3::new(4.0, 4.0, 4.0);\n\n // These are equivalent\n let result = iso.transform_point(point);\n let result = iso * point;\n\n assert_relative_eq!(result, Vec3::new(-2.0, 5.0, 7.0));\n ```\n\n Isometries can also be composed together:\n\n ```\n # use bevy_math::{Isometry3d, Quat, Vec3};\n # use std::f32::consts::FRAC_PI_2;\n #\n # let iso = Isometry3d::new(Vec3::new(2.0, 1.0, 3.0), Quat::from_rotation_z(FRAC_PI_2));\n # let iso1 = Isometry3d::from_translation(Vec3::new(2.0, 1.0, 3.0));\n # let iso2 = Isometry3d::from_rotation(Quat::from_rotation_z(FRAC_PI_2));\n #\n assert_eq!(iso1 * iso2, iso);\n ```\n\n One common operation is to compute an isometry representing the relative positions of two objects\n for things like intersection tests. This can be done with an inverse transformation:\n\n ```\n # use bevy_math::{Isometry3d, Quat, Vec3};\n # use std::f32::consts::FRAC_PI_2;\n #\n let sphere_iso = Isometry3d::from_translation(Vec3::new(2.0, 1.0, 3.0));\n let cuboid_iso = Isometry3d::from_rotation(Quat::from_rotation_z(FRAC_PI_2));\n\n // Compute the relative position and orientation between the two shapes\n let relative_iso = sphere_iso.inverse() * cuboid_iso;\n\n // Or alternatively, to skip an extra rotation operation:\n let relative_iso = sphere_iso.inverse_mul(cuboid_iso);\n ```", + "associated_functions": [ + "bevy_math::isometry::Isometry3d::eq", + "bevy_math::isometry::Isometry3d::mul-2", + "bevy_math::isometry::Isometry3d::from_xyz", + "bevy_math::isometry::Isometry3d::inverse_mul", + "bevy_math::isometry::Isometry3d::mul", + "bevy_math::isometry::Isometry3d::mul-1", + "bevy_math::isometry::Isometry3d::mul-3", + "bevy_math::isometry::Isometry3d::clone", + "bevy_math::isometry::Isometry3d::from_rotation", + "bevy_math::isometry::Isometry3d::inverse" + ], + "layout": { + "kind": "Struct", + "name": "Isometry3d", + "fields": [ + { + "name": "rotation", + "type": { + "val": "glam::Quat" + } + }, + { + "name": "translation", + "type": { + "val": "glam::Vec3A" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Annulus": { + "identifier": "Annulus", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Annulus", + "documentation": " A primitive shape formed by the region between two circles, also known as a ring.", + "associated_functions": [ + "bevy_math::primitives::dim2::Annulus::thickness", + "bevy_math::primitives::dim2::Annulus::clone", + "bevy_math::primitives::dim2::Annulus::new", + "bevy_math::primitives::dim2::Annulus::diameter", + "bevy_math::primitives::dim2::Annulus::eq", + "bevy_math::primitives::dim2::Annulus::closest_point" + ], + "layout": { + "kind": "Struct", + "name": "Annulus", + "fields": [ + { + "name": "inner_circle", + "type": { + "val": "bevy_math::primitives::dim2::Circle" + } + }, + { + "name": "outer_circle", + "type": { + "val": "bevy_math::primitives::dim2::Circle" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Arc2d": { + "identifier": "Arc2d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Arc2d", + "documentation": " A primitive representing an arc between two points on a circle.\n\n An arc has no area.\n If you want to include the portion of a circle's area swept out by the arc,\n use the pie-shaped [`CircularSector`].\n If you want to include only the space inside the convex hull of the arc,\n use the bowl-shaped [`CircularSegment`].\n\n The arc is drawn starting from [`Vec2::Y`], extending by `half_angle` radians on\n either side. The center of the circle is the origin [`Vec2::ZERO`]. Note that this\n means that the origin may not be within the `Arc2d`'s convex hull.\n\n **Warning:** Arcs with negative angle or radius, or with angle greater than an entire circle, are not officially supported.\n It is recommended to normalize arcs to have an angle in [0, 2π].", + "associated_functions": [ + "bevy_math::primitives::dim2::Arc2d::clone", + "bevy_math::primitives::dim2::Arc2d::half_chord_length", + "bevy_math::primitives::dim2::Arc2d::right_endpoint", + "bevy_math::primitives::dim2::Arc2d::chord_midpoint", + "bevy_math::primitives::dim2::Arc2d::from_radians", + "bevy_math::primitives::dim2::Arc2d::left_endpoint", + "bevy_math::primitives::dim2::Arc2d::from_turns", + "bevy_math::primitives::dim2::Arc2d::apothem", + "bevy_math::primitives::dim2::Arc2d::is_minor", + "bevy_math::primitives::dim2::Arc2d::new", + "bevy_math::primitives::dim2::Arc2d::angle", + "bevy_math::primitives::dim2::Arc2d::chord_length", + "bevy_math::primitives::dim2::Arc2d::eq", + "bevy_math::primitives::dim2::Arc2d::is_major", + "bevy_math::primitives::dim2::Arc2d::midpoint", + "bevy_math::primitives::dim2::Arc2d::sagitta", + "bevy_math::primitives::dim2::Arc2d::from_degrees", + "bevy_math::primitives::dim2::Arc2d::length" + ], + "layout": { + "kind": "Struct", + "name": "Arc2d", + "fields": [ + { + "name": "radius", + "type": { + "primitive": "f32" + } + }, + { + "name": "half_angle", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Capsule2d": { + "identifier": "Capsule2d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Capsule2d", + "documentation": " A 2D capsule primitive, also known as a stadium or pill shape.\n\n A two-dimensional capsule is defined as a neighborhood of points at a distance (radius) from a line", + "associated_functions": [ + "bevy_math::primitives::dim2::Capsule2d::new", + "bevy_math::primitives::dim2::Capsule2d::clone", + "bevy_math::primitives::dim2::Capsule2d::eq", + "bevy_math::primitives::dim2::Capsule2d::to_inner_rectangle" + ], + "layout": { + "kind": "Struct", + "name": "Capsule2d", + "fields": [ + { + "name": "radius", + "type": { + "primitive": "f32" + } + }, + { + "name": "half_length", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Circle": { + "identifier": "Circle", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Circle", + "documentation": " A circle primitive, representing the set of points some distance from the origin", + "associated_functions": [ + "bevy_math::primitives::dim2::Circle::clone", + "bevy_math::primitives::dim2::Circle::diameter", + "bevy_math::primitives::dim2::Circle::new", + "bevy_math::primitives::dim2::Circle::eq", + "bevy_math::primitives::dim2::Circle::closest_point" + ], + "layout": { + "kind": "Struct", + "name": "Circle", + "fields": [ + { + "name": "radius", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::CircularSector": { + "identifier": "CircularSector", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::CircularSector", + "documentation": " A primitive representing a circular sector: a pie slice of a circle.\n\n The segment is positioned so that it always includes [`Vec2::Y`] and is vertically symmetrical.\n To orient the sector differently, apply a rotation.\n The sector is drawn with the center of its circle at the origin [`Vec2::ZERO`].\n\n **Warning:** Circular sectors with negative angle or radius, or with angle greater than an entire circle, are not officially supported.\n We recommend normalizing circular sectors to have an angle in [0, 2π].", + "associated_functions": [ + "bevy_math::primitives::dim2::CircularSector::arc_length", + "bevy_math::primitives::dim2::CircularSector::new", + "bevy_math::primitives::dim2::CircularSector::radius", + "bevy_math::primitives::dim2::CircularSector::eq", + "bevy_math::primitives::dim2::CircularSector::half_chord_length", + "bevy_math::primitives::dim2::CircularSector::from_radians", + "bevy_math::primitives::dim2::CircularSector::from_turns", + "bevy_math::primitives::dim2::CircularSector::sagitta", + "bevy_math::primitives::dim2::CircularSector::chord_length", + "bevy_math::primitives::dim2::CircularSector::chord_midpoint", + "bevy_math::primitives::dim2::CircularSector::clone", + "bevy_math::primitives::dim2::CircularSector::from_degrees", + "bevy_math::primitives::dim2::CircularSector::apothem", + "bevy_math::primitives::dim2::CircularSector::angle", + "bevy_math::primitives::dim2::CircularSector::half_angle" + ], + "layout": { + "kind": "Struct", + "name": "CircularSector", + "fields": [ + { + "name": "arc", + "type": { + "val": "bevy_math::primitives::dim2::Arc2d" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::CircularSegment": { + "identifier": "CircularSegment", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::CircularSegment", + "documentation": " A primitive representing a circular segment:\n the area enclosed by the arc of a circle and its chord (the line between its endpoints).\n\n The segment is drawn starting from [`Vec2::Y`], extending equally on either side.\n To orient the segment differently, apply a rotation.\n The segment is drawn with the center of its circle at the origin [`Vec2::ZERO`].\n When positioning a segment, the [`apothem`](Self::apothem) function may be particularly useful.\n\n **Warning:** Circular segments with negative angle or radius, or with angle greater than an entire circle, are not officially supported.\n We recommend normalizing circular segments to have an angle in [0, 2π].", + "associated_functions": [ + "bevy_math::primitives::dim2::CircularSegment::from_turns", + "bevy_math::primitives::dim2::CircularSegment::angle", + "bevy_math::primitives::dim2::CircularSegment::half_chord_length", + "bevy_math::primitives::dim2::CircularSegment::from_degrees", + "bevy_math::primitives::dim2::CircularSegment::arc_length", + "bevy_math::primitives::dim2::CircularSegment::radius", + "bevy_math::primitives::dim2::CircularSegment::sagitta", + "bevy_math::primitives::dim2::CircularSegment::new", + "bevy_math::primitives::dim2::CircularSegment::half_angle", + "bevy_math::primitives::dim2::CircularSegment::apothem", + "bevy_math::primitives::dim2::CircularSegment::chord_midpoint", + "bevy_math::primitives::dim2::CircularSegment::clone", + "bevy_math::primitives::dim2::CircularSegment::chord_length", + "bevy_math::primitives::dim2::CircularSegment::eq", + "bevy_math::primitives::dim2::CircularSegment::from_radians" + ], + "layout": { + "kind": "Struct", + "name": "CircularSegment", + "fields": [ + { + "name": "arc", + "type": { + "val": "bevy_math::primitives::dim2::Arc2d" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::ConvexPolygon": { + "identifier": "ConvexPolygon", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::ConvexPolygon", + "documentation": " A convex polygon with `N` vertices.", + "associated_functions": [ + "bevy_math::primitives::dim2::ConvexPolygon::eq", + "bevy_math::primitives::dim2::ConvexPolygon::clone" + ], + "layout": { + "kind": "Struct", + "name": "ConvexPolygon", + "fields": [ + { + "name": "vertices", + "type": { + "vec": { + "val": "glam::Vec2" + } + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Ellipse": { + "identifier": "Ellipse", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Ellipse", + "documentation": " An ellipse primitive, which is like a circle, but the width and height can be different\n\n Ellipse does not implement [`Inset`] as concentric ellipses do not have parallel curves:\n if the ellipse is not a circle, the inset shape is not actually an ellipse (although it may look like one) but can also be a lens-like shape.", + "associated_functions": [ + "bevy_math::primitives::dim2::Ellipse::eccentricity", + "bevy_math::primitives::dim2::Ellipse::semi_minor", + "bevy_math::primitives::dim2::Ellipse::clone", + "bevy_math::primitives::dim2::Ellipse::semi_major", + "bevy_math::primitives::dim2::Ellipse::eq", + "bevy_math::primitives::dim2::Ellipse::from_size", + "bevy_math::primitives::dim2::Ellipse::new", + "bevy_math::primitives::dim2::Ellipse::focal_length" + ], + "layout": { + "kind": "Struct", + "name": "Ellipse", + "fields": [ + { + "name": "half_size", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Line2d": { + "identifier": "Line2d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Line2d", + "documentation": " An infinite line going through the origin along a direction in 2D space.\n\n For a finite line: [`Segment2d`]", + "associated_functions": [ + "bevy_math::primitives::dim2::Line2d::clone", + "bevy_math::primitives::dim2::Line2d::eq" + ], + "layout": { + "kind": "Struct", + "name": "Line2d", + "fields": [ + { + "name": "direction", + "type": { + "val": "bevy_math::direction::Dir2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Plane2d": { + "identifier": "Plane2d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Plane2d", + "documentation": " An unbounded plane in 2D space. It forms a separating surface through the origin,\n stretching infinitely far", + "associated_functions": [ + "bevy_math::primitives::dim2::Plane2d::eq", + "bevy_math::primitives::dim2::Plane2d::clone", + "bevy_math::primitives::dim2::Plane2d::new" + ], + "layout": { + "kind": "Struct", + "name": "Plane2d", + "fields": [ + { + "name": "normal", + "type": { + "val": "bevy_math::direction::Dir2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Polygon": { + "identifier": "Polygon", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Polygon", + "documentation": " A polygon with N vertices.", + "associated_functions": [ + "bevy_math::primitives::dim2::Polygon::eq", + "bevy_math::primitives::dim2::Polygon::clone", + "bevy_math::primitives::dim2::Polygon::is_simple" + ], + "layout": { + "kind": "Struct", + "name": "Polygon", + "fields": [ + { + "name": "vertices", + "type": { + "vec": { + "val": "glam::Vec2" + } + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Polyline2d": { + "identifier": "Polyline2d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Polyline2d", + "documentation": " A series of connected line segments in 2D space.", + "associated_functions": [ + "bevy_math::primitives::dim2::Polyline2d::eq", + "bevy_math::primitives::dim2::Polyline2d::clone", + "bevy_math::primitives::dim2::Polyline2d::with_subdivisions" + ], + "layout": { + "kind": "Struct", + "name": "Polyline2d", + "fields": [ + { + "name": "vertices", + "type": { + "vec": { + "val": "glam::Vec2" + } + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Rectangle": { + "identifier": "Rectangle", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Rectangle", + "documentation": " A rectangle primitive, which is like a square, except that the width and height can be different", + "associated_functions": [ + "bevy_math::primitives::dim2::Rectangle::closest_point", + "bevy_math::primitives::dim2::Rectangle::from_length", + "bevy_math::primitives::dim2::Rectangle::clone", + "bevy_math::primitives::dim2::Rectangle::size", + "bevy_math::primitives::dim2::Rectangle::eq", + "bevy_math::primitives::dim2::Rectangle::from_size", + "bevy_math::primitives::dim2::Rectangle::from_corners", + "bevy_math::primitives::dim2::Rectangle::new" + ], + "layout": { + "kind": "Struct", + "name": "Rectangle", + "fields": [ + { + "name": "half_size", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::RegularPolygon": { + "identifier": "RegularPolygon", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::RegularPolygon", + "documentation": " A polygon centered on the origin where all vertices lie on a circle, equally far apart.", + "associated_functions": [ + "bevy_math::primitives::dim2::RegularPolygon::internal_angle_degrees", + "bevy_math::primitives::dim2::RegularPolygon::inradius", + "bevy_math::primitives::dim2::RegularPolygon::external_angle_degrees", + "bevy_math::primitives::dim2::RegularPolygon::circumradius", + "bevy_math::primitives::dim2::RegularPolygon::internal_angle_radians", + "bevy_math::primitives::dim2::RegularPolygon::side_length", + "bevy_math::primitives::dim2::RegularPolygon::external_angle_radians", + "bevy_math::primitives::dim2::RegularPolygon::new", + "bevy_math::primitives::dim2::RegularPolygon::clone", + "bevy_math::primitives::dim2::RegularPolygon::eq" + ], + "layout": { + "kind": "Struct", + "name": "RegularPolygon", + "fields": [ + { + "name": "circumcircle", + "type": { + "val": "bevy_math::primitives::dim2::Circle" + } + }, + { + "name": "sides", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Rhombus": { + "identifier": "Rhombus", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Rhombus", + "documentation": " A rhombus primitive, also known as a diamond shape.\n A four sided polygon, centered on the origin, where opposite sides are parallel but without\n requiring right angles.", + "associated_functions": [ + "bevy_math::primitives::dim2::Rhombus::new", + "bevy_math::primitives::dim2::Rhombus::inradius", + "bevy_math::primitives::dim2::Rhombus::eq", + "bevy_math::primitives::dim2::Rhombus::clone", + "bevy_math::primitives::dim2::Rhombus::from_inradius", + "bevy_math::primitives::dim2::Rhombus::from_side", + "bevy_math::primitives::dim2::Rhombus::side", + "bevy_math::primitives::dim2::Rhombus::circumradius", + "bevy_math::primitives::dim2::Rhombus::closest_point" + ], + "layout": { + "kind": "Struct", + "name": "Rhombus", + "fields": [ + { + "name": "half_diagonals", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Segment2d": { + "identifier": "Segment2d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Segment2d", + "documentation": " A line segment defined by two endpoints in 2D space.", + "associated_functions": [ + "bevy_math::primitives::dim2::Segment2d::centered", + "bevy_math::primitives::dim2::Segment2d::new", + "bevy_math::primitives::dim2::Segment2d::center", + "bevy_math::primitives::dim2::Segment2d::reversed", + "bevy_math::primitives::dim2::Segment2d::right_normal", + "bevy_math::primitives::dim2::Segment2d::eq", + "bevy_math::primitives::dim2::Segment2d::scaled_direction", + "bevy_math::primitives::dim2::Segment2d::length_squared", + "bevy_math::primitives::dim2::Segment2d::point1", + "bevy_math::primitives::dim2::Segment2d::closest_point", + "bevy_math::primitives::dim2::Segment2d::point2", + "bevy_math::primitives::dim2::Segment2d::from_ray_and_length", + "bevy_math::primitives::dim2::Segment2d::resized", + "bevy_math::primitives::dim2::Segment2d::scaled_right_normal", + "bevy_math::primitives::dim2::Segment2d::from_direction_and_length", + "bevy_math::primitives::dim2::Segment2d::clone", + "bevy_math::primitives::dim2::Segment2d::direction", + "bevy_math::primitives::dim2::Segment2d::rotated_around_center", + "bevy_math::primitives::dim2::Segment2d::length", + "bevy_math::primitives::dim2::Segment2d::rotated", + "bevy_math::primitives::dim2::Segment2d::left_normal", + "bevy_math::primitives::dim2::Segment2d::translated", + "bevy_math::primitives::dim2::Segment2d::scaled_left_normal", + "bevy_math::primitives::dim2::Segment2d::from_scaled_direction", + "bevy_math::primitives::dim2::Segment2d::rotated_around", + "bevy_math::primitives::dim2::Segment2d::reverse" + ], + "layout": { + "kind": "Struct", + "name": "Segment2d", + "fields": [ + { + "name": "vertices", + "type": { + "array": [ + { + "val": "glam::Vec2" + }, + 2 + ] + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim2::Triangle2d": { + "identifier": "Triangle2d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim2::Triangle2d", + "documentation": " A triangle in 2D space", + "associated_functions": [ + "bevy_math::primitives::dim2::Triangle2d::new", + "bevy_math::primitives::dim2::Triangle2d::reversed", + "bevy_math::primitives::dim2::Triangle2d::is_obtuse", + "bevy_math::primitives::dim2::Triangle2d::is_acute", + "bevy_math::primitives::dim2::Triangle2d::is_degenerate", + "bevy_math::primitives::dim2::Triangle2d::eq", + "bevy_math::primitives::dim2::Triangle2d::clone", + "bevy_math::primitives::dim2::Triangle2d::reverse" + ], + "layout": { + "kind": "Struct", + "name": "Triangle2d", + "fields": [ + { + "name": "vertices", + "type": { + "array": [ + { + "val": "glam::Vec2" + }, + 3 + ] + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Capsule3d": { + "identifier": "Capsule3d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Capsule3d", + "documentation": " A 3D capsule primitive centered on the origin\n A three-dimensional capsule is defined as a surface at a distance (radius) from a line", + "associated_functions": [ + "bevy_math::primitives::dim3::Capsule3d::new", + "bevy_math::primitives::dim3::Capsule3d::eq", + "bevy_math::primitives::dim3::Capsule3d::clone", + "bevy_math::primitives::dim3::Capsule3d::to_cylinder" + ], + "layout": { + "kind": "Struct", + "name": "Capsule3d", + "fields": [ + { + "name": "radius", + "type": { + "primitive": "f32" + } + }, + { + "name": "half_length", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Cone": { + "identifier": "Cone", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Cone", + "documentation": " A cone primitive centered on the midpoint between the tip of the cone and the center of its base.\n\n The cone is oriented with its tip pointing towards the Y axis.", + "associated_functions": [ + "bevy_math::primitives::dim3::Cone::slant_height", + "bevy_math::primitives::dim3::Cone::base_area", + "bevy_math::primitives::dim3::Cone::base", + "bevy_math::primitives::dim3::Cone::new", + "bevy_math::primitives::dim3::Cone::clone", + "bevy_math::primitives::dim3::Cone::eq", + "bevy_math::primitives::dim3::Cone::lateral_area" + ], + "layout": { + "kind": "Struct", + "name": "Cone", + "fields": [ + { + "name": "radius", + "type": { + "primitive": "f32" + } + }, + { + "name": "height", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::ConicalFrustum": { + "identifier": "ConicalFrustum", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::ConicalFrustum", + "documentation": " A conical frustum primitive.\n A conical frustum can be created\n by slicing off a section of a cone.", + "associated_functions": [ + "bevy_math::primitives::dim3::ConicalFrustum::slant_height", + "bevy_math::primitives::dim3::ConicalFrustum::lateral_area", + "bevy_math::primitives::dim3::ConicalFrustum::bottom_base_area", + "bevy_math::primitives::dim3::ConicalFrustum::clone", + "bevy_math::primitives::dim3::ConicalFrustum::bottom_base", + "bevy_math::primitives::dim3::ConicalFrustum::eq", + "bevy_math::primitives::dim3::ConicalFrustum::top_base", + "bevy_math::primitives::dim3::ConicalFrustum::top_base_area" + ], + "layout": { + "kind": "Struct", + "name": "ConicalFrustum", + "fields": [ + { + "name": "radius_top", + "type": { + "primitive": "f32" + } + }, + { + "name": "radius_bottom", + "type": { + "primitive": "f32" + } + }, + { + "name": "height", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Cuboid": { + "identifier": "Cuboid", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Cuboid", + "documentation": " A cuboid primitive, which is like a cube, except that the x, y, and z dimensions are not\n required to be the same.", + "associated_functions": [ + "bevy_math::primitives::dim3::Cuboid::from_length", + "bevy_math::primitives::dim3::Cuboid::from_size", + "bevy_math::primitives::dim3::Cuboid::size", + "bevy_math::primitives::dim3::Cuboid::closest_point", + "bevy_math::primitives::dim3::Cuboid::eq", + "bevy_math::primitives::dim3::Cuboid::new", + "bevy_math::primitives::dim3::Cuboid::from_corners", + "bevy_math::primitives::dim3::Cuboid::clone" + ], + "layout": { + "kind": "Struct", + "name": "Cuboid", + "fields": [ + { + "name": "half_size", + "type": { + "val": "glam::Vec3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Cylinder": { + "identifier": "Cylinder", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Cylinder", + "documentation": " A cylinder primitive centered on the origin", + "associated_functions": [ + "bevy_math::primitives::dim3::Cylinder::base", + "bevy_math::primitives::dim3::Cylinder::new", + "bevy_math::primitives::dim3::Cylinder::base_area", + "bevy_math::primitives::dim3::Cylinder::lateral_area", + "bevy_math::primitives::dim3::Cylinder::clone", + "bevy_math::primitives::dim3::Cylinder::eq" + ], + "layout": { + "kind": "Struct", + "name": "Cylinder", + "fields": [ + { + "name": "radius", + "type": { + "primitive": "f32" + } + }, + { + "name": "half_height", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::InfinitePlane3d": { + "identifier": "InfinitePlane3d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::InfinitePlane3d", + "documentation": " An unbounded plane in 3D space. It forms a separating surface through the origin,\n stretching infinitely far", + "associated_functions": [ + "bevy_math::primitives::dim3::InfinitePlane3d::clone", + "bevy_math::primitives::dim3::InfinitePlane3d::isometry_into_xy", + "bevy_math::primitives::dim3::InfinitePlane3d::eq", + "bevy_math::primitives::dim3::InfinitePlane3d::isometry_from_xy" + ], + "layout": { + "kind": "Struct", + "name": "InfinitePlane3d", + "fields": [ + { + "name": "normal", + "type": { + "val": "bevy_math::direction::Dir3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Line3d": { + "identifier": "Line3d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Line3d", + "documentation": " An infinite line going through the origin along a direction in 3D space.\n\n For a finite line: [`Segment3d`]", + "associated_functions": [ + "bevy_math::primitives::dim3::Line3d::clone", + "bevy_math::primitives::dim3::Line3d::eq" + ], + "layout": { + "kind": "Struct", + "name": "Line3d", + "fields": [ + { + "name": "direction", + "type": { + "val": "bevy_math::direction::Dir3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Plane3d": { + "identifier": "Plane3d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Plane3d", + "documentation": " A bounded plane in 3D space. It forms a surface starting from the origin with a defined height and width.", + "associated_functions": [ + "bevy_math::primitives::dim3::Plane3d::eq", + "bevy_math::primitives::dim3::Plane3d::clone", + "bevy_math::primitives::dim3::Plane3d::new" + ], + "layout": { + "kind": "Struct", + "name": "Plane3d", + "fields": [ + { + "name": "normal", + "type": { + "val": "bevy_math::direction::Dir3" + } + }, + { + "name": "half_size", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Polyline3d": { + "identifier": "Polyline3d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Polyline3d", + "documentation": " A series of connected line segments in 3D space.", + "associated_functions": [ + "bevy_math::primitives::dim3::Polyline3d::eq", + "bevy_math::primitives::dim3::Polyline3d::clone", + "bevy_math::primitives::dim3::Polyline3d::with_subdivisions" + ], + "layout": { + "kind": "Struct", + "name": "Polyline3d", + "fields": [ + { + "name": "vertices", + "type": { + "vec": { + "val": "glam::Vec3" + } + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Segment3d": { + "identifier": "Segment3d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Segment3d", + "documentation": " A line segment defined by two endpoints in 3D space.", + "associated_functions": [ + "bevy_math::primitives::dim3::Segment3d::direction", + "bevy_math::primitives::dim3::Segment3d::closest_point", + "bevy_math::primitives::dim3::Segment3d::from_ray_and_length", + "bevy_math::primitives::dim3::Segment3d::length_squared", + "bevy_math::primitives::dim3::Segment3d::eq", + "bevy_math::primitives::dim3::Segment3d::translated", + "bevy_math::primitives::dim3::Segment3d::rotated_around", + "bevy_math::primitives::dim3::Segment3d::reversed", + "bevy_math::primitives::dim3::Segment3d::reverse", + "bevy_math::primitives::dim3::Segment3d::rotated", + "bevy_math::primitives::dim3::Segment3d::length", + "bevy_math::primitives::dim3::Segment3d::from_scaled_direction", + "bevy_math::primitives::dim3::Segment3d::centered", + "bevy_math::primitives::dim3::Segment3d::point1", + "bevy_math::primitives::dim3::Segment3d::point2", + "bevy_math::primitives::dim3::Segment3d::center", + "bevy_math::primitives::dim3::Segment3d::rotated_around_center", + "bevy_math::primitives::dim3::Segment3d::resized", + "bevy_math::primitives::dim3::Segment3d::from_direction_and_length", + "bevy_math::primitives::dim3::Segment3d::clone", + "bevy_math::primitives::dim3::Segment3d::new", + "bevy_math::primitives::dim3::Segment3d::scaled_direction" + ], + "layout": { + "kind": "Struct", + "name": "Segment3d", + "fields": [ + { + "name": "vertices", + "type": { + "array": [ + { + "val": "glam::Vec3" + }, + 2 + ] + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Sphere": { + "identifier": "Sphere", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Sphere", + "documentation": " A sphere primitive, representing the set of all points some distance from the origin", + "associated_functions": [ + "bevy_math::primitives::dim3::Sphere::clone", + "bevy_math::primitives::dim3::Sphere::eq", + "bevy_math::primitives::dim3::Sphere::new", + "bevy_math::primitives::dim3::Sphere::closest_point", + "bevy_math::primitives::dim3::Sphere::diameter" + ], + "layout": { + "kind": "Struct", + "name": "Sphere", + "fields": [ + { + "name": "radius", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Tetrahedron": { + "identifier": "Tetrahedron", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Tetrahedron", + "documentation": " A tetrahedron primitive.", + "associated_functions": [ + "bevy_math::primitives::dim3::Tetrahedron::new", + "bevy_math::primitives::dim3::Tetrahedron::centroid", + "bevy_math::primitives::dim3::Tetrahedron::signed_volume", + "bevy_math::primitives::dim3::Tetrahedron::eq", + "bevy_math::primitives::dim3::Tetrahedron::clone" + ], + "layout": { + "kind": "Struct", + "name": "Tetrahedron", + "fields": [ + { + "name": "vertices", + "type": { + "array": [ + { + "val": "glam::Vec3" + }, + 4 + ] + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Torus": { + "identifier": "Torus", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Torus", + "documentation": " A torus primitive, often representing a ring or donut shape\n The set of points some distance from a circle centered at the origin", + "associated_functions": [ + "bevy_math::primitives::dim3::Torus::new", + "bevy_math::primitives::dim3::Torus::eq", + "bevy_math::primitives::dim3::Torus::clone", + "bevy_math::primitives::dim3::Torus::inner_radius", + "bevy_math::primitives::dim3::Torus::outer_radius" + ], + "layout": { + "kind": "Struct", + "name": "Torus", + "fields": [ + { + "name": "minor_radius", + "type": { + "primitive": "f32" + } + }, + { + "name": "major_radius", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::primitives::dim3::Triangle3d": { + "identifier": "Triangle3d", + "crate": "bevy_math", + "path": "bevy_math::primitives::dim3::Triangle3d", + "documentation": " A 3D triangle primitive.", + "associated_functions": [ + "bevy_math::primitives::dim3::Triangle3d::centroid", + "bevy_math::primitives::dim3::Triangle3d::eq", + "bevy_math::primitives::dim3::Triangle3d::new", + "bevy_math::primitives::dim3::Triangle3d::is_obtuse", + "bevy_math::primitives::dim3::Triangle3d::reverse", + "bevy_math::primitives::dim3::Triangle3d::is_acute", + "bevy_math::primitives::dim3::Triangle3d::reversed", + "bevy_math::primitives::dim3::Triangle3d::clone", + "bevy_math::primitives::dim3::Triangle3d::circumcenter", + "bevy_math::primitives::dim3::Triangle3d::is_degenerate" + ], + "layout": { + "kind": "Struct", + "name": "Triangle3d", + "fields": [ + { + "name": "vertices", + "type": { + "array": [ + { + "val": "glam::Vec3" + }, + 3 + ] + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::ray::Ray2d": { + "identifier": "Ray2d", + "crate": "bevy_math", + "path": "bevy_math::ray::Ray2d", + "documentation": " An infinite half-line starting at `origin` and going in `direction` in 2D space.", + "associated_functions": [ + "bevy_math::ray::Ray2d::intersect_plane", + "bevy_math::ray::Ray2d::new", + "bevy_math::ray::Ray2d::get_point", + "bevy_math::ray::Ray2d::clone", + "bevy_math::ray::Ray2d::eq" + ], + "layout": { + "kind": "Struct", + "name": "Ray2d", + "fields": [ + { + "name": "origin", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "direction", + "type": { + "val": "bevy_math::direction::Dir2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::ray::Ray3d": { + "identifier": "Ray3d", + "crate": "bevy_math", + "path": "bevy_math::ray::Ray3d", + "documentation": " An infinite half-line starting at `origin` and going in `direction` in 3D space.", + "associated_functions": [ + "bevy_math::ray::Ray3d::clone", + "bevy_math::ray::Ray3d::new", + "bevy_math::ray::Ray3d::intersect_plane", + "bevy_math::ray::Ray3d::eq", + "bevy_math::ray::Ray3d::get_point" + ], + "layout": { + "kind": "Struct", + "name": "Ray3d", + "fields": [ + { + "name": "origin", + "type": { + "val": "glam::Vec3" + } + }, + { + "name": "direction", + "type": { + "val": "bevy_math::direction::Dir3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::rects::irect::IRect": { + "identifier": "IRect", + "crate": "bevy_math", + "path": "bevy_math::rects::irect::IRect", + "documentation": " A rectangle defined by two opposite corners.\n\n The rectangle is axis aligned, and defined by its minimum and maximum coordinates,\n stored in `IRect::min` and `IRect::max`, respectively. The minimum/maximum invariant\n must be upheld by the user when directly assigning the fields, otherwise some methods\n produce invalid results. It is generally recommended to use one of the constructor\n methods instead, which will ensure this invariant is met, unless you already have\n the minimum and maximum corners.", + "associated_functions": [ + "bevy_math::rects::irect::IRect::clone", + "bevy_math::rects::irect::IRect::half_size", + "bevy_math::rects::irect::IRect::new", + "bevy_math::rects::irect::IRect::union_point", + "bevy_math::rects::irect::IRect::as_rect", + "bevy_math::rects::irect::IRect::center", + "bevy_math::rects::irect::IRect::is_empty", + "bevy_math::rects::irect::IRect::eq", + "bevy_math::rects::irect::IRect::from_center_half_size", + "bevy_math::rects::irect::IRect::intersect", + "bevy_math::rects::irect::IRect::contains", + "bevy_math::rects::irect::IRect::size", + "bevy_math::rects::irect::IRect::union", + "bevy_math::rects::irect::IRect::height", + "bevy_math::rects::irect::IRect::inflate", + "bevy_math::rects::irect::IRect::from_corners", + "bevy_math::rects::irect::IRect::from_center_size", + "bevy_math::rects::irect::IRect::as_urect", + "bevy_math::rects::irect::IRect::width", + "bevy_math::rects::irect::IRect::assert_receiver_is_total_eq" + ], + "layout": { + "kind": "Struct", + "name": "IRect", + "fields": [ + { + "name": "min", + "type": { + "val": "glam::IVec2" + } + }, + { + "name": "max", + "type": { + "val": "glam::IVec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::rects::rect::Rect": { + "identifier": "Rect", + "crate": "bevy_math", + "path": "bevy_math::rects::rect::Rect", + "documentation": " A rectangle defined by two opposite corners.\n\n The rectangle is axis aligned, and defined by its minimum and maximum coordinates,\n stored in `Rect::min` and `Rect::max`, respectively. The minimum/maximum invariant\n must be upheld by the user when directly assigning the fields, otherwise some methods\n produce invalid results. It is generally recommended to use one of the constructor\n methods instead, which will ensure this invariant is met, unless you already have\n the minimum and maximum corners.", + "associated_functions": [ + "bevy_math::rects::rect::Rect::center", + "bevy_math::rects::rect::Rect::half_size", + "bevy_math::rects::rect::Rect::size", + "bevy_math::rects::rect::Rect::is_empty", + "bevy_math::rects::rect::Rect::union_point", + "bevy_math::rects::rect::Rect::new", + "bevy_math::rects::rect::Rect::union", + "bevy_math::rects::rect::Rect::intersect", + "bevy_math::rects::rect::Rect::contains", + "bevy_math::rects::rect::Rect::from_corners", + "bevy_math::rects::rect::Rect::height", + "bevy_math::rects::rect::Rect::inflate", + "bevy_math::rects::rect::Rect::as_urect", + "bevy_math::rects::rect::Rect::from_center_size", + "bevy_math::rects::rect::Rect::normalize", + "bevy_math::rects::rect::Rect::from_center_half_size", + "bevy_math::rects::rect::Rect::width", + "bevy_math::rects::rect::Rect::eq", + "bevy_math::rects::rect::Rect::as_irect", + "bevy_math::rects::rect::Rect::area", + "bevy_math::rects::rect::Rect::clone" + ], + "layout": { + "kind": "Struct", + "name": "Rect", + "fields": [ + { + "name": "min", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "max", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::rects::urect::URect": { + "identifier": "URect", + "crate": "bevy_math", + "path": "bevy_math::rects::urect::URect", + "documentation": " A rectangle defined by two opposite corners.\n\n The rectangle is axis aligned, and defined by its minimum and maximum coordinates,\n stored in `URect::min` and `URect::max`, respectively. The minimum/maximum invariant\n must be upheld by the user when directly assigning the fields, otherwise some methods\n produce invalid results. It is generally recommended to use one of the constructor\n methods instead, which will ensure this invariant is met, unless you already have\n the minimum and maximum corners.", + "associated_functions": [ + "bevy_math::rects::urect::URect::is_empty", + "bevy_math::rects::urect::URect::intersect", + "bevy_math::rects::urect::URect::union_point", + "bevy_math::rects::urect::URect::half_size", + "bevy_math::rects::urect::URect::center", + "bevy_math::rects::urect::URect::as_rect", + "bevy_math::rects::urect::URect::eq", + "bevy_math::rects::urect::URect::size", + "bevy_math::rects::urect::URect::as_irect", + "bevy_math::rects::urect::URect::clone", + "bevy_math::rects::urect::URect::from_center_size", + "bevy_math::rects::urect::URect::width", + "bevy_math::rects::urect::URect::inflate", + "bevy_math::rects::urect::URect::contains", + "bevy_math::rects::urect::URect::from_corners", + "bevy_math::rects::urect::URect::assert_receiver_is_total_eq", + "bevy_math::rects::urect::URect::union", + "bevy_math::rects::urect::URect::new", + "bevy_math::rects::urect::URect::from_center_half_size", + "bevy_math::rects::urect::URect::height" + ], + "layout": { + "kind": "Struct", + "name": "URect", + "fields": [ + { + "name": "min", + "type": { + "val": "glam::UVec2" + } + }, + { + "name": "max", + "type": { + "val": "glam::UVec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::rotation2d::Rot2": { + "identifier": "Rot2", + "crate": "bevy_math", + "path": "bevy_math::rotation2d::Rot2", + "documentation": " A 2D rotation.\n\n # Example\n\n ```\n # use approx::assert_relative_eq;\n # use bevy_math::{Rot2, Vec2};\n use std::f32::consts::PI;\n\n // Create rotations from counterclockwise angles in radians or degrees\n let rotation1 = Rot2::radians(PI / 2.0);\n let rotation2 = Rot2::degrees(45.0);\n\n // Get the angle back as radians or degrees\n assert_eq!(rotation1.as_degrees(), 90.0);\n assert_eq!(rotation2.as_radians(), PI / 4.0);\n\n // \"Add\" rotations together using `*`\n #[cfg(feature = \"approx\")]\n assert_relative_eq!(rotation1 * rotation2, Rot2::degrees(135.0));\n\n // Rotate vectors\n #[cfg(feature = \"approx\")]\n assert_relative_eq!(rotation1 * Vec2::X, Vec2::Y);\n ```", + "associated_functions": [ + "bevy_math::rotation2d::Rot2::slerp", + "bevy_math::rotation2d::Rot2::sin_cos", + "bevy_math::rotation2d::Rot2::is_finite", + "bevy_math::rotation2d::Rot2::normalize", + "bevy_math::rotation2d::Rot2::is_normalized", + "bevy_math::rotation2d::Rot2::is_near_identity", + "bevy_math::rotation2d::Rot2::clone", + "bevy_math::rotation2d::Rot2::length", + "bevy_math::rotation2d::Rot2::inverse", + "bevy_math::rotation2d::Rot2::as_radians", + "bevy_math::rotation2d::Rot2::mul-2", + "bevy_math::rotation2d::Rot2::eq", + "bevy_math::rotation2d::Rot2::from_sin_cos", + "bevy_math::rotation2d::Rot2::length_squared", + "bevy_math::rotation2d::Rot2::is_nan", + "bevy_math::rotation2d::Rot2::length_recip", + "bevy_math::rotation2d::Rot2::radians", + "bevy_math::rotation2d::Rot2::angle_to", + "bevy_math::rotation2d::Rot2::degrees", + "bevy_math::rotation2d::Rot2::nlerp", + "bevy_math::rotation2d::Rot2::fast_renormalize", + "bevy_math::rotation2d::Rot2::turn_fraction", + "bevy_math::rotation2d::Rot2::mul", + "bevy_math::rotation2d::Rot2::as_degrees", + "bevy_math::rotation2d::Rot2::as_turn_fraction", + "bevy_math::rotation2d::Rot2::mul-1" + ], + "layout": { + "kind": "Struct", + "name": "Rot2", + "fields": [ + { + "name": "cos", + "type": { + "primitive": "f32" + } + }, + { + "name": "sin", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_platform::time::Instant": { + "identifier": "Instant", + "crate": "bevy_platform", + "path": "bevy_platform::time::Instant", + "associated_functions": [ + "bevy_platform::time::Instant::eq", + "bevy_platform::time::Instant::saturating_duration_since", + "bevy_platform::time::Instant::assert_receiver_is_total_eq", + "bevy_platform::time::Instant::elapsed", + "bevy_platform::time::Instant::duration_since", + "bevy_platform::time::Instant::sub-1", + "bevy_platform::time::Instant::now", + "bevy_platform::time::Instant::add", + "bevy_platform::time::Instant::sub", + "bevy_platform::time::Instant::clone" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_time::fixed::Fixed": { + "identifier": "Fixed", + "crate": "bevy_time", + "path": "bevy_time::fixed::Fixed", + "documentation": " The fixed timestep game clock following virtual time.\n\n A specialization of the [`Time`] structure. **For method documentation, see\n [`Time#impl-Time`].**\n\n It is automatically inserted as a resource by\n [`TimePlugin`](crate::TimePlugin) and updated based on\n [`Time`](Virtual). The fixed clock is automatically set as the\n generic [`Time`] resource during [`FixedUpdate`](bevy_app::FixedUpdate)\n schedule processing.\n\n The fixed timestep clock advances in fixed-size increments, which is\n extremely useful for writing logic (like physics) that should have\n consistent behavior, regardless of framerate.\n\n The default [`timestep()`](Time::timestep) is 64 hertz, or 15625\n microseconds. This value was chosen because using 60 hertz has the potential\n for a pathological interaction with the monitor refresh rate where the game\n alternates between running two fixed timesteps and zero fixed timesteps per\n frame (for example when running two fixed timesteps takes longer than a\n frame). Additionally, the value is a power of two which losslessly converts\n into [`f32`] and [`f64`].\n\n To run a system on a fixed timestep, add it to one of the [`FixedMain`]\n schedules, most commonly [`FixedUpdate`](bevy_app::FixedUpdate).\n\n This schedule is run a number of times between\n [`PreUpdate`](bevy_app::PreUpdate) and [`Update`](bevy_app::Update)\n according to the accumulated [`overstep()`](Time::overstep) time divided by\n the [`timestep()`](Time::timestep). This means the schedule may run 0, 1 or\n more times during a single update (which typically corresponds to a rendered\n frame).\n\n `Time` and the generic [`Time`] resource will report a\n [`delta()`](Time::delta) equal to [`timestep()`](Time::timestep) and always\n grow [`elapsed()`](Time::elapsed) by one [`timestep()`](Time::timestep) per\n iteration.\n\n The fixed timestep clock follows the [`Time`](Virtual) clock, which\n means it is affected by [`pause()`](Time::pause),\n [`set_relative_speed()`](Time::set_relative_speed) and\n [`set_max_delta()`](Time::set_max_delta) from virtual time. If the virtual\n clock is paused, the [`FixedUpdate`](bevy_app::FixedUpdate) schedule will\n not run. It is guaranteed that the [`elapsed()`](Time::elapsed) time in\n `Time` is always between the previous `elapsed()` and the current\n `elapsed()` value in `Time`, so the values are compatible.\n\n Changing the timestep size while the game is running should not normally be\n done, as having a regular interval is the point of this schedule, but it may\n be necessary for effects like \"bullet-time\" if the normal granularity of the\n fixed timestep is too big for the slowed down time. In this case,\n [`set_timestep()`](Time::set_timestep) and be called to set a new value. The\n new value will be used immediately for the next run of the\n [`FixedUpdate`](bevy_app::FixedUpdate) schedule, meaning that it will affect\n the [`delta()`](Time::delta) value for the very next\n [`FixedUpdate`](bevy_app::FixedUpdate), even if it is still during the same\n frame. Any [`overstep()`](Time::overstep) present in the accumulator will be\n processed according to the new [`timestep()`](Time::timestep) value.", + "associated_functions": [ + "bevy_time::fixed::Fixed::clone" + ], + "layout": { + "kind": "Struct", + "name": "Fixed", + "fields": [ + { + "name": "timestep", + "type": { + "val": "core::time::Duration" + } + }, + { + "name": "overstep", + "type": { + "val": "core::time::Duration" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_time::real::Real": { + "identifier": "Real", + "crate": "bevy_time", + "path": "bevy_time::real::Real", + "documentation": " Real time clock representing elapsed wall clock time.\n\n A specialization of the [`Time`] structure. **For method documentation, see\n [`Time#impl-Time`].**\n\n It is automatically inserted as a resource by\n [`TimePlugin`](crate::TimePlugin) and updated with time instants according\n to [`TimeUpdateStrategy`](crate::TimeUpdateStrategy).[^disclaimer]\n\n Note:\n Using [`TimeUpdateStrategy::ManualDuration`](crate::TimeUpdateStrategy::ManualDuration)\n allows for mocking the wall clock for testing purposes.\n Besides this use case, it is not recommended to do this, as it will no longer\n represent \"wall clock\" time as intended.\n\n The [`delta()`](Time::delta) and [`elapsed()`](Time::elapsed) values of this\n clock should be used for anything which deals specifically with real time\n (wall clock time). It will not be affected by relative game speed\n adjustments, pausing or other adjustments.[^disclaimer]\n\n The clock does not count time from [`startup()`](Time::startup) to\n [`first_update()`](Time::first_update()) into elapsed, but instead will\n start counting time from the first update call. [`delta()`](Time::delta) and\n [`elapsed()`](Time::elapsed) will report zero on the first update as there\n is no previous update instant. This means that a [`delta()`](Time::delta) of\n zero must be handled without errors in application logic, as it may\n theoretically also happen at other times.\n\n [`Instant`]s for [`startup()`](Time::startup),\n [`first_update()`](Time::first_update) and\n [`last_update()`](Time::last_update) are recorded and accessible.\n\n [^disclaimer]: When using [`TimeUpdateStrategy::ManualDuration`](crate::TimeUpdateStrategy::ManualDuration),\n [`Time#impl-Time`] is only a *mock* of wall clock time.\n", + "associated_functions": [ + "bevy_time::real::Real::clone" + ], + "layout": { + "kind": "Struct", + "name": "Real", + "fields": [ + { + "name": "startup", + "type": { + "val": "bevy_platform::time::Instant" + } + }, + { + "name": "first_update", + "type": { + "option": { + "val": "bevy_platform::time::Instant" + } + } + }, + { + "name": "last_update", + "type": { + "option": { + "val": "bevy_platform::time::Instant" + } + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_time::stopwatch::Stopwatch": { + "identifier": "Stopwatch", + "crate": "bevy_time", + "path": "bevy_time::stopwatch::Stopwatch", + "documentation": " A Stopwatch is a struct that tracks elapsed time when started.\n\n Note that in order to advance the stopwatch [`tick`](Stopwatch::tick) **MUST** be called.\n # Examples\n\n ```\n # use bevy_time::*;\n use std::time::Duration;\n let mut stopwatch = Stopwatch::new();\n assert_eq!(stopwatch.elapsed_secs(), 0.0);\n\n stopwatch.tick(Duration::from_secs_f32(1.0)); // tick one second\n assert_eq!(stopwatch.elapsed_secs(), 1.0);\n\n stopwatch.pause();\n stopwatch.tick(Duration::from_secs_f32(1.0)); // paused stopwatches don't tick\n assert_eq!(stopwatch.elapsed_secs(), 1.0);\n\n stopwatch.reset(); // reset the stopwatch\n assert!(stopwatch.is_paused());\n assert_eq!(stopwatch.elapsed_secs(), 0.0);\n ```", + "associated_functions": [ + "bevy_time::stopwatch::Stopwatch::elapsed_secs", + "bevy_time::stopwatch::Stopwatch::pause", + "bevy_time::stopwatch::Stopwatch::clone", + "bevy_time::stopwatch::Stopwatch::reset", + "bevy_time::stopwatch::Stopwatch::assert_receiver_is_total_eq", + "bevy_time::stopwatch::Stopwatch::set_elapsed", + "bevy_time::stopwatch::Stopwatch::eq", + "bevy_time::stopwatch::Stopwatch::new", + "bevy_time::stopwatch::Stopwatch::elapsed_secs_f64", + "bevy_time::stopwatch::Stopwatch::is_paused", + "bevy_time::stopwatch::Stopwatch::unpause", + "bevy_time::stopwatch::Stopwatch::elapsed" + ], + "layout": { + "kind": "Struct", + "name": "Stopwatch", + "fields": [ + { + "name": "elapsed", + "type": { + "val": "core::time::Duration" + } + }, + { + "name": "is_paused", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_time::timer::Timer": { + "identifier": "Timer", + "crate": "bevy_time", + "path": "bevy_time::timer::Timer", + "documentation": " Tracks elapsed time. Enters the finished state once `duration` is reached.\n\n Note that in order to advance the timer [`tick`](Timer::tick) **MUST** be called.\n\n # Timer modes\n\n There are two timer modes ([`TimerMode`]):\n\n - Non repeating timers will stop tracking and stay in the finished state until reset.\n - Repeating timers will only be in the finished state on each tick `duration` is reached or\n exceeded, and can still be reset at any given point.\n\n # Pausing timers\n\n You can pause a timer using [`Timer::pause`]. Paused timers will not have elapsed time increased.\n\n # Elapsing multiple times a frame\n\n Repeating timers might elapse multiple times per frame if the time is advanced by more than the timer duration.\n You can check how many times a timer elapsed each tick with [`Timer::times_finished_this_tick`].\n For non-repeating timers, this will always be 0 or 1.", + "associated_functions": [ + "bevy_time::timer::Timer::from_seconds", + "bevy_time::timer::Timer::elapsed_secs_f64", + "bevy_time::timer::Timer::unpause", + "bevy_time::timer::Timer::clone", + "bevy_time::timer::Timer::remaining", + "bevy_time::timer::Timer::new", + "bevy_time::timer::Timer::mode", + "bevy_time::timer::Timer::fraction_remaining", + "bevy_time::timer::Timer::assert_receiver_is_total_eq", + "bevy_time::timer::Timer::fraction", + "bevy_time::timer::Timer::set_duration", + "bevy_time::timer::Timer::reset", + "bevy_time::timer::Timer::is_paused", + "bevy_time::timer::Timer::eq", + "bevy_time::timer::Timer::duration", + "bevy_time::timer::Timer::elapsed_secs", + "bevy_time::timer::Timer::just_finished", + "bevy_time::timer::Timer::finish", + "bevy_time::timer::Timer::pause", + "bevy_time::timer::Timer::is_finished", + "bevy_time::timer::Timer::elapsed", + "bevy_time::timer::Timer::set_mode", + "bevy_time::timer::Timer::almost_finish", + "bevy_time::timer::Timer::set_elapsed", + "bevy_time::timer::Timer::remaining_secs", + "bevy_time::timer::Timer::times_finished_this_tick" + ], + "layout": { + "kind": "Struct", + "name": "Timer", + "fields": [ + { + "name": "stopwatch", + "type": { + "val": "bevy_time::stopwatch::Stopwatch" + } + }, + { + "name": "duration", + "type": { + "val": "core::time::Duration" + } + }, + { + "name": "mode", + "type": { + "val": "bevy_time::timer::TimerMode" + } + }, + { + "name": "finished", + "type": { + "primitive": "bool" + } + }, + { + "name": "times_finished_this_tick", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_time::timer::TimerMode": { + "identifier": "TimerMode", + "crate": "bevy_time", + "path": "bevy_time::timer::TimerMode", + "documentation": " Specifies [`Timer`] behavior.", + "associated_functions": [ + "bevy_time::timer::TimerMode::clone", + "bevy_time::timer::TimerMode::eq", + "bevy_time::timer::TimerMode::assert_receiver_is_total_eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "Once" + }, + { + "kind": "Unit", + "name": "Repeating" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_time::virt::Virtual": { + "identifier": "Virtual", + "crate": "bevy_time", + "path": "bevy_time::virt::Virtual", + "documentation": " The virtual game clock representing game time.\n\n A specialization of the [`Time`] structure. **For method documentation, see\n [`Time#impl-Time`].**\n\n Normally used as `Time`. It is automatically inserted as a resource\n by [`TimePlugin`](crate::TimePlugin) and updated based on\n [`Time`](Real). The virtual clock is automatically set as the default\n generic [`Time`] resource for the update.\n\n The virtual clock differs from real time clock in that it can be paused, sped up\n and slowed down. It also limits how much it can advance in a single update\n in order to prevent unexpected behavior in cases where updates do not happen\n at regular intervals (e.g. coming back after the program was suspended a long time).\n\n The virtual clock can be paused by calling [`pause()`](Time::pause) and\n unpaused by calling [`unpause()`](Time::unpause). When the game clock is\n paused [`delta()`](Time::delta) will be zero on each update, and\n [`elapsed()`](Time::elapsed) will not grow.\n [`effective_speed()`](Time::effective_speed) will return `0.0`. Calling\n [`pause()`](Time::pause) will not affect value the [`delta()`](Time::delta)\n value for the update currently being processed.\n\n The speed of the virtual clock can be changed by calling\n [`set_relative_speed()`](Time::set_relative_speed). A value of `2.0` means\n that virtual clock should advance twice as fast as real time, meaning that\n [`delta()`](Time::delta) values will be double of what\n [`Time::delta()`](Time::delta) reports and\n [`elapsed()`](Time::elapsed) will go twice as fast as\n [`Time::elapsed()`](Time::elapsed). Calling\n [`set_relative_speed()`](Time::set_relative_speed) will not affect the\n [`delta()`](Time::delta) value for the update currently being processed.\n\n The maximum amount of delta time that can be added by a single update can be\n set by [`set_max_delta()`](Time::set_max_delta). This value serves a dual\n purpose in the virtual clock.\n\n If the game temporarily freezes due to any reason, such as disk access, a\n blocking system call, or operating system level suspend, reporting the full\n elapsed delta time is likely to cause bugs in game logic. Usually if a\n laptop is suspended for an hour, it doesn't make sense to try to simulate\n the game logic for the elapsed hour when resuming. Instead it is better to\n lose the extra time and pretend a shorter duration of time passed. Setting\n [`max_delta()`](Time::max_delta) to a relatively short time means that the\n impact on game logic will be minimal.\n\n If the game lags for some reason, meaning that it will take a longer time to\n compute a frame than the real time that passes during the computation, then\n we would fall behind in processing virtual time. If this situation persists,\n and computing a frame takes longer depending on how much virtual time has\n passed, the game would enter a \"death spiral\" where computing each frame\n takes longer and longer and the game will appear to freeze. By limiting the\n maximum time that can be added at once, we also limit the amount of virtual\n time the game needs to compute for each frame. This means that the game will\n run slow, and it will run slower than real time, but it will not freeze and\n it will recover as soon as computation becomes fast again.\n\n You should set [`max_delta()`](Time::max_delta) to a value that is\n approximately the minimum FPS your game should have even if heavily lagged\n for a moment. The actual FPS when lagged will be somewhat lower than this,\n depending on how much more time it takes to compute a frame compared to real\n time. You should also consider how stable your FPS is, as the limit will\n also dictate how big of an FPS drop you can accept without losing time and\n falling behind real time.", + "associated_functions": [ + "bevy_time::virt::Virtual::clone" + ], + "layout": { + "kind": "Struct", + "name": "Virtual", + "fields": [ + { + "name": "max_delta", + "type": { + "val": "core::time::Duration" + } + }, + { + "name": "paused", + "type": { + "primitive": "bool" + } + }, + { + "name": "relative_speed", + "type": { + "primitive": "f64" + } + }, + { + "name": "effective_speed", + "type": { + "primitive": "f64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_transform::components::global_transform::GlobalTransform": { + "identifier": "GlobalTransform", + "crate": "bevy_transform", + "path": "bevy_transform::components::global_transform::GlobalTransform", + "documentation": " [`GlobalTransform`] is an affine transformation from entity-local coordinates to worldspace coordinates.\n\n You cannot directly mutate [`GlobalTransform`]; instead, you change an entity's transform by manipulating\n its [`Transform`], which indirectly causes Bevy to update its [`GlobalTransform`].\n\n * To get the global transform of an entity, you should get its [`GlobalTransform`].\n * For transform hierarchies to work correctly, you must have both a [`Transform`] and a [`GlobalTransform`].\n [`GlobalTransform`] is automatically inserted whenever [`Transform`] is inserted.\n\n ## [`Transform`] and [`GlobalTransform`]\n\n [`Transform`] transforms an entity relative to its parent's reference frame, or relative to world space coordinates,\n if it doesn't have a [`ChildOf`](bevy_ecs::hierarchy::ChildOf) component.\n\n [`GlobalTransform`] is managed by Bevy; it is computed by successively applying the [`Transform`] of each ancestor\n entity which has a Transform. This is done automatically by Bevy-internal systems in the [`TransformSystems::Propagate`]\n system set.\n\n This system runs during [`PostUpdate`](bevy_app::PostUpdate). If you\n update the [`Transform`] of an entity in this schedule or after, you will notice a 1 frame lag\n before the [`GlobalTransform`] is updated.\n\n [`TransformSystems::Propagate`]: crate::TransformSystems::Propagate\n\n # Examples\n\n - [`transform`][transform_example]\n\n [transform_example]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/transform.rs", + "associated_functions": [ + "bevy_transform::components::global_transform::GlobalTransform::mul-1", + "bevy_transform::components::global_transform::GlobalTransform::reparented_to", + "bevy_transform::components::global_transform::GlobalTransform::translation_vec3a", + "bevy_transform::components::global_transform::GlobalTransform::from_xyz", + "bevy_transform::components::global_transform::GlobalTransform::from_translation", + "bevy_transform::components::global_transform::GlobalTransform::from_isometry", + "bevy_transform::components::global_transform::GlobalTransform::to_matrix", + "bevy_transform::components::global_transform::GlobalTransform::affine", + "bevy_transform::components::global_transform::GlobalTransform::down", + "bevy_transform::components::global_transform::GlobalTransform::from_rotation", + "bevy_transform::components::global_transform::GlobalTransform::transform_point", + "bevy_transform::components::global_transform::GlobalTransform::translation", + "bevy_transform::components::global_transform::GlobalTransform::clone", + "bevy_transform::components::global_transform::GlobalTransform::up", + "bevy_transform::components::global_transform::GlobalTransform::compute_transform", + "bevy_transform::components::global_transform::GlobalTransform::to_isometry", + "bevy_transform::components::global_transform::GlobalTransform::scale", + "bevy_transform::components::global_transform::GlobalTransform::left", + "bevy_transform::components::global_transform::GlobalTransform::rotation", + "bevy_transform::components::global_transform::GlobalTransform::mul-2", + "bevy_transform::components::global_transform::GlobalTransform::from_scale", + "bevy_transform::components::global_transform::GlobalTransform::mul_transform", + "bevy_transform::components::global_transform::GlobalTransform::eq", + "bevy_transform::components::global_transform::GlobalTransform::mul", + "bevy_transform::components::global_transform::GlobalTransform::right", + "bevy_transform::components::global_transform::GlobalTransform::forward", + "bevy_transform::components::global_transform::GlobalTransform::radius_vec3a", + "bevy_transform::components::global_transform::GlobalTransform::back" + ], + "layout": { + "kind": "TupleStruct", + "name": "GlobalTransform", + "fields": [ + { + "type": { + "val": "glam::Affine3A" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_transform::components::transform::Transform": { + "identifier": "Transform", + "crate": "bevy_transform", + "path": "bevy_transform::components::transform::Transform", + "documentation": " Describe the position of an entity. If the entity has a parent, the position is relative\n to its parent position.\n\n * To place or move an entity, you should set its [`Transform`].\n * To get the global transform of an entity, you should get its [`GlobalTransform`].\n * To be displayed, an entity must have both a [`Transform`] and a [`GlobalTransform`].\n [`GlobalTransform`] is automatically inserted whenever [`Transform`] is inserted.\n\n ## [`Transform`] and [`GlobalTransform`]\n\n [`Transform`] is the position of an entity relative to its parent position, or the reference\n frame if it doesn't have a [`ChildOf`](bevy_ecs::hierarchy::ChildOf) component.\n\n [`GlobalTransform`] is the position of an entity relative to the reference frame.\n\n [`GlobalTransform`] is updated from [`Transform`] in the [`TransformSystems::Propagate`]\n system set.\n\n This system runs during [`PostUpdate`](bevy_app::PostUpdate). If you\n update the [`Transform`] of an entity during this set or after, you will notice a 1 frame lag\n before the [`GlobalTransform`] is updated.\n\n [`TransformSystems::Propagate`]: crate::TransformSystems::Propagate\n\n # Examples\n\n - [`transform`][transform_example]\n\n [transform_example]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/transform.rs", + "associated_functions": [ + "bevy_transform::components::transform::Transform::up", + "bevy_transform::components::transform::Transform::eq", + "bevy_transform::components::transform::Transform::with_rotation", + "bevy_transform::components::transform::Transform::transform_point", + "bevy_transform::components::transform::Transform::rotate_x", + "bevy_transform::components::transform::Transform::rotate_around", + "bevy_transform::components::transform::Transform::to_matrix", + "bevy_transform::components::transform::Transform::translate_around", + "bevy_transform::components::transform::Transform::rotate_local_z", + "bevy_transform::components::transform::Transform::local_y", + "bevy_transform::components::transform::Transform::right", + "bevy_transform::components::transform::Transform::local_z", + "bevy_transform::components::transform::Transform::from_scale", + "bevy_transform::components::transform::Transform::back", + "bevy_transform::components::transform::Transform::from_rotation", + "bevy_transform::components::transform::Transform::down", + "bevy_transform::components::transform::Transform::forward", + "bevy_transform::components::transform::Transform::to_isometry", + "bevy_transform::components::transform::Transform::compute_affine", + "bevy_transform::components::transform::Transform::mul_transform", + "bevy_transform::components::transform::Transform::left", + "bevy_transform::components::transform::Transform::clone", + "bevy_transform::components::transform::Transform::is_finite", + "bevy_transform::components::transform::Transform::mul", + "bevy_transform::components::transform::Transform::mul-1", + "bevy_transform::components::transform::Transform::rotate_axis", + "bevy_transform::components::transform::Transform::rotate_local_y", + "bevy_transform::components::transform::Transform::rotate_local_axis", + "bevy_transform::components::transform::Transform::from_xyz", + "bevy_transform::components::transform::Transform::mul-2", + "bevy_transform::components::transform::Transform::from_matrix", + "bevy_transform::components::transform::Transform::rotate", + "bevy_transform::components::transform::Transform::with_translation", + "bevy_transform::components::transform::Transform::with_scale", + "bevy_transform::components::transform::Transform::from_isometry", + "bevy_transform::components::transform::Transform::rotate_y", + "bevy_transform::components::transform::Transform::rotate_local_x", + "bevy_transform::components::transform::Transform::rotate_local", + "bevy_transform::components::transform::Transform::rotate_z", + "bevy_transform::components::transform::Transform::from_translation", + "bevy_transform::components::transform::Transform::local_x" + ], + "layout": { + "kind": "Struct", + "name": "Transform", + "fields": [ + { + "name": "translation", + "type": { + "val": "glam::Vec3" + } + }, + { + "name": "rotation", + "type": { + "val": "glam::Quat" + } + }, + { + "name": "scale", + "type": { + "val": "glam::Vec3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_transform::components::transform::TransformTreeChanged": { + "identifier": "TransformTreeChanged", + "crate": "bevy_transform", + "path": "bevy_transform::components::transform::TransformTreeChanged", + "documentation": " An optimization for transform propagation. This ZST marker component uses change detection to\n mark all entities of the hierarchy as \"dirty\" if any of their descendants have a changed\n `Transform`. If this component is *not* marked `is_changed()`, propagation will halt.", + "associated_functions": [ + "bevy_transform::components::transform::TransformTreeChanged::clone", + "bevy_transform::components::transform::TransformTreeChanged::eq" + ], + "layout": { + "kind": "Struct", + "name": "TransformTreeChanged" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_transform::systems::StaticTransformOptimizations": { + "identifier": "StaticTransformOptimizations", + "crate": "bevy_transform", + "path": "bevy_transform::systems::StaticTransformOptimizations", + "documentation": " Configure the behavior of static scene optimizations for [`Transform`] propagation.\n\n For scenes with many static entities, it is much faster to track trees of unchanged\n [`Transform`]s and skip these during the expensive transform propagation step. If your scene is\n very dynamic, the cost of tracking these trees can exceed the performance benefits. By default,\n static scene optimization is disabled for worlds with more than 30% of its entities moving.\n\n This resource allows you to configure that threshold at runtime.", + "associated_functions": [ + "bevy_transform::systems::StaticTransformOptimizations::disabled", + "bevy_transform::systems::StaticTransformOptimizations::from_threshold", + "bevy_transform::systems::StaticTransformOptimizations::enabled" + ], + "layout": { + "kind": "Struct", + "name": "StaticTransformOptimizations", + "fields": [ + { + "name": "threshold", + "type": { + "primitive": "f32" + } + }, + { + "name": "enabled", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::any::TypeId": { + "identifier": "TypeId", + "crate": "core", + "path": "core::any::TypeId", + "associated_functions": [ + "core::any::TypeId::eq", + "core::any::TypeId::assert_receiver_is_total_eq", + "core::any::TypeId::clone" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::net::SocketAddr": { + "identifier": "SocketAddr", + "crate": "core", + "path": "core::net::SocketAddr", + "associated_functions": [ + "core::net::SocketAddr::is_ipv6", + "core::net::SocketAddr::eq", + "core::net::SocketAddr::assert_receiver_is_total_eq", + "core::net::SocketAddr::clone", + "core::net::SocketAddr::set_port", + "core::net::SocketAddr::port", + "core::net::SocketAddr::is_ipv4" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::ops::RangeFull": { + "identifier": "RangeFull", + "crate": "core", + "path": "core::ops::RangeFull", + "associated_functions": [ + "core::ops::RangeFull::clone", + "core::ops::RangeFull::eq", + "core::ops::RangeFull::assert_receiver_is_total_eq" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicBool": { + "identifier": "AtomicBool", + "crate": "core", + "path": "core::sync::atomic::AtomicBool", + "associated_functions": [ + "core::sync::atomic::AtomicBool::into_inner", + "core::sync::atomic::AtomicBool::new" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicI16": { + "identifier": "AtomicI16", + "crate": "core", + "path": "core::sync::atomic::AtomicI16", + "associated_functions": [ + "core::sync::atomic::AtomicI16::new", + "core::sync::atomic::AtomicI16::into_inner" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicI32": { + "identifier": "AtomicI32", + "crate": "core", + "path": "core::sync::atomic::AtomicI32", + "associated_functions": [ + "core::sync::atomic::AtomicI32::into_inner", + "core::sync::atomic::AtomicI32::new" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicI64": { + "identifier": "AtomicI64", + "crate": "core", + "path": "core::sync::atomic::AtomicI64", + "associated_functions": [ + "core::sync::atomic::AtomicI64::new", + "core::sync::atomic::AtomicI64::into_inner" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicI8": { + "identifier": "AtomicI8", + "crate": "core", + "path": "core::sync::atomic::AtomicI8", + "associated_functions": [ + "core::sync::atomic::AtomicI8::new", + "core::sync::atomic::AtomicI8::into_inner" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicIsize": { + "identifier": "AtomicIsize", + "crate": "core", + "path": "core::sync::atomic::AtomicIsize", + "associated_functions": [ + "core::sync::atomic::AtomicIsize::into_inner", + "core::sync::atomic::AtomicIsize::new" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicU16": { + "identifier": "AtomicU16", + "crate": "core", + "path": "core::sync::atomic::AtomicU16", + "associated_functions": [ + "core::sync::atomic::AtomicU16::new", + "core::sync::atomic::AtomicU16::into_inner" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicU32": { + "identifier": "AtomicU32", + "crate": "core", + "path": "core::sync::atomic::AtomicU32", + "associated_functions": [ + "core::sync::atomic::AtomicU32::into_inner", + "core::sync::atomic::AtomicU32::new" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicU64": { + "identifier": "AtomicU64", + "crate": "core", + "path": "core::sync::atomic::AtomicU64", + "associated_functions": [ + "core::sync::atomic::AtomicU64::into_inner", + "core::sync::atomic::AtomicU64::new" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicU8": { + "identifier": "AtomicU8", + "crate": "core", + "path": "core::sync::atomic::AtomicU8", + "associated_functions": [ + "core::sync::atomic::AtomicU8::new", + "core::sync::atomic::AtomicU8::into_inner" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::sync::atomic::AtomicUsize": { + "identifier": "AtomicUsize", + "crate": "core", + "path": "core::sync::atomic::AtomicUsize", + "associated_functions": [ + "core::sync::atomic::AtomicUsize::new", + "core::sync::atomic::AtomicUsize::into_inner" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::time::Duration": { + "identifier": "Duration", + "crate": "core", + "path": "core::time::Duration", + "associated_functions": [ + "core::time::Duration::saturating_mul", + "core::time::Duration::as_nanos", + "core::time::Duration::subsec_nanos", + "core::time::Duration::as_secs_f32", + "core::time::Duration::from_secs_f32", + "core::time::Duration::mul_f32", + "core::time::Duration::saturating_add", + "core::time::Duration::from_millis", + "core::time::Duration::div_duration_f32", + "core::time::Duration::new", + "core::time::Duration::from_secs_f64", + "core::time::Duration::add", + "core::time::Duration::eq", + "core::time::Duration::as_secs_f64", + "core::time::Duration::subsec_micros", + "core::time::Duration::assert_receiver_is_total_eq", + "core::time::Duration::clone", + "core::time::Duration::subsec_millis", + "core::time::Duration::abs_diff", + "core::time::Duration::div", + "core::time::Duration::sub", + "core::time::Duration::as_secs", + "core::time::Duration::from_micros", + "core::time::Duration::div_duration_f64", + "core::time::Duration::mul", + "core::time::Duration::as_micros", + "core::time::Duration::from_nanos", + "core::time::Duration::from_secs", + "core::time::Duration::div_f32", + "core::time::Duration::as_millis", + "core::time::Duration::div_f64", + "core::time::Duration::mul_f64", + "core::time::Duration::saturating_sub", + "core::time::Duration::is_zero" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Affine2": { + "identifier": "Affine2", + "crate": "glam", + "path": "glam::Affine2", + "associated_functions": [ + "glam::Affine2::transform_point2", + "glam::Affine2::from_scale", + "glam::Affine2::transform_vector2", + "glam::Affine2::as_daffine2", + "glam::Affine2::is_finite", + "glam::Affine2::abs_diff_eq", + "glam::Affine2::mul-3", + "glam::Affine2::clone", + "glam::Affine2::from_mat3", + "glam::Affine2::to_cols_array_2d", + "glam::Affine2::eq", + "glam::Affine2::mul-5", + "glam::Affine2::from_mat2", + "glam::Affine2::to_cols_array", + "glam::Affine2::mul-4", + "glam::Affine2::inverse", + "glam::Affine2::from_angle_translation", + "glam::Affine2::from_mat3a", + "glam::Affine2::from_translation", + "glam::Affine2::from_mat2_translation", + "glam::Affine2::from_angle", + "glam::Affine2::mul-1", + "glam::Affine2::mul-2", + "glam::Affine2::mul", + "glam::Affine2::from_scale_angle_translation", + "glam::Affine2::is_nan", + "glam::Affine2::from_cols" + ], + "layout": { + "kind": "Struct", + "name": "Affine2", + "fields": [ + { + "name": "matrix2", + "type": { + "val": "glam::Mat2" + } + }, + { + "name": "translation", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Affine3A": { + "identifier": "Affine3A", + "crate": "glam", + "path": "glam::Affine3A", + "associated_functions": [ + "glam::Affine3A::from_rotation_x", + "glam::Affine3A::is_nan", + "glam::Affine3A::from_axis_angle", + "glam::Affine3A::from_scale", + "glam::Affine3A::mul", + "glam::Affine3A::transform_point3", + "glam::Affine3A::look_to_rh", + "glam::Affine3A::mul-1", + "glam::Affine3A::from_mat3_translation", + "glam::Affine3A::from_rotation_z", + "glam::Affine3A::transform_point3a", + "glam::Affine3A::from_quat", + "glam::Affine3A::mul-2", + "glam::Affine3A::clone", + "glam::Affine3A::is_finite", + "glam::Affine3A::transform_vector3a", + "glam::Affine3A::from_scale_rotation_translation", + "glam::Affine3A::look_at_rh", + "glam::Affine3A::abs_diff_eq", + "glam::Affine3A::look_at_lh", + "glam::Affine3A::from_mat4", + "glam::Affine3A::look_to_lh", + "glam::Affine3A::from_rotation_translation", + "glam::Affine3A::from_mat3", + "glam::Affine3A::mul-3", + "glam::Affine3A::to_cols_array", + "glam::Affine3A::from_cols", + "glam::Affine3A::transform_vector3", + "glam::Affine3A::from_rotation_y", + "glam::Affine3A::from_translation", + "glam::Affine3A::to_cols_array_2d", + "glam::Affine3A::as_daffine3", + "glam::Affine3A::inverse", + "glam::Affine3A::eq" + ], + "layout": { + "kind": "Struct", + "name": "Affine3A", + "fields": [ + { + "name": "matrix3", + "type": { + "val": "glam::Mat3A" + } + }, + { + "name": "translation", + "type": { + "val": "glam::Vec3A" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::BVec2": { + "identifier": "BVec2", + "crate": "glam", + "path": "glam::BVec2", + "associated_functions": [ + "glam::BVec2::from_array", + "glam::BVec2::bitmask", + "glam::BVec2::clone", + "glam::BVec2::eq", + "glam::BVec2::set", + "glam::BVec2::assert_receiver_is_total_eq", + "glam::BVec2::test", + "glam::BVec2::all", + "glam::BVec2::splat", + "glam::BVec2::any", + "glam::BVec2::new" + ], + "layout": { + "kind": "Struct", + "name": "BVec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "bool" + } + }, + { + "name": "y", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::BVec3": { + "identifier": "BVec3", + "crate": "glam", + "path": "glam::BVec3", + "associated_functions": [ + "glam::BVec3::assert_receiver_is_total_eq", + "glam::BVec3::new", + "glam::BVec3::splat", + "glam::BVec3::bitmask", + "glam::BVec3::from_array", + "glam::BVec3::eq", + "glam::BVec3::all", + "glam::BVec3::any", + "glam::BVec3::set", + "glam::BVec3::test", + "glam::BVec3::clone" + ], + "layout": { + "kind": "Struct", + "name": "BVec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "bool" + } + }, + { + "name": "y", + "type": { + "primitive": "bool" + } + }, + { + "name": "z", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::BVec3A": { + "identifier": "BVec3A", + "crate": "glam", + "path": "glam::BVec3A", + "associated_functions": [ + "glam::BVec3A::from_array", + "glam::BVec3A::clone", + "glam::BVec3A::new", + "glam::BVec3A::test", + "glam::BVec3A::set", + "glam::BVec3A::eq", + "glam::BVec3A::all", + "glam::BVec3A::splat", + "glam::BVec3A::any", + "glam::BVec3A::bitmask" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::BVec4": { + "identifier": "BVec4", + "crate": "glam", + "path": "glam::BVec4", + "associated_functions": [ + "glam::BVec4::any", + "glam::BVec4::assert_receiver_is_total_eq", + "glam::BVec4::test", + "glam::BVec4::all", + "glam::BVec4::set", + "glam::BVec4::bitmask", + "glam::BVec4::clone", + "glam::BVec4::eq", + "glam::BVec4::splat", + "glam::BVec4::new", + "glam::BVec4::from_array" + ], + "layout": { + "kind": "Struct", + "name": "BVec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "bool" + } + }, + { + "name": "y", + "type": { + "primitive": "bool" + } + }, + { + "name": "z", + "type": { + "primitive": "bool" + } + }, + { + "name": "w", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::BVec4A": { + "identifier": "BVec4A", + "crate": "glam", + "path": "glam::BVec4A", + "associated_functions": [ + "glam::BVec4A::splat", + "glam::BVec4A::bitmask", + "glam::BVec4A::from_array", + "glam::BVec4A::any", + "glam::BVec4A::set", + "glam::BVec4A::clone", + "glam::BVec4A::new", + "glam::BVec4A::test", + "glam::BVec4A::all", + "glam::BVec4A::eq" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DAffine2": { + "identifier": "DAffine2", + "crate": "glam", + "path": "glam::DAffine2", + "associated_functions": [ + "glam::DAffine2::from_scale_angle_translation", + "glam::DAffine2::from_angle", + "glam::DAffine2::is_finite", + "glam::DAffine2::from_cols", + "glam::DAffine2::eq", + "glam::DAffine2::from_scale", + "glam::DAffine2::mul-1", + "glam::DAffine2::from_angle_translation", + "glam::DAffine2::abs_diff_eq", + "glam::DAffine2::transform_vector2", + "glam::DAffine2::from_mat2_translation", + "glam::DAffine2::mul-2", + "glam::DAffine2::to_cols_array", + "glam::DAffine2::mul-3", + "glam::DAffine2::transform_point2", + "glam::DAffine2::mul", + "glam::DAffine2::to_cols_array_2d", + "glam::DAffine2::is_nan", + "glam::DAffine2::from_translation", + "glam::DAffine2::as_affine2", + "glam::DAffine2::from_mat3", + "glam::DAffine2::clone", + "glam::DAffine2::from_mat2", + "glam::DAffine2::inverse" + ], + "layout": { + "kind": "Struct", + "name": "DAffine2", + "fields": [ + { + "name": "matrix2", + "type": { + "val": "glam::DMat2" + } + }, + { + "name": "translation", + "type": { + "val": "glam::DVec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DAffine3": { + "identifier": "DAffine3", + "crate": "glam", + "path": "glam::DAffine3", + "associated_functions": [ + "glam::DAffine3::mul-1", + "glam::DAffine3::from_translation", + "glam::DAffine3::look_at_lh", + "glam::DAffine3::to_cols_array_2d", + "glam::DAffine3::from_rotation_translation", + "glam::DAffine3::from_quat", + "glam::DAffine3::as_affine3a", + "glam::DAffine3::from_mat4", + "glam::DAffine3::is_finite", + "glam::DAffine3::from_mat3_translation", + "glam::DAffine3::look_at_rh", + "glam::DAffine3::inverse", + "glam::DAffine3::from_mat3", + "glam::DAffine3::mul-2", + "glam::DAffine3::eq", + "glam::DAffine3::to_cols_array", + "glam::DAffine3::transform_point3", + "glam::DAffine3::mul-3", + "glam::DAffine3::from_scale_rotation_translation", + "glam::DAffine3::from_cols", + "glam::DAffine3::transform_vector3", + "glam::DAffine3::from_scale", + "glam::DAffine3::from_rotation_y", + "glam::DAffine3::look_to_rh", + "glam::DAffine3::clone", + "glam::DAffine3::look_to_lh", + "glam::DAffine3::from_rotation_x", + "glam::DAffine3::from_axis_angle", + "glam::DAffine3::mul", + "glam::DAffine3::is_nan", + "glam::DAffine3::from_rotation_z", + "glam::DAffine3::abs_diff_eq" + ], + "layout": { + "kind": "Struct", + "name": "DAffine3", + "fields": [ + { + "name": "matrix3", + "type": { + "val": "glam::DMat3" + } + }, + { + "name": "translation", + "type": { + "val": "glam::DVec3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DMat2": { + "identifier": "DMat2", + "crate": "glam", + "path": "glam::DMat2", + "associated_functions": [ + "glam::DMat2::add-1", + "glam::DMat2::eq", + "glam::DMat2::to_cols_array", + "glam::DMat2::abs_diff_eq", + "glam::DMat2::add_mat2", + "glam::DMat2::neg", + "glam::DMat2::from_cols", + "glam::DMat2::abs", + "glam::DMat2::mul-3", + "glam::DMat2::mul-4", + "glam::DMat2::row", + "glam::DMat2::from_mat3_minor", + "glam::DMat2::is_finite", + "glam::DMat2::from_diagonal", + "glam::DMat2::clone", + "glam::DMat2::mul_mat2", + "glam::DMat2::transpose", + "glam::DMat2::mul-2", + "glam::DMat2::sub_mat2", + "glam::DMat2::add", + "glam::DMat2::div", + "glam::DMat2::from_angle", + "glam::DMat2::from_mat3", + "glam::DMat2::sub", + "glam::DMat2::is_nan", + "glam::DMat2::determinant", + "glam::DMat2::mul_vec2", + "glam::DMat2::inverse", + "glam::DMat2::col", + "glam::DMat2::sub-1", + "glam::DMat2::as_mat2", + "glam::DMat2::mul_scalar", + "glam::DMat2::to_cols_array_2d", + "glam::DMat2::div_scalar", + "glam::DMat2::from_scale_angle", + "glam::DMat2::mul-1", + "glam::DMat2::mul" + ], + "layout": { + "kind": "Struct", + "name": "DMat2", + "fields": [ + { + "name": "x_axis", + "type": { + "val": "glam::DVec2" + } + }, + { + "name": "y_axis", + "type": { + "val": "glam::DVec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DMat3": { + "identifier": "DMat3", + "crate": "glam", + "path": "glam::DMat3", + "associated_functions": [ + "glam::DMat3::add", + "glam::DMat3::neg", + "glam::DMat3::mul-6", + "glam::DMat3::from_translation", + "glam::DMat3::transform_point2", + "glam::DMat3::to_euler", + "glam::DMat3::from_diagonal", + "glam::DMat3::row", + "glam::DMat3::from_rotation_z", + "glam::DMat3::from_rotation_x", + "glam::DMat3::abs", + "glam::DMat3::eq", + "glam::DMat3::mul-1", + "glam::DMat3::from_mat2", + "glam::DMat3::transpose", + "glam::DMat3::from_scale_angle_translation", + "glam::DMat3::abs_diff_eq", + "glam::DMat3::mul_scalar", + "glam::DMat3::div", + "glam::DMat3::sub_mat3", + "glam::DMat3::transform_vector2", + "glam::DMat3::div_scalar", + "glam::DMat3::sub", + "glam::DMat3::add-1", + "glam::DMat3::mul-2", + "glam::DMat3::from_angle", + "glam::DMat3::look_at_lh", + "glam::DMat3::from_rotation_y", + "glam::DMat3::from_axis_angle", + "glam::DMat3::mul_mat3", + "glam::DMat3::add_mat3", + "glam::DMat3::from_quat", + "glam::DMat3::look_to_rh", + "glam::DMat3::is_nan", + "glam::DMat3::mul_vec3", + "glam::DMat3::to_cols_array_2d", + "glam::DMat3::to_cols_array", + "glam::DMat3::mul-4", + "glam::DMat3::inverse", + "glam::DMat3::from_mat4", + "glam::DMat3::is_finite", + "glam::DMat3::from_cols", + "glam::DMat3::look_at_rh", + "glam::DMat3::clone", + "glam::DMat3::from_mat4_minor", + "glam::DMat3::col", + "glam::DMat3::as_mat3", + "glam::DMat3::determinant", + "glam::DMat3::mul-5", + "glam::DMat3::from_scale", + "glam::DMat3::from_euler", + "glam::DMat3::sub-1", + "glam::DMat3::look_to_lh", + "glam::DMat3::mul", + "glam::DMat3::mul-3" + ], + "layout": { + "kind": "Struct", + "name": "DMat3", + "fields": [ + { + "name": "x_axis", + "type": { + "val": "glam::DVec3" + } + }, + { + "name": "y_axis", + "type": { + "val": "glam::DVec3" + } + }, + { + "name": "z_axis", + "type": { + "val": "glam::DVec3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DMat4": { + "identifier": "DMat4", + "crate": "glam", + "path": "glam::DMat4", + "associated_functions": [ + "glam::DMat4::add-1", + "glam::DMat4::neg", + "glam::DMat4::perspective_infinite_reverse_lh", + "glam::DMat4::transform_vector3", + "glam::DMat4::frustum_rh", + "glam::DMat4::transform_point3", + "glam::DMat4::from_scale_rotation_translation", + "glam::DMat4::from_mat3", + "glam::DMat4::frustum_lh", + "glam::DMat4::perspective_infinite_rh", + "glam::DMat4::add_mat4", + "glam::DMat4::inverse", + "glam::DMat4::perspective_infinite_lh", + "glam::DMat4::orthographic_rh", + "glam::DMat4::frustum_rh_gl", + "glam::DMat4::mul-3", + "glam::DMat4::abs_diff_eq", + "glam::DMat4::perspective_infinite_reverse_rh", + "glam::DMat4::mul_mat4", + "glam::DMat4::look_to_rh", + "glam::DMat4::mul", + "glam::DMat4::clone", + "glam::DMat4::sub", + "glam::DMat4::eq", + "glam::DMat4::from_mat3_translation", + "glam::DMat4::from_euler", + "glam::DMat4::col", + "glam::DMat4::from_rotation_z", + "glam::DMat4::mul_vec4", + "glam::DMat4::to_cols_array_2d", + "glam::DMat4::mul-1", + "glam::DMat4::from_translation", + "glam::DMat4::div_scalar", + "glam::DMat4::from_rotation_x", + "glam::DMat4::abs", + "glam::DMat4::div", + "glam::DMat4::orthographic_lh", + "glam::DMat4::mul-6", + "glam::DMat4::is_finite", + "glam::DMat4::from_axis_angle", + "glam::DMat4::sub_mat4", + "glam::DMat4::orthographic_rh_gl", + "glam::DMat4::determinant", + "glam::DMat4::perspective_rh_gl", + "glam::DMat4::row", + "glam::DMat4::look_at_rh", + "glam::DMat4::from_diagonal", + "glam::DMat4::mul_scalar", + "glam::DMat4::from_cols", + "glam::DMat4::transpose", + "glam::DMat4::look_to_lh", + "glam::DMat4::project_point3", + "glam::DMat4::from_rotation_y", + "glam::DMat4::sub-1", + "glam::DMat4::is_nan", + "glam::DMat4::perspective_lh", + "glam::DMat4::mul-2", + "glam::DMat4::mul-4", + "glam::DMat4::from_rotation_translation", + "glam::DMat4::look_at_lh", + "glam::DMat4::to_euler", + "glam::DMat4::to_cols_array", + "glam::DMat4::add", + "glam::DMat4::mul-5", + "glam::DMat4::perspective_rh", + "glam::DMat4::from_quat", + "glam::DMat4::as_mat4", + "glam::DMat4::from_scale" + ], + "layout": { + "kind": "Struct", + "name": "DMat4", + "fields": [ + { + "name": "x_axis", + "type": { + "val": "glam::DVec4" + } + }, + { + "name": "y_axis", + "type": { + "val": "glam::DVec4" + } + }, + { + "name": "z_axis", + "type": { + "val": "glam::DVec4" + } + }, + { + "name": "w_axis", + "type": { + "val": "glam::DVec4" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DQuat": { + "identifier": "DQuat", + "crate": "glam", + "path": "glam::DQuat", + "associated_functions": [ + "glam::DQuat::add", + "glam::DQuat::mul-4", + "glam::DQuat::dot", + "glam::DQuat::add-1", + "glam::DQuat::from_rotation_arc", + "glam::DQuat::to_scaled_axis", + "glam::DQuat::from_rotation_z", + "glam::DQuat::abs_diff_eq", + "glam::DQuat::is_near_identity", + "glam::DQuat::from_euler", + "glam::DQuat::length_squared", + "glam::DQuat::from_array", + "glam::DQuat::mul", + "glam::DQuat::length", + "glam::DQuat::sub", + "glam::DQuat::from_scaled_axis", + "glam::DQuat::from_vec4", + "glam::DQuat::from_mat4", + "glam::DQuat::mul_vec3", + "glam::DQuat::clone", + "glam::DQuat::inverse", + "glam::DQuat::look_to_lh", + "glam::DQuat::neg", + "glam::DQuat::div", + "glam::DQuat::is_normalized", + "glam::DQuat::from_rotation_y", + "glam::DQuat::is_nan", + "glam::DQuat::conjugate", + "glam::DQuat::mul-3", + "glam::DQuat::from_rotation_arc_colinear", + "glam::DQuat::mul_quat", + "glam::DQuat::from_axis_angle", + "glam::DQuat::mul-1", + "glam::DQuat::mul-2", + "glam::DQuat::length_recip", + "glam::DQuat::from_rotation_x", + "glam::DQuat::eq", + "glam::DQuat::from_xyzw", + "glam::DQuat::look_to_rh", + "glam::DQuat::from_mat3", + "glam::DQuat::rotate_towards", + "glam::DQuat::angle_between", + "glam::DQuat::sub-1", + "glam::DQuat::to_euler", + "glam::DQuat::to_array", + "glam::DQuat::from_affine3", + "glam::DQuat::lerp", + "glam::DQuat::is_finite", + "glam::DQuat::from_rotation_arc_2d", + "glam::DQuat::xyz", + "glam::DQuat::look_at_lh", + "glam::DQuat::normalize", + "glam::DQuat::slerp", + "glam::DQuat::look_at_rh", + "glam::DQuat::as_quat" + ], + "layout": { + "kind": "Struct", + "name": "DQuat", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f64" + } + }, + { + "name": "y", + "type": { + "primitive": "f64" + } + }, + { + "name": "z", + "type": { + "primitive": "f64" + } + }, + { + "name": "w", + "type": { + "primitive": "f64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DVec2": { + "identifier": "DVec2", + "crate": "glam", + "path": "glam::DVec2", + "associated_functions": [ + "glam::DVec2::project_onto", + "glam::DVec2::refract", + "glam::DVec2::project_onto_normalized", + "glam::DVec2::ceil", + "glam::DVec2::min_element", + "glam::DVec2::ln", + "glam::DVec2::fract_gl", + "glam::DVec2::is_negative_bitmask", + "glam::DVec2::trunc", + "glam::DVec2::as_i64vec2", + "glam::DVec2::length_recip", + "glam::DVec2::length", + "glam::DVec2::element_product", + "glam::DVec2::lerp", + "glam::DVec2::as_uvec2", + "glam::DVec2::div", + "glam::DVec2::mul-2", + "glam::DVec2::max", + "glam::DVec2::is_nan", + "glam::DVec2::angle_between", + "glam::DVec2::as_ivec2", + "glam::DVec2::move_towards", + "glam::DVec2::distance_squared", + "glam::DVec2::exp2", + "glam::DVec2::div_euclid", + "glam::DVec2::clone", + "glam::DVec2::from_angle", + "glam::DVec2::reflect", + "glam::DVec2::select", + "glam::DVec2::new", + "glam::DVec2::rem_euclid", + "glam::DVec2::element_sum", + "glam::DVec2::rotate_towards", + "glam::DVec2::cmpeq", + "glam::DVec2::is_nan_mask", + "glam::DVec2::min", + "glam::DVec2::as_u8vec2", + "glam::DVec2::sub-2", + "glam::DVec2::rem-2", + "glam::DVec2::copysign", + "glam::DVec2::is_normalized", + "glam::DVec2::clamp_length_max", + "glam::DVec2::rotate", + "glam::DVec2::mul-1", + "glam::DVec2::angle_to", + "glam::DVec2::add-1", + "glam::DVec2::floor", + "glam::DVec2::dot", + "glam::DVec2::normalize_or_zero", + "glam::DVec2::div-2", + "glam::DVec2::clamp_length", + "glam::DVec2::as_i16vec2", + "glam::DVec2::from_array", + "glam::DVec2::as_u16vec2", + "glam::DVec2::cmpge", + "glam::DVec2::is_finite", + "glam::DVec2::midpoint", + "glam::DVec2::cmplt", + "glam::DVec2::as_u64vec2", + "glam::DVec2::exp", + "glam::DVec2::is_finite_mask", + "glam::DVec2::cmpgt", + "glam::DVec2::powf", + "glam::DVec2::mul_add", + "glam::DVec2::neg", + "glam::DVec2::extend", + "glam::DVec2::signum", + "glam::DVec2::abs", + "glam::DVec2::fract", + "glam::DVec2::reject_from", + "glam::DVec2::sub-1", + "glam::DVec2::perp_dot", + "glam::DVec2::max_position", + "glam::DVec2::length_squared", + "glam::DVec2::eq", + "glam::DVec2::recip", + "glam::DVec2::to_array", + "glam::DVec2::abs_diff_eq", + "glam::DVec2::add", + "glam::DVec2::clamp_length_min", + "glam::DVec2::div-1", + "glam::DVec2::cmple", + "glam::DVec2::dot_into_vec", + "glam::DVec2::reject_from_normalized", + "glam::DVec2::splat", + "glam::DVec2::round", + "glam::DVec2::mul", + "glam::DVec2::distance", + "glam::DVec2::clamp", + "glam::DVec2::normalize", + "glam::DVec2::log2", + "glam::DVec2::normalize_or", + "glam::DVec2::rem", + "glam::DVec2::add-2", + "glam::DVec2::with_y", + "glam::DVec2::rem-1", + "glam::DVec2::as_vec2", + "glam::DVec2::sub", + "glam::DVec2::max_element", + "glam::DVec2::with_x", + "glam::DVec2::to_angle", + "glam::DVec2::cmpne", + "glam::DVec2::as_i8vec2", + "glam::DVec2::perp", + "glam::DVec2::min_position" + ], + "layout": { + "kind": "Struct", + "name": "DVec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f64" + } + }, + { + "name": "y", + "type": { + "primitive": "f64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DVec3": { + "identifier": "DVec3", + "crate": "glam", + "path": "glam::DVec3", + "associated_functions": [ + "glam::DVec3::select", + "glam::DVec3::div", + "glam::DVec3::cmpge", + "glam::DVec3::is_finite_mask", + "glam::DVec3::as_vec3a", + "glam::DVec3::angle_between", + "glam::DVec3::cmpgt", + "glam::DVec3::is_nan", + "glam::DVec3::fract", + "glam::DVec3::with_z", + "glam::DVec3::rotate_x", + "glam::DVec3::as_i64vec3", + "glam::DVec3::clamp_length_max", + "glam::DVec3::rotate_z", + "glam::DVec3::clone", + "glam::DVec3::element_product", + "glam::DVec3::length_squared", + "glam::DVec3::trunc", + "glam::DVec3::sub-2", + "glam::DVec3::rem-2", + "glam::DVec3::neg", + "glam::DVec3::floor", + "glam::DVec3::dot", + "glam::DVec3::min_position", + "glam::DVec3::ceil", + "glam::DVec3::ln", + "glam::DVec3::rotate_axis", + "glam::DVec3::recip", + "glam::DVec3::is_finite", + "glam::DVec3::rem_euclid", + "glam::DVec3::is_nan_mask", + "glam::DVec3::clamp_length", + "glam::DVec3::new", + "glam::DVec3::exp2", + "glam::DVec3::normalize", + "glam::DVec3::sub", + "glam::DVec3::distance", + "glam::DVec3::dot_into_vec", + "glam::DVec3::min", + "glam::DVec3::move_towards", + "glam::DVec3::any_orthogonal_vector", + "glam::DVec3::as_i16vec3", + "glam::DVec3::max", + "glam::DVec3::reject_from_normalized", + "glam::DVec3::div-2", + "glam::DVec3::max_position", + "glam::DVec3::with_y", + "glam::DVec3::fract_gl", + "glam::DVec3::reject_from", + "glam::DVec3::abs_diff_eq", + "glam::DVec3::as_uvec3", + "glam::DVec3::cmple", + "glam::DVec3::to_homogeneous", + "glam::DVec3::rem", + "glam::DVec3::as_u16vec3", + "glam::DVec3::distance_squared", + "glam::DVec3::normalize_or", + "glam::DVec3::length", + "glam::DVec3::mul", + "glam::DVec3::normalize_or_zero", + "glam::DVec3::abs", + "glam::DVec3::from_array", + "glam::DVec3::min_element", + "glam::DVec3::any_orthonormal_vector", + "glam::DVec3::as_i8vec3", + "glam::DVec3::splat", + "glam::DVec3::truncate", + "glam::DVec3::powf", + "glam::DVec3::cmpne", + "glam::DVec3::clamp_length_min", + "glam::DVec3::as_vec3", + "glam::DVec3::exp", + "glam::DVec3::from_homogeneous", + "glam::DVec3::as_ivec3", + "glam::DVec3::is_negative_bitmask", + "glam::DVec3::slerp", + "glam::DVec3::reflect", + "glam::DVec3::cmpeq", + "glam::DVec3::div-1", + "glam::DVec3::mul-1", + "glam::DVec3::mul_add", + "glam::DVec3::sub-1", + "glam::DVec3::rotate_towards", + "glam::DVec3::with_x", + "glam::DVec3::element_sum", + "glam::DVec3::mul-2", + "glam::DVec3::clamp", + "glam::DVec3::as_u8vec3", + "glam::DVec3::log2", + "glam::DVec3::refract", + "glam::DVec3::max_element", + "glam::DVec3::project_onto_normalized", + "glam::DVec3::rem-1", + "glam::DVec3::cross", + "glam::DVec3::project_onto", + "glam::DVec3::midpoint", + "glam::DVec3::length_recip", + "glam::DVec3::to_array", + "glam::DVec3::round", + "glam::DVec3::div_euclid", + "glam::DVec3::cmplt", + "glam::DVec3::is_normalized", + "glam::DVec3::add-2", + "glam::DVec3::signum", + "glam::DVec3::eq", + "glam::DVec3::extend", + "glam::DVec3::lerp", + "glam::DVec3::copysign", + "glam::DVec3::rotate_y", + "glam::DVec3::add-1", + "glam::DVec3::as_u64vec3", + "glam::DVec3::add" + ], + "layout": { + "kind": "Struct", + "name": "DVec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f64" + } + }, + { + "name": "y", + "type": { + "primitive": "f64" + } + }, + { + "name": "z", + "type": { + "primitive": "f64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::DVec4": { + "identifier": "DVec4", + "crate": "glam", + "path": "glam::DVec4", + "associated_functions": [ + "glam::DVec4::exp2", + "glam::DVec4::div_euclid", + "glam::DVec4::min", + "glam::DVec4::div-1", + "glam::DVec4::copysign", + "glam::DVec4::rem-2", + "glam::DVec4::eq", + "glam::DVec4::is_nan", + "glam::DVec4::neg", + "glam::DVec4::cmpeq", + "glam::DVec4::cmpne", + "glam::DVec4::floor", + "glam::DVec4::element_product", + "glam::DVec4::mul-2", + "glam::DVec4::as_ivec4", + "glam::DVec4::normalize_or_zero", + "glam::DVec4::sub-2", + "glam::DVec4::clamp_length_min", + "glam::DVec4::add-2", + "glam::DVec4::rem_euclid", + "glam::DVec4::normalize", + "glam::DVec4::powf", + "glam::DVec4::midpoint", + "glam::DVec4::cmpgt", + "glam::DVec4::cmplt", + "glam::DVec4::as_u16vec4", + "glam::DVec4::select", + "glam::DVec4::abs_diff_eq", + "glam::DVec4::clamp_length", + "glam::DVec4::max_position", + "glam::DVec4::with_z", + "glam::DVec4::is_normalized", + "glam::DVec4::ln", + "glam::DVec4::div-2", + "glam::DVec4::cmple", + "glam::DVec4::is_finite_mask", + "glam::DVec4::refract", + "glam::DVec4::as_u64vec4", + "glam::DVec4::rem", + "glam::DVec4::mul_add", + "glam::DVec4::reflect", + "glam::DVec4::mul-1", + "glam::DVec4::new", + "glam::DVec4::sub", + "glam::DVec4::lerp", + "glam::DVec4::ceil", + "glam::DVec4::round", + "glam::DVec4::reject_from_normalized", + "glam::DVec4::add-1", + "glam::DVec4::max", + "glam::DVec4::project_onto_normalized", + "glam::DVec4::to_array", + "glam::DVec4::abs", + "glam::DVec4::as_i16vec4", + "glam::DVec4::recip", + "glam::DVec4::splat", + "glam::DVec4::truncate", + "glam::DVec4::mul", + "glam::DVec4::trunc", + "glam::DVec4::project", + "glam::DVec4::length_squared", + "glam::DVec4::reject_from", + "glam::DVec4::signum", + "glam::DVec4::is_finite", + "glam::DVec4::is_nan_mask", + "glam::DVec4::rem-1", + "glam::DVec4::dot", + "glam::DVec4::element_sum", + "glam::DVec4::min_element", + "glam::DVec4::from_array", + "glam::DVec4::as_i8vec4", + "glam::DVec4::distance", + "glam::DVec4::fract", + "glam::DVec4::with_w", + "glam::DVec4::fract_gl", + "glam::DVec4::clamp", + "glam::DVec4::is_negative_bitmask", + "glam::DVec4::with_y", + "glam::DVec4::exp", + "glam::DVec4::as_vec4", + "glam::DVec4::sub-1", + "glam::DVec4::as_i64vec4", + "glam::DVec4::normalize_or", + "glam::DVec4::move_towards", + "glam::DVec4::dot_into_vec", + "glam::DVec4::log2", + "glam::DVec4::max_element", + "glam::DVec4::as_u8vec4", + "glam::DVec4::clamp_length_max", + "glam::DVec4::length_recip", + "glam::DVec4::length", + "glam::DVec4::distance_squared", + "glam::DVec4::add", + "glam::DVec4::project_onto", + "glam::DVec4::min_position", + "glam::DVec4::as_uvec4", + "glam::DVec4::clone", + "glam::DVec4::div", + "glam::DVec4::cmpge", + "glam::DVec4::with_x" + ], + "layout": { + "kind": "Struct", + "name": "DVec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f64" + } + }, + { + "name": "y", + "type": { + "primitive": "f64" + } + }, + { + "name": "z", + "type": { + "primitive": "f64" + } + }, + { + "name": "w", + "type": { + "primitive": "f64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::EulerRot": { + "identifier": "EulerRot", + "crate": "glam", + "path": "glam::EulerRot", + "associated_functions": [ + "glam::EulerRot::clone", + "glam::EulerRot::eq", + "glam::EulerRot::assert_receiver_is_total_eq" + ], + "layout": [ + { + "kind": "Unit", + "name": "ZYX" + }, + { + "kind": "Unit", + "name": "ZXY" + }, + { + "kind": "Unit", + "name": "YXZ" + }, + { + "kind": "Unit", + "name": "YZX" + }, + { + "kind": "Unit", + "name": "XYZ" + }, + { + "kind": "Unit", + "name": "XZY" + }, + { + "kind": "Unit", + "name": "ZYZ" + }, + { + "kind": "Unit", + "name": "ZXZ" + }, + { + "kind": "Unit", + "name": "YXY" + }, + { + "kind": "Unit", + "name": "YZY" + }, + { + "kind": "Unit", + "name": "XYX" + }, + { + "kind": "Unit", + "name": "XZX" + }, + { + "kind": "Unit", + "name": "ZYXEx" + }, + { + "kind": "Unit", + "name": "ZXYEx" + }, + { + "kind": "Unit", + "name": "YXZEx" + }, + { + "kind": "Unit", + "name": "YZXEx" + }, + { + "kind": "Unit", + "name": "XYZEx" + }, + { + "kind": "Unit", + "name": "XZYEx" + }, + { + "kind": "Unit", + "name": "ZYZEx" + }, + { + "kind": "Unit", + "name": "ZXZEx" + }, + { + "kind": "Unit", + "name": "YXYEx" + }, + { + "kind": "Unit", + "name": "YZYEx" + }, + { + "kind": "Unit", + "name": "XYXEx" + }, + { + "kind": "Unit", + "name": "XZXEx" + } + ], + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I16Vec2": { + "identifier": "I16Vec2", + "crate": "glam", + "path": "glam::I16Vec2", + "associated_functions": [ + "glam::I16Vec2::wrapping_sub", + "glam::I16Vec2::rem-1", + "glam::I16Vec2::as_uvec2", + "glam::I16Vec2::as_i64vec2", + "glam::I16Vec2::saturating_add", + "glam::I16Vec2::with_y", + "glam::I16Vec2::is_negative_bitmask", + "glam::I16Vec2::rem-2", + "glam::I16Vec2::saturating_sub", + "glam::I16Vec2::extend", + "glam::I16Vec2::max", + "glam::I16Vec2::saturating_sub_unsigned", + "glam::I16Vec2::mul", + "glam::I16Vec2::max_element", + "glam::I16Vec2::sub-2", + "glam::I16Vec2::select", + "glam::I16Vec2::div-1", + "glam::I16Vec2::sub-1", + "glam::I16Vec2::as_u64vec2", + "glam::I16Vec2::from_array", + "glam::I16Vec2::to_array", + "glam::I16Vec2::assert_receiver_is_total_eq", + "glam::I16Vec2::rotate", + "glam::I16Vec2::rem_euclid", + "glam::I16Vec2::as_i8vec2", + "glam::I16Vec2::min", + "glam::I16Vec2::wrapping_add", + "glam::I16Vec2::mul-2", + "glam::I16Vec2::wrapping_add_unsigned", + "glam::I16Vec2::saturating_mul", + "glam::I16Vec2::splat", + "glam::I16Vec2::as_u16vec2", + "glam::I16Vec2::sub", + "glam::I16Vec2::cmplt", + "glam::I16Vec2::distance_squared", + "glam::I16Vec2::mul-1", + "glam::I16Vec2::clamp", + "glam::I16Vec2::rem", + "glam::I16Vec2::div_euclid", + "glam::I16Vec2::add", + "glam::I16Vec2::new", + "glam::I16Vec2::clone", + "glam::I16Vec2::checked_manhattan_distance", + "glam::I16Vec2::wrapping_sub_unsigned", + "glam::I16Vec2::as_dvec2", + "glam::I16Vec2::saturating_add_unsigned", + "glam::I16Vec2::with_x", + "glam::I16Vec2::dot", + "glam::I16Vec2::add-2", + "glam::I16Vec2::element_product", + "glam::I16Vec2::cmpeq", + "glam::I16Vec2::dot_into_vec", + "glam::I16Vec2::length_squared", + "glam::I16Vec2::as_vec2", + "glam::I16Vec2::manhattan_distance", + "glam::I16Vec2::wrapping_mul", + "glam::I16Vec2::as_ivec2", + "glam::I16Vec2::cmpgt", + "glam::I16Vec2::cmpne", + "glam::I16Vec2::as_u8vec2", + "glam::I16Vec2::abs", + "glam::I16Vec2::element_sum", + "glam::I16Vec2::min_element", + "glam::I16Vec2::add-1", + "glam::I16Vec2::max_position", + "glam::I16Vec2::eq", + "glam::I16Vec2::cmple", + "glam::I16Vec2::chebyshev_distance", + "glam::I16Vec2::saturating_div", + "glam::I16Vec2::div-2", + "glam::I16Vec2::perp", + "glam::I16Vec2::perp_dot", + "glam::I16Vec2::neg", + "glam::I16Vec2::min_position", + "glam::I16Vec2::wrapping_div", + "glam::I16Vec2::cmpge", + "glam::I16Vec2::div", + "glam::I16Vec2::signum" + ], + "layout": { + "kind": "Struct", + "name": "I16Vec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i16" + } + }, + { + "name": "y", + "type": { + "primitive": "i16" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I16Vec3": { + "identifier": "I16Vec3", + "crate": "glam", + "path": "glam::I16Vec3", + "associated_functions": [ + "glam::I16Vec3::div-2", + "glam::I16Vec3::neg", + "glam::I16Vec3::div", + "glam::I16Vec3::saturating_add", + "glam::I16Vec3::element_product", + "glam::I16Vec3::with_z", + "glam::I16Vec3::as_vec3a", + "glam::I16Vec3::mul-1", + "glam::I16Vec3::saturating_div", + "glam::I16Vec3::wrapping_sub", + "glam::I16Vec3::checked_manhattan_distance", + "glam::I16Vec3::as_i64vec3", + "glam::I16Vec3::div_euclid", + "glam::I16Vec3::rem-1", + "glam::I16Vec3::max", + "glam::I16Vec3::wrapping_mul", + "glam::I16Vec3::saturating_sub", + "glam::I16Vec3::add", + "glam::I16Vec3::extend", + "glam::I16Vec3::with_x", + "glam::I16Vec3::is_negative_bitmask", + "glam::I16Vec3::chebyshev_distance", + "glam::I16Vec3::abs", + "glam::I16Vec3::assert_receiver_is_total_eq", + "glam::I16Vec3::max_element", + "glam::I16Vec3::splat", + "glam::I16Vec3::as_u8vec3", + "glam::I16Vec3::cmpge", + "glam::I16Vec3::cmpgt", + "glam::I16Vec3::as_u16vec3", + "glam::I16Vec3::as_dvec3", + "glam::I16Vec3::saturating_add_unsigned", + "glam::I16Vec3::truncate", + "glam::I16Vec3::min", + "glam::I16Vec3::dot", + "glam::I16Vec3::element_sum", + "glam::I16Vec3::saturating_sub_unsigned", + "glam::I16Vec3::to_array", + "glam::I16Vec3::clone", + "glam::I16Vec3::cmpeq", + "glam::I16Vec3::as_u64vec3", + "glam::I16Vec3::sub", + "glam::I16Vec3::clamp", + "glam::I16Vec3::wrapping_div", + "glam::I16Vec3::as_uvec3", + "glam::I16Vec3::new", + "glam::I16Vec3::rem-2", + "glam::I16Vec3::min_position", + "glam::I16Vec3::with_y", + "glam::I16Vec3::max_position", + "glam::I16Vec3::select", + "glam::I16Vec3::rem", + "glam::I16Vec3::min_element", + "glam::I16Vec3::cmple", + "glam::I16Vec3::dot_into_vec", + "glam::I16Vec3::wrapping_add", + "glam::I16Vec3::length_squared", + "glam::I16Vec3::wrapping_sub_unsigned", + "glam::I16Vec3::add-1", + "glam::I16Vec3::saturating_mul", + "glam::I16Vec3::cmpne", + "glam::I16Vec3::add-2", + "glam::I16Vec3::distance_squared", + "glam::I16Vec3::div-1", + "glam::I16Vec3::sub-1", + "glam::I16Vec3::as_ivec3", + "glam::I16Vec3::signum", + "glam::I16Vec3::manhattan_distance", + "glam::I16Vec3::cmplt", + "glam::I16Vec3::mul-2", + "glam::I16Vec3::sub-2", + "glam::I16Vec3::from_array", + "glam::I16Vec3::eq", + "glam::I16Vec3::mul", + "glam::I16Vec3::as_i8vec3", + "glam::I16Vec3::as_vec3", + "glam::I16Vec3::rem_euclid", + "glam::I16Vec3::cross", + "glam::I16Vec3::wrapping_add_unsigned" + ], + "layout": { + "kind": "Struct", + "name": "I16Vec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i16" + } + }, + { + "name": "y", + "type": { + "primitive": "i16" + } + }, + { + "name": "z", + "type": { + "primitive": "i16" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I16Vec4": { + "identifier": "I16Vec4", + "crate": "glam", + "path": "glam::I16Vec4", + "associated_functions": [ + "glam::I16Vec4::sub-1", + "glam::I16Vec4::abs", + "glam::I16Vec4::div-1", + "glam::I16Vec4::with_w", + "glam::I16Vec4::manhattan_distance", + "glam::I16Vec4::length_squared", + "glam::I16Vec4::mul", + "glam::I16Vec4::checked_manhattan_distance", + "glam::I16Vec4::min_position", + "glam::I16Vec4::as_i8vec4", + "glam::I16Vec4::as_vec4", + "glam::I16Vec4::new", + "glam::I16Vec4::clamp", + "glam::I16Vec4::rem-2", + "glam::I16Vec4::chebyshev_distance", + "glam::I16Vec4::from_array", + "glam::I16Vec4::to_array", + "glam::I16Vec4::saturating_mul", + "glam::I16Vec4::element_product", + "glam::I16Vec4::rem-1", + "glam::I16Vec4::wrapping_add_unsigned", + "glam::I16Vec4::assert_receiver_is_total_eq", + "glam::I16Vec4::wrapping_mul", + "glam::I16Vec4::as_uvec4", + "glam::I16Vec4::distance_squared", + "glam::I16Vec4::add", + "glam::I16Vec4::element_sum", + "glam::I16Vec4::min", + "glam::I16Vec4::min_element", + "glam::I16Vec4::as_u8vec4", + "glam::I16Vec4::div_euclid", + "glam::I16Vec4::sub", + "glam::I16Vec4::cmpge", + "glam::I16Vec4::as_dvec4", + "glam::I16Vec4::saturating_sub", + "glam::I16Vec4::rem_euclid", + "glam::I16Vec4::signum", + "glam::I16Vec4::cmple", + "glam::I16Vec4::with_x", + "glam::I16Vec4::truncate", + "glam::I16Vec4::dot", + "glam::I16Vec4::neg", + "glam::I16Vec4::max_position", + "glam::I16Vec4::wrapping_add", + "glam::I16Vec4::saturating_add_unsigned", + "glam::I16Vec4::add-2", + "glam::I16Vec4::div-2", + "glam::I16Vec4::as_i64vec4", + "glam::I16Vec4::dot_into_vec", + "glam::I16Vec4::is_negative_bitmask", + "glam::I16Vec4::as_u64vec4", + "glam::I16Vec4::cmpne", + "glam::I16Vec4::cmpgt", + "glam::I16Vec4::as_ivec4", + "glam::I16Vec4::as_u16vec4", + "glam::I16Vec4::saturating_add", + "glam::I16Vec4::wrapping_sub_unsigned", + "glam::I16Vec4::eq", + "glam::I16Vec4::mul-1", + "glam::I16Vec4::clone", + "glam::I16Vec4::cmpeq", + "glam::I16Vec4::max", + "glam::I16Vec4::sub-2", + "glam::I16Vec4::splat", + "glam::I16Vec4::rem", + "glam::I16Vec4::select", + "glam::I16Vec4::max_element", + "glam::I16Vec4::saturating_sub_unsigned", + "glam::I16Vec4::mul-2", + "glam::I16Vec4::cmplt", + "glam::I16Vec4::wrapping_div", + "glam::I16Vec4::with_y", + "glam::I16Vec4::saturating_div", + "glam::I16Vec4::wrapping_sub", + "glam::I16Vec4::add-1", + "glam::I16Vec4::div", + "glam::I16Vec4::with_z" + ], + "layout": { + "kind": "Struct", + "name": "I16Vec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i16" + } + }, + { + "name": "y", + "type": { + "primitive": "i16" + } + }, + { + "name": "z", + "type": { + "primitive": "i16" + } + }, + { + "name": "w", + "type": { + "primitive": "i16" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I64Vec2": { + "identifier": "I64Vec2", + "crate": "glam", + "path": "glam::I64Vec2", + "associated_functions": [ + "glam::I64Vec2::cmple", + "glam::I64Vec2::new", + "glam::I64Vec2::div_euclid", + "glam::I64Vec2::eq", + "glam::I64Vec2::add-1", + "glam::I64Vec2::sub-1", + "glam::I64Vec2::as_uvec2", + "glam::I64Vec2::chebyshev_distance", + "glam::I64Vec2::rem-2", + "glam::I64Vec2::assert_receiver_is_total_eq", + "glam::I64Vec2::add", + "glam::I64Vec2::wrapping_add", + "glam::I64Vec2::cmpne", + "glam::I64Vec2::splat", + "glam::I64Vec2::saturating_add", + "glam::I64Vec2::max_element", + "glam::I64Vec2::length_squared", + "glam::I64Vec2::add-2", + "glam::I64Vec2::checked_manhattan_distance", + "glam::I64Vec2::as_dvec2", + "glam::I64Vec2::manhattan_distance", + "glam::I64Vec2::cmpge", + "glam::I64Vec2::distance_squared", + "glam::I64Vec2::min", + "glam::I64Vec2::dot_into_vec", + "glam::I64Vec2::clamp", + "glam::I64Vec2::sub-2", + "glam::I64Vec2::neg", + "glam::I64Vec2::sub", + "glam::I64Vec2::wrapping_mul", + "glam::I64Vec2::div", + "glam::I64Vec2::mul-2", + "glam::I64Vec2::as_vec2", + "glam::I64Vec2::as_u8vec2", + "glam::I64Vec2::mul-1", + "glam::I64Vec2::select", + "glam::I64Vec2::rem", + "glam::I64Vec2::div-2", + "glam::I64Vec2::saturating_sub", + "glam::I64Vec2::saturating_add_unsigned", + "glam::I64Vec2::as_ivec2", + "glam::I64Vec2::extend", + "glam::I64Vec2::perp_dot", + "glam::I64Vec2::min_element", + "glam::I64Vec2::cmpgt", + "glam::I64Vec2::saturating_div", + "glam::I64Vec2::to_array", + "glam::I64Vec2::saturating_sub_unsigned", + "glam::I64Vec2::wrapping_div", + "glam::I64Vec2::wrapping_add_unsigned", + "glam::I64Vec2::saturating_mul", + "glam::I64Vec2::max_position", + "glam::I64Vec2::with_x", + "glam::I64Vec2::wrapping_sub_unsigned", + "glam::I64Vec2::element_product", + "glam::I64Vec2::as_u64vec2", + "glam::I64Vec2::rem_euclid", + "glam::I64Vec2::from_array", + "glam::I64Vec2::element_sum", + "glam::I64Vec2::cmplt", + "glam::I64Vec2::rotate", + "glam::I64Vec2::rem-1", + "glam::I64Vec2::cmpeq", + "glam::I64Vec2::abs", + "glam::I64Vec2::perp", + "glam::I64Vec2::is_negative_bitmask", + "glam::I64Vec2::dot", + "glam::I64Vec2::div-1", + "glam::I64Vec2::max", + "glam::I64Vec2::mul", + "glam::I64Vec2::as_i16vec2", + "glam::I64Vec2::as_u16vec2", + "glam::I64Vec2::min_position", + "glam::I64Vec2::clone", + "glam::I64Vec2::with_y", + "glam::I64Vec2::as_i8vec2", + "glam::I64Vec2::wrapping_sub", + "glam::I64Vec2::signum" + ], + "layout": { + "kind": "Struct", + "name": "I64Vec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i64" + } + }, + { + "name": "y", + "type": { + "primitive": "i64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I64Vec3": { + "identifier": "I64Vec3", + "crate": "glam", + "path": "glam::I64Vec3", + "associated_functions": [ + "glam::I64Vec3::element_product", + "glam::I64Vec3::max", + "glam::I64Vec3::rem", + "glam::I64Vec3::wrapping_add", + "glam::I64Vec3::as_uvec3", + "glam::I64Vec3::as_i8vec3", + "glam::I64Vec3::as_dvec3", + "glam::I64Vec3::max_position", + "glam::I64Vec3::as_u8vec3", + "glam::I64Vec3::is_negative_bitmask", + "glam::I64Vec3::as_vec3a", + "glam::I64Vec3::neg", + "glam::I64Vec3::with_y", + "glam::I64Vec3::wrapping_mul", + "glam::I64Vec3::to_array", + "glam::I64Vec3::div_euclid", + "glam::I64Vec3::sub", + "glam::I64Vec3::as_u64vec3", + "glam::I64Vec3::saturating_add_unsigned", + "glam::I64Vec3::truncate", + "glam::I64Vec3::cmpne", + "glam::I64Vec3::new", + "glam::I64Vec3::wrapping_div", + "glam::I64Vec3::cmpeq", + "glam::I64Vec3::div-2", + "glam::I64Vec3::wrapping_sub_unsigned", + "glam::I64Vec3::checked_manhattan_distance", + "glam::I64Vec3::signum", + "glam::I64Vec3::add-2", + "glam::I64Vec3::manhattan_distance", + "glam::I64Vec3::min_element", + "glam::I64Vec3::length_squared", + "glam::I64Vec3::div", + "glam::I64Vec3::distance_squared", + "glam::I64Vec3::rem-1", + "glam::I64Vec3::rem-2", + "glam::I64Vec3::eq", + "glam::I64Vec3::cmpgt", + "glam::I64Vec3::add-1", + "glam::I64Vec3::rem_euclid", + "glam::I64Vec3::saturating_sub", + "glam::I64Vec3::as_i16vec3", + "glam::I64Vec3::element_sum", + "glam::I64Vec3::clamp", + "glam::I64Vec3::mul", + "glam::I64Vec3::wrapping_sub", + "glam::I64Vec3::div-1", + "glam::I64Vec3::mul-1", + "glam::I64Vec3::as_u16vec3", + "glam::I64Vec3::add", + "glam::I64Vec3::extend", + "glam::I64Vec3::chebyshev_distance", + "glam::I64Vec3::select", + "glam::I64Vec3::as_ivec3", + "glam::I64Vec3::as_vec3", + "glam::I64Vec3::dot", + "glam::I64Vec3::min_position", + "glam::I64Vec3::from_array", + "glam::I64Vec3::cross", + "glam::I64Vec3::saturating_div", + "glam::I64Vec3::min", + "glam::I64Vec3::saturating_mul", + "glam::I64Vec3::clone", + "glam::I64Vec3::cmpge", + "glam::I64Vec3::saturating_add", + "glam::I64Vec3::assert_receiver_is_total_eq", + "glam::I64Vec3::wrapping_add_unsigned", + "glam::I64Vec3::cmplt", + "glam::I64Vec3::cmple", + "glam::I64Vec3::max_element", + "glam::I64Vec3::mul-2", + "glam::I64Vec3::with_z", + "glam::I64Vec3::saturating_sub_unsigned", + "glam::I64Vec3::splat", + "glam::I64Vec3::with_x", + "glam::I64Vec3::sub-1", + "glam::I64Vec3::sub-2", + "glam::I64Vec3::abs", + "glam::I64Vec3::dot_into_vec" + ], + "layout": { + "kind": "Struct", + "name": "I64Vec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i64" + } + }, + { + "name": "y", + "type": { + "primitive": "i64" + } + }, + { + "name": "z", + "type": { + "primitive": "i64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I64Vec4": { + "identifier": "I64Vec4", + "crate": "glam", + "path": "glam::I64Vec4", + "associated_functions": [ + "glam::I64Vec4::element_product", + "glam::I64Vec4::manhattan_distance", + "glam::I64Vec4::max", + "glam::I64Vec4::rem-2", + "glam::I64Vec4::neg", + "glam::I64Vec4::wrapping_sub_unsigned", + "glam::I64Vec4::cmpne", + "glam::I64Vec4::as_u8vec4", + "glam::I64Vec4::saturating_add_unsigned", + "glam::I64Vec4::wrapping_sub", + "glam::I64Vec4::sub", + "glam::I64Vec4::with_w", + "glam::I64Vec4::div", + "glam::I64Vec4::clone", + "glam::I64Vec4::as_u16vec4", + "glam::I64Vec4::with_y", + "glam::I64Vec4::div_euclid", + "glam::I64Vec4::as_uvec4", + "glam::I64Vec4::wrapping_add_unsigned", + "glam::I64Vec4::wrapping_div", + "glam::I64Vec4::wrapping_mul", + "glam::I64Vec4::chebyshev_distance", + "glam::I64Vec4::rem_euclid", + "glam::I64Vec4::with_z", + "glam::I64Vec4::min_element", + "glam::I64Vec4::cmpgt", + "glam::I64Vec4::max_element", + "glam::I64Vec4::saturating_sub_unsigned", + "glam::I64Vec4::truncate", + "glam::I64Vec4::saturating_mul", + "glam::I64Vec4::add-2", + "glam::I64Vec4::dot", + "glam::I64Vec4::splat", + "glam::I64Vec4::with_x", + "glam::I64Vec4::mul", + "glam::I64Vec4::as_i16vec4", + "glam::I64Vec4::element_sum", + "glam::I64Vec4::sub-2", + "glam::I64Vec4::distance_squared", + "glam::I64Vec4::saturating_div", + "glam::I64Vec4::mul-2", + "glam::I64Vec4::from_array", + "glam::I64Vec4::checked_manhattan_distance", + "glam::I64Vec4::abs", + "glam::I64Vec4::saturating_sub", + "glam::I64Vec4::add-1", + "glam::I64Vec4::select", + "glam::I64Vec4::new", + "glam::I64Vec4::max_position", + "glam::I64Vec4::eq", + "glam::I64Vec4::as_dvec4", + "glam::I64Vec4::rem-1", + "glam::I64Vec4::cmple", + "glam::I64Vec4::saturating_add", + "glam::I64Vec4::to_array", + "glam::I64Vec4::assert_receiver_is_total_eq", + "glam::I64Vec4::as_i8vec4", + "glam::I64Vec4::min_position", + "glam::I64Vec4::wrapping_add", + "glam::I64Vec4::min", + "glam::I64Vec4::as_vec4", + "glam::I64Vec4::is_negative_bitmask", + "glam::I64Vec4::signum", + "glam::I64Vec4::dot_into_vec", + "glam::I64Vec4::div-2", + "glam::I64Vec4::length_squared", + "glam::I64Vec4::sub-1", + "glam::I64Vec4::clamp", + "glam::I64Vec4::cmpge", + "glam::I64Vec4::as_ivec4", + "glam::I64Vec4::rem", + "glam::I64Vec4::div-1", + "glam::I64Vec4::cmplt", + "glam::I64Vec4::as_u64vec4", + "glam::I64Vec4::mul-1", + "glam::I64Vec4::cmpeq", + "glam::I64Vec4::add" + ], + "layout": { + "kind": "Struct", + "name": "I64Vec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i64" + } + }, + { + "name": "y", + "type": { + "primitive": "i64" + } + }, + { + "name": "z", + "type": { + "primitive": "i64" + } + }, + { + "name": "w", + "type": { + "primitive": "i64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I8Vec2": { + "identifier": "I8Vec2", + "crate": "glam", + "path": "glam::I8Vec2", + "associated_functions": [ + "glam::I8Vec2::wrapping_mul", + "glam::I8Vec2::dot_into_vec", + "glam::I8Vec2::max_position", + "glam::I8Vec2::cmple", + "glam::I8Vec2::saturating_sub_unsigned", + "glam::I8Vec2::saturating_add_unsigned", + "glam::I8Vec2::neg", + "glam::I8Vec2::mul", + "glam::I8Vec2::clone", + "glam::I8Vec2::as_i64vec2", + "glam::I8Vec2::div-1", + "glam::I8Vec2::perp_dot", + "glam::I8Vec2::div_euclid", + "glam::I8Vec2::rem-2", + "glam::I8Vec2::distance_squared", + "glam::I8Vec2::min_position", + "glam::I8Vec2::wrapping_add_unsigned", + "glam::I8Vec2::as_u64vec2", + "glam::I8Vec2::manhattan_distance", + "glam::I8Vec2::as_i16vec2", + "glam::I8Vec2::add", + "glam::I8Vec2::chebyshev_distance", + "glam::I8Vec2::wrapping_add", + "glam::I8Vec2::cmplt", + "glam::I8Vec2::max_element", + "glam::I8Vec2::element_sum", + "glam::I8Vec2::saturating_mul", + "glam::I8Vec2::wrapping_div", + "glam::I8Vec2::checked_manhattan_distance", + "glam::I8Vec2::to_array", + "glam::I8Vec2::abs", + "glam::I8Vec2::new", + "glam::I8Vec2::cmpne", + "glam::I8Vec2::with_x", + "glam::I8Vec2::as_vec2", + "glam::I8Vec2::eq", + "glam::I8Vec2::clamp", + "glam::I8Vec2::saturating_add", + "glam::I8Vec2::as_u8vec2", + "glam::I8Vec2::add-2", + "glam::I8Vec2::is_negative_bitmask", + "glam::I8Vec2::add-1", + "glam::I8Vec2::saturating_div", + "glam::I8Vec2::element_product", + "glam::I8Vec2::as_dvec2", + "glam::I8Vec2::sub-2", + "glam::I8Vec2::assert_receiver_is_total_eq", + "glam::I8Vec2::rem-1", + "glam::I8Vec2::as_u16vec2", + "glam::I8Vec2::from_array", + "glam::I8Vec2::sub", + "glam::I8Vec2::signum", + "glam::I8Vec2::rem_euclid", + "glam::I8Vec2::mul-2", + "glam::I8Vec2::sub-1", + "glam::I8Vec2::wrapping_sub_unsigned", + "glam::I8Vec2::with_y", + "glam::I8Vec2::as_ivec2", + "glam::I8Vec2::dot", + "glam::I8Vec2::cmpgt", + "glam::I8Vec2::min", + "glam::I8Vec2::rotate", + "glam::I8Vec2::perp", + "glam::I8Vec2::div", + "glam::I8Vec2::saturating_sub", + "glam::I8Vec2::rem", + "glam::I8Vec2::cmpge", + "glam::I8Vec2::min_element", + "glam::I8Vec2::extend", + "glam::I8Vec2::as_uvec2", + "glam::I8Vec2::div-2", + "glam::I8Vec2::length_squared", + "glam::I8Vec2::select", + "glam::I8Vec2::mul-1", + "glam::I8Vec2::wrapping_sub", + "glam::I8Vec2::splat", + "glam::I8Vec2::max", + "glam::I8Vec2::cmpeq" + ], + "layout": { + "kind": "Struct", + "name": "I8Vec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i8" + } + }, + { + "name": "y", + "type": { + "primitive": "i8" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I8Vec3": { + "identifier": "I8Vec3", + "crate": "glam", + "path": "glam::I8Vec3", + "associated_functions": [ + "glam::I8Vec3::mul-1", + "glam::I8Vec3::wrapping_sub_unsigned", + "glam::I8Vec3::cmpge", + "glam::I8Vec3::min_element", + "glam::I8Vec3::as_vec3", + "glam::I8Vec3::as_vec3a", + "glam::I8Vec3::as_u16vec3", + "glam::I8Vec3::rem-2", + "glam::I8Vec3::add-1", + "glam::I8Vec3::element_product", + "glam::I8Vec3::cmplt", + "glam::I8Vec3::checked_manhattan_distance", + "glam::I8Vec3::saturating_div", + "glam::I8Vec3::div", + "glam::I8Vec3::sub-2", + "glam::I8Vec3::as_dvec3", + "glam::I8Vec3::min", + "glam::I8Vec3::from_array", + "glam::I8Vec3::clone", + "glam::I8Vec3::saturating_sub", + "glam::I8Vec3::select", + "glam::I8Vec3::cmple", + "glam::I8Vec3::as_uvec3", + "glam::I8Vec3::with_x", + "glam::I8Vec3::saturating_sub_unsigned", + "glam::I8Vec3::as_ivec3", + "glam::I8Vec3::extend", + "glam::I8Vec3::with_y", + "glam::I8Vec3::neg", + "glam::I8Vec3::wrapping_sub", + "glam::I8Vec3::mul-2", + "glam::I8Vec3::abs", + "glam::I8Vec3::splat", + "glam::I8Vec3::to_array", + "glam::I8Vec3::rem", + "glam::I8Vec3::as_u64vec3", + "glam::I8Vec3::is_negative_bitmask", + "glam::I8Vec3::rem_euclid", + "glam::I8Vec3::cmpeq", + "glam::I8Vec3::saturating_add", + "glam::I8Vec3::sub-1", + "glam::I8Vec3::signum", + "glam::I8Vec3::div-2", + "glam::I8Vec3::wrapping_add", + "glam::I8Vec3::chebyshev_distance", + "glam::I8Vec3::div_euclid", + "glam::I8Vec3::rem-1", + "glam::I8Vec3::saturating_mul", + "glam::I8Vec3::add", + "glam::I8Vec3::add-2", + "glam::I8Vec3::assert_receiver_is_total_eq", + "glam::I8Vec3::cmpne", + "glam::I8Vec3::element_sum", + "glam::I8Vec3::cmpgt", + "glam::I8Vec3::truncate", + "glam::I8Vec3::wrapping_mul", + "glam::I8Vec3::cross", + "glam::I8Vec3::dot", + "glam::I8Vec3::max_element", + "glam::I8Vec3::with_z", + "glam::I8Vec3::min_position", + "glam::I8Vec3::as_i64vec3", + "glam::I8Vec3::div-1", + "glam::I8Vec3::wrapping_add_unsigned", + "glam::I8Vec3::saturating_add_unsigned", + "glam::I8Vec3::as_i16vec3", + "glam::I8Vec3::as_u8vec3", + "glam::I8Vec3::eq", + "glam::I8Vec3::manhattan_distance", + "glam::I8Vec3::distance_squared", + "glam::I8Vec3::wrapping_div", + "glam::I8Vec3::sub", + "glam::I8Vec3::clamp", + "glam::I8Vec3::dot_into_vec", + "glam::I8Vec3::mul", + "glam::I8Vec3::length_squared", + "glam::I8Vec3::new", + "glam::I8Vec3::max", + "glam::I8Vec3::max_position" + ], + "layout": { + "kind": "Struct", + "name": "I8Vec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i8" + } + }, + { + "name": "y", + "type": { + "primitive": "i8" + } + }, + { + "name": "z", + "type": { + "primitive": "i8" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::I8Vec4": { + "identifier": "I8Vec4", + "crate": "glam", + "path": "glam::I8Vec4", + "associated_functions": [ + "glam::I8Vec4::as_u8vec4", + "glam::I8Vec4::saturating_add", + "glam::I8Vec4::cmpge", + "glam::I8Vec4::add-1", + "glam::I8Vec4::with_z", + "glam::I8Vec4::element_sum", + "glam::I8Vec4::wrapping_mul", + "glam::I8Vec4::sub", + "glam::I8Vec4::div-2", + "glam::I8Vec4::distance_squared", + "glam::I8Vec4::wrapping_div", + "glam::I8Vec4::div-1", + "glam::I8Vec4::chebyshev_distance", + "glam::I8Vec4::neg", + "glam::I8Vec4::min_position", + "glam::I8Vec4::as_i16vec4", + "glam::I8Vec4::new", + "glam::I8Vec4::div", + "glam::I8Vec4::saturating_sub_unsigned", + "glam::I8Vec4::min", + "glam::I8Vec4::wrapping_sub_unsigned", + "glam::I8Vec4::as_dvec4", + "glam::I8Vec4::signum", + "glam::I8Vec4::saturating_sub", + "glam::I8Vec4::as_u16vec4", + "glam::I8Vec4::with_x", + "glam::I8Vec4::wrapping_add", + "glam::I8Vec4::cmplt", + "glam::I8Vec4::cmpeq", + "glam::I8Vec4::cmpne", + "glam::I8Vec4::checked_manhattan_distance", + "glam::I8Vec4::with_y", + "glam::I8Vec4::add-2", + "glam::I8Vec4::mul-1", + "glam::I8Vec4::element_product", + "glam::I8Vec4::as_ivec4", + "glam::I8Vec4::as_vec4", + "glam::I8Vec4::eq", + "glam::I8Vec4::rem-2", + "glam::I8Vec4::clamp", + "glam::I8Vec4::length_squared", + "glam::I8Vec4::max_position", + "glam::I8Vec4::from_array", + "glam::I8Vec4::with_w", + "glam::I8Vec4::as_i64vec4", + "glam::I8Vec4::add", + "glam::I8Vec4::to_array", + "glam::I8Vec4::rem", + "glam::I8Vec4::wrapping_sub", + "glam::I8Vec4::max", + "glam::I8Vec4::sub-2", + "glam::I8Vec4::as_uvec4", + "glam::I8Vec4::wrapping_add_unsigned", + "glam::I8Vec4::saturating_add_unsigned", + "glam::I8Vec4::cmpgt", + "glam::I8Vec4::div_euclid", + "glam::I8Vec4::clone", + "glam::I8Vec4::cmple", + "glam::I8Vec4::as_u64vec4", + "glam::I8Vec4::dot", + "glam::I8Vec4::mul", + "glam::I8Vec4::assert_receiver_is_total_eq", + "glam::I8Vec4::dot_into_vec", + "glam::I8Vec4::truncate", + "glam::I8Vec4::min_element", + "glam::I8Vec4::splat", + "glam::I8Vec4::select", + "glam::I8Vec4::mul-2", + "glam::I8Vec4::is_negative_bitmask", + "glam::I8Vec4::saturating_div", + "glam::I8Vec4::rem_euclid", + "glam::I8Vec4::saturating_mul", + "glam::I8Vec4::rem-1", + "glam::I8Vec4::max_element", + "glam::I8Vec4::sub-1", + "glam::I8Vec4::abs", + "glam::I8Vec4::manhattan_distance" + ], + "layout": { + "kind": "Struct", + "name": "I8Vec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i8" + } + }, + { + "name": "y", + "type": { + "primitive": "i8" + } + }, + { + "name": "z", + "type": { + "primitive": "i8" + } + }, + { + "name": "w", + "type": { + "primitive": "i8" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::IVec2": { + "identifier": "IVec2", + "crate": "glam", + "path": "glam::IVec2", + "associated_functions": [ + "glam::IVec2::mul", + "glam::IVec2::wrapping_sub_unsigned", + "glam::IVec2::sub-1", + "glam::IVec2::cmpeq", + "glam::IVec2::cmplt", + "glam::IVec2::as_i8vec2", + "glam::IVec2::chebyshev_distance", + "glam::IVec2::as_u64vec2", + "glam::IVec2::wrapping_add_unsigned", + "glam::IVec2::add-2", + "glam::IVec2::min_element", + "glam::IVec2::div-1", + "glam::IVec2::perp", + "glam::IVec2::manhattan_distance", + "glam::IVec2::min", + "glam::IVec2::wrapping_div", + "glam::IVec2::signum", + "glam::IVec2::perp_dot", + "glam::IVec2::add-1", + "glam::IVec2::saturating_add_unsigned", + "glam::IVec2::add", + "glam::IVec2::is_negative_bitmask", + "glam::IVec2::as_u8vec2", + "glam::IVec2::from_array", + "glam::IVec2::as_dvec2", + "glam::IVec2::as_vec2", + "glam::IVec2::as_uvec2", + "glam::IVec2::rem-2", + "glam::IVec2::rem-1", + "glam::IVec2::sub-2", + "glam::IVec2::wrapping_sub", + "glam::IVec2::element_sum", + "glam::IVec2::with_x", + "glam::IVec2::length_squared", + "glam::IVec2::sub", + "glam::IVec2::cmple", + "glam::IVec2::checked_manhattan_distance", + "glam::IVec2::to_array", + "glam::IVec2::abs", + "glam::IVec2::with_y", + "glam::IVec2::wrapping_add", + "glam::IVec2::max_element", + "glam::IVec2::saturating_div", + "glam::IVec2::mul-2", + "glam::IVec2::dot", + "glam::IVec2::div-2", + "glam::IVec2::dot_into_vec", + "glam::IVec2::max_position", + "glam::IVec2::max", + "glam::IVec2::clamp", + "glam::IVec2::rem_euclid", + "glam::IVec2::clone", + "glam::IVec2::neg", + "glam::IVec2::cmpge", + "glam::IVec2::rotate", + "glam::IVec2::saturating_mul", + "glam::IVec2::mul-1", + "glam::IVec2::div_euclid", + "glam::IVec2::saturating_add", + "glam::IVec2::assert_receiver_is_total_eq", + "glam::IVec2::as_u16vec2", + "glam::IVec2::saturating_sub_unsigned", + "glam::IVec2::cmpgt", + "glam::IVec2::as_i64vec2", + "glam::IVec2::eq", + "glam::IVec2::rem", + "glam::IVec2::element_product", + "glam::IVec2::splat", + "glam::IVec2::cmpne", + "glam::IVec2::extend", + "glam::IVec2::as_i16vec2", + "glam::IVec2::min_position", + "glam::IVec2::distance_squared", + "glam::IVec2::saturating_sub", + "glam::IVec2::select", + "glam::IVec2::div", + "glam::IVec2::new", + "glam::IVec2::wrapping_mul" + ], + "layout": { + "kind": "Struct", + "name": "IVec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i32" + } + }, + { + "name": "y", + "type": { + "primitive": "i32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::IVec3": { + "identifier": "IVec3", + "crate": "glam", + "path": "glam::IVec3", + "associated_functions": [ + "glam::IVec3::from_array", + "glam::IVec3::to_array", + "glam::IVec3::truncate", + "glam::IVec3::div-2", + "glam::IVec3::distance_squared", + "glam::IVec3::as_i64vec3", + "glam::IVec3::add", + "glam::IVec3::div-1", + "glam::IVec3::saturating_div", + "glam::IVec3::min_position", + "glam::IVec3::saturating_mul", + "glam::IVec3::neg", + "glam::IVec3::element_sum", + "glam::IVec3::add-1", + "glam::IVec3::eq", + "glam::IVec3::dot", + "glam::IVec3::length_squared", + "glam::IVec3::as_vec3a", + "glam::IVec3::sub", + "glam::IVec3::saturating_sub", + "glam::IVec3::mul", + "glam::IVec3::sub-1", + "glam::IVec3::select", + "glam::IVec3::rem-1", + "glam::IVec3::add-2", + "glam::IVec3::cmpge", + "glam::IVec3::saturating_add", + "glam::IVec3::as_vec3", + "glam::IVec3::element_product", + "glam::IVec3::max_position", + "glam::IVec3::wrapping_div", + "glam::IVec3::saturating_sub_unsigned", + "glam::IVec3::cmpeq", + "glam::IVec3::assert_receiver_is_total_eq", + "glam::IVec3::mul-2", + "glam::IVec3::splat", + "glam::IVec3::rem", + "glam::IVec3::as_dvec3", + "glam::IVec3::max_element", + "glam::IVec3::wrapping_sub_unsigned", + "glam::IVec3::abs", + "glam::IVec3::as_uvec3", + "glam::IVec3::manhattan_distance", + "glam::IVec3::as_u16vec3", + "glam::IVec3::with_x", + "glam::IVec3::with_z", + "glam::IVec3::saturating_add_unsigned", + "glam::IVec3::min", + "glam::IVec3::cmple", + "glam::IVec3::as_u8vec3", + "glam::IVec3::as_u64vec3", + "glam::IVec3::cmpgt", + "glam::IVec3::as_i16vec3", + "glam::IVec3::cmplt", + "glam::IVec3::checked_manhattan_distance", + "glam::IVec3::clamp", + "glam::IVec3::rem-2", + "glam::IVec3::dot_into_vec", + "glam::IVec3::max", + "glam::IVec3::wrapping_sub", + "glam::IVec3::clone", + "glam::IVec3::cmpne", + "glam::IVec3::chebyshev_distance", + "glam::IVec3::new", + "glam::IVec3::wrapping_add_unsigned", + "glam::IVec3::min_element", + "glam::IVec3::is_negative_bitmask", + "glam::IVec3::signum", + "glam::IVec3::div_euclid", + "glam::IVec3::sub-2", + "glam::IVec3::rem_euclid", + "glam::IVec3::mul-1", + "glam::IVec3::extend", + "glam::IVec3::as_i8vec3", + "glam::IVec3::wrapping_add", + "glam::IVec3::wrapping_mul", + "glam::IVec3::cross", + "glam::IVec3::div", + "glam::IVec3::with_y" + ], + "layout": { + "kind": "Struct", + "name": "IVec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i32" + } + }, + { + "name": "y", + "type": { + "primitive": "i32" + } + }, + { + "name": "z", + "type": { + "primitive": "i32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::IVec4": { + "identifier": "IVec4", + "crate": "glam", + "path": "glam::IVec4", + "associated_functions": [ + "glam::IVec4::div_euclid", + "glam::IVec4::wrapping_div", + "glam::IVec4::rem-2", + "glam::IVec4::max_element", + "glam::IVec4::as_i64vec4", + "glam::IVec4::add-2", + "glam::IVec4::saturating_add", + "glam::IVec4::checked_manhattan_distance", + "glam::IVec4::div-2", + "glam::IVec4::saturating_sub", + "glam::IVec4::to_array", + "glam::IVec4::sub", + "glam::IVec4::manhattan_distance", + "glam::IVec4::cmpge", + "glam::IVec4::element_sum", + "glam::IVec4::with_w", + "glam::IVec4::wrapping_add_unsigned", + "glam::IVec4::saturating_div", + "glam::IVec4::select", + "glam::IVec4::as_u64vec4", + "glam::IVec4::div-1", + "glam::IVec4::as_vec4", + "glam::IVec4::abs", + "glam::IVec4::saturating_add_unsigned", + "glam::IVec4::cmple", + "glam::IVec4::min", + "glam::IVec4::sub-2", + "glam::IVec4::as_u16vec4", + "glam::IVec4::as_i8vec4", + "glam::IVec4::dot_into_vec", + "glam::IVec4::chebyshev_distance", + "glam::IVec4::min_element", + "glam::IVec4::mul", + "glam::IVec4::rem-1", + "glam::IVec4::as_uvec4", + "glam::IVec4::distance_squared", + "glam::IVec4::cmpgt", + "glam::IVec4::splat", + "glam::IVec4::div", + "glam::IVec4::assert_receiver_is_total_eq", + "glam::IVec4::is_negative_bitmask", + "glam::IVec4::element_product", + "glam::IVec4::saturating_sub_unsigned", + "glam::IVec4::cmplt", + "glam::IVec4::wrapping_mul", + "glam::IVec4::sub-1", + "glam::IVec4::with_x", + "glam::IVec4::as_i16vec4", + "glam::IVec4::clamp", + "glam::IVec4::max_position", + "glam::IVec4::wrapping_sub", + "glam::IVec4::wrapping_sub_unsigned", + "glam::IVec4::with_y", + "glam::IVec4::as_dvec4", + "glam::IVec4::max", + "glam::IVec4::add-1", + "glam::IVec4::clone", + "glam::IVec4::eq", + "glam::IVec4::new", + "glam::IVec4::mul-2", + "glam::IVec4::cmpeq", + "glam::IVec4::min_position", + "glam::IVec4::cmpne", + "glam::IVec4::signum", + "glam::IVec4::add", + "glam::IVec4::saturating_mul", + "glam::IVec4::from_array", + "glam::IVec4::rem", + "glam::IVec4::mul-1", + "glam::IVec4::length_squared", + "glam::IVec4::as_u8vec4", + "glam::IVec4::rem_euclid", + "glam::IVec4::with_z", + "glam::IVec4::dot", + "glam::IVec4::neg", + "glam::IVec4::truncate", + "glam::IVec4::wrapping_add" + ], + "layout": { + "kind": "Struct", + "name": "IVec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "i32" + } + }, + { + "name": "y", + "type": { + "primitive": "i32" + } + }, + { + "name": "z", + "type": { + "primitive": "i32" + } + }, + { + "name": "w", + "type": { + "primitive": "i32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Mat2": { + "identifier": "Mat2", + "crate": "glam", + "path": "glam::Mat2", + "associated_functions": [ + "glam::Mat2::div_scalar", + "glam::Mat2::transpose", + "glam::Mat2::col", + "glam::Mat2::to_cols_array", + "glam::Mat2::mul_vec2", + "glam::Mat2::add", + "glam::Mat2::add-1", + "glam::Mat2::from_mat3a_minor", + "glam::Mat2::from_scale_angle", + "glam::Mat2::from_mat3", + "glam::Mat2::mul", + "glam::Mat2::from_mat3a", + "glam::Mat2::mul_mat2", + "glam::Mat2::to_cols_array_2d", + "glam::Mat2::eq", + "glam::Mat2::from_angle", + "glam::Mat2::row", + "glam::Mat2::mul-3", + "glam::Mat2::abs", + "glam::Mat2::mul-4", + "glam::Mat2::is_nan", + "glam::Mat2::from_diagonal", + "glam::Mat2::sub_mat2", + "glam::Mat2::inverse", + "glam::Mat2::mul_scalar", + "glam::Mat2::mul-1", + "glam::Mat2::sub", + "glam::Mat2::is_finite", + "glam::Mat2::mul-2", + "glam::Mat2::add_mat2", + "glam::Mat2::from_mat3_minor", + "glam::Mat2::clone", + "glam::Mat2::abs_diff_eq", + "glam::Mat2::from_cols", + "glam::Mat2::determinant", + "glam::Mat2::as_dmat2", + "glam::Mat2::sub-1", + "glam::Mat2::neg", + "glam::Mat2::div" + ], + "layout": { + "kind": "Struct", + "name": "Mat2", + "fields": [ + { + "name": "x_axis", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "y_axis", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Mat3": { + "identifier": "Mat3", + "crate": "glam", + "path": "glam::Mat3", + "associated_functions": [ + "glam::Mat3::determinant", + "glam::Mat3::from_translation", + "glam::Mat3::look_to_lh", + "glam::Mat3::from_mat4", + "glam::Mat3::to_cols_array_2d", + "glam::Mat3::sub_mat3", + "glam::Mat3::abs_diff_eq", + "glam::Mat3::mul", + "glam::Mat3::to_cols_array", + "glam::Mat3::transform_vector2", + "glam::Mat3::mul-4", + "glam::Mat3::from_rotation_x", + "glam::Mat3::mul_vec3a", + "glam::Mat3::from_rotation_y", + "glam::Mat3::transform_point2", + "glam::Mat3::from_scale_angle_translation", + "glam::Mat3::from_euler", + "glam::Mat3::from_cols", + "glam::Mat3::sub", + "glam::Mat3::sub-1", + "glam::Mat3::row", + "glam::Mat3::mul-6", + "glam::Mat3::eq", + "glam::Mat3::as_dmat3", + "glam::Mat3::mul-2", + "glam::Mat3::look_at_rh", + "glam::Mat3::mul-3", + "glam::Mat3::abs", + "glam::Mat3::look_at_lh", + "glam::Mat3::transpose", + "glam::Mat3::from_rotation_z", + "glam::Mat3::neg", + "glam::Mat3::from_scale", + "glam::Mat3::look_to_rh", + "glam::Mat3::mul_mat3", + "glam::Mat3::from_mat2", + "glam::Mat3::mul_scalar", + "glam::Mat3::clone", + "glam::Mat3::mul_vec3", + "glam::Mat3::from_axis_angle", + "glam::Mat3::is_nan", + "glam::Mat3::add_mat3", + "glam::Mat3::inverse", + "glam::Mat3::from_diagonal", + "glam::Mat3::mul-5", + "glam::Mat3::from_angle", + "glam::Mat3::to_euler", + "glam::Mat3::add-1", + "glam::Mat3::is_finite", + "glam::Mat3::from_quat", + "glam::Mat3::from_mat4_minor", + "glam::Mat3::mul-1", + "glam::Mat3::mul-8", + "glam::Mat3::add", + "glam::Mat3::div", + "glam::Mat3::mul-7", + "glam::Mat3::div_scalar", + "glam::Mat3::col" + ], + "layout": { + "kind": "Struct", + "name": "Mat3", + "fields": [ + { + "name": "x_axis", + "type": { + "val": "glam::Vec3" + } + }, + { + "name": "y_axis", + "type": { + "val": "glam::Vec3" + } + }, + { + "name": "z_axis", + "type": { + "val": "glam::Vec3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Mat3A": { + "identifier": "Mat3A", + "crate": "glam", + "path": "glam::Mat3A", + "associated_functions": [ + "glam::Mat3A::from_axis_angle", + "glam::Mat3A::to_cols_array_2d", + "glam::Mat3A::to_euler", + "glam::Mat3A::col", + "glam::Mat3A::sub_mat3", + "glam::Mat3A::mul-4", + "glam::Mat3A::div", + "glam::Mat3A::abs", + "glam::Mat3A::from_rotation_z", + "glam::Mat3A::from_quat", + "glam::Mat3A::from_scale_angle_translation", + "glam::Mat3A::clone", + "glam::Mat3A::eq", + "glam::Mat3A::mul-6", + "glam::Mat3A::mul-2", + "glam::Mat3A::from_cols", + "glam::Mat3A::as_dmat3", + "glam::Mat3A::mul_mat3", + "glam::Mat3A::mul_vec3", + "glam::Mat3A::mul-8", + "glam::Mat3A::is_nan", + "glam::Mat3A::row", + "glam::Mat3A::sub", + "glam::Mat3A::div_scalar", + "glam::Mat3A::look_at_rh", + "glam::Mat3A::add-1", + "glam::Mat3A::from_mat2", + "glam::Mat3A::mul-7", + "glam::Mat3A::from_mat4", + "glam::Mat3A::inverse", + "glam::Mat3A::from_euler", + "glam::Mat3A::add_mat3", + "glam::Mat3A::look_to_lh", + "glam::Mat3A::from_scale", + "glam::Mat3A::mul", + "glam::Mat3A::look_to_rh", + "glam::Mat3A::is_finite", + "glam::Mat3A::mul-3", + "glam::Mat3A::transform_point2", + "glam::Mat3A::determinant", + "glam::Mat3A::transform_vector2", + "glam::Mat3A::to_cols_array", + "glam::Mat3A::mul_vec3a", + "glam::Mat3A::from_mat4_minor", + "glam::Mat3A::from_diagonal", + "glam::Mat3A::add", + "glam::Mat3A::mul-5", + "glam::Mat3A::from_rotation_y", + "glam::Mat3A::transpose", + "glam::Mat3A::abs_diff_eq", + "glam::Mat3A::look_at_lh", + "glam::Mat3A::sub-1", + "glam::Mat3A::mul-1", + "glam::Mat3A::from_rotation_x", + "glam::Mat3A::from_translation", + "glam::Mat3A::neg", + "glam::Mat3A::from_angle", + "glam::Mat3A::mul_scalar" + ], + "layout": { + "kind": "Struct", + "name": "Mat3A", + "fields": [ + { + "name": "x_axis", + "type": { + "val": "glam::Vec3A" + } + }, + { + "name": "y_axis", + "type": { + "val": "glam::Vec3A" + } + }, + { + "name": "z_axis", + "type": { + "val": "glam::Vec3A" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Mat4": { + "identifier": "Mat4", + "crate": "glam", + "path": "glam::Mat4", + "associated_functions": [ + "glam::Mat4::look_to_rh", + "glam::Mat4::perspective_infinite_reverse_rh", + "glam::Mat4::perspective_rh", + "glam::Mat4::from_rotation_translation", + "glam::Mat4::determinant", + "glam::Mat4::project_point3a", + "glam::Mat4::mul-6", + "glam::Mat4::orthographic_lh", + "glam::Mat4::perspective_infinite_rh", + "glam::Mat4::from_axis_angle", + "glam::Mat4::clone", + "glam::Mat4::mul-3", + "glam::Mat4::transform_point3", + "glam::Mat4::transform_vector3a", + "glam::Mat4::div_scalar", + "glam::Mat4::from_scale", + "glam::Mat4::perspective_rh_gl", + "glam::Mat4::from_rotation_x", + "glam::Mat4::mul-4", + "glam::Mat4::transform_point3a", + "glam::Mat4::to_cols_array_2d", + "glam::Mat4::to_cols_array", + "glam::Mat4::mul-5", + "glam::Mat4::add-1", + "glam::Mat4::is_nan", + "glam::Mat4::transpose", + "glam::Mat4::eq", + "glam::Mat4::from_scale_rotation_translation", + "glam::Mat4::as_dmat4", + "glam::Mat4::from_mat3", + "glam::Mat4::look_to_lh", + "glam::Mat4::frustum_rh_gl", + "glam::Mat4::sub-1", + "glam::Mat4::orthographic_rh_gl", + "glam::Mat4::from_diagonal", + "glam::Mat4::from_euler", + "glam::Mat4::abs", + "glam::Mat4::perspective_lh", + "glam::Mat4::mul_scalar", + "glam::Mat4::look_at_lh", + "glam::Mat4::mul_mat4", + "glam::Mat4::col", + "glam::Mat4::neg", + "glam::Mat4::perspective_infinite_lh", + "glam::Mat4::from_mat3a", + "glam::Mat4::add", + "glam::Mat4::is_finite", + "glam::Mat4::orthographic_rh", + "glam::Mat4::transform_vector3", + "glam::Mat4::sub", + "glam::Mat4::from_quat", + "glam::Mat4::from_rotation_z", + "glam::Mat4::mul_vec4", + "glam::Mat4::mul", + "glam::Mat4::mul-2", + "glam::Mat4::from_mat3_translation", + "glam::Mat4::div", + "glam::Mat4::add_mat4", + "glam::Mat4::abs_diff_eq", + "glam::Mat4::row", + "glam::Mat4::from_rotation_y", + "glam::Mat4::frustum_lh", + "glam::Mat4::frustum_rh", + "glam::Mat4::from_translation", + "glam::Mat4::from_cols", + "glam::Mat4::look_at_rh", + "glam::Mat4::project_point3", + "glam::Mat4::to_euler", + "glam::Mat4::mul-1", + "glam::Mat4::sub_mat4", + "glam::Mat4::perspective_infinite_reverse_lh", + "glam::Mat4::inverse" + ], + "layout": { + "kind": "Struct", + "name": "Mat4", + "fields": [ + { + "name": "x_axis", + "type": { + "val": "glam::Vec4" + } + }, + { + "name": "y_axis", + "type": { + "val": "glam::Vec4" + } + }, + { + "name": "z_axis", + "type": { + "val": "glam::Vec4" + } + }, + { + "name": "w_axis", + "type": { + "val": "glam::Vec4" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Quat": { + "identifier": "Quat", + "crate": "glam", + "path": "glam::Quat", + "associated_functions": [ + "glam::Quat::mul_quat", + "glam::Quat::length_recip", + "glam::Quat::angle_between", + "glam::Quat::from_mat3", + "glam::Quat::look_to_lh", + "glam::Quat::look_to_rh", + "glam::Quat::conjugate", + "glam::Quat::from_rotation_arc", + "glam::Quat::dot", + "glam::Quat::xyz", + "glam::Quat::from_xyzw", + "glam::Quat::from_rotation_arc_2d", + "glam::Quat::from_affine3", + "glam::Quat::length_squared", + "glam::Quat::slerp", + "glam::Quat::mul_vec3", + "glam::Quat::mul-1", + "glam::Quat::mul_vec3a", + "glam::Quat::from_scaled_axis", + "glam::Quat::length", + "glam::Quat::neg", + "glam::Quat::add", + "glam::Quat::mul-6", + "glam::Quat::from_array", + "glam::Quat::from_axis_angle", + "glam::Quat::rotate_towards", + "glam::Quat::normalize", + "glam::Quat::eq", + "glam::Quat::is_near_identity", + "glam::Quat::clone", + "glam::Quat::add-1", + "glam::Quat::from_mat4", + "glam::Quat::sub", + "glam::Quat::from_rotation_y", + "glam::Quat::look_at_lh", + "glam::Quat::is_finite", + "glam::Quat::from_rotation_x", + "glam::Quat::mul-4", + "glam::Quat::sub-1", + "glam::Quat::from_vec4", + "glam::Quat::as_dquat", + "glam::Quat::lerp", + "glam::Quat::div", + "glam::Quat::abs_diff_eq", + "glam::Quat::mul-3", + "glam::Quat::look_at_rh", + "glam::Quat::from_rotation_arc_colinear", + "glam::Quat::mul-5", + "glam::Quat::from_mat3a", + "glam::Quat::is_normalized", + "glam::Quat::inverse", + "glam::Quat::mul-2", + "glam::Quat::is_nan", + "glam::Quat::to_euler", + "glam::Quat::from_rotation_z", + "glam::Quat::to_array", + "glam::Quat::to_scaled_axis", + "glam::Quat::mul", + "glam::Quat::from_euler" + ], + "layout": { + "kind": "Struct", + "name": "Quat", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f32" + } + }, + { + "name": "y", + "type": { + "primitive": "f32" + } + }, + { + "name": "z", + "type": { + "primitive": "f32" + } + }, + { + "name": "w", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U16Vec2": { + "identifier": "U16Vec2", + "crate": "glam", + "path": "glam::U16Vec2", + "associated_functions": [ + "glam::U16Vec2::as_ivec2", + "glam::U16Vec2::div", + "glam::U16Vec2::assert_receiver_is_total_eq", + "glam::U16Vec2::wrapping_mul", + "glam::U16Vec2::saturating_add", + "glam::U16Vec2::checked_manhattan_distance", + "glam::U16Vec2::to_array", + "glam::U16Vec2::wrapping_add", + "glam::U16Vec2::new", + "glam::U16Vec2::div-1", + "glam::U16Vec2::add-1", + "glam::U16Vec2::saturating_sub", + "glam::U16Vec2::element_product", + "glam::U16Vec2::mul", + "glam::U16Vec2::as_u64vec2", + "glam::U16Vec2::add-2", + "glam::U16Vec2::as_dvec2", + "glam::U16Vec2::rem", + "glam::U16Vec2::with_y", + "glam::U16Vec2::chebyshev_distance", + "glam::U16Vec2::from_array", + "glam::U16Vec2::dot", + "glam::U16Vec2::extend", + "glam::U16Vec2::as_vec2", + "glam::U16Vec2::rem-2", + "glam::U16Vec2::manhattan_distance", + "glam::U16Vec2::min_position", + "glam::U16Vec2::saturating_add_signed", + "glam::U16Vec2::div-2", + "glam::U16Vec2::saturating_mul", + "glam::U16Vec2::max_position", + "glam::U16Vec2::cmpeq", + "glam::U16Vec2::clone", + "glam::U16Vec2::with_x", + "glam::U16Vec2::eq", + "glam::U16Vec2::rem-1", + "glam::U16Vec2::as_u8vec2", + "glam::U16Vec2::wrapping_add_signed", + "glam::U16Vec2::add", + "glam::U16Vec2::wrapping_sub", + "glam::U16Vec2::cmpne", + "glam::U16Vec2::sub-1", + "glam::U16Vec2::element_sum", + "glam::U16Vec2::min", + "glam::U16Vec2::as_i8vec2", + "glam::U16Vec2::sub", + "glam::U16Vec2::max_element", + "glam::U16Vec2::mul-1", + "glam::U16Vec2::dot_into_vec", + "glam::U16Vec2::sub-2", + "glam::U16Vec2::cmpge", + "glam::U16Vec2::as_i16vec2", + "glam::U16Vec2::clamp", + "glam::U16Vec2::mul-2", + "glam::U16Vec2::as_uvec2", + "glam::U16Vec2::saturating_div", + "glam::U16Vec2::splat", + "glam::U16Vec2::cmpgt", + "glam::U16Vec2::cmple", + "glam::U16Vec2::wrapping_div", + "glam::U16Vec2::max", + "glam::U16Vec2::min_element", + "glam::U16Vec2::select", + "glam::U16Vec2::cmplt", + "glam::U16Vec2::length_squared", + "glam::U16Vec2::as_i64vec2" + ], + "layout": { + "kind": "Struct", + "name": "U16Vec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u16" + } + }, + { + "name": "y", + "type": { + "primitive": "u16" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U16Vec3": { + "identifier": "U16Vec3", + "crate": "glam", + "path": "glam::U16Vec3", + "associated_functions": [ + "glam::U16Vec3::mul-2", + "glam::U16Vec3::as_u64vec3", + "glam::U16Vec3::sub-2", + "glam::U16Vec3::as_dvec3", + "glam::U16Vec3::wrapping_add", + "glam::U16Vec3::min_element", + "glam::U16Vec3::as_vec3", + "glam::U16Vec3::cmpeq", + "glam::U16Vec3::wrapping_mul", + "glam::U16Vec3::assert_receiver_is_total_eq", + "glam::U16Vec3::saturating_div", + "glam::U16Vec3::to_array", + "glam::U16Vec3::dot_into_vec", + "glam::U16Vec3::select", + "glam::U16Vec3::saturating_add_signed", + "glam::U16Vec3::max", + "glam::U16Vec3::truncate", + "glam::U16Vec3::dot", + "glam::U16Vec3::div-2", + "glam::U16Vec3::add", + "glam::U16Vec3::max_position", + "glam::U16Vec3::wrapping_sub", + "glam::U16Vec3::cmpne", + "glam::U16Vec3::splat", + "glam::U16Vec3::clamp", + "glam::U16Vec3::min", + "glam::U16Vec3::add-2", + "glam::U16Vec3::with_z", + "glam::U16Vec3::mul", + "glam::U16Vec3::min_position", + "glam::U16Vec3::as_u8vec3", + "glam::U16Vec3::element_sum", + "glam::U16Vec3::wrapping_add_signed", + "glam::U16Vec3::chebyshev_distance", + "glam::U16Vec3::rem-1", + "glam::U16Vec3::add-1", + "glam::U16Vec3::rem-2", + "glam::U16Vec3::element_product", + "glam::U16Vec3::cmplt", + "glam::U16Vec3::as_uvec3", + "glam::U16Vec3::from_array", + "glam::U16Vec3::wrapping_div", + "glam::U16Vec3::as_i64vec3", + "glam::U16Vec3::div-1", + "glam::U16Vec3::as_i8vec3", + "glam::U16Vec3::rem", + "glam::U16Vec3::extend", + "glam::U16Vec3::cmple", + "glam::U16Vec3::length_squared", + "glam::U16Vec3::eq", + "glam::U16Vec3::max_element", + "glam::U16Vec3::clone", + "glam::U16Vec3::cmpge", + "glam::U16Vec3::with_x", + "glam::U16Vec3::checked_manhattan_distance", + "glam::U16Vec3::manhattan_distance", + "glam::U16Vec3::with_y", + "glam::U16Vec3::cross", + "glam::U16Vec3::saturating_add", + "glam::U16Vec3::as_i16vec3", + "glam::U16Vec3::cmpgt", + "glam::U16Vec3::saturating_mul", + "glam::U16Vec3::as_vec3a", + "glam::U16Vec3::sub-1", + "glam::U16Vec3::new", + "glam::U16Vec3::as_ivec3", + "glam::U16Vec3::div", + "glam::U16Vec3::mul-1", + "glam::U16Vec3::sub", + "glam::U16Vec3::saturating_sub" + ], + "layout": { + "kind": "Struct", + "name": "U16Vec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u16" + } + }, + { + "name": "y", + "type": { + "primitive": "u16" + } + }, + { + "name": "z", + "type": { + "primitive": "u16" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U16Vec4": { + "identifier": "U16Vec4", + "crate": "glam", + "path": "glam::U16Vec4", + "associated_functions": [ + "glam::U16Vec4::saturating_add_signed", + "glam::U16Vec4::min", + "glam::U16Vec4::wrapping_add", + "glam::U16Vec4::as_i16vec4", + "glam::U16Vec4::sub-2", + "glam::U16Vec4::max_position", + "glam::U16Vec4::dot_into_vec", + "glam::U16Vec4::min_element", + "glam::U16Vec4::dot", + "glam::U16Vec4::assert_receiver_is_total_eq", + "glam::U16Vec4::element_product", + "glam::U16Vec4::saturating_mul", + "glam::U16Vec4::min_position", + "glam::U16Vec4::cmplt", + "glam::U16Vec4::clone", + "glam::U16Vec4::add-2", + "glam::U16Vec4::as_uvec4", + "glam::U16Vec4::wrapping_add_signed", + "glam::U16Vec4::cmpge", + "glam::U16Vec4::wrapping_div", + "glam::U16Vec4::to_array", + "glam::U16Vec4::saturating_div", + "glam::U16Vec4::with_y", + "glam::U16Vec4::add", + "glam::U16Vec4::cmpne", + "glam::U16Vec4::eq", + "glam::U16Vec4::saturating_add", + "glam::U16Vec4::checked_manhattan_distance", + "glam::U16Vec4::div-1", + "glam::U16Vec4::with_w", + "glam::U16Vec4::wrapping_mul", + "glam::U16Vec4::select", + "glam::U16Vec4::add-1", + "glam::U16Vec4::mul-1", + "glam::U16Vec4::div-2", + "glam::U16Vec4::saturating_sub", + "glam::U16Vec4::sub-1", + "glam::U16Vec4::as_i8vec4", + "glam::U16Vec4::length_squared", + "glam::U16Vec4::from_array", + "glam::U16Vec4::cmple", + "glam::U16Vec4::element_sum", + "glam::U16Vec4::mul", + "glam::U16Vec4::manhattan_distance", + "glam::U16Vec4::with_x", + "glam::U16Vec4::clamp", + "glam::U16Vec4::rem-2", + "glam::U16Vec4::as_vec4", + "glam::U16Vec4::max_element", + "glam::U16Vec4::wrapping_sub", + "glam::U16Vec4::with_z", + "glam::U16Vec4::rem", + "glam::U16Vec4::as_u8vec4", + "glam::U16Vec4::truncate", + "glam::U16Vec4::cmpgt", + "glam::U16Vec4::max", + "glam::U16Vec4::as_u64vec4", + "glam::U16Vec4::div", + "glam::U16Vec4::cmpeq", + "glam::U16Vec4::as_i64vec4", + "glam::U16Vec4::chebyshev_distance", + "glam::U16Vec4::sub", + "glam::U16Vec4::splat", + "glam::U16Vec4::as_dvec4", + "glam::U16Vec4::mul-2", + "glam::U16Vec4::rem-1", + "glam::U16Vec4::as_ivec4", + "glam::U16Vec4::new" + ], + "layout": { + "kind": "Struct", + "name": "U16Vec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u16" + } + }, + { + "name": "y", + "type": { + "primitive": "u16" + } + }, + { + "name": "z", + "type": { + "primitive": "u16" + } + }, + { + "name": "w", + "type": { + "primitive": "u16" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U64Vec2": { + "identifier": "U64Vec2", + "crate": "glam", + "path": "glam::U64Vec2", + "associated_functions": [ + "glam::U64Vec2::mul", + "glam::U64Vec2::as_i8vec2", + "glam::U64Vec2::chebyshev_distance", + "glam::U64Vec2::rem-2", + "glam::U64Vec2::saturating_add_signed", + "glam::U64Vec2::with_y", + "glam::U64Vec2::saturating_div", + "glam::U64Vec2::as_u8vec2", + "glam::U64Vec2::from_array", + "glam::U64Vec2::element_sum", + "glam::U64Vec2::extend", + "glam::U64Vec2::as_uvec2", + "glam::U64Vec2::wrapping_add_signed", + "glam::U64Vec2::clamp", + "glam::U64Vec2::as_u16vec2", + "glam::U64Vec2::wrapping_add", + "glam::U64Vec2::assert_receiver_is_total_eq", + "glam::U64Vec2::eq", + "glam::U64Vec2::wrapping_sub", + "glam::U64Vec2::checked_manhattan_distance", + "glam::U64Vec2::sub-2", + "glam::U64Vec2::as_i64vec2", + "glam::U64Vec2::cmpne", + "glam::U64Vec2::as_i16vec2", + "glam::U64Vec2::add-2", + "glam::U64Vec2::cmplt", + "glam::U64Vec2::sub", + "glam::U64Vec2::dot_into_vec", + "glam::U64Vec2::mul-2", + "glam::U64Vec2::dot", + "glam::U64Vec2::max_position", + "glam::U64Vec2::div-2", + "glam::U64Vec2::min_element", + "glam::U64Vec2::max_element", + "glam::U64Vec2::add-1", + "glam::U64Vec2::element_product", + "glam::U64Vec2::rem", + "glam::U64Vec2::add", + "glam::U64Vec2::div", + "glam::U64Vec2::as_vec2", + "glam::U64Vec2::manhattan_distance", + "glam::U64Vec2::cmple", + "glam::U64Vec2::rem-1", + "glam::U64Vec2::splat", + "glam::U64Vec2::select", + "glam::U64Vec2::new", + "glam::U64Vec2::min_position", + "glam::U64Vec2::wrapping_div", + "glam::U64Vec2::max", + "glam::U64Vec2::with_x", + "glam::U64Vec2::saturating_sub", + "glam::U64Vec2::saturating_add", + "glam::U64Vec2::wrapping_mul", + "glam::U64Vec2::cmpgt", + "glam::U64Vec2::sub-1", + "glam::U64Vec2::as_ivec2", + "glam::U64Vec2::div-1", + "glam::U64Vec2::min", + "glam::U64Vec2::saturating_mul", + "glam::U64Vec2::as_dvec2", + "glam::U64Vec2::length_squared", + "glam::U64Vec2::cmpge", + "glam::U64Vec2::cmpeq", + "glam::U64Vec2::mul-1", + "glam::U64Vec2::clone", + "glam::U64Vec2::to_array" + ], + "layout": { + "kind": "Struct", + "name": "U64Vec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u64" + } + }, + { + "name": "y", + "type": { + "primitive": "u64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U64Vec3": { + "identifier": "U64Vec3", + "crate": "glam", + "path": "glam::U64Vec3", + "associated_functions": [ + "glam::U64Vec3::from_array", + "glam::U64Vec3::max_element", + "glam::U64Vec3::cross", + "glam::U64Vec3::saturating_div", + "glam::U64Vec3::mul-2", + "glam::U64Vec3::add", + "glam::U64Vec3::element_sum", + "glam::U64Vec3::div-2", + "glam::U64Vec3::mul", + "glam::U64Vec3::wrapping_add", + "glam::U64Vec3::element_product", + "glam::U64Vec3::mul-1", + "glam::U64Vec3::wrapping_mul", + "glam::U64Vec3::with_x", + "glam::U64Vec3::saturating_add", + "glam::U64Vec3::div", + "glam::U64Vec3::dot_into_vec", + "glam::U64Vec3::as_vec3", + "glam::U64Vec3::to_array", + "glam::U64Vec3::wrapping_sub", + "glam::U64Vec3::dot", + "glam::U64Vec3::rem-2", + "glam::U64Vec3::checked_manhattan_distance", + "glam::U64Vec3::eq", + "glam::U64Vec3::as_uvec3", + "glam::U64Vec3::splat", + "glam::U64Vec3::sub", + "glam::U64Vec3::as_dvec3", + "glam::U64Vec3::add-2", + "glam::U64Vec3::chebyshev_distance", + "glam::U64Vec3::as_u8vec3", + "glam::U64Vec3::wrapping_add_signed", + "glam::U64Vec3::cmpne", + "glam::U64Vec3::cmpge", + "glam::U64Vec3::rem", + "glam::U64Vec3::wrapping_div", + "glam::U64Vec3::as_i8vec3", + "glam::U64Vec3::as_u16vec3", + "glam::U64Vec3::min_element", + "glam::U64Vec3::min", + "glam::U64Vec3::saturating_add_signed", + "glam::U64Vec3::max", + "glam::U64Vec3::clone", + "glam::U64Vec3::saturating_sub", + "glam::U64Vec3::length_squared", + "glam::U64Vec3::cmpgt", + "glam::U64Vec3::add-1", + "glam::U64Vec3::as_i16vec3", + "glam::U64Vec3::saturating_mul", + "glam::U64Vec3::sub-2", + "glam::U64Vec3::as_ivec3", + "glam::U64Vec3::with_y", + "glam::U64Vec3::max_position", + "glam::U64Vec3::as_vec3a", + "glam::U64Vec3::select", + "glam::U64Vec3::as_i64vec3", + "glam::U64Vec3::clamp", + "glam::U64Vec3::truncate", + "glam::U64Vec3::min_position", + "glam::U64Vec3::cmple", + "glam::U64Vec3::cmpeq", + "glam::U64Vec3::sub-1", + "glam::U64Vec3::manhattan_distance", + "glam::U64Vec3::extend", + "glam::U64Vec3::rem-1", + "glam::U64Vec3::new", + "glam::U64Vec3::assert_receiver_is_total_eq", + "glam::U64Vec3::div-1", + "glam::U64Vec3::cmplt", + "glam::U64Vec3::with_z" + ], + "layout": { + "kind": "Struct", + "name": "U64Vec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u64" + } + }, + { + "name": "y", + "type": { + "primitive": "u64" + } + }, + { + "name": "z", + "type": { + "primitive": "u64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U64Vec4": { + "identifier": "U64Vec4", + "crate": "glam", + "path": "glam::U64Vec4", + "associated_functions": [ + "glam::U64Vec4::with_w", + "glam::U64Vec4::max", + "glam::U64Vec4::saturating_add", + "glam::U64Vec4::element_sum", + "glam::U64Vec4::min", + "glam::U64Vec4::wrapping_div", + "glam::U64Vec4::assert_receiver_is_total_eq", + "glam::U64Vec4::length_squared", + "glam::U64Vec4::chebyshev_distance", + "glam::U64Vec4::with_x", + "glam::U64Vec4::splat", + "glam::U64Vec4::rem-2", + "glam::U64Vec4::sub-2", + "glam::U64Vec4::element_product", + "glam::U64Vec4::as_u16vec4", + "glam::U64Vec4::wrapping_add", + "glam::U64Vec4::rem", + "glam::U64Vec4::as_u8vec4", + "glam::U64Vec4::sub-1", + "glam::U64Vec4::select", + "glam::U64Vec4::as_dvec4", + "glam::U64Vec4::saturating_add_signed", + "glam::U64Vec4::clone", + "glam::U64Vec4::div", + "glam::U64Vec4::saturating_sub", + "glam::U64Vec4::add", + "glam::U64Vec4::clamp", + "glam::U64Vec4::add-1", + "glam::U64Vec4::checked_manhattan_distance", + "glam::U64Vec4::manhattan_distance", + "glam::U64Vec4::cmpne", + "glam::U64Vec4::as_uvec4", + "glam::U64Vec4::rem-1", + "glam::U64Vec4::cmpeq", + "glam::U64Vec4::max_position", + "glam::U64Vec4::eq", + "glam::U64Vec4::cmple", + "glam::U64Vec4::as_vec4", + "glam::U64Vec4::cmpgt", + "glam::U64Vec4::sub", + "glam::U64Vec4::mul", + "glam::U64Vec4::dot", + "glam::U64Vec4::new", + "glam::U64Vec4::saturating_div", + "glam::U64Vec4::div-1", + "glam::U64Vec4::to_array", + "glam::U64Vec4::wrapping_add_signed", + "glam::U64Vec4::mul-2", + "glam::U64Vec4::as_i16vec4", + "glam::U64Vec4::wrapping_mul", + "glam::U64Vec4::div-2", + "glam::U64Vec4::saturating_mul", + "glam::U64Vec4::cmpge", + "glam::U64Vec4::add-2", + "glam::U64Vec4::from_array", + "glam::U64Vec4::wrapping_sub", + "glam::U64Vec4::max_element", + "glam::U64Vec4::as_i64vec4", + "glam::U64Vec4::min_element", + "glam::U64Vec4::as_ivec4", + "glam::U64Vec4::as_i8vec4", + "glam::U64Vec4::min_position", + "glam::U64Vec4::with_y", + "glam::U64Vec4::truncate", + "glam::U64Vec4::mul-1", + "glam::U64Vec4::cmplt", + "glam::U64Vec4::with_z", + "glam::U64Vec4::dot_into_vec" + ], + "layout": { + "kind": "Struct", + "name": "U64Vec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u64" + } + }, + { + "name": "y", + "type": { + "primitive": "u64" + } + }, + { + "name": "z", + "type": { + "primitive": "u64" + } + }, + { + "name": "w", + "type": { + "primitive": "u64" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U8Vec2": { + "identifier": "U8Vec2", + "crate": "glam", + "path": "glam::U8Vec2", + "associated_functions": [ + "glam::U8Vec2::as_uvec2", + "glam::U8Vec2::extend", + "glam::U8Vec2::saturating_add_signed", + "glam::U8Vec2::cmple", + "glam::U8Vec2::select", + "glam::U8Vec2::element_sum", + "glam::U8Vec2::cmpgt", + "glam::U8Vec2::as_ivec2", + "glam::U8Vec2::saturating_sub", + "glam::U8Vec2::min_element", + "glam::U8Vec2::rem-2", + "glam::U8Vec2::wrapping_sub", + "glam::U8Vec2::chebyshev_distance", + "glam::U8Vec2::rem-1", + "glam::U8Vec2::min_position", + "glam::U8Vec2::max", + "glam::U8Vec2::as_i64vec2", + "glam::U8Vec2::div-2", + "glam::U8Vec2::cmplt", + "glam::U8Vec2::wrapping_add_signed", + "glam::U8Vec2::rem", + "glam::U8Vec2::as_dvec2", + "glam::U8Vec2::sub-1", + "glam::U8Vec2::add-2", + "glam::U8Vec2::wrapping_mul", + "glam::U8Vec2::as_i16vec2", + "glam::U8Vec2::wrapping_div", + "glam::U8Vec2::saturating_add", + "glam::U8Vec2::from_array", + "glam::U8Vec2::as_vec2", + "glam::U8Vec2::mul-1", + "glam::U8Vec2::checked_manhattan_distance", + "glam::U8Vec2::eq", + "glam::U8Vec2::with_y", + "glam::U8Vec2::manhattan_distance", + "glam::U8Vec2::as_u16vec2", + "glam::U8Vec2::cmpge", + "glam::U8Vec2::sub-2", + "glam::U8Vec2::div-1", + "glam::U8Vec2::clamp", + "glam::U8Vec2::clone", + "glam::U8Vec2::assert_receiver_is_total_eq", + "glam::U8Vec2::element_product", + "glam::U8Vec2::add-1", + "glam::U8Vec2::max_position", + "glam::U8Vec2::sub", + "glam::U8Vec2::wrapping_add", + "glam::U8Vec2::to_array", + "glam::U8Vec2::with_x", + "glam::U8Vec2::as_i8vec2", + "glam::U8Vec2::new", + "glam::U8Vec2::mul", + "glam::U8Vec2::splat", + "glam::U8Vec2::cmpeq", + "glam::U8Vec2::length_squared", + "glam::U8Vec2::dot", + "glam::U8Vec2::saturating_div", + "glam::U8Vec2::max_element", + "glam::U8Vec2::saturating_mul", + "glam::U8Vec2::min", + "glam::U8Vec2::dot_into_vec", + "glam::U8Vec2::mul-2", + "glam::U8Vec2::as_u64vec2", + "glam::U8Vec2::cmpne", + "glam::U8Vec2::add", + "glam::U8Vec2::div" + ], + "layout": { + "kind": "Struct", + "name": "U8Vec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u8" + } + }, + { + "name": "y", + "type": { + "primitive": "u8" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U8Vec3": { + "identifier": "U8Vec3", + "crate": "glam", + "path": "glam::U8Vec3", + "associated_functions": [ + "glam::U8Vec3::sub", + "glam::U8Vec3::element_sum", + "glam::U8Vec3::saturating_add", + "glam::U8Vec3::dot", + "glam::U8Vec3::cmpgt", + "glam::U8Vec3::min_element", + "glam::U8Vec3::add-1", + "glam::U8Vec3::truncate", + "glam::U8Vec3::min", + "glam::U8Vec3::add-2", + "glam::U8Vec3::cross", + "glam::U8Vec3::assert_receiver_is_total_eq", + "glam::U8Vec3::manhattan_distance", + "glam::U8Vec3::as_vec3", + "glam::U8Vec3::as_u64vec3", + "glam::U8Vec3::extend", + "glam::U8Vec3::as_vec3a", + "glam::U8Vec3::checked_manhattan_distance", + "glam::U8Vec3::wrapping_add_signed", + "glam::U8Vec3::to_array", + "glam::U8Vec3::wrapping_div", + "glam::U8Vec3::mul", + "glam::U8Vec3::as_i64vec3", + "glam::U8Vec3::as_uvec3", + "glam::U8Vec3::rem", + "glam::U8Vec3::sub-2", + "glam::U8Vec3::cmpge", + "glam::U8Vec3::add", + "glam::U8Vec3::wrapping_add", + "glam::U8Vec3::max_element", + "glam::U8Vec3::wrapping_sub", + "glam::U8Vec3::div", + "glam::U8Vec3::splat", + "glam::U8Vec3::saturating_add_signed", + "glam::U8Vec3::as_dvec3", + "glam::U8Vec3::max_position", + "glam::U8Vec3::element_product", + "glam::U8Vec3::max", + "glam::U8Vec3::saturating_div", + "glam::U8Vec3::select", + "glam::U8Vec3::cmpne", + "glam::U8Vec3::cmplt", + "glam::U8Vec3::rem-2", + "glam::U8Vec3::wrapping_mul", + "glam::U8Vec3::as_ivec3", + "glam::U8Vec3::cmple", + "glam::U8Vec3::div-2", + "glam::U8Vec3::cmpeq", + "glam::U8Vec3::from_array", + "glam::U8Vec3::as_u16vec3", + "glam::U8Vec3::length_squared", + "glam::U8Vec3::rem-1", + "glam::U8Vec3::mul-2", + "glam::U8Vec3::as_i8vec3", + "glam::U8Vec3::new", + "glam::U8Vec3::mul-1", + "glam::U8Vec3::dot_into_vec", + "glam::U8Vec3::clamp", + "glam::U8Vec3::eq", + "glam::U8Vec3::with_z", + "glam::U8Vec3::clone", + "glam::U8Vec3::div-1", + "glam::U8Vec3::with_x", + "glam::U8Vec3::chebyshev_distance", + "glam::U8Vec3::min_position", + "glam::U8Vec3::saturating_sub", + "glam::U8Vec3::saturating_mul", + "glam::U8Vec3::sub-1", + "glam::U8Vec3::with_y", + "glam::U8Vec3::as_i16vec3" + ], + "layout": { + "kind": "Struct", + "name": "U8Vec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u8" + } + }, + { + "name": "y", + "type": { + "primitive": "u8" + } + }, + { + "name": "z", + "type": { + "primitive": "u8" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::U8Vec4": { + "identifier": "U8Vec4", + "crate": "glam", + "path": "glam::U8Vec4", + "associated_functions": [ + "glam::U8Vec4::max_element", + "glam::U8Vec4::cmpeq", + "glam::U8Vec4::min_position", + "glam::U8Vec4::cmpge", + "glam::U8Vec4::clone", + "glam::U8Vec4::eq", + "glam::U8Vec4::checked_manhattan_distance", + "glam::U8Vec4::wrapping_mul", + "glam::U8Vec4::as_i16vec4", + "glam::U8Vec4::max", + "glam::U8Vec4::cmplt", + "glam::U8Vec4::wrapping_add", + "glam::U8Vec4::add", + "glam::U8Vec4::cmple", + "glam::U8Vec4::assert_receiver_is_total_eq", + "glam::U8Vec4::manhattan_distance", + "glam::U8Vec4::wrapping_sub", + "glam::U8Vec4::cmpgt", + "glam::U8Vec4::from_array", + "glam::U8Vec4::as_u64vec4", + "glam::U8Vec4::saturating_mul", + "glam::U8Vec4::cmpne", + "glam::U8Vec4::rem", + "glam::U8Vec4::saturating_div", + "glam::U8Vec4::as_i8vec4", + "glam::U8Vec4::div", + "glam::U8Vec4::dot", + "glam::U8Vec4::clamp", + "glam::U8Vec4::wrapping_add_signed", + "glam::U8Vec4::div-2", + "glam::U8Vec4::rem-2", + "glam::U8Vec4::sub", + "glam::U8Vec4::as_uvec4", + "glam::U8Vec4::dot_into_vec", + "glam::U8Vec4::saturating_add_signed", + "glam::U8Vec4::as_dvec4", + "glam::U8Vec4::saturating_sub", + "glam::U8Vec4::as_vec4", + "glam::U8Vec4::element_product", + "glam::U8Vec4::with_z", + "glam::U8Vec4::as_u16vec4", + "glam::U8Vec4::saturating_add", + "glam::U8Vec4::with_w", + "glam::U8Vec4::new", + "glam::U8Vec4::select", + "glam::U8Vec4::truncate", + "glam::U8Vec4::splat", + "glam::U8Vec4::div-1", + "glam::U8Vec4::with_y", + "glam::U8Vec4::min", + "glam::U8Vec4::mul-1", + "glam::U8Vec4::add-1", + "glam::U8Vec4::as_ivec4", + "glam::U8Vec4::element_sum", + "glam::U8Vec4::sub-1", + "glam::U8Vec4::with_x", + "glam::U8Vec4::min_element", + "glam::U8Vec4::mul-2", + "glam::U8Vec4::sub-2", + "glam::U8Vec4::add-2", + "glam::U8Vec4::as_i64vec4", + "glam::U8Vec4::to_array", + "glam::U8Vec4::length_squared", + "glam::U8Vec4::mul", + "glam::U8Vec4::wrapping_div", + "glam::U8Vec4::max_position", + "glam::U8Vec4::chebyshev_distance", + "glam::U8Vec4::rem-1" + ], + "layout": { + "kind": "Struct", + "name": "U8Vec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u8" + } + }, + { + "name": "y", + "type": { + "primitive": "u8" + } + }, + { + "name": "z", + "type": { + "primitive": "u8" + } + }, + { + "name": "w", + "type": { + "primitive": "u8" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::UVec2": { + "identifier": "UVec2", + "crate": "glam", + "path": "glam::UVec2", + "associated_functions": [ + "glam::UVec2::wrapping_add_signed", + "glam::UVec2::manhattan_distance", + "glam::UVec2::with_y", + "glam::UVec2::as_u64vec2", + "glam::UVec2::as_u16vec2", + "glam::UVec2::max", + "glam::UVec2::select", + "glam::UVec2::to_array", + "glam::UVec2::element_sum", + "glam::UVec2::extend", + "glam::UVec2::wrapping_add", + "glam::UVec2::as_i16vec2", + "glam::UVec2::saturating_add_signed", + "glam::UVec2::cmplt", + "glam::UVec2::rem", + "glam::UVec2::wrapping_div", + "glam::UVec2::sub-2", + "glam::UVec2::min_position", + "glam::UVec2::add-2", + "glam::UVec2::clone", + "glam::UVec2::as_i64vec2", + "glam::UVec2::with_x", + "glam::UVec2::cmpgt", + "glam::UVec2::rem-1", + "glam::UVec2::as_ivec2", + "glam::UVec2::clamp", + "glam::UVec2::element_product", + "glam::UVec2::sub-1", + "glam::UVec2::as_u8vec2", + "glam::UVec2::saturating_sub", + "glam::UVec2::add-1", + "glam::UVec2::length_squared", + "glam::UVec2::wrapping_mul", + "glam::UVec2::eq", + "glam::UVec2::cmpne", + "glam::UVec2::as_i8vec2", + "glam::UVec2::rem-2", + "glam::UVec2::wrapping_sub", + "glam::UVec2::splat", + "glam::UVec2::assert_receiver_is_total_eq", + "glam::UVec2::div-1", + "glam::UVec2::mul", + "glam::UVec2::as_vec2", + "glam::UVec2::min_element", + "glam::UVec2::div", + "glam::UVec2::max_element", + "glam::UVec2::saturating_add", + "glam::UVec2::as_dvec2", + "glam::UVec2::new", + "glam::UVec2::sub", + "glam::UVec2::mul-2", + "glam::UVec2::chebyshev_distance", + "glam::UVec2::saturating_mul", + "glam::UVec2::div-2", + "glam::UVec2::add", + "glam::UVec2::dot", + "glam::UVec2::from_array", + "glam::UVec2::cmple", + "glam::UVec2::saturating_div", + "glam::UVec2::cmpeq", + "glam::UVec2::max_position", + "glam::UVec2::cmpge", + "glam::UVec2::min", + "glam::UVec2::checked_manhattan_distance", + "glam::UVec2::mul-1", + "glam::UVec2::dot_into_vec" + ], + "layout": { + "kind": "Struct", + "name": "UVec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u32" + } + }, + { + "name": "y", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::UVec3": { + "identifier": "UVec3", + "crate": "glam", + "path": "glam::UVec3", + "associated_functions": [ + "glam::UVec3::div", + "glam::UVec3::rem-1", + "glam::UVec3::dot", + "glam::UVec3::sub", + "glam::UVec3::checked_manhattan_distance", + "glam::UVec3::cross", + "glam::UVec3::clone", + "glam::UVec3::new", + "glam::UVec3::saturating_add", + "glam::UVec3::div-2", + "glam::UVec3::saturating_sub", + "glam::UVec3::min", + "glam::UVec3::cmpgt", + "glam::UVec3::as_u16vec3", + "glam::UVec3::assert_receiver_is_total_eq", + "glam::UVec3::extend", + "glam::UVec3::rem", + "glam::UVec3::to_array", + "glam::UVec3::saturating_div", + "glam::UVec3::mul-2", + "glam::UVec3::max", + "glam::UVec3::sub-2", + "glam::UVec3::truncate", + "glam::UVec3::as_ivec3", + "glam::UVec3::clamp", + "glam::UVec3::with_y", + "glam::UVec3::length_squared", + "glam::UVec3::rem-2", + "glam::UVec3::dot_into_vec", + "glam::UVec3::mul-1", + "glam::UVec3::chebyshev_distance", + "glam::UVec3::div-1", + "glam::UVec3::cmple", + "glam::UVec3::as_i16vec3", + "glam::UVec3::cmpge", + "glam::UVec3::wrapping_add", + "glam::UVec3::with_z", + "glam::UVec3::element_sum", + "glam::UVec3::wrapping_sub", + "glam::UVec3::max_position", + "glam::UVec3::splat", + "glam::UVec3::wrapping_div", + "glam::UVec3::as_u8vec3", + "glam::UVec3::from_array", + "glam::UVec3::as_i64vec3", + "glam::UVec3::saturating_mul", + "glam::UVec3::manhattan_distance", + "glam::UVec3::with_x", + "glam::UVec3::min_element", + "glam::UVec3::saturating_add_signed", + "glam::UVec3::add", + "glam::UVec3::as_dvec3", + "glam::UVec3::element_product", + "glam::UVec3::wrapping_mul", + "glam::UVec3::mul", + "glam::UVec3::as_vec3a", + "glam::UVec3::as_vec3", + "glam::UVec3::wrapping_add_signed", + "glam::UVec3::sub-1", + "glam::UVec3::max_element", + "glam::UVec3::select", + "glam::UVec3::eq", + "glam::UVec3::as_u64vec3", + "glam::UVec3::cmpne", + "glam::UVec3::cmplt", + "glam::UVec3::add-1", + "glam::UVec3::min_position", + "glam::UVec3::add-2", + "glam::UVec3::cmpeq", + "glam::UVec3::as_i8vec3" + ], + "layout": { + "kind": "Struct", + "name": "UVec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u32" + } + }, + { + "name": "y", + "type": { + "primitive": "u32" + } + }, + { + "name": "z", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::UVec4": { + "identifier": "UVec4", + "crate": "glam", + "path": "glam::UVec4", + "associated_functions": [ + "glam::UVec4::min", + "glam::UVec4::saturating_add", + "glam::UVec4::mul", + "glam::UVec4::as_ivec4", + "glam::UVec4::min_element", + "glam::UVec4::element_sum", + "glam::UVec4::with_z", + "glam::UVec4::wrapping_sub", + "glam::UVec4::clone", + "glam::UVec4::add-1", + "glam::UVec4::add", + "glam::UVec4::dot", + "glam::UVec4::saturating_sub", + "glam::UVec4::as_vec4", + "glam::UVec4::eq", + "glam::UVec4::as_u8vec4", + "glam::UVec4::wrapping_add_signed", + "glam::UVec4::cmpne", + "glam::UVec4::with_y", + "glam::UVec4::as_i64vec4", + "glam::UVec4::select", + "glam::UVec4::div", + "glam::UVec4::splat", + "glam::UVec4::from_array", + "glam::UVec4::rem-1", + "glam::UVec4::as_i8vec4", + "glam::UVec4::as_u64vec4", + "glam::UVec4::rem", + "glam::UVec4::element_product", + "glam::UVec4::saturating_mul", + "glam::UVec4::sub-1", + "glam::UVec4::max", + "glam::UVec4::cmpeq", + "glam::UVec4::cmple", + "glam::UVec4::saturating_div", + "glam::UVec4::new", + "glam::UVec4::saturating_add_signed", + "glam::UVec4::sub-2", + "glam::UVec4::length_squared", + "glam::UVec4::truncate", + "glam::UVec4::cmpge", + "glam::UVec4::sub", + "glam::UVec4::with_w", + "glam::UVec4::as_dvec4", + "glam::UVec4::cmpgt", + "glam::UVec4::mul-2", + "glam::UVec4::chebyshev_distance", + "glam::UVec4::max_element", + "glam::UVec4::add-2", + "glam::UVec4::as_u16vec4", + "glam::UVec4::as_i16vec4", + "glam::UVec4::div-1", + "glam::UVec4::rem-2", + "glam::UVec4::max_position", + "glam::UVec4::min_position", + "glam::UVec4::dot_into_vec", + "glam::UVec4::div-2", + "glam::UVec4::manhattan_distance", + "glam::UVec4::clamp", + "glam::UVec4::wrapping_add", + "glam::UVec4::checked_manhattan_distance", + "glam::UVec4::assert_receiver_is_total_eq", + "glam::UVec4::cmplt", + "glam::UVec4::wrapping_div", + "glam::UVec4::to_array", + "glam::UVec4::wrapping_mul", + "glam::UVec4::mul-1", + "glam::UVec4::with_x" + ], + "layout": { + "kind": "Struct", + "name": "UVec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "u32" + } + }, + { + "name": "y", + "type": { + "primitive": "u32" + } + }, + { + "name": "z", + "type": { + "primitive": "u32" + } + }, + { + "name": "w", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Vec2": { + "identifier": "Vec2", + "crate": "glam", + "path": "glam::Vec2", + "associated_functions": [ + "glam::Vec2::to_angle", + "glam::Vec2::length_recip", + "glam::Vec2::round", + "glam::Vec2::project_onto_normalized", + "glam::Vec2::length", + "glam::Vec2::rem-1", + "glam::Vec2::element_sum", + "glam::Vec2::add", + "glam::Vec2::sub", + "glam::Vec2::length_squared", + "glam::Vec2::fract_gl", + "glam::Vec2::cmpeq", + "glam::Vec2::as_u8vec2", + "glam::Vec2::max_element", + "glam::Vec2::mul-2", + "glam::Vec2::min_position", + "glam::Vec2::distance_squared", + "glam::Vec2::mul-1", + "glam::Vec2::perp_dot", + "glam::Vec2::cmplt", + "glam::Vec2::min_element", + "glam::Vec2::sub-2", + "glam::Vec2::rotate", + "glam::Vec2::dot", + "glam::Vec2::exp", + "glam::Vec2::distance", + "glam::Vec2::is_normalized", + "glam::Vec2::project_onto", + "glam::Vec2::rem_euclid", + "glam::Vec2::rem", + "glam::Vec2::cmple", + "glam::Vec2::dot_into_vec", + "glam::Vec2::refract", + "glam::Vec2::angle_to", + "glam::Vec2::from_array", + "glam::Vec2::to_array", + "glam::Vec2::select", + "glam::Vec2::ceil", + "glam::Vec2::mul_add", + "glam::Vec2::sub-1", + "glam::Vec2::as_u64vec2", + "glam::Vec2::copysign", + "glam::Vec2::cmpge", + "glam::Vec2::reject_from", + "glam::Vec2::normalize_or_zero", + "glam::Vec2::clamp", + "glam::Vec2::log2", + "glam::Vec2::move_towards", + "glam::Vec2::reflect", + "glam::Vec2::floor", + "glam::Vec2::as_u16vec2", + "glam::Vec2::normalize", + "glam::Vec2::with_x", + "glam::Vec2::new", + "glam::Vec2::reject_from_normalized", + "glam::Vec2::recip", + "glam::Vec2::as_i8vec2", + "glam::Vec2::cmpgt", + "glam::Vec2::trunc", + "glam::Vec2::normalize_or", + "glam::Vec2::rotate_towards", + "glam::Vec2::is_negative_bitmask", + "glam::Vec2::as_dvec2", + "glam::Vec2::as_ivec2", + "glam::Vec2::fract", + "glam::Vec2::as_i64vec2", + "glam::Vec2::min", + "glam::Vec2::as_uvec2", + "glam::Vec2::is_nan", + "glam::Vec2::add-2", + "glam::Vec2::ln", + "glam::Vec2::element_product", + "glam::Vec2::perp", + "glam::Vec2::max_position", + "glam::Vec2::is_finite", + "glam::Vec2::as_i16vec2", + "glam::Vec2::eq", + "glam::Vec2::clamp_length_min", + "glam::Vec2::cmpne", + "glam::Vec2::rem-2", + "glam::Vec2::div", + "glam::Vec2::angle_between", + "glam::Vec2::div-1", + "glam::Vec2::neg", + "glam::Vec2::lerp", + "glam::Vec2::clamp_length_max", + "glam::Vec2::div_euclid", + "glam::Vec2::from_angle", + "glam::Vec2::exp2", + "glam::Vec2::midpoint", + "glam::Vec2::mul", + "glam::Vec2::is_finite_mask", + "glam::Vec2::signum", + "glam::Vec2::abs", + "glam::Vec2::is_nan_mask", + "glam::Vec2::with_y", + "glam::Vec2::clone", + "glam::Vec2::abs_diff_eq", + "glam::Vec2::max", + "glam::Vec2::div-2", + "glam::Vec2::powf", + "glam::Vec2::extend", + "glam::Vec2::add-1", + "glam::Vec2::splat", + "glam::Vec2::clamp_length" + ], + "layout": { + "kind": "Struct", + "name": "Vec2", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f32" + } + }, + { + "name": "y", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Vec3": { + "identifier": "Vec3", + "crate": "glam", + "path": "glam::Vec3", + "associated_functions": [ + "glam::Vec3::mul-2", + "glam::Vec3::extend", + "glam::Vec3::cross", + "glam::Vec3::round", + "glam::Vec3::from_homogeneous", + "glam::Vec3::reject_from_normalized", + "glam::Vec3::is_finite", + "glam::Vec3::rem-1", + "glam::Vec3::rotate_x", + "glam::Vec3::sub", + "glam::Vec3::any_orthonormal_vector", + "glam::Vec3::max_element", + "glam::Vec3::ln", + "glam::Vec3::as_i16vec3", + "glam::Vec3::normalize", + "glam::Vec3::cmpeq", + "glam::Vec3::clamp_length", + "glam::Vec3::as_i64vec3", + "glam::Vec3::element_product", + "glam::Vec3::cmpge", + "glam::Vec3::floor", + "glam::Vec3::element_sum", + "glam::Vec3::abs_diff_eq", + "glam::Vec3::angle_between", + "glam::Vec3::from_array", + "glam::Vec3::to_vec3a", + "glam::Vec3::move_towards", + "glam::Vec3::cmple", + "glam::Vec3::any_orthogonal_vector", + "glam::Vec3::length", + "glam::Vec3::clamp", + "glam::Vec3::is_normalized", + "glam::Vec3::max_position", + "glam::Vec3::as_u16vec3", + "glam::Vec3::normalize_or", + "glam::Vec3::signum", + "glam::Vec3::length_squared", + "glam::Vec3::midpoint", + "glam::Vec3::is_nan_mask", + "glam::Vec3::to_array", + "glam::Vec3::copysign", + "glam::Vec3::project_onto_normalized", + "glam::Vec3::distance", + "glam::Vec3::add-2", + "glam::Vec3::is_negative_bitmask", + "glam::Vec3::rem_euclid", + "glam::Vec3::fract_gl", + "glam::Vec3::add-1", + "glam::Vec3::sub-2", + "glam::Vec3::rotate_towards", + "glam::Vec3::reject_from", + "glam::Vec3::truncate", + "glam::Vec3::with_z", + "glam::Vec3::splat", + "glam::Vec3::as_u64vec3", + "glam::Vec3::sub-1", + "glam::Vec3::cmplt", + "glam::Vec3::neg", + "glam::Vec3::trunc", + "glam::Vec3::rotate_z", + "glam::Vec3::clamp_length_max", + "glam::Vec3::select", + "glam::Vec3::lerp", + "glam::Vec3::rem-2", + "glam::Vec3::normalize_or_zero", + "glam::Vec3::exp2", + "glam::Vec3::powf", + "glam::Vec3::div-2", + "glam::Vec3::min", + "glam::Vec3::div", + "glam::Vec3::length_recip", + "glam::Vec3::eq", + "glam::Vec3::mul", + "glam::Vec3::as_ivec3", + "glam::Vec3::min_element", + "glam::Vec3::cmpne", + "glam::Vec3::clamp_length_min", + "glam::Vec3::mul-1", + "glam::Vec3::rem", + "glam::Vec3::distance_squared", + "glam::Vec3::min_position", + "glam::Vec3::ceil", + "glam::Vec3::reflect", + "glam::Vec3::cmpgt", + "glam::Vec3::dot", + "glam::Vec3::abs", + "glam::Vec3::as_dvec3", + "glam::Vec3::refract", + "glam::Vec3::to_homogeneous", + "glam::Vec3::log2", + "glam::Vec3::is_nan", + "glam::Vec3::is_finite_mask", + "glam::Vec3::add", + "glam::Vec3::recip", + "glam::Vec3::as_u8vec3", + "glam::Vec3::new", + "glam::Vec3::dot_into_vec", + "glam::Vec3::as_uvec3", + "glam::Vec3::div-1", + "glam::Vec3::rotate_y", + "glam::Vec3::clone", + "glam::Vec3::with_x", + "glam::Vec3::fract", + "glam::Vec3::exp", + "glam::Vec3::rotate_axis", + "glam::Vec3::as_i8vec3", + "glam::Vec3::slerp", + "glam::Vec3::project_onto", + "glam::Vec3::div_euclid", + "glam::Vec3::max", + "glam::Vec3::mul_add", + "glam::Vec3::with_y" + ], + "layout": { + "kind": "Struct", + "name": "Vec3", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f32" + } + }, + { + "name": "y", + "type": { + "primitive": "f32" + } + }, + { + "name": "z", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Vec3A": { + "identifier": "Vec3A", + "crate": "glam", + "path": "glam::Vec3A", + "associated_functions": [ + "glam::Vec3A::to_vec3", + "glam::Vec3A::add", + "glam::Vec3A::sub-1", + "glam::Vec3A::round", + "glam::Vec3A::from_homogeneous", + "glam::Vec3A::element_product", + "glam::Vec3A::length", + "glam::Vec3A::is_nan_mask", + "glam::Vec3A::dot_into_vec", + "glam::Vec3A::normalize_or", + "glam::Vec3A::clamp", + "glam::Vec3A::midpoint", + "glam::Vec3A::cmpgt", + "glam::Vec3A::add-1", + "glam::Vec3A::floor", + "glam::Vec3A::fract", + "glam::Vec3A::reject_from", + "glam::Vec3A::as_uvec3", + "glam::Vec3A::as_i64vec3", + "glam::Vec3A::cmple", + "glam::Vec3A::div-2", + "glam::Vec3A::refract", + "glam::Vec3A::rotate_axis", + "glam::Vec3A::with_z", + "glam::Vec3A::new", + "glam::Vec3A::distance", + "glam::Vec3A::angle_between", + "glam::Vec3A::is_nan", + "glam::Vec3A::eq", + "glam::Vec3A::as_i16vec3", + "glam::Vec3A::lerp", + "glam::Vec3A::cmpge", + "glam::Vec3A::as_dvec3", + "glam::Vec3A::exp2", + "glam::Vec3A::from_array", + "glam::Vec3A::exp", + "glam::Vec3A::project_onto_normalized", + "glam::Vec3A::move_towards", + "glam::Vec3A::cmpeq", + "glam::Vec3A::with_x", + "glam::Vec3A::log2", + "glam::Vec3A::element_sum", + "glam::Vec3A::is_finite_mask", + "glam::Vec3A::signum", + "glam::Vec3A::ln", + "glam::Vec3A::add-2", + "glam::Vec3A::div_euclid", + "glam::Vec3A::any_orthogonal_vector", + "glam::Vec3A::clamp_length_max", + "glam::Vec3A::reject_from_normalized", + "glam::Vec3A::min_position", + "glam::Vec3A::as_ivec3", + "glam::Vec3A::max_element", + "glam::Vec3A::with_y", + "glam::Vec3A::as_u8vec3", + "glam::Vec3A::powf", + "glam::Vec3A::mul", + "glam::Vec3A::sub-2", + "glam::Vec3A::distance_squared", + "glam::Vec3A::trunc", + "glam::Vec3A::as_u16vec3", + "glam::Vec3A::slerp", + "glam::Vec3A::rotate_towards", + "glam::Vec3A::dot", + "glam::Vec3A::neg", + "glam::Vec3A::is_negative_bitmask", + "glam::Vec3A::ceil", + "glam::Vec3A::from_vec4", + "glam::Vec3A::rotate_z", + "glam::Vec3A::length_recip", + "glam::Vec3A::copysign", + "glam::Vec3A::as_u64vec3", + "glam::Vec3A::normalize", + "glam::Vec3A::max_position", + "glam::Vec3A::to_array", + "glam::Vec3A::cmpne", + "glam::Vec3A::mul-2", + "glam::Vec3A::min", + "glam::Vec3A::min_element", + "glam::Vec3A::any_orthonormal_vector", + "glam::Vec3A::length_squared", + "glam::Vec3A::sub", + "glam::Vec3A::rem-2", + "glam::Vec3A::div-1", + "glam::Vec3A::abs", + "glam::Vec3A::to_homogeneous", + "glam::Vec3A::as_i8vec3", + "glam::Vec3A::clone", + "glam::Vec3A::abs_diff_eq", + "glam::Vec3A::cross", + "glam::Vec3A::max", + "glam::Vec3A::select", + "glam::Vec3A::rem", + "glam::Vec3A::recip", + "glam::Vec3A::rem_euclid", + "glam::Vec3A::rem-1", + "glam::Vec3A::extend", + "glam::Vec3A::is_normalized", + "glam::Vec3A::clamp_length_min", + "glam::Vec3A::project_onto", + "glam::Vec3A::cmplt", + "glam::Vec3A::rotate_x", + "glam::Vec3A::rotate_y", + "glam::Vec3A::div", + "glam::Vec3A::is_finite", + "glam::Vec3A::mul-1", + "glam::Vec3A::clamp_length", + "glam::Vec3A::splat", + "glam::Vec3A::normalize_or_zero", + "glam::Vec3A::fract_gl", + "glam::Vec3A::mul_add", + "glam::Vec3A::truncate", + "glam::Vec3A::reflect" + ], + "layout": { + "kind": "Struct", + "name": "Vec3A", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f32" + } + }, + { + "name": "y", + "type": { + "primitive": "f32" + } + }, + { + "name": "z", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "glam::Vec4": { + "identifier": "Vec4", + "crate": "glam", + "path": "glam::Vec4", + "associated_functions": [ + "glam::Vec4::abs_diff_eq", + "glam::Vec4::is_nan_mask", + "glam::Vec4::fract", + "glam::Vec4::max", + "glam::Vec4::ceil", + "glam::Vec4::cmpgt", + "glam::Vec4::as_dvec4", + "glam::Vec4::min_element", + "glam::Vec4::with_w", + "glam::Vec4::length_recip", + "glam::Vec4::project_onto", + "glam::Vec4::add-1", + "glam::Vec4::as_i16vec4", + "glam::Vec4::lerp", + "glam::Vec4::refract", + "glam::Vec4::rem-1", + "glam::Vec4::to_array", + "glam::Vec4::mul", + "glam::Vec4::exp", + "glam::Vec4::powf", + "glam::Vec4::rem_euclid", + "glam::Vec4::element_product", + "glam::Vec4::as_uvec4", + "glam::Vec4::is_nan", + "glam::Vec4::neg", + "glam::Vec4::project", + "glam::Vec4::select", + "glam::Vec4::copysign", + "glam::Vec4::as_i8vec4", + "glam::Vec4::project_onto_normalized", + "glam::Vec4::reject_from", + "glam::Vec4::distance", + "glam::Vec4::from_array", + "glam::Vec4::mul_add", + "glam::Vec4::cmpeq", + "glam::Vec4::cmpne", + "glam::Vec4::reject_from_normalized", + "glam::Vec4::exp2", + "glam::Vec4::rem", + "glam::Vec4::as_i64vec4", + "glam::Vec4::sub-2", + "glam::Vec4::eq", + "glam::Vec4::reflect", + "glam::Vec4::as_u16vec4", + "glam::Vec4::normalize_or", + "glam::Vec4::is_finite_mask", + "glam::Vec4::is_finite", + "glam::Vec4::add", + "glam::Vec4::max_position", + "glam::Vec4::clamp_length_max", + "glam::Vec4::splat", + "glam::Vec4::signum", + "glam::Vec4::as_u64vec4", + "glam::Vec4::div_euclid", + "glam::Vec4::mul-1", + "glam::Vec4::div", + "glam::Vec4::distance_squared", + "glam::Vec4::log2", + "glam::Vec4::as_u8vec4", + "glam::Vec4::clamp_length_min", + "glam::Vec4::as_ivec4", + "glam::Vec4::max_element", + "glam::Vec4::clamp", + "glam::Vec4::length_squared", + "glam::Vec4::midpoint", + "glam::Vec4::trunc", + "glam::Vec4::truncate", + "glam::Vec4::cmple", + "glam::Vec4::dot", + "glam::Vec4::clamp_length", + "glam::Vec4::new", + "glam::Vec4::min", + "glam::Vec4::div-2", + "glam::Vec4::move_towards", + "glam::Vec4::div-1", + "glam::Vec4::sub", + "glam::Vec4::round", + "glam::Vec4::element_sum", + "glam::Vec4::is_normalized", + "glam::Vec4::recip", + "glam::Vec4::length", + "glam::Vec4::floor", + "glam::Vec4::add-2", + "glam::Vec4::is_negative_bitmask", + "glam::Vec4::min_position", + "glam::Vec4::normalize_or_zero", + "glam::Vec4::fract_gl", + "glam::Vec4::abs", + "glam::Vec4::with_y", + "glam::Vec4::dot_into_vec", + "glam::Vec4::cmpge", + "glam::Vec4::mul-2", + "glam::Vec4::normalize", + "glam::Vec4::with_z", + "glam::Vec4::cmplt", + "glam::Vec4::sub-1", + "glam::Vec4::ln", + "glam::Vec4::rem-2", + "glam::Vec4::with_x", + "glam::Vec4::clone" + ], + "layout": { + "kind": "Struct", + "name": "Vec4", + "fields": [ + { + "name": "x", + "type": { + "primitive": "f32" + } + }, + { + "name": "y", + "type": { + "primitive": "f32" + } + }, + { + "name": "z", + "type": { + "primitive": "f32" + } + }, + { + "name": "w", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "smol_str::SmolStr": { + "identifier": "SmolStr", + "crate": "smol_str", + "path": "smol_str::SmolStr", + "associated_functions": [ + "smol_str::SmolStr::to_string", + "smol_str::SmolStr::is_heap_allocated", + "smol_str::SmolStr::clone", + "smol_str::SmolStr::is_empty", + "smol_str::SmolStr::eq", + "smol_str::SmolStr::len" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "uuid::NonNilUuid": { + "identifier": "NonNilUuid", + "crate": "uuid", + "path": "uuid::NonNilUuid", + "associated_functions": [ + "uuid::NonNilUuid::get", + "uuid::NonNilUuid::eq", + "uuid::NonNilUuid::clone", + "uuid::NonNilUuid::assert_receiver_is_total_eq", + "uuid::NonNilUuid::eq-1" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "uuid::Uuid": { + "identifier": "Uuid", + "crate": "uuid", + "path": "uuid::Uuid", + "associated_functions": [ + "uuid::Uuid::get_node_id", + "uuid::Uuid::new_v4", + "uuid::Uuid::into_bytes", + "uuid::Uuid::get_version_num", + "uuid::Uuid::is_max", + "uuid::Uuid::to_bytes_le", + "uuid::Uuid::from_bytes_le", + "uuid::Uuid::nil", + "uuid::Uuid::from_bytes", + "uuid::Uuid::from_u128_le", + "uuid::Uuid::max", + "uuid::Uuid::eq-1", + "uuid::Uuid::as_u64_pair", + "uuid::Uuid::clone", + "uuid::Uuid::encode_buffer", + "uuid::Uuid::is_nil", + "uuid::Uuid::to_u128_le", + "uuid::Uuid::assert_receiver_is_total_eq", + "uuid::Uuid::eq", + "uuid::Uuid::from_u128", + "uuid::Uuid::from_u64_pair", + "uuid::Uuid::as_u128" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "wgpu_types::BlendState": { + "identifier": "BlendState", + "crate": "wgpu_types", + "path": "wgpu_types::BlendState", + "associated_functions": [ + "wgpu_types::BlendState::eq", + "wgpu_types::BlendState::clone", + "wgpu_types::BlendState::assert_receiver_is_total_eq" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "wgpu_types::TextureFormat": { + "identifier": "TextureFormat", + "crate": "wgpu_types", + "path": "wgpu_types::TextureFormat", + "associated_functions": [ + "wgpu_types::TextureFormat::components", + "wgpu_types::TextureFormat::planes", + "wgpu_types::TextureFormat::clone", + "wgpu_types::TextureFormat::is_srgb", + "wgpu_types::TextureFormat::block_dimensions", + "wgpu_types::TextureFormat::is_depth_stencil_format", + "wgpu_types::TextureFormat::eq", + "wgpu_types::TextureFormat::size_multiple_requirement", + "wgpu_types::TextureFormat::has_depth_aspect", + "wgpu_types::TextureFormat::assert_receiver_is_total_eq", + "wgpu_types::TextureFormat::is_compressed", + "wgpu_types::TextureFormat::is_depth_stencil_component", + "wgpu_types::TextureFormat::remove_srgb_suffix", + "wgpu_types::TextureFormat::is_combined_depth_stencil_format", + "wgpu_types::TextureFormat::target_pixel_byte_cost", + "wgpu_types::TextureFormat::add_srgb_suffix", + "wgpu_types::TextureFormat::is_astc", + "wgpu_types::TextureFormat::has_color_aspect", + "wgpu_types::TextureFormat::has_stencil_aspect", + "wgpu_types::TextureFormat::is_bcn", + "wgpu_types::TextureFormat::is_multi_planar_format", + "wgpu_types::TextureFormat::target_component_alignment" + ], + "layout": null, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "Bool": { + "identifier": "Bool", + "path": "Bool", + "documentation": "A boolean value", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "bool" + } + }, + "Char": { + "identifier": "Char", + "path": "Char", + "documentation": "An 8-bit character", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "char" + } + }, + "DynamicFunction": { + "identifier": "DynamicFunction", + "path": "DynamicFunction", + "documentation": "A callable dynamic function", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "dynamicFunction" + } + }, + "DynamicFunctionMut": { + "identifier": "DynamicFunctionMut", + "path": "DynamicFunctionMut", + "documentation": "A stateful and callable dynamic function", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "dynamicFunctionMut" + } + }, + "F32": { + "identifier": "F32", + "path": "F32", + "documentation": "A 32-bit floating point number", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "f32" + } + }, + "F64": { + "identifier": "F64", + "path": "F64", + "documentation": "A 64-bit floating point number", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "f64" + } + }, + "FunctionCallContext": { + "identifier": "FunctionCallContext", + "path": "FunctionCallContext", + "documentation": "Function call context, if accepted by a function, means the function can access the world in arbitrary ways.", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "functionCallContext" + } + }, + "I128": { + "identifier": "I128", + "path": "I128", + "documentation": "A signed 128-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "i128" + } + }, + "I16": { + "identifier": "I16", + "path": "I16", + "documentation": "A signed 16-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "i16" + } + }, + "I32": { + "identifier": "I32", + "path": "I32", + "documentation": "A signed 32-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "i32" + } + }, + "I64": { + "identifier": "I64", + "path": "I64", + "documentation": "A signed 64-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "i64" + } + }, + "I8": { + "identifier": "I8", + "path": "I8", + "documentation": "A signed 8-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "i8" + } + }, + "Isize": { + "identifier": "Isize", + "path": "Isize", + "documentation": "A signed pointer-sized integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "isize" + } + }, + "OsString": { + "identifier": "OsString", + "path": "OsString", + "documentation": "A heap allocated OS string", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "osString" + } + }, + "PathBuf": { + "identifier": "PathBuf", + "path": "PathBuf", + "documentation": "A heap allocated file path", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "pathBuf" + } + }, + "ScriptValue": { + "identifier": "ScriptValue", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::script_value::ScriptValue", + "documentation": " An abstraction of values that can be passed to and from scripts.\n This allows us to re-use logic between scripting languages.", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "Str": { + "identifier": "Str", + "path": "Str", + "documentation": "A string slice", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "str" + } + }, + "String": { + "identifier": "String", + "path": "String", + "documentation": "A heap allocated string", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "string" + } + }, + "U128": { + "identifier": "U128", + "path": "U128", + "documentation": "An unsigned 128-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "u128" + } + }, + "U16": { + "identifier": "U16", + "path": "U16", + "documentation": "An unsigned 16-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "u16" + } + }, + "U32": { + "identifier": "U32", + "path": "U32", + "documentation": "An unsigned 32-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "u32" + } + }, + "U64": { + "identifier": "U64", + "path": "U64", + "documentation": "An unsigned 64-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "u64" + } + }, + "U8": { + "identifier": "U8", + "path": "U8", + "documentation": "An unsigned 8-bit integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "u8" + } + }, + "Usize": { + "identifier": "Usize", + "path": "Usize", + "documentation": "An unsigned pointer-sized integer", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": false, + "mapped_to_primitive_kind": "usize" + } + }, + "bevy_a11y::AccessibilityRequested": { + "identifier": "AccessibilityRequested", + "crate": "bevy_a11y", + "path": "bevy_a11y::AccessibilityRequested", + "documentation": " Tracks whether an assistive technology has requested accessibility\n information.\n\n This type is a [`Resource`] initialized by the\n [`AccessibilityPlugin`]. It may be useful if a third-party plugin needs to\n conditionally integrate with `AccessKit`.\n\n In other words, this resource represents whether accessibility providers\n are \"turned on\" or \"turned off\" across an entire Bevy `App`.\n\n By default, it is set to `false`, indicating that nothing has requested\n accessibility information yet.\n\n [`Resource`]: bevy_ecs::resource::Resource", + "layout": { + "kind": "TupleStruct", + "name": "AccessibilityRequested", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_a11y::AccessibilitySystems": { + "identifier": "AccessibilitySystems", + "crate": "bevy_a11y", + "path": "bevy_a11y::AccessibilitySystems", + "documentation": " A system set relating to accessibility.\n\n Helps run accessibility updates all at once.", + "layout": [ + { + "kind": "Unit", + "name": "Update" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_a11y::ManageAccessibilityUpdates": { + "identifier": "ManageAccessibilityUpdates", + "crate": "bevy_a11y", + "path": "bevy_a11y::ManageAccessibilityUpdates", + "documentation": " Determines whether Bevy's ECS updates the accessibility tree.\n\n This [`Resource`] tells Bevy internals whether it should be handling\n `AccessKit` updates (`true`), or if something else is doing that (`false`).\n\n It defaults to `true`. So, by default, Bevy is configured to maintain the\n `AccessKit` tree.\n\n Set to `false` in cases where an external GUI library is sending\n accessibility updates instead. When this option is set inconsistently with\n that requirement, the external library and ECS will generate conflicting\n updates.\n\n [`Resource`]: bevy_ecs::resource::Resource", + "layout": { + "kind": "TupleStruct", + "name": "ManageAccessibilityUpdates", + "fields": [ + { + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::assets::AssetIndex": { + "identifier": "AssetIndex", + "crate": "bevy_asset", + "path": "bevy_asset::assets::AssetIndex", + "documentation": " A generational runtime-only identifier for a specific [`Asset`] stored in [`Assets`]. This is optimized for efficient runtime\n usage and is not suitable for identifying assets across app runs.", + "layout": { + "kind": "Struct", + "name": "AssetIndex", + "fields": [ + { + "name": "generation", + "type": { + "primitive": "u32" + } + }, + { + "name": "index", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::UntypedHandle": { + "identifier": "UntypedHandle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::UntypedHandle", + "documentation": " An untyped variant of [`Handle`], which internally stores the [`Asset`] type information at runtime\n as a [`TypeId`] instead of encoding it in the compile-time type. This allows handles across [`Asset`] types\n to be stored together and compared.\n\n See [`Handle`] for more information.", + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "Struct", + "name": "Uuid", + "fields": [ + { + "name": "type_id", + "type": { + "val": "core::any::TypeId" + } + }, + { + "name": "uuid", + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::id::UntypedAssetId": { + "identifier": "UntypedAssetId", + "crate": "bevy_asset", + "path": "bevy_asset::id::UntypedAssetId", + "documentation": " An \"untyped\" / \"generic-less\" [`Asset`] identifier that behaves much like [`AssetId`], but stores the [`Asset`] type\n information at runtime instead of compile-time. This increases the size of the type, but it enables storing asset ids\n across asset types together and enables comparisons between them.", + "layout": [ + { + "kind": "Struct", + "name": "Index", + "fields": [ + { + "name": "type_id", + "type": { + "val": "core::any::TypeId" + } + }, + { + "name": "index", + "type": { + "val": "bevy_asset::assets::AssetIndex" + } + } + ] + }, + { + "kind": "Struct", + "name": "Uuid", + "fields": [ + { + "name": "type_id", + "type": { + "val": "core::any::TypeId" + } + }, + { + "name": "uuid", + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::path::AssetPath": { + "identifier": "AssetPath", + "crate": "bevy_asset", + "path": "bevy_asset::path::AssetPath", + "documentation": " Represents a path to an asset in a \"virtual filesystem\".\n\n Asset paths consist of three main parts:\n * [`AssetPath::source`]: The name of the [`AssetSource`](crate::io::AssetSource) to load the asset from.\n This is optional. If one is not set the default source will be used (which is the `assets` folder by default).\n * [`AssetPath::path`]: The \"virtual filesystem path\" pointing to an asset source file.\n * [`AssetPath::label`]: An optional \"named sub asset\". When assets are loaded, they are\n allowed to load \"sub assets\" of any type, which are identified by a named \"label\".\n\n Asset paths are generally constructed (and visualized) as strings:\n\n ```no_run\n # use bevy_asset::{Asset, AssetServer, Handle};\n # use bevy_reflect::TypePath;\n #\n # #[derive(Asset, TypePath, Default)]\n # struct Mesh;\n #\n # #[derive(Asset, TypePath, Default)]\n # struct Scene;\n #\n # let asset_server: AssetServer = panic!();\n // This loads the `my_scene.scn` base asset from the default asset source.\n let scene: Handle = asset_server.load(\"my_scene.scn\");\n\n // This loads the `PlayerMesh` labeled asset from the `my_scene.scn` base asset in the default asset source.\n let mesh: Handle = asset_server.load(\"my_scene.scn#PlayerMesh\");\n\n // This loads the `my_scene.scn` base asset from a custom 'remote' asset source.\n let scene: Handle = asset_server.load(\"remote://my_scene.scn\");\n ```\n\n [`AssetPath`] implements [`From`] for `&'static str`, `&'static Path`, and `&'a String`,\n which allows us to optimize the static cases.\n This means that the common case of `asset_server.load(\"my_scene.scn\")` when it creates and\n clones internal owned [`AssetPaths`](AssetPath).\n This also means that you should use [`AssetPath::parse`] in cases where `&str` is the explicit type.", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::render_asset::RenderAssetUsages": { + "identifier": "RenderAssetUsages", + "crate": "bevy_asset", + "path": "bevy_asset::render_asset::RenderAssetUsages", + "documentation": " Defines where the asset will be used.\n\n If an asset is set to the `RENDER_WORLD` but not the `MAIN_WORLD`, the asset data (pixel data,\n mesh vertex data, etc) will be removed from the cpu-side asset once it's been extracted and prepared\n in the render world. The asset will remain in the assets collection, but with only metadata.\n\n Unloading the asset data saves on memory, as for most cases it is no longer necessary to keep\n it in RAM once it's been uploaded to the GPU's VRAM. However, this means you cannot access the\n asset data from the CPU (via the `Assets` resource) once unloaded (without re-loading it).\n\n If you never need access to the asset from the CPU past the first frame it's loaded on,\n or only need very infrequent access, then set this to `RENDER_WORLD`. Otherwise, set this to\n `RENDER_WORLD | MAIN_WORLD`.\n\n If you have an asset that doesn't actually need to end up in the render world, like an Image\n that will be decoded into another Image asset, use `MAIN_WORLD` only.\n\n ## Platform-specific\n\n On Wasm, it is not possible for now to free reserved memory. To control memory usage, load assets\n in sequence and unload one before loading the next. See this\n [discussion about memory management](https://github.com/WebAssembly/design/issues/1397) for more\n details.", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::Camera": { + "identifier": "Camera", + "crate": "bevy_camera", + "path": "bevy_camera::camera::Camera", + "documentation": " The defining [`Component`] for camera entities,\n storing information about how and what to render through this camera.\n\n The [`Camera`] component is added to an entity to define the properties of the viewpoint from\n which rendering occurs. It defines the position of the view to render, the projection method\n to transform the 3D objects into a 2D image, as well as the render target into which that image\n is produced.\n\n Note that a [`Camera`] needs a `CameraRenderGraph` to render anything.\n This is typically provided by adding a [`Camera2d`] or [`Camera3d`] component,\n but custom render graphs can also be defined. Inserting a [`Camera`] with no render\n graph will emit an error at runtime.\n\n [`Camera2d`]: crate::Camera2d\n [`Camera3d`]: crate::Camera3d", + "layout": { + "kind": "Struct", + "name": "Camera", + "fields": [ + { + "name": "viewport", + "type": { + "option": { + "val": "bevy_camera::camera::Viewport" + } + } + }, + { + "name": "order", + "type": { + "primitive": "isize" + } + }, + { + "name": "is_active", + "type": { + "primitive": "bool" + } + }, + { + "name": "output_mode", + "type": { + "val": "bevy_camera::camera::CameraOutputMode" + } + }, + { + "name": "msaa_writeback", + "type": { + "val": "bevy_camera::clear_color::MsaaWriteback" + } + }, + { + "name": "clear_color", + "type": { + "val": "bevy_camera::clear_color::ClearColorConfig" + } + }, + { + "name": "invert_culling", + "type": { + "primitive": "bool" + } + }, + { + "name": "sub_camera_view", + "type": { + "option": { + "val": "bevy_camera::camera::SubCameraView" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::CameraMainTextureUsages": { + "identifier": "CameraMainTextureUsages", + "crate": "bevy_camera", + "path": "bevy_camera::camera::CameraMainTextureUsages", + "documentation": " This component lets you control the [`TextureUsages`] field of the main texture generated for the camera", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::CameraOutputMode": { + "identifier": "CameraOutputMode", + "crate": "bevy_camera", + "path": "bevy_camera::camera::CameraOutputMode", + "documentation": " Control how this [`Camera`] outputs once rendering is completed.", + "layout": [ + { + "kind": "Struct", + "name": "Write", + "fields": [ + { + "name": "blend_state", + "type": { + "option": { + "val": "wgpu_types::BlendState" + } + } + }, + { + "name": "clear_color", + "type": { + "val": "bevy_camera::clear_color::ClearColorConfig" + } + } + ] + }, + { + "kind": "Unit", + "name": "Skip" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::Exposure": { + "identifier": "Exposure", + "crate": "bevy_camera", + "path": "bevy_camera::camera::Exposure", + "documentation": " How much energy a [`Camera3d`](crate::Camera3d) absorbs from incoming light.\n\n ", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::ImageRenderTarget": { + "identifier": "ImageRenderTarget", + "crate": "bevy_camera", + "path": "bevy_camera::camera::ImageRenderTarget", + "documentation": " A render target that renders to an [`Image`].", + "layout": { + "kind": "Struct", + "name": "ImageRenderTarget", + "fields": [ + { + "name": "handle", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "scale_factor", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::MainPassResolutionOverride": { + "identifier": "MainPassResolutionOverride", + "crate": "bevy_camera", + "path": "bevy_camera::camera::MainPassResolutionOverride", + "documentation": " Override the resolution a 3d camera's main pass is rendered at.\n\n Does not affect post processing.\n\n ## Usage\n\n * Insert this component on a 3d camera entity in the render world.\n * The resolution override must be smaller than the camera's viewport size.\n * The resolution override is specified in physical pixels.\n * In shaders, use `View::main_pass_viewport` instead of `View::viewport`.", + "layout": { + "kind": "TupleStruct", + "name": "MainPassResolutionOverride", + "fields": [ + { + "type": { + "val": "glam::UVec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::ManualTextureViewHandle": { + "identifier": "ManualTextureViewHandle", + "crate": "bevy_camera", + "path": "bevy_camera::camera::ManualTextureViewHandle", + "documentation": " A unique id that corresponds to a specific `ManualTextureView` in the `ManualTextureViews` collection.\n\n See `ManualTextureViews` in `bevy_camera` for more details.", + "layout": { + "kind": "TupleStruct", + "name": "ManualTextureViewHandle", + "fields": [ + { + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::NormalizedRenderTarget": { + "identifier": "NormalizedRenderTarget", + "crate": "bevy_camera", + "path": "bevy_camera::camera::NormalizedRenderTarget", + "documentation": " Normalized version of the render target.\n\n Once we have this we shouldn't need to resolve it down anymore.", + "layout": [ + { + "kind": "TupleStruct", + "name": "Window", + "fields": [ + { + "type": { + "val": "bevy_window::window::NormalizedWindowRef" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Image", + "fields": [ + { + "type": { + "val": "bevy_camera::camera::ImageRenderTarget" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "TextureView", + "fields": [ + { + "type": { + "val": "bevy_camera::camera::ManualTextureViewHandle" + } + } + ] + }, + { + "kind": "Struct", + "name": "None", + "fields": [ + { + "name": "width", + "type": { + "primitive": "u32" + } + }, + { + "name": "height", + "type": { + "primitive": "u32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::RenderTarget": { + "identifier": "RenderTarget", + "crate": "bevy_camera", + "path": "bevy_camera::camera::RenderTarget", + "documentation": " The \"target\" that a [`Camera`] will render to. For example, this could be a `Window`\n swapchain or an [`Image`].", + "layout": [ + { + "kind": "TupleStruct", + "name": "Window", + "fields": [ + { + "type": { + "val": "bevy_window::window::WindowRef" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Image", + "fields": [ + { + "type": { + "val": "bevy_camera::camera::ImageRenderTarget" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "TextureView", + "fields": [ + { + "type": { + "val": "bevy_camera::camera::ManualTextureViewHandle" + } + } + ] + }, + { + "kind": "Struct", + "name": "None", + "fields": [ + { + "name": "size", + "type": { + "val": "glam::UVec2" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::SubCameraView": { + "identifier": "SubCameraView", + "crate": "bevy_camera", + "path": "bevy_camera::camera::SubCameraView", + "documentation": " Settings to define a camera sub view.\n\n When [`Camera::sub_camera_view`] is `Some`, only the sub-section of the\n image defined by `size` and `offset` (relative to the `full_size` of the\n whole image) is projected to the cameras viewport.\n\n Take the example of the following multi-monitor setup:\n ```css\n ┌───┬───┐\n │ A │ B │\n ├───┼───┤\n │ C │ D │\n └───┴───┘\n ```\n If each monitor is 1920x1080, the whole image will have a resolution of\n 3840x2160. For each monitor we can use a single camera with a viewport of\n the same size as the monitor it corresponds to. To ensure that the image is\n cohesive, we can use a different sub view on each camera:\n - Camera A: `full_size` = 3840x2160, `size` = 1920x1080, `offset` = 0,0\n - Camera B: `full_size` = 3840x2160, `size` = 1920x1080, `offset` = 1920,0\n - Camera C: `full_size` = 3840x2160, `size` = 1920x1080, `offset` = 0,1080\n - Camera D: `full_size` = 3840x2160, `size` = 1920x1080, `offset` =\n 1920,1080\n\n However since only the ratio between the values is important, they could all\n be divided by 120 and still produce the same image. Camera D would for\n example have the following values:\n `full_size` = 32x18, `size` = 16x9, `offset` = 16,9", + "layout": { + "kind": "Struct", + "name": "SubCameraView", + "fields": [ + { + "name": "full_size", + "type": { + "val": "glam::UVec2" + } + }, + { + "name": "offset", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "size", + "type": { + "val": "glam::UVec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::camera::Viewport": { + "identifier": "Viewport", + "crate": "bevy_camera", + "path": "bevy_camera::camera::Viewport", + "documentation": " Render viewport configuration for the [`Camera`] component.\n\n The viewport defines the area on the render target to which the camera renders its image.\n You can overlay multiple cameras in a single window using viewports to create effects like\n split screen, minimaps, and character viewers.", + "layout": { + "kind": "Struct", + "name": "Viewport", + "fields": [ + { + "name": "physical_position", + "type": { + "val": "glam::UVec2" + } + }, + { + "name": "physical_size", + "type": { + "val": "glam::UVec2" + } + }, + { + "name": "depth", + "type": { + "val": "core::ops::Range" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::clear_color::ClearColor": { + "identifier": "ClearColor", + "crate": "bevy_camera", + "path": "bevy_camera::clear_color::ClearColor", + "documentation": " A [`Resource`] that stores the default color that cameras use to clear the screen between frames.\n\n This color appears as the \"background\" color for simple apps,\n when there are portions of the screen with nothing rendered.\n\n Individual cameras may use [`Camera.clear_color`] to specify a different\n clear color or opt out of clearing their viewport.\n\n [`Camera.clear_color`]: crate::camera::Camera::clear_color", + "layout": { + "kind": "TupleStruct", + "name": "ClearColor", + "fields": [ + { + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::clear_color::ClearColorConfig": { + "identifier": "ClearColorConfig", + "crate": "bevy_camera", + "path": "bevy_camera::clear_color::ClearColorConfig", + "documentation": " For a camera, specifies the color used to clear the viewport\n [before rendering](crate::camera::Camera::clear_color)\n or when [writing to the final render target texture](crate::camera::Camera::output_mode).", + "layout": [ + { + "kind": "Unit", + "name": "Default" + }, + { + "kind": "TupleStruct", + "name": "Custom", + "fields": [ + { + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + { + "kind": "Unit", + "name": "None" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::clear_color::MsaaWriteback": { + "identifier": "MsaaWriteback", + "crate": "bevy_camera", + "path": "bevy_camera::clear_color::MsaaWriteback", + "documentation": " Controls when MSAA writeback occurs for a camera.\n\n MSAA writeback copies the previous camera's output into the MSAA sampled texture before\n rendering, allowing multiple cameras to layer their results when MSAA is enabled.", + "layout": [ + { + "kind": "Unit", + "name": "Off" + }, + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "Unit", + "name": "Always" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::components::Camera2d": { + "identifier": "Camera2d", + "crate": "bevy_camera", + "path": "bevy_camera::components::Camera2d", + "documentation": " A 2D camera component. Enables the 2D render graph for a [`Camera`].", + "layout": { + "kind": "Struct", + "name": "Camera2d" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::components::Camera3d": { + "identifier": "Camera3d", + "crate": "bevy_camera", + "path": "bevy_camera::components::Camera3d", + "documentation": " A 3D camera component. Enables the main 3D render graph for a [`Camera`].\n\n The camera coordinate space is right-handed X-right, Y-up, Z-back.\n This means \"forward\" is -Z.", + "layout": { + "kind": "Struct", + "name": "Camera3d", + "fields": [ + { + "name": "depth_load_op", + "type": { + "val": "bevy_camera::components::Camera3dDepthLoadOp" + } + }, + { + "name": "depth_texture_usages", + "type": { + "val": "bevy_camera::components::Camera3dDepthTextureUsage" + } + }, + { + "name": "screen_space_specular_transmission_steps", + "type": { + "primitive": "usize" + } + }, + { + "name": "screen_space_specular_transmission_quality", + "type": { + "val": "bevy_camera::components::ScreenSpaceTransmissionQuality" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::components::Camera3dDepthLoadOp": { + "identifier": "Camera3dDepthLoadOp", + "crate": "bevy_camera", + "path": "bevy_camera::components::Camera3dDepthLoadOp", + "documentation": " The depth clear operation to perform for the main 3d pass.", + "layout": [ + { + "kind": "TupleStruct", + "name": "Clear", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Unit", + "name": "Load" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::components::Camera3dDepthTextureUsage": { + "identifier": "Camera3dDepthTextureUsage", + "crate": "bevy_camera", + "path": "bevy_camera::components::Camera3dDepthTextureUsage", + "layout": { + "kind": "TupleStruct", + "name": "Camera3dDepthTextureUsage", + "fields": [ + { + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::components::ScreenSpaceTransmissionQuality": { + "identifier": "ScreenSpaceTransmissionQuality", + "crate": "bevy_camera", + "path": "bevy_camera::components::ScreenSpaceTransmissionQuality", + "documentation": " The quality of the screen space transmission blur effect, applied to whatever's “behind” transmissive\n objects when their `roughness` is greater than `0.0`.\n\n Higher qualities are more GPU-intensive.\n\n **Note:** You can get better-looking results at any quality level by enabling TAA. See: `TemporalAntiAliasPlugin`", + "layout": [ + { + "kind": "Unit", + "name": "Low" + }, + { + "kind": "Unit", + "name": "Medium" + }, + { + "kind": "Unit", + "name": "High" + }, + { + "kind": "Unit", + "name": "Ultra" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::primitives::Aabb": { + "identifier": "Aabb", + "crate": "bevy_camera", + "path": "bevy_camera::primitives::Aabb", + "documentation": " An axis-aligned bounding box, defined by:\n - a center,\n - the distances from the center to each faces along the axis,\n the faces are orthogonal to the axis.\n\n It is typically used as a component on an entity to represent the local space\n occupied by this entity, with faces orthogonal to its local axis.\n\n This component is notably used during \"frustum culling\", a process to determine\n if an entity should be rendered by a [`Camera`] if its bounding box intersects\n with the camera's [`Frustum`].\n\n It will be added automatically by the systems in [`CalculateBounds`] to entities that:\n - could be subject to frustum culling, for example with a [`Mesh3d`]\n or `Sprite` component,\n - don't have the [`NoFrustumCulling`] component.\n\n It won't be updated automatically if the space occupied by the entity changes,\n for example if the vertex positions of a [`Mesh3d`] are updated.\n\n [`Camera`]: crate::Camera\n [`NoFrustumCulling`]: crate::visibility::NoFrustumCulling\n [`CalculateBounds`]: crate::visibility::VisibilitySystems::CalculateBounds\n [`Mesh3d`]: bevy_mesh::Mesh", + "layout": { + "kind": "Struct", + "name": "Aabb", + "fields": [ + { + "name": "center", + "type": { + "val": "glam::Vec3A" + } + }, + { + "name": "half_extents", + "type": { + "val": "glam::Vec3A" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::primitives::CascadesFrusta": { + "identifier": "CascadesFrusta", + "crate": "bevy_camera", + "path": "bevy_camera::primitives::CascadesFrusta", + "layout": { + "kind": "Struct", + "name": "CascadesFrusta" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::primitives::CubemapFrusta": { + "identifier": "CubemapFrusta", + "crate": "bevy_camera", + "path": "bevy_camera::primitives::CubemapFrusta", + "layout": { + "kind": "Struct", + "name": "CubemapFrusta" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::primitives::CubemapLayout": { + "identifier": "CubemapLayout", + "crate": "bevy_camera", + "path": "bevy_camera::primitives::CubemapLayout", + "documentation": " Cubemap layout defines the order of images in a packed cubemap image.", + "layout": [ + { + "kind": "Unit", + "name": "CrossVertical" + }, + { + "kind": "Unit", + "name": "CrossHorizontal" + }, + { + "kind": "Unit", + "name": "SequenceVertical" + }, + { + "kind": "Unit", + "name": "SequenceHorizontal" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::primitives::Frustum": { + "identifier": "Frustum", + "crate": "bevy_camera", + "path": "bevy_camera::primitives::Frustum", + "documentation": " A region of 3D space defined by the intersection of 6 [`HalfSpace`]s.\n\n Frustums are typically an apex-truncated square pyramid (a pyramid without the top) or a cuboid.\n\n Half spaces are ordered left, right, top, bottom, near, far. The normal vectors\n of the half-spaces point towards the interior of the frustum.\n\n A frustum component is used on an entity with a [`Camera`] component to\n determine which entities will be considered for rendering by this camera.\n All entities with an [`Aabb`] component that are not contained by (or crossing\n the boundary of) the frustum will not be rendered, and not be used in rendering computations.\n\n This process is called frustum culling, and entities can opt out of it using\n the [`NoFrustumCulling`] component.\n\n The frustum component is typically added automatically for cameras, either [`Camera2d`] or [`Camera3d`].\n It is usually updated automatically by [`update_frusta`] from the\n [`CameraProjection`] component and [`GlobalTransform`] of the camera entity.\n\n [`Camera`]: crate::Camera\n [`NoFrustumCulling`]: crate::visibility::NoFrustumCulling\n [`update_frusta`]: crate::visibility::update_frusta\n [`CameraProjection`]: crate::CameraProjection\n [`GlobalTransform`]: bevy_transform::components::GlobalTransform\n [`Camera2d`]: crate::Camera2d\n [`Camera3d`]: crate::Camera3d", + "layout": { + "kind": "Struct", + "name": "Frustum" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::projection::CustomProjection": { + "identifier": "CustomProjection", + "crate": "bevy_camera", + "path": "bevy_camera::projection::CustomProjection", + "documentation": " Holds a dynamic [`CameraProjection`] trait object. Use [`Projection::custom()`] to construct a\n custom projection.\n\n The contained dynamic object can be downcast into a static type using [`CustomProjection::get`].", + "layout": { + "kind": "Struct", + "name": "CustomProjection" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::projection::OrthographicProjection": { + "identifier": "OrthographicProjection", + "crate": "bevy_camera", + "path": "bevy_camera::projection::OrthographicProjection", + "documentation": " Project a 3D space onto a 2D surface using parallel lines, i.e., unlike [`PerspectiveProjection`],\n the size of objects remains the same regardless of their distance to the camera.\n\n The volume contained in the projection is called the *view frustum*. Since the viewport is rectangular\n and projection lines are parallel, the view frustum takes the shape of a cuboid.\n\n Note that the scale of the projection and the apparent size of objects are inversely proportional.\n As the size of the projection increases, the size of objects decreases.\n\n # Examples\n\n Configure the orthographic projection to one world unit per 100 window pixels:\n\n ```\n # use bevy_camera::{OrthographicProjection, Projection, ScalingMode};\n let projection = Projection::Orthographic(OrthographicProjection {\n scaling_mode: ScalingMode::WindowSize,\n scale: 0.01,\n ..OrthographicProjection::default_2d()\n });\n ```", + "layout": { + "kind": "Struct", + "name": "OrthographicProjection", + "fields": [ + { + "name": "near", + "type": { + "primitive": "f32" + } + }, + { + "name": "far", + "type": { + "primitive": "f32" + } + }, + { + "name": "viewport_origin", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "scaling_mode", + "type": { + "val": "bevy_camera::projection::ScalingMode" + } + }, + { + "name": "scale", + "type": { + "primitive": "f32" + } + }, + { + "name": "area", + "type": { + "val": "bevy_math::rects::rect::Rect" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::projection::PerspectiveProjection": { + "identifier": "PerspectiveProjection", + "crate": "bevy_camera", + "path": "bevy_camera::projection::PerspectiveProjection", + "documentation": " A 3D camera projection in which distant objects appear smaller than close objects.", + "layout": { + "kind": "Struct", + "name": "PerspectiveProjection", + "fields": [ + { + "name": "fov", + "type": { + "primitive": "f32" + } + }, + { + "name": "aspect_ratio", + "type": { + "primitive": "f32" + } + }, + { + "name": "near", + "type": { + "primitive": "f32" + } + }, + { + "name": "far", + "type": { + "primitive": "f32" + } + }, + { + "name": "near_clip_plane", + "type": { + "val": "glam::Vec4" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::projection::Projection": { + "identifier": "Projection", + "crate": "bevy_camera", + "path": "bevy_camera::projection::Projection", + "documentation": " Component that defines how to compute a [`Camera`]'s projection matrix.\n\n Common projections, like perspective and orthographic, are provided out of the box to handle the\n majority of use cases. Custom projections can be added using the [`CameraProjection`] trait and\n the [`Projection::custom`] constructor.\n\n ## What's a projection?\n\n A camera projection essentially describes how 3d points from the point of view of a camera are\n projected onto a 2d screen. This is where properties like a camera's field of view are defined.\n More specifically, a projection is a 4x4 matrix that transforms points from view space (the\n point of view of the camera) into clip space. Clip space is almost, but not quite, equivalent to\n the rectangle that is rendered to your screen, with a depth axis. Any points that land outside\n the bounds of this cuboid are \"clipped\" and not rendered.\n\n You can also think of the projection as the thing that describes the shape of a camera's\n frustum: the volume in 3d space that is visible to a camera.\n\n [`Camera`]: crate::camera::Camera", + "layout": [ + { + "kind": "TupleStruct", + "name": "Perspective", + "fields": [ + { + "type": { + "val": "bevy_camera::projection::PerspectiveProjection" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Orthographic", + "fields": [ + { + "type": { + "val": "bevy_camera::projection::OrthographicProjection" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Custom", + "fields": [ + { + "type": { + "val": "bevy_camera::projection::CustomProjection" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::projection::ScalingMode": { + "identifier": "ScalingMode", + "crate": "bevy_camera", + "path": "bevy_camera::projection::ScalingMode", + "documentation": " Scaling mode for [`OrthographicProjection`].\n\n The effect of these scaling modes are combined with the [`OrthographicProjection::scale`] property.\n\n For example, if the scaling mode is `ScalingMode::Fixed { width: 100.0, height: 300 }` and the scale is `2.0`,\n the projection will be 200 world units wide and 600 world units tall.\n\n # Examples\n\n Configure the orthographic projection to two world units per window height:\n\n ```\n # use bevy_camera::{OrthographicProjection, Projection, ScalingMode};\n let projection = Projection::Orthographic(OrthographicProjection {\n scaling_mode: ScalingMode::FixedVertical { viewport_height: 2.0 },\n ..OrthographicProjection::default_2d()\n });\n ```", + "layout": [ + { + "kind": "Unit", + "name": "WindowSize" + }, + { + "kind": "Struct", + "name": "Fixed", + "fields": [ + { + "name": "width", + "type": { + "primitive": "f32" + } + }, + { + "name": "height", + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Struct", + "name": "AutoMin", + "fields": [ + { + "name": "min_width", + "type": { + "primitive": "f32" + } + }, + { + "name": "min_height", + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Struct", + "name": "AutoMax", + "fields": [ + { + "name": "max_width", + "type": { + "primitive": "f32" + } + }, + { + "name": "max_height", + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Struct", + "name": "FixedVertical", + "fields": [ + { + "name": "viewport_height", + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Struct", + "name": "FixedHorizontal", + "fields": [ + { + "name": "viewport_width", + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::CascadesVisibleEntities": { + "identifier": "CascadesVisibleEntities", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::CascadesVisibleEntities", + "layout": { + "kind": "Struct", + "name": "CascadesVisibleEntities" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::CubemapVisibleEntities": { + "identifier": "CubemapVisibleEntities", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::CubemapVisibleEntities", + "layout": { + "kind": "Struct", + "name": "CubemapVisibleEntities" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::InheritedVisibility": { + "identifier": "InheritedVisibility", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::InheritedVisibility", + "documentation": " Whether or not an entity is visible in the hierarchy.\n This will not be accurate until [`VisibilityPropagate`] runs in the [`PostUpdate`] schedule.\n\n If this is false, then [`ViewVisibility`] should also be false.\n\n [`VisibilityPropagate`]: VisibilitySystems::VisibilityPropagate", + "layout": { + "kind": "TupleStruct", + "name": "InheritedVisibility", + "fields": [ + { + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::NoAutoAabb": { + "identifier": "NoAutoAabb", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::NoAutoAabb", + "documentation": " Add this component to an entity to prevent its `AABB` from being automatically recomputed.\n\n This is useful if entities are already spawned with a correct `Aabb` component, or you have\n many entities and want to avoid the cost of table scans searching for entities that need to have\n their AABB recomputed.", + "layout": { + "kind": "Struct", + "name": "NoAutoAabb" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::NoFrustumCulling": { + "identifier": "NoFrustumCulling", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::NoFrustumCulling", + "documentation": " Use this component to opt-out of built-in frustum culling for entities, see\n [`Frustum`].\n\n It can be used for example:\n - when a [`Mesh`] is updated but its [`Aabb`] is not, which might happen with animations,\n - when using some light effects, like wanting a [`Mesh`] out of the [`Frustum`]\n to appear in the reflection of a [`Mesh`] within.", + "layout": { + "kind": "Struct", + "name": "NoFrustumCulling" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::ViewVisibility": { + "identifier": "ViewVisibility", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::ViewVisibility", + "documentation": " Algorithmically computed indication of whether an entity is visible and should be extracted for\n rendering.\n\n Each frame, this will be reset to `false` during [`VisibilityPropagate`] systems in\n [`PostUpdate`]. Later in the frame, systems in [`CheckVisibility`] will mark any visible\n entities using [`ViewVisibility::set`]. Because of this, values of this type will be marked as\n changed every frame, even when they do not change.\n\n If you wish to add a custom visibility system that sets this value, be sure to add it to the\n [`CheckVisibility`] set.\n\n [`VisibilityPropagate`]: VisibilitySystems::VisibilityPropagate\n [`CheckVisibility`]: VisibilitySystems::CheckVisibility", + "layout": { + "kind": "TupleStruct", + "name": "ViewVisibility", + "fields": [ + { + "type": { + "primitive": "u8" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::Visibility": { + "identifier": "Visibility", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::Visibility", + "documentation": " User indication of whether an entity is visible. Propagates down the entity hierarchy.\n\n If an entity is hidden in this way, all [`Children`] (and all of their children and so on) who\n are set to [`Inherited`](Self::Inherited) will also be hidden.\n\n This is done by the `visibility_propagate_system` which uses the entity hierarchy and\n `Visibility` to set the values of each entity's [`InheritedVisibility`] component.", + "layout": [ + { + "kind": "Unit", + "name": "Inherited" + }, + { + "kind": "Unit", + "name": "Hidden" + }, + { + "kind": "Unit", + "name": "Visible" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::VisibilityClass": { + "identifier": "VisibilityClass", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::VisibilityClass", + "documentation": " A bucket into which we group entities for the purposes of visibility.\n\n Bevy's various rendering subsystems (3D, 2D, etc.) want to be able to\n quickly winnow the set of entities to only those that the subsystem is\n tasked with rendering, to avoid spending time examining irrelevant entities.\n At the same time, Bevy wants the [`check_visibility`] system to determine\n all entities' visibilities at the same time, regardless of what rendering\n subsystem is responsible for drawing them. Additionally, your application\n may want to add more types of renderable objects that Bevy determines\n visibility for just as it does for Bevy's built-in objects.\n\n The solution to this problem is *visibility classes*. A visibility class is\n a type, typically the type of a component, that represents the subsystem\n that renders it: for example, `Mesh3d`, `Mesh2d`, and `Sprite`. The\n [`VisibilityClass`] component stores the visibility class or classes that\n the entity belongs to. (Generally, an object will belong to only one\n visibility class, but in rare cases it may belong to multiple.)\n\n When adding a new renderable component, you'll typically want to write an\n add-component hook that adds the type ID of that component to the\n [`VisibilityClass`] array. See `custom_phase_item` for an example.\n\n `VisibilityClass` is automatically added by a hook on the `Mesh3d` and\n `Mesh2d` components. To avoid duplicating the `VisibilityClass` and\n causing issues when cloning, we use `#[component(clone_behavior=Ignore)]`", + "layout": { + "kind": "TupleStruct", + "name": "VisibilityClass", + "fields": [ + { + "type": { + "vec": { + "val": "core::any::TypeId" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::VisibleEntities": { + "identifier": "VisibleEntities", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::VisibleEntities", + "documentation": " Collection of entities visible from the current view.\n\n This component contains all entities which are visible from the currently\n rendered view. The collection is updated automatically by the [`VisibilitySystems::CheckVisibility`]\n system set. Renderers can use the equivalent `RenderVisibleEntities` to optimize rendering of\n a particular view, to prevent drawing items not visible from that view.\n\n This component is intended to be attached to the same entity as the [`Camera`] and\n the [`Frustum`] defining the view.", + "layout": { + "kind": "Struct", + "name": "VisibleEntities" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::VisibleMeshEntities": { + "identifier": "VisibleMeshEntities", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::VisibleMeshEntities", + "documentation": " Collection of mesh entities visible for 3D lighting.\n\n This component contains all mesh entities visible from the current light view.\n The collection is updated automatically by `bevy_pbr::SimulationLightSystems`.", + "layout": { + "kind": "Struct", + "name": "VisibleMeshEntities" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::range::VisibilityRange": { + "identifier": "VisibilityRange", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::range::VisibilityRange", + "documentation": " Specifies the range of distances that this entity must be from the camera in\n order to be rendered.\n\n This is also known as *hierarchical level of detail* or *HLOD*.\n\n Use this component when you want to render a high-polygon mesh when the\n camera is close and a lower-polygon mesh when the camera is far away. This\n is a common technique for improving performance, because fine details are\n hard to see in a mesh at a distance. To avoid an artifact known as *popping*\n between levels, each level has a *margin*, within which the object\n transitions gradually from invisible to visible using a dithering effect.\n\n You can also use this feature to replace multiple meshes with a single mesh\n when the camera is distant. This is the reason for the term \"*hierarchical*\n level of detail\". Reducing the number of meshes can be useful for reducing\n drawcall count. Note that you must place the [`VisibilityRange`] component\n on each entity you want to be part of a LOD group, as [`VisibilityRange`]\n isn't automatically propagated down to children.\n\n A typical use of this feature might look like this:\n\n | Entity | `start_margin` | `end_margin` |\n |-------------------------|----------------|--------------|\n | Root | N/A | N/A |\n | ├─ High-poly mesh | [0, 0) | [20, 25) |\n | ├─ Low-poly mesh | [20, 25) | [70, 75) |\n | └─ Billboard *imposter* | [70, 75) | [150, 160) |\n\n With this setup, the user will see a high-poly mesh when the camera is\n closer than 20 units. As the camera zooms out, between 20 units to 25 units,\n the high-poly mesh will gradually fade to a low-poly mesh. When the camera\n is 70 to 75 units away, the low-poly mesh will fade to a single textured\n quad. And between 150 and 160 units, the object fades away entirely. Note\n that the `end_margin` of a higher LOD is always identical to the\n `start_margin` of the next lower LOD; this is important for the crossfade\n effect to function properly.", + "layout": { + "kind": "Struct", + "name": "VisibilityRange", + "fields": [ + { + "name": "start_margin", + "type": { + "val": "core::ops::Range" + } + }, + { + "name": "end_margin", + "type": { + "val": "core::ops::Range" + } + }, + { + "name": "use_aabb", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_camera::visibility::render_layers::RenderLayers": { + "identifier": "RenderLayers", + "crate": "bevy_camera", + "path": "bevy_camera::visibility::render_layers::RenderLayers", + "documentation": " Defines which rendering layers an entity belongs to.\n\n A camera renders an entity only when their render layers intersect.\n\n The [`Default`] instance of `RenderLayers` contains layer `0`, the first layer. Entities\n without this component also belong to layer `0`.\n\n An empty `RenderLayers` makes the entity invisible.", + "layout": { + "kind": "TupleStruct", + "name": "RenderLayers", + "fields": [ + { + "type": { + "vec": { + "primitive": "u64" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_core_pipeline::prepass::DeferredPrepass": { + "identifier": "DeferredPrepass", + "crate": "bevy_core_pipeline", + "path": "bevy_core_pipeline::prepass::DeferredPrepass", + "documentation": " If added to a [`bevy_camera::Camera3d`] then deferred materials will be rendered to the deferred gbuffer texture and will be available to subsequent passes.\n Note the default deferred lighting plugin also requires `DepthPrepass` to work correctly.", + "layout": { + "kind": "Struct", + "name": "DeferredPrepass" + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::observer::distributed_storage::ObservedBy": { + "identifier": "ObservedBy", + "crate": "bevy_ecs", + "path": "bevy_ecs::observer::distributed_storage::ObservedBy", + "documentation": " Tracks a list of entity observers for the [`Entity`] [`ObservedBy`] is added to.", + "layout": { + "kind": "TupleStruct", + "name": "ObservedBy", + "fields": [ + { + "type": { + "vec": { + "val": "bevy_ecs::entity::Entity" + } + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_image::image::Image": { + "identifier": "Image", + "crate": "bevy_image", + "path": "bevy_image::image::Image", + "documentation": " An image, optimized for usage in rendering.\n\n ## Remote Inspection\n\n To transmit an [`Image`] between two running Bevy apps, e.g. through BRP, use [`SerializedImage`](crate::SerializedImage).\n This type is only meant for short-term transmission between same versions and should not be stored anywhere.", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_image::texture_atlas::TextureAtlas": { + "identifier": "TextureAtlas", + "crate": "bevy_image", + "path": "bevy_image::texture_atlas::TextureAtlas", + "documentation": " An index into a [`TextureAtlasLayout`], which corresponds to a specific section of a texture.\n\n It stores a handle to [`TextureAtlasLayout`] and the index of the current section of the atlas.\n The texture atlas contains various *sections* of a given texture, allowing users to have a single\n image file for either sprite animation or global mapping.\n You can change the texture [`index`](Self::index) of the atlas to animate the sprite or display only a *section* of the texture\n for efficient rendering of related game objects.\n\n Check the following examples for usage:\n - [`animated sprite sheet example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_sheet.rs)\n - [`sprite animation event example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_animation.rs)\n - [`texture atlas example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/texture_atlas.rs)", + "layout": { + "kind": "Struct", + "name": "TextureAtlas", + "fields": [ + { + "name": "layout", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "index", + "type": { + "primitive": "usize" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_image::texture_atlas::TextureAtlasLayout": { + "identifier": "TextureAtlasLayout", + "crate": "bevy_image", + "path": "bevy_image::texture_atlas::TextureAtlasLayout", + "documentation": " Stores a map used to lookup the position of a texture in a [`TextureAtlas`].\n This can be used to either use and look up a specific section of a texture, or animate frame-by-frame as a sprite sheet.\n\n Optionally it can store a mapping from sub texture handles to the related area index (see\n [`TextureAtlasBuilder`]).\n\n [Example usage animating sprite.](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_sheet.rs)\n [Example usage animating sprite in response to an event.](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_animation.rs)\n [Example usage loading sprite sheet.](https://github.com/bevyengine/bevy/blob/latest/examples/2d/texture_atlas.rs)\n\n [`TextureAtlasBuilder`]: crate::TextureAtlasBuilder", + "layout": { + "kind": "Struct", + "name": "TextureAtlasLayout", + "fields": [ + { + "name": "size", + "type": { + "val": "glam::UVec2" + } + }, + { + "name": "textures", + "type": { + "vec": { + "val": "bevy_math::rects::urect::URect" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::InputFocus": { + "identifier": "InputFocus", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::InputFocus", + "documentation": " Resource representing which entity has input focus, if any. Input events (other than pointer-like inputs) will be\n dispatched to the current focus entity, or to the primary window if no entity has focus.\n\n Changing the input focus is as easy as modifying this resource.\n\n # Examples\n\n From within a system:\n\n ```rust\n use bevy_ecs::prelude::*;\n use bevy_input_focus::InputFocus;\n\n fn clear_focus(mut input_focus: ResMut) {\n input_focus.clear();\n }\n ```\n\n With exclusive (or deferred) world access:\n\n ```rust\n use bevy_ecs::prelude::*;\n use bevy_input_focus::InputFocus;\n\n fn set_focus_from_world(world: &mut World) {\n let entity = world.spawn_empty().id();\n\n // Fetch the resource from the world\n let mut input_focus = world.resource_mut::();\n // Then mutate it!\n input_focus.set(entity);\n\n // Or you can just insert a fresh copy of the resource\n // which will overwrite the existing one.\n world.insert_resource(InputFocus::from_entity(entity));\n }\n ```", + "layout": { + "kind": "TupleStruct", + "name": "InputFocus", + "fields": [ + { + "type": { + "option": { + "val": "bevy_ecs::entity::Entity" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::InputFocusVisible": { + "identifier": "InputFocusVisible", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::InputFocusVisible", + "documentation": " Resource representing whether the input focus indicator should be visible on UI elements.\n\n Note that this resource is not used by [`bevy_input_focus`](crate) itself, but is provided for\n convenience to UI widgets or frameworks that want to display a focus indicator.\n [`InputFocus`] may still be `Some` even if the focus indicator is not visible.\n\n The value of this resource should be set by your focus navigation solution.\n For a desktop/web style of user interface this would be set to true when the user presses the tab key,\n and set to false when the user clicks on a different element.\n By contrast, a console-style UI intended to be navigated with a gamepad may always have the focus indicator visible.\n\n To easily access information about whether focus indicators should be shown for a given entity, use the [`IsFocused`] trait.\n\n By default, this resource is set to `false`.", + "layout": { + "kind": "TupleStruct", + "name": "InputFocusVisible", + "fields": [ + { + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::autofocus::AutoFocus": { + "identifier": "AutoFocus", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::autofocus::AutoFocus", + "documentation": " Indicates that this widget should automatically receive [`InputFocus`].\n\n This can be useful for things like dialog boxes, the first text input in a form,\n or the first button in a game menu.\n\n The focus is swapped when this component is added\n or an entity with this component is spawned.", + "layout": { + "kind": "Struct", + "name": "AutoFocus" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::directional_navigation::AutoNavigationConfig": { + "identifier": "AutoNavigationConfig", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::directional_navigation::AutoNavigationConfig", + "documentation": " Configuration resource for automatic directional navigation and for generating manual\n navigation edges via [`auto_generate_navigation_edges`]\n\n This resource controls how nodes should be automatically connected in each direction.", + "layout": { + "kind": "Struct", + "name": "AutoNavigationConfig", + "fields": [ + { + "name": "min_alignment_factor", + "type": { + "primitive": "f32" + } + }, + { + "name": "max_search_distance", + "type": { + "option": { + "primitive": "f32" + } + } + }, + { + "name": "prefer_aligned", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::directional_navigation::DirectionalNavigationMap": { + "identifier": "DirectionalNavigationMap", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::directional_navigation::DirectionalNavigationMap", + "documentation": " A resource that stores the manually specified traversable graph of focusable entities.\n\n Each entity can have up to 8 neighbors, one for each [`CompassOctant`].\n\n To ensure that your graph is intuitive to navigate and generally works correctly, it should be:\n\n - **Connected**: Every focusable entity should be reachable from every other focusable entity.\n - **Symmetric**: If entity A is a neighbor of entity B, then entity B should be a neighbor of entity A, ideally in the reverse direction.\n - **Physical**: The direction of navigation should match the layout of the entities when possible,\n although looping around the edges of the screen is also acceptable.\n - **Not self-connected**: An entity should not be a neighbor of itself; use [`None`] instead.\n\n This graph must be built and maintained manually, and the developer is responsible for ensuring that it meets the above criteria.\n Notably, if the developer adds or removes the navigability of an entity, the developer should update the map as necessary.", + "layout": { + "kind": "Struct", + "name": "DirectionalNavigationMap", + "fields": [ + { + "name": "neighbors", + "type": { + "val": "bevy_ecs::entity::hash_map::EntityHashMap" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::directional_navigation::FocusableArea": { + "identifier": "FocusableArea", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::directional_navigation::FocusableArea", + "documentation": " A focusable area with position and size information.\n\n This struct represents a UI element used during directional navigation,\n containing its entity ID, center position, and size for spatial navigation calculations.\n\n The term \"focusable area\" avoids confusion with UI `Node` components in `bevy_ui`.", + "layout": { + "kind": "Struct", + "name": "FocusableArea", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "position", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "size", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::directional_navigation::NavNeighbors": { + "identifier": "NavNeighbors", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::directional_navigation::NavNeighbors", + "documentation": " The up-to-eight neighbors of a focusable entity, one for each [`CompassOctant`].", + "layout": { + "kind": "Struct", + "name": "NavNeighbors", + "fields": [ + { + "name": "neighbors", + "type": { + "array": [ + { + "option": { + "val": "bevy_ecs::entity::Entity" + } + }, + 8 + ] + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::tab_navigation::TabGroup": { + "identifier": "TabGroup", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::tab_navigation::TabGroup", + "documentation": " A component used to mark a tree of entities as containing tabbable elements.", + "layout": { + "kind": "Struct", + "name": "TabGroup", + "fields": [ + { + "name": "order", + "type": { + "primitive": "i32" + } + }, + { + "name": "modal", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input_focus::tab_navigation::TabIndex": { + "identifier": "TabIndex", + "crate": "bevy_input_focus", + "path": "bevy_input_focus::tab_navigation::TabIndex", + "documentation": " A component which indicates that an entity wants to participate in tab navigation.\n\n Note that you must also add the [`TabGroup`] component to the entity's ancestor in order\n for this component to have any effect.", + "layout": { + "kind": "TupleStruct", + "name": "TabIndex", + "fields": [ + { + "type": { + "primitive": "i32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_math::affine3::Affine3": { + "identifier": "Affine3", + "crate": "bevy_math", + "path": "bevy_math::affine3::Affine3", + "documentation": " Reduced-size version of `glam::Affine3A` for use when storage has\n significant performance impact. Convert to `glam::Affine3A` to do\n non-trivial calculations.", + "layout": { + "kind": "Struct", + "name": "Affine3", + "fields": [ + { + "name": "matrix3", + "type": { + "val": "glam::Mat3" + } + }, + { + "name": "translation", + "type": { + "val": "glam::Vec3" + } + } + ] + }, + "generated": true, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::components::Mesh2d": { + "identifier": "Mesh2d", + "crate": "bevy_mesh", + "path": "bevy_mesh::components::Mesh2d", + "documentation": " A component for 2D meshes. Requires a [`MeshMaterial2d`] to be rendered, commonly using a [`ColorMaterial`].\n\n [`MeshMaterial2d`]: \n [`ColorMaterial`]: \n\n # Example\n\n ```ignore\n # use bevy_sprite::{ColorMaterial, MeshMaterial2d};\n # use bevy_ecs::prelude::*;\n # use bevy_mesh::{Mesh, Mesh2d};\n # use bevy_color::palettes::basic::RED;\n # use bevy_asset::Assets;\n # use bevy_math::primitives::Circle;\n #\n // Spawn an entity with a mesh using `ColorMaterial`.\n fn setup(\n mut commands: Commands,\n mut meshes: ResMut>,\n mut materials: ResMut>,\n ) {\n commands.spawn((\n Mesh2d(meshes.add(Circle::new(50.0))),\n MeshMaterial2d(materials.add(ColorMaterial::from_color(RED))),\n ));\n }\n ```", + "layout": { + "kind": "TupleStruct", + "name": "Mesh2d", + "fields": [ + { + "type": { + "val": "bevy_asset::handle::Handle" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::components::Mesh3d": { + "identifier": "Mesh3d", + "crate": "bevy_mesh", + "path": "bevy_mesh::components::Mesh3d", + "documentation": " A component for 3D meshes. Requires a [`MeshMaterial3d`] to be rendered, commonly using a [`StandardMaterial`].\n\n [`MeshMaterial3d`]: \n [`StandardMaterial`]: \n\n # Example\n\n ```ignore\n # use bevy_pbr::{Material, MeshMaterial3d, StandardMaterial};\n # use bevy_ecs::prelude::*;\n # use bevy_mesh::{Mesh, Mesh3d};\n # use bevy_color::palettes::basic::RED;\n # use bevy_asset::Assets;\n # use bevy_math::primitives::Capsule3d;\n #\n // Spawn an entity with a mesh using `StandardMaterial`.\n fn setup(\n mut commands: Commands,\n mut meshes: ResMut>,\n mut materials: ResMut>,\n ) {\n commands.spawn((\n Mesh3d(meshes.add(Capsule3d::default())),\n MeshMaterial3d(materials.add(StandardMaterial {\n base_color: RED.into(),\n ..Default::default()\n })),\n ));\n }\n ```", + "layout": { + "kind": "TupleStruct", + "name": "Mesh3d", + "fields": [ + { + "type": { + "val": "bevy_asset::handle::Handle" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::components::MeshTag": { + "identifier": "MeshTag", + "crate": "bevy_mesh", + "path": "bevy_mesh::components::MeshTag", + "documentation": " A component that stores an arbitrary index used to identify the mesh instance when rendering.", + "layout": { + "kind": "TupleStruct", + "name": "MeshTag", + "fields": [ + { + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::index::Indices": { + "identifier": "Indices", + "crate": "bevy_mesh", + "path": "bevy_mesh::index::Indices", + "documentation": " An array of indices into the [`VertexAttributeValues`](super::VertexAttributeValues) for a mesh.\n\n It describes the order in which the vertex attributes should be joined into faces.", + "layout": [ + { + "kind": "TupleStruct", + "name": "U16", + "fields": [ + { + "type": { + "vec": { + "primitive": "u16" + } + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "U32", + "fields": [ + { + "type": { + "vec": { + "primitive": "u32" + } + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::mesh::Mesh": { + "identifier": "Mesh", + "crate": "bevy_mesh", + "path": "bevy_mesh::mesh::Mesh", + "documentation": " A 3D object made out of vertices representing triangles, lines, or points,\n with \"attribute\" values for each vertex.\n\n Meshes can be automatically generated by a bevy `AssetLoader` (generally by loading a `Gltf` file),\n or by converting a [primitive](bevy_math::primitives) using [`into`](Into).\n It is also possible to create one manually. They can be edited after creation.\n\n Meshes can be rendered with a [`Mesh2d`](crate::Mesh2d) and `MeshMaterial2d`\n or [`Mesh3d`](crate::Mesh3d) and `MeshMaterial3d` for 2D and 3D respectively.\n\n A [`Mesh`] in Bevy is equivalent to a \"primitive\" in the glTF format, for a\n glTF Mesh representation, see `GltfMesh`.\n\n ## Manual creation\n\n The following function will construct a flat mesh, to be rendered with a\n `StandardMaterial` or `ColorMaterial`:\n\n ```\n # use bevy_mesh::{Mesh, Indices, PrimitiveTopology};\n # use bevy_asset::RenderAssetUsages;\n fn create_simple_parallelogram() -> Mesh {\n // Create a new mesh using a triangle list topology, where each set of 3 vertices composes a triangle.\n Mesh::new(PrimitiveTopology::TriangleList, RenderAssetUsages::default())\n // Add 4 vertices, each with its own position attribute (coordinate in\n // 3D space), for each of the corners of the parallelogram.\n .with_inserted_attribute(\n Mesh::ATTRIBUTE_POSITION,\n vec![[0.0, 0.0, 0.0], [1.0, 2.0, 0.0], [2.0, 2.0, 0.0], [1.0, 0.0, 0.0]]\n )\n // Assign a UV coordinate to each vertex.\n .with_inserted_attribute(\n Mesh::ATTRIBUTE_UV_0,\n vec![[0.0, 1.0], [0.5, 0.0], [1.0, 0.0], [0.5, 1.0]]\n )\n // Assign normals (everything points outwards)\n .with_inserted_attribute(\n Mesh::ATTRIBUTE_NORMAL,\n vec![[0.0, 0.0, 1.0], [0.0, 0.0, 1.0], [0.0, 0.0, 1.0], [0.0, 0.0, 1.0]]\n )\n // After defining all the vertices and their attributes, build each triangle using the\n // indices of the vertices that make it up in a counter-clockwise order.\n .with_inserted_indices(Indices::U32(vec![\n // First triangle\n 0, 3, 1,\n // Second triangle\n 1, 3, 2\n ]))\n }\n ```\n\n You can see how it looks like [here](https://github.com/bevyengine/bevy/blob/main/assets/docs/Mesh.png),\n used in a [`Mesh3d`](crate::Mesh3d) with a square bevy logo texture, with added axis, points,\n lines and text for clarity.\n\n ## Other examples\n\n For further visualization, explanation, and examples, see the built-in Bevy examples,\n and the [implementation of the built-in shapes](https://github.com/bevyengine/bevy/tree/main/crates/bevy_mesh/src/primitives).\n In particular, [generate_custom_mesh](https://github.com/bevyengine/bevy/blob/main/examples/3d/generate_custom_mesh.rs)\n teaches you to access and modify the attributes of a [`Mesh`] after creating it.\n\n ## Common points of confusion\n\n - UV maps in Bevy start at the top-left, see [`ATTRIBUTE_UV_0`](Mesh::ATTRIBUTE_UV_0),\n other APIs can have other conventions, `OpenGL` starts at bottom-left.\n - It is possible and sometimes useful for multiple vertices to have the same\n [position attribute](Mesh::ATTRIBUTE_POSITION) value,\n it's a common technique in 3D modeling for complex UV mapping or other calculations.\n - Bevy performs frustum culling based on the `Aabb` of meshes, which is calculated\n and added automatically for new meshes only. If a mesh is modified, the entity's `Aabb`\n needs to be updated manually or deleted so that it is re-calculated.\n\n ## Use with `StandardMaterial`\n\n To render correctly with `StandardMaterial`, a mesh needs to have properly defined:\n - [`UVs`](Mesh::ATTRIBUTE_UV_0): Bevy needs to know how to map a texture onto the mesh\n (also true for `ColorMaterial`).\n - [`Normals`](Mesh::ATTRIBUTE_NORMAL): Bevy needs to know how light interacts with your mesh.\n [0.0, 0.0, 1.0] is very common for simple flat meshes on the XY plane,\n because simple meshes are smooth and they don't require complex light calculations.\n - Vertex winding order: by default, `StandardMaterial.cull_mode` is `Some(Face::Back)`,\n which means that Bevy would *only* render the \"front\" of each triangle, which\n is the side of the triangle from where the vertices appear in a *counter-clockwise* order.\n\n ## Remote Inspection\n\n To transmit a [`Mesh`] between two running Bevy apps, e.g. through BRP, use [`SerializedMesh`].\n This type is only meant for short-term transmission between same versions and should not be stored anywhere.", + "layout": { + "kind": "Struct", + "name": "Mesh", + "fields": [ + { + "name": "indices", + "type": { + "val": "bevy_mesh::mesh::MeshExtractableData" + } + }, + { + "name": "morph_targets", + "type": { + "val": "bevy_mesh::mesh::MeshExtractableData>" + } + }, + { + "name": "morph_target_names", + "type": { + "val": "bevy_mesh::mesh::MeshExtractableData>" + } + }, + { + "name": "asset_usage", + "type": { + "val": "bevy_asset::render_asset::RenderAssetUsages" + } + }, + { + "name": "enable_raytracing", + "type": { + "primitive": "bool" + } + }, + { + "name": "final_aabb", + "type": { + "option": { + "val": "bevy_math::bounding::bounded3d::Aabb3d" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::morph::MeshMorphWeights": { + "identifier": "MeshMorphWeights", + "crate": "bevy_mesh", + "path": "bevy_mesh::morph::MeshMorphWeights", + "documentation": " Control a specific [`Mesh`] instance's [morph targets]. These control the weights of\n specific \"mesh primitives\" in scene formats like GLTF. They can be set manually, but\n in most cases they should \"automatically\" synced by setting the [`MorphWeights`] component\n on a parent entity.\n\n See [`MorphWeights`] for more details on Bevy's morph target implementation.\n\n Add this to an [`Entity`] with a [`Mesh3d`](crate::Mesh3d) with a [`MorphAttributes`] set\n to control individual weights of each morph target.\n\n [morph targets]: https://en.wikipedia.org/wiki/Morph_target_animation", + "layout": { + "kind": "Struct", + "name": "MeshMorphWeights", + "fields": [ + { + "name": "weights", + "type": { + "vec": { + "primitive": "f32" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::morph::MorphWeights": { + "identifier": "MorphWeights", + "crate": "bevy_mesh", + "path": "bevy_mesh::morph::MorphWeights", + "documentation": " Controls the [morph targets] for all child [`Mesh3d`](crate::Mesh3d) entities. In most cases, [`MorphWeights`] should be considered\n the \"source of truth\" when writing morph targets for meshes. However you can choose to write child [`MeshMorphWeights`]\n if your situation requires more granularity. Just note that if you set [`MorphWeights`], it will overwrite child\n [`MeshMorphWeights`] values.\n\n This exists because Bevy's [`Mesh`] corresponds to a _single_ surface / material, whereas morph targets\n as defined in the GLTF spec exist on \"multi-primitive meshes\" (where each primitive is its own surface with its own material).\n Therefore in Bevy [`MorphWeights`] an a parent entity are the \"canonical weights\" from a GLTF perspective, which then\n synchronized to child [`Mesh3d`](crate::Mesh3d) / [`MeshMorphWeights`] (which correspond to \"primitives\" / \"surfaces\" from a GLTF perspective).\n\n Add this to the parent of one or more [`Entities`](`Entity`) with a [`Mesh3d`](crate::Mesh3d) with a [`MeshMorphWeights`].\n\n [morph targets]: https://en.wikipedia.org/wiki/Morph_target_animation", + "layout": { + "kind": "Struct", + "name": "MorphWeights", + "fields": [ + { + "name": "weights", + "type": { + "vec": { + "primitive": "f32" + } + } + }, + { + "name": "first_mesh", + "type": { + "option": { + "val": "bevy_asset::handle::Handle" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::AnnulusMeshBuilder": { + "identifier": "AnnulusMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::AnnulusMeshBuilder", + "documentation": " A builder for creating a [`Mesh`] with an [`Annulus`] shape.", + "layout": { + "kind": "Struct", + "name": "AnnulusMeshBuilder", + "fields": [ + { + "name": "annulus", + "type": { + "val": "bevy_math::primitives::dim2::Annulus" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::Capsule2dMeshBuilder": { + "identifier": "Capsule2dMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::Capsule2dMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Capsule2d`] shape.", + "layout": { + "kind": "Struct", + "name": "Capsule2dMeshBuilder", + "fields": [ + { + "name": "capsule", + "type": { + "val": "bevy_math::primitives::dim2::Capsule2d" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::CircleMeshBuilder": { + "identifier": "CircleMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::CircleMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Circle`] shape.", + "layout": { + "kind": "Struct", + "name": "CircleMeshBuilder", + "fields": [ + { + "name": "circle", + "type": { + "val": "bevy_math::primitives::dim2::Circle" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::CircularMeshUvMode": { + "identifier": "CircularMeshUvMode", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::CircularMeshUvMode", + "documentation": " Specifies how to generate UV-mappings for the [`CircularSector`] and [`CircularSegment`] shapes.\n\n Currently the only variant is `Mask`, which is good for showing a portion of a texture that includes\n the entire circle, particularly the same texture will be displayed with different fractions of a\n complete circle.\n\n It's expected that more will be added in the future, such as a variant that causes the texture to be\n scaled to fit the bounding box of the shape, which would be good for packed textures only including the\n portion of the circle that is needed to display.", + "layout": [ + { + "kind": "Struct", + "name": "Mask", + "fields": [ + { + "name": "angle", + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::CircularSectorMeshBuilder": { + "identifier": "CircularSectorMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::CircularSectorMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`CircularSector`] shape.\n\n The resulting mesh will have a UV-map such that the center of the circle is\n at the center of the texture.", + "layout": { + "kind": "Struct", + "name": "CircularSectorMeshBuilder", + "fields": [ + { + "name": "sector", + "type": { + "val": "bevy_math::primitives::dim2::CircularSector" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + }, + { + "name": "uv_mode", + "type": { + "val": "bevy_mesh::primitives::dim2::CircularMeshUvMode" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::CircularSegmentMeshBuilder": { + "identifier": "CircularSegmentMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::CircularSegmentMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`CircularSegment`] shape.\n\n The resulting mesh will have a UV-map such that the center of the circle is\n at the center of the texture.", + "layout": { + "kind": "Struct", + "name": "CircularSegmentMeshBuilder", + "fields": [ + { + "name": "segment", + "type": { + "val": "bevy_math::primitives::dim2::CircularSegment" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + }, + { + "name": "uv_mode", + "type": { + "val": "bevy_mesh::primitives::dim2::CircularMeshUvMode" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::ConvexPolygonMeshBuilder": { + "identifier": "ConvexPolygonMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::ConvexPolygonMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`ConvexPolygon`] shape.\n\n You must verify that the `vertices` are not concave when constructing this type. You can\n guarantee this by creating a [`ConvexPolygon`] first, then calling [`ConvexPolygon::mesh()`].", + "layout": { + "kind": "Struct", + "name": "ConvexPolygonMeshBuilder", + "fields": [ + { + "name": "vertices", + "type": { + "vec": { + "val": "glam::Vec2" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::EllipseMeshBuilder": { + "identifier": "EllipseMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::EllipseMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with an [`Ellipse`] shape.", + "layout": { + "kind": "Struct", + "name": "EllipseMeshBuilder", + "fields": [ + { + "name": "ellipse", + "type": { + "val": "bevy_math::primitives::dim2::Ellipse" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::Polyline2dMeshBuilder": { + "identifier": "Polyline2dMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::Polyline2dMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Polyline2d`] shape.", + "layout": { + "kind": "Struct", + "name": "Polyline2dMeshBuilder", + "fields": [ + { + "name": "polyline", + "type": { + "val": "bevy_math::primitives::dim2::Polyline2d" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::RectangleMeshBuilder": { + "identifier": "RectangleMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::RectangleMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Rectangle`] shape.", + "layout": { + "kind": "Struct", + "name": "RectangleMeshBuilder", + "fields": [ + { + "name": "half_size", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::RegularPolygonMeshBuilder": { + "identifier": "RegularPolygonMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::RegularPolygonMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`RegularPolygon`] shape.", + "layout": { + "kind": "Struct", + "name": "RegularPolygonMeshBuilder", + "fields": [ + { + "name": "circumradius", + "type": { + "primitive": "f32" + } + }, + { + "name": "sides", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::RhombusMeshBuilder": { + "identifier": "RhombusMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::RhombusMeshBuilder", + "documentation": " A builder for creating a [`Mesh`] with an [`Rhombus`] shape.", + "layout": { + "kind": "Struct", + "name": "RhombusMeshBuilder", + "fields": [ + { + "name": "half_diagonals", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim2::Triangle2dMeshBuilder": { + "identifier": "Triangle2dMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim2::Triangle2dMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Triangle2d`] shape.", + "layout": { + "kind": "Struct", + "name": "Triangle2dMeshBuilder", + "fields": [ + { + "name": "triangle", + "type": { + "val": "bevy_math::primitives::dim2::Triangle2d" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::capsule::Capsule3dMeshBuilder": { + "identifier": "Capsule3dMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::capsule::Capsule3dMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Capsule3d`] shape.", + "layout": { + "kind": "Struct", + "name": "Capsule3dMeshBuilder", + "fields": [ + { + "name": "capsule", + "type": { + "val": "bevy_math::primitives::dim3::Capsule3d" + } + }, + { + "name": "rings", + "type": { + "primitive": "u32" + } + }, + { + "name": "longitudes", + "type": { + "primitive": "u32" + } + }, + { + "name": "latitudes", + "type": { + "primitive": "u32" + } + }, + { + "name": "uv_profile", + "type": { + "val": "bevy_mesh::primitives::dim3::capsule::CapsuleUvProfile" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::capsule::CapsuleUvProfile": { + "identifier": "CapsuleUvProfile", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::capsule::CapsuleUvProfile", + "documentation": " Manner in which UV coordinates are distributed vertically.", + "layout": [ + { + "kind": "Unit", + "name": "Aspect" + }, + { + "kind": "Unit", + "name": "Uniform" + }, + { + "kind": "Unit", + "name": "Fixed" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::cone::ConeAnchor": { + "identifier": "ConeAnchor", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::cone::ConeAnchor", + "documentation": " Anchoring options for [`ConeMeshBuilder`]", + "layout": [ + { + "kind": "Unit", + "name": "MidPoint" + }, + { + "kind": "Unit", + "name": "Tip" + }, + { + "kind": "Unit", + "name": "Base" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::cone::ConeMeshBuilder": { + "identifier": "ConeMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::cone::ConeMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Cone`] shape.", + "layout": { + "kind": "Struct", + "name": "ConeMeshBuilder", + "fields": [ + { + "name": "cone", + "type": { + "val": "bevy_math::primitives::dim3::Cone" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + }, + { + "name": "anchor", + "type": { + "val": "bevy_mesh::primitives::dim3::cone::ConeAnchor" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::conical_frustum::ConicalFrustumMeshBuilder": { + "identifier": "ConicalFrustumMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::conical_frustum::ConicalFrustumMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`ConicalFrustum`] shape.", + "layout": { + "kind": "Struct", + "name": "ConicalFrustumMeshBuilder", + "fields": [ + { + "name": "frustum", + "type": { + "val": "bevy_math::primitives::dim3::ConicalFrustum" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + }, + { + "name": "segments", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::cuboid::CuboidMeshBuilder": { + "identifier": "CuboidMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::cuboid::CuboidMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Cuboid`] shape.", + "layout": { + "kind": "Struct", + "name": "CuboidMeshBuilder", + "fields": [ + { + "name": "half_size", + "type": { + "val": "glam::Vec3" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::cylinder::CylinderAnchor": { + "identifier": "CylinderAnchor", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::cylinder::CylinderAnchor", + "documentation": " Anchoring options for [`CylinderMeshBuilder`]", + "layout": [ + { + "kind": "Unit", + "name": "MidPoint" + }, + { + "kind": "Unit", + "name": "Top" + }, + { + "kind": "Unit", + "name": "Bottom" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::cylinder::CylinderMeshBuilder": { + "identifier": "CylinderMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::cylinder::CylinderMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Cylinder`] shape.", + "layout": { + "kind": "Struct", + "name": "CylinderMeshBuilder", + "fields": [ + { + "name": "cylinder", + "type": { + "val": "bevy_math::primitives::dim3::Cylinder" + } + }, + { + "name": "resolution", + "type": { + "primitive": "u32" + } + }, + { + "name": "segments", + "type": { + "primitive": "u32" + } + }, + { + "name": "caps", + "type": { + "primitive": "bool" + } + }, + { + "name": "anchor", + "type": { + "val": "bevy_mesh::primitives::dim3::cylinder::CylinderAnchor" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::plane::PlaneMeshBuilder": { + "identifier": "PlaneMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::plane::PlaneMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Plane3d`] shape.", + "layout": { + "kind": "Struct", + "name": "PlaneMeshBuilder", + "fields": [ + { + "name": "plane", + "type": { + "val": "bevy_math::primitives::dim3::Plane3d" + } + }, + { + "name": "subdivisions", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::polyline3d::Polyline3dMeshBuilder": { + "identifier": "Polyline3dMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::polyline3d::Polyline3dMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Polyline3d`] shape.", + "layout": { + "kind": "Struct", + "name": "Polyline3dMeshBuilder", + "fields": [ + { + "name": "polyline", + "type": { + "val": "bevy_math::primitives::dim3::Polyline3d" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::segment3d::Segment3dMeshBuilder": { + "identifier": "Segment3dMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::segment3d::Segment3dMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Segment3d`] shape.", + "layout": { + "kind": "Struct", + "name": "Segment3dMeshBuilder", + "fields": [ + { + "name": "segment", + "type": { + "val": "bevy_math::primitives::dim3::Segment3d" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::sphere::SphereKind": { + "identifier": "SphereKind", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::sphere::SphereKind", + "documentation": " A type of sphere mesh.", + "layout": [ + { + "kind": "Struct", + "name": "Ico", + "fields": [ + { + "name": "subdivisions", + "type": { + "primitive": "u32" + } + } + ] + }, + { + "kind": "Struct", + "name": "Uv", + "fields": [ + { + "name": "sectors", + "type": { + "primitive": "u32" + } + }, + { + "name": "stacks", + "type": { + "primitive": "u32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::sphere::SphereMeshBuilder": { + "identifier": "SphereMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::sphere::SphereMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with an [`Sphere`] shape.", + "layout": { + "kind": "Struct", + "name": "SphereMeshBuilder", + "fields": [ + { + "name": "sphere", + "type": { + "val": "bevy_math::primitives::dim3::Sphere" + } + }, + { + "name": "kind", + "type": { + "val": "bevy_mesh::primitives::dim3::sphere::SphereKind" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::tetrahedron::TetrahedronMeshBuilder": { + "identifier": "TetrahedronMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::tetrahedron::TetrahedronMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Tetrahedron`] shape.", + "layout": { + "kind": "Struct", + "name": "TetrahedronMeshBuilder", + "fields": [ + { + "name": "tetrahedron", + "type": { + "val": "bevy_math::primitives::dim3::Tetrahedron" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::torus::TorusMeshBuilder": { + "identifier": "TorusMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::torus::TorusMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Torus`] shape.", + "layout": { + "kind": "Struct", + "name": "TorusMeshBuilder", + "fields": [ + { + "name": "torus", + "type": { + "val": "bevy_math::primitives::dim3::Torus" + } + }, + { + "name": "minor_resolution", + "type": { + "primitive": "usize" + } + }, + { + "name": "major_resolution", + "type": { + "primitive": "usize" + } + }, + { + "name": "angle_range", + "type": { + "val": "core::ops::RangeInclusive" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::primitives::dim3::triangle3d::Triangle3dMeshBuilder": { + "identifier": "Triangle3dMeshBuilder", + "crate": "bevy_mesh", + "path": "bevy_mesh::primitives::dim3::triangle3d::Triangle3dMeshBuilder", + "documentation": " A builder used for creating a [`Mesh`] with a [`Triangle3d`] shape.", + "layout": { + "kind": "Struct", + "name": "Triangle3dMeshBuilder", + "fields": [ + { + "name": "triangle", + "type": { + "val": "bevy_math::primitives::dim3::Triangle3d" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::skinning::SkinnedMesh": { + "identifier": "SkinnedMesh", + "crate": "bevy_mesh", + "path": "bevy_mesh::skinning::SkinnedMesh", + "layout": { + "kind": "Struct", + "name": "SkinnedMesh", + "fields": [ + { + "name": "inverse_bindposes", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "joints", + "type": { + "vec": { + "val": "bevy_ecs::entity::Entity" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_asset::script_asset::ScriptAsset": { + "identifier": "ScriptAsset", + "crate": "bevy_mod_scripting_asset", + "path": "bevy_mod_scripting_asset::script_asset::ScriptAsset", + "documentation": " Represents a script loaded into memory as an asset", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::docgen::info::FunctionArgInfo": { + "identifier": "FunctionArgInfo", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::docgen::info::FunctionArgInfo", + "documentation": " Information about a function argument.", + "layout": { + "kind": "Struct", + "name": "FunctionArgInfo", + "fields": [ + { + "name": "name", + "type": { + "option": { + "val": "alloc::borrow::Cow" + } + } + }, + { + "name": "arg_index", + "type": { + "primitive": "usize" + } + }, + { + "name": "type_id", + "type": { + "val": "core::any::TypeId" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::docgen::info::FunctionInfo": { + "identifier": "FunctionInfo", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::docgen::info::FunctionInfo", + "documentation": " Information about a function.", + "layout": { + "kind": "Struct", + "name": "FunctionInfo", + "fields": [ + { + "name": "name", + "type": { + "val": "alloc::borrow::Cow" + } + }, + { + "name": "namespace", + "type": { + "val": "bevy_mod_scripting_bindings::function::namespace::Namespace" + } + }, + { + "name": "arg_info", + "type": { + "vec": { + "val": "bevy_mod_scripting_bindings::docgen::info::FunctionArgInfo" + } + } + }, + { + "name": "return_info", + "type": { + "val": "bevy_mod_scripting_bindings::docgen::info::FunctionReturnInfo" + } + }, + { + "name": "docs", + "type": { + "option": { + "val": "alloc::borrow::Cow" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::docgen::info::FunctionReturnInfo": { + "identifier": "FunctionReturnInfo", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::docgen::info::FunctionReturnInfo", + "documentation": " Information about a function return value.", + "layout": { + "kind": "Struct", + "name": "FunctionReturnInfo", + "fields": [ + { + "name": "type_id", + "type": { + "val": "core::any::TypeId" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::error::InteropError": { + "identifier": "InteropError", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::error::InteropError", + "documentation": " An error occurring when converting between rust and a script context.", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::function::namespace::Namespace": { + "identifier": "Namespace", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::function::namespace::Namespace", + "documentation": " A namespace for functions", + "layout": [ + { + "kind": "Unit", + "name": "Global" + }, + { + "kind": "TupleStruct", + "name": "OnType", + "fields": [ + { + "type": { + "val": "core::any::TypeId" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::function::script_function::LocationContext": { + "identifier": "LocationContext", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::function::script_function::LocationContext", + "documentation": " Describes a location within a script", + "layout": { + "kind": "Struct", + "name": "LocationContext", + "fields": [ + { + "name": "script_name", + "type": { + "option": { + "primitive": "string" + } + } + }, + { + "name": "line", + "type": { + "primitive": "u32" + } + }, + { + "name": "col", + "type": { + "option": { + "primitive": "u32" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::script_component::DynamicComponent": { + "identifier": "DynamicComponent", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::script_component::DynamicComponent", + "documentation": " A dynamic script component", + "layout": { + "kind": "Struct", + "name": "DynamicComponent", + "fields": [ + { + "name": "data", + "type": { + "val": "ScriptValue" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_bindings::script_value::VariadicTuple": { + "identifier": "VariadicTuple", + "crate": "bevy_mod_scripting_bindings", + "path": "bevy_mod_scripting_bindings::script_value::VariadicTuple", + "documentation": " A tuple variant of script value", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_core::error::ScriptError": { + "identifier": "ScriptError", + "crate": "bevy_mod_scripting_core", + "path": "bevy_mod_scripting_core::error::ScriptError", + "documentation": " An error with an optional script Context", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_core::event::CallbackLabel": { + "identifier": "CallbackLabel", + "crate": "bevy_mod_scripting_core", + "path": "bevy_mod_scripting_core::event::CallbackLabel", + "documentation": " A string which disallows common invalid characters in callback labels,\n particularly at the start of the string\n\n a valid callback label starts with a letter or underscore, and contains only ascii characters, as well as disallows some common keywords", + "layout": { + "kind": "TupleStruct", + "name": "CallbackLabel", + "fields": [ + { + "type": { + "primitive": "string" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_core::script::ScriptComponent": { + "identifier": "ScriptComponent", + "crate": "bevy_mod_scripting_core", + "path": "bevy_mod_scripting_core::script::ScriptComponent", + "documentation": " A component which identifies the scripts existing on an entity.\n\n Event handlers search for components with this component to figure out which scripts to run and on which entities.", + "layout": { + "kind": "TupleStruct", + "name": "ScriptComponent", + "fields": [ + { + "type": { + "vec": { + "val": "bevy_asset::handle::Handle" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mod_scripting_core::script::context_key::ContextKey": { + "identifier": "ContextKey", + "crate": "bevy_mod_scripting_core", + "path": "bevy_mod_scripting_core::script::context_key::ContextKey", + "documentation": " The key for a context. The context key is used for:\n - Identifying the script itself, uniquely.\n - later on it's mapped to a context, which will determine how the scripts are grouped in execution environments.", + "layout": { + "kind": "Struct", + "name": "ContextKey", + "fields": [ + { + "name": "entity", + "type": { + "option": { + "val": "bevy_ecs::entity::Entity" + } + } + }, + { + "name": "script", + "type": { + "option": { + "val": "bevy_asset::id::AssetId" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::alpha::AlphaMode": { + "identifier": "AlphaMode", + "crate": "bevy_render", + "path": "bevy_render::alpha::AlphaMode", + "documentation": " Sets how a material's base color alpha channel is used for transparency.", + "layout": [ + { + "kind": "Unit", + "name": "Opaque" + }, + { + "kind": "TupleStruct", + "name": "Mask", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Unit", + "name": "Blend" + }, + { + "kind": "Unit", + "name": "Premultiplied" + }, + { + "kind": "Unit", + "name": "AlphaToCoverage" + }, + { + "kind": "Unit", + "name": "Add" + }, + { + "kind": "Unit", + "name": "Multiply" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::camera::CameraRenderGraph": { + "identifier": "CameraRenderGraph", + "crate": "bevy_render", + "path": "bevy_render::camera::CameraRenderGraph", + "documentation": " Configures the [`RenderGraph`] name assigned to be run for a given [`Camera`] entity.", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::camera::MipBias": { + "identifier": "MipBias", + "crate": "bevy_render", + "path": "bevy_render::camera::MipBias", + "documentation": " Camera component specifying a mip bias to apply when sampling from material textures.\n\n Often used in conjunction with antialiasing post-process effects to reduce textures blurriness.", + "layout": { + "kind": "TupleStruct", + "name": "MipBias", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::camera::TemporalJitter": { + "identifier": "TemporalJitter", + "crate": "bevy_render", + "path": "bevy_render::camera::TemporalJitter", + "documentation": " A subpixel offset to jitter a perspective camera's frustum by.\n\n Useful for temporal rendering techniques.", + "layout": { + "kind": "Struct", + "name": "TemporalJitter", + "fields": [ + { + "name": "offset", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::experimental::occlusion_culling::OcclusionCulling": { + "identifier": "OcclusionCulling", + "crate": "bevy_render", + "path": "bevy_render::experimental::occlusion_culling::OcclusionCulling", + "documentation": " Add this component to a view in order to enable experimental GPU occlusion\n culling.\n\n *Bevy's occlusion culling is currently marked as experimental.* There are\n known issues whereby, in rare circumstances, occlusion culling can result in\n meshes being culled that shouldn't be (i.e. meshes that turn invisible).\n Please try it out and report issues.\n\n *Occlusion culling* allows Bevy to avoid rendering objects that are fully\n behind other opaque or alpha tested objects. This is different from, and\n complements, depth fragment rejection as the `DepthPrepass` enables. While\n depth rejection allows Bevy to avoid rendering *pixels* that are behind\n other objects, the GPU still has to examine those pixels to reject them,\n which requires transforming the vertices of the objects and performing\n skinning if the objects were skinned. Occlusion culling allows the GPU to go\n a step further, avoiding even transforming the vertices of objects that it\n can quickly prove to be behind other objects.\n\n Occlusion culling inherently has some overhead, because Bevy must examine\n the objects' bounding boxes, and create an acceleration structure\n (hierarchical Z-buffer) to perform the occlusion tests. Therefore, occlusion\n culling is disabled by default. Only enable it if you measure it to be a\n speedup on your scene. Note that, because Bevy's occlusion culling runs on\n the GPU and is quite efficient, it's rare for occlusion culling to result in\n a significant slowdown.\n\n Occlusion culling currently requires a `DepthPrepass`. If no depth prepass\n is present on the view, the [`OcclusionCulling`] component will be ignored.\n Additionally, occlusion culling is currently incompatible with deferred\n shading; including both `DeferredPrepass` and [`OcclusionCulling`] results\n in unspecified behavior.\n\n The algorithm that Bevy uses is known as [*two-phase occlusion culling*].\n When you enable occlusion culling, Bevy splits the depth prepass into two:\n an *early* depth prepass and a *late* depth prepass. The early depth prepass\n renders all the meshes that were visible last frame to produce a\n conservative approximation of the depth buffer. Then, after producing an\n acceleration structure known as a hierarchical Z-buffer or depth pyramid,\n Bevy tests the bounding boxes of all meshes against that depth buffer. Those\n that can be quickly proven to be behind the geometry rendered during the\n early depth prepass are skipped entirely. The other potentially-visible\n meshes are rendered during the late prepass, and finally all the visible\n meshes are rendered as usual during the opaque, transparent, etc. passes.\n\n Unlike other occlusion culling systems you may be familiar with, Bevy's\n occlusion culling is fully dynamic and requires no baking step. The CPU\n overhead is minimal. Large skinned meshes and other dynamic objects can\n occlude other objects.\n\n [*two-phase occlusion culling*]:\n https://medium.com/@mil_kru/two-pass-occlusion-culling-4100edcad501", + "layout": { + "kind": "Struct", + "name": "OcclusionCulling" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::globals::GlobalsUniform": { + "identifier": "GlobalsUniform", + "crate": "bevy_render", + "path": "bevy_render::globals::GlobalsUniform", + "documentation": " Contains global values useful when writing shaders.\n Currently only contains values related to time.", + "layout": { + "kind": "Struct", + "name": "GlobalsUniform", + "fields": [ + { + "name": "time", + "type": { + "primitive": "f32" + } + }, + { + "name": "delta_time", + "type": { + "primitive": "f32" + } + }, + { + "name": "frame_count", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::gpu_readback::ReadbackComplete": { + "identifier": "ReadbackComplete", + "crate": "bevy_render", + "path": "bevy_render::gpu_readback::ReadbackComplete", + "documentation": " An event that is triggered when a gpu readback is complete.\n\n The event contains the data as a `Vec`, which can be interpreted as the raw bytes of the\n requested buffer or texture.", + "layout": { + "kind": "Struct", + "name": "ReadbackComplete", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "data", + "type": { + "vec": { + "primitive": "u8" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::storage::ShaderStorageBuffer": { + "identifier": "ShaderStorageBuffer", + "crate": "bevy_render", + "path": "bevy_render::storage::ShaderStorageBuffer", + "documentation": " A storage buffer that is prepared as a [`RenderAsset`] and uploaded to the GPU.", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::sync_world::MainEntity": { + "identifier": "MainEntity", + "crate": "bevy_render", + "path": "bevy_render::sync_world::MainEntity", + "documentation": " Component added on the render world entities to keep track of the corresponding main world entity.\n\n Can also be used as a newtype wrapper for main world entities.", + "layout": { + "kind": "TupleStruct", + "name": "MainEntity", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::sync_world::RenderEntity": { + "identifier": "RenderEntity", + "crate": "bevy_render", + "path": "bevy_render::sync_world::RenderEntity", + "documentation": " Component added on the main world entities that are synced to the Render World in order to keep track of the corresponding render world entity.\n\n Can also be used as a newtype wrapper for render world entities.", + "layout": { + "kind": "TupleStruct", + "name": "RenderEntity", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::sync_world::SyncToRenderWorld": { + "identifier": "SyncToRenderWorld", + "crate": "bevy_render", + "path": "bevy_render::sync_world::SyncToRenderWorld", + "documentation": " Marker component that indicates that its entity needs to be synchronized to the render world.\n\n This component is automatically added as a required component by [`ExtractComponentPlugin`] and [`SyncComponentPlugin`].\n For more information see [`SyncWorldPlugin`].\n\n NOTE: This component should persist throughout the entity's entire lifecycle.\n If this component is removed from its entity, the entity will be despawned.\n\n [`ExtractComponentPlugin`]: crate::extract_component::ExtractComponentPlugin\n [`SyncComponentPlugin`]: crate::sync_component::SyncComponentPlugin", + "layout": { + "kind": "Struct", + "name": "SyncToRenderWorld" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::sync_world::TemporaryRenderEntity": { + "identifier": "TemporaryRenderEntity", + "crate": "bevy_render", + "path": "bevy_render::sync_world::TemporaryRenderEntity", + "documentation": " Marker component that indicates that its entity needs to be despawned at the end of the frame.", + "layout": { + "kind": "Struct", + "name": "TemporaryRenderEntity" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::view::ColorGrading": { + "identifier": "ColorGrading", + "crate": "bevy_render", + "path": "bevy_render::view::ColorGrading", + "documentation": " Configures filmic color grading parameters to adjust the image appearance.\n\n Color grading is applied just before tonemapping for a given\n [`Camera`](bevy_camera::Camera) entity, with the sole exception of the\n `post_saturation` value in [`ColorGradingGlobal`], which is applied after\n tonemapping.", + "layout": { + "kind": "Struct", + "name": "ColorGrading", + "fields": [ + { + "name": "global", + "type": { + "val": "bevy_render::view::ColorGradingGlobal" + } + }, + { + "name": "shadows", + "type": { + "val": "bevy_render::view::ColorGradingSection" + } + }, + { + "name": "midtones", + "type": { + "val": "bevy_render::view::ColorGradingSection" + } + }, + { + "name": "highlights", + "type": { + "val": "bevy_render::view::ColorGradingSection" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::view::ColorGradingGlobal": { + "identifier": "ColorGradingGlobal", + "crate": "bevy_render", + "path": "bevy_render::view::ColorGradingGlobal", + "documentation": " Filmic color grading values applied to the image as a whole (as opposed to\n individual sections, like shadows and highlights).", + "layout": { + "kind": "Struct", + "name": "ColorGradingGlobal", + "fields": [ + { + "name": "exposure", + "type": { + "primitive": "f32" + } + }, + { + "name": "temperature", + "type": { + "primitive": "f32" + } + }, + { + "name": "tint", + "type": { + "primitive": "f32" + } + }, + { + "name": "hue", + "type": { + "primitive": "f32" + } + }, + { + "name": "post_saturation", + "type": { + "primitive": "f32" + } + }, + { + "name": "midtones_range", + "type": { + "val": "core::ops::Range" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::view::ColorGradingSection": { + "identifier": "ColorGradingSection", + "crate": "bevy_render", + "path": "bevy_render::view::ColorGradingSection", + "documentation": " A section of color grading values that can be selectively applied to\n shadows, midtones, and highlights.", + "layout": { + "kind": "Struct", + "name": "ColorGradingSection", + "fields": [ + { + "name": "saturation", + "type": { + "primitive": "f32" + } + }, + { + "name": "contrast", + "type": { + "primitive": "f32" + } + }, + { + "name": "gamma", + "type": { + "primitive": "f32" + } + }, + { + "name": "gain", + "type": { + "primitive": "f32" + } + }, + { + "name": "lift", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::view::Hdr": { + "identifier": "Hdr", + "crate": "bevy_render", + "path": "bevy_render::view::Hdr", + "documentation": " If this component is added to a camera, the camera will use an intermediate \"high dynamic range\" render texture.\n This allows rendering with a wider range of lighting values. However, this does *not* affect\n whether the camera will render with hdr display output (which bevy does not support currently)\n and only affects the intermediate render texture.", + "layout": { + "kind": "Struct", + "name": "Hdr" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::view::Msaa": { + "identifier": "Msaa", + "crate": "bevy_render", + "path": "bevy_render::view::Msaa", + "documentation": " Component for configuring the number of samples for [Multi-Sample Anti-Aliasing](https://en.wikipedia.org/wiki/Multisample_anti-aliasing)\n for a [`Camera`](bevy_camera::Camera).\n\n Defaults to 4 samples. A higher number of samples results in smoother edges.\n\n Some advanced rendering features may require that MSAA is disabled.\n\n Note that the web currently only supports 1 or 4 samples.", + "layout": [ + { + "kind": "Unit", + "name": "Off" + }, + { + "kind": "Unit", + "name": "Sample2" + }, + { + "kind": "Unit", + "name": "Sample4" + }, + { + "kind": "Unit", + "name": "Sample8" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::view::visibility::RenderVisibleEntities": { + "identifier": "RenderVisibleEntities", + "crate": "bevy_render", + "path": "bevy_render::view::visibility::RenderVisibleEntities", + "documentation": " Collection of entities visible from the current view.\n\n This component is extracted from [`VisibleEntities`].", + "layout": { + "kind": "Struct", + "name": "RenderVisibleEntities" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::view::window::screenshot::Screenshot": { + "identifier": "Screenshot", + "crate": "bevy_render", + "path": "bevy_render::view::window::screenshot::Screenshot", + "documentation": " A component that signals to the renderer to capture a screenshot this frame.\n\n This component should be spawned on a new entity with an observer that will trigger\n with [`ScreenshotCaptured`] when the screenshot is ready.\n\n Screenshots are captured asynchronously and may not be available immediately after the frame\n that the component is spawned on. The observer should be used to handle the screenshot when it\n is ready.\n\n Note that the screenshot entity will be despawned after the screenshot is captured and the\n observer is triggered.\n\n # Usage\n\n ```\n # use bevy_ecs::prelude::*;\n # use bevy_render::view::screenshot::{save_to_disk, Screenshot};\n\n fn take_screenshot(mut commands: Commands) {\n commands.spawn(Screenshot::primary_window())\n .observe(save_to_disk(\"screenshot.png\"));\n }\n ```", + "layout": { + "kind": "TupleStruct", + "name": "Screenshot", + "fields": [ + { + "type": { + "val": "bevy_camera::camera::RenderTarget" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_render::view::window::screenshot::ScreenshotCaptured": { + "identifier": "ScreenshotCaptured", + "crate": "bevy_render", + "path": "bevy_render::view::window::screenshot::ScreenshotCaptured", + "layout": { + "kind": "Struct", + "name": "ScreenshotCaptured", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "image", + "type": { + "val": "bevy_image::image::Image" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::sprite::Anchor": { + "identifier": "Anchor", + "crate": "bevy_sprite", + "path": "bevy_sprite::sprite::Anchor", + "documentation": " Normalized (relative to its size) offset of a 2d renderable entity from its [`Transform`].", + "layout": { + "kind": "TupleStruct", + "name": "Anchor", + "fields": [ + { + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::sprite::Sprite": { + "identifier": "Sprite", + "crate": "bevy_sprite", + "path": "bevy_sprite::sprite::Sprite", + "documentation": " Describes a sprite to be rendered to a 2D camera", + "layout": { + "kind": "Struct", + "name": "Sprite", + "fields": [ + { + "name": "image", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "texture_atlas", + "type": { + "option": { + "val": "bevy_image::texture_atlas::TextureAtlas" + } + } + }, + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "flip_x", + "type": { + "primitive": "bool" + } + }, + { + "name": "flip_y", + "type": { + "primitive": "bool" + } + }, + { + "name": "custom_size", + "type": { + "option": { + "val": "glam::Vec2" + } + } + }, + { + "name": "rect", + "type": { + "option": { + "val": "bevy_math::rects::rect::Rect" + } + } + }, + { + "name": "image_mode", + "type": { + "val": "bevy_sprite::sprite::SpriteImageMode" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::sprite::SpriteImageMode": { + "identifier": "SpriteImageMode", + "crate": "bevy_sprite", + "path": "bevy_sprite::sprite::SpriteImageMode", + "documentation": " Controls how the image is altered when scaled.", + "layout": [ + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "TupleStruct", + "name": "Scale", + "fields": [ + { + "type": { + "val": "bevy_sprite::sprite::SpriteScalingMode" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Sliced", + "fields": [ + { + "type": { + "val": "bevy_sprite::texture_slice::slicer::TextureSlicer" + } + } + ] + }, + { + "kind": "Struct", + "name": "Tiled", + "fields": [ + { + "name": "tile_x", + "type": { + "primitive": "bool" + } + }, + { + "name": "tile_y", + "type": { + "primitive": "bool" + } + }, + { + "name": "stretch_value", + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::sprite::SpriteScalingMode": { + "identifier": "SpriteScalingMode", + "crate": "bevy_sprite", + "path": "bevy_sprite::sprite::SpriteScalingMode", + "documentation": " Represents various modes for proportional scaling of a texture.\n\n Can be used in [`SpriteImageMode::Scale`].", + "layout": [ + { + "kind": "Unit", + "name": "FillCenter" + }, + { + "kind": "Unit", + "name": "FillStart" + }, + { + "kind": "Unit", + "name": "FillEnd" + }, + { + "kind": "Unit", + "name": "FitCenter" + }, + { + "kind": "Unit", + "name": "FitStart" + }, + { + "kind": "Unit", + "name": "FitEnd" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::text2d::Text2d": { + "identifier": "Text2d", + "crate": "bevy_sprite", + "path": "bevy_sprite::text2d::Text2d", + "documentation": " The top-level 2D text component.\n\n Adding `Text2d` to an entity will pull in required components for setting up 2d text.\n [Example usage.](https://github.com/bevyengine/bevy/blob/latest/examples/2d/text2d.rs)\n\n The string in this component is the first 'text span' in a hierarchy of text spans that are collected into\n a [`ComputedTextBlock`]. See `TextSpan` for the component used by children of entities with [`Text2d`].\n\n With `Text2d` the `justify` field of [`TextLayout`] only affects the internal alignment of a block of text and not its\n relative position, which is controlled by the [`Anchor`] component.\n This means that for a block of text consisting of only one line that doesn't wrap, the `justify` field will have no effect.\n\n\n ```\n # use bevy_asset::Handle;\n # use bevy_color::Color;\n # use bevy_color::palettes::basic::BLUE;\n # use bevy_ecs::world::World;\n # use bevy_text::{Font, Justify, TextLayout, TextFont, TextColor, TextSpan};\n # use bevy_sprite::Text2d;\n #\n # let font_handle: Handle = Default::default();\n # let mut world = World::default();\n #\n // Basic usage.\n world.spawn(Text2d::new(\"hello world!\"));\n\n // With non-default style.\n world.spawn((\n Text2d::new(\"hello world!\"),\n TextFont {\n font: font_handle.clone().into(),\n font_size: 60.0,\n ..Default::default()\n },\n TextColor(BLUE.into()),\n ));\n\n // With text justification.\n world.spawn((\n Text2d::new(\"hello world\\nand bevy!\"),\n TextLayout::new_with_justify(Justify::Center)\n ));\n\n // With spans\n world.spawn(Text2d::new(\"hello \")).with_children(|parent| {\n parent.spawn(TextSpan::new(\"world\"));\n parent.spawn((TextSpan::new(\"!\"), TextColor(BLUE.into())));\n });\n ```", + "layout": { + "kind": "TupleStruct", + "name": "Text2d", + "fields": [ + { + "type": { + "primitive": "string" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::text2d::Text2dShadow": { + "identifier": "Text2dShadow", + "crate": "bevy_sprite", + "path": "bevy_sprite::text2d::Text2dShadow", + "documentation": " Adds a shadow behind `Text2d` text\n\n Use `TextShadow` for text drawn with `bevy_ui`", + "layout": { + "kind": "Struct", + "name": "Text2dShadow", + "fields": [ + { + "name": "offset", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::texture_slice::border_rect::BorderRect": { + "identifier": "BorderRect", + "crate": "bevy_sprite", + "path": "bevy_sprite::texture_slice::border_rect::BorderRect", + "documentation": " Defines border insets that shrink a rectangle from its minimum and maximum corners.\n\n This struct is used to represent thickness or offsets from the four edges\n of a rectangle, with values increasing inwards.", + "layout": { + "kind": "Struct", + "name": "BorderRect", + "fields": [ + { + "name": "min_inset", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "max_inset", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::texture_slice::slicer::SliceScaleMode": { + "identifier": "SliceScaleMode", + "crate": "bevy_sprite", + "path": "bevy_sprite::texture_slice::slicer::SliceScaleMode", + "documentation": " Defines how a texture slice scales when resized", + "layout": [ + { + "kind": "Unit", + "name": "Stretch" + }, + { + "kind": "Struct", + "name": "Tile", + "fields": [ + { + "name": "stretch_value", + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite::texture_slice::slicer::TextureSlicer": { + "identifier": "TextureSlicer", + "crate": "bevy_sprite", + "path": "bevy_sprite::texture_slice::slicer::TextureSlicer", + "documentation": " Slices a texture using the **9-slicing** technique. This allows to reuse an image at various sizes\n without needing to prepare multiple assets. The associated texture will be split into nine portions,\n so that on resize the different portions scale or tile in different ways to keep the texture in proportion.\n\n For example, when resizing a 9-sliced texture the corners will remain unscaled while the other\n sections will be scaled or tiled.\n\n See [9-sliced](https://en.wikipedia.org/wiki/9-slice_scaling) textures.", + "layout": { + "kind": "Struct", + "name": "TextureSlicer", + "fields": [ + { + "name": "border", + "type": { + "val": "bevy_sprite::texture_slice::border_rect::BorderRect" + } + }, + { + "name": "center_scale_mode", + "type": { + "val": "bevy_sprite::texture_slice::slicer::SliceScaleMode" + } + }, + { + "name": "sides_scale_mode", + "type": { + "val": "bevy_sprite::texture_slice::slicer::SliceScaleMode" + } + }, + { + "name": "max_corner_scale", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::color_material::ColorMaterial": { + "identifier": "ColorMaterial", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::color_material::ColorMaterial", + "documentation": " A [2d material](Material2d) that renders [2d meshes](crate::Mesh2d) with a texture tinted by a uniform color", + "layout": { + "kind": "Struct", + "name": "ColorMaterial", + "fields": [ + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "alpha_mode", + "type": { + "val": "bevy_sprite_render::mesh2d::material::AlphaMode2d" + } + }, + { + "name": "uv_transform", + "type": { + "val": "glam::Affine2" + } + }, + { + "name": "texture", + "type": { + "option": { + "val": "bevy_asset::handle::Handle" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::material::AlphaMode2d": { + "identifier": "AlphaMode2d", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::material::AlphaMode2d", + "documentation": " Sets how a 2d material's base color alpha channel is used for transparency.\n Currently, this only works with [`Mesh2d`]. Sprites are always transparent.\n\n This is very similar to [`AlphaMode`](bevy_render::alpha::AlphaMode) but this only applies to 2d meshes.\n We use a separate type because 2d doesn't support all the transparency modes that 3d does.", + "layout": [ + { + "kind": "Unit", + "name": "Opaque" + }, + { + "kind": "TupleStruct", + "name": "Mask", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Unit", + "name": "Blend" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::wireframe2d::Mesh2dWireframe": { + "identifier": "Mesh2dWireframe", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::wireframe2d::Mesh2dWireframe", + "layout": { + "kind": "TupleStruct", + "name": "Mesh2dWireframe", + "fields": [ + { + "type": { + "val": "bevy_asset::handle::Handle" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::wireframe2d::NoWireframe2d": { + "identifier": "NoWireframe2d", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::wireframe2d::NoWireframe2d", + "documentation": " Disables wireframe rendering for any entity it is attached to.\n It will ignore the [`Wireframe2dConfig`] global setting.\n\n This requires the [`Wireframe2dPlugin`] to be enabled.", + "layout": { + "kind": "Struct", + "name": "NoWireframe2d" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2d": { + "identifier": "Wireframe2d", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2d", + "documentation": " Enables wireframe rendering for any entity it is attached to.\n It will ignore the [`Wireframe2dConfig`] global setting.\n\n This requires the [`Wireframe2dPlugin`] to be enabled.", + "layout": { + "kind": "Struct", + "name": "Wireframe2d" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dColor": { + "identifier": "Wireframe2dColor", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dColor", + "documentation": " Sets the color of the [`Wireframe2d`] of the entity it is attached to.\n\n If this component is present but there's no [`Wireframe2d`] component,\n it will still affect the color of the wireframe when [`Wireframe2dConfig::global`] is set to true.\n\n This overrides the [`Wireframe2dConfig::default_color`].", + "layout": { + "kind": "Struct", + "name": "Wireframe2dColor", + "fields": [ + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dConfig": { + "identifier": "Wireframe2dConfig", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dConfig", + "layout": { + "kind": "Struct", + "name": "Wireframe2dConfig", + "fields": [ + { + "name": "global", + "type": { + "primitive": "bool" + } + }, + { + "name": "default_color", + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dMaterial": { + "identifier": "Wireframe2dMaterial", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dMaterial", + "layout": { + "kind": "Struct", + "name": "Wireframe2dMaterial", + "fields": [ + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::tilemap_chunk::TileData": { + "identifier": "TileData", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::tilemap_chunk::TileData", + "documentation": " Data for a single tile in the tilemap chunk.", + "layout": { + "kind": "Struct", + "name": "TileData", + "fields": [ + { + "name": "tileset_index", + "type": { + "primitive": "u16" + } + }, + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "visible", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::tilemap_chunk::TilemapChunk": { + "identifier": "TilemapChunk", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::tilemap_chunk::TilemapChunk", + "documentation": " A component representing a chunk of a tilemap.\n Each chunk is a rectangular section of tiles that is rendered as a single mesh.", + "layout": { + "kind": "Struct", + "name": "TilemapChunk", + "fields": [ + { + "name": "chunk_size", + "type": { + "val": "glam::UVec2" + } + }, + { + "name": "tile_display_size", + "type": { + "val": "glam::UVec2" + } + }, + { + "name": "tileset", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "alpha_mode", + "type": { + "val": "bevy_sprite_render::mesh2d::material::AlphaMode2d" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::tilemap_chunk::TilemapChunkMeshCache": { + "identifier": "TilemapChunkMeshCache", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::tilemap_chunk::TilemapChunkMeshCache", + "documentation": " A resource storing the meshes for each tilemap chunk size.", + "layout": { + "kind": "TupleStruct", + "name": "TilemapChunkMeshCache", + "fields": [ + { + "type": { + "hashMap": [ + { + "val": "glam::UVec2" + }, + { + "val": "bevy_asset::handle::Handle" + } + ] + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::tilemap_chunk::TilemapChunkTileData": { + "identifier": "TilemapChunkTileData", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::tilemap_chunk::TilemapChunkTileData", + "documentation": " Component storing the data of tiles within a chunk.\n Each index corresponds to a specific tile in the tileset. `None` indicates an empty tile.", + "layout": { + "kind": "TupleStruct", + "name": "TilemapChunkTileData", + "fields": [ + { + "type": { + "vec": { + "option": { + "val": "bevy_sprite_render::tilemap_chunk::TileData" + } + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_system_reflection::Edge": { + "identifier": "Edge", + "crate": "bevy_system_reflection", + "path": "bevy_system_reflection::Edge", + "documentation": " An edge in the graph", + "layout": { + "kind": "Struct", + "name": "Edge", + "fields": [ + { + "name": "from", + "type": { + "val": "bevy_system_reflection::ReflectNodeId" + } + }, + { + "name": "to", + "type": { + "val": "bevy_system_reflection::ReflectNodeId" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_system_reflection::ReflectNodeId": { + "identifier": "ReflectNodeId", + "crate": "bevy_system_reflection", + "path": "bevy_system_reflection::ReflectNodeId", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_system_reflection::ReflectSystemGraph": { + "identifier": "ReflectSystemGraph", + "crate": "bevy_system_reflection", + "path": "bevy_system_reflection::ReflectSystemGraph", + "documentation": " A graph of systems and system sets for a single schedule", + "layout": { + "kind": "Struct", + "name": "ReflectSystemGraph", + "fields": [ + { + "name": "schedule", + "type": { + "val": "bevy_system_reflection::ReflectSchedule" + } + }, + { + "name": "nodes", + "type": { + "vec": { + "val": "bevy_system_reflection::ReflectSystemGraphNode" + } + } + }, + { + "name": "dependencies", + "type": { + "vec": { + "val": "bevy_system_reflection::Edge" + } + } + }, + { + "name": "hierarchy", + "type": { + "vec": { + "val": "bevy_system_reflection::Edge" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_system_reflection::ReflectSystemGraphNode": { + "identifier": "ReflectSystemGraphNode", + "crate": "bevy_system_reflection", + "path": "bevy_system_reflection::ReflectSystemGraphNode", + "documentation": " A node in the reflectable system graph", + "layout": [ + { + "kind": "TupleStruct", + "name": "System", + "fields": [ + { + "type": { + "val": "bevy_system_reflection::ReflectSystem" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "SystemSet", + "fields": [ + { + "type": { + "val": "bevy_system_reflection::ReflectSystemSet" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_system_reflection::ReflectSystemSet": { + "identifier": "ReflectSystemSet", + "crate": "bevy_system_reflection", + "path": "bevy_system_reflection::ReflectSystemSet", + "documentation": " A reflectable system set.", + "layout": { + "kind": "Struct", + "name": "ReflectSystemSet", + "fields": [ + { + "name": "node_id", + "type": { + "val": "bevy_system_reflection::ReflectNodeId" + } + }, + { + "name": "debug", + "type": { + "primitive": "string" + } + }, + { + "name": "type_id", + "type": { + "option": { + "val": "core::any::TypeId" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_system_reflection::ReflectableScheduleLabel": { + "identifier": "ReflectableScheduleLabel", + "crate": "bevy_system_reflection", + "path": "bevy_system_reflection::ReflectableScheduleLabel", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::bounds::TextBounds": { + "identifier": "TextBounds", + "crate": "bevy_text", + "path": "bevy_text::bounds::TextBounds", + "documentation": " The maximum width and height of text. The text will wrap according to the specified size.\n\n Characters out of the bounds after wrapping will be truncated. Text is aligned according to the\n specified [`Justify`](crate::text::Justify).\n\n Note: only characters that are completely out of the bounds will be truncated, so this is not a\n reliable limit if it is necessary to contain the text strictly in the bounds. Currently this\n component is mainly useful for text wrapping only.", + "layout": { + "kind": "Struct", + "name": "TextBounds", + "fields": [ + { + "name": "width", + "type": { + "option": { + "primitive": "f32" + } + } + }, + { + "name": "height", + "type": { + "option": { + "primitive": "f32" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::glyph::GlyphAtlasInfo": { + "identifier": "GlyphAtlasInfo", + "crate": "bevy_text", + "path": "bevy_text::glyph::GlyphAtlasInfo", + "documentation": " Information about a glyph in an atlas.\n\n Rasterized glyphs are stored as rectangles\n in one or more [`FontAtlas`](crate::FontAtlas)es.\n\n Used in [`PositionedGlyph`] and [`FontAtlasSet`](crate::FontAtlasSet).", + "layout": { + "kind": "Struct", + "name": "GlyphAtlasInfo", + "fields": [ + { + "name": "texture", + "type": { + "val": "bevy_asset::id::AssetId" + } + }, + { + "name": "texture_atlas", + "type": { + "val": "bevy_asset::id::AssetId" + } + }, + { + "name": "location", + "type": { + "val": "bevy_text::glyph::GlyphAtlasLocation" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::glyph::GlyphAtlasLocation": { + "identifier": "GlyphAtlasLocation", + "crate": "bevy_text", + "path": "bevy_text::glyph::GlyphAtlasLocation", + "documentation": " The location of a glyph in an atlas,\n and how it should be positioned when placed.\n\n Used in [`GlyphAtlasInfo`] and [`FontAtlas`](crate::FontAtlas).", + "layout": { + "kind": "Struct", + "name": "GlyphAtlasLocation", + "fields": [ + { + "name": "glyph_index", + "type": { + "primitive": "usize" + } + }, + { + "name": "offset", + "type": { + "val": "glam::IVec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::glyph::PositionedGlyph": { + "identifier": "PositionedGlyph", + "crate": "bevy_text", + "path": "bevy_text::glyph::PositionedGlyph", + "documentation": " A glyph of a font, typically representing a single character, positioned in screen space.\n\n Contains information about how and where to render a glyph.\n\n Used in [`TextPipeline::update_text_layout_info`](crate::TextPipeline::update_text_layout_info) and [`TextLayoutInfo`](`crate::TextLayoutInfo`) for rendering glyphs.", + "layout": { + "kind": "Struct", + "name": "PositionedGlyph", + "fields": [ + { + "name": "position", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "size", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "atlas_info", + "type": { + "val": "bevy_text::glyph::GlyphAtlasInfo" + } + }, + { + "name": "span_index", + "type": { + "primitive": "usize" + } + }, + { + "name": "line_index", + "type": { + "primitive": "usize" + } + }, + { + "name": "byte_index", + "type": { + "primitive": "usize" + } + }, + { + "name": "byte_length", + "type": { + "primitive": "usize" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::pipeline::RunGeometry": { + "identifier": "RunGeometry", + "crate": "bevy_text", + "path": "bevy_text::pipeline::RunGeometry", + "documentation": " Geometry of a text run used to render text decorations like background colors, strikethrough, and underline.\n A run in `bevy_text` is a contiguous sequence of glyphs on a line that share the same text attributes like font,\n font size, and line height.", + "layout": { + "kind": "Struct", + "name": "RunGeometry", + "fields": [ + { + "name": "span_index", + "type": { + "primitive": "usize" + } + }, + { + "name": "bounds", + "type": { + "val": "bevy_math::rects::rect::Rect" + } + }, + { + "name": "strikethrough_y", + "type": { + "primitive": "f32" + } + }, + { + "name": "strikethrough_thickness", + "type": { + "primitive": "f32" + } + }, + { + "name": "underline_y", + "type": { + "primitive": "f32" + } + }, + { + "name": "underline_thickness", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::pipeline::TextLayoutInfo": { + "identifier": "TextLayoutInfo", + "crate": "bevy_text", + "path": "bevy_text::pipeline::TextLayoutInfo", + "documentation": " Render information for a corresponding text block.\n\n Contains scaled glyphs and their size. Generated via [`TextPipeline::update_text_layout_info`] when an entity has\n [`TextLayout`] and [`ComputedTextBlock`] components.", + "layout": { + "kind": "Struct", + "name": "TextLayoutInfo", + "fields": [ + { + "name": "scale_factor", + "type": { + "primitive": "f32" + } + }, + { + "name": "glyphs", + "type": { + "vec": { + "val": "bevy_text::glyph::PositionedGlyph" + } + } + }, + { + "name": "run_geometry", + "type": { + "vec": { + "val": "bevy_text::pipeline::RunGeometry" + } + } + }, + { + "name": "size", + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::ComputedTextBlock": { + "identifier": "ComputedTextBlock", + "crate": "bevy_text", + "path": "bevy_text::text::ComputedTextBlock", + "documentation": " Computed information for a text block.\n\n See [`TextLayout`].\n\n Automatically updated by 2d and UI text systems.", + "layout": { + "kind": "Struct", + "name": "ComputedTextBlock", + "fields": [ + { + "name": "entities", + "type": { + "vec": { + "val": "bevy_text::text::TextEntity" + } + } + }, + { + "name": "needs_rerender", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::FontFeatureTag": { + "identifier": "FontFeatureTag", + "crate": "bevy_text", + "path": "bevy_text::text::FontFeatureTag", + "documentation": " An OpenType font feature tag.", + "layout": { + "kind": "TupleStruct", + "name": "FontFeatureTag", + "fields": [ + { + "type": { + "array": [ + { + "primitive": "u8" + }, + 4 + ] + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::FontFeatures": { + "identifier": "FontFeatures", + "crate": "bevy_text", + "path": "bevy_text::text::FontFeatures", + "documentation": " OpenType features for .otf fonts that support them.\n\n Examples features include ligatures, small-caps, and fractional number display. For the complete\n list of OpenType features, see the spec at\n ``.\n\n # Usage:\n ```\n use bevy_text::{FontFeatureTag, FontFeatures};\n\n // Create using the builder\n let font_features = FontFeatures::builder()\n .enable(FontFeatureTag::STANDARD_LIGATURES)\n .set(FontFeatureTag::WEIGHT, 300)\n .build();\n\n // Create from a list\n let more_font_features: FontFeatures = [\n FontFeatureTag::STANDARD_LIGATURES,\n FontFeatureTag::OLDSTYLE_FIGURES,\n FontFeatureTag::TABULAR_FIGURES\n ].into();\n ```", + "layout": { + "kind": "Struct", + "name": "FontFeatures", + "fields": [ + { + "name": "features", + "type": { + "vec": { + "tuple": [ + { + "val": "bevy_text::text::FontFeatureTag" + }, + { + "primitive": "u32" + } + ] + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::FontHinting": { + "identifier": "FontHinting", + "crate": "bevy_text", + "path": "bevy_text::text::FontHinting", + "documentation": " Font hinting strategy.\n\n The text bounds can underflow or overflow slightly with `FontHinting::Enabled`.\n\n ", + "layout": [ + { + "kind": "Unit", + "name": "Disabled" + }, + { + "kind": "Unit", + "name": "Enabled" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::FontSmoothing": { + "identifier": "FontSmoothing", + "crate": "bevy_text", + "path": "bevy_text::text::FontSmoothing", + "documentation": " Determines which antialiasing method to use when rendering text. By default, text is\n rendered with grayscale antialiasing, but this can be changed to achieve a pixelated look.\n\n **Note:** Subpixel antialiasing is not currently supported.", + "layout": [ + { + "kind": "Unit", + "name": "None" + }, + { + "kind": "Unit", + "name": "AntiAliased" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::FontWeight": { + "identifier": "FontWeight", + "crate": "bevy_text", + "path": "bevy_text::text::FontWeight", + "documentation": " How thick or bold the strokes of a font appear.\n\n Valid font weights range from 1 to 1000, inclusive.\n Weights above 1000 are clamped to 1000.\n A weight of 0 is treated as [`FontWeight::DEFAULT`].\n\n ``", + "layout": { + "kind": "TupleStruct", + "name": "FontWeight", + "fields": [ + { + "type": { + "primitive": "u16" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::Justify": { + "identifier": "Justify", + "crate": "bevy_text", + "path": "bevy_text::text::Justify", + "documentation": " Describes the horizontal alignment of multiple lines of text relative to each other.\n\n This only affects the internal positioning of the lines of text within a text entity and\n does not affect the text entity's position.\n\n _Has no affect on a single line text entity_, unless used together with a\n [`TextBounds`](super::bounds::TextBounds) component with an explicit `width` value.", + "layout": [ + { + "kind": "Unit", + "name": "Left" + }, + { + "kind": "Unit", + "name": "Center" + }, + { + "kind": "Unit", + "name": "Right" + }, + { + "kind": "Unit", + "name": "Justified" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::LineBreak": { + "identifier": "LineBreak", + "crate": "bevy_text", + "path": "bevy_text::text::LineBreak", + "documentation": " Determines how lines will be broken when preventing text from running out of bounds.", + "layout": [ + { + "kind": "Unit", + "name": "WordBoundary" + }, + { + "kind": "Unit", + "name": "AnyCharacter" + }, + { + "kind": "Unit", + "name": "WordOrCharacter" + }, + { + "kind": "Unit", + "name": "NoWrap" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::LineHeight": { + "identifier": "LineHeight", + "crate": "bevy_text", + "path": "bevy_text::text::LineHeight", + "documentation": " Specifies the height of each line of text for `Text` and `Text2d`\n\n Default is 1.2x the font size", + "layout": [ + { + "kind": "TupleStruct", + "name": "Px", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "RelativeToFont", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::Strikethrough": { + "identifier": "Strikethrough", + "crate": "bevy_text", + "path": "bevy_text::text::Strikethrough", + "documentation": " A text entity with this component is drawn with strikethrough.", + "layout": { + "kind": "Struct", + "name": "Strikethrough" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::StrikethroughColor": { + "identifier": "StrikethroughColor", + "crate": "bevy_text", + "path": "bevy_text::text::StrikethroughColor", + "documentation": " Color for the text's strikethrough. If this component is not present, its `TextColor` will be used.", + "layout": { + "kind": "TupleStruct", + "name": "StrikethroughColor", + "fields": [ + { + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::TextBackgroundColor": { + "identifier": "TextBackgroundColor", + "crate": "bevy_text", + "path": "bevy_text::text::TextBackgroundColor", + "documentation": " The background color of the text for this section.", + "layout": { + "kind": "TupleStruct", + "name": "TextBackgroundColor", + "fields": [ + { + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::TextColor": { + "identifier": "TextColor", + "crate": "bevy_text", + "path": "bevy_text::text::TextColor", + "documentation": " The color of the text for this section.", + "layout": { + "kind": "TupleStruct", + "name": "TextColor", + "fields": [ + { + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::TextEntity": { + "identifier": "TextEntity", + "crate": "bevy_text", + "path": "bevy_text::text::TextEntity", + "documentation": " A sub-entity of a [`ComputedTextBlock`].\n\n Returned by [`ComputedTextBlock::entities`].", + "layout": { + "kind": "Struct", + "name": "TextEntity", + "fields": [ + { + "name": "entity", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "depth", + "type": { + "primitive": "usize" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::TextFont": { + "identifier": "TextFont", + "crate": "bevy_text", + "path": "bevy_text::text::TextFont", + "documentation": " `TextFont` determines the style of a text span within a [`ComputedTextBlock`], specifically\n the font face, the font size, the line height, and the antialiasing method.", + "layout": { + "kind": "Struct", + "name": "TextFont", + "fields": [ + { + "name": "font", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "font_size", + "type": { + "primitive": "f32" + } + }, + { + "name": "weight", + "type": { + "val": "bevy_text::text::FontWeight" + } + }, + { + "name": "font_smoothing", + "type": { + "val": "bevy_text::text::FontSmoothing" + } + }, + { + "name": "font_features", + "type": { + "val": "bevy_text::text::FontFeatures" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::TextLayout": { + "identifier": "TextLayout", + "crate": "bevy_text", + "path": "bevy_text::text::TextLayout", + "documentation": " Component with text format settings for a block of text.\n\n A block of text is composed of text spans, which each have a separate string value and [`TextFont`]. Text\n spans associated with a text block are collected into [`ComputedTextBlock`] for layout, and then inserted\n to [`TextLayoutInfo`] for rendering.\n\n See `Text2d` in `bevy_sprite` for the core component of 2d text, and `Text` in `bevy_ui` for UI text.", + "layout": { + "kind": "Struct", + "name": "TextLayout", + "fields": [ + { + "name": "justify", + "type": { + "val": "bevy_text::text::Justify" + } + }, + { + "name": "linebreak", + "type": { + "val": "bevy_text::text::LineBreak" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::TextSpan": { + "identifier": "TextSpan", + "crate": "bevy_text", + "path": "bevy_text::text::TextSpan", + "documentation": " A span of text in a tree of spans.\n\n A `TextSpan` is only valid when it exists as a child of a parent that has either `Text` or\n `Text2d`. The parent's `Text` / `Text2d` component contains the base text content. Any children\n with `TextSpan` extend this text by appending their content to the parent's text in sequence to\n form a [`ComputedTextBlock`]. The parent's [`TextLayout`] determines the layout of the block\n but each node has its own [`TextFont`] and [`TextColor`].", + "layout": { + "kind": "TupleStruct", + "name": "TextSpan", + "fields": [ + { + "type": { + "primitive": "string" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::Underline": { + "identifier": "Underline", + "crate": "bevy_text", + "path": "bevy_text::text::Underline", + "documentation": " Add to a text entity to draw its text with underline.", + "layout": { + "kind": "Struct", + "name": "Underline" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_text::text::UnderlineColor": { + "identifier": "UnderlineColor", + "crate": "bevy_text", + "path": "bevy_text::text::UnderlineColor", + "documentation": " Color for the text's underline. If this component is not present, its `TextColor` will be used.", + "layout": { + "kind": "TupleStruct", + "name": "UnderlineColor", + "fields": [ + { + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::UiScale": { + "identifier": "UiScale", + "crate": "bevy_ui", + "path": "bevy_ui::UiScale", + "documentation": " The current scale of the UI.\n\n A multiplier to fixed-sized ui values.\n **Note:** This will only affect fixed ui values like [`Val::Px`]", + "layout": { + "kind": "TupleStruct", + "name": "UiScale", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::auto_directional_navigation::AutoDirectionalNavigation": { + "identifier": "AutoDirectionalNavigation", + "crate": "bevy_ui", + "path": "bevy_ui::auto_directional_navigation::AutoDirectionalNavigation", + "documentation": " Marker component to enable automatic directional navigation to and from the entity.\n\n Simply add this component to your UI entities so that the navigation algorithm will\n consider this entity in its calculations:\n\n ```rust\n # use bevy_ecs::prelude::*;\n # use bevy_ui::auto_directional_navigation::AutoDirectionalNavigation;\n fn spawn_auto_nav_button(mut commands: Commands) {\n commands.spawn((\n // ... Button, Node, etc. ...\n AutoDirectionalNavigation::default(), // That's it!\n ));\n }\n ```\n\n # Multi-Layer UIs and Z-Index\n\n **Important**: Automatic navigation is currently **z-index agnostic** and treats\n all entities with `AutoDirectionalNavigation` as a flat set, regardless of which UI layer\n or z-index they belong to. This means navigation may jump between different layers (e.g.,\n from a background menu to an overlay popup).\n\n **Workarounds** for multi-layer UIs:\n\n 1. **Per-layer manual edge generation**: Query entities by layer and call\n [`auto_generate_navigation_edges()`](bevy_input_focus::directional_navigation::auto_generate_navigation_edges)\n separately for each layer:\n ```rust,ignore\n for layer in &layers {\n let nodes: Vec = query_layer(layer).collect();\n auto_generate_navigation_edges(&mut nav_map, &nodes, &config);\n }\n ```\n\n 2. **Manual cross-layer navigation**: Use\n [`DirectionalNavigationMap::add_edge()`](bevy_input_focus::directional_navigation::DirectionalNavigationMap::add_edge)\n to define explicit connections between layers (e.g., \"Back\" button to main menu).\n\n 3. **Remove component when layer is hidden**: Dynamically add/remove\n [`AutoDirectionalNavigation`] based on which layers are currently active.\n\n See issue [#21679](https://github.com/bevyengine/bevy/issues/21679) for planned\n improvements to layer-aware automatic navigation.\n\n # Opting Out\n\n To disable automatic navigation for specific entities:\n\n - **Remove the component**: Simply don't add [`AutoDirectionalNavigation`] to entities\n that should only use manual navigation edges.\n - **Dynamically toggle**: Remove/insert the component at runtime to enable/disable\n automatic navigation as needed.\n\n Manual edges defined via [`DirectionalNavigationMap`](bevy_input_focus::directional_navigation::DirectionalNavigationMap)\n are completely independent and will continue to work regardless of this component.\n\n # Additional Requirements\n\n Entities must also have:\n - [`ComputedNode`] - for size information\n - [`UiGlobalTransform`] - for position information\n\n These are automatically added by `bevy_ui` when you spawn UI entities.\n\n # Custom UI Systems\n\n For custom UI frameworks, you can call\n [`auto_generate_navigation_edges`](bevy_input_focus::directional_navigation::auto_generate_navigation_edges)\n directly in your own system instead of using this component.", + "layout": { + "kind": "Struct", + "name": "AutoDirectionalNavigation", + "fields": [ + { + "name": "respect_tab_order", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::focus::FocusPolicy": { + "identifier": "FocusPolicy", + "crate": "bevy_ui", + "path": "bevy_ui::focus::FocusPolicy", + "documentation": " Describes whether the node should block interactions with lower nodes", + "layout": [ + { + "kind": "Unit", + "name": "Block" + }, + { + "kind": "Unit", + "name": "Pass" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::focus::Interaction": { + "identifier": "Interaction", + "crate": "bevy_ui", + "path": "bevy_ui::focus::Interaction", + "documentation": " Describes what type of input interaction has occurred for a UI node.\n\n This is commonly queried with a `Changed` filter.\n\n Updated in [`ui_focus_system`].\n\n If a UI node has both [`Interaction`] and [`InheritedVisibility`] components,\n [`Interaction`] will always be [`Interaction::None`]\n when [`InheritedVisibility::get()`] is false.\n This ensures that hidden UI nodes are not interactable,\n and do not end up stuck in an active state if hidden at the wrong time.\n\n Note that you can also control the visibility of a node using the [`Display`](crate::ui_node::Display) property,\n which fully collapses it during layout calculations.\n\n # See also\n\n - [`Button`](crate::widget::Button) which requires this component\n - [`RelativeCursorPosition`] to obtain the position of the cursor relative to current node", + "layout": [ + { + "kind": "Unit", + "name": "Pressed" + }, + { + "kind": "Unit", + "name": "Hovered" + }, + { + "kind": "Unit", + "name": "None" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::focus::RelativeCursorPosition": { + "identifier": "RelativeCursorPosition", + "crate": "bevy_ui", + "path": "bevy_ui::focus::RelativeCursorPosition", + "documentation": " A component storing the position of the mouse relative to the node, (0., 0.) being the center and (0.5, 0.5) being the bottom-right\n If the mouse is not over the node, the value will go beyond the range of (-0.5, -0.5) to (0.5, 0.5)\n\n It can be used alongside [`Interaction`] to get the position of the press.\n\n The component is updated when it is in the same entity with [`Node`].", + "layout": { + "kind": "Struct", + "name": "RelativeCursorPosition", + "fields": [ + { + "name": "cursor_over", + "type": { + "primitive": "bool" + } + }, + { + "name": "normalized", + "type": { + "option": { + "val": "glam::Vec2" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::geometry::UiPosition": { + "identifier": "UiPosition", + "crate": "bevy_ui", + "path": "bevy_ui::geometry::UiPosition", + "documentation": " Responsive position relative to a UI node.", + "layout": { + "kind": "Struct", + "name": "UiPosition", + "fields": [ + { + "name": "anchor", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "x", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "y", + "type": { + "val": "bevy_ui::geometry::Val" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::geometry::UiRect": { + "identifier": "UiRect", + "crate": "bevy_ui", + "path": "bevy_ui::geometry::UiRect", + "documentation": " A type which is commonly used to define margins, paddings and borders.\n\n # Examples\n\n ## Margin\n\n A margin is used to create space around UI elements, outside of any defined borders.\n\n ```\n # use bevy_ui::{UiRect, Val};\n #\n let margin = UiRect::all(Val::Auto); // Centers the UI element\n ```\n\n ## Padding\n\n A padding is used to create space around UI elements, inside of any defined borders.\n\n ```\n # use bevy_ui::{UiRect, Val};\n #\n let padding = UiRect {\n left: Val::Px(10.0),\n right: Val::Px(20.0),\n top: Val::Px(30.0),\n bottom: Val::Px(40.0),\n };\n ```\n\n ## Borders\n\n A border is used to define the width of the border of a UI element.\n\n ```\n # use bevy_ui::{UiRect, Val};\n #\n let border = UiRect {\n left: Val::Px(10.0),\n right: Val::Px(20.0),\n top: Val::Px(30.0),\n bottom: Val::Px(40.0),\n };\n ```", + "layout": { + "kind": "Struct", + "name": "UiRect", + "fields": [ + { + "name": "left", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "right", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "top", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "bottom", + "type": { + "val": "bevy_ui::geometry::Val" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::geometry::Val": { + "identifier": "Val", + "crate": "bevy_ui", + "path": "bevy_ui::geometry::Val", + "documentation": " Represents the possible value types for layout properties.\n\n This enum allows specifying values for various [`Node`](crate::Node) properties in different units,\n such as logical pixels, percentages, or automatically determined values.\n\n `Val` also implements [`core::str::FromStr`] to allow parsing values from strings in the format `#.#px`. Whitespaces between the value and unit is allowed. The following units are supported:\n * `px`: logical pixels\n * `%`: percentage\n * `vw`: percentage of the viewport width\n * `vh`: percentage of the viewport height\n * `vmin`: percentage of the viewport's smaller dimension\n * `vmax`: percentage of the viewport's larger dimension\n\n Additionally, `auto` will be parsed as [`Val::Auto`].", + "layout": [ + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "TupleStruct", + "name": "Px", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Percent", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Vw", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Vh", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "VMin", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "VMax", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::AngularColorStop": { + "identifier": "AngularColorStop", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::AngularColorStop", + "documentation": " An angular color stop for a conic gradient", + "layout": { + "kind": "Struct", + "name": "AngularColorStop", + "fields": [ + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "angle", + "type": { + "option": { + "primitive": "f32" + } + } + }, + { + "name": "hint", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::BackgroundGradient": { + "identifier": "BackgroundGradient", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::BackgroundGradient", + "documentation": " A UI node that displays a gradient", + "layout": { + "kind": "TupleStruct", + "name": "BackgroundGradient", + "fields": [ + { + "type": { + "vec": { + "val": "bevy_ui::gradients::Gradient" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::BorderGradient": { + "identifier": "BorderGradient", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::BorderGradient", + "documentation": " A UI node border that displays a gradient", + "layout": { + "kind": "TupleStruct", + "name": "BorderGradient", + "fields": [ + { + "type": { + "vec": { + "val": "bevy_ui::gradients::Gradient" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::ColorStop": { + "identifier": "ColorStop", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::ColorStop", + "documentation": " A color stop for a gradient", + "layout": { + "kind": "Struct", + "name": "ColorStop", + "fields": [ + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "point", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "hint", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::ConicGradient": { + "identifier": "ConicGradient", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::ConicGradient", + "documentation": " A conic gradient\n\n ", + "layout": { + "kind": "Struct", + "name": "ConicGradient", + "fields": [ + { + "name": "color_space", + "type": { + "val": "bevy_ui::gradients::InterpolationColorSpace" + } + }, + { + "name": "start", + "type": { + "primitive": "f32" + } + }, + { + "name": "position", + "type": { + "val": "bevy_ui::geometry::UiPosition" + } + }, + { + "name": "stops", + "type": { + "vec": { + "val": "bevy_ui::gradients::AngularColorStop" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::Gradient": { + "identifier": "Gradient", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::Gradient", + "layout": [ + { + "kind": "TupleStruct", + "name": "Linear", + "fields": [ + { + "type": { + "val": "bevy_ui::gradients::LinearGradient" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Radial", + "fields": [ + { + "type": { + "val": "bevy_ui::gradients::RadialGradient" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Conic", + "fields": [ + { + "type": { + "val": "bevy_ui::gradients::ConicGradient" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::InterpolationColorSpace": { + "identifier": "InterpolationColorSpace", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::InterpolationColorSpace", + "documentation": " The color space used for interpolation.", + "layout": [ + { + "kind": "Unit", + "name": "Oklaba" + }, + { + "kind": "Unit", + "name": "Oklcha" + }, + { + "kind": "Unit", + "name": "OklchaLong" + }, + { + "kind": "Unit", + "name": "Srgba" + }, + { + "kind": "Unit", + "name": "LinearRgba" + }, + { + "kind": "Unit", + "name": "Hsla" + }, + { + "kind": "Unit", + "name": "HslaLong" + }, + { + "kind": "Unit", + "name": "Hsva" + }, + { + "kind": "Unit", + "name": "HsvaLong" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::LinearGradient": { + "identifier": "LinearGradient", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::LinearGradient", + "documentation": " A linear gradient\n\n ", + "layout": { + "kind": "Struct", + "name": "LinearGradient", + "fields": [ + { + "name": "color_space", + "type": { + "val": "bevy_ui::gradients::InterpolationColorSpace" + } + }, + { + "name": "angle", + "type": { + "primitive": "f32" + } + }, + { + "name": "stops", + "type": { + "vec": { + "val": "bevy_ui::gradients::ColorStop" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::RadialGradient": { + "identifier": "RadialGradient", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::RadialGradient", + "documentation": " A radial gradient\n\n ", + "layout": { + "kind": "Struct", + "name": "RadialGradient", + "fields": [ + { + "name": "color_space", + "type": { + "val": "bevy_ui::gradients::InterpolationColorSpace" + } + }, + { + "name": "position", + "type": { + "val": "bevy_ui::geometry::UiPosition" + } + }, + { + "name": "shape", + "type": { + "val": "bevy_ui::gradients::RadialGradientShape" + } + }, + { + "name": "stops", + "type": { + "vec": { + "val": "bevy_ui::gradients::ColorStop" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::gradients::RadialGradientShape": { + "identifier": "RadialGradientShape", + "crate": "bevy_ui", + "path": "bevy_ui::gradients::RadialGradientShape", + "layout": [ + { + "kind": "Unit", + "name": "ClosestSide" + }, + { + "kind": "Unit", + "name": "FarthestSide" + }, + { + "kind": "Unit", + "name": "ClosestCorner" + }, + { + "kind": "Unit", + "name": "FarthestCorner" + }, + { + "kind": "TupleStruct", + "name": "Circle", + "fields": [ + { + "type": { + "val": "bevy_ui::geometry::Val" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Ellipse", + "fields": [ + { + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "type": { + "val": "bevy_ui::geometry::Val" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::measurement::ContentSize": { + "identifier": "ContentSize", + "crate": "bevy_ui", + "path": "bevy_ui::measurement::ContentSize", + "documentation": " A node with a `ContentSize` component is a node where its size\n is based on its content.", + "layout": { + "kind": "Struct", + "name": "ContentSize" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::AlignContent": { + "identifier": "AlignContent", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::AlignContent", + "documentation": " Used to control how items are distributed.\n - For Flexbox containers, controls alignment of lines if `flex_wrap` is set to [`FlexWrap::Wrap`] and there are multiple lines of items.\n - For CSS Grid containers, controls alignment of grid rows.\n\n ", + "layout": [ + { + "kind": "Unit", + "name": "Default" + }, + { + "kind": "Unit", + "name": "Start" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "FlexStart" + }, + { + "kind": "Unit", + "name": "FlexEnd" + }, + { + "kind": "Unit", + "name": "Center" + }, + { + "kind": "Unit", + "name": "Stretch" + }, + { + "kind": "Unit", + "name": "SpaceBetween" + }, + { + "kind": "Unit", + "name": "SpaceEvenly" + }, + { + "kind": "Unit", + "name": "SpaceAround" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::AlignItems": { + "identifier": "AlignItems", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::AlignItems", + "documentation": " Used to control how each individual item is aligned by default within the space they're given.\n - For Flexbox containers, sets default cross axis alignment of the child items.\n - For CSS Grid containers, controls block (vertical) axis alignment of children of this grid container within their grid areas.\n\n ", + "layout": [ + { + "kind": "Unit", + "name": "Default" + }, + { + "kind": "Unit", + "name": "Start" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "FlexStart" + }, + { + "kind": "Unit", + "name": "FlexEnd" + }, + { + "kind": "Unit", + "name": "Center" + }, + { + "kind": "Unit", + "name": "Baseline" + }, + { + "kind": "Unit", + "name": "Stretch" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::AlignSelf": { + "identifier": "AlignSelf", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::AlignSelf", + "documentation": " Used to control how the specified item is aligned within the space it's given.\n - For Flexbox items, controls cross axis alignment of the item.\n - For CSS Grid items, controls block (vertical) axis alignment of a grid item within its grid area.\n\n ", + "layout": [ + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "Unit", + "name": "Start" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "FlexStart" + }, + { + "kind": "Unit", + "name": "FlexEnd" + }, + { + "kind": "Unit", + "name": "Center" + }, + { + "kind": "Unit", + "name": "Baseline" + }, + { + "kind": "Unit", + "name": "Stretch" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::BackgroundColor": { + "identifier": "BackgroundColor", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::BackgroundColor", + "documentation": " The background color of the node\n\n This serves as the \"fill\" color.", + "layout": { + "kind": "TupleStruct", + "name": "BackgroundColor", + "fields": [ + { + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::BorderColor": { + "identifier": "BorderColor", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::BorderColor", + "documentation": " The border color of the UI node.", + "layout": { + "kind": "Struct", + "name": "BorderColor", + "fields": [ + { + "name": "top", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "right", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "bottom", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "left", + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::BorderRadius": { + "identifier": "BorderRadius", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::BorderRadius", + "documentation": " Used to add rounded corners to a UI node. You can set a UI node to have uniformly\n rounded corners or specify different radii for each corner. If a given radius exceeds half\n the length of the smallest dimension between the node's height or width, the radius will\n calculated as half the smallest dimension.\n\n Elliptical nodes are not supported yet. Percentage values are based on the node's smallest\n dimension, either width or height.\n\n # Example\n ```rust\n # use bevy_ecs::prelude::*;\n # use bevy_ui::prelude::*;\n # use bevy_color::palettes::basic::{BLUE};\n fn setup_ui(mut commands: Commands) {\n commands.spawn((\n Node {\n width: Val::Px(100.),\n height: Val::Px(100.),\n border: UiRect::all(Val::Px(2.)),\n border_radius: BorderRadius::new(\n // top left\n Val::Px(10.),\n // top right\n Val::Px(20.),\n // bottom right\n Val::Px(30.),\n // bottom left\n Val::Px(40.),\n ),\n ..Default::default()\n },\n BackgroundColor(BLUE.into()),\n ));\n }\n ```\n\n ", + "layout": { + "kind": "Struct", + "name": "BorderRadius", + "fields": [ + { + "name": "top_left", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "top_right", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "bottom_right", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "bottom_left", + "type": { + "val": "bevy_ui::geometry::Val" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::BoxShadow": { + "identifier": "BoxShadow", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::BoxShadow", + "documentation": " List of shadows to draw for a [`Node`].\n\n Draw order is determined implicitly from the vector of [`ShadowStyle`]s, back-to-front.", + "layout": { + "kind": "TupleStruct", + "name": "BoxShadow", + "fields": [ + { + "type": { + "vec": { + "val": "bevy_ui::ui_node::ShadowStyle" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::BoxSizing": { + "identifier": "BoxSizing", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::BoxSizing", + "documentation": " Which part of a Node's box length styles like width and height control\n\n See: ", + "layout": [ + { + "kind": "Unit", + "name": "BorderBox" + }, + { + "kind": "Unit", + "name": "ContentBox" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::CalculatedClip": { + "identifier": "CalculatedClip", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::CalculatedClip", + "documentation": " The calculated clip of the node", + "layout": { + "kind": "Struct", + "name": "CalculatedClip", + "fields": [ + { + "name": "clip", + "type": { + "val": "bevy_math::rects::rect::Rect" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::ComputedNode": { + "identifier": "ComputedNode", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::ComputedNode", + "documentation": " Provides the computed size and layout properties of the node.\n\n Fields in this struct are public but should not be modified under most circumstances.\n For example, in a scrollbar you may want to derive the handle's size from the proportion of\n scrollable content in-view. You can directly modify `ComputedNode` after layout to set the\n handle size without any delays.", + "layout": { + "kind": "Struct", + "name": "ComputedNode", + "fields": [ + { + "name": "stack_index", + "type": { + "primitive": "u32" + } + }, + { + "name": "size", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "content_size", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "scrollbar_size", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "scroll_position", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "outline_width", + "type": { + "primitive": "f32" + } + }, + { + "name": "outline_offset", + "type": { + "primitive": "f32" + } + }, + { + "name": "unrounded_size", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "border", + "type": { + "val": "bevy_sprite::texture_slice::border_rect::BorderRect" + } + }, + { + "name": "border_radius", + "type": { + "val": "bevy_ui::ui_node::ResolvedBorderRadius" + } + }, + { + "name": "padding", + "type": { + "val": "bevy_sprite::texture_slice::border_rect::BorderRect" + } + }, + { + "name": "inverse_scale_factor", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::ComputedUiRenderTargetInfo": { + "identifier": "ComputedUiRenderTargetInfo", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::ComputedUiRenderTargetInfo", + "documentation": " Derived information about the render target for this UI node.", + "layout": { + "kind": "Struct", + "name": "ComputedUiRenderTargetInfo", + "fields": [ + { + "name": "scale_factor", + "type": { + "primitive": "f32" + } + }, + { + "name": "physical_size", + "type": { + "val": "glam::UVec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::ComputedUiTargetCamera": { + "identifier": "ComputedUiTargetCamera", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::ComputedUiTargetCamera", + "documentation": " Derived information about the camera target for this UI node.\n\n Updated in [`UiSystems::Prepare`](crate::UiSystems::Prepare) by [`propagate_ui_target_cameras`](crate::update::propagate_ui_target_cameras)", + "layout": { + "kind": "Struct", + "name": "ComputedUiTargetCamera", + "fields": [ + { + "name": "camera", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::Display": { + "identifier": "Display", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::Display", + "documentation": " Defines the layout model used by this node.\n\n Part of the [`Node`] component.", + "layout": [ + { + "kind": "Unit", + "name": "Flex" + }, + { + "kind": "Unit", + "name": "Grid" + }, + { + "kind": "Unit", + "name": "Block" + }, + { + "kind": "Unit", + "name": "None" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::FlexDirection": { + "identifier": "FlexDirection", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::FlexDirection", + "documentation": " Defines how flexbox items are ordered within a flexbox", + "layout": [ + { + "kind": "Unit", + "name": "Row" + }, + { + "kind": "Unit", + "name": "Column" + }, + { + "kind": "Unit", + "name": "RowReverse" + }, + { + "kind": "Unit", + "name": "ColumnReverse" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::FlexWrap": { + "identifier": "FlexWrap", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::FlexWrap", + "documentation": " Defines if flexbox items appear on a single line or on multiple lines", + "layout": [ + { + "kind": "Unit", + "name": "NoWrap" + }, + { + "kind": "Unit", + "name": "Wrap" + }, + { + "kind": "Unit", + "name": "WrapReverse" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::GlobalZIndex": { + "identifier": "GlobalZIndex", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::GlobalZIndex", + "documentation": " `GlobalZIndex` allows a [`Node`] entity anywhere in the UI hierarchy to escape the implicit draw ordering of the UI's layout tree and\n be rendered above or below other UI nodes.\n Nodes with a `GlobalZIndex` of greater than 0 will be drawn on top of nodes without a `GlobalZIndex` or nodes with a lower `GlobalZIndex`.\n Nodes with a `GlobalZIndex` of less than 0 will be drawn below nodes without a `GlobalZIndex` or nodes with a greater `GlobalZIndex`.\n\n If two Nodes have the same `GlobalZIndex`, the node with the greater [`ZIndex`] will be drawn on top.", + "layout": { + "kind": "TupleStruct", + "name": "GlobalZIndex", + "fields": [ + { + "type": { + "primitive": "i32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::GridAutoFlow": { + "identifier": "GridAutoFlow", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::GridAutoFlow", + "documentation": " Controls whether grid items are placed row-wise or column-wise as well as whether the sparse or dense packing algorithm is used.\n\n The \"dense\" packing algorithm attempts to fill in holes earlier in the grid, if smaller items come up later.\n This may cause items to appear out-of-order when doing so would fill in holes left by larger items.\n\n Defaults to [`GridAutoFlow::Row`].\n\n ", + "layout": [ + { + "kind": "Unit", + "name": "Row" + }, + { + "kind": "Unit", + "name": "Column" + }, + { + "kind": "Unit", + "name": "RowDense" + }, + { + "kind": "Unit", + "name": "ColumnDense" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::GridPlacement": { + "identifier": "GridPlacement", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::GridPlacement", + "documentation": " Represents the position of a grid item in a single axis.\n\n There are 3 fields which may be set:\n - `start`: which grid line the item should start at\n - `end`: which grid line the item should end at\n - `span`: how many tracks the item should span\n\n The default `span` is 1. If neither `start` or `end` is set then the item will be placed automatically.\n\n Generally, at most two fields should be set. If all three fields are specified then `span` will be ignored. If `end` specifies an earlier\n grid line than `start` then `end` will be ignored and the item will have a span of 1.\n\n ", + "layout": { + "kind": "Struct", + "name": "GridPlacement", + "fields": [ + { + "name": "start", + "type": { + "option": { + "val": "core::num::NonZeroI16" + } + } + }, + { + "name": "span", + "type": { + "option": { + "val": "core::num::NonZeroU16" + } + } + }, + { + "name": "end", + "type": { + "option": { + "val": "core::num::NonZeroI16" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::GridTrack": { + "identifier": "GridTrack", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::GridTrack", + "documentation": " A [`GridTrack`] is a Row or Column of a CSS Grid. This struct specifies what size the track should be.\n See below for the different \"track sizing functions\" you can specify.", + "layout": { + "kind": "Struct", + "name": "GridTrack", + "fields": [ + { + "name": "min_sizing_function", + "type": { + "val": "bevy_ui::ui_node::MinTrackSizingFunction" + } + }, + { + "name": "max_sizing_function", + "type": { + "val": "bevy_ui::ui_node::MaxTrackSizingFunction" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::GridTrackRepetition": { + "identifier": "GridTrackRepetition", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::GridTrackRepetition", + "documentation": " How many times to repeat a repeated grid track\n\n ", + "layout": [ + { + "kind": "TupleStruct", + "name": "Count", + "fields": [ + { + "type": { + "primitive": "u16" + } + } + ] + }, + { + "kind": "Unit", + "name": "AutoFill" + }, + { + "kind": "Unit", + "name": "AutoFit" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::IgnoreScroll": { + "identifier": "IgnoreScroll", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::IgnoreScroll", + "documentation": " Controls whether a UI element ignores its parent's [`ScrollPosition`] along specific axes.\n\n When an axis is set to `true`, the node will not have the parent’s scroll position applied\n on that axis. This can be used to keep an element visually fixed along one or both axes\n even when its parent UI element is scrolled.", + "layout": { + "kind": "TupleStruct", + "name": "IgnoreScroll", + "fields": [ + { + "type": { + "val": "glam::BVec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::JustifyContent": { + "identifier": "JustifyContent", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::JustifyContent", + "documentation": " Used to control how items are distributed.\n - For Flexbox containers, controls alignment of items in the main axis.\n - For CSS Grid containers, controls alignment of grid columns.\n\n ", + "layout": [ + { + "kind": "Unit", + "name": "Default" + }, + { + "kind": "Unit", + "name": "Start" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "FlexStart" + }, + { + "kind": "Unit", + "name": "FlexEnd" + }, + { + "kind": "Unit", + "name": "Center" + }, + { + "kind": "Unit", + "name": "Stretch" + }, + { + "kind": "Unit", + "name": "SpaceBetween" + }, + { + "kind": "Unit", + "name": "SpaceEvenly" + }, + { + "kind": "Unit", + "name": "SpaceAround" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::JustifyItems": { + "identifier": "JustifyItems", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::JustifyItems", + "documentation": " Used to control how each individual item is aligned by default within the space they're given.\n - For Flexbox containers, this property has no effect. See `justify_content` for main axis alignment of flex items.\n - For CSS Grid containers, sets default inline (horizontal) axis alignment of child items within their grid areas.\n\n ", + "layout": [ + { + "kind": "Unit", + "name": "Default" + }, + { + "kind": "Unit", + "name": "Start" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "Center" + }, + { + "kind": "Unit", + "name": "Baseline" + }, + { + "kind": "Unit", + "name": "Stretch" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::JustifySelf": { + "identifier": "JustifySelf", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::JustifySelf", + "documentation": " Used to control how the specified item is aligned within the space it's given.\n - For children of flex nodes, this property has no effect. See `justify_content` for main axis alignment of flex items.\n - For CSS Grid items, controls inline (horizontal) axis alignment of a grid item within its grid area.\n\n ", + "layout": [ + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "Unit", + "name": "Start" + }, + { + "kind": "Unit", + "name": "End" + }, + { + "kind": "Unit", + "name": "Center" + }, + { + "kind": "Unit", + "name": "Baseline" + }, + { + "kind": "Unit", + "name": "Stretch" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::LayoutConfig": { + "identifier": "LayoutConfig", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::LayoutConfig", + "documentation": " This component can be added to any UI node to modify its layout behavior.", + "layout": { + "kind": "Struct", + "name": "LayoutConfig", + "fields": [ + { + "name": "use_rounding", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::MaxTrackSizingFunction": { + "identifier": "MaxTrackSizingFunction", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::MaxTrackSizingFunction", + "layout": [ + { + "kind": "TupleStruct", + "name": "Px", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Percent", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Unit", + "name": "MinContent" + }, + { + "kind": "Unit", + "name": "MaxContent" + }, + { + "kind": "TupleStruct", + "name": "FitContentPx", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "FitContentPercent", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "TupleStruct", + "name": "Fraction", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "VMin", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "VMax", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Vh", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Vw", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::MinTrackSizingFunction": { + "identifier": "MinTrackSizingFunction", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::MinTrackSizingFunction", + "layout": [ + { + "kind": "TupleStruct", + "name": "Px", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Percent", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "Unit", + "name": "MinContent" + }, + { + "kind": "Unit", + "name": "MaxContent" + }, + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "TupleStruct", + "name": "VMin", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "VMax", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Vh", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Vw", + "fields": [ + { + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::Node": { + "identifier": "Node", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::Node", + "documentation": " The base component for UI entities. It describes UI layout and style properties.\n\n When defining new types of UI entities, require [`Node`] to make them behave like UI nodes.\n\n Nodes can be laid out using either Flexbox or CSS Grid Layout.\n\n See below for general learning resources and for documentation on the individual style properties.\n\n ### Flexbox\n\n - [MDN: Basic Concepts of Flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox)\n - [A Complete Guide To Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) by CSS Tricks. This is detailed guide with illustrations and comprehensive written explanation of the different Flexbox properties and how they work.\n - [Flexbox Froggy](https://flexboxfroggy.com/). An interactive tutorial/game that teaches the essential parts of Flexbox in a fun engaging way.\n\n ### CSS Grid\n\n - [MDN: Basic Concepts of Grid Layout](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Basic_Concepts_of_Grid_Layout)\n - [A Complete Guide To CSS Grid](https://css-tricks.com/snippets/css/complete-guide-grid/) by CSS Tricks. This is detailed guide with illustrations and comprehensive written explanation of the different CSS Grid properties and how they work.\n - [CSS Grid Garden](https://cssgridgarden.com/). An interactive tutorial/game that teaches the essential parts of CSS Grid in a fun engaging way.\n\n # See also\n\n - [`RelativeCursorPosition`](crate::RelativeCursorPosition) to obtain the cursor position relative to this node\n - [`Interaction`](crate::Interaction) to obtain the interaction state of this node", + "layout": { + "kind": "Struct", + "name": "Node", + "fields": [ + { + "name": "display", + "type": { + "val": "bevy_ui::ui_node::Display" + } + }, + { + "name": "box_sizing", + "type": { + "val": "bevy_ui::ui_node::BoxSizing" + } + }, + { + "name": "position_type", + "type": { + "val": "bevy_ui::ui_node::PositionType" + } + }, + { + "name": "overflow", + "type": { + "val": "bevy_ui::ui_node::Overflow" + } + }, + { + "name": "scrollbar_width", + "type": { + "primitive": "f32" + } + }, + { + "name": "overflow_clip_margin", + "type": { + "val": "bevy_ui::ui_node::OverflowClipMargin" + } + }, + { + "name": "left", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "right", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "top", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "bottom", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "width", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "height", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "min_width", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "min_height", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "max_width", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "max_height", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "aspect_ratio", + "type": { + "option": { + "primitive": "f32" + } + } + }, + { + "name": "align_items", + "type": { + "val": "bevy_ui::ui_node::AlignItems" + } + }, + { + "name": "justify_items", + "type": { + "val": "bevy_ui::ui_node::JustifyItems" + } + }, + { + "name": "align_self", + "type": { + "val": "bevy_ui::ui_node::AlignSelf" + } + }, + { + "name": "justify_self", + "type": { + "val": "bevy_ui::ui_node::JustifySelf" + } + }, + { + "name": "align_content", + "type": { + "val": "bevy_ui::ui_node::AlignContent" + } + }, + { + "name": "justify_content", + "type": { + "val": "bevy_ui::ui_node::JustifyContent" + } + }, + { + "name": "margin", + "type": { + "val": "bevy_ui::geometry::UiRect" + } + }, + { + "name": "padding", + "type": { + "val": "bevy_ui::geometry::UiRect" + } + }, + { + "name": "border", + "type": { + "val": "bevy_ui::geometry::UiRect" + } + }, + { + "name": "border_radius", + "type": { + "val": "bevy_ui::ui_node::BorderRadius" + } + }, + { + "name": "flex_direction", + "type": { + "val": "bevy_ui::ui_node::FlexDirection" + } + }, + { + "name": "flex_wrap", + "type": { + "val": "bevy_ui::ui_node::FlexWrap" + } + }, + { + "name": "flex_grow", + "type": { + "primitive": "f32" + } + }, + { + "name": "flex_shrink", + "type": { + "primitive": "f32" + } + }, + { + "name": "flex_basis", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "row_gap", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "column_gap", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "grid_auto_flow", + "type": { + "val": "bevy_ui::ui_node::GridAutoFlow" + } + }, + { + "name": "grid_template_rows", + "type": { + "vec": { + "val": "bevy_ui::ui_node::RepeatedGridTrack" + } + } + }, + { + "name": "grid_template_columns", + "type": { + "vec": { + "val": "bevy_ui::ui_node::RepeatedGridTrack" + } + } + }, + { + "name": "grid_auto_rows", + "type": { + "vec": { + "val": "bevy_ui::ui_node::GridTrack" + } + } + }, + { + "name": "grid_auto_columns", + "type": { + "vec": { + "val": "bevy_ui::ui_node::GridTrack" + } + } + }, + { + "name": "grid_row", + "type": { + "val": "bevy_ui::ui_node::GridPlacement" + } + }, + { + "name": "grid_column", + "type": { + "val": "bevy_ui::ui_node::GridPlacement" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::Outline": { + "identifier": "Outline", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::Outline", + "documentation": " The [`Outline`] component adds an outline outside the edge of a UI node.\n Outlines do not take up space in the layout.\n\n To add an [`Outline`] to a ui node you can spawn a `(Node, Outline)` tuple bundle:\n ```\n # use bevy_ecs::prelude::*;\n # use bevy_ui::prelude::*;\n # use bevy_color::palettes::basic::{RED, BLUE};\n fn setup_ui(mut commands: Commands) {\n commands.spawn((\n Node {\n width: Val::Px(100.),\n height: Val::Px(100.),\n ..Default::default()\n },\n BackgroundColor(BLUE.into()),\n Outline::new(Val::Px(10.), Val::ZERO, RED.into())\n ));\n }\n ```\n\n [`Outline`] components can also be added later to existing UI nodes:\n ```\n # use bevy_ecs::prelude::*;\n # use bevy_ui::prelude::*;\n # use bevy_color::Color;\n fn outline_hovered_button_system(\n mut commands: Commands,\n mut node_query: Query<(Entity, &Interaction, Option<&mut Outline>), Changed>,\n ) {\n for (entity, interaction, mut maybe_outline) in node_query.iter_mut() {\n let outline_color =\n if matches!(*interaction, Interaction::Hovered) {\n Color::WHITE\n } else {\n Color::NONE\n };\n if let Some(mut outline) = maybe_outline {\n outline.color = outline_color;\n } else {\n commands.entity(entity).insert(Outline::new(Val::Px(10.), Val::ZERO, outline_color));\n }\n }\n }\n ```\n Inserting and removing an [`Outline`] component repeatedly will result in table moves, so it is generally preferable to\n set `Outline::color` to [`Color::NONE`] to hide an outline.", + "layout": { + "kind": "Struct", + "name": "Outline", + "fields": [ + { + "name": "width", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "offset", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::Overflow": { + "identifier": "Overflow", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::Overflow", + "documentation": " Whether to show or hide overflowing items", + "layout": { + "kind": "Struct", + "name": "Overflow", + "fields": [ + { + "name": "x", + "type": { + "val": "bevy_ui::ui_node::OverflowAxis" + } + }, + { + "name": "y", + "type": { + "val": "bevy_ui::ui_node::OverflowAxis" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::OverflowAxis": { + "identifier": "OverflowAxis", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::OverflowAxis", + "documentation": " Whether to show or hide overflowing items", + "layout": [ + { + "kind": "Unit", + "name": "Visible" + }, + { + "kind": "Unit", + "name": "Clip" + }, + { + "kind": "Unit", + "name": "Hidden" + }, + { + "kind": "Unit", + "name": "Scroll" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::OverflowClipBox": { + "identifier": "OverflowClipBox", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::OverflowClipBox", + "documentation": " Used to determine the bounds of the visible area when a UI node is clipped.", + "layout": [ + { + "kind": "Unit", + "name": "ContentBox" + }, + { + "kind": "Unit", + "name": "PaddingBox" + }, + { + "kind": "Unit", + "name": "BorderBox" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::OverflowClipMargin": { + "identifier": "OverflowClipMargin", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::OverflowClipMargin", + "documentation": " The bounds of the visible area when a UI node is clipped.", + "layout": { + "kind": "Struct", + "name": "OverflowClipMargin", + "fields": [ + { + "name": "visual_box", + "type": { + "val": "bevy_ui::ui_node::OverflowClipBox" + } + }, + { + "name": "margin", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::PositionType": { + "identifier": "PositionType", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::PositionType", + "documentation": " The strategy used to position this node", + "layout": [ + { + "kind": "Unit", + "name": "Relative" + }, + { + "kind": "Unit", + "name": "Absolute" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::RepeatedGridTrack": { + "identifier": "RepeatedGridTrack", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::RepeatedGridTrack", + "documentation": " Represents a *possibly* repeated [`GridTrack`].\n\n The repetition parameter can either be:\n - The integer `1`, in which case the track is non-repeated.\n - a `u16` count to repeat the track N times.\n - A `GridTrackRepetition::AutoFit` or `GridTrackRepetition::AutoFill`.\n\n Note: that in the common case you want a non-repeating track (repetition count 1), you may use the constructor methods on [`GridTrack`]\n to create a `RepeatedGridTrack`. i.e. `GridTrack::px(10.0)` is equivalent to `RepeatedGridTrack::px(1, 10.0)`.\n\n You may only use one auto-repetition per track list. And if your track list contains an auto repetition\n then all tracks (in and outside of the repetition) must be fixed size (px or percent). Integer repetitions are just shorthand for writing out\n N tracks longhand and are not subject to the same limitations.", + "layout": { + "kind": "Struct", + "name": "RepeatedGridTrack", + "fields": [ + { + "name": "repetition", + "type": { + "val": "bevy_ui::ui_node::GridTrackRepetition" + } + }, + { + "name": "tracks", + "type": { + "vec": { + "val": "bevy_ui::ui_node::GridTrack" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::ResolvedBorderRadius": { + "identifier": "ResolvedBorderRadius", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::ResolvedBorderRadius", + "documentation": " Represents the resolved border radius values for a UI node.\n\n The values are in physical pixels.", + "layout": { + "kind": "Struct", + "name": "ResolvedBorderRadius", + "fields": [ + { + "name": "top_left", + "type": { + "primitive": "f32" + } + }, + { + "name": "top_right", + "type": { + "primitive": "f32" + } + }, + { + "name": "bottom_right", + "type": { + "primitive": "f32" + } + }, + { + "name": "bottom_left", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::ScrollPosition": { + "identifier": "ScrollPosition", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::ScrollPosition", + "documentation": " The scroll position of the node. Values are in logical pixels, increasing from top-left to bottom-right.\n\n Increasing the x-coordinate causes the scrolled content to visibly move left on the screen, while increasing the y-coordinate causes the scrolled content to move up.\n This might seem backwards, however what's really happening is that\n the scroll position is moving the visible \"window\" in the local coordinate system of the scrolled content -\n moving the window down causes the content to move up.\n\n Updating the values of `ScrollPosition` will reposition the children of the node by the offset amount in logical pixels.\n `ScrollPosition` may be updated by the layout system when a layout change makes a previously valid `ScrollPosition` invalid.\n Changing this does nothing on a `Node` without setting at least one `OverflowAxis` to `OverflowAxis::Scroll`.", + "layout": { + "kind": "TupleStruct", + "name": "ScrollPosition", + "fields": [ + { + "type": { + "val": "glam::Vec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::ShadowStyle": { + "identifier": "ShadowStyle", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::ShadowStyle", + "layout": { + "kind": "Struct", + "name": "ShadowStyle", + "fields": [ + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "x_offset", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "y_offset", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "spread_radius", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "blur_radius", + "type": { + "val": "bevy_ui::geometry::Val" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::UiTargetCamera": { + "identifier": "UiTargetCamera", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::UiTargetCamera", + "documentation": " Indicates that this root [`Node`] entity should be rendered to a specific camera.\n\n UI then will be laid out respecting the camera's viewport and scale factor, and\n rendered to this camera's [`bevy_camera::RenderTarget`].\n\n Setting this component on a non-root node will have no effect. It will be overridden\n by the root node's component.\n\n Root node's without an explicit [`UiTargetCamera`] will be rendered to the default UI camera,\n which is either a single camera with the [`IsDefaultUiCamera`] marker component or the highest\n order camera targeting the primary window.", + "layout": { + "kind": "TupleStruct", + "name": "UiTargetCamera", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_node::ZIndex": { + "identifier": "ZIndex", + "crate": "bevy_ui", + "path": "bevy_ui::ui_node::ZIndex", + "documentation": " Indicates that this [`Node`] entity's front-to-back ordering is not controlled solely\n by its location in the UI hierarchy. A node with a higher z-index will appear on top\n of sibling nodes with a lower z-index.\n\n UI nodes that have the same z-index will appear according to the order in which they\n appear in the UI hierarchy. In such a case, the last node to be added to its parent\n will appear in front of its siblings.\n\n Nodes without this component will be treated as if they had a value of\n [ZIndex][ZIndex]\\(0\\).\n\n Use [`GlobalZIndex`] if you need to order separate UI hierarchies or nodes that are\n not siblings in a given UI hierarchy.", + "layout": { + "kind": "TupleStruct", + "name": "ZIndex", + "fields": [ + { + "type": { + "primitive": "i32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_transform::UiGlobalTransform": { + "identifier": "UiGlobalTransform", + "crate": "bevy_ui", + "path": "bevy_ui::ui_transform::UiGlobalTransform", + "documentation": " Absolute 2D transform for UI nodes\n\n [`UiGlobalTransform`]s are updated from [`UiTransform`] and [`Node`](crate::ui_node::Node)\n in [`ui_layout_system`](crate::layout::ui_layout_system)", + "layout": { + "kind": "TupleStruct", + "name": "UiGlobalTransform", + "fields": [ + { + "type": { + "val": "glam::Affine2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_transform::UiTransform": { + "identifier": "UiTransform", + "crate": "bevy_ui", + "path": "bevy_ui::ui_transform::UiTransform", + "documentation": " Relative 2D transform for UI nodes\n\n [`UiGlobalTransform`] is automatically inserted whenever [`UiTransform`] is inserted.", + "layout": { + "kind": "Struct", + "name": "UiTransform", + "fields": [ + { + "name": "translation", + "type": { + "val": "bevy_ui::ui_transform::Val2" + } + }, + { + "name": "scale", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "rotation", + "type": { + "val": "bevy_math::rotation2d::Rot2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::ui_transform::Val2": { + "identifier": "Val2", + "crate": "bevy_ui", + "path": "bevy_ui::ui_transform::Val2", + "documentation": " A pair of [`Val`]s used to represent a 2-dimensional size or offset.", + "layout": { + "kind": "Struct", + "name": "Val2", + "fields": [ + { + "name": "x", + "type": { + "val": "bevy_ui::geometry::Val" + } + }, + { + "name": "y", + "type": { + "val": "bevy_ui::geometry::Val" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::button::Button": { + "identifier": "Button", + "crate": "bevy_ui", + "path": "bevy_ui::widget::button::Button", + "documentation": " Marker struct for buttons", + "layout": { + "kind": "Struct", + "name": "Button" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::image::ImageNode": { + "identifier": "ImageNode", + "crate": "bevy_ui", + "path": "bevy_ui::widget::image::ImageNode", + "documentation": " A UI Node that renders an image.", + "layout": { + "kind": "Struct", + "name": "ImageNode", + "fields": [ + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + }, + { + "name": "image", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "texture_atlas", + "type": { + "option": { + "val": "bevy_image::texture_atlas::TextureAtlas" + } + } + }, + { + "name": "flip_x", + "type": { + "primitive": "bool" + } + }, + { + "name": "flip_y", + "type": { + "primitive": "bool" + } + }, + { + "name": "rect", + "type": { + "option": { + "val": "bevy_math::rects::rect::Rect" + } + } + }, + { + "name": "image_mode", + "type": { + "val": "bevy_ui::widget::image::NodeImageMode" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::image::ImageNodeSize": { + "identifier": "ImageNodeSize", + "crate": "bevy_ui", + "path": "bevy_ui::widget::image::ImageNodeSize", + "documentation": " The size of the image's texture\n\n This component is updated automatically by [`update_image_content_size_system`]", + "layout": { + "kind": "Struct", + "name": "ImageNodeSize", + "fields": [ + { + "name": "size", + "type": { + "val": "glam::UVec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::image::NodeImageMode": { + "identifier": "NodeImageMode", + "crate": "bevy_ui", + "path": "bevy_ui::widget::image::NodeImageMode", + "documentation": " Controls how the image is altered to fit within the layout and how the layout algorithm determines the space in the layout for the image", + "layout": [ + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "Unit", + "name": "Stretch" + }, + { + "kind": "TupleStruct", + "name": "Sliced", + "fields": [ + { + "type": { + "val": "bevy_sprite::texture_slice::slicer::TextureSlicer" + } + } + ] + }, + { + "kind": "Struct", + "name": "Tiled", + "fields": [ + { + "name": "tile_x", + "type": { + "primitive": "bool" + } + }, + { + "name": "tile_y", + "type": { + "primitive": "bool" + } + }, + { + "name": "stretch_value", + "type": { + "primitive": "f32" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::label::Label": { + "identifier": "Label", + "crate": "bevy_ui", + "path": "bevy_ui::widget::label::Label", + "documentation": " Marker struct for labels", + "layout": { + "kind": "Struct", + "name": "Label" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::text::Text": { + "identifier": "Text", + "crate": "bevy_ui", + "path": "bevy_ui::widget::text::Text", + "documentation": " The top-level UI text component.\n\n Adding [`Text`] to an entity will pull in required components for setting up a UI text node.\n\n The string in this component is the first 'text span' in a hierarchy of text spans that are collected into\n a [`ComputedTextBlock`]. See [`TextSpan`](bevy_text::TextSpan) for the component used by children of entities with [`Text`].\n\n Note that [`Transform`](bevy_transform::components::Transform) on this entity is managed automatically by the UI layout system.\n\n\n ```\n # use bevy_asset::Handle;\n # use bevy_color::Color;\n # use bevy_color::palettes::basic::BLUE;\n # use bevy_ecs::world::World;\n # use bevy_text::{Font, Justify, TextLayout, TextFont, TextColor, TextSpan};\n # use bevy_ui::prelude::Text;\n #\n # let font_handle: Handle = Default::default();\n # let mut world = World::default();\n #\n // Basic usage.\n world.spawn(Text::new(\"hello world!\"));\n\n // With non-default style.\n world.spawn((\n Text::new(\"hello world!\"),\n TextFont {\n font: font_handle.clone().into(),\n font_size: 60.0,\n ..Default::default()\n },\n TextColor(BLUE.into()),\n ));\n\n // With text justification.\n world.spawn((\n Text::new(\"hello world\\nand bevy!\"),\n TextLayout::new_with_justify(Justify::Center)\n ));\n\n // With spans\n world.spawn(Text::new(\"hello \")).with_children(|parent| {\n parent.spawn(TextSpan::new(\"world\"));\n parent.spawn((TextSpan::new(\"!\"), TextColor(BLUE.into())));\n });\n ```", + "layout": { + "kind": "TupleStruct", + "name": "Text", + "fields": [ + { + "type": { + "primitive": "string" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::text::TextNodeFlags": { + "identifier": "TextNodeFlags", + "crate": "bevy_ui", + "path": "bevy_ui::widget::text::TextNodeFlags", + "documentation": " UI text system flags.\n\n Used internally by [`measure_text_system`] and [`text_system`] to schedule text for processing.", + "layout": { + "kind": "Struct", + "name": "TextNodeFlags", + "fields": [ + { + "name": "needs_measure_fn", + "type": { + "primitive": "bool" + } + }, + { + "name": "needs_recompute", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::text::TextShadow": { + "identifier": "TextShadow", + "crate": "bevy_ui", + "path": "bevy_ui::widget::text::TextShadow", + "documentation": " Adds a shadow behind text\n\n Use the `Text2dShadow` component for `Text2d` shadows", + "layout": { + "kind": "Struct", + "name": "TextShadow", + "fields": [ + { + "name": "offset", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "color", + "type": { + "val": "bevy_color::color::Color" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ui::widget::viewport::ViewportNode": { + "identifier": "ViewportNode", + "crate": "bevy_ui", + "path": "bevy_ui::widget::viewport::ViewportNode", + "documentation": " Component used to render a [`RenderTarget`] to a node.\n\n # See Also\n\n [`update_viewport_render_target_size`]", + "layout": { + "kind": "Struct", + "name": "ViewportNode", + "fields": [ + { + "name": "camera", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::cursor::CursorIcon": { + "identifier": "CursorIcon", + "crate": "bevy_window", + "path": "bevy_window::cursor::CursorIcon", + "documentation": " Insert into a window entity to set the cursor for that window.", + "layout": [ + { + "kind": "TupleStruct", + "name": "Custom", + "fields": [ + { + "type": { + "val": "bevy_window::cursor::custom_cursor::CustomCursor" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "System", + "fields": [ + { + "type": { + "val": "bevy_window::cursor::system_cursor::SystemCursorIcon" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::cursor::custom_cursor::CustomCursor": { + "identifier": "CustomCursor", + "crate": "bevy_window", + "path": "bevy_window::cursor::custom_cursor::CustomCursor", + "documentation": " Custom cursor image data.", + "layout": [ + { + "kind": "TupleStruct", + "name": "Image", + "fields": [ + { + "type": { + "val": "bevy_window::cursor::custom_cursor::CustomCursorImage" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Url", + "fields": [ + { + "type": { + "val": "bevy_window::cursor::custom_cursor::CustomCursorUrl" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::cursor::custom_cursor::CustomCursorImage": { + "identifier": "CustomCursorImage", + "crate": "bevy_window", + "path": "bevy_window::cursor::custom_cursor::CustomCursorImage", + "documentation": " A custom cursor created from an image.", + "layout": { + "kind": "Struct", + "name": "CustomCursorImage", + "fields": [ + { + "name": "handle", + "type": { + "val": "bevy_asset::handle::Handle" + } + }, + { + "name": "texture_atlas", + "type": { + "option": { + "val": "bevy_image::texture_atlas::TextureAtlas" + } + } + }, + { + "name": "flip_x", + "type": { + "primitive": "bool" + } + }, + { + "name": "flip_y", + "type": { + "primitive": "bool" + } + }, + { + "name": "rect", + "type": { + "option": { + "val": "bevy_math::rects::urect::URect" + } + } + }, + { + "name": "hotspot", + "type": { + "tuple": [ + { + "primitive": "u16" + }, + { + "primitive": "u16" + } + ] + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::cursor::custom_cursor::CustomCursorUrl": { + "identifier": "CustomCursorUrl", + "crate": "bevy_window", + "path": "bevy_window::cursor::custom_cursor::CustomCursorUrl", + "documentation": " A custom cursor created from a URL. Note that this currently only works on the web.", + "layout": { + "kind": "Struct", + "name": "CustomCursorUrl", + "fields": [ + { + "name": "url", + "type": { + "primitive": "string" + } + }, + { + "name": "hotspot", + "type": { + "tuple": [ + { + "primitive": "u16" + }, + { + "primitive": "u16" + } + ] + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::cursor::system_cursor::SystemCursorIcon": { + "identifier": "SystemCursorIcon", + "crate": "bevy_window", + "path": "bevy_window::cursor::system_cursor::SystemCursorIcon", + "documentation": " The icon to display for a window.\n\n Examples of all of these cursors can be found [here](https://www.w3schools.com/cssref/playit.php?filename=playcss_cursor&preval=crosshair).\n This `enum` is simply a copy of a similar `enum` found in [`winit`](https://docs.rs/winit/latest/winit/window/enum.CursorIcon.html).\n `winit`, in turn, is based upon the [CSS3 UI spec](https://www.w3.org/TR/css-ui-3/#cursor).\n\n See the [`window_settings`] example for usage.\n\n [`window_settings`]: https://github.com/bevyengine/bevy/blob/latest/examples/window/window_settings.rs", + "layout": [ + { + "kind": "Unit", + "name": "Default" + }, + { + "kind": "Unit", + "name": "ContextMenu" + }, + { + "kind": "Unit", + "name": "Help" + }, + { + "kind": "Unit", + "name": "Pointer" + }, + { + "kind": "Unit", + "name": "Progress" + }, + { + "kind": "Unit", + "name": "Wait" + }, + { + "kind": "Unit", + "name": "Cell" + }, + { + "kind": "Unit", + "name": "Crosshair" + }, + { + "kind": "Unit", + "name": "Text" + }, + { + "kind": "Unit", + "name": "VerticalText" + }, + { + "kind": "Unit", + "name": "Alias" + }, + { + "kind": "Unit", + "name": "Copy" + }, + { + "kind": "Unit", + "name": "Move" + }, + { + "kind": "Unit", + "name": "NoDrop" + }, + { + "kind": "Unit", + "name": "NotAllowed" + }, + { + "kind": "Unit", + "name": "Grab" + }, + { + "kind": "Unit", + "name": "Grabbing" + }, + { + "kind": "Unit", + "name": "EResize" + }, + { + "kind": "Unit", + "name": "NResize" + }, + { + "kind": "Unit", + "name": "NeResize" + }, + { + "kind": "Unit", + "name": "NwResize" + }, + { + "kind": "Unit", + "name": "SResize" + }, + { + "kind": "Unit", + "name": "SeResize" + }, + { + "kind": "Unit", + "name": "SwResize" + }, + { + "kind": "Unit", + "name": "WResize" + }, + { + "kind": "Unit", + "name": "EwResize" + }, + { + "kind": "Unit", + "name": "NsResize" + }, + { + "kind": "Unit", + "name": "NeswResize" + }, + { + "kind": "Unit", + "name": "NwseResize" + }, + { + "kind": "Unit", + "name": "ColResize" + }, + { + "kind": "Unit", + "name": "RowResize" + }, + { + "kind": "Unit", + "name": "AllScroll" + }, + { + "kind": "Unit", + "name": "ZoomIn" + }, + { + "kind": "Unit", + "name": "ZoomOut" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::AppLifecycle": { + "identifier": "AppLifecycle", + "crate": "bevy_window", + "path": "bevy_window::event::AppLifecycle", + "documentation": " Application lifetime events", + "layout": [ + { + "kind": "Unit", + "name": "Idle" + }, + { + "kind": "Unit", + "name": "Running" + }, + { + "kind": "Unit", + "name": "WillSuspend" + }, + { + "kind": "Unit", + "name": "Suspended" + }, + { + "kind": "Unit", + "name": "WillResume" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::CursorEntered": { + "identifier": "CursorEntered", + "crate": "bevy_window", + "path": "bevy_window::event::CursorEntered", + "documentation": " An event that is sent whenever the user's cursor enters a window.", + "layout": { + "kind": "Struct", + "name": "CursorEntered", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::CursorLeft": { + "identifier": "CursorLeft", + "crate": "bevy_window", + "path": "bevy_window::event::CursorLeft", + "documentation": " An event that is sent whenever the user's cursor leaves a window.", + "layout": { + "kind": "Struct", + "name": "CursorLeft", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::CursorMoved": { + "identifier": "CursorMoved", + "crate": "bevy_window", + "path": "bevy_window::event::CursorMoved", + "documentation": " An event reporting that the mouse cursor has moved inside a window.\n\n The event is sent only if the cursor is over one of the application's windows.\n It is the translated version of [`WindowEvent::CursorMoved`] from the `winit` crate with the addition of `delta`.\n\n Not to be confused with the `MouseMotion` event from `bevy_input`.\n\n Because the range of data is limited by the window area and it may have been transformed by the OS to implement certain effects like acceleration,\n you should not use it for non-cursor-like behavior such as 3D camera control. Please see `MouseMotion` instead.\n\n [`WindowEvent::CursorMoved`]: https://docs.rs/winit/latest/winit/event/enum.WindowEvent.html#variant.CursorMoved", + "layout": { + "kind": "Struct", + "name": "CursorMoved", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "position", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "delta", + "type": { + "option": { + "val": "glam::Vec2" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::FileDragAndDrop": { + "identifier": "FileDragAndDrop", + "crate": "bevy_window", + "path": "bevy_window::event::FileDragAndDrop", + "documentation": " Events related to files being dragged and dropped on a window.", + "layout": [ + { + "kind": "Struct", + "name": "DroppedFile", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "path_buf", + "type": { + "primitive": "pathBuf" + } + } + ] + }, + { + "kind": "Struct", + "name": "HoveredFile", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "path_buf", + "type": { + "primitive": "pathBuf" + } + } + ] + }, + { + "kind": "Struct", + "name": "HoveredFileCanceled", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::Ime": { + "identifier": "Ime", + "crate": "bevy_window", + "path": "bevy_window::event::Ime", + "documentation": " An Input Method Editor event.\n\n This event is the translated version of the `WindowEvent::Ime` from the `winit` crate.\n\n It is only sent if IME was enabled on the window with [`Window::ime_enabled`](crate::window::Window::ime_enabled).", + "layout": [ + { + "kind": "Struct", + "name": "Preedit", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "value", + "type": { + "primitive": "string" + } + }, + { + "name": "cursor", + "type": { + "option": { + "tuple": [ + { + "primitive": "usize" + }, + { + "primitive": "usize" + } + ] + } + } + } + ] + }, + { + "kind": "Struct", + "name": "Commit", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "value", + "type": { + "primitive": "string" + } + } + ] + }, + { + "kind": "Struct", + "name": "Enabled", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + { + "kind": "Struct", + "name": "Disabled", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::RequestRedraw": { + "identifier": "RequestRedraw", + "crate": "bevy_window", + "path": "bevy_window::event::RequestRedraw", + "documentation": " An event that indicates all of the application's windows should be redrawn,\n even if their control flow is set to `Wait` and there have been no window events.", + "layout": { + "kind": "Struct", + "name": "RequestRedraw" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowBackendScaleFactorChanged": { + "identifier": "WindowBackendScaleFactorChanged", + "crate": "bevy_window", + "path": "bevy_window::event::WindowBackendScaleFactorChanged", + "documentation": " An event that indicates a window's OS-reported scale factor has changed.", + "layout": { + "kind": "Struct", + "name": "WindowBackendScaleFactorChanged", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "scale_factor", + "type": { + "primitive": "f64" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowCloseRequested": { + "identifier": "WindowCloseRequested", + "crate": "bevy_window", + "path": "bevy_window::event::WindowCloseRequested", + "documentation": " An event that is sent whenever the operating systems requests that a window\n be closed. This will be sent when the close button of the window is pressed.\n\n If the default [`WindowPlugin`] is used, these events are handled\n by closing the corresponding [`Window`].\n To disable this behavior, set `close_when_requested` on the [`WindowPlugin`]\n to `false`.\n\n [`WindowPlugin`]: crate::WindowPlugin\n [`Window`]: crate::Window", + "layout": { + "kind": "Struct", + "name": "WindowCloseRequested", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowClosed": { + "identifier": "WindowClosed", + "crate": "bevy_window", + "path": "bevy_window::event::WindowClosed", + "documentation": " An event that is sent whenever a window is closed. This will be sent when\n the window entity loses its [`Window`](crate::window::Window) component or is despawned.", + "layout": { + "kind": "Struct", + "name": "WindowClosed", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowClosing": { + "identifier": "WindowClosing", + "crate": "bevy_window", + "path": "bevy_window::event::WindowClosing", + "documentation": " An event that is sent whenever a window is closing. This will be sent when\n after a [`WindowCloseRequested`] event is received and the window is in the process of closing.", + "layout": { + "kind": "Struct", + "name": "WindowClosing", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowCreated": { + "identifier": "WindowCreated", + "crate": "bevy_window", + "path": "bevy_window::event::WindowCreated", + "documentation": " An event that is sent whenever a new window is created.\n\n To create a new window, spawn an entity with a [`Window`](`crate::Window`) on it.", + "layout": { + "kind": "Struct", + "name": "WindowCreated", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowDestroyed": { + "identifier": "WindowDestroyed", + "crate": "bevy_window", + "path": "bevy_window::event::WindowDestroyed", + "documentation": " An event that is sent whenever a window is destroyed by the underlying window system.\n\n Note that if your application only has a single window, this event may be your last chance to\n persist state before the application terminates.", + "layout": { + "kind": "Struct", + "name": "WindowDestroyed", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowEvent": { + "identifier": "WindowEvent", + "crate": "bevy_window", + "path": "bevy_window::event::WindowEvent", + "documentation": " Wraps all `bevy_window` and `bevy_input` events in a common enum.\n\n Read these events with `MessageReader` if you need to\n access window events in the order they were received from the\n operating system. Otherwise, the event types are individually\n readable with `MessageReader` (e.g. `MessageReader`).", + "layout": [ + { + "kind": "TupleStruct", + "name": "AppLifecycle", + "fields": [ + { + "type": { + "val": "bevy_window::event::AppLifecycle" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "CursorEntered", + "fields": [ + { + "type": { + "val": "bevy_window::event::CursorEntered" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "CursorLeft", + "fields": [ + { + "type": { + "val": "bevy_window::event::CursorLeft" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "CursorMoved", + "fields": [ + { + "type": { + "val": "bevy_window::event::CursorMoved" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "FileDragAndDrop", + "fields": [ + { + "type": { + "val": "bevy_window::event::FileDragAndDrop" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Ime", + "fields": [ + { + "type": { + "val": "bevy_window::event::Ime" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "RequestRedraw", + "fields": [ + { + "type": { + "val": "bevy_window::event::RequestRedraw" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowBackendScaleFactorChanged", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowBackendScaleFactorChanged" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowCloseRequested", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowCloseRequested" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowCreated", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowCreated" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowDestroyed", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowDestroyed" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowFocused", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowFocused" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowMoved", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowMoved" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowOccluded", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowOccluded" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowResized", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowResized" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowScaleFactorChanged", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowScaleFactorChanged" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "WindowThemeChanged", + "fields": [ + { + "type": { + "val": "bevy_window::event::WindowThemeChanged" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "MouseButtonInput", + "fields": [ + { + "type": { + "val": "bevy_input::mouse::MouseButtonInput" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "MouseMotion", + "fields": [ + { + "type": { + "val": "bevy_input::mouse::MouseMotion" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "MouseWheel", + "fields": [ + { + "type": { + "val": "bevy_input::mouse::MouseWheel" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "PinchGesture", + "fields": [ + { + "type": { + "val": "bevy_input::gestures::PinchGesture" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "RotationGesture", + "fields": [ + { + "type": { + "val": "bevy_input::gestures::RotationGesture" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "DoubleTapGesture", + "fields": [ + { + "type": { + "val": "bevy_input::gestures::DoubleTapGesture" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "PanGesture", + "fields": [ + { + "type": { + "val": "bevy_input::gestures::PanGesture" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "TouchInput", + "fields": [ + { + "type": { + "val": "bevy_input::touch::TouchInput" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "KeyboardInput", + "fields": [ + { + "type": { + "val": "bevy_input::keyboard::KeyboardInput" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "KeyboardFocusLost", + "fields": [ + { + "type": { + "val": "bevy_input::keyboard::KeyboardFocusLost" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowFocused": { + "identifier": "WindowFocused", + "crate": "bevy_window", + "path": "bevy_window::event::WindowFocused", + "documentation": " An event that indicates a window has received or lost focus.", + "layout": { + "kind": "Struct", + "name": "WindowFocused", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "focused", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowMoved": { + "identifier": "WindowMoved", + "crate": "bevy_window", + "path": "bevy_window::event::WindowMoved", + "documentation": " An event that is sent when a window is repositioned in physical pixels.", + "layout": { + "kind": "Struct", + "name": "WindowMoved", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "position", + "type": { + "val": "glam::IVec2" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowOccluded": { + "identifier": "WindowOccluded", + "crate": "bevy_window", + "path": "bevy_window::event::WindowOccluded", + "documentation": " The window has been occluded (completely hidden from view).\n\n This is different to window visibility as it depends on\n whether the window is closed, minimized, set invisible,\n or fully occluded by another window.\n\n It is the translated version of [`WindowEvent::Occluded`] from the `winit` crate.\n\n [`WindowEvent::Occluded`]: https://docs.rs/winit/latest/winit/event/enum.WindowEvent.html#variant.Occluded", + "layout": { + "kind": "Struct", + "name": "WindowOccluded", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "occluded", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowResized": { + "identifier": "WindowResized", + "crate": "bevy_window", + "path": "bevy_window::event::WindowResized", + "documentation": " A window event that is sent whenever a window's logical size has changed.", + "layout": { + "kind": "Struct", + "name": "WindowResized", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "width", + "type": { + "primitive": "f32" + } + }, + { + "name": "height", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowScaleFactorChanged": { + "identifier": "WindowScaleFactorChanged", + "crate": "bevy_window", + "path": "bevy_window::event::WindowScaleFactorChanged", + "documentation": " An event that indicates a window's scale factor has changed.", + "layout": { + "kind": "Struct", + "name": "WindowScaleFactorChanged", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "scale_factor", + "type": { + "primitive": "f64" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::event::WindowThemeChanged": { + "identifier": "WindowThemeChanged", + "crate": "bevy_window", + "path": "bevy_window::event::WindowThemeChanged", + "documentation": " An event sent when the system theme changes for a window.\n\n This event is only sent when the window is relying on the system theme to control its appearance.\n i.e. It is only sent when [`Window::window_theme`](crate::window::Window::window_theme) is `None` and the system theme changes.", + "layout": { + "kind": "Struct", + "name": "WindowThemeChanged", + "fields": [ + { + "name": "window", + "type": { + "val": "bevy_ecs::entity::Entity" + } + }, + { + "name": "theme", + "type": { + "val": "bevy_window::window::WindowTheme" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::monitor::Monitor": { + "identifier": "Monitor", + "crate": "bevy_window", + "path": "bevy_window::monitor::Monitor", + "documentation": " Represents an available monitor as reported by the user's operating system, which can be used\n to query information about the display, such as its size, position, and video modes.\n\n Each monitor corresponds to an entity and can be used to position a monitor using\n [`MonitorSelection::Entity`](`crate::window::MonitorSelection::Entity`).\n\n # Warning\n\n This component is synchronized with `winit` through `bevy_winit`, but is effectively\n read-only as `winit` does not support changing monitor properties.", + "layout": { + "kind": "Struct", + "name": "Monitor", + "fields": [ + { + "name": "name", + "type": { + "option": { + "primitive": "string" + } + } + }, + { + "name": "physical_height", + "type": { + "primitive": "u32" + } + }, + { + "name": "physical_width", + "type": { + "primitive": "u32" + } + }, + { + "name": "physical_position", + "type": { + "val": "glam::IVec2" + } + }, + { + "name": "refresh_rate_millihertz", + "type": { + "option": { + "primitive": "u32" + } + } + }, + { + "name": "scale_factor", + "type": { + "primitive": "f64" + } + }, + { + "name": "video_modes", + "type": { + "vec": { + "val": "bevy_window::monitor::VideoMode" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::monitor::PrimaryMonitor": { + "identifier": "PrimaryMonitor", + "crate": "bevy_window", + "path": "bevy_window::monitor::PrimaryMonitor", + "documentation": " A marker component for the primary monitor", + "layout": { + "kind": "Struct", + "name": "PrimaryMonitor" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::monitor::VideoMode": { + "identifier": "VideoMode", + "crate": "bevy_window", + "path": "bevy_window::monitor::VideoMode", + "documentation": " Represents a video mode that a monitor supports", + "layout": { + "kind": "Struct", + "name": "VideoMode", + "fields": [ + { + "name": "physical_size", + "type": { + "val": "glam::UVec2" + } + }, + { + "name": "bit_depth", + "type": { + "primitive": "u16" + } + }, + { + "name": "refresh_rate_millihertz", + "type": { + "primitive": "u32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::CompositeAlphaMode": { + "identifier": "CompositeAlphaMode", + "crate": "bevy_window", + "path": "bevy_window::window::CompositeAlphaMode", + "documentation": " Specifies how the alpha channel of the textures should be handled during compositing, for a [`Window`].", + "layout": [ + { + "kind": "Unit", + "name": "Auto" + }, + { + "kind": "Unit", + "name": "Opaque" + }, + { + "kind": "Unit", + "name": "PreMultiplied" + }, + { + "kind": "Unit", + "name": "PostMultiplied" + }, + { + "kind": "Unit", + "name": "Inherit" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::CursorGrabMode": { + "identifier": "CursorGrabMode", + "crate": "bevy_window", + "path": "bevy_window::window::CursorGrabMode", + "documentation": " Defines if and how the cursor is grabbed by a [`Window`].\n\n ## Platform-specific\n\n - **`macOS`** doesn't support [`CursorGrabMode::Confined`]\n - **`X11`** doesn't support [`CursorGrabMode::Locked`]\n - **`iOS/Android`** don't have cursors.\n\n Since `macOS` and `X11` don't have full [`CursorGrabMode`] support, we first try to set the grab mode that was asked for. If it doesn't work then use the alternate grab mode.", + "layout": [ + { + "kind": "Unit", + "name": "None" + }, + { + "kind": "Unit", + "name": "Confined" + }, + { + "kind": "Unit", + "name": "Locked" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::CursorOptions": { + "identifier": "CursorOptions", + "crate": "bevy_window", + "path": "bevy_window::window::CursorOptions", + "documentation": " Cursor data for a [`Window`].", + "layout": { + "kind": "Struct", + "name": "CursorOptions", + "fields": [ + { + "name": "visible", + "type": { + "primitive": "bool" + } + }, + { + "name": "grab_mode", + "type": { + "val": "bevy_window::window::CursorGrabMode" + } + }, + { + "name": "hit_test", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::EnabledButtons": { + "identifier": "EnabledButtons", + "crate": "bevy_window", + "path": "bevy_window::window::EnabledButtons", + "documentation": " Specifies which [`Window`] control buttons should be enabled.\n\n ## Platform-specific\n\n **`iOS`**, **`Android`**, and the **`Web`** do not have window control buttons.\n\n On some **`Linux`** environments these values have no effect.", + "layout": { + "kind": "Struct", + "name": "EnabledButtons", + "fields": [ + { + "name": "minimize", + "type": { + "primitive": "bool" + } + }, + { + "name": "maximize", + "type": { + "primitive": "bool" + } + }, + { + "name": "close", + "type": { + "primitive": "bool" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::InternalWindowState": { + "identifier": "InternalWindowState", + "crate": "bevy_window", + "path": "bevy_window::window::InternalWindowState", + "documentation": " Stores internal [`Window`] state that isn't directly accessible.", + "layout": { + "kind": "Struct", + "name": "InternalWindowState", + "fields": [ + { + "name": "minimize_request", + "type": { + "option": { + "primitive": "bool" + } + } + }, + { + "name": "maximize_request", + "type": { + "option": { + "primitive": "bool" + } + } + }, + { + "name": "drag_move_request", + "type": { + "primitive": "bool" + } + }, + { + "name": "drag_resize_request", + "type": { + "option": { + "val": "bevy_math::compass::CompassOctant" + } + } + }, + { + "name": "physical_cursor_position", + "type": { + "option": { + "val": "glam::DVec2" + } + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::MonitorSelection": { + "identifier": "MonitorSelection", + "crate": "bevy_window", + "path": "bevy_window::window::MonitorSelection", + "documentation": " References a screen monitor.\n\n Used when centering a [`Window`] on a monitor.", + "layout": [ + { + "kind": "Unit", + "name": "Current" + }, + { + "kind": "Unit", + "name": "Primary" + }, + { + "kind": "TupleStruct", + "name": "Index", + "fields": [ + { + "type": { + "primitive": "usize" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Entity", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::NormalizedWindowRef": { + "identifier": "NormalizedWindowRef", + "crate": "bevy_window", + "path": "bevy_window::window::NormalizedWindowRef", + "documentation": " A flattened representation of a window reference for equality/hashing purposes.\n\n For most purposes you probably want to use the unnormalized version [`WindowRef`].", + "layout": { + "kind": "TupleStruct", + "name": "NormalizedWindowRef", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::PresentMode": { + "identifier": "PresentMode", + "crate": "bevy_window", + "path": "bevy_window::window::PresentMode", + "documentation": " Presentation mode for a [`Window`].\n\n The presentation mode specifies when a frame is presented to the window. The [`Fifo`]\n option corresponds to a traditional `VSync`, where the framerate is capped by the\n display refresh rate. Both [`Immediate`] and [`Mailbox`] are low-latency and are not\n capped by the refresh rate, but may not be available on all platforms. Tearing\n may be observed with [`Immediate`] mode, but will not be observed with [`Mailbox`] or\n [`Fifo`].\n\n [`AutoVsync`] or [`AutoNoVsync`] will gracefully fallback to [`Fifo`] when unavailable.\n\n [`Immediate`] or [`Mailbox`] will panic if not supported by the platform.\n\n [`Fifo`]: PresentMode::Fifo\n [`FifoRelaxed`]: PresentMode::FifoRelaxed\n [`Immediate`]: PresentMode::Immediate\n [`Mailbox`]: PresentMode::Mailbox\n [`AutoVsync`]: PresentMode::AutoVsync\n [`AutoNoVsync`]: PresentMode::AutoNoVsync", + "layout": [ + { + "kind": "Unit", + "name": "AutoVsync" + }, + { + "kind": "Unit", + "name": "AutoNoVsync" + }, + { + "kind": "Unit", + "name": "Fifo" + }, + { + "kind": "Unit", + "name": "FifoRelaxed" + }, + { + "kind": "Unit", + "name": "Immediate" + }, + { + "kind": "Unit", + "name": "Mailbox" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::PrimaryWindow": { + "identifier": "PrimaryWindow", + "crate": "bevy_window", + "path": "bevy_window::window::PrimaryWindow", + "documentation": " Marker [`Component`] for the window considered the primary window.\n\n Currently this is assumed to only exist on 1 entity at a time.\n\n [`WindowPlugin`](crate::WindowPlugin) will spawn a [`Window`] entity\n with this component if [`primary_window`](crate::WindowPlugin::primary_window)\n is `Some`.", + "layout": { + "kind": "Struct", + "name": "PrimaryWindow" + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::ScreenEdge": { + "identifier": "ScreenEdge", + "crate": "bevy_window", + "path": "bevy_window::window::ScreenEdge", + "documentation": " The edges of a screen. Corresponds to [`winit::platform::ios::ScreenEdge`].\n\n # Platform-specific\n\n - Only used on iOS.\n\n [`winit::platform::ios::ScreenEdge`]: https://docs.rs/winit/latest/x86_64-apple-darwin/winit/platform/ios/struct.ScreenEdge.html", + "layout": [ + { + "kind": "Unit", + "name": "None" + }, + { + "kind": "Unit", + "name": "Top" + }, + { + "kind": "Unit", + "name": "Left" + }, + { + "kind": "Unit", + "name": "Bottom" + }, + { + "kind": "Unit", + "name": "Right" + }, + { + "kind": "Unit", + "name": "All" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::VideoModeSelection": { + "identifier": "VideoModeSelection", + "crate": "bevy_window", + "path": "bevy_window::window::VideoModeSelection", + "documentation": " References an exclusive fullscreen video mode.\n\n Used when setting [`WindowMode::Fullscreen`] on a window.", + "layout": [ + { + "kind": "Unit", + "name": "Current" + }, + { + "kind": "TupleStruct", + "name": "Specific", + "fields": [ + { + "type": { + "val": "bevy_window::monitor::VideoMode" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::Window": { + "identifier": "Window", + "crate": "bevy_window", + "path": "bevy_window::window::Window", + "documentation": " The defining [`Component`] for window entities,\n storing information about how it should appear and behave.\n\n Each window corresponds to an entity, and is uniquely identified by the value of their [`Entity`].\n When the [`Window`] component is added to an entity, a new window will be opened.\n When it is removed or the entity is despawned, the window will close.\n\n The primary window entity (and the corresponding window) is spawned by default\n by [`WindowPlugin`](crate::WindowPlugin) and is marked with the [`PrimaryWindow`] component.\n\n This component is synchronized with `winit` through `bevy_winit`:\n it will reflect the current state of the window and can be modified to change this state.\n\n # Example\n\n Because this component is synchronized with `winit`, it can be used to perform\n OS-integrated windowing operations. For example, here's a simple system\n to change the window mode:\n\n ```\n # use bevy_ecs::query::With;\n # use bevy_ecs::system::Query;\n # use bevy_window::{WindowMode, PrimaryWindow, Window, MonitorSelection, VideoModeSelection};\n fn change_window_mode(mut windows: Query<&mut Window, With>) {\n // Query returns one window typically.\n for mut window in windows.iter_mut() {\n window.mode =\n WindowMode::Fullscreen(MonitorSelection::Current, VideoModeSelection::Current);\n }\n }\n ```", + "layout": { + "kind": "Struct", + "name": "Window", + "fields": [ + { + "name": "present_mode", + "type": { + "val": "bevy_window::window::PresentMode" + } + }, + { + "name": "mode", + "type": { + "val": "bevy_window::window::WindowMode" + } + }, + { + "name": "position", + "type": { + "val": "bevy_window::window::WindowPosition" + } + }, + { + "name": "resolution", + "type": { + "val": "bevy_window::window::WindowResolution" + } + }, + { + "name": "title", + "type": { + "primitive": "string" + } + }, + { + "name": "name", + "type": { + "option": { + "primitive": "string" + } + } + }, + { + "name": "composite_alpha_mode", + "type": { + "val": "bevy_window::window::CompositeAlphaMode" + } + }, + { + "name": "resize_constraints", + "type": { + "val": "bevy_window::window::WindowResizeConstraints" + } + }, + { + "name": "resizable", + "type": { + "primitive": "bool" + } + }, + { + "name": "enabled_buttons", + "type": { + "val": "bevy_window::window::EnabledButtons" + } + }, + { + "name": "decorations", + "type": { + "primitive": "bool" + } + }, + { + "name": "transparent", + "type": { + "primitive": "bool" + } + }, + { + "name": "focused", + "type": { + "primitive": "bool" + } + }, + { + "name": "window_level", + "type": { + "val": "bevy_window::window::WindowLevel" + } + }, + { + "name": "canvas", + "type": { + "option": { + "primitive": "string" + } + } + }, + { + "name": "fit_canvas_to_parent", + "type": { + "primitive": "bool" + } + }, + { + "name": "prevent_default_event_handling", + "type": { + "primitive": "bool" + } + }, + { + "name": "internal", + "type": { + "val": "bevy_window::window::InternalWindowState" + } + }, + { + "name": "ime_enabled", + "type": { + "primitive": "bool" + } + }, + { + "name": "ime_position", + "type": { + "val": "glam::Vec2" + } + }, + { + "name": "window_theme", + "type": { + "option": { + "val": "bevy_window::window::WindowTheme" + } + } + }, + { + "name": "visible", + "type": { + "primitive": "bool" + } + }, + { + "name": "skip_taskbar", + "type": { + "primitive": "bool" + } + }, + { + "name": "clip_children", + "type": { + "primitive": "bool" + } + }, + { + "name": "desired_maximum_frame_latency", + "type": { + "option": { + "val": "core::num::NonZeroU32" + } + } + }, + { + "name": "recognize_pinch_gesture", + "type": { + "primitive": "bool" + } + }, + { + "name": "recognize_rotation_gesture", + "type": { + "primitive": "bool" + } + }, + { + "name": "recognize_doubletap_gesture", + "type": { + "primitive": "bool" + } + }, + { + "name": "recognize_pan_gesture", + "type": { + "option": { + "tuple": [ + { + "primitive": "u8" + }, + { + "primitive": "u8" + } + ] + } + } + }, + { + "name": "movable_by_window_background", + "type": { + "primitive": "bool" + } + }, + { + "name": "fullsize_content_view", + "type": { + "primitive": "bool" + } + }, + { + "name": "has_shadow", + "type": { + "primitive": "bool" + } + }, + { + "name": "titlebar_shown", + "type": { + "primitive": "bool" + } + }, + { + "name": "titlebar_transparent", + "type": { + "primitive": "bool" + } + }, + { + "name": "titlebar_show_title", + "type": { + "primitive": "bool" + } + }, + { + "name": "titlebar_show_buttons", + "type": { + "primitive": "bool" + } + }, + { + "name": "prefers_home_indicator_hidden", + "type": { + "primitive": "bool" + } + }, + { + "name": "prefers_status_bar_hidden", + "type": { + "primitive": "bool" + } + }, + { + "name": "preferred_screen_edges_deferring_system_gestures", + "type": { + "val": "bevy_window::window::ScreenEdge" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::WindowLevel": { + "identifier": "WindowLevel", + "crate": "bevy_window", + "path": "bevy_window::window::WindowLevel", + "documentation": " Specifies where a [`Window`] should appear relative to other overlapping windows (on top or under) .\n\n Levels are groups of windows with respect to their z-position.\n\n The relative ordering between windows in different window levels is fixed.\n The z-order of windows within the same window level may change dynamically on user interaction.\n\n ## Platform-specific\n\n - **iOS / Android / Web / Wayland:** Unsupported.", + "layout": [ + { + "kind": "Unit", + "name": "AlwaysOnBottom" + }, + { + "kind": "Unit", + "name": "Normal" + }, + { + "kind": "Unit", + "name": "AlwaysOnTop" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::WindowMode": { + "identifier": "WindowMode", + "crate": "bevy_window", + "path": "bevy_window::window::WindowMode", + "documentation": " Defines the way a [`Window`] is displayed.", + "layout": [ + { + "kind": "Unit", + "name": "Windowed" + }, + { + "kind": "TupleStruct", + "name": "BorderlessFullscreen", + "fields": [ + { + "type": { + "val": "bevy_window::window::MonitorSelection" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Fullscreen", + "fields": [ + { + "type": { + "val": "bevy_window::window::MonitorSelection" + } + }, + { + "type": { + "val": "bevy_window::window::VideoModeSelection" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::WindowPosition": { + "identifier": "WindowPosition", + "crate": "bevy_window", + "path": "bevy_window::window::WindowPosition", + "documentation": " Defines where a [`Window`] should be placed on the screen.", + "layout": [ + { + "kind": "Unit", + "name": "Automatic" + }, + { + "kind": "TupleStruct", + "name": "Centered", + "fields": [ + { + "type": { + "val": "bevy_window::window::MonitorSelection" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "At", + "fields": [ + { + "type": { + "val": "glam::IVec2" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::WindowRef": { + "identifier": "WindowRef", + "crate": "bevy_window", + "path": "bevy_window::window::WindowRef", + "documentation": " Reference to a [`Window`], whether it be a direct link to a specific entity or\n a more vague defaulting choice.", + "layout": [ + { + "kind": "Unit", + "name": "Primary" + }, + { + "kind": "TupleStruct", + "name": "Entity", + "fields": [ + { + "type": { + "val": "bevy_ecs::entity::Entity" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::WindowResizeConstraints": { + "identifier": "WindowResizeConstraints", + "crate": "bevy_window", + "path": "bevy_window::window::WindowResizeConstraints", + "documentation": " The size limits on a [`Window`].\n\n These values are measured in logical pixels (see [`WindowResolution`]), so the user's\n scale factor does affect the size limits on the window.\n\n Please note that if the window is resizable, then when the window is\n maximized it may have a size outside of these limits. The functionality\n required to disable maximizing is not yet exposed by winit.", + "layout": { + "kind": "Struct", + "name": "WindowResizeConstraints", + "fields": [ + { + "name": "min_width", + "type": { + "primitive": "f32" + } + }, + { + "name": "min_height", + "type": { + "primitive": "f32" + } + }, + { + "name": "max_width", + "type": { + "primitive": "f32" + } + }, + { + "name": "max_height", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::WindowResolution": { + "identifier": "WindowResolution", + "crate": "bevy_window", + "path": "bevy_window::window::WindowResolution", + "documentation": " Controls the size of a [`Window`]\n\n ## Physical, logical and requested sizes\n\n There are three sizes associated with a window:\n - the physical size,\n which represents the actual height and width in physical pixels\n the window occupies on the monitor,\n - the logical size,\n which represents the size that should be used to scale elements\n inside the window, measured in logical pixels,\n - the requested size,\n measured in logical pixels, which is the value submitted\n to the API when creating the window, or requesting that it be resized.\n\n ## Scale factor\n\n The reason logical size and physical size are separated and can be different\n is to account for the cases where:\n - several monitors have different pixel densities,\n - the user has set up a pixel density preference in its operating system,\n - the Bevy `App` has specified a specific scale factor between both.\n\n The factor between physical size and logical size can be retrieved with\n [`WindowResolution::scale_factor`].\n\n For the first two cases, a scale factor is set automatically by the operating\n system through the window backend. You can get it with\n [`WindowResolution::base_scale_factor`].\n\n For the third case, you can override this automatic scale factor with\n [`WindowResolution::set_scale_factor_override`].\n\n ## Requested and obtained sizes\n\n The logical size should be equal to the requested size after creating/resizing,\n when possible.\n The reason the requested size and logical size might be different\n is because the corresponding physical size might exceed limits (either the\n size limits of the monitor, or limits defined in [`WindowResizeConstraints`]).\n\n Note: The requested size is not kept in memory, for example requesting a size\n too big for the screen, making the logical size different from the requested size,\n and then setting a scale factor that makes the previous requested size within\n the limits of the screen will not get back that previous requested size.", + "layout": { + "kind": "Struct", + "name": "WindowResolution", + "fields": [ + { + "name": "physical_width", + "type": { + "primitive": "u32" + } + }, + { + "name": "physical_height", + "type": { + "primitive": "u32" + } + }, + { + "name": "scale_factor_override", + "type": { + "option": { + "primitive": "f32" + } + } + }, + { + "name": "scale_factor", + "type": { + "primitive": "f32" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_window::window::WindowTheme": { + "identifier": "WindowTheme", + "crate": "bevy_window", + "path": "bevy_window::window::WindowTheme", + "documentation": " The [`Window`] theme variant to use.", + "layout": [ + { + "kind": "Unit", + "name": "Light" + }, + { + "kind": "Unit", + "name": "Dark" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_winit::WinitUserEvent": { + "identifier": "WinitUserEvent", + "crate": "bevy_winit", + "path": "bevy_winit::WinitUserEvent", + "documentation": " Events that can be sent to perform actions inside the winit event loop.\n\n Sent via the [`EventLoopProxyWrapper`] resource.\n\n # Example\n\n ```\n # use bevy_ecs::prelude::*;\n # use bevy_winit::{EventLoopProxyWrapper, WinitUserEvent};\n fn wakeup_system(event_loop_proxy: Res) -> Result {\n event_loop_proxy.send_event(WinitUserEvent::WakeUp)?;\n\n Ok(())\n }\n ```", + "layout": [ + { + "kind": "Unit", + "name": "WakeUp" + }, + { + "kind": "Unit", + "name": "WindowAdded" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroI128": { + "identifier": "NonZeroI128", + "crate": "core", + "path": "core::num::NonZeroI128", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroI16": { + "identifier": "NonZeroI16", + "crate": "core", + "path": "core::num::NonZeroI16", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroI32": { + "identifier": "NonZeroI32", + "crate": "core", + "path": "core::num::NonZeroI32", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroI64": { + "identifier": "NonZeroI64", + "crate": "core", + "path": "core::num::NonZeroI64", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroI8": { + "identifier": "NonZeroI8", + "crate": "core", + "path": "core::num::NonZeroI8", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroIsize": { + "identifier": "NonZeroIsize", + "crate": "core", + "path": "core::num::NonZeroIsize", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroU128": { + "identifier": "NonZeroU128", + "crate": "core", + "path": "core::num::NonZeroU128", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroU16": { + "identifier": "NonZeroU16", + "crate": "core", + "path": "core::num::NonZeroU16", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroU32": { + "identifier": "NonZeroU32", + "crate": "core", + "path": "core::num::NonZeroU32", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroU64": { + "identifier": "NonZeroU64", + "crate": "core", + "path": "core::num::NonZeroU64", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroU8": { + "identifier": "NonZeroU8", + "crate": "core", + "path": "core::num::NonZeroU8", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "core::num::NonZeroUsize": { + "identifier": "NonZeroUsize", + "crate": "core", + "path": "core::num::NonZeroUsize", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "alloc::borrow::Cow": { + "identifier": "Cow", + "crate": "alloc", + "path": "alloc::borrow::Cow", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::Handle<()>": { + "identifier": "Handle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::Handle<()>", + "generics": [ + { + "type_id": "()", + "name": "A" + } + ], + "documentation": " A handle to a specific [`Asset`] of type `A`. Handles act as abstract \"references\" to\n assets, whose data are stored in the [`Assets
`](crate::prelude::Assets) resource,\n avoiding the need to store multiple copies of the same data.\n\n If a [`Handle`] is [`Handle::Strong`], the [`Asset`] will be kept\n alive until the [`Handle`] is dropped. If a [`Handle`] is [`Handle::Uuid`], it does not necessarily reference a live [`Asset`],\n nor will it keep assets alive.\n\n Modifying a *handle* will change which existing asset is referenced, but modifying the *asset*\n (by mutating the [`Assets`](crate::prelude::Assets) resource) will change the asset for all handles referencing it.\n\n [`Handle`] can be cloned. If a [`Handle::Strong`] is cloned, the referenced [`Asset`] will not be freed until _all_ instances\n of the [`Handle`] are dropped.\n\n [`Handle::Strong`], via [`StrongHandle`] also provides access to useful [`Asset`] metadata, such as the [`AssetPath`] (if it exists).", + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Uuid", + "fields": [ + { + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::Handle": { + "identifier": "Handle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::Handle", + "generics": [ + { + "type_id": "bevy_image::image::Image", + "name": "A" + } + ], + "documentation": " A handle to a specific [`Asset`] of type `A`. Handles act as abstract \"references\" to\n assets, whose data are stored in the [`Assets`](crate::prelude::Assets) resource,\n avoiding the need to store multiple copies of the same data.\n\n If a [`Handle`] is [`Handle::Strong`], the [`Asset`] will be kept\n alive until the [`Handle`] is dropped. If a [`Handle`] is [`Handle::Uuid`], it does not necessarily reference a live [`Asset`],\n nor will it keep assets alive.\n\n Modifying a *handle* will change which existing asset is referenced, but modifying the *asset*\n (by mutating the [`Assets`](crate::prelude::Assets) resource) will change the asset for all handles referencing it.\n\n [`Handle`] can be cloned. If a [`Handle::Strong`] is cloned, the referenced [`Asset`] will not be freed until _all_ instances\n of the [`Handle`] are dropped.\n\n [`Handle::Strong`], via [`StrongHandle`] also provides access to useful [`Asset`] metadata, such as the [`AssetPath`] (if it exists).", + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Uuid", + "fields": [ + { + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::Handle": { + "identifier": "Handle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::Handle", + "generics": [ + { + "type_id": "bevy_image::texture_atlas::TextureAtlasLayout", + "name": "A" + } + ], + "documentation": " A handle to a specific [`Asset`] of type `A`. Handles act as abstract \"references\" to\n assets, whose data are stored in the [`Assets`](crate::prelude::Assets) resource,\n avoiding the need to store multiple copies of the same data.\n\n If a [`Handle`] is [`Handle::Strong`], the [`Asset`] will be kept\n alive until the [`Handle`] is dropped. If a [`Handle`] is [`Handle::Uuid`], it does not necessarily reference a live [`Asset`],\n nor will it keep assets alive.\n\n Modifying a *handle* will change which existing asset is referenced, but modifying the *asset*\n (by mutating the [`Assets`](crate::prelude::Assets) resource) will change the asset for all handles referencing it.\n\n [`Handle`] can be cloned. If a [`Handle::Strong`] is cloned, the referenced [`Asset`] will not be freed until _all_ instances\n of the [`Handle`] are dropped.\n\n [`Handle::Strong`], via [`StrongHandle`] also provides access to useful [`Asset`] metadata, such as the [`AssetPath`] (if it exists).", + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Uuid", + "fields": [ + { + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::Handle": { + "identifier": "Handle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::Handle", + "generics": [ + { + "type_id": "bevy_mesh::mesh::Mesh", + "name": "A" + } + ], + "documentation": " A handle to a specific [`Asset`] of type `A`. Handles act as abstract \"references\" to\n assets, whose data are stored in the [`Assets`](crate::prelude::Assets) resource,\n avoiding the need to store multiple copies of the same data.\n\n If a [`Handle`] is [`Handle::Strong`], the [`Asset`] will be kept\n alive until the [`Handle`] is dropped. If a [`Handle`] is [`Handle::Uuid`], it does not necessarily reference a live [`Asset`],\n nor will it keep assets alive.\n\n Modifying a *handle* will change which existing asset is referenced, but modifying the *asset*\n (by mutating the [`Assets`](crate::prelude::Assets) resource) will change the asset for all handles referencing it.\n\n [`Handle`] can be cloned. If a [`Handle::Strong`] is cloned, the referenced [`Asset`] will not be freed until _all_ instances\n of the [`Handle`] are dropped.\n\n [`Handle::Strong`], via [`StrongHandle`] also provides access to useful [`Asset`] metadata, such as the [`AssetPath`] (if it exists).", + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Uuid", + "fields": [ + { + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::Handle": { + "identifier": "Handle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::Handle", + "generics": [ + { + "type_id": "bevy_render::storage::ShaderStorageBuffer", + "name": "A" + } + ], + "documentation": " A handle to a specific [`Asset`] of type `A`. Handles act as abstract \"references\" to\n assets, whose data are stored in the [`Assets`](crate::prelude::Assets) resource,\n avoiding the need to store multiple copies of the same data.\n\n If a [`Handle`] is [`Handle::Strong`], the [`Asset`] will be kept\n alive until the [`Handle`] is dropped. If a [`Handle`] is [`Handle::Uuid`], it does not necessarily reference a live [`Asset`],\n nor will it keep assets alive.\n\n Modifying a *handle* will change which existing asset is referenced, but modifying the *asset*\n (by mutating the [`Assets`](crate::prelude::Assets) resource) will change the asset for all handles referencing it.\n\n [`Handle`] can be cloned. If a [`Handle::Strong`] is cloned, the referenced [`Asset`] will not be freed until _all_ instances\n of the [`Handle`] are dropped.\n\n [`Handle::Strong`], via [`StrongHandle`] also provides access to useful [`Asset`] metadata, such as the [`AssetPath`] (if it exists).", + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Uuid", + "fields": [ + { + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::Handle": { + "identifier": "Handle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::Handle", + "generics": [ + { + "type_id": "bevy_sprite_render::mesh2d::color_material::ColorMaterial", + "name": "A" + } + ], + "documentation": " A handle to a specific [`Asset`] of type `A`. Handles act as abstract \"references\" to\n assets, whose data are stored in the [`Assets`](crate::prelude::Assets) resource,\n avoiding the need to store multiple copies of the same data.\n\n If a [`Handle`] is [`Handle::Strong`], the [`Asset`] will be kept\n alive until the [`Handle`] is dropped. If a [`Handle`] is [`Handle::Uuid`], it does not necessarily reference a live [`Asset`],\n nor will it keep assets alive.\n\n Modifying a *handle* will change which existing asset is referenced, but modifying the *asset*\n (by mutating the [`Assets`](crate::prelude::Assets) resource) will change the asset for all handles referencing it.\n\n [`Handle`] can be cloned. If a [`Handle::Strong`] is cloned, the referenced [`Asset`] will not be freed until _all_ instances\n of the [`Handle`] are dropped.\n\n [`Handle::Strong`], via [`StrongHandle`] also provides access to useful [`Asset`] metadata, such as the [`AssetPath`] (if it exists).", + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Uuid", + "fields": [ + { + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::handle::Handle": { + "identifier": "Handle", + "crate": "bevy_asset", + "path": "bevy_asset::handle::Handle", + "generics": [ + { + "type_id": "bevy_sprite_render::mesh2d::wireframe2d::Wireframe2dMaterial", + "name": "A" + } + ], + "documentation": " A handle to a specific [`Asset`] of type `A`. Handles act as abstract \"references\" to\n assets, whose data are stored in the [`Assets`](crate::prelude::Assets) resource,\n avoiding the need to store multiple copies of the same data.\n\n If a [`Handle`] is [`Handle::Strong`], the [`Asset`] will be kept\n alive until the [`Handle`] is dropped. If a [`Handle`] is [`Handle::Uuid`], it does not necessarily reference a live [`Asset`],\n nor will it keep assets alive.\n\n Modifying a *handle* will change which existing asset is referenced, but modifying the *asset*\n (by mutating the [`Assets`](crate::prelude::Assets) resource) will change the asset for all handles referencing it.\n\n [`Handle`] can be cloned. If a [`Handle::Strong`] is cloned, the referenced [`Asset`] will not be freed until _all_ instances\n of the [`Handle`] are dropped.\n\n [`Handle::Strong`], via [`StrongHandle`] also provides access to useful [`Asset`] metadata, such as the [`AssetPath`] (if it exists).", + "layout": [ + { + "kind": "TupleStruct", + "name": "Strong", + "fields": [ + { + "type": { + "val": "bevy_platform::sync::Arc" + } + } + ] + }, + { + "kind": "TupleStruct", + "name": "Uuid", + "fields": [ + { + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::id::AssetId": { + "identifier": "AssetId", + "crate": "bevy_asset", + "path": "bevy_asset::id::AssetId", + "generics": [ + { + "type_id": "bevy_image::image::Image", + "name": "A" + } + ], + "documentation": " A unique runtime-only identifier for an [`Asset`]. This is cheap to [`Copy`]/[`Clone`] and is not directly tied to the\n lifetime of the Asset. This means it _can_ point to an [`Asset`] that no longer exists.\n\n For an identifier tied to the lifetime of an asset, see [`Handle`](`crate::Handle`).\n\n For an \"untyped\" / \"generic-less\" id, see [`UntypedAssetId`].", + "layout": [ + { + "kind": "Struct", + "name": "Index", + "fields": [ + { + "name": "index", + "type": { + "val": "bevy_asset::assets::AssetIndex" + } + } + ] + }, + { + "kind": "Struct", + "name": "Uuid", + "fields": [ + { + "name": "uuid", + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::id::AssetId": { + "identifier": "AssetId", + "crate": "bevy_asset", + "path": "bevy_asset::id::AssetId", + "generics": [ + { + "type_id": "bevy_image::texture_atlas::TextureAtlasLayout", + "name": "A" + } + ], + "documentation": " A unique runtime-only identifier for an [`Asset`]. This is cheap to [`Copy`]/[`Clone`] and is not directly tied to the\n lifetime of the Asset. This means it _can_ point to an [`Asset`] that no longer exists.\n\n For an identifier tied to the lifetime of an asset, see [`Handle`](`crate::Handle`).\n\n For an \"untyped\" / \"generic-less\" id, see [`UntypedAssetId`].", + "layout": [ + { + "kind": "Struct", + "name": "Index", + "fields": [ + { + "name": "index", + "type": { + "val": "bevy_asset::assets::AssetIndex" + } + } + ] + }, + { + "kind": "Struct", + "name": "Uuid", + "fields": [ + { + "name": "uuid", + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_asset::id::AssetId": { + "identifier": "AssetId", + "crate": "bevy_asset", + "path": "bevy_asset::id::AssetId", + "generics": [ + { + "type_id": "bevy_mod_scripting_asset::script_asset::ScriptAsset", + "name": "A" + } + ], + "documentation": " A unique runtime-only identifier for an [`Asset`]. This is cheap to [`Copy`]/[`Clone`] and is not directly tied to the\n lifetime of the Asset. This means it _can_ point to an [`Asset`] that no longer exists.\n\n For an identifier tied to the lifetime of an asset, see [`Handle`](`crate::Handle`).\n\n For an \"untyped\" / \"generic-less\" id, see [`UntypedAssetId`].", + "layout": [ + { + "kind": "Struct", + "name": "Index", + "fields": [ + { + "name": "index", + "type": { + "val": "bevy_asset::assets::AssetIndex" + } + } + ] + }, + { + "kind": "Struct", + "name": "Uuid", + "fields": [ + { + "name": "uuid", + "type": { + "val": "uuid::Uuid" + } + } + ] + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_ecs::entity::hash_map::EntityHashMap": { + "identifier": "EntityHashMap", + "crate": "bevy_ecs", + "path": "bevy_ecs::entity::hash_map::EntityHashMap", + "generics": [ + { + "type_id": "bevy_input_focus::directional_navigation::NavNeighbors", + "name": "V" + } + ], + "documentation": " A [`HashMap`] pre-configured to use [`EntityHash`] hashing.", + "layout": { + "kind": "TupleStruct", + "name": "EntityHashMap", + "fields": [ + { + "type": { + "hashMap": [ + { + "val": "bevy_ecs::entity::Entity" + }, + { + "val": "bevy_input_focus::directional_navigation::NavNeighbors" + } + ] + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::axis::Axis": { + "identifier": "Axis", + "crate": "bevy_input", + "path": "bevy_input::axis::Axis", + "generics": [ + { + "type_id": "bevy_input::gamepad::GamepadInput", + "name": "T" + } + ], + "documentation": " Stores the position data of the input devices of type `T`.\n\n The values are stored as `f32`s, using [`Axis::set`].\n Use [`Axis::get`] to retrieve the value clamped between [`Axis::MIN`] and [`Axis::MAX`]\n inclusive, or unclamped using [`Axis::get_unclamped`].", + "layout": { + "kind": "Struct", + "name": "Axis", + "fields": [ + { + "name": "axis_data", + "type": { + "hashMap": [ + { + "val": "bevy_input::gamepad::GamepadInput" + }, + { + "primitive": "f32" + } + ] + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_input::button_input::ButtonInput": { + "identifier": "ButtonInput", + "crate": "bevy_input", + "path": "bevy_input::button_input::ButtonInput", + "generics": [ + { + "type_id": "bevy_input::gamepad::GamepadButton", + "name": "T" + } + ], + "documentation": " A \"press-able\" input of type `T`.\n\n ## Usage\n\n This type can be used as a resource to keep the current state of an input, by reacting to\n events from the input. For a given input value:\n\n * [`ButtonInput::pressed`] will return `true` between a press and a release event.\n * [`ButtonInput::just_pressed`] will return `true` for one frame after a press event.\n * [`ButtonInput::just_released`] will return `true` for one frame after a release event.\n\n ## Multiple systems\n\n In case multiple systems are checking for [`ButtonInput::just_pressed`] or [`ButtonInput::just_released`]\n but only one should react, for example when modifying a\n [`Resource`], you should consider clearing the input state, either by:\n\n * Using [`ButtonInput::clear_just_pressed`] or [`ButtonInput::clear_just_released`] instead.\n * Calling [`ButtonInput::clear`] or [`ButtonInput::reset`] immediately after the state change.\n\n ## Performance\n\n For all operations, the following conventions are used:\n - **n** is the number of stored inputs.\n - **m** is the number of input arguments passed to the method.\n - **\\***-suffix denotes an amortized cost.\n - **~**-suffix denotes an expected cost.\n\n See Rust's [std::collections doc on performance](https://doc.rust-lang.org/std/collections/index.html#performance) for more details on the conventions used here.\n\n | **[`ButtonInput`] operations** | **Computational complexity** |\n |-----------------------------------|------------------------------------|\n | [`ButtonInput::any_just_pressed`] | *O*(m)~ |\n | [`ButtonInput::any_just_released`] | *O*(m)~ |\n | [`ButtonInput::any_pressed`] | *O*(m)~ |\n | [`ButtonInput::get_just_pressed`] | *O*(n) |\n | [`ButtonInput::get_just_released`] | *O*(n) |\n | [`ButtonInput::get_pressed`] | *O*(n) |\n | [`ButtonInput::just_pressed`] | *O*(1)~ |\n | [`ButtonInput::just_released`] | *O*(1)~ |\n | [`ButtonInput::pressed`] | *O*(1)~ |\n | [`ButtonInput::press`] | *O*(1)~* |\n | [`ButtonInput::release`] | *O*(1)~* |\n | [`ButtonInput::release_all`] | *O*(n)~* |\n | [`ButtonInput::clear_just_pressed`] | *O*(1)~ |\n | [`ButtonInput::clear_just_released`] | *O*(1)~ |\n | [`ButtonInput::reset_all`] | *O*(n) |\n | [`ButtonInput::clear`] | *O*(n) |\n\n ## Window focus\n\n `ButtonInput` is tied to window focus. For example, if the user holds a button\n while the window loses focus, [`ButtonInput::just_released`] will be triggered. Similarly if the window\n regains focus, [`ButtonInput::just_pressed`] will be triggered.\n\n `ButtonInput` is independent of window focus.\n\n ## Examples\n\n Reading and checking against the current set of pressed buttons:\n ```no_run\n # use bevy_app::{App, NoopPluginGroup as DefaultPlugins, Update};\n # use bevy_ecs::{prelude::{IntoScheduleConfigs, Res, Resource, resource_changed}, schedule::SystemCondition};\n # use bevy_input::{ButtonInput, prelude::{KeyCode, MouseButton}};\n\n fn main() {\n App::new()\n .add_plugins(DefaultPlugins)\n .add_systems(\n Update,\n print_mouse.run_if(resource_changed::>),\n )\n .add_systems(\n Update,\n print_keyboard.run_if(resource_changed::>),\n )\n .run();\n }\n\n fn print_mouse(mouse: Res>) {\n println!(\"Mouse: {:?}\", mouse.get_pressed().collect::>());\n }\n\n fn print_keyboard(keyboard: Res>) {\n if keyboard.any_pressed([KeyCode::ControlLeft, KeyCode::ControlRight])\n && keyboard.any_pressed([KeyCode::AltLeft, KeyCode::AltRight])\n && keyboard.any_pressed([KeyCode::ShiftLeft, KeyCode::ShiftRight])\n && keyboard.any_pressed([KeyCode::SuperLeft, KeyCode::SuperRight])\n && keyboard.pressed(KeyCode::KeyL)\n {\n println!(\"On Windows this opens LinkedIn.\");\n } else {\n println!(\"keyboard: {:?}\", keyboard.get_pressed().collect::>());\n }\n }\n ```\n\n ## Note\n\n When adding this resource for a new input type, you should:\n\n * Call the [`ButtonInput::press`] method for each press event.\n * Call the [`ButtonInput::release`] method for each release event.\n * Call the [`ButtonInput::clear`] method at each frame start, before processing events.\n\n Note: Calling `clear` from a [`ResMut`] will trigger change detection.\n It may be preferable to use [`DetectChangesMut::bypass_change_detection`]\n to avoid causing the resource to always be marked as changed.\n\n [`ResMut`]: bevy_ecs::system::ResMut\n [`DetectChangesMut::bypass_change_detection`]: bevy_ecs::change_detection::DetectChangesMut::bypass_change_detection", + "layout": { + "kind": "Struct", + "name": "ButtonInput", + "fields": [ + { + "name": "pressed", + "type": { + "val": "bevy_platform::collections::HashSet" + } + }, + { + "name": "just_pressed", + "type": { + "val": "bevy_platform::collections::HashSet" + } + }, + { + "name": "just_released", + "type": { + "val": "bevy_platform::collections::HashSet" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": true, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_mesh::mesh::MeshExtractableData": { + "identifier": "MeshExtractableData", + "crate": "bevy_mesh", + "path": "bevy_mesh::mesh::MeshExtractableData", + "generics": [ + { + "type_id": "bevy_mesh::index::Indices", + "name": "T" + } + ], + "layout": [ + { + "kind": "TupleStruct", + "name": "Data", + "fields": [ + { + "type": { + "val": "bevy_mesh::index::Indices" + } + } + ] + }, + { + "kind": "Unit", + "name": "NoData" + }, + { + "kind": "Unit", + "name": "ExtractedToRenderWorld" + } + ], + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_platform::sync::Arc": { + "identifier": "Arc", + "crate": "bevy_platform", + "path": "bevy_platform::sync::Arc", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_platform::sync::Arc": { + "identifier": "Arc", + "crate": "bevy_platform", + "path": "bevy_platform::sync::Arc", + "layout": null, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": false, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_sprite_render::mesh2d::material::MeshMaterial2d": { + "identifier": "MeshMaterial2d", + "crate": "bevy_sprite_render", + "path": "bevy_sprite_render::mesh2d::material::MeshMaterial2d", + "generics": [ + { + "type_id": "bevy_sprite_render::mesh2d::color_material::ColorMaterial", + "name": "M" + } + ], + "documentation": " A [material](Material2d) used for rendering a [`Mesh2d`].\n\n See [`Material2d`] for general information about 2D materials and how to implement your own materials.\n\n # Example\n\n ```\n # use bevy_sprite_render::{ColorMaterial, MeshMaterial2d};\n # use bevy_ecs::prelude::*;\n # use bevy_mesh::{Mesh, Mesh2d};\n # use bevy_color::palettes::basic::RED;\n # use bevy_asset::Assets;\n # use bevy_math::primitives::Circle;\n #\n // Spawn an entity with a mesh using `ColorMaterial`.\n fn setup(\n mut commands: Commands,\n mut meshes: ResMut>,\n mut materials: ResMut>,\n ) {\n commands.spawn((\n Mesh2d(meshes.add(Circle::new(50.0))),\n MeshMaterial2d(materials.add(ColorMaterial::from_color(RED))),\n ));\n }\n ```\n\n [`MeshMaterial2d`]: crate::MeshMaterial2d", + "layout": { + "kind": "TupleStruct", + "name": "MeshMaterial2d", + "fields": [ + { + "type": { + "val": "bevy_asset::handle::Handle" + } + } + ] + }, + "generated": false, + "insignificance": 1000, + "metadata": { + "is_component": true, + "is_resource": false, + "is_reflect": true, + "mapped_to_primitive_kind": null + } + }, + "bevy_time::time::Time<()>": { + "identifier": "Time", + "crate": "bevy_time", + "path": "bevy_time::time::Time<()>", + "generics": [ + { + "type_id": "()", + "name": "T" + } + ], + "documentation": " A generic clock resource that tracks how much it has advanced since its\n previous update and since its creation.\n\n Multiple instances of this resource are inserted automatically by\n [`TimePlugin`](crate::TimePlugin):\n\n - [`Time`](crate::real::Real) tracks real wall-clock time elapsed.\n - [`Time`](crate::virt::Virtual) tracks virtual game time that may\n be paused or scaled.\n - [`Time`](crate::fixed::Fixed) tracks fixed timesteps based on\n virtual time.\n - [`Time`] is a generic clock that corresponds to \"current\" or \"default\"\n time for systems. It contains [`Time`](crate::virt::Virtual)\n except inside the [`FixedMain`](bevy_app::FixedMain) schedule when it\n contains [`Time`](crate::fixed::Fixed).\n\n The time elapsed since the previous time this clock was advanced is saved as\n [`delta()`](Time::delta) and the total amount of time the clock has advanced\n is saved as [`elapsed()`](Time::elapsed). Both are represented as exact\n [`Duration`] values with fixed nanosecond precision. The clock does not\n support time moving backwards, but it can be updated with [`Duration::ZERO`]\n which will set [`delta()`](Time::delta) to zero.\n\n These values are also available in seconds as `f32` via\n [`delta_secs()`](Time::delta_secs) and\n [`elapsed_secs()`](Time::elapsed_secs), and also in seconds as `f64`\n via [`delta_secs_f64()`](Time::delta_secs_f64) and\n [`elapsed_secs_f64()`](Time::elapsed_secs_f64).\n\n Since [`elapsed_secs()`](Time::elapsed_secs) will grow constantly and\n is `f32`, it will exhibit gradual precision loss. For applications that\n require an `f32` value but suffer from gradual precision loss there is\n [`elapsed_secs_wrapped()`](Time::elapsed_secs_wrapped) available. The\n same wrapped value is also available as [`Duration`] and `f64` for\n consistency. The wrap period is by default 1 hour, and can be set by\n [`set_wrap_period()`](Time::set_wrap_period).\n\n # Accessing clocks\n\n By default, any systems requiring current [`delta()`](Time::delta) or\n [`elapsed()`](Time::elapsed) should use `Res