Merge dev/client_beck
This commit is contained in:
@@ -3,8 +3,10 @@
|
|||||||
import com.jme3.app.SimpleApplication;
|
import com.jme3.app.SimpleApplication;
|
||||||
import com.simsilica.lemur.GuiGlobals;
|
import com.simsilica.lemur.GuiGlobals;
|
||||||
import pp.mdga.client.acoustic.AcousticHandler;
|
import pp.mdga.client.acoustic.AcousticHandler;
|
||||||
|
import pp.mdga.client.acoustic.MdgaSound;
|
||||||
import pp.mdga.client.animation.AnimationHandler;
|
import pp.mdga.client.animation.AnimationHandler;
|
||||||
import com.jme3.system.AppSettings;
|
import com.jme3.system.AppSettings;
|
||||||
|
import pp.mdga.client.board.BoardHandler;
|
||||||
import pp.mdga.client.view.*;
|
import pp.mdga.client.view.*;
|
||||||
|
|
||||||
public class MdgaApp extends SimpleApplication {
|
public class MdgaApp extends SimpleApplication {
|
||||||
|
|||||||
@@ -9,20 +9,28 @@ enum BoardAsset {
|
|||||||
lw,
|
lw,
|
||||||
marine,
|
marine,
|
||||||
node_home_blue("./node_home/node_home.j3o", "./node_home/node_home_blue_diff.png"),
|
node_home_blue("./node_home/node_home.j3o", "./node_home/node_home_blue_diff.png"),
|
||||||
|
node_wait_blue("./node_home/node_home.j3o", "./node_home/node_home_blue_diff.png"),
|
||||||
node_home_black("./node_home/node_home.j3o", "./node_home/node_home_black_diff.png"),
|
node_home_black("./node_home/node_home.j3o", "./node_home/node_home_black_diff.png"),
|
||||||
|
node_wait_black("./node_home/node_home.j3o", "./node_home/node_home_black_diff.png"),
|
||||||
node_home_green("./node_home/node_home.j3o", "./node_home/node_home_green_diff.png"),
|
node_home_green("./node_home/node_home.j3o", "./node_home/node_home_green_diff.png"),
|
||||||
|
node_wait_green("./node_home/node_home.j3o", "./node_home/node_home_green_diff.png"),
|
||||||
node_home_yellow("./node_home/node_home.j3o", "./node_home/node_home_yellow_diff.png"),
|
node_home_yellow("./node_home/node_home.j3o", "./node_home/node_home_yellow_diff.png"),
|
||||||
|
node_wait_yellow("./node_home/node_home.j3o", "./node_home/node_home_yellow_diff.png"),
|
||||||
node_normal,
|
node_normal,
|
||||||
node_start("./node_normal/node_normal.j3o", "./node_normal/node_start_diff.png"),
|
node_start("./node_normal/node_normal.j3o", "./node_normal/node_start_diff.png"),
|
||||||
node_bonus("./node_normal/node_normal.j3o", "./node_normal/node_bonus_diff.png"),
|
node_bonus("./node_normal/node_normal.j3o", "./node_normal/node_bonus_diff.png"),
|
||||||
radar,
|
radar,
|
||||||
shieldCard,
|
shieldCard,
|
||||||
ship,
|
ship(0.8f),
|
||||||
smallTent,
|
smallTent,
|
||||||
swapCard,
|
swapCard,
|
||||||
tank,
|
tank,
|
||||||
turboCard,
|
turboCard,
|
||||||
world(1.2f);
|
// world(1.2f),
|
||||||
|
world("./world_new/world_new.obj", "./world_new/world_new_diff.png", 1.2f),
|
||||||
|
shield_ring("./shield_ring/shield_ring.obj", null),
|
||||||
|
tree_small("./tree_small/tree_small.obj", "./tree_small/tree_small_diff.png"),
|
||||||
|
tree_big("./tree_big/tree_big.obj", "./tree_big/tree_big_diff.png");
|
||||||
|
|
||||||
private final String modelPath;
|
private final String modelPath;
|
||||||
private final String diffPath;
|
private final String diffPath;
|
||||||
@@ -48,6 +56,12 @@ enum BoardAsset {
|
|||||||
this.size = size;
|
this.size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BoardAsset(String modelPath, String diffPath, float size){
|
||||||
|
this.modelPath = modelPath;
|
||||||
|
this.diffPath = diffPath;
|
||||||
|
this.size = size;
|
||||||
|
}
|
||||||
|
|
||||||
public String getModelPath() {
|
public String getModelPath() {
|
||||||
return modelPath;
|
return modelPath;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,11 @@
|
|||||||
package pp.mdga.client.board;
|
package pp.mdga.client.board;
|
||||||
|
|
||||||
import com.jme3.light.AmbientLight;
|
|
||||||
import com.jme3.light.DirectionalLight;
|
|
||||||
import com.jme3.material.Material;
|
import com.jme3.material.Material;
|
||||||
import com.jme3.math.ColorRGBA;
|
|
||||||
import com.jme3.math.Vector3f;
|
import com.jme3.math.Vector3f;
|
||||||
import com.jme3.renderer.queue.RenderQueue;
|
import com.jme3.renderer.queue.RenderQueue;
|
||||||
import com.jme3.scene.Node;
|
import com.jme3.scene.Node;
|
||||||
import com.jme3.scene.Spatial;
|
import com.jme3.scene.Spatial;
|
||||||
import com.jme3.scene.control.AbstractControl;
|
import com.jme3.scene.control.AbstractControl;
|
||||||
import com.jme3.shadow.DirectionalLightShadowRenderer;
|
|
||||||
import pp.mdga.client.MdgaApp;
|
import pp.mdga.client.MdgaApp;
|
||||||
import pp.mdga.game.Color;
|
import pp.mdga.game.Color;
|
||||||
|
|
||||||
@@ -25,10 +21,14 @@ public class BoardHandler {
|
|||||||
private PileControl drawPile = null;
|
private PileControl drawPile = null;
|
||||||
private PileControl discardPile = null;
|
private PileControl discardPile = null;
|
||||||
|
|
||||||
private ArrayList<NodeControl> infield = new ArrayList<>(40);
|
private ArrayList<NodeControl> infield;
|
||||||
private Map<UUID, PieceControl> pieces;
|
private Map<UUID, PieceControl> pieces;
|
||||||
|
|
||||||
private Map<Color, List<AssetOnMap>> playerMap;
|
private Map<Color, List<AssetOnMap>> colorAssetsMap;
|
||||||
|
private Map<Color, List<NodeControl>> homeNodesMap;
|
||||||
|
private Map<Color, List<NodeControl>> waitingNodesMap;
|
||||||
|
private Map<Color, List<PieceControl>> waitingPiecesMap;
|
||||||
|
private Map<UUID, Color> pieceColor;
|
||||||
|
|
||||||
private Node node = new Node();
|
private Node node = new Node();
|
||||||
|
|
||||||
@@ -38,13 +38,17 @@ public BoardHandler(MdgaApp app) {
|
|||||||
this.app = app;
|
this.app = app;
|
||||||
|
|
||||||
this.pieces = new HashMap<>();
|
this.pieces = new HashMap<>();
|
||||||
this.playerMap = new HashMap<>();
|
this.colorAssetsMap = new HashMap<>();
|
||||||
|
this.infield = new ArrayList<>(40);
|
||||||
|
this.homeNodesMap = new HashMap<>();
|
||||||
|
this.waitingNodesMap = new HashMap<>();
|
||||||
|
this.waitingPiecesMap = new HashMap<>();
|
||||||
|
this.pieceColor = new HashMap<>();
|
||||||
|
|
||||||
|
initMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
initMap();
|
|
||||||
initCamera();
|
|
||||||
|
|
||||||
app.getRootNode().attachChild(node);
|
app.getRootNode().attachChild(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,12 +57,8 @@ public void shutdown() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addFigureToPlayerMap(Color col, AssetOnMap assetOnMap) {
|
private void addFigureToPlayerMap(Color col, AssetOnMap assetOnMap) {
|
||||||
List<AssetOnMap> inMap = playerMap.getOrDefault(col, new ArrayList<>());
|
List<AssetOnMap> inMap = addItemToMapList(colorAssetsMap, col, assetOnMap);
|
||||||
inMap.add(assetOnMap);
|
assert (inMap.size() <= 4) : "BoardView: to many assets for " + col;
|
||||||
|
|
||||||
assert (inMap.size() <= 4) : "to many assets for one player";
|
|
||||||
|
|
||||||
playerMap.put(col, inMap);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initMap() {
|
private void initMap() {
|
||||||
@@ -71,33 +71,21 @@ private void initMap() {
|
|||||||
case cir -> addFigureToPlayerMap(assetToColor(BoardAsset.cir), assetOnMap);
|
case cir -> addFigureToPlayerMap(assetToColor(BoardAsset.cir), assetOnMap);
|
||||||
case marine -> addFigureToPlayerMap(assetToColor(BoardAsset.marine), assetOnMap);
|
case marine -> addFigureToPlayerMap(assetToColor(BoardAsset.marine), assetOnMap);
|
||||||
case node_normal, node_bonus, node_start ->
|
case node_normal, node_bonus, node_start ->
|
||||||
infield.addLast(displayAndControl(assetOnMap, new NodeControl()));
|
infield.add(displayAndControl(assetOnMap, new NodeControl()));
|
||||||
|
case node_home_black -> addHomeNode(homeNodesMap, Color.AIRFORCE, assetOnMap);
|
||||||
|
case node_home_blue -> addHomeNode(homeNodesMap, Color.NAVY, assetOnMap);
|
||||||
|
case node_home_green -> addHomeNode(homeNodesMap, Color.ARMY, assetOnMap);
|
||||||
|
case node_home_yellow -> addHomeNode(homeNodesMap, Color.CYBER, assetOnMap);
|
||||||
|
case node_wait_black -> addHomeNode(waitingNodesMap, Color.AIRFORCE, assetOnMap);
|
||||||
|
case node_wait_blue -> addHomeNode(waitingNodesMap, Color.NAVY, assetOnMap);
|
||||||
|
case node_wait_green -> addHomeNode(waitingNodesMap, Color.ARMY, assetOnMap);
|
||||||
|
case node_wait_yellow -> addHomeNode(waitingNodesMap, Color.CYBER, assetOnMap);
|
||||||
|
|
||||||
default -> displayAsset(assetOnMap);
|
default -> displayAsset(assetOnMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initCamera() {
|
|
||||||
app.getFlyByCamera().setEnabled(true);
|
|
||||||
int zoom = 20;
|
|
||||||
app.getCamera().setLocation(new Vector3f(-zoom, 0, zoom));
|
|
||||||
app.getCamera().lookAt(new Vector3f(0, 0, 0), new Vector3f(0, 0, 1));
|
|
||||||
|
|
||||||
DirectionalLight sun = new DirectionalLight();
|
|
||||||
sun.setColor(ColorRGBA.White);
|
|
||||||
sun.setDirection(new Vector3f(0.3f, 0, -1));
|
|
||||||
app.getRootNode().addLight(sun);
|
|
||||||
|
|
||||||
AmbientLight ambient = new AmbientLight();
|
|
||||||
ambient.setColor(new ColorRGBA(0.3f, 0.3f, 0.3f, 1));
|
|
||||||
app.getRootNode().addLight(ambient);
|
|
||||||
|
|
||||||
int SHADOWMAP_SIZE = 1024 * 8;
|
|
||||||
DirectionalLightShadowRenderer dlsr = new DirectionalLightShadowRenderer(app.getAssetManager(), SHADOWMAP_SIZE, 4);
|
|
||||||
dlsr.setLight(sun);
|
|
||||||
app.getViewPort().addProcessor(dlsr);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Color assetToColor(BoardAsset asset) {
|
private Color assetToColor(BoardAsset asset) {
|
||||||
return switch (asset) {
|
return switch (asset) {
|
||||||
case lw -> Color.AIRFORCE;
|
case lw -> Color.AIRFORCE;
|
||||||
@@ -113,7 +101,7 @@ private Spatial createModel(BoardAsset asset, Vector3f pos, float rot) {
|
|||||||
String texName = asset.getDiffPath();
|
String texName = asset.getDiffPath();
|
||||||
Spatial model = app.getAssetManager().loadModel(modelName);
|
Spatial model = app.getAssetManager().loadModel(modelName);
|
||||||
model.scale(asset.getSize());
|
model.scale(asset.getSize());
|
||||||
model.rotate((float) Math.toRadians(0), 0, (float) Math.toRadians(90 + rot));
|
model.rotate((float) Math.toRadians(0), 0, (float) Math.toRadians(rot));
|
||||||
model.setLocalTranslation(pos);
|
model.setLocalTranslation(pos);
|
||||||
model.setShadowMode(RenderQueue.ShadowMode.CastAndReceive);
|
model.setShadowMode(RenderQueue.ShadowMode.CastAndReceive);
|
||||||
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md");
|
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md");
|
||||||
@@ -127,16 +115,6 @@ private static Vector3f gridToWorld(int x, int y) {
|
|||||||
return new Vector3f(GRID_SIZE * x, GRID_SIZE * y, GRID_ELEVATION);
|
return new Vector3f(GRID_SIZE * x, GRID_SIZE * y, GRID_ELEVATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(Color color, UUID uuid) {
|
|
||||||
List<AssetOnMap> playerAssets = playerMap.get(color);
|
|
||||||
assert (playerAssets != null) : "Assets for Player color are not defined";
|
|
||||||
|
|
||||||
for (AssetOnMap assetOnMap : playerAssets) {
|
|
||||||
pieces.put(uuid, displayAndControl(assetOnMap, new PieceControl()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//displays an assets and return the created asset
|
|
||||||
private Spatial displayAsset(AssetOnMap assetOnMap) {
|
private Spatial displayAsset(AssetOnMap assetOnMap) {
|
||||||
int x = assetOnMap.x();
|
int x = assetOnMap.x();
|
||||||
int y = assetOnMap.y();
|
int y = assetOnMap.y();
|
||||||
@@ -148,4 +126,166 @@ private <T extends AbstractControl> T displayAndControl(AssetOnMap assetOnMap, T
|
|||||||
spatial.addControl(control);
|
spatial.addControl(control);
|
||||||
return control;
|
return control;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void movePieceToNode(PieceControl pieceControl, NodeControl nodeControl){
|
||||||
|
pieceControl.setLocation(nodeControl.getLocation());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addHomeNode(Map<Color, List<NodeControl>> map, Color color, AssetOnMap assetOnMap){
|
||||||
|
List<NodeControl> homeNodes = addItemToMapList(map, color, displayAndControl(assetOnMap, new NodeControl()));
|
||||||
|
assert(homeNodes.size() <= 4) : "BoardView: too many homeNodes for " + color;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float getRotationMove(Vector3f prev, Vector3f next) {
|
||||||
|
Vector3f direction = next.subtract(prev).normalizeLocal();
|
||||||
|
//I had to reverse dir.y, because then it worked.
|
||||||
|
return (float) Math.toDegrees(Math.atan2(direction.x, -direction.y));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void movePiece_rek(UUID uuid, int curIndex, int moveIndex){
|
||||||
|
if (curIndex == moveIndex) return;
|
||||||
|
|
||||||
|
curIndex = (curIndex + 1) % 40;
|
||||||
|
|
||||||
|
PieceControl pieceControl = pieces.get(uuid);
|
||||||
|
NodeControl nodeControl = infield.get(curIndex);
|
||||||
|
|
||||||
|
pieceControl.setRotation(getRotationMove(pieceControl.getLocation(),nodeControl.getLocation()));
|
||||||
|
|
||||||
|
movePieceToNode(pieceControl, nodeControl);
|
||||||
|
|
||||||
|
movePiece_rek(uuid, curIndex, moveIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T, E> List<T> addItemToMapList(Map<E,List<T>> map, E key, T item){
|
||||||
|
List<T> list = map.getOrDefault(key, new ArrayList<>());
|
||||||
|
list.add(item);
|
||||||
|
map.put(key, list);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T, E> List<T> removeItemFromMapList(Map<E,List<T>> map, E key, T item){
|
||||||
|
List<T> list = map.getOrDefault(key, new ArrayList<>());
|
||||||
|
list.remove(item);
|
||||||
|
map.put(key, list);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public methods****************************************************************************************************
|
||||||
|
public void addPlayer(Color color, List<UUID> uuid) {
|
||||||
|
List<AssetOnMap> playerAssets = colorAssetsMap.get(color);
|
||||||
|
assert (playerAssets != null) : "Assets for Player color are not defined";
|
||||||
|
assert (uuid.size() == playerAssets.size()) : "UUID array and playerAssets are not the same size";
|
||||||
|
|
||||||
|
List<NodeControl> waitNodes = waitingNodesMap.get(color);
|
||||||
|
assert(waitNodes.size() == playerAssets.size()) : "BoardHandler: waitNodes size does not match playerAssets size";
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < playerAssets.size(); i++){
|
||||||
|
AssetOnMap assetOnMap = playerAssets.get(i);
|
||||||
|
PieceControl pieceControl = displayAndControl(assetOnMap, new PieceControl(assetOnMap.rot(), app.getAssetManager(), app.getRootNode()));
|
||||||
|
movePieceToNode(pieceControl, waitNodes.get(i));
|
||||||
|
|
||||||
|
pieces.put(uuid.get(i), pieceControl);
|
||||||
|
|
||||||
|
pieceColor.put(uuid.get(i), color);
|
||||||
|
|
||||||
|
addItemToMapList(waitingPiecesMap, color, pieceControl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void moveHomePiece(UUID uuid, int index){
|
||||||
|
Color color = pieceColor.get(uuid);
|
||||||
|
assert(color != null) : "BoardHandler: uuid is not mapped to a color";
|
||||||
|
|
||||||
|
|
||||||
|
List<NodeControl> homeNodes = homeNodesMap.get(color);
|
||||||
|
|
||||||
|
assert(homeNodesMap.size() == 4) : "BoardView: HomeNodes for " + color + " are not defined";
|
||||||
|
|
||||||
|
PieceControl pieceControl = pieces.get(uuid);
|
||||||
|
NodeControl nodeControl = homeNodes.get(index);
|
||||||
|
movePieceToNode(pieceControl, nodeControl);
|
||||||
|
|
||||||
|
//rotate piece in direction of homeNodes
|
||||||
|
NodeControl firstHomeNode = homeNodes.get(0);
|
||||||
|
NodeControl lastHomeNode = homeNodes.get(homeNodes.size()-1);
|
||||||
|
|
||||||
|
pieceControl.setRotation(getRotationMove(firstHomeNode.getLocation(), lastHomeNode.getLocation()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void movePieceStart(UUID uuid, int nodeIndex){
|
||||||
|
Color color = pieceColor.get(uuid);
|
||||||
|
assert(color != null) : "BoardHandler: uuid is not mapped to a color";
|
||||||
|
|
||||||
|
PieceControl pieceControl = pieces.get(uuid);
|
||||||
|
movePieceToNode(pieceControl, infield.get(nodeIndex));
|
||||||
|
|
||||||
|
removeItemFromMapList(waitingPiecesMap, color, pieceControl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void movePiece(UUID uuid, int curIndex, int moveIndex){
|
||||||
|
movePiece_rek(uuid, curIndex, moveIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void throwPiece(UUID uuid){
|
||||||
|
Color color = pieceColor.get(uuid);
|
||||||
|
assert(color != null) : "BoardHandler: uuid is not mapped to a color";
|
||||||
|
|
||||||
|
PieceControl pieceControl = pieces.get(uuid);
|
||||||
|
List<NodeControl> waitNodes = waitingNodesMap.get(color);
|
||||||
|
List<PieceControl> waitPieces = waitingPiecesMap.get(color);
|
||||||
|
|
||||||
|
movePieceToNode(pieceControl, waitNodes.get(waitPieces.size()));
|
||||||
|
pieceControl.rotateInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shieldPiece(UUID uuid){
|
||||||
|
pieces.get(uuid).activateShield();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unshieldPiece(UUID uuid){
|
||||||
|
pieces.get(uuid).deactivateShield();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void suppressShield(UUID uuid){
|
||||||
|
pieces.get(uuid).suppressShield();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void swapPieces(UUID piece1, UUID piece2){
|
||||||
|
PieceControl piece1_control = pieces.get(piece1);
|
||||||
|
PieceControl piece2_control = pieces.get(piece2);
|
||||||
|
|
||||||
|
assert(piece1_control != null) : "BoardHandler: swap: piece1 UUID is not valid";
|
||||||
|
assert(piece2_control != null) : "BoardHandler: swap: piece2 UUID is not valid";
|
||||||
|
|
||||||
|
float rot1 = piece1_control.getRotation();
|
||||||
|
float rot2 = piece2_control.getRotation();
|
||||||
|
|
||||||
|
piece1_control.setRotation(rot2);
|
||||||
|
piece2_control.setRotation(rot1);
|
||||||
|
|
||||||
|
Vector3f pos1 = piece1_control.getLocation();
|
||||||
|
Vector3f pos2 = piece2_control.getLocation();
|
||||||
|
|
||||||
|
piece1_control.setLocation(pos2);
|
||||||
|
piece2_control.setLocation(pos1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void test(UUID uuid){
|
||||||
|
System.out.println((float) Math.toDegrees(Math.atan2(1,0)));
|
||||||
|
System.out.println((float) Math.toDegrees(Math.atan2(-1,0)));
|
||||||
|
System.out.println((float) Math.toDegrees(Math.atan2(0,1)));
|
||||||
|
System.out.println((float) Math.toDegrees(Math.atan2(0,-1)));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println(pieces.get(uuid).getRotation());
|
||||||
|
|
||||||
|
pieces.get(uuid).setRotation(-90);
|
||||||
|
|
||||||
|
System.out.println(pieces.get(uuid).getRotation());
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package pp.mdga.client.board;
|
||||||
|
|
||||||
|
import com.jme3.light.AmbientLight;
|
||||||
|
import com.jme3.light.DirectionalLight;
|
||||||
|
import com.jme3.math.ColorRGBA;
|
||||||
|
import com.jme3.math.Vector3f;
|
||||||
|
import com.jme3.shadow.DirectionalLightShadowRenderer;
|
||||||
|
import pp.mdga.client.MdgaApp;
|
||||||
|
|
||||||
|
public class CameraHandler {
|
||||||
|
MdgaApp app;
|
||||||
|
|
||||||
|
|
||||||
|
private static final int SHADOWMAP_SIZE = 1024 * 8;
|
||||||
|
|
||||||
|
|
||||||
|
public CameraHandler(MdgaApp app){
|
||||||
|
this.app = app;
|
||||||
|
initCamera();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initCamera() {
|
||||||
|
app.getFlyByCamera().setEnabled(true);
|
||||||
|
int zoom = 15;
|
||||||
|
app.getCamera().setLocation(new Vector3f(-zoom, 0, zoom));
|
||||||
|
app.getCamera().lookAt(new Vector3f(0, 0, 0), new Vector3f(0, 0, 1));
|
||||||
|
|
||||||
|
DirectionalLight sun = new DirectionalLight();
|
||||||
|
sun.setColor(ColorRGBA.White);
|
||||||
|
sun.setDirection(new Vector3f(0.3f, 0, -1));
|
||||||
|
app.getRootNode().addLight(sun);
|
||||||
|
|
||||||
|
AmbientLight ambient = new AmbientLight();
|
||||||
|
ambient.setColor(new ColorRGBA(0.3f, 0.3f, 0.3f, 1));
|
||||||
|
app.getRootNode().addLight(ambient);
|
||||||
|
|
||||||
|
DirectionalLightShadowRenderer dlsr = new DirectionalLightShadowRenderer(app.getAssetManager(), SHADOWMAP_SIZE, 4);
|
||||||
|
dlsr.setLight(sun);
|
||||||
|
app.getViewPort().addProcessor(dlsr);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -70,6 +70,10 @@ private static BoardAsset getLoadedAsset(String assetName) {
|
|||||||
case "node_home_yellow" -> BoardAsset.node_home_yellow;
|
case "node_home_yellow" -> BoardAsset.node_home_yellow;
|
||||||
case "node_home_black" -> BoardAsset.node_home_black;
|
case "node_home_black" -> BoardAsset.node_home_black;
|
||||||
case "node_home_green" -> BoardAsset.node_home_green;
|
case "node_home_green" -> BoardAsset.node_home_green;
|
||||||
|
case "node_wait_blue" -> BoardAsset.node_wait_blue;
|
||||||
|
case "node_wait_yellow" -> BoardAsset.node_wait_yellow;
|
||||||
|
case "node_wait_black" -> BoardAsset.node_wait_black;
|
||||||
|
case "node_wait_green" -> BoardAsset.node_wait_green;
|
||||||
case "world" -> BoardAsset.world;
|
case "world" -> BoardAsset.world;
|
||||||
case "jet" -> BoardAsset.jet;
|
case "jet" -> BoardAsset.jet;
|
||||||
case "big_tent" -> BoardAsset.bigTent;
|
case "big_tent" -> BoardAsset.bigTent;
|
||||||
@@ -77,6 +81,8 @@ private static BoardAsset getLoadedAsset(String assetName) {
|
|||||||
case "radar" -> BoardAsset.radar;
|
case "radar" -> BoardAsset.radar;
|
||||||
case "ship" -> BoardAsset.ship;
|
case "ship" -> BoardAsset.ship;
|
||||||
case "tank" -> BoardAsset.tank;
|
case "tank" -> BoardAsset.tank;
|
||||||
|
case "tree_small" -> BoardAsset.tree_small;
|
||||||
|
case "tree_big" -> BoardAsset.tree_big;
|
||||||
default -> throw new IllegalStateException("Unexpected value: " + assetName);
|
default -> throw new IllegalStateException("Unexpected value: " + assetName);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package pp.mdga.client.board;
|
package pp.mdga.client.board;
|
||||||
|
|
||||||
|
import com.jme3.math.Vector3f;
|
||||||
import com.jme3.renderer.RenderManager;
|
import com.jme3.renderer.RenderManager;
|
||||||
import com.jme3.renderer.ViewPort;
|
import com.jme3.renderer.ViewPort;
|
||||||
import com.jme3.scene.control.AbstractControl;
|
import com.jme3.scene.control.AbstractControl;
|
||||||
@@ -8,11 +9,14 @@ public class NodeControl extends AbstractControl {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void controlUpdate(float v) {
|
protected void controlUpdate(float v) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void controlRender(RenderManager renderManager, ViewPort viewPort) {
|
protected void controlRender(RenderManager renderManager, ViewPort viewPort) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Vector3f getLocation(){
|
||||||
|
return this.getSpatial().getLocalTranslation();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,113 @@
|
|||||||
package pp.mdga.client.board;
|
package pp.mdga.client.board;
|
||||||
|
|
||||||
|
import com.jme3.asset.AssetManager;
|
||||||
|
import com.jme3.material.Material;
|
||||||
|
import com.jme3.material.RenderState;
|
||||||
|
import com.jme3.math.ColorRGBA;
|
||||||
|
import com.jme3.math.Quaternion;
|
||||||
|
import com.jme3.math.Vector3f;
|
||||||
import com.jme3.renderer.RenderManager;
|
import com.jme3.renderer.RenderManager;
|
||||||
import com.jme3.renderer.ViewPort;
|
import com.jme3.renderer.ViewPort;
|
||||||
|
import com.jme3.renderer.queue.RenderQueue;
|
||||||
|
import com.jme3.scene.Node;
|
||||||
|
import com.jme3.scene.Spatial;
|
||||||
import com.jme3.scene.control.AbstractControl;
|
import com.jme3.scene.control.AbstractControl;
|
||||||
|
|
||||||
public class PieceControl extends AbstractControl {
|
public class PieceControl extends AbstractControl {
|
||||||
|
private float rotation;
|
||||||
|
private final float initRotation;
|
||||||
|
private AssetManager assetManager;
|
||||||
|
private Spatial shieldRing;
|
||||||
|
private Node rootNode;
|
||||||
|
private Material shield_mat;
|
||||||
|
|
||||||
|
private static final float SHIELD_SPEED = 1f;
|
||||||
|
private static final float SHIELD_TRANSPARENCY = 0.6f;
|
||||||
|
private static final ColorRGBA SHIELD_COLOR = new ColorRGBA(0, 0.9f, 1, SHIELD_TRANSPARENCY);
|
||||||
|
private static final ColorRGBA SHIELD_SUPPRESSED_COLOR = new ColorRGBA(1f, 0.5f, 0, SHIELD_TRANSPARENCY);
|
||||||
|
private static final float SHIELD_Z = 0f;
|
||||||
|
|
||||||
|
public PieceControl(float initRotation, AssetManager assetManager, Node rootNode){
|
||||||
|
super();
|
||||||
|
this.initRotation = initRotation;
|
||||||
|
this.assetManager = assetManager;
|
||||||
|
this.shieldRing = null;
|
||||||
|
this.rootNode = rootNode;
|
||||||
|
|
||||||
|
|
||||||
|
this.shield_mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
|
||||||
|
this.shield_mat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getRotation() {
|
||||||
|
return (float) Math.toDegrees(this.spatial.getLocalRotation().toAngleAxis(new Vector3f(0,0,1)));
|
||||||
|
// return rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRotation(float rot){
|
||||||
|
Quaternion quaternion = new Quaternion();
|
||||||
|
quaternion.fromAngleAxis((float) Math.toRadians(rot), new Vector3f(0,0,1));
|
||||||
|
|
||||||
|
this.spatial.setLocalRotation(quaternion);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// this.getSpatial().rotate(0, 0, (float) Math.toRadians(rot));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector3f getLocation(){
|
||||||
|
return this.getSpatial().getLocalTranslation();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void controlUpdate(float v) {
|
protected void controlUpdate(float delta) {
|
||||||
|
if(shieldRing != null){
|
||||||
|
shieldRing.rotate(0, 0, delta * SHIELD_SPEED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void controlRender(RenderManager renderManager, ViewPort viewPort) {
|
protected void controlRender(RenderManager renderManager, ViewPort viewPort) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setLocation(Vector3f loc){
|
||||||
|
this.getSpatial().setLocalTranslation(loc);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSpatial(Spatial spatial){
|
||||||
|
super.setSpatial(spatial);
|
||||||
|
if(spatial != null){
|
||||||
|
setRotation(this.initRotation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rotateInit() {
|
||||||
|
// rotate(rotation - initRotation);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void activateShield(){
|
||||||
|
shieldRing = assetManager.loadModel(BoardAsset.shield_ring.getModelPath());
|
||||||
|
shieldRing.scale(1f);
|
||||||
|
shieldRing.rotate((float) Math.toRadians(0), 0, (float) Math.toRadians(0));
|
||||||
|
shieldRing.setLocalTranslation(spatial.getLocalTranslation().add(new Vector3f(0,0,SHIELD_Z)));
|
||||||
|
|
||||||
|
|
||||||
|
shieldRing.setQueueBucket(RenderQueue.Bucket.Transparent); // Render in the transparent bucket
|
||||||
|
shield_mat.setColor("Color", SHIELD_COLOR);
|
||||||
|
shieldRing.setMaterial(shield_mat);
|
||||||
|
|
||||||
|
rootNode.attachChild(shieldRing);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deactivateShield(){
|
||||||
|
rootNode.detachChild(shieldRing);
|
||||||
|
shieldRing = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void suppressShield(){
|
||||||
|
assert(shieldRing != null) : "PieceControl: shieldRing is not set";
|
||||||
|
shield_mat.setColor("Color", SHIELD_SUPPRESSED_COLOR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package pp.mdga.client.board;
|
||||||
|
|
||||||
|
public enum Rotation {
|
||||||
|
UP,
|
||||||
|
RIGHT,
|
||||||
|
DOWN,
|
||||||
|
LEFT,
|
||||||
|
UP_LEFT,
|
||||||
|
UP_RIGHT,
|
||||||
|
DOWN_RIGHT,
|
||||||
|
DOWN_LEFT
|
||||||
|
}
|
||||||
@@ -1,65 +1,68 @@
|
|||||||
world 0,0 0
|
world 0,0 90
|
||||||
|
|
||||||
|
#tree_small 1,1 0
|
||||||
|
#tree_big 0,0 0
|
||||||
|
|
||||||
#Marine Pos
|
#Marine Pos
|
||||||
marine 4,-5 180
|
marine 4,-5 -90
|
||||||
marine 4,-4 180
|
marine 4,-4 -90
|
||||||
marine 5,-4 180
|
marine 5,-4 -90
|
||||||
marine 5,-5 180
|
marine 5,-5 -90
|
||||||
|
|
||||||
#Blue (Marine) Home Node
|
#Blue (Marine) wait Node
|
||||||
node_home_blue 4,-5 0
|
node_wait_blue 4,-5 0
|
||||||
node_home_blue 4,-4 0
|
node_wait_blue 4,-4 0
|
||||||
node_home_blue 5,-4 0
|
node_wait_blue 5,-4 0
|
||||||
node_home_blue 5,-5 0
|
node_wait_blue 5,-5 0
|
||||||
|
|
||||||
#Lw Pos
|
#Lw Pos
|
||||||
lw -5,4 0
|
lw -5,4 90
|
||||||
lw -4,4 0
|
lw -4,4 90
|
||||||
lw -4,5 0
|
lw -4,5 90
|
||||||
lw -5,5 0
|
lw -5,5 90
|
||||||
|
|
||||||
#Black (Lw) Home Node
|
#Black (Lw) wait Node
|
||||||
node_home_black -5,4 0
|
node_wait_black -5,4 0
|
||||||
node_home_black -4,4 0
|
node_wait_black -4,4 0
|
||||||
node_home_black -4,5 0
|
node_wait_black -4,5 0
|
||||||
node_home_black -5,5 0
|
node_wait_black -5,5 0
|
||||||
|
|
||||||
#Heer Pos
|
#Heer Pos
|
||||||
heer -4,-5 90
|
heer -4,-5 180
|
||||||
heer -4,-4 90
|
heer -4,-4 180
|
||||||
heer -5,-4 90
|
heer -5,-4 180
|
||||||
heer -5,-5 90
|
heer -5,-5 180
|
||||||
|
|
||||||
#Green (Heer) Home Node
|
#Green (Heer) Wait Node
|
||||||
node_home_green -4,-5 0
|
node_wait_green -4,-5 0
|
||||||
node_home_green -4,-4 0
|
node_wait_green -4,-4 0
|
||||||
node_home_green -5,-4 0
|
node_wait_green -5,-4 0
|
||||||
node_home_green -5,-5 0
|
node_wait_green -5,-5 0
|
||||||
|
|
||||||
#CIR Pos
|
#CIR Pos
|
||||||
cir 4,5 -90
|
cir 4,5 0
|
||||||
cir 4,4 -90
|
cir 4,4 0
|
||||||
cir 5,4 -90
|
cir 5,4 0
|
||||||
cir 5,5 -90
|
cir 5,5 0
|
||||||
|
|
||||||
#Assets
|
#Assets
|
||||||
jet -10,-1 -45
|
jet -10,-1 45
|
||||||
ship 11,0 79
|
ship 11,0 169
|
||||||
big_tent -9,-7 40
|
big_tent -9,-7 130
|
||||||
big_tent 7,-10 135
|
big_tent 7,-10 225
|
||||||
small_tent -9,7 -45
|
small_tent -9,7 45
|
||||||
small_tent -10,5 -30
|
small_tent -10,5 60
|
||||||
radar 0,10 -110
|
radar 0,10 -20
|
||||||
small_tent 6,8 100
|
small_tent 6,8 190
|
||||||
small_tent 8,7 70
|
small_tent 8,7 160
|
||||||
tank -1,-10 45
|
tank -1,-10 135
|
||||||
|
|
||||||
|
|
||||||
#Yellow (CIR) Home Node
|
#Yellow (CIR) wait Node
|
||||||
node_home_yellow 4,5 0
|
node_wait_yellow 4,5 0
|
||||||
node_home_yellow 4,4 0
|
node_wait_yellow 4,4 0
|
||||||
node_home_yellow 5,4 0
|
node_wait_yellow 5,4 0
|
||||||
node_home_yellow 5,5 0
|
node_wait_yellow 5,5 0
|
||||||
|
|
||||||
#Nodes für Map
|
#Nodes für Map
|
||||||
node_start -5,1 0
|
node_start -5,1 0
|
||||||
@@ -105,22 +108,22 @@ node -5,0 0
|
|||||||
|
|
||||||
|
|
||||||
#Node Home
|
#Node Home
|
||||||
node_home_green 0,-1 0
|
|
||||||
node_home_green 0,-2 0
|
|
||||||
node_home_green 0,-3 0
|
|
||||||
node_home_green 0,-4 0
|
|
||||||
|
|
||||||
node_home_yellow 0,1 0
|
|
||||||
node_home_yellow 0,2 0
|
|
||||||
node_home_yellow 0,3 0
|
|
||||||
node_home_yellow 0,4 0
|
|
||||||
|
|
||||||
node_home_blue 1,0 0
|
|
||||||
node_home_blue 2,0 0
|
|
||||||
node_home_blue 3,0 0
|
|
||||||
node_home_blue 4,0 0
|
|
||||||
|
|
||||||
node_home_black -1,0 0
|
|
||||||
node_home_black -2,0 0
|
|
||||||
node_home_black -3,0 0
|
|
||||||
node_home_black -4,0 0
|
node_home_black -4,0 0
|
||||||
|
node_home_black -3,0 0
|
||||||
|
node_home_black -2,0 0
|
||||||
|
node_home_black -1,0 0
|
||||||
|
|
||||||
|
node_home_green 0,-4 0
|
||||||
|
node_home_green 0,-3 0
|
||||||
|
node_home_green 0,-2 0
|
||||||
|
node_home_green 0,-1 0
|
||||||
|
|
||||||
|
node_home_yellow 0,4 0
|
||||||
|
node_home_yellow 0,3 0
|
||||||
|
node_home_yellow 0,2 0
|
||||||
|
node_home_yellow 0,1 0
|
||||||
|
|
||||||
|
node_home_blue 4,0 0
|
||||||
|
node_home_blue 3,0 0
|
||||||
|
node_home_blue 2,0 0
|
||||||
|
node_home_blue 1,0 0
|
||||||
|
|||||||
@@ -0,0 +1,616 @@
|
|||||||
|
# Blender 3.6.5
|
||||||
|
# www.blender.org
|
||||||
|
o shield
|
||||||
|
v 0.329363 -0.615745 1.151866
|
||||||
|
v -0.000000 -0.615745 0.415793
|
||||||
|
v -0.000000 -0.615745 1.151866
|
||||||
|
v 0.329363 -0.615745 1.092511
|
||||||
|
v -0.000000 -0.615745 0.415793
|
||||||
|
v 0.326010 -0.615745 0.996204
|
||||||
|
v 0.316022 -0.615745 0.901858
|
||||||
|
v 0.299600 -0.615745 0.811392
|
||||||
|
v 0.277080 -0.615745 0.726650
|
||||||
|
v 0.248920 -0.615745 0.649355
|
||||||
|
v 0.215692 -0.615745 0.581082
|
||||||
|
v 0.178074 -0.615745 0.523220
|
||||||
|
v 0.136832 -0.615745 0.476947
|
||||||
|
v 0.092804 -0.615745 0.443205
|
||||||
|
v 0.046887 -0.615745 0.422681
|
||||||
|
v -0.329363 -0.615745 1.151866
|
||||||
|
v -0.329363 -0.615745 1.092511
|
||||||
|
v -0.326010 -0.615745 0.996204
|
||||||
|
v -0.316022 -0.615745 0.901858
|
||||||
|
v -0.299600 -0.615745 0.811392
|
||||||
|
v -0.277080 -0.615745 0.726650
|
||||||
|
v -0.248920 -0.615745 0.649355
|
||||||
|
v -0.215692 -0.615745 0.581082
|
||||||
|
v -0.178075 -0.615745 0.523220
|
||||||
|
v -0.136832 -0.615745 0.476947
|
||||||
|
v -0.092804 -0.615745 0.443205
|
||||||
|
v -0.046887 -0.615745 0.422681
|
||||||
|
v 0.329363 -0.590929 1.151866
|
||||||
|
v -0.000000 -0.590929 1.151866
|
||||||
|
v -0.000000 -0.590929 0.415793
|
||||||
|
v -0.000000 -0.590929 0.415793
|
||||||
|
v 0.046887 -0.590929 0.422681
|
||||||
|
v 0.092804 -0.590929 0.443205
|
||||||
|
v 0.136832 -0.590929 0.476947
|
||||||
|
v 0.178074 -0.590929 0.523220
|
||||||
|
v 0.215692 -0.590929 0.581082
|
||||||
|
v 0.248920 -0.590929 0.649355
|
||||||
|
v 0.277080 -0.590929 0.726650
|
||||||
|
v 0.299600 -0.590929 0.811392
|
||||||
|
v 0.316022 -0.590929 0.901858
|
||||||
|
v 0.326010 -0.590929 0.996204
|
||||||
|
v 0.329363 -0.590929 1.092511
|
||||||
|
v -0.329363 -0.590929 1.151866
|
||||||
|
v -0.046887 -0.590929 0.422681
|
||||||
|
v -0.092804 -0.590929 0.443205
|
||||||
|
v -0.136832 -0.590929 0.476947
|
||||||
|
v -0.178075 -0.590929 0.523220
|
||||||
|
v -0.215692 -0.590929 0.581082
|
||||||
|
v -0.248920 -0.590929 0.649355
|
||||||
|
v -0.277080 -0.590929 0.726650
|
||||||
|
v -0.299600 -0.590929 0.811392
|
||||||
|
v -0.316022 -0.590929 0.901858
|
||||||
|
v -0.326010 -0.590929 0.996204
|
||||||
|
v -0.329363 -0.590929 1.092511
|
||||||
|
v -0.000000 0.740870 0.678108
|
||||||
|
v -0.000000 0.740870 1.005550
|
||||||
|
v 0.144537 0.726635 0.678108
|
||||||
|
v 0.144537 0.726635 1.005550
|
||||||
|
v 0.283519 0.684475 0.678108
|
||||||
|
v 0.283519 0.684475 1.005550
|
||||||
|
v 0.411605 0.616011 0.678108
|
||||||
|
v 0.411605 0.616011 1.005550
|
||||||
|
v 0.523874 0.523875 0.678108
|
||||||
|
v 0.523874 0.523874 1.005550
|
||||||
|
v 0.616011 0.411606 0.678108
|
||||||
|
v 0.616011 0.411606 1.005550
|
||||||
|
v 0.684475 0.283519 0.678108
|
||||||
|
v 0.684475 0.283519 1.005550
|
||||||
|
v 0.726635 0.144537 0.678108
|
||||||
|
v 0.726635 0.144537 1.005550
|
||||||
|
v 0.740870 0.000000 0.678108
|
||||||
|
v 0.740870 0.000000 1.005550
|
||||||
|
v 0.726635 -0.144537 0.678108
|
||||||
|
v 0.726635 -0.144537 1.005550
|
||||||
|
v 0.684475 -0.283519 0.678108
|
||||||
|
v 0.684475 -0.283519 1.005550
|
||||||
|
v 0.616011 -0.411605 0.678108
|
||||||
|
v 0.616011 -0.411605 1.005550
|
||||||
|
v 0.523874 -0.523874 0.678108
|
||||||
|
v 0.523874 -0.523874 1.005550
|
||||||
|
v 0.411605 -0.616011 0.678108
|
||||||
|
v 0.411605 -0.616011 1.005550
|
||||||
|
v -0.411606 -0.616011 0.678108
|
||||||
|
v -0.411606 -0.616011 1.005550
|
||||||
|
v -0.523875 -0.523874 0.678108
|
||||||
|
v -0.523875 -0.523875 1.005550
|
||||||
|
v -0.616011 -0.411606 0.678108
|
||||||
|
v -0.616011 -0.411606 1.005550
|
||||||
|
v -0.684475 -0.283519 0.678108
|
||||||
|
v -0.684475 -0.283519 1.005550
|
||||||
|
v -0.726635 -0.144537 0.678108
|
||||||
|
v -0.726635 -0.144537 1.005550
|
||||||
|
v -0.740870 -0.000000 0.678108
|
||||||
|
v -0.740870 -0.000000 1.005550
|
||||||
|
v -0.726635 0.144537 0.678108
|
||||||
|
v -0.726635 0.144537 1.005550
|
||||||
|
v -0.684475 0.283519 0.678108
|
||||||
|
v -0.684475 0.283519 1.005550
|
||||||
|
v -0.616011 0.411606 0.678108
|
||||||
|
v -0.616011 0.411606 1.005550
|
||||||
|
v -0.523875 0.523874 0.678108
|
||||||
|
v -0.523875 0.523874 1.005550
|
||||||
|
v -0.411606 0.616011 0.678108
|
||||||
|
v -0.411606 0.616011 1.005550
|
||||||
|
v -0.283519 0.684475 0.678108
|
||||||
|
v -0.283519 0.684475 1.005550
|
||||||
|
v -0.144537 0.726635 0.678108
|
||||||
|
v -0.144537 0.726635 1.005550
|
||||||
|
v -0.142275 0.717330 1.005550
|
||||||
|
v -0.142275 0.717330 0.678108
|
||||||
|
v -0.279082 0.675829 1.005550
|
||||||
|
v -0.279082 0.675829 0.678108
|
||||||
|
v -0.405165 0.608437 1.005550
|
||||||
|
v -0.405165 0.608437 0.678108
|
||||||
|
v -0.515677 0.517742 1.005550
|
||||||
|
v -0.515677 0.517742 0.678108
|
||||||
|
v -0.606372 0.407230 1.005550
|
||||||
|
v -0.606372 0.407230 0.678108
|
||||||
|
v -0.673764 0.281147 1.005550
|
||||||
|
v -0.673764 0.281147 0.678108
|
||||||
|
v -0.715265 0.144340 1.005550
|
||||||
|
v -0.715265 0.144340 0.678108
|
||||||
|
v -0.729277 0.002065 1.005550
|
||||||
|
v -0.729277 0.002065 0.678108
|
||||||
|
v -0.715265 -0.140210 1.005550
|
||||||
|
v -0.715265 -0.140210 0.678108
|
||||||
|
v -0.673764 -0.277017 1.005550
|
||||||
|
v -0.673764 -0.277017 0.678108
|
||||||
|
v -0.606372 -0.403100 1.005550
|
||||||
|
v -0.606372 -0.403100 0.678108
|
||||||
|
v -0.515677 -0.513612 1.005550
|
||||||
|
v -0.515677 -0.513612 0.678108
|
||||||
|
v -0.405165 -0.604307 0.678108
|
||||||
|
v -0.405165 -0.604307 1.005550
|
||||||
|
v 0.405165 -0.604307 1.005550
|
||||||
|
v 0.405165 -0.604307 0.678108
|
||||||
|
v 0.515677 -0.513612 1.005550
|
||||||
|
v 0.515677 -0.513612 0.678108
|
||||||
|
v 0.606372 -0.403100 1.005550
|
||||||
|
v 0.606372 -0.403100 0.678108
|
||||||
|
v 0.673764 -0.277017 1.005550
|
||||||
|
v 0.673764 -0.277017 0.678108
|
||||||
|
v 0.715264 -0.140210 1.005550
|
||||||
|
v 0.715264 -0.140210 0.678108
|
||||||
|
v 0.729277 0.002065 1.005550
|
||||||
|
v 0.729277 0.002065 0.678108
|
||||||
|
v 0.715264 0.144340 1.005550
|
||||||
|
v 0.715264 0.144340 0.678108
|
||||||
|
v 0.673764 0.281147 1.005550
|
||||||
|
v 0.673764 0.281147 0.678108
|
||||||
|
v 0.606372 0.407230 1.005550
|
||||||
|
v 0.606372 0.407230 0.678108
|
||||||
|
v 0.515677 0.517742 1.005550
|
||||||
|
v 0.515677 0.517742 0.678108
|
||||||
|
v 0.405165 0.608437 1.005550
|
||||||
|
v 0.405165 0.608437 0.678108
|
||||||
|
v 0.279082 0.675829 1.005550
|
||||||
|
v 0.279082 0.675829 0.678108
|
||||||
|
v -0.000000 0.731342 1.005550
|
||||||
|
v 0.142275 0.717330 1.005550
|
||||||
|
v 0.142275 0.717330 0.678108
|
||||||
|
v -0.000000 0.731342 0.678108
|
||||||
|
vn -0.0000 -0.0000 1.0000
|
||||||
|
vn -0.9839 -0.0000 0.1786
|
||||||
|
vn 0.9994 -0.0000 0.0348
|
||||||
|
vn -0.4081 -0.0000 0.9130
|
||||||
|
vn 0.7465 -0.0000 0.6654
|
||||||
|
vn -0.9944 -0.0000 0.1053
|
||||||
|
vn 1.0000 -0.0000 -0.0000
|
||||||
|
vn -0.6083 -0.0000 0.7937
|
||||||
|
vn 0.8384 -0.0000 0.5451
|
||||||
|
vn -0.9994 -0.0000 0.0348
|
||||||
|
vn -0.7465 -0.0000 0.6654
|
||||||
|
vn 0.8992 -0.0000 0.4376
|
||||||
|
vn -1.0000 -0.0000 -0.0000
|
||||||
|
vn -0.8384 -0.0000 0.5451
|
||||||
|
vn 0.9396 -0.0000 0.3423
|
||||||
|
vn -0.0000 -0.0000 -1.0000
|
||||||
|
vn -0.8992 -0.0000 0.4376
|
||||||
|
vn 0.9665 -0.0000 0.2568
|
||||||
|
vn 0.1453 -0.0000 0.9894
|
||||||
|
vn -0.9396 -0.0000 0.3423
|
||||||
|
vn 0.9839 -0.0000 0.1786
|
||||||
|
vn 0.4081 -0.0000 0.9130
|
||||||
|
vn -0.9665 -0.0000 0.2568
|
||||||
|
vn 0.9944 -0.0000 0.1053
|
||||||
|
vn -0.1453 -0.0000 0.9894
|
||||||
|
vn 0.6083 -0.0000 0.7937
|
||||||
|
vn 0.0980 0.9952 -0.0000
|
||||||
|
vn 0.2903 0.9569 -0.0000
|
||||||
|
vn 0.4714 0.8819 -0.0000
|
||||||
|
vn 0.6344 0.7730 -0.0000
|
||||||
|
vn 0.7730 0.6344 -0.0000
|
||||||
|
vn 0.8819 0.4714 -0.0000
|
||||||
|
vn 0.9569 0.2903 -0.0000
|
||||||
|
vn 0.9952 0.0980 -0.0000
|
||||||
|
vn 0.9952 -0.0980 -0.0000
|
||||||
|
vn 0.9569 -0.2903 -0.0000
|
||||||
|
vn 0.8819 -0.4714 -0.0000
|
||||||
|
vn 0.7730 -0.6344 -0.0000
|
||||||
|
vn 0.6344 -0.7730 -0.0000
|
||||||
|
vn -0.6344 -0.7730 -0.0000
|
||||||
|
vn -0.7730 -0.6344 -0.0000
|
||||||
|
vn -0.8819 -0.4714 -0.0000
|
||||||
|
vn -0.9569 -0.2903 -0.0000
|
||||||
|
vn -0.9952 -0.0980 -0.0000
|
||||||
|
vn -0.9952 0.0980 -0.0000
|
||||||
|
vn -0.9569 0.2903 -0.0000
|
||||||
|
vn -0.8819 0.4714 -0.0000
|
||||||
|
vn -0.7730 0.6344 -0.0000
|
||||||
|
vn -0.6344 0.7730 -0.0000
|
||||||
|
vn -0.4714 0.8819 -0.0000
|
||||||
|
vn -0.2903 0.9569 -0.0000
|
||||||
|
vn -0.0980 0.9952 -0.0000
|
||||||
|
vn -0.8761 -0.4821 -0.0000
|
||||||
|
vn 0.4714 -0.8819 -0.0000
|
||||||
|
vn -0.4714 -0.8819 -0.0000
|
||||||
|
vn 0.8761 -0.4821 -0.0000
|
||||||
|
vn -0.2903 -0.9569 -0.0000
|
||||||
|
vn -0.0980 -0.9952 -0.0000
|
||||||
|
vn 0.0980 -0.9952 -0.0000
|
||||||
|
vn 0.2903 -0.9569 -0.0000
|
||||||
|
vn -0.0000 1.0000 -0.0000
|
||||||
|
vn -0.0000 -1.0000 -0.0000
|
||||||
|
vn -0.4081 -0.0000 0.9129
|
||||||
|
vn 0.4081 -0.0000 0.9129
|
||||||
|
vt 0.500025 0.000000
|
||||||
|
vt 0.500000 0.000000
|
||||||
|
vt 0.500000 1.000000
|
||||||
|
vt 0.571179 0.009358
|
||||||
|
vt 0.979748 0.660349
|
||||||
|
vt 0.954818 0.537446
|
||||||
|
vt 0.994911 0.788524
|
||||||
|
vt 1.000000 0.919363
|
||||||
|
vt 0.640884 0.037241
|
||||||
|
vt 0.707722 0.083081
|
||||||
|
vt 0.770332 0.145946
|
||||||
|
vt 1.000000 1.000000
|
||||||
|
vt 0.827439 0.224555
|
||||||
|
vt 0.877881 0.317308
|
||||||
|
vt 0.920631 0.422318
|
||||||
|
vt 0.968750 0.500000
|
||||||
|
vt 1.000000 0.500000
|
||||||
|
vt 0.968750 1.000000
|
||||||
|
vt 0.937500 0.500000
|
||||||
|
vt 0.937500 1.000000
|
||||||
|
vt 0.906250 0.500000
|
||||||
|
vt 0.906250 1.000000
|
||||||
|
vt 0.875000 0.500000
|
||||||
|
vt 0.875000 1.000000
|
||||||
|
vt 0.843750 0.500000
|
||||||
|
vt 0.843750 1.000000
|
||||||
|
vt 0.812500 0.500000
|
||||||
|
vt 0.781250 1.000000
|
||||||
|
vt 0.781250 0.500000
|
||||||
|
vt 0.750000 1.000000
|
||||||
|
vt 0.750000 0.500000
|
||||||
|
vt 0.718750 0.500000
|
||||||
|
vt 0.687500 1.000000
|
||||||
|
vt 0.687500 0.500000
|
||||||
|
vt 0.656250 0.500000
|
||||||
|
vt 0.656250 1.000000
|
||||||
|
vt 0.625000 0.500000
|
||||||
|
vt 0.625000 1.000000
|
||||||
|
vt 0.593750 0.500000
|
||||||
|
vt 0.406250 0.500000
|
||||||
|
vt 0.375000 1.000000
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.343750 1.000000
|
||||||
|
vt 0.343750 0.500000
|
||||||
|
vt 0.312500 0.500000
|
||||||
|
vt 0.312500 1.000000
|
||||||
|
vt 0.281250 0.500000
|
||||||
|
vt 0.250000 1.000000
|
||||||
|
vt 0.250000 0.500000
|
||||||
|
vt 0.218750 0.500000
|
||||||
|
vt 0.218750 1.000000
|
||||||
|
vt 0.187500 0.500000
|
||||||
|
vt 0.187500 1.000000
|
||||||
|
vt 0.156250 0.500000
|
||||||
|
vt 0.125000 1.000000
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.093750 0.500000
|
||||||
|
vt 0.093750 1.000000
|
||||||
|
vt 0.062500 0.500000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.062500 1.000000
|
||||||
|
vt 0.031250 0.500000
|
||||||
|
vt 0.000000 0.500000
|
||||||
|
vt 0.281250 1.000000
|
||||||
|
vt 0.593750 1.000000
|
||||||
|
vt 0.156250 1.000000
|
||||||
|
vt 0.718750 1.000000
|
||||||
|
vt 0.812500 1.000000
|
||||||
|
vt 0.406250 1.000000
|
||||||
|
s 0
|
||||||
|
f 5/1/1 2/2/1 3/3/1
|
||||||
|
f 2/2/1 5/1/1 27/4/1
|
||||||
|
f 30/2/1 31/1/1 32/4/1
|
||||||
|
f 31/1/1 30/2/1 29/3/1
|
||||||
|
f 7/5/2 39/6/2 8/6/2
|
||||||
|
f 18/7/3 54/8/3 17/8/3
|
||||||
|
f 15/4/4 33/9/4 32/4/4
|
||||||
|
f 25/10/5 47/11/5 24/11/5
|
||||||
|
f 6/7/6 40/5/6 7/5/6
|
||||||
|
f 17/8/7 43/12/7 16/12/7
|
||||||
|
f 14/9/8 34/10/8 33/9/8
|
||||||
|
f 24/11/9 48/13/9 23/13/9
|
||||||
|
f 4/8/10 41/7/10 6/7/10
|
||||||
|
f 12/11/11 34/10/11 13/10/11
|
||||||
|
f 23/13/12 49/14/12 22/14/12
|
||||||
|
f 1/12/13 42/8/13 4/8/13
|
||||||
|
f 11/13/14 35/11/14 12/11/14
|
||||||
|
f 22/14/15 50/15/15 21/15/15
|
||||||
|
f 3/3/16 28/12/16 1/12/16
|
||||||
|
f 16/12/16 29/3/16 3/3/16
|
||||||
|
f 10/14/17 36/13/17 11/13/17
|
||||||
|
f 21/15/18 51/6/18 20/6/18
|
||||||
|
f 5/1/19 44/4/19 27/4/19
|
||||||
|
f 9/15/20 37/14/20 10/14/20
|
||||||
|
f 20/6/21 52/5/21 19/5/21
|
||||||
|
f 26/9/22 44/4/22 45/9/22
|
||||||
|
f 8/6/23 38/15/23 9/15/23
|
||||||
|
f 19/5/24 53/7/24 18/7/24
|
||||||
|
f 15/4/25 31/1/25 5/1/25
|
||||||
|
f 25/10/26 45/9/26 46/10/26
|
||||||
|
f 56/12/27 57/16/27 55/17/27
|
||||||
|
f 58/18/28 59/19/28 57/16/28
|
||||||
|
f 60/20/29 61/21/29 59/19/29
|
||||||
|
f 62/22/30 63/23/30 61/21/30
|
||||||
|
f 64/24/31 65/25/31 63/23/31
|
||||||
|
f 66/26/32 67/27/32 65/25/32
|
||||||
|
f 67/27/33 70/28/33 69/29/33
|
||||||
|
f 69/29/34 72/30/34 71/31/34
|
||||||
|
f 72/30/35 73/32/35 71/31/35
|
||||||
|
f 73/32/36 76/33/36 75/34/36
|
||||||
|
f 76/33/37 77/35/37 75/34/37
|
||||||
|
f 78/36/38 79/37/38 77/35/38
|
||||||
|
f 80/38/39 81/39/39 79/37/39
|
||||||
|
f 83/40/40 86/41/40 85/42/40
|
||||||
|
f 85/42/41 88/43/41 87/44/41
|
||||||
|
f 88/43/42 89/45/42 87/44/42
|
||||||
|
f 90/46/43 91/47/43 89/45/43
|
||||||
|
f 91/47/44 94/48/44 93/49/44
|
||||||
|
f 94/48/45 95/50/45 93/49/45
|
||||||
|
f 96/51/46 97/52/46 95/50/46
|
||||||
|
f 98/53/47 99/54/47 97/52/47
|
||||||
|
f 99/54/48 102/55/48 101/56/48
|
||||||
|
f 102/55/49 103/57/49 101/56/49
|
||||||
|
f 104/58/50 105/59/50 103/57/50
|
||||||
|
f 56/60/1 109/61/1 159/60/1
|
||||||
|
f 106/62/51 107/63/51 105/59/51
|
||||||
|
f 108/61/52 55/64/52 107/63/52
|
||||||
|
f 94/48/1 125/65/1 123/48/1
|
||||||
|
f 64/24/1 151/26/1 66/26/1
|
||||||
|
f 82/66/53 136/39/53 81/39/53
|
||||||
|
f 80/38/1 135/66/1 82/66/1
|
||||||
|
f 79/37/16 136/39/16 138/37/16
|
||||||
|
f 88/43/1 131/41/1 129/43/1
|
||||||
|
f 87/44/16 132/42/16 85/42/16
|
||||||
|
f 104/58/1 115/55/1 113/58/1
|
||||||
|
f 103/57/16 116/56/16 101/56/16
|
||||||
|
f 58/18/1 157/20/1 60/20/1
|
||||||
|
f 102/55/1 117/67/1 115/55/1
|
||||||
|
f 74/68/1 141/33/1 76/33/1
|
||||||
|
f 95/50/16 124/49/16 93/49/16
|
||||||
|
f 68/69/1 147/28/1 70/28/1
|
||||||
|
f 56/12/1 160/18/1 58/18/1
|
||||||
|
f 72/30/1 143/68/1 74/68/1
|
||||||
|
f 97/52/16 122/50/16 95/50/16
|
||||||
|
f 96/51/1 123/48/1 121/51/1
|
||||||
|
f 112/59/54 113/58/54 114/57/54
|
||||||
|
f 118/54/37 119/53/37 120/52/37
|
||||||
|
f 126/47/34 123/48/34 125/65/34
|
||||||
|
f 130/44/31 131/41/31 132/42/31
|
||||||
|
f 138/37/48 139/36/48 140/35/48
|
||||||
|
f 144/32/45 145/30/45 146/31/45
|
||||||
|
f 150/27/42 151/26/42 152/25/42
|
||||||
|
f 156/21/55 157/20/55 158/19/55
|
||||||
|
f 93/49/16 126/47/16 91/47/16
|
||||||
|
f 60/20/1 155/22/1 62/22/1
|
||||||
|
f 77/35/16 138/37/16 140/35/16
|
||||||
|
f 126/47/33 127/46/33 128/45/33
|
||||||
|
f 128/45/32 129/43/32 130/44/32
|
||||||
|
f 59/19/16 156/21/16 158/19/16
|
||||||
|
f 86/41/1 134/70/1 131/41/1
|
||||||
|
f 67/27/16 148/29/16 150/27/16
|
||||||
|
f 132/42/30 134/70/30 133/40/30
|
||||||
|
f 92/65/1 127/46/1 125/65/1
|
||||||
|
f 136/39/49 137/38/49 138/37/49
|
||||||
|
f 76/33/1 139/36/1 78/36/1
|
||||||
|
f 85/42/16 133/40/16 83/40/16
|
||||||
|
f 140/35/47 141/33/47 142/34/47
|
||||||
|
f 65/25/16 150/27/16 152/25/16
|
||||||
|
f 144/32/46 141/33/46 143/68/46
|
||||||
|
f 75/34/16 140/35/16 142/34/16
|
||||||
|
f 55/64/16 110/63/16 107/63/16
|
||||||
|
f 99/54/16 120/52/16 97/52/16
|
||||||
|
f 83/40/56 134/70/56 84/70/56
|
||||||
|
f 146/31/44 147/28/44 148/29/44
|
||||||
|
f 55/17/16 161/16/16 162/17/16
|
||||||
|
f 108/61/1 111/62/1 109/61/1
|
||||||
|
f 148/29/43 149/69/43 150/27/43
|
||||||
|
f 57/16/16 158/19/16 161/16/16
|
||||||
|
f 63/23/16 152/25/16 154/23/16
|
||||||
|
f 71/31/16 144/32/16 146/31/16
|
||||||
|
f 101/56/16 118/54/16 99/54/16
|
||||||
|
f 152/25/41 153/24/41 154/23/41
|
||||||
|
f 98/53/1 121/51/1 119/53/1
|
||||||
|
f 90/46/1 129/43/1 127/46/1
|
||||||
|
f 154/23/40 155/22/40 156/21/40
|
||||||
|
f 73/32/16 142/34/16 144/32/16
|
||||||
|
f 107/63/16 112/59/16 105/59/16
|
||||||
|
f 70/28/1 145/30/1 72/30/1
|
||||||
|
f 100/67/1 119/53/1 117/67/1
|
||||||
|
f 158/19/57 160/18/57 161/16/57
|
||||||
|
f 69/29/16 146/31/16 148/29/16
|
||||||
|
f 89/45/16 130/44/16 87/44/16
|
||||||
|
f 161/16/58 159/12/58 162/17/58
|
||||||
|
f 62/22/1 153/24/1 64/24/1
|
||||||
|
f 162/64/59 109/61/59 110/63/59
|
||||||
|
f 66/26/1 149/69/1 68/69/1
|
||||||
|
f 110/63/60 111/62/60 112/59/60
|
||||||
|
f 106/62/1 113/58/1 111/62/1
|
||||||
|
f 91/47/16 128/45/16 89/45/16
|
||||||
|
f 61/21/16 154/23/16 156/21/16
|
||||||
|
f 114/57/39 115/55/39 116/56/39
|
||||||
|
f 116/56/38 117/67/38 118/54/38
|
||||||
|
f 105/59/16 114/57/16 103/57/16
|
||||||
|
f 78/36/1 137/38/1 80/38/1
|
||||||
|
f 120/52/36 121/51/36 122/50/36
|
||||||
|
f 122/50/35 123/48/35 124/49/35
|
||||||
|
f 3/3/61 1/12/61 4/8/61
|
||||||
|
f 4/8/61 6/7/61 3/3/61
|
||||||
|
f 6/7/61 7/5/61 3/3/61
|
||||||
|
f 7/5/61 8/6/61 3/3/61
|
||||||
|
f 8/6/61 9/15/61 3/3/61
|
||||||
|
f 9/15/61 10/14/61 3/3/61
|
||||||
|
f 10/14/61 11/13/61 5/1/61
|
||||||
|
f 3/3/61 10/14/61 5/1/61
|
||||||
|
f 11/13/61 12/11/61 5/1/61
|
||||||
|
f 12/11/61 13/10/61 5/1/61
|
||||||
|
f 13/10/61 14/9/61 5/1/61
|
||||||
|
f 14/9/61 15/4/61 5/1/61
|
||||||
|
f 27/4/61 26/9/61 2/2/61
|
||||||
|
f 26/9/61 25/10/61 2/2/61
|
||||||
|
f 25/10/61 24/11/61 2/2/61
|
||||||
|
f 24/11/61 23/13/61 2/2/61
|
||||||
|
f 23/13/61 22/14/61 2/2/61
|
||||||
|
f 22/14/61 21/15/61 3/3/61
|
||||||
|
f 21/15/61 20/6/61 3/3/61
|
||||||
|
f 20/6/61 19/5/61 3/3/61
|
||||||
|
f 19/5/61 18/7/61 3/3/61
|
||||||
|
f 18/7/61 17/8/61 3/3/61
|
||||||
|
f 17/8/61 16/12/61 3/3/61
|
||||||
|
f 22/14/61 3/3/61 2/2/61
|
||||||
|
f 32/4/62 33/9/62 30/2/62
|
||||||
|
f 33/9/62 34/10/62 30/2/62
|
||||||
|
f 34/10/62 35/11/62 30/2/62
|
||||||
|
f 35/11/62 36/13/62 30/2/62
|
||||||
|
f 36/13/62 37/14/62 30/2/62
|
||||||
|
f 37/14/62 38/15/62 29/3/62
|
||||||
|
f 38/15/62 39/6/62 29/3/62
|
||||||
|
f 39/6/62 40/5/62 29/3/62
|
||||||
|
f 40/5/62 41/7/62 29/3/62
|
||||||
|
f 41/7/62 42/8/62 29/3/62
|
||||||
|
f 42/8/62 28/12/62 29/3/62
|
||||||
|
f 37/14/62 29/3/62 30/2/62
|
||||||
|
f 29/3/62 43/12/62 54/8/62
|
||||||
|
f 54/8/62 53/7/62 29/3/62
|
||||||
|
f 53/7/62 52/5/62 29/3/62
|
||||||
|
f 52/5/62 51/6/62 29/3/62
|
||||||
|
f 51/6/62 50/15/62 29/3/62
|
||||||
|
f 50/15/62 49/14/62 29/3/62
|
||||||
|
f 49/14/62 48/13/62 31/1/62
|
||||||
|
f 29/3/62 49/14/62 31/1/62
|
||||||
|
f 48/13/62 47/11/62 31/1/62
|
||||||
|
f 47/11/62 46/10/62 31/1/62
|
||||||
|
f 46/10/62 45/9/62 31/1/62
|
||||||
|
f 45/9/62 44/4/62 31/1/62
|
||||||
|
f 7/5/2 40/5/2 39/6/2
|
||||||
|
f 18/7/3 53/7/3 54/8/3
|
||||||
|
f 15/4/63 14/9/63 33/9/63
|
||||||
|
f 25/10/5 46/10/5 47/11/5
|
||||||
|
f 6/7/6 41/7/6 40/5/6
|
||||||
|
f 17/8/7 54/8/7 43/12/7
|
||||||
|
f 14/9/8 13/10/8 34/10/8
|
||||||
|
f 24/11/9 47/11/9 48/13/9
|
||||||
|
f 4/8/10 42/8/10 41/7/10
|
||||||
|
f 12/11/11 35/11/11 34/10/11
|
||||||
|
f 23/13/12 48/13/12 49/14/12
|
||||||
|
f 1/12/13 28/12/13 42/8/13
|
||||||
|
f 11/13/14 36/13/14 35/11/14
|
||||||
|
f 22/14/15 49/14/15 50/15/15
|
||||||
|
f 3/3/16 29/3/16 28/12/16
|
||||||
|
f 16/12/16 43/12/16 29/3/16
|
||||||
|
f 10/14/17 37/14/17 36/13/17
|
||||||
|
f 21/15/18 50/15/18 51/6/18
|
||||||
|
f 5/1/19 31/1/19 44/4/19
|
||||||
|
f 9/15/20 38/15/20 37/14/20
|
||||||
|
f 20/6/21 51/6/21 52/5/21
|
||||||
|
f 26/9/64 27/4/64 44/4/64
|
||||||
|
f 8/6/23 39/6/23 38/15/23
|
||||||
|
f 19/5/24 52/5/24 53/7/24
|
||||||
|
f 15/4/25 32/4/25 31/1/25
|
||||||
|
f 25/10/26 26/9/26 45/9/26
|
||||||
|
f 56/12/27 58/18/27 57/16/27
|
||||||
|
f 58/18/28 60/20/28 59/19/28
|
||||||
|
f 60/20/29 62/22/29 61/21/29
|
||||||
|
f 62/22/30 64/24/30 63/23/30
|
||||||
|
f 64/24/31 66/26/31 65/25/31
|
||||||
|
f 66/26/32 68/69/32 67/27/32
|
||||||
|
f 67/27/33 68/69/33 70/28/33
|
||||||
|
f 69/29/34 70/28/34 72/30/34
|
||||||
|
f 72/30/35 74/68/35 73/32/35
|
||||||
|
f 73/32/36 74/68/36 76/33/36
|
||||||
|
f 76/33/37 78/36/37 77/35/37
|
||||||
|
f 78/36/38 80/38/38 79/37/38
|
||||||
|
f 80/38/39 82/66/39 81/39/39
|
||||||
|
f 83/40/40 84/70/40 86/41/40
|
||||||
|
f 85/42/41 86/41/41 88/43/41
|
||||||
|
f 88/43/42 90/46/42 89/45/42
|
||||||
|
f 90/46/43 92/65/43 91/47/43
|
||||||
|
f 91/47/44 92/65/44 94/48/44
|
||||||
|
f 94/48/45 96/51/45 95/50/45
|
||||||
|
f 96/51/46 98/53/46 97/52/46
|
||||||
|
f 98/53/47 100/67/47 99/54/47
|
||||||
|
f 99/54/48 100/67/48 102/55/48
|
||||||
|
f 102/55/49 104/58/49 103/57/49
|
||||||
|
f 104/58/50 106/62/50 105/59/50
|
||||||
|
f 56/60/1 108/61/1 109/61/1
|
||||||
|
f 106/62/51 108/61/51 107/63/51
|
||||||
|
f 108/61/52 56/60/52 55/64/52
|
||||||
|
f 94/48/1 92/65/1 125/65/1
|
||||||
|
f 64/24/1 153/24/1 151/26/1
|
||||||
|
f 82/66/53 135/66/53 136/39/53
|
||||||
|
f 80/38/1 137/38/1 135/66/1
|
||||||
|
f 79/37/16 81/39/16 136/39/16
|
||||||
|
f 88/43/1 86/41/1 131/41/1
|
||||||
|
f 87/44/16 130/44/16 132/42/16
|
||||||
|
f 104/58/1 102/55/1 115/55/1
|
||||||
|
f 103/57/16 114/57/16 116/56/16
|
||||||
|
f 58/18/1 160/18/1 157/20/1
|
||||||
|
f 102/55/1 100/67/1 117/67/1
|
||||||
|
f 74/68/1 143/68/1 141/33/1
|
||||||
|
f 95/50/16 122/50/16 124/49/16
|
||||||
|
f 68/69/1 149/69/1 147/28/1
|
||||||
|
f 56/12/1 159/12/1 160/18/1
|
||||||
|
f 72/30/1 145/30/1 143/68/1
|
||||||
|
f 97/52/16 120/52/16 122/50/16
|
||||||
|
f 96/51/1 94/48/1 123/48/1
|
||||||
|
f 112/59/54 111/62/54 113/58/54
|
||||||
|
f 118/54/37 117/67/37 119/53/37
|
||||||
|
f 126/47/34 124/49/34 123/48/34
|
||||||
|
f 130/44/31 129/43/31 131/41/31
|
||||||
|
f 138/37/48 137/38/48 139/36/48
|
||||||
|
f 144/32/45 143/68/45 145/30/45
|
||||||
|
f 150/27/42 149/69/42 151/26/42
|
||||||
|
f 156/21/55 155/22/55 157/20/55
|
||||||
|
f 93/49/16 124/49/16 126/47/16
|
||||||
|
f 60/20/1 157/20/1 155/22/1
|
||||||
|
f 77/35/16 79/37/16 138/37/16
|
||||||
|
f 126/47/33 125/65/33 127/46/33
|
||||||
|
f 128/45/32 127/46/32 129/43/32
|
||||||
|
f 59/19/16 61/21/16 156/21/16
|
||||||
|
f 86/41/1 84/70/1 134/70/1
|
||||||
|
f 67/27/16 69/29/16 148/29/16
|
||||||
|
f 132/42/30 131/41/30 134/70/30
|
||||||
|
f 92/65/1 90/46/1 127/46/1
|
||||||
|
f 136/39/49 135/66/49 137/38/49
|
||||||
|
f 76/33/1 141/33/1 139/36/1
|
||||||
|
f 85/42/16 132/42/16 133/40/16
|
||||||
|
f 140/35/47 139/36/47 141/33/47
|
||||||
|
f 65/25/16 67/27/16 150/27/16
|
||||||
|
f 144/32/46 142/34/46 141/33/46
|
||||||
|
f 75/34/16 77/35/16 140/35/16
|
||||||
|
f 55/64/16 162/64/16 110/63/16
|
||||||
|
f 99/54/16 118/54/16 120/52/16
|
||||||
|
f 83/40/56 133/40/56 134/70/56
|
||||||
|
f 146/31/44 145/30/44 147/28/44
|
||||||
|
f 55/17/16 57/16/16 161/16/16
|
||||||
|
f 108/61/1 106/62/1 111/62/1
|
||||||
|
f 148/29/43 147/28/43 149/69/43
|
||||||
|
f 57/16/16 59/19/16 158/19/16
|
||||||
|
f 63/23/16 65/25/16 152/25/16
|
||||||
|
f 71/31/16 73/32/16 144/32/16
|
||||||
|
f 101/56/16 116/56/16 118/54/16
|
||||||
|
f 152/25/41 151/26/41 153/24/41
|
||||||
|
f 98/53/1 96/51/1 121/51/1
|
||||||
|
f 90/46/1 88/43/1 129/43/1
|
||||||
|
f 154/23/40 153/24/40 155/22/40
|
||||||
|
f 73/32/16 75/34/16 142/34/16
|
||||||
|
f 107/63/16 110/63/16 112/59/16
|
||||||
|
f 70/28/1 147/28/1 145/30/1
|
||||||
|
f 100/67/1 98/53/1 119/53/1
|
||||||
|
f 158/19/57 157/20/57 160/18/57
|
||||||
|
f 69/29/16 71/31/16 146/31/16
|
||||||
|
f 89/45/16 128/45/16 130/44/16
|
||||||
|
f 161/16/58 160/18/58 159/12/58
|
||||||
|
f 62/22/1 155/22/1 153/24/1
|
||||||
|
f 162/64/59 159/60/59 109/61/59
|
||||||
|
f 66/26/1 151/26/1 149/69/1
|
||||||
|
f 110/63/60 109/61/60 111/62/60
|
||||||
|
f 106/62/1 104/58/1 113/58/1
|
||||||
|
f 91/47/16 126/47/16 128/45/16
|
||||||
|
f 61/21/16 63/23/16 154/23/16
|
||||||
|
f 114/57/39 113/58/39 115/55/39
|
||||||
|
f 116/56/38 115/55/38 117/67/38
|
||||||
|
f 105/59/16 112/59/16 114/57/16
|
||||||
|
f 78/36/1 139/36/1 137/38/1
|
||||||
|
f 120/52/36 119/53/36 121/51/36
|
||||||
|
f 122/50/35 121/51/35 123/48/35
|
||||||
3385
Projekte/mdga/client/src/main/resources/tree_big/tree_big.obj
Normal file
3385
Projekte/mdga/client/src/main/resources/tree_big/tree_big.obj
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
1267
Projekte/mdga/client/src/main/resources/tree_small/tree_small.obj
Normal file
1267
Projekte/mdga/client/src/main/resources/tree_small/tree_small.obj
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 59 KiB |
18861
Projekte/mdga/client/src/main/resources/world_new/world_new.obj
Normal file
18861
Projekte/mdga/client/src/main/resources/world_new/world_new.obj
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 10 MiB |
@@ -5,7 +5,7 @@
|
|||||||
import pp.mdga.message.server.PossibleCard;
|
import pp.mdga.message.server.PossibleCard;
|
||||||
import java.lang.System.Logger;
|
import java.lang.System.Logger;
|
||||||
|
|
||||||
public abstract class ServerState implements Observer {
|
public abstract class ServerState implements Observer{
|
||||||
protected static final Logger LOGGER = System.getLogger(ServerState.class.getName());
|
protected static final Logger LOGGER = System.getLogger(ServerState.class.getName());
|
||||||
protected ServerState parent;
|
protected ServerState parent;
|
||||||
protected ServerGameLogic logic;
|
protected ServerGameLogic logic;
|
||||||
|
|||||||
Reference in New Issue
Block a user