Struct InstanceGroupRef
pub struct InstanceGroupRef(/* private fields */);Expand description
Persistent copies of one resolved model, retired on reload, world close, mod disable or destroy.
Only the creating mod may access or submit the group; others receive GroupError::Stale.
Retired handles never become valid again, even when their storage slot is reused.
Native and wasm mods use the same storage, ownership and drawing rules.
Static groups cache CPU conversion; all visible GPU-routed copies still upload every frame.
Frequent group pose changes rebuild the live cache and can cost more than transient copies.
Implementations§
§impl InstanceGroupRef
impl InstanceGroupRef
pub fn write(
self,
host: &dyn ClientHost,
first: u32,
instances: &[ModelInstance],
) -> Result<(), GroupError>
pub fn write( self, host: &dyn ClientHost, first: u32, instances: &[ModelInstance], ) -> Result<(), GroupError>
Atomically overwrite a range, extending length up to reserved capacity.
Newly exposed unwritten slots are identity, white, full-bright copies at world origin.
Invalid coordinates/light or an out-of-capacity range change nothing; a retired or
foreign handle returns GroupError::Stale before inspecting the range or values.
That range and any newly exposed gap are converted again. Visible copies still
enter the shared per-view GPU upload on every frame.
pub fn set_len(self, host: &dyn ClientHost, len: u32) -> Result<(), GroupError>
pub fn set_len(self, host: &dyn ClientHost, len: u32) -> Result<(), GroupError>
Atomically change the drawn length. Unwritten slots contain identity, full-bright copies.
Zero draws nothing and does not release capacity. Shrinking preserves hidden copies;
growing exposes them again. A length above capacity returns GroupError::OutOfRange.
Growth converts the newly exposed range using the current group pose.
pub fn set_group_transform(
self,
host: &dyn ClientHost,
transform: [f32; 12],
) -> Result<(), GroupError>
pub fn set_group_transform( self, host: &dyn ClientHost, transform: [f32; 12], ) -> Result<(), GroupError>
Atomically replace the row-major 3x4 group pose (identity by default).
World position = origin + group_transform * (copy_transform * local).
The origin stays in world space; transformed bounds are used for culling.
Non-finite components return GroupError::NonFinite. Rebuilds the drawn
copies’ cached render records; it does not allocate or rewrite the API copies.
pub fn destroy(self, host: &dyn ClientHost) -> Result<(), GroupError>
pub fn destroy(self, host: &dyn ClientHost) -> Result<(), GroupError>
Retire this handle and release its reserved copies and CPU caches immediately.
Already accepted copies remain in the current view. Later operations, including another
destroy, return GroupError::Stale; a new group cannot revive this handle.
Trait Implementations§
§impl Clone for InstanceGroupRef
impl Clone for InstanceGroupRef
§fn clone(&self) -> InstanceGroupRef
fn clone(&self) -> InstanceGroupRef
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more