1 package net
.encode
.wurmesp
.feature
;
3 import com
.wurmonline
.client
.game
.PlayerPosition
;
4 import net
.encode
.wurmesp
.WurmEspMod
;
5 import net
.encode
.wurmesp
.util
.RenderUtils
;
6 import net
.encode
.wurmesp
.util
.TerrainUtils
;
8 public class FeatureTilesWalkable
11 public void refresh() {
12 WurmEspMod
._closeByWalkableTerrain
.clear();
13 WurmEspMod
._terrainBuffer2
= this.world
.getNearTerrainBuffer();
14 PlayerPosition pos
= this.world
.getPlayer().getPos();
15 int px
= pos
.getTileX();
16 int py
= pos
.getTileY();
18 int sx
= px
- size
/ 2;
19 int sy
= py
- size
/ 2;
20 float ox
= this.world
.getRenderOriginX();
21 float oy
= this.world
.getRenderOriginY();
22 for (int x
= 0; x
< size
+ 1; ++x
) {
23 for (int y
= 0; y
< size
+ 1; ++y
) {
26 float curX
= tileX
* 4.0f - ox
;
27 float curY
= tileY
* 4.0f - oy
;
28 float nextX
= (tileX
+ 1.0f) * 4.0f - ox
;
29 float nextY
= (tileY
+ 1.0f) * 4.0f - oy
;
30 float x0
= curX
+ 0.2f;
31 float y0
= curY
+ 0.2f;
32 float x1
= nextX
- 0.2f;
33 float y1
= nextY
- 0.2f;
34 float z0
= WurmEspMod
._terrainBuffer2
.getHeight((int)tileX
, (int)tileY
);
35 float z1
= WurmEspMod
._terrainBuffer2
.getHeight((int)tileX
+ 1, (int)tileY
);
36 float z2
= WurmEspMod
._terrainBuffer2
.getHeight((int)tileX
, (int)tileY
+ 1);
37 float z3
= WurmEspMod
._terrainBuffer2
.getHeight((int)tileX
+ 1, (int)tileY
+ 1);
38 WurmEspMod
._closeByWalkableTerrain
.add(new float[]{x0
, z0
, y0
, x1
, z1
, y0
, x0
, z2
, y1
, x1
, z3
, y1
});
45 if (WurmEspMod
._closeByWalkableTerrain
== null) {
48 WurmEspMod
._closeByWalkableTerrain
.stream().filter(t
-> TerrainUtils
.isNotRideable(t
)).forEachOrdered(t
-> {
49 float[] color
= new float[]{1.0f, 0.0f, 0.0f, 0.5f};
50 int[] indexdata
= new int[]{1, 0, 0, 2, 2, 3, 3, 1};
51 RenderUtils
.renderPrimitiveLines(4, t
, indexdata
, this.queuePick
, color
);