• R/O
  • SSH

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javaandroidc++linuxc#objective-c誰得cocoaqtpythonrubywindowsphpgameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwitterdombtronvb.nettestarduinodirectxpreviewerゲームエンジン

Commit MetaInfo

Revisãob4e284a558f6ee98506e9b9f5de7760f0e3a58fb (tree)
Hora2021-06-06 23:22:33
Autorsebastian_bugiu
Commitersebastian_bugiu

Mensagem de Log

Velocity template now can create asteroids. More testing needed.

Mudança Sumário

Diff

diff -r 83b5ee7a8ad1 -r b4e284a558f6 HotshotEditor/src/com/javafx/experiments/jfx3dviewer/ContentModel.java
--- a/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/ContentModel.java Sun Jun 06 00:04:22 2021 +0300
+++ b/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/ContentModel.java Sun Jun 06 17:22:33 2021 +0300
@@ -31,12 +31,14 @@
3131 */
3232 package com.javafx.experiments.jfx3dviewer;
3333
34+import com.javafx.experiments.objects.Asteroid;
3435 import com.javafx.experiments.shape3d.PolygonMeshView;
3536 import com.javafx.experiments.shape3d.SubdivisionMesh;
3637
3738 import com.javafx.experiments.utils3d.Utility;
3839 import headwayent.hotshotengine.ENG_Matrix4;
3940 import headwayent.hotshotengine.ENG_Quaternion;
41+import headwayent.hotshotengine.ENG_Vector3D;
4042 import headwayent.hotshotengine.ENG_Vector4D;
4143 import javafx.animation.Timeline;
4244 import javafx.beans.property.ObjectProperty;
@@ -59,7 +61,9 @@
5961 import javafx.scene.transform.Rotate;
6062 import javafx.scene.transform.Translate;
6163 import javafx.util.Duration;
64+import org.apache.velocity.VelocityContext;
6265
66+import java.util.ArrayList;
6367 import java.util.HashMap;
6468
6569 /**
@@ -1023,4 +1027,11 @@
10231027 }
10241028 }
10251029 }
1030+
1031+ public void export(VelocityContext templateContext) {
1032+ ArrayList<Asteroid> asteroids = new ArrayList<>();
1033+ asteroids.add(new Asteroid("Asteroid0", new ENG_Vector3D(0.0f, 200.0f, -250.0f), new ENG_Quaternion(true), 50));
1034+ asteroids.add(new Asteroid("Asteroid1", new ENG_Vector3D(1500.0f -200.0f -250.0f), new ENG_Quaternion(true), 50));
1035+ templateContext.put("asteroids", asteroids);
1036+ }
10261037 }
diff -r 83b5ee7a8ad1 -r b4e284a558f6 HotshotEditor/src/com/javafx/experiments/jfx3dviewer/MainController.java
--- a/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/MainController.java Sun Jun 06 00:04:22 2021 +0300
+++ b/HotshotEditor/src/com/javafx/experiments/jfx3dviewer/MainController.java Sun Jun 06 17:22:33 2021 +0300
@@ -32,7 +32,10 @@
3232 package com.javafx.experiments.jfx3dviewer;
3333
3434 import java.io.File;
35+import java.io.FileNotFoundException;
3536 import java.io.IOException;
37+import java.io.PrintWriter;
38+import java.net.MalformedURLException;
3639 import java.net.URL;
3740 import java.net.URLDecoder;
3841 import java.util.ResourceBundle;
@@ -75,6 +78,8 @@
7578 import javafx.stage.FileChooser;
7679 import javafx.util.Duration;
7780 import javafx.util.Pair;
81+import org.apache.commons.io.FilenameUtils;
82+import org.apache.velocity.Template;
7883 import org.apache.velocity.VelocityContext;
7984 import org.apache.velocity.app.Velocity;
8085
@@ -110,6 +115,41 @@
110115 private Parent navigationPanel;
111116 private VelocityContext templateContext;
112117
118+ public void loadTemplate(ActionEvent event) {
119+ System.out.println("loadTemplate");
120+ FileChooser chooser = new FileChooser();
121+ if (loadedPath != null) {
122+ chooser.setInitialDirectory(loadedPath.getAbsoluteFile()
123+ .getParentFile());
124+ }
125+ chooser.getExtensionFilters()
126+ .addAll(new FileChooser.ExtensionFilter("Velocity template", "*.vm"));
127+ chooser.setTitle("Load level template");
128+ File newFile = chooser.showOpenDialog(openMenuBtn.getScene()
129+ .getWindow());
130+ if (newFile != null) {
131+ try {
132+ Template template = Velocity.getTemplate("src/resources/com/javafx/experiments/jfx3dviewer/" + newFile.getName()
133+// .toURI()
134+// .toURL()
135+ .toString());
136+ contentModel.export(templateContext);
137+ String outputFilename = newFile.toURI()
138+ .toURL()
139+ .toString();
140+ PrintWriter writer = new PrintWriter("src/resources/com/javafx/experiments/jfx3dviewer/" + FilenameUtils.getBaseName(outputFilename) + ".txt");
141+ template.merge(templateContext, writer);
142+ writer.close();
143+ } catch (MalformedURLException e) {
144+ e.printStackTrace();
145+ } catch (FileNotFoundException e) {
146+ e.printStackTrace();
147+ }
148+
149+
150+ }
151+ }
152+
113153 public void export(ActionEvent event) {
114154 FileChooser chooser = new FileChooser();
115155 if (loadedPath != null) {
diff -r 83b5ee7a8ad1 -r b4e284a558f6 HotshotEditor/src/com/javafx/experiments/objects/Asteroid.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/HotshotEditor/src/com/javafx/experiments/objects/Asteroid.java Sun Jun 06 17:22:33 2021 +0300
@@ -0,0 +1,39 @@
1+package com.javafx.experiments.objects;
2+
3+import headwayent.hotshotengine.ENG_Quaternion;
4+import headwayent.hotshotengine.ENG_Vector3D;
5+
6+public class Asteroid {
7+
8+ private String meshName = "";
9+ private ENG_Vector3D position = new ENG_Vector3D();
10+ private ENG_Quaternion orientation = new ENG_Quaternion(true);
11+ private int health;
12+
13+ public Asteroid() {
14+
15+ }
16+
17+ public Asteroid(String meshName, ENG_Vector3D position, ENG_Quaternion orientation, int health) {
18+ this.meshName = meshName;
19+ this.position.set(position);
20+ this.orientation.set(orientation);
21+ this.health = health;
22+ }
23+
24+ public String getMeshName() {
25+ return meshName;
26+ }
27+
28+ public ENG_Vector3D getPosition() {
29+ return position;
30+ }
31+
32+ public ENG_Quaternion getOrientation() {
33+ return orientation;
34+ }
35+
36+ public int getHealth() {
37+ return health;
38+ }
39+}
diff -r 83b5ee7a8ad1 -r b4e284a558f6 HotshotEditor/src/headwayent/hotshotengine/ENG_Quaternion.java
--- a/HotshotEditor/src/headwayent/hotshotengine/ENG_Quaternion.java Sun Jun 06 00:04:22 2021 +0300
+++ b/HotshotEditor/src/headwayent/hotshotengine/ENG_Quaternion.java Sun Jun 06 17:22:33 2021 +0300
@@ -1135,7 +1135,7 @@
11351135 }
11361136
11371137 public String toString() {
1138- return ("Quaternion(" + String.valueOf(x) + ", " + String.valueOf(y) + ", " +
1139- String.valueOf(z) + ", " + String.valueOf(w) + ")");
1138+ return (String.valueOf(x) + ", " + String.valueOf(y) + ", " +
1139+ String.valueOf(z) + ", " + String.valueOf(w));
11401140 }
11411141 }
diff -r 83b5ee7a8ad1 -r b4e284a558f6 HotshotEditor/src/headwayent/hotshotengine/ENG_Vector2D.java
--- a/HotshotEditor/src/headwayent/hotshotengine/ENG_Vector2D.java Sun Jun 06 00:04:22 2021 +0300
+++ b/HotshotEditor/src/headwayent/hotshotengine/ENG_Vector2D.java Sun Jun 06 17:22:33 2021 +0300
@@ -514,7 +514,7 @@
514514 }
515515
516516 public String toString(boolean format, NumberFormat formatter) {
517- return ("Vector3(" + formatter.format(x) + ", " + formatter.format(y) + ")");
517+ return (formatter.format(x) + ", " + formatter.format(y));
518518 }
519519
520520 public String toString() {
diff -r 83b5ee7a8ad1 -r b4e284a558f6 HotshotEditor/src/headwayent/hotshotengine/ENG_Vector3D.java
--- a/HotshotEditor/src/headwayent/hotshotengine/ENG_Vector3D.java Sun Jun 06 00:04:22 2021 +0300
+++ b/HotshotEditor/src/headwayent/hotshotengine/ENG_Vector3D.java Sun Jun 06 17:22:33 2021 +0300
@@ -673,8 +673,8 @@
673673 }
674674
675675 public String toString(boolean format, NumberFormat formatter) {
676- return ("Vector3(" + formatter.format(x) + ", " + formatter.format(y) + ", " +
677- formatter.format(z) + ")");
676+ return (formatter.format(x) + ", " + formatter.format(y) + ", " +
677+ formatter.format(z));
678678 }
679679
680680 public String toString() {
diff -r 83b5ee7a8ad1 -r b4e284a558f6 HotshotEditor/src/resources/com/javafx/experiments/jfx3dviewer/level_retribution.vm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/HotshotEditor/src/resources/com/javafx/experiments/jfx3dviewer/level_retribution.vm Sun Jun 06 17:22:33 2021 +0300
@@ -0,0 +1,544 @@
1+level retribution
2+{
3+ start
4+ {
5+ skybox SkyboxWorkspace1
6+ light_dir -1.0 0.0 0.0
7+ light_type directional
8+ light_power_scale 1.0
9+ light_diffuse_color 0.8 0.4 0.2 1.0
10+ light_specular_color 0.8 0.4 0.2 1.0
11+ ambient_light_upperhemi_lowerhemi_dir 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0 0.0 0.0
12+
13+ player_ship_selection
14+ {
15+ team human
16+ {
17+ cd raw
18+ name ship_human0
19+ name ship_human1
20+ }
21+ }
22+ obj PlayerShip
23+ {
24+ type player_ship
25+ position -9500.0 -9500.0 -9500.0
26+ ai 0
27+ invincible 0
28+ }
29+ obj Defender0
30+ {
31+ mesh ship_human0
32+ type fighter_ship
33+ position -9800.0 -9800.0 -9700.0
34+ orientation 0.0 1.0 0.0 45.0
35+ speed 0.0 0.0 0.0
36+ ai 1
37+ friendly 1
38+ behavior defensive
39+ health 100
40+ }
41+ obj Defender1
42+ {
43+ mesh ship_human0
44+ type fighter_ship
45+ position 300.0 0.0 -300.0
46+ orientation 0.0 0.0 0.0 0.0
47+ speed 0.0 0.0 0.0
48+ ai 1
49+ friendly 1
50+ behavior aggresive
51+ health 100
52+ }
53+ obj Defender2
54+ {
55+ mesh ship_human0
56+ type fighter_ship
57+ position -300.0 0.0 -300.0
58+ orientation 0.0 0.0 0.0 0.0
59+ speed 0.0 0.0 0.0
60+ ai 1
61+ friendly 1
62+ behavior aggresive
63+ health 100
64+ }
65+ obj Defender3
66+ {
67+ mesh ship_human0
68+ type fighter_ship
69+ position 300.0 0.0 300.0
70+ orientation 0.0 0.0 0.0 0.0
71+ speed 0.0 0.0 0.0
72+ ai 1
73+ friendly 1
74+ behavior aggresive
75+ health 100
76+ }
77+ obj Defender4
78+ {
79+ mesh ship_human0
80+ type fighter_ship
81+ position 300.0 -200.0 300.0
82+ orientation 0.0 0.0 0.0 0.0
83+ speed 0.0 0.0 0.0
84+ ai 1
85+ friendly 1
86+ behavior aggresive
87+ health 100
88+ }
89+ #foreach ($asteroid in $asteroids)
90+ obj Asteroid$foreach.index
91+ {
92+ mesh $asteroid.meshName
93+ type asteroid
94+ position $asteroid.position
95+ orientation $asteroid.orientation
96+ speed 0.0 0.0 0.0
97+ ai 0
98+ health $asteroid.health
99+ }
100+ #end
101+ obj Asteroid0
102+ {
103+ mesh asteroid2
104+ type asteroid
105+ position 0.0 200.0 -250.0
106+ orientation 0.0 0.0 0.0 0.0
107+ speed 0.0 0.0 0.0
108+ ai 0
109+ health 50
110+ }
111+ obj Asteroid1
112+ {
113+ mesh asteroid3
114+ type asteroid
115+ position 1500.0 -200.0 -250.0
116+ orientation 0.0 0.0 0.0 0.0
117+ speed 0.0 0.0 0.0
118+ ai 0
119+ health 50
120+ }
121+ obj Asteroid2
122+ {
123+ mesh asteroid2
124+ type asteroid
125+ position 300.0 500.0 -250.0
126+ orientation 0.0 0.0 0.0 0.0
127+ speed 0.0 0.0 0.0
128+ ai 0
129+ health 50
130+ }
131+ obj Asteroid3
132+ {
133+ mesh asteroid0
134+ type asteroid
135+ position -100.0 -200.0 -1250.0
136+ orientation 0.0 0.0 0.0 0.0
137+ speed 0.0 0.0 0.0
138+ ai 0
139+ health 50
140+ }
141+ obj Asteroid4
142+ {
143+ mesh asteroid3
144+ type asteroid
145+ position 1000.0 250.0 -250.0
146+ orientation 0.0 0.0 0.0 0.0
147+ speed 0.0 0.0 0.0
148+ ai 0
149+ health 50
150+ }
151+ obj Asteroid5
152+ {
153+ mesh asteroid1
154+ type asteroid
155+ position 100.0 -500.0 -750.0
156+ orientation 0.0 0.0 0.0 0.0
157+ speed 0.0 0.0 0.0
158+ ai 0
159+ health 50
160+ }
161+ obj Asteroid6
162+ {
163+ mesh asteroid2
164+ type asteroid
165+ position -250.0 -1500.0 -1250.0
166+ orientation 0.0 0.0 0.0 0.0
167+ speed 0.0 0.0 0.0
168+ ai 0
169+ health 50
170+ }
171+ obj Asteroid7
172+ {
173+ mesh asteroid3
174+ type asteroid
175+ position 500.0 2000.0 -650.0
176+ orientation 0.0 0.0 0.0 0.0
177+ speed 0.0 0.0 0.0
178+ ai 0
179+ health 50
180+ }
181+ obj Asteroid8
182+ {
183+ mesh asteroid4
184+ type asteroid
185+ position 5000.0 -400.0 -550.0
186+ orientation 0.0 0.0 0.0 0.0
187+ speed 0.0 0.0 0.0
188+ ai 0
189+ health 50
190+ }
191+ obj Asteroid9
192+ {
193+ mesh asteroid0
194+ type asteroid
195+ position 0.0 200.0 -2050.0
196+ orientation 0.0 0.0 0.0 0.0
197+ speed 0.0 0.0 0.0
198+ ai 0
199+ health 50
200+ }
201+ obj Asteroid10
202+ {
203+ mesh asteroid2
204+ type asteroid
205+ position 1000.0 2000.0 -250.0
206+ orientation 0.0 0.0 0.0 0.0
207+ speed 0.0 0.0 0.0
208+ ai 0
209+ health 50
210+ }
211+ }
212+ event invasion0
213+ {
214+ previous_end_cond
215+ {
216+ none
217+ }
218+ delay secs 5
219+ spawn
220+ {
221+ obj Attacker0
222+ {
223+ mesh ship_alien1
224+ type fighter_ship
225+ position -300.0 3000.0 -300.0
226+ orientation 0.0 0.0 0.0 0.0
227+ speed 0.0 0.0 0.0
228+ ai 1
229+ friendly 0
230+ behavior aggresive
231+ health 100
232+ prioritize 1 player_ship
233+ }
234+ obj Attacker1
235+ {
236+ mesh ship_alien2
237+ type fighter_ship
238+ position -300.0 3000.0 -500.0
239+ orientation 0.0 0.0 0.0 0.0
240+ speed 0.0 0.0 0.0
241+ ai 1
242+ friendly 0
243+ behavior aggresive
244+ health 100
245+ prioritize 1 player_ship
246+ }
247+ obj Attacker2
248+ {
249+ mesh ship_alien0
250+ type fighter_ship
251+ position -300.0 4000.0 -700.0
252+ orientation 0.0 0.0 0.0 0.0
253+ speed 0.0 0.0 0.0
254+ ai 1
255+ friendly 0
256+ behavior aggresive
257+ health 100
258+ prioritize 1 player_ship
259+ }
260+ obj Attacker3
261+ {
262+ mesh ship_alien0
263+ type fighter_ship
264+ position -300.0 -4000.0 -300.0
265+ orientation 0.0 0.0 0.0 0.0
266+ speed 0.0 0.0 0.0
267+ ai 1
268+ friendly 0
269+ behavior aggresive
270+ health 100
271+ prioritize 1 player_ship
272+ }
273+ obj Attacker4
274+ {
275+ mesh ship_alien0
276+ type fighter_ship
277+ position -300.0 -4000.0 -500.0
278+ orientation 0.0 0.0 0.0 0.0
279+ speed 0.0 0.0 0.0
280+ ai 1
281+ friendly 0
282+ behavior aggresive
283+ health 100
284+ prioritize 1 player_ship
285+ }
286+ obj Attacker5
287+ {
288+ mesh ship_alien0
289+ type fighter_ship
290+ position -300.0 -4000.0 -700.0
291+ orientation 0.0 0.0 0.0 0.0
292+ speed 0.0 0.0 0.0
293+ ai 1
294+ friendly 0
295+ behavior aggresive
296+ health 100
297+ prioritize 1 player_ship
298+ }
299+ }
300+ end_cond invasion0_end
301+ {
302+ type win
303+ {
304+ cond win_cond
305+ {
306+ type destroyed
307+ objs 6 Attacker0 Attacker1 Attacker2 Attacker3 Attacker4 Attacker5
308+ }
309+ }
310+ type loss
311+ {
312+ cond loss_cond0
313+ {
314+ type time_elapsed
315+ secs 20
316+ }
317+ }
318+ }
319+ }
320+ event reinforcements0
321+ {
322+ previous_end_cond
323+ {
324+ none
325+ }
326+ delay secs 120
327+ spawn
328+ {
329+ obj Defender5
330+ {
331+ mesh ship_human1
332+ type fighter_ship
333+ position -300.0 400.0 300.0
334+ orientation 0.0 0.0 0.0 0.0
335+ speed 0.0 0.0 0.0
336+ ai 1
337+ friendly 1
338+ behavior defensive
339+ health 100
340+ }
341+ obj Defender6
342+ {
343+ mesh ship_human2
344+ type fighter_ship
345+ position 300.0 500.0 -300.0
346+ orientation 0.0 0.0 0.0 0.0
347+ speed 0.0 0.0 0.0
348+ ai 1
349+ friendly 1
350+ behavior aggresive
351+ health 100
352+ }
353+ obj Defender7
354+ {
355+ mesh ship_human2
356+ type fighter_ship
357+ position -300.0 600.0 -300.0
358+ orientation 0.0 0.0 0.0 0.0
359+ speed 0.0 0.0 0.0
360+ ai 1
361+ friendly 1
362+ behavior aggresive
363+ health 100
364+ }
365+ obj Defender8
366+ {
367+ mesh ship_human1
368+ type fighter_ship
369+ position 300.0 700.0 300.0
370+ orientation 0.0 0.0 0.0 0.0
371+ speed 0.0 0.0 0.0
372+ ai 1
373+ friendly 1
374+ behavior aggresive
375+ health 100
376+ }
377+ }
378+ end_cond reinforcements0_end
379+ {
380+ type win
381+ {
382+ cond win_cond
383+ {
384+ type destroyed
385+ objs 3 Attacker0 Attacker1 Attacker2 Attacker3 Attacker4 Attacker5
386+ }
387+ }
388+ type loss
389+ {
390+ cond loss_cond0
391+ {
392+ type time_elapsed
393+ secs 600
394+ }
395+ }
396+ }
397+ }
398+ event invasion1
399+ {
400+ previous_end_cond
401+ {
402+ prev_conds 1 invasion0
403+ }
404+ delay secs 5
405+ spawn
406+ {
407+ obj Attacker6
408+ {
409+ mesh ship_alien1
410+ type fighter_ship
411+ position -300.0 300.0 -300.0
412+ orientation 0.0 0.0 0.0 0.0
413+ speed 0.0 0.0 0.0
414+ ai 1
415+ friendly 0
416+ behavior aggresive
417+ health 100
418+ prioritize 1 player_ship
419+ }
420+ obj Attacker7
421+ {
422+ mesh ship_alien2
423+ type fighter_ship
424+ position -300.0 400.0 -300.0
425+ orientation 0.0 0.0 0.0 0.0
426+ speed 0.0 0.0 0.0
427+ ai 1
428+ friendly 0
429+ behavior aggresive
430+ health 100
431+ prioritize 1 player_ship
432+ }
433+ obj Attacker8
434+ {
435+ mesh ship_alien0
436+ type fighter_ship
437+ position -300.0 500.0 -300.0
438+ orientation 0.0 0.0 0.0 0.0
439+ speed 0.0 0.0 0.0
440+ ai 1
441+ friendly 0
442+ behavior aggresive
443+ health 100
444+ prioritize 1 player_ship
445+ }
446+ obj Attacker9
447+ {
448+ mesh ship_alien0
449+ type fighter_ship
450+ position -300.0 -500.0 -300.0
451+ orientation 0.0 0.0 0.0 0.0
452+ speed 0.0 0.0 0.0
453+ ai 1
454+ friendly 0
455+ behavior aggresive
456+ health 100
457+ prioritize 1 player_ship
458+ }
459+ obj Attacker10
460+ {
461+ mesh ship_alien0
462+ type fighter_ship
463+ position -300.0 -600.0 -300.0
464+ orientation 0.0 0.0 0.0 0.0
465+ speed 0.0 0.0 0.0
466+ ai 1
467+ friendly 0
468+ behavior aggresive
469+ health 100
470+ prioritize 1 player_ship
471+ }
472+ obj Attacker11
473+ {
474+ mesh ship_alien0
475+ type fighter_ship
476+ position -300.0 -700.0 -300.0
477+ orientation 0.0 0.0 0.0 0.0
478+ speed 0.0 0.0 0.0
479+ ai 1
480+ friendly 0
481+ behavior aggresive
482+ health 100
483+ prioritize 1 player_ship
484+ }
485+ }
486+ end_cond invasion1_end
487+ {
488+ type win
489+ {
490+ cond win_cond
491+ {
492+ type destroyed
493+ objs 6 Attacker6 Attacker7 Attacker8 Attacker9 Attacker10 Attacker11
494+ }
495+ }
496+ type loss
497+ {
498+ cond loss_cond0
499+ {
500+ type time_elapsed
501+ secs 600
502+ }
503+ }
504+ }
505+ }
506+ event friendly_ship_exit
507+ {
508+ previous_end_cond
509+ {
510+ prev_conds 2 invasion0 invasion1
511+ comparator ( and invasion0 invasion1 )
512+ }
513+ delay secs 5
514+ exit
515+ {
516+ objs 9 Defender0 Defender1 Defender2 Defender3 Defender4 Defender5 Defender6 Defender7 Defender8
517+ }
518+
519+ end_cond ship_exit
520+ {
521+ type win
522+ {
523+ cond win_cond0
524+ {
525+ type exited_or_destroyed
526+ objs 9 Defender0 Defender1 Defender2 Defender3 Defender4 Defender5 Defender6 Defender7 Defender8
527+ }
528+ }
529+ type loss
530+ {
531+ cond loss_cond0
532+ {
533+ type time_elapsed
534+ secs 600
535+ }
536+ }
537+ }
538+ }
539+ end
540+ {
541+ events 3 invasion0 invasion1 friendly_ship_exit
542+ comparator ( and invasion0 invasion1 friendly_ship_exit )
543+ }
544+}
diff -r 83b5ee7a8ad1 -r b4e284a558f6 HotshotEditor/src/resources/com/javafx/experiments/jfx3dviewer/main.fxml
--- a/HotshotEditor/src/resources/com/javafx/experiments/jfx3dviewer/main.fxml Sun Jun 06 00:04:22 2021 +0300
+++ b/HotshotEditor/src/resources/com/javafx/experiments/jfx3dviewer/main.fxml Sun Jun 06 17:22:33 2021 +0300
@@ -52,6 +52,7 @@
5252 </items>
5353 </SplitMenuButton>
5454 <Button mnemonicParsing="false" onAction="#export" text="Export..." />
55+ <Button mnemonicParsing="false" onAction="#loadTemplate" text="Load Template" />
5556 <!--HBox.hgrow="ALWAYS"-->
5657 <Pane maxWidth="1.7976931348623157E308" prefHeight="-1.0" prefWidth="-1.0" HBox.hgrow="ALWAYS" />
5758 <TimelineDisplay fx:id="timelineDisplay" />