]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/renderers/OffsetBox.java
Improve performance
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / renderers / OffsetBox.java
1 package com.irtimaled.bbor.client.renderers;
2
3 import com.irtimaled.bbor.client.models.Point;
4 import com.irtimaled.bbor.common.models.Coords;
5 import net.minecraft.util.math.Box;
6
7 class OffsetBox {
8     private final OffsetPoint min;
9     private final OffsetPoint max;
10
11     OffsetBox(Coords minCoords, Coords maxCoords) {
12         this.min = new OffsetPoint(minCoords);
13         this.max = new OffsetPoint(maxCoords).offset(1, 1, 1);
14     }
15
16     OffsetBox(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) {
17         this.min = new OffsetPoint(minX, minY, minZ);
18         this.max = new OffsetPoint(maxX, maxY, maxZ);
19     }
20
21     OffsetBox(OffsetPoint min, OffsetPoint max) {
22         this.min = min;
23         this.max = max;
24     }
25
26     OffsetBox(Point min, Point max) {
27         this.min = new OffsetPoint(min);
28         this.max = new OffsetPoint(max);
29     }
30
31     OffsetBox grow(double x, double y, double z) {
32         return new OffsetBox(min.offset(-x, -y, -z), max.offset(x, y, z));
33     }
34
35     OffsetBox nudge() {
36         double growXZ = 0.001F;
37         if (min.getY() == max.getY()) {
38             return new OffsetBox(min.offset(-growXZ, growXZ, -growXZ), max.offset(growXZ, growXZ, growXZ));
39         }
40         return grow(growXZ, growXZ, growXZ);
41     }
42
43     OffsetPoint getMin() {
44         return min;
45     }
46
47     OffsetPoint getMax() {
48         return max;
49     }
50
51     public Box toBox() {
52         return new Box(getMin().getX(), getMin().getY(), getMin().getZ(), getMax().getX(), getMax().getY(), getMax().getZ());
53     }
54 }