Ported game rendering to 3d environment for boats and markers.

#implement
This commit is contained in:
Calum
2017-09-09 17:34:18 +12:00
parent 0e2946f20b
commit 06a4dde216
9 changed files with 613 additions and 321 deletions
@@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List;
import javafx.application.Platform;
import javafx.geometry.Point2D;
import javafx.geometry.Point3D;
import javafx.scene.AmbientLight;
import javafx.scene.Group;
import javafx.scene.Node;
@@ -103,9 +102,9 @@ public class BoatObject extends Group {
private void initChildren(double... points) {
boatPoly = makeBoatPolygon();
boatPoly.getAssets().getTransforms().addAll(
new Rotate(-40, new Point3D(1,0,0)),
rotation,
new Rotate(-90, new Point3D(0,0,1))
// new Rotate(-40, new Point3D(1,0,0)),
rotation
// new Rotate(-90, new Point3D(0,0,1))
);
boatPoly.getAssets().getTransforms().add(new Scale(5, 5, 5));
// boatPoly.setDrawMode(DrawMode.FILL);
@@ -219,21 +218,21 @@ public class BoatObject extends Group {
rotateTo(rotation, sailIn, windDir);
boatPoly.getAssets().setLayoutX(x);
boatPoly.getAssets().setLayoutY(y);
if (sailIn) {
// sail.getPoints().clear();
// sail.getPoints().addAll(0.0, 0.0, 4.0, 1.5, 8.0, 3.0, 12.0, 3.5, 16.0, 3.0, 20.0, 1.5, 24.0, 0.0);
// sail.getPoints().addAll(0.0, 0.0, 24.0, 0.0);
sail.setLayoutX(x);
sail.setLayoutY(y);
} else {
animateSail();
sail.setLayoutX(x);
sail.setLayoutY(y);
}
wake.setLayoutX(x);
wake.setLayoutY(y);
// if (sailIn) {
//// sail.getPoints().clear();
//// sail.getPoints().addAll(0.0, 0.0, 4.0, 1.5, 8.0, 3.0, 12.0, 3.5, 16.0, 3.0, 20.0, 1.5, 24.0, 0.0);
//// sail.getPoints().addAll(0.0, 0.0, 24.0, 0.0);
// sail.setLayoutX(x);
// sail.setLayoutY(y);
// } else {
//// animateSail();
// sail.setLayoutX(x);
// sail.setLayoutY(y);
// }
// wake.setLayoutX(x);
// wake.setLayoutY(y);
});
wake.setRotation(rotation, velocity);
// wake.setRotation(rotation, velocity);
// rotateTo(rotation);
// boatPoly.setLayoutX(x);
// boatPoly.setLayoutY(y);
@@ -263,7 +262,7 @@ public class BoatObject extends Group {
private void rotateTo(double heading, boolean sailsIn, double windDir) {
rotation.setAngle(heading);
if (sailsIn) {
if (!sailsIn) {
boatPoly.showSail();
Double sailWindOffset = 30.0;
Double upwindAngleLimit = 15.0;
@@ -8,6 +8,7 @@ import javafx.scene.AmbientLight;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Circle;
import javafx.scene.shape.MeshView;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Scale;
@@ -53,7 +54,8 @@ public class ModelFactory {
public static BoatModel boatGameView(BoatMeshType boatType, Color primaryColour) {
Group boatAssets = getUnmodifiedBoatModel(boatType, primaryColour);
boatAssets.getTransforms().setAll(
new Scale(0.5, 0.5, 0.5)
new Rotate(-90, new Point3D(0,0,1)),
new Scale(0.2, 0.2, 0.2)
);
return new BoatModel(boatAssets, null, boatType);
}
@@ -77,9 +79,14 @@ public class ModelFactory {
}
public static Model importModel(ModelType tokenType) {
ColModelImporter importer = new ColModelImporter();
importer.read(ModelFactory.class.getResource("/meshes/" + tokenType.filename));
Group assets = new Group(importer.getImport());
Group assets;
if (tokenType.filename == null) {
assets = new Group();
} else {
ColModelImporter importer = new ColModelImporter();
importer.read(ModelFactory.class.getResource("/meshes/" + tokenType.filename));
assets = new Group(importer.getImport());
}
switch (tokenType) {
case VELOCITY_COIN:
return makeCoinPickup(assets);
@@ -122,9 +129,13 @@ public class ModelFactory {
return new Model(area, null);
}
private static Model makeOcean(Group plane) {
plane.setScaleY(100);
plane.setScaleX(100);
return new Model(plane, null);
private static Model makeOcean(Group group) {
// group.setScaleY(Double.MAX_VALUE);
// group.setScaleX(Double.MAX_VALUE);
// group.getTransforms().add(new Rotate(90, new Point3D(1, 0, 0)));
Circle ocean = new Circle(0,0,1000, Color.DEEPSKYBLUE);
ocean.setStroke(Color.TRANSPARENT);
group.getChildren().add(ocean);
return new Model(group, null);
}
}
@@ -2,7 +2,7 @@ package seng302.visualiser.fxObjects.assets_3D;
/**
* Enum for models. Values should be the name of the file and files should be .dae files with texture
* information included.
* information included. Can be null in which case assets are assumed to be empty.
*/
public enum ModelType {
@@ -11,7 +11,9 @@ public enum ModelType {
START_MARKER ("start_marker.dae"),
PLAIN_MARKER ("plain_marker.dae"),
MARK_AREA ("mark_area.dae"),
OCEAN ("ocean.dae");
OCEAN (null),
BORDER_PYLON (null),
BORDER_BARRIER (null);
final String filename;