Skip to main content

CharacterRig

Struct CharacterRig 

Source
pub struct CharacterRig {
    pub target: SkinnedMeshHandle,
    pub skinned_index: usize,
    pub base_model: Mat4,
    pub position: [f32; 3],
    pub half_height: f32,
    pub radius: f32,
    pub yaw: f32,
    pub desired_move: [f32; 3],
    pub jump_velocity: f32,
    pub grounded: bool,
    pub moved: bool,
}
Expand description

Runtime-only link between a skinned mesh and its character capsule.

GraphicsSystem publishes one CharacterRig per SkinnedMesh that declares a capsule, carrying the authored model transform and capsule dimensions. PhysicsSystem creates the kinematic capsule from it, then each frame consumes the target’s RootMotionEvent events, resolves the displacement against the scene, and writes the new position back here; GraphicsSystem moves the rendered mesh to follow. The one-frame producer/consumer hand-offs are invisible at animation rates.

Not authored in world files: it has no args.

Fields§

§target: SkinnedMeshHandle

The SkinnedMesh resource this rig moves.

§skinned_index: usize

Index of the mesh’s skinned draw object in the render backend.

§base_model: Mat4

The mesh’s authored model matrix. Root-motion deltas are mapped through its rotation/scale, and the moved mesh keeps its orientation.

§position: [f32; 3]

Current mesh-origin position in world space. Seeded to the authored position; overwritten by PhysicsSystem as the capsule moves.

§half_height: f32

Capsule half-height (cylindrical section) in world units.

§radius: f32

Capsule radius in world units.

§yaw: f32

Runtime facing yaw in radians, applied on top of the authored rotation (about world Y). Written by a character controller; 0 keeps the authored facing.

§desired_move: [f32; 3]

World-space drive velocity in units per second, added to the root-motion displacement each physics step. Written every frame by a direct-drive character controller; stays zero otherwise.

§jump_velocity: f32

One-shot takeoff velocity in units per second. Consumed by PhysicsSystem on the next step: applied if the capsule is grounded, discarded either way.

§grounded: bool

Whether the capsule rested on ground after the last move.

§moved: bool

Set by PhysicsSystem when position changed and by a controller when yaw changed; cleared by GraphicsSystem once the render transform caught up.

Implementations§

Source§

impl CharacterRig

Source

pub fn new( target: SkinnedMeshHandle, skinned_index: usize, base_model: Mat4, half_height: f32, radius: f32, ) -> Self

A rig at its authored placement. base_model is the mesh’s model matrix; its translation column doubles as the starting position.

Source

pub fn model(&self) -> Mat4

The current model matrix: the authored rotation/scale, turned by the runtime facing yaw, at the live position.

Source

pub fn world_delta(&self, local: [f32; 3]) -> [f32; 3]

Map a mesh-local displacement into world space through the authored rotation/scale (the linear part of base_model) and the runtime facing yaw.

Trait Implementations§

Source§

impl Clone for CharacterRig

Source§

fn clone(&self) -> CharacterRig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Component for CharacterRig

Source§

const NAME: &'static str = "CharacterRig"

The registry name a world authors this component under.
Source§

fn from_baked(_bytes: &[u8]) -> Result<Self, CnResult>

Reconstruct this component from a blob record, whose bytes are the serialized runtime component (cook already ran the asset -> component translation). The default rejects: runtime-only components are never stored in a blob, so only loadable types provide an implementation.
Source§

fn inject_locator(&mut self, _locator: PayloadLocator)

Called after construction to inject the payload locator from the blob def. Only meaningful for components with a compiled payload. The default implementation does nothing (correct for most components).
Source§

fn inject_name(&mut self, _id: AssetId)

Called after construction to inject the asset’s identity from the blob def. Only meaningful for components that look themselves up by id at runtime. The default implementation does nothing.
Source§

impl ComponentSlot for CharacterRig

Source§

const DISCRIMINANT: u8

The component type’s stable id, used as its ComponentId.
Source§

fn slot(s: &ComponentStorage) -> &Column<Self>

Borrow this type’s column out of the storage.
Source§

fn slot_mut(s: &mut ComponentStorage) -> &mut Column<Self>

Mutably borrow this type’s column out of the storage.
Source§

impl Debug for CharacterRig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<CharacterRig> for ComponentAsset

Source§

fn from(c: CharacterRig) -> Self

Converts to this type from the input type.
Source§

impl RuntimeComponent for CharacterRig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.