Struct netsblox_vm::process::Process
source · pub struct Process<'gc, C: CustomTypes<S>, S: System<C>> {
pub global_context: Gc<'gc, RefLock<GlobalContext<'gc, C, S>>>,
pub state: C::ProcessState,
/* private fields */
}Expand description
Fields§
§global_context: Gc<'gc, RefLock<GlobalContext<'gc, C, S>>>§state: C::ProcessStateImplementations§
source§impl<'gc, C: CustomTypes<S>, S: System<C>> Process<'gc, C, S>
impl<'gc, C: CustomTypes<S>, S: System<C>> Process<'gc, C, S>
sourcepub fn new(context: ProcContext<'gc, C, S>) -> Self
pub fn new(context: ProcContext<'gc, C, S>) -> Self
Creates a new Process with the given starting context.
sourcepub fn is_running(&self) -> bool
pub fn is_running(&self) -> bool
Checks if the process is currently running.
Note that the process will not run on its own (see Process::step).
sourcepub fn current_entity(&self) -> Gc<'gc, RefLock<Entity<'gc, C, S>>>
pub fn current_entity(&self) -> Gc<'gc, RefLock<Entity<'gc, C, S>>>
Gets the current active entity of this process. Note that this is not necessarily the same entity that was used to construct the process, as blocks such as “tell _ to _” and “ask _ for _” can change the context entity.
sourcepub fn step(
&mut self,
mc: &Mutation<'gc>
) -> Result<ProcessStep<'gc, C, S>, ExecError<C, S>>
pub fn step( &mut self, mc: &Mutation<'gc> ) -> Result<ProcessStep<'gc, C, S>, ExecError<C, S>>
Executes a single bytecode instruction. The return value can be used to determine what additional effects the script has requested, as well as to retrieve the return value or execution error in the event that the process terminates.
The process transitions to the idle state (see Process::is_running) upon failing with Err or succeeding with ProcessStep::Terminate.
Trait Implementations§
source§impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Process<'gc, C, S>where
C::ProcessState: 'static,
usize: 'static,
bool: 'static,
Option<Barrier>: 'static,
Option<S::InternReplyKey>: 'static,
Vec<Handler>: 'static,
Option<Defer<C, S>>: 'static,
impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Process<'gc, C, S>where C::ProcessState: 'static, usize: 'static, bool: 'static, Option<Barrier>: 'static, Option<S::InternReplyKey>: 'static, Vec<Handler>: 'static, Option<Defer<C, S>>: 'static,
source§fn needs_trace() -> bool
fn needs_trace() -> bool
As an optimization, if this type can never hold a
Gc pointer and trace is unnecessary
to call, you may implement this method and return false. The default implementation returns
true, signaling that Collect::trace must be called.source§fn trace(&self, cc: &Collection)
fn trace(&self, cc: &Collection)
Must call
Collect::trace on all held Gc pointers. If this type holds inner types that
implement Collect, a valid implementation would simply call Collect::trace on all the
held values to ensure this.Auto Trait Implementations§
impl<'gc, C, S> !RefUnwindSafe for Process<'gc, C, S>
impl<'gc, C, S> !Send for Process<'gc, C, S>
impl<'gc, C, S> !Sync for Process<'gc, C, S>
impl<'gc, C, S> Unpin for Process<'gc, C, S>where <S as System<C>>::CommandKey: Unpin, <S as System<C>>::ExternReplyKey: Unpin, <S as System<C>>::InternReplyKey: Unpin, <C as CustomTypes<S>>::ProcessState: Unpin, <S as System<C>>::RequestKey: Unpin,
impl<'gc, C, S> !UnwindSafe for Process<'gc, C, S>
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
Mutably borrows from an owned value. Read more