Mk124 (Entwickler der API) war so freundlich die MapAndreas Heightmap mit Shoebill funktionieren zu lassen.
Damit alles funktioniert benötigt ihr folgende Klasse: http://pastebin.com/i9JW5Kt6
Ihr müsst die SAfull.hmap in den "data" Ordner eures Gamemodes / Plugins legen.
Um MapAndreas mit Shoebill zu benutzen, müsst ihr als erstes eine Instanz der MapAndreas Klasse anlegen.
Das funktioniert z.B. so:
MapAndreas mapAndreas = new MapAndreas(new File(getDataDir(), "SAfull.hmap"));
Mit dieser Instanz kann man nun folgende Dinge machen:
float z = mapAndreas.findZ(player.getLocation().x, player.getLocation().y);
Wenn ihr fertig mit dem MapAndreas Objekt seid, und es nicht mehr benötigt, könnt ihr es schließen:
Shoebill wird die HeightMap nicht in den Speicher laden. Das bedeutet das Shoebill nicht mehr Speicher als sonst benötigt!
Es war uns sehr wichtig dies zu ermöglichen, da das SA-MP Plugin ca. 80mb verwendet.
Neben der sehr niedrigen Speicherbelastung ist Shoebill etwas 4 mal schneller im berechnen der Z-Koordinate als PAWN.
Speedtests:
Java:
Ergebnis: 190ms
MapAndreas mapAndreas = new MapAndreas(new File(LvdmGamemode.getInstance().getDataDir(), "SAfull.hmap"));
long milli = System.currentTimeMillis();
for(int i = 0; i < 10000000; i++) {
mapAndreas.findZ(i000, i/3000);
}
player.sendMessage(Color.RED, "* Ms: " + (System.currentTimeMillis() - milli));
Pawn:
Ergebnis: 1004ms
new Float:z;
new tick = GetTickCount();
for(new i = 0; i < 10000000; i++) {
MapAndreas_FindZ_For2DCoord(i%3000, i/3000,z);
}
printf("Difference: %i ms", GetTickCount() - tick);
Ich habe soeben ein Autohaus System für Shoebill releast ([ PLUGIN ] Autohaus System für Shoebill (Java))
//Edit:
Shoebill für 0.3z R2-4 released: http://puu.sh/bGqjO/66ed0bd7bb.zip