]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/models/BoundingBoxSphere.java
General performance improvements and serverside fixes
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / models / BoundingBoxSphere.java
1 package com.irtimaled.bbor.client.models;
2
3 import com.irtimaled.bbor.client.ClientRenderer;
4 import com.irtimaled.bbor.client.renderers.AbstractRenderer;
5 import com.irtimaled.bbor.client.renderers.SphereRenderer;
6 import com.irtimaled.bbor.common.BoundingBoxType;
7 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
8 import com.irtimaled.bbor.common.models.Coords;
9
10 public class BoundingBoxSphere extends AbstractBoundingBox {
11     private static final AbstractRenderer<BoundingBoxSphere> RENDERER = ClientRenderer.registerRenderer(BoundingBoxSphere.class, () -> new SphereRenderer());
12
13     private final double radius;
14     private final double minX;
15     private final double minZ;
16     private final double maxX;
17     private final double maxZ;
18     private final Point point;
19
20     public BoundingBoxSphere(Point point, double radius, BoundingBoxType type) {
21         super(type);
22         this.radius = radius;
23         this.point = point;
24
25         Coords center = point.getCoords();
26         this.minX = center.getX() - radius;
27         this.minZ = center.getZ() - radius;
28         this.maxX = center.getX() + radius;
29         this.maxZ = center.getZ() + radius;
30     }
31
32     @Override
33     public Boolean intersectsBounds(int minX, int minZ, int maxX, int maxZ) {
34         return this.maxX >= minX &&
35                 this.maxZ >= minZ &&
36                 this.minX <= maxX &&
37                 this.minZ <= maxZ;
38     }
39
40     @Override
41     protected double getDistanceX(double x) {
42         return x - point.getX();
43     }
44
45     @Override
46     protected double getDistanceY(double y) {
47         return y - point.getY();
48     }
49
50     @Override
51     protected double getDistanceZ(double z) {
52         return z - point.getZ();
53     }
54
55     public double getRadius() {
56         return radius;
57     }
58
59     public Point getPoint() {
60         return point;
61     }
62
63     @Override
64     public AbstractRenderer<?> getRenderer() {
65         return RENDERER;
66     }
67 }