PhysicsAgent

Struct PhysicsAgent 

Source
pub struct PhysicsAgent { /* private fields */ }
Expand description

The agent responsible for managing the physics simulation.

It acts as the Control Plane (ISA) for the physics subsystem, deciding which strategies (lanes) to deploy and managing the physics world.

Implementations§

Source§

impl PhysicsAgent

Source

pub fn new(provider: Box<dyn PhysicsProvider>) -> Self

Creates a new PhysicsAgent with a given provider.

Source

pub fn with_telemetry(self, registry: &MetricsRegistry) -> Self

Attaches a metrics registry to the agent for observability.

Source

pub fn with_dcc_sender(self, sender: Sender<TelemetryEvent>) -> Self

Attaches a DCC sender for telemetry events.

Source

pub fn step(&mut self, world: &mut World, dt: f32)

Advances the physics simulation.

Source

pub fn select_lane(&self) -> &dyn Lane

Selects the appropriate physics lane based on the current strategy.

Source

pub fn cast_ray( &self, ray: &Ray, max_toi: f32, solid: bool, ) -> Option<RaycastHit>

Exposes raycasting from the provider.

Source

pub fn get_debug_render_data(&self) -> (Vec<Vec3>, Vec<[u32; 2]>)

Returns debug rendering data from the provider.

Source

pub fn last_step_time(&self) -> Duration

Returns the duration of the last step.

Source

pub fn frame_count(&self) -> u64

Returns the total number of frames simulated.

Source

pub fn current_strategy_id(&self) -> StrategyId

Returns the current GORNA strategy ID.

Source

pub fn fixed_timestep(&self) -> f32

Returns the current fixed timestep.

Source

pub fn set_fixed_timestep(&mut self, dt: f32)

Sets the fixed timestep.

Trait Implementations§

Source§

impl Agent for PhysicsAgent

Source§

fn id(&self) -> AgentId

Returns the unique identifier for this agent.
Source§

fn negotiate(&mut self, _request: NegotiationRequest) -> NegotiationResponse

Negotiates with the DCC to determine the best execution strategy given the current global resource constraints and priorities.
Source§

fn apply_budget(&mut self, budget: ResourceBudget)

Applies a resource budget issued by the DCC. The agent must adjust its internal logic (e.g., LOD, quality settings) to stay within the allocated limits.
Source§

fn update(&mut self, context: &mut EngineContext<'_>)

Periodically updates the agent’s internal state.
Source§

fn report_status(&self) -> AgentStatus

Reports the current status and health of the agent.
Source§

fn execute(&mut self)

Executes the agent’s primary function for this frame. Called after update(), this is where the agent performs its main work.
Source§

fn as_any(&self) -> &dyn Any

Allows downcasting to concrete agent types.
Source§

fn as_any_mut(&mut self) -> &mut dyn Any

Allows mutable downcasting to concrete agent types.

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
§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

Returns a reference to the inner value as &dyn Any.
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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

type Error = Infallible

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.