Added area rounding area to mark assets.

#implement
This commit is contained in:
cir27
2017-09-08 13:32:17 +12:00
parent 62f139c604
commit cadf995bf7
5 changed files with 218 additions and 35 deletions
@@ -30,7 +30,8 @@ public class GameView3D {
camera.getTransforms().addAll(
new Translate(0,0, -DEFAULT_CAMERA_DEPTH)
);
camera.setFarClip(0);
camera.setFarClip(Double.MAX_VALUE);
camera.setNearClip(0.1);
camera.setFieldOfView(FOV);
gameObjects = new Group();
root3D = new Group(camera, gameObjects);
@@ -74,11 +75,11 @@ public class GameView3D {
gameObjects.getChildren().addAll(s, left, right, top, bottom, boat, boat2, boat3, sMarker, fMarker, marker, coin);
view.sceneProperty().addListener((obs, old, scene) -> {
if (scene!=null)
makeMovement(scene);
enableCameraMovement(scene);
});
}
public void makeMovement(Scene s) {
public void enableCameraMovement(Scene s) {
s.setOnKeyPressed(event -> {
switch (event.getCode()) {
case UP:
@@ -12,6 +12,7 @@ import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.MeshView;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Scale;
import seng302.model.token.TokenType;
/**
* Factory class for creating 3D models of boats.
@@ -80,35 +81,44 @@ public class ModelFactory {
public static Model importModel(ModelType tokenType) {
ColModelImporter importer = new ColModelImporter();
importer.read(ModelFactory.class.getResource("/meshes/" + tokenType.filename));
Group model = new Group(importer.getImport());
AnimationTimer animationTimer;
Group assets = new Group(importer.getImport());
switch (tokenType) {
case VELOCITY_COIN:
model.setRotationAxis(new Point3D(1,0,0));
model.setRotate(90);
model.setTranslateX(0.2);
model.setTranslateY(1);
model.getTransforms().add(new Rotate(0 ,new Point3D(0,1,0)));
animationTimer = new AnimationTimer() {
return makeCoinPickup(assets);
case FINISH_MARKER:
case PLAIN_MARKER:
case START_MARKER:
return makeMarker(assets);
default:
return new Model(assets, null);
}
}
private static Model makeCoinPickup(Group assets){
assets.setRotationAxis(new Point3D(1,0,0));
assets.setRotate(90);
assets.setTranslateX(0.2);
assets.setTranslateY(1);
assets.getTransforms().add(new Rotate(0 ,new Point3D(0,1,0)));
return new Model(assets, new AnimationTimer() {
private double rotation = 0;
private Group group = model;
private Group group = assets;
@Override
public void handle(long now) {
rotation += 0.5;
((Rotate) group.getTransforms().get(0)).setAngle(rotation);
}
};
break;
case FINISH_MARKER:
case PLAIN_MARKER:
case START_MARKER:
model.getTransforms().add(new Rotate(90, new Point3D(1, 0, 0)));
default:
animationTimer = null;
break;
});
}
return new Model(model, animationTimer);
private static Model makeMarker(Group marker) {
ColModelImporter importer = new ColModelImporter();
importer.read(ModelFactory.class.getResource("/meshes/" + ModelType.MARK_AREA.filename));
Group area = new Group(importer.getImport());
area.getChildren().add(marker);
area.getTransforms().add(new Rotate(90, new Point3D(1, 0, 0)));
return new Model(area, null);
}
}
@@ -9,7 +9,8 @@ public enum ModelType {
VELOCITY_COIN ("velocity_pickup.dae"),
FINISH_MARKER ("finish_marker.dae"),
START_MARKER ("start_marker.dae"),
PLAIN_MARKER ("plain_marker.dae");
PLAIN_MARKER ("plain_marker.dae"),
MARK_AREA ("mark_area.dae");
final String filename;
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long