pub struct Rectangle<S> { /* private fields */ }Expand description
Rectangle primitive.
Have a cached set of corner points to speed up computation.
Implementations§
Source§impl<S> Rectangle<S>where
S: BaseFloat,
impl<S> Rectangle<S>where
S: BaseFloat,
Sourcepub fn new(dim_x: S, dim_y: S) -> Rectangle<S>
pub fn new(dim_x: S, dim_y: S) -> Rectangle<S>
Create a new rectangle primitive from component dimensions
Examples found in repository?
examples/basic2d.rs (line 34)
17pub fn main() {
18 let mut world = World::new();
19
20 let mut system = BasicCollisionSystem2::<f32, BodyPose2<f32>, ()>::new()
21 .with_broad_phase(BroadBruteForce2::default())
22 .with_narrow_phase(GJK2::new());
23 system.setup(&mut world.res);
24
25 let mut reader_1 = world
26 .write_resource::<EventChannel<ContactEvent2<f32>>>()
27 .register_reader();
28
29 world
30 .create_entity()
31 .with(CollisionShape2::<f32, BodyPose2<f32>, ()>::new_simple(
32 CollisionStrategy::FullResolution,
33 CollisionMode::Discrete,
34 Rectangle::new(10., 10.).into(),
35 )).with(BodyPose2::<f32>::one())
36 .build();
37
38 world
39 .create_entity()
40 .with(CollisionShape2::<f32, BodyPose2<f32>, ()>::new_simple(
41 CollisionStrategy::FullResolution,
42 CollisionMode::Discrete,
43 Rectangle::new(10., 10.).into(),
44 )).with(BodyPose2::<f32>::new(
45 Point2::new(3., 2.),
46 Rotation2::from_angle(Rad(0.)),
47 )).build();
48
49 system.run_now(&world.res);
50 println!(
51 "Contacts: {:?}",
52 world
53 .read_resource::<EventChannel<ContactEvent2<f32>>>()
54 .read(&mut reader_1)
55 .collect::<Vec<_>>()
56 );
57}More examples
examples/spatial2d.rs (line 59)
36pub fn main() {
37 let mut world = World::new();
38 let mut sort = SpatialSortingSystem2::<f32, BodyPose2<f32>, ()>::new();
39 let mut collide =
40 SpatialCollisionSystem2::<f32, BodyPose2<f32>, ()>::new().with_narrow_phase(GJK2::new());
41 let mut raycast = RayCastSystem;
42 let mut impulse_solver = CurrentFrameUpdateSystem2::<f32, BodyPose2<f32>>::new();
43 let mut next_frame = NextFrameSetupSystem2::<f32, BodyPose2<f32>>::new();
44 let mut contact_resolution = ContactResolutionSystem2::<f32, BodyPose2<f32>>::new();
45
46 sort.setup(&mut world.res);
47 collide.setup(&mut world.res);
48 raycast.setup(&mut world.res);
49 impulse_solver.setup(&mut world.res);
50 next_frame.setup(&mut world.res);
51 contact_resolution.setup(&mut world.res);
52
53 world
54 .create_entity()
55 .with_static_physical_entity(
56 CollisionShape2::<f32, BodyPose2<f32>, ()>::new_simple(
57 CollisionStrategy::FullResolution,
58 CollisionMode::Discrete,
59 Rectangle::new(10., 10.).into(),
60 ),
61 BodyPose2::<f32>::one(),
62 PhysicalEntity::default(),
63 Mass2::new(1.),
64 ).build();
65
66 world
67 .create_entity()
68 .with_static_physical_entity(
69 CollisionShape2::<f32, BodyPose2<f32>, ()>::new_simple(
70 CollisionStrategy::FullResolution,
71 CollisionMode::Discrete,
72 Rectangle::new(10., 10.).into(),
73 ),
74 BodyPose2::<f32>::new(Point2::new(2., 2.), Rotation2::from_angle(Rad(0.))),
75 PhysicalEntity::default(),
76 Mass2::new(1.),
77 ).build();
78
79 let mut reader_1 = world
80 .write_resource::<EventChannel<ContactEvent2<f32>>>()
81 .register_reader();
82
83 {
84 use specs::prelude::RunNow;
85 sort.run_now(&world.res);
86 collide.run_now(&world.res);
87
88 println!(
89 "Contacts: {:?}",
90 world
91 .read_resource::<EventChannel<ContactEvent2<f32>>>()
92 .read(&mut reader_1)
93 .collect::<Vec<_>>()
94 );
95
96 raycast.run_now(&world.res);
97 impulse_solver.run_now(&world.res);
98 next_frame.run_now(&world.res);
99 contact_resolution.run_now(&world.res);
100 }
101}Trait Implementations§
Source§impl<S> ComputeBound<Aabb2<S>> for Rectangle<S>where
S: BaseFloat,
impl<S> ComputeBound<Aabb2<S>> for Rectangle<S>where
S: BaseFloat,
Source§fn compute_bound(&self) -> Aabb2<S>
fn compute_bound(&self) -> Aabb2<S>
Compute the bounding volume
Source§impl<'de, S> Deserialize<'de> for Rectangle<S>where
S: Deserialize<'de>,
impl<'de, S> Deserialize<'de> for Rectangle<S>where
S: Deserialize<'de>,
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Rectangle<S>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Rectangle<S>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<S> Serialize for Rectangle<S>where
S: Serialize,
impl<S> Serialize for Rectangle<S>where
S: Serialize,
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl<S> StructuralPartialEq for Rectangle<S>
Auto Trait Implementations§
impl<S> Freeze for Rectangle<S>where
S: Freeze,
impl<S> RefUnwindSafe for Rectangle<S>where
S: RefUnwindSafe,
impl<S> Send for Rectangle<S>where
S: Send,
impl<S> Sync for Rectangle<S>where
S: Sync,
impl<S> Unpin for Rectangle<S>where
S: Unpin,
impl<S> UnwindSafe for Rectangle<S>where
S: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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 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>
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