pub struct Celestial {Show 16 fields
pub radius: f32,
pub screen_error: f32,
pub chunk_res: i64,
pub tile_res: i64,
pub max_depth: i64,
pub vram_budget_gib: f32,
pub geomorph: bool,
pub lod_colors: bool,
pub debug_log: bool,
pub horizon_cull: bool,
pub cull_height_margin: f32,
pub max_bakes_per_frame: i64,
pub recompute_every_frame: bool,
pub scatter_layers: Array<Gd<CesScatterLayer>>,
pub builder: Option<Gd<CesBuilder>>,
pub auto_add_builder: bool,
/* private fields */
}Expand description
A procedural planet: the Node3D you add to a Godot scene.
It owns the whole terrain pipeline — every frame it selects a screen-space-error
cut of the quadtree around the active camera, realizes the newly-visible chunks
on the GPU, and draws them from an indirect MultiMesh child. What the surface
looks like comes from the CesBuilder resource in builder (terrain +
ocean); vegetation and props come from the CesScatterLayer resources in
scatter_layers.
The exported properties below are all live: editing one in the inspector (or from GDScript) reshades or rebuilds as needed, with no scene reload.
Fields§
§radius: f32Radius of the undisplaced sphere, in world units — the scale of the whole
planet. Terrain displaces around it, so the rendered ground can sit above or
below this radius (see ground_radius_at). Changing it re-realizes every
resident chunk. Default 1000.
screen_error: f32Target screen-space error, in normalized screen units (chunk edge over distance): the LOD cut is chosen so no chunk exceeds it. Lower = sharper terrain, but more resident chunks, more bakes and more VRAM pressure; higher = coarser and cheaper. Default 0.02 (range 0.005–0.5).
chunk_res: i64Geometry grid of one chunk: chunk_res segments per chunk edge, so each
chunk carries chunk_res² triangles. Raising it makes each chunk denser
(fewer, larger chunks reach the same screen_error) at a higher per-slot
vertex-pool cost. Default 16 (range 2–32).
tile_res: i64Phase 4: per-chunk detail-tile resolution. Colour + normal detail is baked
at tile_res × tile_res per chunk (independent of chunk_res) and sampled
per-pixel, so surface shading is crisper than the geometry grid. NOTE: the
detail atlas costs tile_res² × 16 B per resident chunk (detail atlases + surface buffers), so a larger
tile_res means fewer chunks fit in vram_budget_gib (see effective_budget).
max_depth: i64Hard cap on quadtree subdivision, i.e. the finest terrain the camera can ever
reach: below this depth the cut stops refining even if screen_error is not
met, so the ground goes blocky as you get close. 0 = no subdivision (the 20
base icosphere faces only — “LOD 0”). Default 16 (range 0–20).
vram_budget_gib: f32GPU VRAM budget for the resident chunk pools, in GiB. You set the
gigabytes, not a slot count: the number of resident chunk slots is derived
as vram / per-chunk bytes, where per-chunk = verts_per_chunk×48 B
(geometry) + tile_res²×16 B (detail atlases + surface buffers). So a bigger tile_res
simply means fewer chunks fit in the same budget — no manual rebalancing.
(Also clamped so the atlas texture height stays within the GPU’s limit.)
geomorph: boolGeomorphing (Phase 5): smoothly blend each chunk between its full-detail
grid and its coarser (parent-resolution) sublattice as the camera distance
crosses the LOD band, so detail fades in/out instead of popping when the
quadtree subdivides/merges. The per-chunk morph factor rides in the
per-frame instance buffer (INSTANCE_CUSTOM.g) and is applied in the
surface vertex shader, so the realize/bake cache is untouched. When off,
every chunk gets morph = 1 (full detail, no blend) and the instance
buffer is NOT re-uploaded on camera movement.
lod_colors: boolDebug view: tint each chunk by its pool slot so the chunk tiling (and the LOD cut) is visible on the surface. Off by default; purely visual.
debug_log: boolPrint a one-line status (chunks in the cut, resident, realized, graph executes, selection time) to the Godot output every ~5 seconds. Default on.
horizon_cull: boolHorizon (back-of-planet) culling: skip selecting/realizing/baking/drawing
chunks that are fully beyond the planet’s horizon. Removes the entire far
hemisphere; and because the horizon is close when the camera is near the
surface, it also drops distant near-ground chunks — shrinking the resident
set (and the VRAM/tile_res it can afford).
cull_height_margin: f32Terrain-height slack for horizon culling, as a fraction of radius: a
patch is kept if terrain up to radius × cull_height_margin above the
surface could peek over the horizon. Raise if tall terrain pops in at the
horizon; lower to cull more aggressively. (HQ max displacement ≈ 0.3·r.)
max_bakes_per_frame: i64Max NEW chunks to realize+bake per frame. A large influx (teleport, fast turn, first fill) otherwise bakes every newly-visible chunk in one frame and spikes frame time; capping it spreads the work over frames (the rest pop in over the next few frames). Lower = smoother under influx, slower fill-in. Dirty re-bakes (streamed-tile arrivals) share this cap; already-resident chunks are always drawn (stale until their re-bake turn). Default 48.
recompute_every_frame: boolTEST (temporary): bypass the per-chunk cache and re-realize + re-bake every
VISIBLE chunk EVERY frame (no persistence, no eviction). Lets you probe the
raw per-frame realize+bake cost at high tile_res/chunk_res without the
cache size limiting things. Off = normal cached path.
scatter_layers: Array<Gd<CesScatterLayer>>Scatter layers (CEL-73): each layer scatters one mesh over the planet on
a stable world lattice, with LIVE density + min_height/max_height
sliders — edits re-run only the scatter-compact dispatch. A layer with no
mesh is INACTIVE (for grass assign addons/celestialsim/grass_blade.tres).
lod_level sets density/reach; adding/removing layers (or changing
instances_per_cell/max_instances) rebuilds the GPU job.
builder: Option<Gd<CesBuilder>>The terrain builder (one active at a time). Its TYPE (a CesBuilder
subclass) decides how the surface is produced. A new planet starts with a
GPU-example builder (added when the node is first readied); clear it to render a plain
white sphere. Swapping or editing the builder reshades/rebuilds live.
auto_add_builder: boolHidden, storage-only guard: add the default builder the first time a
builder-less planet is readied, then never again (so clearing the builder
stays white). Not shown in the inspector — see on_validate_property.
Implementations§
Source§impl Celestial
impl Celestial
pub fn get_radius(&self) -> <f32 as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_radius(&mut self, radius: <f32 as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_screen_error(&self) -> <f32 as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_screen_error(&mut self, screen_error: <f32 as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_chunk_res(&self) -> <i64 as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_chunk_res(&mut self, chunk_res: <i64 as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_tile_res(&self) -> <i64 as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_tile_res(&mut self, tile_res: <i64 as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_max_depth(&self) -> <i64 as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_max_depth(&mut self, max_depth: <i64 as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_vram_budget_gib(&self) -> <f32 as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_vram_budget_gib( &mut self, vram_budget_gib: <f32 as GodotConvert>::Via, )
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_geomorph(&self) -> <bool as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_geomorph(&mut self, geomorph: <bool as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_lod_colors(&self) -> <bool as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_lod_colors(&mut self, lod_colors: <bool as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_debug_log(&self) -> <bool as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_debug_log(&mut self, debug_log: <bool as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_horizon_cull(&self) -> <bool as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_horizon_cull(&mut self, horizon_cull: <bool as GodotConvert>::Via)
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_cull_height_margin(&self) -> <f32 as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_cull_height_margin( &mut self, cull_height_margin: <f32 as GodotConvert>::Via, )
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_max_bakes_per_frame(&self) -> <i64 as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_max_bakes_per_frame( &mut self, max_bakes_per_frame: <i64 as GodotConvert>::Via, )
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_recompute_every_frame(&self) -> <bool as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_recompute_every_frame( &mut self, recompute_every_frame: <bool as GodotConvert>::Via, )
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_scatter_layers( &self, ) -> <Array<Gd<CesScatterLayer>> as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_scatter_layers( &mut self, scatter_layers: <Array<Gd<CesScatterLayer>> as GodotConvert>::Via, )
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn get_auto_add_builder(&self) -> <bool as GodotConvert>::Via
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
pub fn set_auto_add_builder( &mut self, auto_add_builder: <bool as GodotConvert>::Via, )
Auto-generated Rust getters/setters for #[var] are being phased out until v0.6.
If you need them, opt in with #[var(pub)].
Source§impl Celestial
impl Celestial
Sourcepub fn get_builder(&self) -> Option<Gd<CesBuilder>>
pub fn get_builder(&self) -> Option<Gd<CesBuilder>>
A builder’s changed signal lands here. A STRUCTURAL change — which
builder is first-enabled, its BuilderRoute, or a GpuCustom shader
source — rebuilds the job (so the pipeline / compiled shader / provider is
re-wired). A pure param edit is applied live, by kind, then every resident
chunk is invalidated so it re-realizes with the new values.
Sourcepub fn set_builder(&mut self, v: Option<Gd<CesBuilder>>)
pub fn set_builder(&mut self, v: Option<Gd<CesBuilder>>)
Swap the terrain builder (assign a different one, or clear it → white).
Rebuilds the job so the new type/params take effect immediately; the next
frame re-wires the new builder’s changed signal (via connect_builders).
pub fn on_builder_changed(&mut self)
Sourcepub fn chunks_in_queue(&self) -> i64
pub fn chunks_in_queue(&self) -> i64
Chunks currently streaming toward full detail: queued/running background
bakes plus baked patches waiting for cache admission. 0 ⇒ every chunk
in view is resident at its target LOD (nothing left to arrive).
Sourcepub fn tile_cache_path(&self) -> GString
pub fn tile_cache_path(&self) -> GString
Absolute path of the provider’s on-disk cache (empty when none).
Sourcepub fn tiles_in_flight(&self) -> i64
pub fn tiles_in_flight(&self) -> i64
Provider resource fetches currently in flight (network + decode).
Sourcepub fn cut_report(&self) -> GString
pub fn cut_report(&self) -> GString
Division-algorithm debug: per-depth histogram of the last selected cut,
plus how many of those chunks are actually DRAWN (resident) — any gap is
a hole on screen (unadmitted/throttled chunks). Example output:
cut 271 drawn 268 | d7:12 d8:24 ... d16:40.
Sourcepub fn ground_radius_at(&self, dir: Vector3) -> f32
pub fn ground_radius_at(&self, dir: Vector3) -> f32
The one query gameplay code needs: how to put something on the surface.
Radius (world units, from the planet centre) of the RENDERED ground in
direction dir (a world-space direction from the centre), so
dir.normalized() * ground_radius_at(dir) is the surface point: the bare
sphere plus the CPU-surface displacement,
sampled by the provider’s sample_height. Use this to place
cameras/objects on the surface instead of guessing an altitude — the
ground can legitimately sit kilometres above the sphere. Returns the bare
radius when no CPU-surface provider is active.
Sourcepub fn debug_dump_radii(&self)
pub fn debug_dump_radii(&self)
TEMP DEBUG: schedule a render-thread dump of every drawn slot’s vertex
radius range (see CesChunkJob::debug_dump_radii).
Sourcepub fn on_scatter_layer_changed(&mut self)
pub fn on_scatter_layer_changed(&mut self)
Any scatter layer’s changed signal lands here (CEL-73); the edit is
classified next frame in check_scatter_structure / the stage packer.
Sourcepub fn resident_count(&self) -> i64
pub fn resident_count(&self) -> i64
Chunks currently holding a GPU pool slot (cached geometry + detail atlas).
Compare with effective_budget to see how full the VRAM budget is.
Sourcepub fn realize_count(&self) -> i64
pub fn realize_count(&self) -> i64
Chunks realized in the last staged batch (0 once the camera settles).
Sourcepub fn executes(&self) -> i64
pub fn executes(&self) -> i64
Graph executes that actually consumed a stage (flat when stationary).
Sourcepub fn gpu_report(&self) -> GString
pub fn gpu_report(&self) -> GString
Per-stage GPU time of the last CesChunkJob execute, e.g.
"upload 0.01 + realize 0.42 ms". Each graph node (compute stage) is a
term — a future pass (e.g. a separate normals/noise shader) appears here
automatically. "idle" when no realize ran since the camera last moved;
this is the realize COMPUTE cost, distinct from the every-frame render
(rasterization) cost shown as render gpu.
Sourcepub fn triangle_count(&self) -> i64
pub fn triangle_count(&self) -> i64
Triangles currently drawn = visible chunks × chunk_res².
Sourcepub fn pool_vram_bytes(&self) -> i64
pub fn pool_vram_bytes(&self) -> i64
VRAM (bytes) the GPU pools reserve for budget slots. Per-vertex the
pool costs pos_tex(rgba32f=16) + verts_tex(2×rgba16f=16) + verts_buf
(float4=16) = 48 B × verts_per_chunk(res). Phase 4 adds the detail
atlases: colour(rgba8=4) + normal(rgba8=4) = 8 B × tile_res² per slot.
Sourcepub fn effective_budget(&self) -> u32
pub fn effective_budget(&self) -> u32
Resident chunk SLOT count derived from the VRAM budget. Each slot costs
verts_per_chunk(chunk_res)×48 B (geometry) + tile_res²×16 B (detail atlases +
normal atlas); slots = vram_budget / per_slot. Also clamped so the atlas
texture height (slots×tile_res²/ATTR_TEX_WIDTH) stays within the GPU’s max
texture dimension (the atlas is one strip of width ATTR_TEX_WIDTH).
Trait Implementations§
Source§impl GodotClass for Celestial
impl GodotClass for Celestial
Source§impl INode3D for Celestial
impl INode3D for Celestial
Source§fn ready(&mut self)
fn ready(&mut self)
Give a fresh planet its default CesGPUNoiseExample builder so it renders
terrain immediately (safe here — the node is in the tree, unlike an
instantiated property default). Fires once via the storage-only
auto_add_builder guard, so clearing the builder and saving keeps the
white planet.
Source§fn on_validate_property(&self, property: &mut PropertyInfo)
fn on_validate_property(&self, property: &mut PropertyInfo)
Hide the internal auto_add_builder guard from the inspector (kept for
storage only), so it isn’t a user-facing setting.
Source§fn process(&mut self, delta: f64)
fn process(&mut self, delta: f64)
delta is the time between frames in seconds. Read more§fn init(base: Base<Self::Base>) -> Self
fn init(base: Base<Self::Base>) -> Self
base object. Read more§fn enter_tree(&mut self)
fn enter_tree(&mut self)
SceneTree][crate::classes::SceneTree] (e.g. upon instantiating, scene changing, or after calling [add_child][crate::classes::Node::add_child] in a script). If the node has children, its [enter_tree][crate::classes::INode::enter_tree] callback will be called first, and then that of the children. Read more§fn exit_tree(&mut self)
fn exit_tree(&mut self)
SceneTree][crate::classes::SceneTree] (e.g. upon freeing, scene changing, or after calling [remove_child][crate::classes::Node::remove_child] in a script). If the node has children, its [exit_tree][crate::classes::INode::exit_tree] callback will be called last, after all its children have left the tree. Read more§fn physics_process(&mut self, delta: f64)
fn physics_process(&mut self, delta: f64)
delta is the logical time between physics ticks in seconds and is equal to [member Engine.time_scale] / [member Engine.physics_ticks_per_second]. Read more§fn input(&mut self, event: Gd<InputEvent>)
fn input(&mut self, event: Gd<InputEvent>)
§fn shortcut_input(&mut self, event: Gd<InputEvent>)
fn shortcut_input(&mut self, event: Gd<InputEvent>)
InputEventKey][crate::classes::InputEventKey], [InputEventShortcut][crate::classes::InputEventShortcut], or [InputEventJoypadButton][crate::classes::InputEventJoypadButton] hasn’t been consumed by [input][crate::classes::INode::input] or any GUI [Control][crate::classes::Control] item. It is called before [unhandled_key_input][crate::classes::INode::unhandled_key_input] and [unhandled_input][crate::classes::INode::unhandled_input]. The input event propagates up through the node tree until a node consumes it. Read more§fn unhandled_key_input(&mut self, event: Gd<InputEvent>)
fn unhandled_key_input(&mut self, event: Gd<InputEvent>)
InputEventKey][crate::classes::InputEventKey] hasn’t been consumed by [input][crate::classes::INode::input] or any GUI [Control][crate::classes::Control] item. It is called after [shortcut_input][crate::classes::INode::shortcut_input] but before [unhandled_input][crate::classes::INode::unhandled_input]. The input event propagates up through the node tree until a node consumes it. Read more§fn unhandled_input(&mut self, event: Gd<InputEvent>)
fn unhandled_input(&mut self, event: Gd<InputEvent>)
InputEvent][crate::classes::InputEvent] hasn’t been consumed by [input][crate::classes::INode::input] or any GUI [Control][crate::classes::Control] item. It is called after [shortcut_input][crate::classes::INode::shortcut_input] and after [unhandled_key_input][crate::classes::INode::unhandled_key_input]. The input event propagates up through the node tree until a node consumes it. Read more§fn on_notification(&mut self, what: Node3DNotification)
fn on_notification(&mut self, what: Node3DNotification)
§fn on_get_property_list(&mut self) -> Vec<PropertyInfo>
fn on_get_property_list(&mut self) -> Vec<PropertyInfo>
get_property_list() is called, the returned vector here is
appended to the existing list of properties. Read more§fn on_property_get_revert(&self, property: StringName) -> Option<Variant>
fn on_property_get_revert(&self, property: StringName) -> Option<Variant>
§fn get_configuration_warnings(&self) -> PackedArray<GString>
fn get_configuration_warnings(&self) -> PackedArray<GString>
tool script. Read more§fn get_accessibility_configuration_warnings(&self) -> PackedArray<GString>
fn get_accessibility_configuration_warnings(&self) -> PackedArray<GString>
tool script, and accessibility warnings are enabled in the editor settings. Read more§fn get_focused_accessibility_element(&self) -> Rid
fn get_focused_accessibility_element(&self) -> Rid
get_accessibility_element][crate::classes::Node::get_accessibility_element].Source§impl Inherits<Node> for Celestial
impl Inherits<Node> for Celestial
§const IS_SAME_CLASS: bool = false
const IS_SAME_CLASS: bool = false
Self == Base. Read moreSource§impl Inherits<Node3D> for Celestial
impl Inherits<Node3D> for Celestial
§const IS_SAME_CLASS: bool = false
const IS_SAME_CLASS: bool = false
Self == Base. Read moreSource§impl Inherits<Object> for Celestial
impl Inherits<Object> for Celestial
§const IS_SAME_CLASS: bool = false
const IS_SAME_CLASS: bool = false
Self == Base. Read moreSource§impl WithBaseField for Celestial
impl WithBaseField for Celestial
§fn base(&self) -> BaseRef<'_, Self>
fn base(&self) -> BaseRef<'_, Self>
&self engine methods on this object. Read more§fn base_mut(&mut self) -> BaseMut<'_, Self>
fn base_mut(&mut self) -> BaseMut<'_, Self>
&self/&mut self engine methods on this object. Read more§fn run_deferred<F>(&mut self, mut_self_method: F)where
F: FnOnce(&mut Self) + 'static,
fn run_deferred<F>(&mut self, mut_self_method: F)where
F: FnOnce(&mut Self) + 'static,
§fn run_deferred_gd<F>(&mut self, gd_function: F)where
F: FnOnce(Gd<Self>) + 'static,
fn run_deferred_gd<F>(&mut self, gd_function: F)where
F: FnOnce(Gd<Self>) + 'static,
Source§impl WithSignals for Celestial
impl WithSignals for Celestial
Source§type SignalCollection<'c, C: WithSignals> = __godot_Signals_Celestial<'c, C>
type SignalCollection<'c, C: WithSignals> = __godot_Signals_Celestial<'c, C>
impl GodotDefault for Celestial
impl ImplementsGodotApi for Celestial
impl ImplementsGodotExports for Celestial
impl ImplementsGodotVirtual for Celestial
impl You_forgot_the_attribute__godot_api for Celestial
Auto Trait Implementations§
impl !Freeze for Celestial
impl !RefUnwindSafe for Celestial
impl !Send for Celestial
impl !Sync for Celestial
impl Unpin for Celestial
impl UnsafeUnpin for Celestial
impl !UnwindSafe for Celestial
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Inherits<T> for Twhere
T: GodotClass,
impl<T> Inherits<T> for Twhere
T: GodotClass,
§const IS_SAME_CLASS: bool = true
const IS_SAME_CLASS: bool = true
Self == Base. Read more§impl<T> NewAlloc for Twhere
T: GodotDefault<Memory = MemManual> + Bounds,
impl<T> NewAlloc for Twhere
T: GodotDefault<Memory = MemManual> + Bounds,
§impl<C> ObjectToOwned<C> for Cwhere
C: WithBaseField,
impl<C> ObjectToOwned<C> for Cwhere
C: WithBaseField,
§fn object_to_owned(&self) -> Gd<C>
fn object_to_owned(&self) -> Gd<C>
Gd<T>.