mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Change "and_not" and "diff" to "subtract"
This commit is contained in:
parent
4b6f3ddeea
commit
88840fe58d
@ -50,7 +50,7 @@ pub enum Primitive {
|
||||
Intersect(Id<Primitive>, Id<Primitive>),
|
||||
Union(Id<Primitive>, Id<Primitive>),
|
||||
// Not commutative
|
||||
Diff(Id<Primitive>, Id<Primitive>),
|
||||
Subtract(Id<Primitive>, Id<Primitive>),
|
||||
// Operators
|
||||
Rotate(Id<Primitive>, Mat3<i32>),
|
||||
Translate(Id<Primitive>, Vec3<i32>),
|
||||
@ -66,8 +66,8 @@ impl Primitive {
|
||||
Self::Union(a.into(), b.into())
|
||||
}
|
||||
|
||||
pub fn diff(a: impl Into<Id<Primitive>>, b: impl Into<Id<Primitive>>) -> Self {
|
||||
Self::Diff(a.into(), b.into())
|
||||
pub fn subtract(a: impl Into<Id<Primitive>>, b: impl Into<Id<Primitive>>) -> Self {
|
||||
Self::Subtract(a.into(), b.into())
|
||||
}
|
||||
|
||||
pub fn sampling(a: impl Into<Id<Primitive>>, f: Box<dyn Fn(Vec3<i32>) -> bool>) -> Self {
|
||||
@ -225,7 +225,7 @@ impl Fill {
|
||||
Primitive::Union(a, b) => {
|
||||
self.contains_at(tree, *a, pos) || self.contains_at(tree, *b, pos)
|
||||
},
|
||||
Primitive::Diff(a, b) => {
|
||||
Primitive::Subtract(a, b) => {
|
||||
self.contains_at(tree, *a, pos) && !self.contains_at(tree, *b, pos)
|
||||
},
|
||||
Primitive::Rotate(prim, mat) => {
|
||||
@ -340,7 +340,7 @@ impl Fill {
|
||||
self.get_bounds_inner(tree, *b),
|
||||
|a, b| a.union(b),
|
||||
)?,
|
||||
Primitive::Diff(a, _) => self.get_bounds_inner(tree, *a)?,
|
||||
Primitive::Subtract(a, _) => self.get_bounds_inner(tree, *a)?,
|
||||
Primitive::Rotate(prim, mat) => {
|
||||
let aabb = self.get_bounds_inner(tree, *prim)?;
|
||||
let extent = *mat * Vec3::from(aabb.size());
|
||||
@ -452,8 +452,8 @@ impl<'a> PrimitiveRef<'a> {
|
||||
self.painter.prim(Primitive::intersect(self, other))
|
||||
}
|
||||
|
||||
pub fn and_not(self, other: impl Into<Id<Primitive>>) -> PrimitiveRef<'a> {
|
||||
self.painter.prim(Primitive::diff(self, other))
|
||||
pub fn subtract(self, other: impl Into<Id<Primitive>>) -> PrimitiveRef<'a> {
|
||||
self.painter.prim(Primitive::subtract(self, other))
|
||||
}
|
||||
|
||||
pub fn fill(self, fill: Fill) { self.painter.fill(self, fill); }
|
||||
@ -498,7 +498,7 @@ pub fn aabb_corners<F: FnMut(Primitive) -> Id<Primitive>>(
|
||||
min: aabb.min + vec,
|
||||
max: aabb.max - vec,
|
||||
}));
|
||||
prim(Primitive::Diff(ret, sub))
|
||||
prim(Primitive::Subtract(ret, sub))
|
||||
};
|
||||
let mut ret = prim(Primitive::Aabb(aabb));
|
||||
ret = f(prim, ret, Vec3::new(1, 0, 0));
|
||||
|
@ -200,7 +200,7 @@ impl Structure for Castle {
|
||||
|
||||
tower_top_outer
|
||||
.union(tower_top_inner)
|
||||
.and_not(tower_top_outer.intersect(tower_top_inner))
|
||||
.subtract(tower_top_outer.intersect(tower_top_inner))
|
||||
.fill(Fill::Brick(BlockKind::Rock, wall_rgb, 12));
|
||||
|
||||
for x in (wpos.x..wpos.x + ts).step_by(2 * parapet_gap as usize) {
|
||||
|
@ -1151,7 +1151,7 @@ impl Floor {
|
||||
}
|
||||
lighting_mask_x
|
||||
.union(lighting_mask_y)
|
||||
.and_not(lighting_mask_x.intersect(lighting_mask_y))
|
||||
.subtract(lighting_mask_x.intersect(lighting_mask_y))
|
||||
};
|
||||
|
||||
// Declare collections of various disjoint primitives that need postprocessing
|
||||
@ -1184,7 +1184,7 @@ impl Floor {
|
||||
tile_aabr,
|
||||
floor_z..floor_z + 1,
|
||||
)));
|
||||
let sprite_layer = painter.prim(Primitive::diff(sprite_layer, wall_contours));
|
||||
let sprite_layer = painter.prim(Primitive::subtract(sprite_layer, wall_contours));
|
||||
|
||||
// Lights are 2 units above the floor, and aligned with the `lighting_mask` grid
|
||||
let lighting_plane = painter.prim(Primitive::Aabb(aabr_with_z(
|
||||
@ -1226,7 +1226,7 @@ impl Floor {
|
||||
max: (aabb.max - Vec3::new(1, 1, 0)).with_z(floor_z + i + 1),
|
||||
}));
|
||||
|
||||
light = painter.prim(Primitive::diff(light, inner));
|
||||
light = painter.prim(Primitive::subtract(light, inner));
|
||||
lights = painter.prim(Primitive::union(light, lights));
|
||||
}
|
||||
}
|
||||
@ -1263,7 +1263,7 @@ impl Floor {
|
||||
tile_aabr,
|
||||
floor_z - 7..floor_z,
|
||||
)));
|
||||
let tile_pit = painter.prim(Primitive::diff(tile_pit, wall_contours));
|
||||
let tile_pit = painter.prim(Primitive::subtract(tile_pit, wall_contours));
|
||||
painter.fill(tile_pit, Fill::Block(vacant));
|
||||
|
||||
// Fill with lava
|
||||
@ -1271,7 +1271,7 @@ impl Floor {
|
||||
tile_aabr,
|
||||
floor_z - 7..floor_z - 5,
|
||||
)));
|
||||
let tile_lava = painter.prim(Primitive::diff(tile_lava, wall_contours));
|
||||
let tile_lava = painter.prim(Primitive::subtract(tile_lava, wall_contours));
|
||||
//pits.push(tile_pit);
|
||||
//pits.push(tile_lava);
|
||||
painter.fill(tile_lava, Fill::Block(lava));
|
||||
@ -1348,7 +1348,7 @@ impl Floor {
|
||||
tile_aabr,
|
||||
floor_z..floor_z + height,
|
||||
)));
|
||||
let tile_air = painter.prim(Primitive::diff(tile_air, wall_contours));
|
||||
let tile_air = painter.prim(Primitive::subtract(tile_air, wall_contours));
|
||||
painter.fill(tile_air, Fill::Block(vacant));
|
||||
|
||||
// Place torches on the walls with the aforementioned spacing
|
||||
@ -1359,7 +1359,7 @@ impl Floor {
|
||||
|
||||
// Defer chest/floor sprite placement
|
||||
if let Some((chest_sprite, chest_sprite_fill)) = chests {
|
||||
let chest_sprite = painter.prim(Primitive::diff(chest_sprite, wall_contours));
|
||||
let chest_sprite = painter.prim(Primitive::subtract(chest_sprite, wall_contours));
|
||||
sprites.push((chest_sprite, chest_sprite_fill));
|
||||
}
|
||||
|
||||
@ -1397,7 +1397,7 @@ impl Floor {
|
||||
// Prevent sprites from floating above the stairs
|
||||
let stair_bb_up = painter.prim(Primitive::translate(*stair_bb, Vec3::unit_z()));
|
||||
for (sprite, _) in sprites.iter_mut() {
|
||||
*sprite = painter.prim(Primitive::diff(*sprite, stair_bb_up));
|
||||
*sprite = painter.prim(Primitive::subtract(*sprite, stair_bb_up));
|
||||
}
|
||||
}
|
||||
// Place the stairs themselves, and lights within the stairwells
|
||||
|
@ -600,7 +600,7 @@ impl Structure for House {
|
||||
|
||||
let walls = outer_level
|
||||
.union(inner_level)
|
||||
.and_not(outer_level.intersect(inner_level));
|
||||
.subtract(outer_level.intersect(inner_level));
|
||||
|
||||
// Wall Pillars
|
||||
// Only upper non-stone floors have wooden beams in the walls
|
||||
@ -1368,11 +1368,11 @@ impl Structure for House {
|
||||
let window_ori = if self.front % 2 == 0 { 0 } else { 2 };
|
||||
if valid_dormer {
|
||||
painter.fill(
|
||||
painter.prim(Primitive::diff(dormer_box, shed)),
|
||||
painter.prim(Primitive::subtract(dormer_box, shed)),
|
||||
Fill::Brick(BlockKind::Wood, Rgb::new(200, 180, 150), 24),
|
||||
);
|
||||
painter.fill(
|
||||
painter.prim(Primitive::diff(dormer_roof, shed)),
|
||||
painter.prim(Primitive::subtract(dormer_roof, shed)),
|
||||
Fill::Block(Block::new(BlockKind::Wood, self.roof_color)),
|
||||
);
|
||||
painter.fill(window_cavity, Fill::Block(Block::empty()));
|
||||
|
Loading…
Reference in New Issue
Block a user