]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/models/BoundingBoxBeacon.java
General performance improvements and serverside fixes
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / models / BoundingBoxBeacon.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.BeaconRenderer;
6 import com.irtimaled.bbor.common.BoundingBoxType;
7 import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
8 import com.irtimaled.bbor.common.models.Coords;
9
10 public class BoundingBoxBeacon extends BoundingBoxCuboid {
11     private static final AbstractRenderer<BoundingBoxBeacon> RENDERER = ClientRenderer.registerRenderer(BoundingBoxBeacon.class, () -> new BeaconRenderer());
12
13     private final Coords coords;
14     private final int level;
15
16     private BoundingBoxBeacon(Coords coords, Coords minCoords, Coords maxCoords, int level, BoundingBoxType type) {
17         super(minCoords, maxCoords, type);
18         this.coords = coords;
19         this.level = level;
20     }
21
22     public static BoundingBoxBeacon from(Coords coords, int level) {
23         return from(coords, level, BoundingBoxType.Beacon);
24     }
25
26     public static BoundingBoxBeacon from(Coords coords, int level, BoundingBoxType type) {
27         int range = 10 + (10 * level);
28         Coords minCoords = new Coords(coords.getX() - range, coords.getY() - range, coords.getZ() - range);
29         Coords maxCoords = new Coords(coords.getX() + range, 324 + range, coords.getZ() + range);
30         return new BoundingBoxBeacon(coords, minCoords, maxCoords, level, type);
31     }
32
33     @Override
34     public int hashCode() {
35         return coords.hashCode();
36     }
37
38     @Override
39     public boolean equals(Object obj) {
40         if (this == obj) return true;
41         if (obj == null || getClass() != obj.getClass()) return false;
42         BoundingBoxBeacon other = (BoundingBoxBeacon) obj;
43         return coords.equals(other.coords);
44     }
45
46     public Coords getCoords() {
47         return coords;
48     }
49
50     public int getLevel() {
51         return level;
52     }
53
54     @Override
55     public AbstractRenderer<?> getRenderer() {
56         return RENDERER;
57     }
58 }