pub struct SpaceViewContents {
pub blueprint_entity_path: EntityPath,
pub view_class_identifier: SpaceViewClassIdentifier,
pub entity_path_filter: EntityPathFilter,
}
Expand description
Data to be added to a space view, built from a blueprint_archetypes::SpaceViewContents
.
During execution, it will walk an EntityTree
and return a DataResultTree
containing any entities that match a EntityPathFilter
.
Note: SpaceViewContents
doesn’t implement Clone because it depends on its parent’s SpaceViewId
used for identifying the path of its data in the blueprint store. It’s ambiguous
whether the intent is for a clone to write to the same place.
If you want a new space view otherwise identical to an existing one, use
SpaceViewBlueprint::duplicate
.
Fields§
§blueprint_entity_path: EntityPath
§view_class_identifier: SpaceViewClassIdentifier
§entity_path_filter: EntityPathFilter
Implementations§
source§impl SpaceViewContents
impl SpaceViewContents
pub fn is_equivalent(&self, other: &Self) -> bool
sourcepub fn entity_path_filter_is_superset_of(&self, other: &Self) -> bool
pub fn entity_path_filter_is_superset_of(&self, other: &Self) -> bool
Checks whether the results of this query “fully contains” the results of another query.
If this returns true
then the DataQueryResult
returned by this query should always
contain any EntityPath
that would be included in the results of the other query.
This is a conservative estimate, and may return false
in situations where the
query does in fact cover the other query. However, it should never return true
in a case where the other query would not be fully covered.
source§impl SpaceViewContents
impl SpaceViewContents
sourcepub fn new(
id: SpaceViewId,
view_class_identifier: SpaceViewClassIdentifier,
entity_path_filter: EntityPathFilter
) -> Self
pub fn new( id: SpaceViewId, view_class_identifier: SpaceViewClassIdentifier, entity_path_filter: EntityPathFilter ) -> Self
Creates a new SpaceViewContents
.
This SpaceViewContents
is ephemeral. It must be saved by calling
save_to_blueprint_store
on the enclosing SpaceViewBlueprint
.
sourcepub fn from_db_or_default(
view_id: SpaceViewId,
blueprint_db: &EntityDb,
query: &LatestAtQuery,
view_class_identifier: SpaceViewClassIdentifier,
space_env: &EntityPathSubs
) -> Self
pub fn from_db_or_default( view_id: SpaceViewId, blueprint_db: &EntityDb, query: &LatestAtQuery, view_class_identifier: SpaceViewClassIdentifier, space_env: &EntityPathSubs ) -> Self
Attempt to load a SpaceViewContents
from the blueprint store.
sourcepub fn save_to_blueprint_store(&self, ctx: &ViewerContext<'_>)
pub fn save_to_blueprint_store(&self, ctx: &ViewerContext<'_>)
Persist the entire SpaceViewContents
to the blueprint store.
This only needs to be called if the SpaceViewContents
was created with Self::new
.
Otherwise, incremental calls to set_
functions will write just the necessary component
update directly to the store.
pub fn set_entity_path_filter( &self, ctx: &ViewerContext<'_>, new_entity_path_filter: &EntityPathFilter )
pub fn build_resolver<'a>( &self, space_view_class_registry: &'a SpaceViewClassRegistry, space_view: &'a SpaceViewBlueprint, applicable_entities_per_visualizer: &'a PerVisualizer<ApplicableEntities>, visualizable_entities_per_visualizer: &'a PerVisualizer<VisualizableEntities>, indicated_entities_per_visualizer: &'a PerVisualizer<IndicatedEntities> ) -> DataQueryPropertyResolver<'a>
sourcepub fn remove_subtree_and_matching_rules(
&self,
ctx: &ViewerContext<'_>,
path: EntityPath
)
pub fn remove_subtree_and_matching_rules( &self, ctx: &ViewerContext<'_>, path: EntityPath )
Remove a subtree and any existing rules that it would match.
Because most-specific matches win, if we only add a subtree exclusion it can still be overridden by existing inclusions. This method ensures that not only do we add a subtree exclusion, but clear out any existing inclusions or (now redundant) exclusions that would match the subtree.
sourcepub fn raw_add_entity_exclusion(
&self,
ctx: &ViewerContext<'_>,
rule: EntityPathRule
)
pub fn raw_add_entity_exclusion( &self, ctx: &ViewerContext<'_>, rule: EntityPathRule )
Directly add an exclusion rule to the EntityPathFilter
.
This is a direct modification of the filter and will not do any simplification related to overlapping or conflicting rules.
If you are trying to remove an entire subtree, prefer using Self::remove_subtree_and_matching_rules
.
sourcepub fn raw_add_entity_inclusion(
&self,
ctx: &ViewerContext<'_>,
rule: EntityPathRule
)
pub fn raw_add_entity_inclusion( &self, ctx: &ViewerContext<'_>, rule: EntityPathRule )
Directly add an inclusion rule to the EntityPathFilter
.
This is a direct modification of the filter and will not do any simplification related to overlapping or conflicting rules.
pub fn remove_filter_rule_for( &self, ctx: &ViewerContext<'_>, ent_path: &EntityPath )
sourcepub fn execute_query(
&self,
ctx: &StoreContext<'_>,
visualizable_entities_for_visualizer_systems: &PerVisualizer<VisualizableEntities>
) -> DataQueryResult
pub fn execute_query( &self, ctx: &StoreContext<'_>, visualizable_entities_for_visualizer_systems: &PerVisualizer<VisualizableEntities> ) -> DataQueryResult
Build up the initial DataQueryResult
for this SpaceViewContents
Note that this result will not have any resolved PropertyOverrides
. Those can
be added by separately calling DataQueryPropertyResolver::update_overrides
on
the result.
Auto Trait Implementations§
impl Freeze for SpaceViewContents
impl RefUnwindSafe for SpaceViewContents
impl Send for SpaceViewContents
impl Sync for SpaceViewContents
impl Unpin for SpaceViewContents
impl UnwindSafe for SpaceViewContents
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
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request