Compare commits

..

12 Commits

Author SHA1 Message Date
William Muir 057af2799a Added toggle button css settings
#story[1274]
2017-09-28 16:47:55 +13:00
Zhi You Tan 45669c333a Merge remote-tracking branch 'origin/develop' into wind_arrow
# Conflicts:
#	src/main/resources/css/RaceView.css
#	src/main/resources/views/RaceView.fxml
2017-09-28 16:43:38 +13:00
Zhi You Tan f7fd5494ef merged Dev in
Fixed concurrency exception

#story[1276] #pair[zyt10, ajm412]
2017-09-28 16:40:50 +13:00
Zhi You Tan 6fafb02a8f Merge branch 'develop' into wind_arrow
# Conflicts:
#	src/main/java/seng302/visualiser/controllers/RaceViewController.java
#	src/main/resources/views/RaceView.fxml
2017-09-28 16:36:34 +13:00
Zhi You Tan d436d2a6e4 Wind arrow now follows on every camera
Follows correctly

#story[1276] #pair[zyt10, ajm412]
2017-09-28 16:31:10 +13:00
Zhi You Tan 51078c82a0 Merge remote-tracking branch 'origin/develop' into wind_arrow
# Conflicts:
#	src/main/java/seng302/visualiser/fxObjects/assets_3D/ModelType.java
2017-09-28 14:38:31 +13:00
Zhi You Tan 22fbb529ef Wind arrow follows wind data
#story[1276]
2017-09-28 14:37:46 +13:00
Zhi You Tan d3e8a21d2f Made the windView observer the gameView camera
#story[1276] #pair[ajm412, zyt10]
2017-09-28 13:18:19 +13:00
Zhi You Tan 852575c9e7 Merge remote-tracking branch 'origin/develop' into wind_arrow
# Conflicts:
#	src/main/java/seng302/visualiser/controllers/RaceViewController.java
#	src/main/java/seng302/visualiser/fxObjects/assets_3D/ModelType.java
#	src/main/resources/views/RaceView.fxml
2017-09-28 11:57:12 +13:00
Zhi You Tan 567e351c7f Updated wind arrow 3D model
#story[1276]
2017-09-28 11:02:47 +13:00
Zhi You Tan 72fe8c4881 - Removed 2D wind and replaced with 3D wind arrow.
#story[1276]
2017-09-28 04:13:44 +13:00
Zhi You Tan 270326ea77 Created prototype compass arrow mesh
#story[1276]
2017-09-27 16:03:59 +13:00
18 changed files with 1407 additions and 332 deletions
@@ -11,6 +11,7 @@ import java.util.Random;
import java.util.Set; import java.util.Set;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import javafx.beans.property.ReadOnlyDoubleWrapper;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -82,6 +83,7 @@ public class GameState implements Runnable {
private static Long previousUpdateTime; private static Long previousUpdateTime;
public static Double windDirection; public static Double windDirection;
public static ReadOnlyDoubleWrapper windDirectionProperty = new ReadOnlyDoubleWrapper();
private static Double windSpeed; private static Double windSpeed;
private static Double serverSpeedMultiplier; private static Double serverSpeedMultiplier;
@@ -108,6 +110,7 @@ public class GameState implements Runnable {
public GameState() { public GameState() {
windDirection = 180d; windDirection = 180d;
windDirectionProperty.set(windDirection);
windSpeed = 10000d; windSpeed = 10000d;
yachts = new HashMap<>(); yachts = new HashMap<>();
tokensInPlay = new ArrayList<>(); tokensInPlay = new ArrayList<>();
@@ -191,6 +194,7 @@ public class GameState implements Runnable {
public static void setWindDirection(Double newWindDirection) { public static void setWindDirection(Double newWindDirection) {
windDirection = newWindDirection; windDirection = newWindDirection;
windDirectionProperty.set(newWindDirection);
} }
public static void setWindSpeed(Double newWindSpeed) { public static void setWindSpeed(Double newWindSpeed) {
@@ -509,6 +513,7 @@ public class GameState implements Runnable {
Double optimalAngle = PolarTable.getOptimalAngle(); Double optimalAngle = PolarTable.getOptimalAngle();
Double heading = yacht.getHeading(); Double heading = yacht.getHeading();
windDirection = (double) Math.floorMod(Math.round(heading + optimalAngle), 360L); windDirection = (double) Math.floorMod(Math.round(heading + optimalAngle), 360L);
windDirectionProperty.set(windDirection);
} }
@@ -1058,4 +1063,8 @@ public class GameState implements Runnable {
public static void setTokensEnabled (boolean tokensEnabled) { public static void setTokensEnabled (boolean tokensEnabled) {
GameState.tokensEnabled = tokensEnabled; GameState.tokensEnabled = tokensEnabled;
} }
public static ReadOnlyDoubleWrapper getWindDirectionProperty() {
return windDirectionProperty;
}
} }
@@ -134,4 +134,8 @@ public class RaceState {
public Boolean getRaceFinished() { public Boolean getRaceFinished() {
return raceFinished; return raceFinished;
} }
public ReadOnlyDoubleWrapper getWindDirection() {
return windDirection;
}
} }
@@ -75,6 +75,7 @@ public class GameView3D extends GameView {
private Double windDir; private Double windDir;
private Skybox skybox; private Skybox skybox;
public GameView3D () { public GameView3D () {
isometricCam = new IsometricCamera(DEFAULT_CAMERA_X, DEFAULT_CAMERA_Y); isometricCam = new IsometricCamera(DEFAULT_CAMERA_X, DEFAULT_CAMERA_Y);
topDownCam = new TopDownCamera(); topDownCam = new TopDownCamera();
@@ -370,6 +371,10 @@ public class GameView3D extends GameView {
return view; return view;
} }
public SubScene getView() {
return view;
}
/** /**
* Updates the boatObjects color with that of the clientYachts object. Used in notification from * Updates the boatObjects color with that of the clientYachts object. Used in notification from
* a listener on this attribute in clientYacht to re paint the boat mesh * a listener on this attribute in clientYacht to re paint the boat mesh
@@ -7,28 +7,33 @@ import java.util.ArrayList;
import java.util.Map; import java.util.Map;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import javafx.animation.RotateTransition;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.property.ReadOnlyBooleanProperty; import javafx.beans.property.ReadOnlyBooleanProperty;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.SubScene; import javafx.scene.SubScene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Paint; import javafx.scene.paint.Paint;
import javafx.util.Duration; import javafx.scene.text.Text;
import seng302.model.ClientYacht; import seng302.model.ClientYacht;
import seng302.model.RaceState; import seng302.model.RaceState;
import seng302.model.mark.CompoundMark;
import seng302.model.stream.xml.parser.RaceXMLData; import seng302.model.stream.xml.parser.RaceXMLData;
import seng302.model.token.TokenType; import seng302.model.token.TokenType;
import seng302.utilities.Sounds; import seng302.utilities.Sounds;
import seng302.visualiser.GameView3D; import seng302.visualiser.GameView3D;
import seng302.visualiser.MiniMap; import seng302.visualiser.MiniMap;
import seng302.visualiser.controllers.cells.WindCell;
import seng302.visualiser.controllers.dialogs.FinishDialogController; import seng302.visualiser.controllers.dialogs.FinishDialogController;
import seng302.visualiser.fxObjects.ChatHistory; import seng302.visualiser.fxObjects.ChatHistory;
@@ -61,6 +66,20 @@ public class RaceViewController extends Thread {
private Pane miniMapPane; private Pane miniMapPane;
@FXML @FXML
private ImageView windImageView; private ImageView windImageView;
@FXML
private AnchorPane rvAnchorPane;
@FXML
private AnchorPane windArrowHolder;
@FXML
private Slider annotationSlider;
@FXML
private Button selectAnnotationBtn;
@FXML
private ComboBox<ClientYacht> yachtSelectionComboBox;
@FXML
private Text fpsDisplay;
// @FXML
// private ImageView windImageView;
@FXML @FXML
private Label windDirectionLabel; private Label windDirectionLabel;
@FXML @FXML
@@ -70,8 +89,16 @@ public class RaceViewController extends Thread {
@FXML @FXML
private ImageView velocityIcon, handlingIcon, windWalkerIcon, bumperIcon, badRandomIcon; private ImageView velocityIcon, handlingIcon, windWalkerIcon, bumperIcon, badRandomIcon;
@FXML @FXML
private VBox windArrowVBox;
@FXML
private JFXButton miniMapButton; private JFXButton miniMapButton;
private WindCell windCell;
//Race Data
private Map<Integer, ClientYacht> participants;
private Map<Integer, CompoundMark> markers;
private RaceXMLData courseData;
private GameView3D gameView; private GameView3D gameView;
private RaceState raceState; private RaceState raceState;
private ChatHistory chatHistory; private ChatHistory chatHistory;
@@ -141,6 +168,30 @@ public class RaceViewController extends Thread {
}); });
lastWindDirection = 0d; lastWindDirection = 0d;
}
/**
* Initialise wind arrow cell.
*/
private void initialiseWindArrow() {
FXMLLoader loader = new FXMLLoader(
getClass().getResource("/views/cells/WindCell.fxml"));
windCell = new WindCell();
loader.setController(windCell);
try {
loader.load();
} catch (IOException e) {
e.printStackTrace();
}
windCell.init(player, raceState.getWindDirection());
windCell.setCamera(gameView.getView().getCamera());
gameView.getView().cameraProperty()
.addListener((obs, oldVal, newVal) -> windCell.setCamera(newVal));
windArrowVBox.getChildren().add(windCell.getAssets());
} }
public void showFinishDialog(ArrayList<ClientYacht> finishedBoats) { public void showFinishDialog(ArrayList<ClientYacht> finishedBoats) {
@@ -248,6 +299,12 @@ public class RaceViewController extends Thread {
}); });
gameView.setWindDir(raceState.windDirectionProperty().doubleValue()); gameView.setWindDir(raceState.windDirectionProperty().doubleValue());
Platform.runLater(this::initializeUpdateTimer); Platform.runLater(this::initializeUpdateTimer);
Platform.runLater(() -> {
//windCell.setCamera(gameView.getView().getCamera());
initialiseWindArrow();
});
} }
/** /**
@@ -334,12 +391,12 @@ public class RaceViewController extends Thread {
*/ */
private void updateWindDirection(double direction) { private void updateWindDirection(double direction) {
windDirectionLabel.setText(String.format("%.1f°", direction)); windDirectionLabel.setText(String.format("%.1f°", direction));
RotateTransition rt = new RotateTransition(Duration.millis(300), windImageView); // RotateTransition rt = new RotateTransition(Duration.millis(300), windImageView);
rt.setByAngle(direction - lastWindDirection); // rt.setByAngle(direction - lastWindDirection);
rt.setCycleCount(3); // rt.setCycleCount(3);
rt.setAutoReverse(true); // rt.setAutoReverse(true);
rt.play(); // rt.play();
lastWindDirection = direction; // lastWindDirection = direction;
// windImageView.setRotate(direction); // windImageView.setRotate(direction);
} }
@@ -0,0 +1,131 @@
package seng302.visualiser.controllers.cells;
import java.util.Arrays;
import javafx.application.Platform;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ReadOnlyDoubleWrapper;
import javafx.fxml.FXML;
import javafx.geometry.Point3D;
import javafx.scene.Camera;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.PerspectiveCamera;
import javafx.scene.SceneAntialiasing;
import javafx.scene.SubScene;
import javafx.scene.layout.Pane;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Transform;
import javafx.scene.transform.Translate;
import seng302.model.ClientYacht;
import seng302.visualiser.cameras.ChaseCamera;
import seng302.visualiser.fxObjects.assets_3D.Model;
import seng302.visualiser.fxObjects.assets_3D.ModelFactory;
public class WindCell {
//--------FXML BEGIN--------//
@FXML
private Pane windPane;
//---------FXML END---------//
private final double FOV = 60;
private final double DEFAULT_CAMERA_X = 0;
private final double DEFAULT_CAMERA_Y = 50;
private Group root3D;
private SubScene view;
private Group gameObjects;
private ChaseCamera chaseCam;
private ClientYacht playerYacht;
// Cameras
private PerspectiveCamera camera = null;
private Model windArrowModel;
private Boolean isChaseCam;
/**
* Initialise WindCell fxml and load 3D wind arrow into a group.
*/
public void init(ClientYacht playerYacht, ReadOnlyDoubleWrapper windDirection) {
this.playerYacht = playerYacht;
camera = new PerspectiveCamera();
camera.setFarClip(1000);
camera.setNearClip(0.1);
camera.setFieldOfView(60);
initialiseWindView();
for (DoubleProperty o : Arrays.asList(playerYacht.getHeadingProperty(), windDirection)) {
o.addListener((obs, oldValue, newValue) -> {
Platform.runLater(() -> {
if (isChaseCam) {
camera.getTransforms().clear();
for (Transform t : chaseCam.getTransforms()) {
if (t instanceof Rotate) {
camera.getTransforms().add(t);
}
}
this.camera.getTransforms().addAll(
new Translate(-55, -60, 0)
);
}
windArrowModel.getAssets().getTransforms().clear();
windArrowModel.getAssets().getTransforms().addAll(
new Rotate(windDirection.getValue(),
new Point3D(0, 0, 1))
);
});
});
}
}
private void initialiseWindView() {
gameObjects = new Group();
windPane.getChildren().add(gameObjects);
root3D = new Group(camera, gameObjects);
view = new SubScene(
root3D, 110, 120, true, SceneAntialiasing.BALANCED
);
view.setCamera(camera);
windArrowModel = ModelFactory.makeWindArrow();
gameObjects.getChildren().addAll(
windArrowModel.getAssets()
);
}
public Node getAssets() {
return view;
}
public void updateCameraTransforms(Camera camera) {
this.camera.getTransforms().clear();
for (Transform transform : camera.getTransforms()) {
if (!(transform instanceof Translate)) {
this.camera.getTransforms().add(transform);
}
}
this.camera.getTransforms().addAll(
new Translate(-55, -60, 0)
);
windArrowModel.getAssets().getTransforms().clear();
}
public void setCamera(Camera camera) {
isChaseCam = camera instanceof ChaseCamera;
if (isChaseCam) {
this.chaseCam = (ChaseCamera) camera;
} else {
this.chaseCam = null;
}
updateCameraTransforms(camera);
}
}
@@ -16,7 +16,6 @@ import javafx.scene.transform.Scale;
import javafx.scene.transform.Translate; import javafx.scene.transform.Translate;
/** /**
* Factory class for creating 3D models of boatTypes. * Factory class for creating 3D models of boatTypes.
*/ */
@@ -276,4 +275,31 @@ public class ModelFactory {
); );
return new Model(new Group(assets), null); return new Model(new Group(assets), null);
} }
/**
* Create a 3D wind arrow.
*
* @return 3D wind arrow object
*/
public static Model makeWindArrow() {
ColModelImporter importer = new ColModelImporter();
importer.read(ModelFactory.class.getResource("/meshes/" + ModelType.WIND_ARROW.filename));
Group assets = new Group(importer.getImport());
assets.setCache(true);
assets.setCacheHint(CacheHint.SCALE_AND_ROTATE);
Rotate animationRotate = new Rotate(0, new Point3D(0, 1, 0));
assets.getTransforms().addAll(
new Translate(0, 0, 0),
new Scale(5, 5, 5),
new Rotate(270, new Point3D(1, 0, 0)),
animationRotate
);
assets.getChildren().addAll(
new AmbientLight()
);
return new Model(new Group(assets), null);
}
} }
@@ -30,7 +30,8 @@ public enum ModelType {
LAND("land.dae"), LAND("land.dae"),
LAND_SMOOTH("land_smooth.dae"), LAND_SMOOTH("land_smooth.dae"),
NEXT_MARK_INDICATOR("indicator_arrow.dae"), NEXT_MARK_INDICATOR("indicator_arrow.dae"),
PLAYER_IDENTIFIER_TORUS("torus.dae"); PLAYER_IDENTIFIER_TORUS("torus.dae"),
WIND_ARROW("windFiles/arrow56.dae"); // change filename
final String filename; final String filename;
+7
View File
@@ -66,6 +66,13 @@ GridPane .timer * {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
#chatToggleButton {
-fx-background-color: rgba(255, 255, 255, 0.6);
-fx-background-radius: 5;
-fx-min-width: 30;
-fx-min-height: 30;
}
#windImageView { #windImageView {
-fx-image: url("/images/wind-180.png"); -fx-image: url("/images/wind-180.png");
} }
@@ -0,0 +1,3 @@
#windPane {
-fx-background-color: rgba(255, 255, 255, 0);
}
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,518 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.79.0 commit date:2017-09-11, commit time:10:43, hash:5bd8ac9</authoring_tool>
</contributor>
<created>2017-09-28T02:22:29</created>
<modified>2017-09-28T02:22:29</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_cameras>
<camera id="Camera-camera" name="Camera">
<optics>
<technique_common>
<perspective>
<xfov sid="xfov">49.13434</xfov>
<aspect_ratio>1.777778</aspect_ratio>
<znear sid="znear">0.1</znear>
<zfar sid="zfar">100</zfar>
</perspective>
</technique_common>
</optics>
<extra>
<technique profile="blender">
<shiftx sid="shiftx" type="float">0</shiftx>
<shifty sid="shifty" type="float">0</shifty>
<YF_dofdist sid="YF_dofdist" type="float">0</YF_dofdist>
</technique>
</extra>
</camera>
<camera id="Camera_001-camera" name="Camera.001">
<optics>
<technique_common>
<perspective>
<xfov sid="xfov">49.13434</xfov>
<aspect_ratio>1.777778</aspect_ratio>
<znear sid="znear">0.1</znear>
<zfar sid="zfar">100</zfar>
</perspective>
</technique_common>
</optics>
<extra>
<technique profile="blender">
<shiftx sid="shiftx" type="float">0</shiftx>
<shifty sid="shifty" type="float">0</shifty>
<YF_dofdist sid="YF_dofdist" type="float">0</YF_dofdist>
</technique>
</extra>
</camera>
<camera id="Camera_001-camera" name="Camera.003">
<optics>
<technique_common>
<perspective>
<xfov sid="xfov">49.13434</xfov>
<aspect_ratio>1.777778</aspect_ratio>
<znear sid="znear">0.1</znear>
<zfar sid="zfar">100</zfar>
</perspective>
</technique_common>
</optics>
<extra>
<technique profile="blender">
<shiftx sid="shiftx" type="float">0</shiftx>
<shifty sid="shifty" type="float">0</shifty>
<YF_dofdist sid="YF_dofdist" type="float">0</YF_dofdist>
</technique>
</extra>
</camera>
<camera id="Camera_001_001-camera" name="Camera.003">
<optics>
<technique_common>
<perspective>
<xfov sid="xfov">49.13434</xfov>
<aspect_ratio>1.777778</aspect_ratio>
<znear sid="znear">0.1</znear>
<zfar sid="zfar">100</zfar>
</perspective>
</technique_common>
</optics>
<extra>
<technique profile="blender">
<shiftx sid="shiftx" type="float">0</shiftx>
<shifty sid="shifty" type="float">0</shifty>
<YF_dofdist sid="YF_dofdist" type="float">0</YF_dofdist>
</technique>
</extra>
</camera>
</library_cameras>
<library_lights>
<light id="Lamp-light" name="Lamp">
<technique_common>
<point>
<color sid="color">1 1 1</color>
<constant_attenuation>1</constant_attenuation>
<linear_attenuation>0</linear_attenuation>
<quadratic_attenuation>0.00111109</quadratic_attenuation>
</point>
</technique_common>
<extra>
<technique profile="blender">
<type sid="type" type="int">0</type>
<flag sid="flag" type="int">0</flag>
<mode sid="mode" type="int">8192</mode>
<gamma sid="blender_gamma" type="float">1</gamma>
<red sid="red" type="float">1</red>
<green sid="green" type="float">1</green>
<blue sid="blue" type="float">1</blue>
<shadow_r sid="blender_shadow_r" type="float">0</shadow_r>
<shadow_g sid="blender_shadow_g" type="float">0</shadow_g>
<shadow_b sid="blender_shadow_b" type="float">0</shadow_b>
<energy sid="blender_energy" type="float">1</energy>
<dist sid="blender_dist" type="float">29.99998</dist>
<spotsize sid="spotsize" type="float">75</spotsize>
<spotblend sid="spotblend" type="float">0.15</spotblend>
<halo_intensity sid="blnder_halo_intensity" type="float">1</halo_intensity>
<att1 sid="att1" type="float">0</att1>
<att2 sid="att2" type="float">1</att2>
<falloff_type sid="falloff_type" type="int">2</falloff_type>
<clipsta sid="clipsta" type="float">1.000799</clipsta>
<clipend sid="clipend" type="float">30.002</clipend>
<bias sid="bias" type="float">1</bias>
<soft sid="soft" type="float">3</soft>
<compressthresh sid="compressthresh" type="float">0.04999995</compressthresh>
<bufsize sid="bufsize" type="int">2880</bufsize>
<samp sid="samp" type="int">3</samp>
<buffers sid="buffers" type="int">1</buffers>
<filtertype sid="filtertype" type="int">0</filtertype>
<bufflag sid="bufflag" type="int">0</bufflag>
<buftype sid="buftype" type="int">2</buftype>
<ray_samp sid="ray_samp" type="int">1</ray_samp>
<ray_sampy sid="ray_sampy" type="int">1</ray_sampy>
<ray_sampz sid="ray_sampz" type="int">1</ray_sampz>
<ray_samp_type sid="ray_samp_type" type="int">0</ray_samp_type>
<area_shape sid="area_shape" type="int">1</area_shape>
<area_size sid="area_size" type="float">0.1</area_size>
<area_sizey sid="area_sizey" type="float">0.1</area_sizey>
<area_sizez sid="area_sizez" type="float">1</area_sizez>
<adapt_thresh sid="adapt_thresh" type="float">0.000999987</adapt_thresh>
<ray_samp_method sid="ray_samp_method" type="int">1</ray_samp_method>
<shadhalostep sid="shadhalostep" type="int">0</shadhalostep>
<sun_effect_type sid="sun_effect_type" type="int">0</sun_effect_type>
<skyblendtype sid="skyblendtype" type="int">1</skyblendtype>
<horizon_brightness sid="horizon_brightness" type="float">1</horizon_brightness>
<spread sid="spread" type="float">1</spread>
<sun_brightness sid="sun_brightness" type="float">1</sun_brightness>
<sun_size sid="sun_size" type="float">1</sun_size>
<backscattered_light sid="backscattered_light" type="float">1</backscattered_light>
<sun_intensity sid="sun_intensity" type="float">1</sun_intensity>
<atm_turbidity sid="atm_turbidity" type="float">2</atm_turbidity>
<atm_extinction_factor sid="atm_extinction_factor" type="float">1</atm_extinction_factor>
<atm_distance_factor sid="atm_distance_factor" type="float">1</atm_distance_factor>
<skyblendfac sid="skyblendfac" type="float">1</skyblendfac>
<sky_exposure sid="sky_exposure" type="float">1</sky_exposure>
<sky_colorspace sid="sky_colorspace" type="int">0</sky_colorspace>
</technique>
</extra>
</light>
<light id="Lamp_001-light" name="Lamp.001">
<technique_common>
<point>
<color sid="color">1 1 1</color>
<constant_attenuation>1</constant_attenuation>
<linear_attenuation>0</linear_attenuation>
<quadratic_attenuation>0.00111109</quadratic_attenuation>
</point>
</technique_common>
<extra>
<technique profile="blender">
<type sid="type" type="int">0</type>
<flag sid="flag" type="int">0</flag>
<mode sid="mode" type="int">8192</mode>
<gamma sid="blender_gamma" type="float">1</gamma>
<red sid="red" type="float">1</red>
<green sid="green" type="float">1</green>
<blue sid="blue" type="float">1</blue>
<shadow_r sid="blender_shadow_r" type="float">0</shadow_r>
<shadow_g sid="blender_shadow_g" type="float">0</shadow_g>
<shadow_b sid="blender_shadow_b" type="float">0</shadow_b>
<energy sid="blender_energy" type="float">1</energy>
<dist sid="blender_dist" type="float">29.99998</dist>
<spotsize sid="spotsize" type="float">75</spotsize>
<spotblend sid="spotblend" type="float">0.15</spotblend>
<halo_intensity sid="blnder_halo_intensity" type="float">1</halo_intensity>
<att1 sid="att1" type="float">0</att1>
<att2 sid="att2" type="float">1</att2>
<falloff_type sid="falloff_type" type="int">2</falloff_type>
<clipsta sid="clipsta" type="float">1.000799</clipsta>
<clipend sid="clipend" type="float">30.002</clipend>
<bias sid="bias" type="float">1</bias>
<soft sid="soft" type="float">3</soft>
<compressthresh sid="compressthresh" type="float">0.04999995</compressthresh>
<bufsize sid="bufsize" type="int">2880</bufsize>
<samp sid="samp" type="int">3</samp>
<buffers sid="buffers" type="int">1</buffers>
<filtertype sid="filtertype" type="int">0</filtertype>
<bufflag sid="bufflag" type="int">0</bufflag>
<buftype sid="buftype" type="int">2</buftype>
<ray_samp sid="ray_samp" type="int">1</ray_samp>
<ray_sampy sid="ray_sampy" type="int">1</ray_sampy>
<ray_sampz sid="ray_sampz" type="int">1</ray_sampz>
<ray_samp_type sid="ray_samp_type" type="int">0</ray_samp_type>
<area_shape sid="area_shape" type="int">1</area_shape>
<area_size sid="area_size" type="float">0.1</area_size>
<area_sizey sid="area_sizey" type="float">0.1</area_sizey>
<area_sizez sid="area_sizez" type="float">1</area_sizez>
<adapt_thresh sid="adapt_thresh" type="float">9.99987e-4</adapt_thresh>
<ray_samp_method sid="ray_samp_method" type="int">1</ray_samp_method>
<shadhalostep sid="shadhalostep" type="int">0</shadhalostep>
<sun_effect_type sid="sun_effect_type" type="int">0</sun_effect_type>
<skyblendtype sid="skyblendtype" type="int">1</skyblendtype>
<horizon_brightness sid="horizon_brightness" type="float">1</horizon_brightness>
<spread sid="spread" type="float">1</spread>
<sun_brightness sid="sun_brightness" type="float">1</sun_brightness>
<sun_size sid="sun_size" type="float">1</sun_size>
<backscattered_light sid="backscattered_light" type="float">1</backscattered_light>
<sun_intensity sid="sun_intensity" type="float">1</sun_intensity>
<atm_turbidity sid="atm_turbidity" type="float">2</atm_turbidity>
<atm_extinction_factor sid="atm_extinction_factor" type="float">1</atm_extinction_factor>
<atm_distance_factor sid="atm_distance_factor" type="float">1</atm_distance_factor>
<skyblendfac sid="skyblendfac" type="float">1</skyblendfac>
<sky_exposure sid="sky_exposure" type="float">1</sky_exposure>
<sky_colorspace sid="sky_colorspace" type="int">0</sky_colorspace>
</technique>
</extra>
</light>
<light id="Lamp_001-light" name="Lamp.003">
<technique_common>
<point>
<color sid="color">1 1 1</color>
<constant_attenuation>1</constant_attenuation>
<linear_attenuation>0</linear_attenuation>
<quadratic_attenuation>0.00111109</quadratic_attenuation>
</point>
</technique_common>
<extra>
<technique profile="blender">
<type sid="type" type="int">0</type>
<flag sid="flag" type="int">0</flag>
<mode sid="mode" type="int">8192</mode>
<gamma sid="blender_gamma" type="float">1</gamma>
<red sid="red" type="float">1</red>
<green sid="green" type="float">1</green>
<blue sid="blue" type="float">1</blue>
<shadow_r sid="blender_shadow_r" type="float">0</shadow_r>
<shadow_g sid="blender_shadow_g" type="float">0</shadow_g>
<shadow_b sid="blender_shadow_b" type="float">0</shadow_b>
<energy sid="blender_energy" type="float">1</energy>
<dist sid="blender_dist" type="float">29.99998</dist>
<spotsize sid="spotsize" type="float">75</spotsize>
<spotblend sid="spotblend" type="float">0.15</spotblend>
<halo_intensity sid="blnder_halo_intensity" type="float">1</halo_intensity>
<att1 sid="att1" type="float">0</att1>
<att2 sid="att2" type="float">1</att2>
<falloff_type sid="falloff_type" type="int">2</falloff_type>
<clipsta sid="clipsta" type="float">1.000799</clipsta>
<clipend sid="clipend" type="float">30.002</clipend>
<bias sid="bias" type="float">1</bias>
<soft sid="soft" type="float">3</soft>
<compressthresh sid="compressthresh" type="float">0.04999995</compressthresh>
<bufsize sid="bufsize" type="int">2880</bufsize>
<samp sid="samp" type="int">3</samp>
<buffers sid="buffers" type="int">1</buffers>
<filtertype sid="filtertype" type="int">0</filtertype>
<bufflag sid="bufflag" type="int">0</bufflag>
<buftype sid="buftype" type="int">2</buftype>
<ray_samp sid="ray_samp" type="int">1</ray_samp>
<ray_sampy sid="ray_sampy" type="int">1</ray_sampy>
<ray_sampz sid="ray_sampz" type="int">1</ray_sampz>
<ray_samp_type sid="ray_samp_type" type="int">0</ray_samp_type>
<area_shape sid="area_shape" type="int">1</area_shape>
<area_size sid="area_size" type="float">0.1</area_size>
<area_sizey sid="area_sizey" type="float">0.1</area_sizey>
<area_sizez sid="area_sizez" type="float">1</area_sizez>
<adapt_thresh sid="adapt_thresh" type="float">9.99987e-4</adapt_thresh>
<ray_samp_method sid="ray_samp_method" type="int">1</ray_samp_method>
<shadhalostep sid="shadhalostep" type="int">0</shadhalostep>
<sun_effect_type sid="sun_effect_type" type="int">0</sun_effect_type>
<skyblendtype sid="skyblendtype" type="int">1</skyblendtype>
<horizon_brightness sid="horizon_brightness" type="float">1</horizon_brightness>
<spread sid="spread" type="float">1</spread>
<sun_brightness sid="sun_brightness" type="float">1</sun_brightness>
<sun_size sid="sun_size" type="float">1</sun_size>
<backscattered_light sid="backscattered_light" type="float">1</backscattered_light>
<sun_intensity sid="sun_intensity" type="float">1</sun_intensity>
<atm_turbidity sid="atm_turbidity" type="float">2</atm_turbidity>
<atm_extinction_factor sid="atm_extinction_factor" type="float">1</atm_extinction_factor>
<atm_distance_factor sid="atm_distance_factor" type="float">1</atm_distance_factor>
<skyblendfac sid="skyblendfac" type="float">1</skyblendfac>
<sky_exposure sid="sky_exposure" type="float">1</sky_exposure>
<sky_colorspace sid="sky_colorspace" type="int">0</sky_colorspace>
</technique>
</extra>
</light>
<light id="Lamp_001_001-light" name="Lamp.003">
<technique_common>
<point>
<color sid="color">1 1 1</color>
<constant_attenuation>1</constant_attenuation>
<linear_attenuation>0</linear_attenuation>
<quadratic_attenuation>0.00111109</quadratic_attenuation>
</point>
</technique_common>
<extra>
<technique profile="blender">
<type sid="type" type="int">0</type>
<flag sid="flag" type="int">0</flag>
<mode sid="mode" type="int">8192</mode>
<gamma sid="blender_gamma" type="float">1</gamma>
<red sid="red" type="float">1</red>
<green sid="green" type="float">1</green>
<blue sid="blue" type="float">1</blue>
<shadow_r sid="blender_shadow_r" type="float">0</shadow_r>
<shadow_g sid="blender_shadow_g" type="float">0</shadow_g>
<shadow_b sid="blender_shadow_b" type="float">0</shadow_b>
<energy sid="blender_energy" type="float">1</energy>
<dist sid="blender_dist" type="float">29.99998</dist>
<spotsize sid="spotsize" type="float">75</spotsize>
<spotblend sid="spotblend" type="float">0.15</spotblend>
<halo_intensity sid="blnder_halo_intensity" type="float">1</halo_intensity>
<att1 sid="att1" type="float">0</att1>
<att2 sid="att2" type="float">1</att2>
<falloff_type sid="falloff_type" type="int">2</falloff_type>
<clipsta sid="clipsta" type="float">1.000799</clipsta>
<clipend sid="clipend" type="float">30.002</clipend>
<bias sid="bias" type="float">1</bias>
<soft sid="soft" type="float">3</soft>
<compressthresh sid="compressthresh" type="float">0.04999995</compressthresh>
<bufsize sid="bufsize" type="int">2880</bufsize>
<samp sid="samp" type="int">3</samp>
<buffers sid="buffers" type="int">1</buffers>
<filtertype sid="filtertype" type="int">0</filtertype>
<bufflag sid="bufflag" type="int">0</bufflag>
<buftype sid="buftype" type="int">2</buftype>
<ray_samp sid="ray_samp" type="int">1</ray_samp>
<ray_sampy sid="ray_sampy" type="int">1</ray_sampy>
<ray_sampz sid="ray_sampz" type="int">1</ray_sampz>
<ray_samp_type sid="ray_samp_type" type="int">0</ray_samp_type>
<area_shape sid="area_shape" type="int">1</area_shape>
<area_size sid="area_size" type="float">0.1</area_size>
<area_sizey sid="area_sizey" type="float">0.1</area_sizey>
<area_sizez sid="area_sizez" type="float">1</area_sizez>
<adapt_thresh sid="adapt_thresh" type="float">9.99987e-4</adapt_thresh>
<ray_samp_method sid="ray_samp_method" type="int">1</ray_samp_method>
<shadhalostep sid="shadhalostep" type="int">0</shadhalostep>
<sun_effect_type sid="sun_effect_type" type="int">0</sun_effect_type>
<skyblendtype sid="skyblendtype" type="int">1</skyblendtype>
<horizon_brightness sid="horizon_brightness" type="float">1</horizon_brightness>
<spread sid="spread" type="float">1</spread>
<sun_brightness sid="sun_brightness" type="float">1</sun_brightness>
<sun_size sid="sun_size" type="float">1</sun_size>
<backscattered_light sid="backscattered_light" type="float">1</backscattered_light>
<sun_intensity sid="sun_intensity" type="float">1</sun_intensity>
<atm_turbidity sid="atm_turbidity" type="float">2</atm_turbidity>
<atm_extinction_factor sid="atm_extinction_factor" type="float">1</atm_extinction_factor>
<atm_distance_factor sid="atm_distance_factor" type="float">1</atm_distance_factor>
<skyblendfac sid="skyblendfac" type="float">1</skyblendfac>
<sky_exposure sid="sky_exposure" type="float">1</sky_exposure>
<sky_colorspace sid="sky_colorspace" type="int">0</sky_colorspace>
</technique>
</extra>
</light>
</library_lights>
<library_images/>
<library_effects>
<effect id="Material_004-effect">
<profile_COMMON>
<technique sid="common">
<phong>
<emission>
<color sid="emission">0 0 0 1</color>
</emission>
<ambient>
<color sid="ambient">0 0 0 1</color>
</ambient>
<diffuse>
<color sid="diffuse">0.8 0 0 1</color>
</diffuse>
<specular>
<color sid="specular">0.125 0.125 0.125 1</color>
</specular>
<shininess>
<float sid="shininess">50</float>
</shininess>
<index_of_refraction>
<float sid="index_of_refraction">1</float>
</index_of_refraction>
</phong>
</technique>
</profile_COMMON>
</effect>
<effect id="Material_002-effect">
<profile_COMMON>
<technique sid="common">
<phong>
<emission>
<color sid="emission">0 0 0 1</color>
</emission>
<ambient>
<color sid="ambient">0 0 0 1</color>
</ambient>
<diffuse>
<color sid="diffuse">0 0 0.8 1</color>
</diffuse>
<specular>
<color sid="specular">0.125 0.125 0.125 1</color>
</specular>
<shininess>
<float sid="shininess">50</float>
</shininess>
<index_of_refraction>
<float sid="index_of_refraction">1</float>
</index_of_refraction>
</phong>
</technique>
</profile_COMMON>
</effect>
</library_effects>
<library_materials>
<material id="Material_004-material" name="Material_004">
<instance_effect url="#Material_004-effect"/>
</material>
<material id="Material_002-material" name="Material_002">
<instance_effect url="#Material_002-effect"/>
</material>
</library_materials>
<library_geometries>
<geometry id="Cone_003-mesh" name="Cone.003">
<mesh>
<source id="Cone_003-mesh-positions">
<float_array id="Cone_003-mesh-positions-array" count="198">0 -0.6151299 -0.05701982 -1.77995e-7 -1.7983e-7 -2.05702 0.1200059 -0.6033104 -0.05701982 0.2354 -0.5683059 -0.05701982 0.3417478 -0.5114619 -0.05701982 0.4349624 -0.4349625 -0.05701982 0.5114617 -0.3417478 -0.05701982 0.5683057 -0.2354 -0.05701982 0.6033101 -0.120006 -0.05701988 0.6151297 -1.61108e-7 -0.05701988 0.6033102 0.1200057 -0.05701988 0.5683057 0.2353997 -0.05701988 0.5114617 0.3417476 -0.05701988 0.4349624 0.4349623 -0.05701988 0.3417478 0.5114615 -0.05701988 0.2353999 0.5683056 -0.05701988 0.1200057 0.60331 -0.05701988 -1.59668e-7 0.6151295 -0.05701988 -0.120006 0.6033099 -0.05701988 -0.2354001 0.5683054 -0.05701982 -0.341748 0.5114613 -0.05701982 -0.4349626 0.434962 -0.05701982 -0.5114619 0.3417473 -0.05701982 -0.568306 0.2353994 -0.05701982 -0.6033103 0.1200052 -0.05701982 -0.6151297 -7.08636e-7 -0.05701982 -0.6033101 -0.1200066 -0.05701977 -0.5683055 -0.2354007 -0.05701977 -0.5114613 -0.3417485 -0.05701977 -0.4349618 -0.4349631 -0.05701977 -0.341747 -0.5114623 -0.05701977 -0.235399 -0.5683063 -0.05701977 -0.1200048 -0.6033105 -0.05701977 0 0.6151295 -0.06060606 0 -2.89444e-7 1.939394 0.1200058 0.60331 -0.06060606 0.2353999 0.5683056 -0.06060606 0.3417478 0.5114615 -0.06060606 0.4349623 0.4349622 -0.06060606 0.5114616 0.3417475 -0.06060606 0.5683057 0.2353997 -0.06060606 0.6033101 0.1200057 -0.06060606 0.6151297 -1.40432e-7 -0.06060606 0.6033102 -0.1200059 -0.06060606 0.5683057 -0.2354 -0.06060606 0.5114616 -0.3417478 -0.06060606 0.4349623 -0.4349626 -0.06060606 0.3417477 -0.5114619 -0.06060606 0.2353998 -0.568306 -0.06060606 0.1200056 -0.6033104 -0.06060606 -2.4745e-7 -0.6151298 -0.06060606 -0.1200062 -0.6033103 -0.06060606 -0.2354003 -0.5683058 -0.06060606 -0.3417481 -0.5114617 -0.06060606 -0.4349627 -0.4349622 -0.06060606 -0.511462 -0.3417476 -0.06060606 -0.568306 -0.2353997 -0.06060606 -0.6033104 -0.1200055 -0.06060606 -0.6151298 4.10911e-7 -0.06060606 -0.6033101 0.1200063 -0.06060606 -0.5683056 0.2354003 -0.06060606 -0.5114613 0.3417482 -0.06060606 -0.4349619 0.4349627 -0.06060606 -0.3417471 0.511462 -0.06060606 -0.2353991 0.5683059 -0.06060606 -0.120005 0.6033102 -0.06060606</float_array>
<technique_common>
<accessor source="#Cone_003-mesh-positions-array" count="66" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cone_003-mesh-normals">
<float_array id="Cone_003-mesh-normals-array" count="198">0 0.8207646 -0.5712665 0 0 1 0.1601035 0.8050041 -0.5712578 0.3140783 0.7582927 -0.5712679 0.4559909 0.6824451 -0.5712627 0.5803661 0.5803661 -0.5712711 0.6824451 0.4559909 -0.5712627 0.7582927 0.3140783 -0.5712679 0.8050041 0.1601035 -0.5712578 0.8207646 0 -0.5712665 0.8050041 -0.1601035 -0.5712578 0.7582927 -0.3140783 -0.5712679 0.6824451 -0.4559909 -0.5712627 0.5803661 -0.5803661 -0.5712711 0.4559909 -0.6824451 -0.5712627 0.3140783 -0.7582927 -0.5712679 0.1601035 -0.8050041 -0.5712578 0 -0.8207646 -0.5712665 -0.1601035 -0.8050041 -0.5712578 -0.3140783 -0.7582927 -0.5712679 -0.4559909 -0.6824451 -0.5712627 -0.5803661 -0.5803661 -0.5712711 -0.6824451 -0.4559909 -0.5712627 -0.7582927 -0.3140783 -0.5712679 -0.8050041 -0.1601035 -0.5712578 -0.8207646 0 -0.5712665 -0.8050041 0.1601035 -0.5712578 -0.7582927 0.3140783 -0.5712679 -0.6824451 0.4559909 -0.5712627 -0.5803661 0.5803661 -0.5712711 -0.4559909 0.6824451 -0.5712627 -0.3140783 0.7582927 -0.5712679 -0.1601035 0.8050041 -0.5712578 0 -0.8207646 0.5712665 0 0 -1 0.1601035 -0.8050041 0.5712578 0.3140783 -0.7582927 0.5712679 0.4559909 -0.6824451 0.5712627 0.5803661 -0.5803661 0.5712711 0.6824451 -0.4559909 0.5712627 0.7582927 -0.3140783 0.5712679 0.8050041 -0.1601035 0.5712578 0.8207646 0 0.5712665 0.8050041 0.1601035 0.5712578 0.7582927 0.3140783 0.5712679 0.6824451 0.4559909 0.5712627 0.5803661 0.5803661 0.5712711 0.4559909 0.6824451 0.5712627 0.3140783 0.7582927 0.5712679 0.1601035 0.8050041 0.5712578 0 0.8207646 0.5712665 -0.1601035 0.8050041 0.5712578 -0.3140783 0.7582927 0.5712679 -0.4559909 0.6824451 0.5712627 -0.5803661 0.5803661 0.5712711 -0.6824451 0.4559909 0.5712627 -0.7582927 0.3140783 0.5712679 -0.8050041 0.1601035 0.5712578 -0.8207646 0 0.5712665 -0.8050041 -0.1601035 0.5712578 -0.7582927 -0.3140783 0.5712679 -0.6824451 -0.4559909 0.5712627 -0.5803661 -0.5803661 0.5712711 -0.4559909 -0.6824451 0.5712627 -0.3140783 -0.7582927 0.5712679 -0.1601035 -0.8050041 0.5712578</float_array>
<technique_common>
<accessor source="#Cone_003-mesh-normals-array" count="66" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cone_003-mesh-vertices">
<input semantic="POSITION" source="#Cone_003-mesh-positions"/>
</vertices>
<triangles material="Material_004-material" count="62">
<input semantic="VERTEX" source="#Cone_003-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cone_003-mesh-normals" offset="1"/>
<p>33 0 34 1 35 2 35 2 34 1 36 3 36 3 34 1 37 4 37 4 34 1 38 5 38 5 34 1 39 6 39 6 34 1 40 7 40 7 34 1 41 8 41 8 34 1 42 9 42 9 34 1 43 10 43 10 34 1 44 11 44 11 34 1 45 12 45 12 34 1 46 13 46 13 34 1 47 14 47 14 34 1 48 15 48 15 34 1 49 16 49 16 34 1 50 17 50 17 34 1 51 18 51 18 34 1 52 19 52 19 34 1 53 20 53 20 34 1 54 21 54 21 34 1 55 22 55 22 34 1 56 23 56 23 34 1 57 24 57 24 34 1 58 25 58 25 34 1 59 26 59 26 34 1 60 27 60 27 34 1 61 28 61 28 34 1 62 29 62 29 34 1 63 30 63 30 34 1 64 31 64 31 34 1 65 32 65 32 34 1 33 0 49 16 57 24 65 32 65 32 33 0 35 2 35 2 36 3 65 32 37 4 38 5 39 6 39 6 40 7 41 8 41 8 42 9 43 10 43 10 44 11 41 8 45 12 46 13 47 14 47 14 48 15 45 12 49 16 50 17 53 20 51 18 52 19 53 20 53 20 54 21 57 24 55 22 56 23 57 24 57 24 58 25 59 26 59 26 60 27 61 28 61 28 62 29 65 32 63 30 64 31 65 32 65 32 36 3 37 4 37 4 39 6 41 8 41 8 44 11 45 12 45 12 48 15 49 16 50 17 51 18 53 20 54 21 55 22 57 24 57 24 59 26 65 32 62 29 63 30 65 32 65 32 37 4 41 8 41 8 45 12 65 32 49 16 53 20 57 24 59 26 61 28 65 32 65 32 45 12 49 16</p>
</triangles>
<triangles material="Material_002-material" count="62">
<input semantic="VERTEX" source="#Cone_003-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cone_003-mesh-normals" offset="1"/>
<p>0 33 1 34 2 35 2 35 1 34 3 36 3 36 1 34 4 37 4 37 1 34 5 38 5 38 1 34 6 39 6 39 1 34 7 40 7 40 1 34 8 41 8 41 1 34 9 42 9 42 1 34 10 43 10 43 1 34 11 44 11 44 1 34 12 45 12 45 1 34 13 46 13 46 1 34 14 47 14 47 1 34 15 48 15 48 1 34 16 49 16 49 1 34 17 50 17 50 1 34 18 51 18 51 1 34 19 52 19 52 1 34 20 53 20 53 1 34 21 54 21 54 1 34 22 55 22 55 1 34 23 56 23 56 1 34 24 57 24 57 1 34 25 58 25 58 1 34 26 59 26 59 1 34 27 60 27 60 1 34 28 61 28 61 1 34 29 62 29 62 1 34 30 63 30 63 1 34 31 64 31 64 1 34 32 65 32 65 1 34 0 33 16 49 24 57 8 41 32 65 0 33 2 35 2 35 3 36 4 37 4 37 5 38 8 41 6 39 7 40 8 41 8 41 9 42 10 43 10 43 11 44 8 41 12 45 13 46 14 47 14 47 15 48 16 49 16 49 17 50 20 53 18 51 19 52 20 53 20 53 21 54 22 55 22 55 23 56 24 57 24 57 25 58 26 59 26 59 27 60 24 57 28 61 29 62 32 65 30 63 31 64 32 65 32 65 2 35 8 41 5 38 6 39 8 41 8 41 11 44 12 45 12 45 14 47 16 49 17 50 18 51 20 53 20 53 22 55 24 57 24 57 27 60 28 61 29 62 30 63 32 65 2 35 4 37 8 41 8 41 12 45 16 49 16 49 20 53 24 57 24 57 28 61 32 65 32 65 8 41 24 57</p>
</triangles>
</mesh>
</geometry>
</library_geometries>
<library_controllers/>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Camera" name="Camera" type="NODE">
<matrix sid="transform">0.6859207 -0.3240135 0.6515582 7.481132 0.7276763 0.3054208 -0.6141704 -6.50764 0 0.8953956 0.4452714 5.343665 0 0 0 1</matrix>
<instance_camera url="#Camera-camera"/>
</node>
<node id="Lamp" name="Lamp" type="NODE">
<matrix sid="transform">-0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1</matrix>
<instance_light url="#Lamp-light"/>
</node>
<node id="Camera_001" name="Camera_001" type="NODE">
<matrix sid="transform">1.371841 -0.648027 1.303116 10.0091 1.455353 0.6108412 -1.228341 -10.6572 3.76898e-7 1.790791 0.8905425 5.77815 0 0 0 1</matrix>
<instance_camera url="#Camera_001-camera"/>
</node>
<node id="Lamp_001" name="Lamp_001" type="NODE">
<matrix sid="transform">-0.5817292 -1.542202 1.132786 3.199329 1.910342 -0.3997671 0.4367821 4.368987 -0.1103777 1.209049 1.589345 6.898543 0 0 0 1</matrix>
<instance_light url="#Lamp_001-light"/>
</node>
<node id="Cone_000" name="Cone_000" type="NODE">
<matrix sid="transform">0.1515022 -3.01129e-7 -1.994254 0.004837528 -3.54228e-13 -2 3.01996e-7 -0.04310748 -1.994254 -2.28762e-8 -0.1515022 -0.001579307 0 0 0 1</matrix>
<instance_geometry url="#Cone_003-mesh" name="Cone_000">
<bind_material>
<technique_common>
<instance_material symbol="Material_004-material" target="#Material_004-material"/>
<instance_material symbol="Material_002-material" target="#Material_002-material"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
<node id="Lamp_001" name="Lamp_001" type="NODE">
<matrix sid="transform">-0.5817294 -1.542202 1.132787 3.199328 1.910342 -0.3997668 0.4367828 4.368987 -0.1103783 1.209049 1.589345 6.898543 0 0 0 1</matrix>
<instance_light url="#Lamp_001-light"/>
</node>
<node id="Camera_001" name="Camera_001" type="NODE">
<matrix sid="transform">1.371841 -0.648027 1.303116 10.0091 1.455353 0.6108412 -1.228341 -10.6572 3.76898e-7 1.790791 0.8905425 5.77815 0 0 0 1</matrix>
<instance_camera url="#Camera_001-camera"/>
</node>
<node id="Camera_001_001" name="Camera_001_001" type="NODE">
<matrix sid="transform">1.371841 -0.648027 1.303116 10.0091 1.455353 0.6108412 -1.228341 -10.6572 3.76898e-7 1.790791 0.8905425 5.77815 0 0 0 1</matrix>
<instance_camera url="#Camera_001_001-camera"/>
</node>
<node id="Lamp_001_001" name="Lamp_001_001" type="NODE">
<matrix sid="transform">-0.5817294 -1.542202 1.132787 3.199328 1.910342 -0.3997668 0.4367828 4.368987 -0.1103783 1.209049 1.589345 6.898543 0 0 0 1</matrix>
<instance_light url="#Lamp_001_001-light"/>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

+77 -105
View File
@@ -22,14 +22,15 @@
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?> <?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.StackPane?> <?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<StackPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1200.0" style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.visualiser.controllers.RaceViewController"> <StackPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1200.0" style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.visualiser.controllers.RaceViewController">
<children> <children>
<StackPane fx:id="contentStackPane" maxHeight="1.7976931348623157E308" <StackPane fx:id="contentStackPane" maxHeight="1.7976931348623157E308"
maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0"
prefHeight="800.0" prefWidth="1200.0" style="-fx-background-color: skyblue;" prefWidth="1200.0" style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8.0.111"
xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" <GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
prefHeight="800.0" prefWidth="1200.0"> prefHeight="800.0" prefWidth="1200.0">
@@ -37,8 +38,8 @@
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="250.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="250.0"
prefWidth="250.0"/> prefWidth="250.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308"/> <ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" <ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="400.0"
minWidth="400.0" prefWidth="400.0"/> prefWidth="400.0"/>
</columnConstraints> </columnConstraints>
<rowConstraints> <rowConstraints>
<RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0" <RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0"
@@ -50,14 +51,13 @@
<children> <children>
<GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" styleClass="timer"> <GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" styleClass="timer">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0"
minWidth="50.0" prefWidth="50.0"/> prefWidth="50.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="135.0"
minWidth="135.0" prefWidth="135.0"/> prefWidth="135.0"/>
</columnConstraints> </columnConstraints>
<rowConstraints> <rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
vgrow="SOMETIMES"/>
</rowConstraints> </rowConstraints>
<opaqueInsets> <opaqueInsets>
<Insets/> <Insets/>
@@ -76,9 +76,8 @@
<Insets/> <Insets/>
</GridPane.margin> </GridPane.margin>
</ImageView> </ImageView>
<Label fx:id="timerLabel" text="00:03:34" <Label fx:id="timerLabel" text="00:03:34" GridPane.columnIndex="1"
GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
GridPane.valignment="CENTER">
<font> <font>
<Font size="21.0"/> <Font size="21.0"/>
</font> </font>
@@ -90,68 +89,57 @@
</GridPane> </GridPane>
<GridPane GridPane.columnIndex="2"> <GridPane GridPane.columnIndex="2">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
prefWidth="100.0"/> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
prefWidth="100.0"/>
</columnConstraints> </columnConstraints>
<rowConstraints> <rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
vgrow="SOMETIMES"/>
</rowConstraints> </rowConstraints>
</GridPane> </GridPane>
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2"> <GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="390.0"
minWidth="390.0" prefWidth="390.0"/> prefWidth="390.0"/>
</columnConstraints> </columnConstraints>
<rowConstraints> <rowConstraints>
<RowConstraints maxHeight="1.7976931348623157E308" <RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/>
<RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0"
vgrow="SOMETIMES"/> vgrow="SOMETIMES"/>
<RowConstraints maxHeight="60.0" minHeight="60.0"
prefHeight="60.0" vgrow="SOMETIMES"/>
</rowConstraints> </rowConstraints>
<children> <children>
<Pane fx:id="chatHistoryHolder" prefHeight="200.0" <Pane fx:id="chatHistoryHolder" prefHeight="200.0" prefWidth="200.0"
prefWidth="200.0" GridPane.hgrow="ALWAYS" GridPane.hgrow="ALWAYS" GridPane.valignment="BOTTOM"
GridPane.valignment="BOTTOM" GridPane.vgrow="ALWAYS"> GridPane.vgrow="ALWAYS">
<GridPane.margin> <GridPane.margin>
<Insets/> <Insets/>
</GridPane.margin> </GridPane.margin>
<padding> <padding>
<Insets bottom="10.0" left="10.0" right="10.0" <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
top="10.0"/>
</padding> </padding>
</Pane> </Pane>
<GridPane fx:id="chatInputHolder" GridPane.rowIndex="1"> <GridPane fx:id="chatInputHolder" GridPane.rowIndex="1">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
prefWidth="100.0"/> prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" <ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity"
maxWidth="-Infinity" minWidth="90.0" minWidth="90.0" prefWidth="90.0"/>
prefWidth="90.0"/>
</columnConstraints> </columnConstraints>
<rowConstraints> <rowConstraints>
<RowConstraints maxHeight="50.0" minHeight="50.0" <RowConstraints maxHeight="50.0" minHeight="50.0" prefHeight="50.0"
prefHeight="50.0" valignment="CENTER" valignment="CENTER" vgrow="SOMETIMES"/>
vgrow="SOMETIMES"/>
</rowConstraints> </rowConstraints>
<children> <children>
<JFXButton fx:id="chatSend" alignment="CENTER" <JFXButton fx:id="chatSend" alignment="CENTER" buttonType="RAISED"
buttonType="RAISED" focusTraversable="false" focusTraversable="false" maxHeight="-Infinity"
maxHeight="-Infinity" maxWidth="1.7976931348623157E308" minHeight="-Infinity"
maxWidth="1.7976931348623157E308" minWidth="-Infinity" prefHeight="35.0" text="SEND"
minHeight="-Infinity" minWidth="-Infinity"
prefHeight="35.0" text="SEND"
GridPane.columnIndex="1"> GridPane.columnIndex="1">
<GridPane.margin> <GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
top="10.0"/>
</GridPane.margin> </GridPane.margin>
</JFXButton> </JFXButton>
<JFXTextField fx:id="chatInput" focusTraversable="false" <JFXTextField fx:id="chatInput" focusTraversable="false"
maxHeight="35.0" minHeight="-Infinity" maxHeight="35.0" minHeight="-Infinity" prefHeight="35.0">
prefHeight="35.0">
<GridPane.margin> <GridPane.margin>
<Insets bottom="10.0" left="20.0" right="10.0"/> <Insets bottom="10.0" left="20.0" right="10.0"/>
</GridPane.margin> </GridPane.margin>
@@ -169,33 +157,31 @@
<Insets bottom="10.0" right="10.0"/> <Insets bottom="10.0" right="10.0"/>
</GridPane.margin> </GridPane.margin>
</GridPane> </GridPane>
<GridPane fx:id="windGridPane" maxHeight="-Infinity" <GridPane fx:id="windGridPane" maxHeight="-Infinity" maxWidth="-Infinity"
maxWidth="-Infinity" prefHeight="150.0" prefWidth="240.0" prefHeight="150.0" prefWidth="240.0" GridPane.halignment="CENTER"
GridPane.halignment="CENTER" GridPane.rowIndex="2" GridPane.rowIndex="2" GridPane.valignment="BOTTOM">
GridPane.valignment="BOTTOM">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0" minWidth="110.0"
minWidth="110.0" prefWidth="110.0"/> prefWidth="110.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="132.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="132.0" minWidth="10.0"
minWidth="10.0" prefWidth="132.0"/> prefWidth="132.0"/>
</columnConstraints> </columnConstraints>
<rowConstraints> <rowConstraints>
<RowConstraints maxHeight="120.0" minHeight="120.0" <RowConstraints maxHeight="120.0" minHeight="120.0" prefHeight="120.0"
prefHeight="120.0" vgrow="SOMETIMES"/> vgrow="SOMETIMES"/>
<RowConstraints maxHeight="30.0" minHeight="30.0" <RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
prefHeight="30.0" vgrow="SOMETIMES"/> vgrow="SOMETIMES"/>
</rowConstraints> </rowConstraints>
<children> <children>
<Label fx:id="positionLabel" text="Position:" <Label fx:id="positionLabel" text="Position:" GridPane.columnIndex="1"
GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.halignment="LEFT" GridPane.rowSpan="2" GridPane.valignment="TOP">
GridPane.rowSpan="2" GridPane.valignment="TOP">
<padding> <padding>
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
</padding> </padding>
</Label> </Label>
<Label fx:id="boatSpeedLabel" text="Boat Speed:" <Label fx:id="boatSpeedLabel" text="Boat Speed:" GridPane.columnIndex="1"
GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.halignment="LEFT" GridPane.rowSpan="2"
GridPane.rowSpan="2" GridPane.valignment="CENTER"> GridPane.valignment="CENTER">
<opaqueInsets> <opaqueInsets>
<Insets/> <Insets/>
</opaqueInsets> </opaqueInsets>
@@ -204,8 +190,8 @@
</padding> </padding>
</Label> </Label>
<Label fx:id="boatHeadingLabel" text="Boat Heading:" <Label fx:id="boatHeadingLabel" text="Boat Heading:"
GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2"
GridPane.rowSpan="2" GridPane.valignment="BOTTOM"> GridPane.valignment="BOTTOM">
<padding> <padding>
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
</padding> </padding>
@@ -218,14 +204,10 @@
<rowConstraints> <rowConstraints>
<RowConstraints maxHeight="120.0" minHeight="120.0" <RowConstraints maxHeight="120.0" minHeight="120.0"
prefHeight="120.0" vgrow="SOMETIMES"/> prefHeight="120.0" vgrow="SOMETIMES"/>
<RowConstraints maxHeight="30.0" minHeight="30.0" <RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
prefHeight="30.0" vgrow="SOMETIMES"/> vgrow="SOMETIMES"/>
</rowConstraints> </rowConstraints>
<children> <children>
<ImageView fx:id="windImageView" fitHeight="92.0"
fitWidth="109.0" pickOnBounds="true"
preserveRatio="true" GridPane.halignment="CENTER"
GridPane.rowSpan="2" GridPane.valignment="CENTER"/>
<Label fx:id="windSpeedLabel" text="0.0 Knots" <Label fx:id="windSpeedLabel" text="0.0 Knots"
GridPane.halignment="RIGHT" GridPane.rowIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="1"
GridPane.valignment="CENTER"> GridPane.valignment="CENTER">
@@ -240,6 +222,7 @@
<Insets left="5.0"/> <Insets left="5.0"/>
</GridPane.margin> </GridPane.margin>
</Label> </Label>
<VBox fx:id="windArrowVBox" prefHeight="200.0" prefWidth="100.0"/>
</children> </children>
</GridPane> </GridPane>
</children> </children>
@@ -252,28 +235,22 @@
</GridPane> </GridPane>
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="2"> <GridPane GridPane.columnIndex="1" GridPane.rowIndex="2">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
prefWidth="100.0"/> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
prefWidth="100.0"/> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
prefWidth="100.0"/>
</columnConstraints> </columnConstraints>
<rowConstraints> <rowConstraints>
<RowConstraints maxHeight="152.0" minHeight="10.0" <RowConstraints maxHeight="152.0" minHeight="10.0" prefHeight="152.0"
prefHeight="152.0" vgrow="SOMETIMES"/> vgrow="SOMETIMES"/>
<RowConstraints maxHeight="118.0" minHeight="10.0" <RowConstraints maxHeight="118.0" minHeight="10.0" prefHeight="98.0"
prefHeight="98.0" vgrow="SOMETIMES"/> vgrow="SOMETIMES"/>
</rowConstraints> </rowConstraints>
<children> <children>
<ImageView fx:id="velocityIcon" fitHeight="88.0" <ImageView fx:id="velocityIcon" fitHeight="88.0" fitWidth="106.0"
fitWidth="106.0" pickOnBounds="true" preserveRatio="true" pickOnBounds="true" preserveRatio="true" visible="false"
visible="false" GridPane.halignment="CENTER" GridPane.halignment="CENTER" GridPane.rowIndex="1">
GridPane.rowIndex="1">
<image> <image>
<Image url="@../icons/velocity.png"/> <Image url="@../icons/velocity.png"/>
</image> </image>
@@ -286,10 +263,10 @@
<Image url="@../icons/handlingIcon.png"/> <Image url="@../icons/handlingIcon.png"/>
</image> </image>
</ImageView> </ImageView>
<ImageView fx:id="windWalkerIcon" fitHeight="83.0" <ImageView fx:id="windWalkerIcon" fitHeight="83.0" fitWidth="100.0"
fitWidth="100.0" pickOnBounds="true" preserveRatio="true" pickOnBounds="true" preserveRatio="true" visible="false"
visible="false" GridPane.columnIndex="2" GridPane.columnIndex="2" GridPane.halignment="CENTER"
GridPane.halignment="CENTER" GridPane.rowIndex="1"> GridPane.rowIndex="1">
<image> <image>
<Image url="@../icons/windWalkerIcon.png"/> <Image url="@../icons/windWalkerIcon.png"/>
</image> </image>
@@ -302,11 +279,10 @@
<Image url="@../icons/bumperIcon.png"/> <Image url="@../icons/bumperIcon.png"/>
</image> </image>
</ImageView> </ImageView>
<ImageView fx:id="badRandomIcon" fitHeight="69.0" <ImageView fx:id="badRandomIcon" fitHeight="69.0" fitWidth="103.0"
fitWidth="103.0" pickOnBounds="true" preserveRatio="true" pickOnBounds="true" preserveRatio="true" visible="false"
visible="false" GridPane.columnIndex="4" GridPane.columnIndex="4" GridPane.halignment="CENTER"
GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.rowIndex="1" GridPane.valignment="CENTER">
GridPane.valignment="CENTER">
<image> <image>
<Image url="@../icons/slowedIcon.png"/> <Image url="@../icons/slowedIcon.png"/>
</image> </image>
@@ -317,8 +293,7 @@
</GridPane> </GridPane>
</children> </children>
</StackPane> </StackPane>
<Pane fx:id="miniMapPane" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" <Pane fx:id="miniMapPane" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: white; -fx-opacity: 0.45; -fx-background-radius: 10;" StackPane.alignment="TOP_RIGHT">
minWidth="200.0" prefHeight="200.0" prefWidth="200.0" StackPane.alignment="TOP_RIGHT">
<StackPane.margin> <StackPane.margin>
<Insets right="15.0" top="15.0" /> <Insets right="15.0" top="15.0" />
</StackPane.margin> </StackPane.margin>
@@ -332,11 +307,8 @@
</StackPane.margin> </StackPane.margin>
</JFXButton> </JFXButton>
<AnchorPane fx:id="loadingScreenPane"> <AnchorPane fx:id="loadingScreenPane">
<children> <ImageView fx:id="loadingScreen" fitHeight="672.0" fitWidth="1200.0" pickOnBounds="true" preserveRatio="true" />
<ImageView fx:id="loadingScreen" fitHeight="672.0" fitWidth="1200.0"
pickOnBounds="true" preserveRatio="true"/>
<JFXSpinner layoutX="566.0" layoutY="692.0" radius="30.0" /> <JFXSpinner layoutX="566.0" layoutY="692.0" radius="30.0" />
</children>
</AnchorPane> </AnchorPane>
<JFXButton fx:id="chatToggleButton" text="—" StackPane.alignment="BOTTOM_RIGHT"> <JFXButton fx:id="chatToggleButton" text="—" StackPane.alignment="BOTTOM_RIGHT">
<font> <font>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.Pane?>
<Pane fx:id="windPane" prefHeight="120.0" prefWidth="110.0"
stylesheets="@../../css/cells/WindCell.css" xmlns="http://javafx.com/javafx/8"
xmlns:fx="http://javafx.com/fxml/1"/>