Normand Briere
2019-11-17 cb37a129d1adb403019c96e798e86e2da9667f15
GroupEditor.java
....@@ -2052,6 +2052,8 @@
20522052 }
20532053
20542054 menu.add("-");
2055
+ mazeItem = menu.add(new MenuItem("Maze"));
2056
+ mazeItem.addActionListener(this);
20552057 parseverticesItem = menu.add(new MenuItem("Multiplicity"));
20562058 parseverticesItem.addActionListener(this);
20572059 textureFieldItem = menu.add(new MenuItem("Texture Field"));
....@@ -2247,6 +2249,111 @@
22472249 elem.openEditWindow(this, newWindow); //, false);
22482250 System.out.println("edit : " + elem);
22492251 elem.editWindow.refreshContents(true); // ? new
2252
+ }
2253
+
2254
+ private void GenerateMaze()
2255
+ {
2256
+ if (group.selection.size() == 4)
2257
+ {
2258
+ final double scaleX = SelectionSizeX();
2259
+ final double scaleZ = SelectionSizeZ();
2260
+
2261
+ final cGroup mazeGroup = new cGroup("Maze");
2262
+
2263
+ final int dim = 15;
2264
+
2265
+ Maze maze = new Maze(dim, dim);
2266
+
2267
+ maze.display(); // console
2268
+
2269
+ maze.Display(new Maze.Parse()
2270
+ {
2271
+ public void Tile(int i, int j, boolean north, boolean east, boolean south, boolean west)
2272
+ {
2273
+ if ((i == 0 || i == dim-1) && j == dim/2)
2274
+ {
2275
+ return;
2276
+ }
2277
+
2278
+ int v = 0;
2279
+ if (north)
2280
+ {
2281
+ cGroup n = new cGroup("" + i + "," + j);
2282
+ n.Translate(-j * scaleX, 0, i * scaleZ);
2283
+ n.add(group.selection.get(0));
2284
+ mazeGroup.add(n);
2285
+ }
2286
+ if (east)
2287
+ {
2288
+ cGroup n = new cGroup("" + i + "," + j);
2289
+ n.Translate(-j * scaleX, 0, i * scaleZ);
2290
+ n.add(group.selection.get(1));
2291
+ mazeGroup.add(n);
2292
+ }
2293
+ if (south)
2294
+ {
2295
+ cGroup n = new cGroup("" + i + "," + j);
2296
+ n.Translate(-j * scaleX, 0, i * scaleZ);
2297
+ n.add(group.selection.get(2));
2298
+ mazeGroup.add(n);
2299
+ }
2300
+ if (west)
2301
+ {
2302
+ cGroup n = new cGroup("" + i + "," + j);
2303
+ n.Translate(-j * scaleX, 0, i * scaleZ);
2304
+ n.add(group.selection.get(3));
2305
+ mazeGroup.add(n);
2306
+ }
2307
+ }
2308
+ }
2309
+ );
2310
+
2311
+ makeSomething(mazeGroup);
2312
+ }
2313
+ }
2314
+
2315
+ private double SelectionSize()
2316
+ {
2317
+ cVector bbmin = new cVector();
2318
+ cVector bbmax = new cVector();
2319
+
2320
+ group.selection.getBounds(bbmin, bbmax, true);
2321
+
2322
+ double dx = bbmax.x - bbmin.x;
2323
+ //double dy = bbmax.y - bbmin.y;
2324
+ double dz = bbmax.z - bbmin.z;
2325
+
2326
+ return Math.sqrt(dx*dx /*+ dy*dy*/ + dz*dz);
2327
+ }
2328
+
2329
+ private double SelectionSizeX()
2330
+ {
2331
+ cVector bbmin = new cVector();
2332
+ cVector bbmax = new cVector();
2333
+
2334
+ group.selection.getBounds(bbmin, bbmax, true);
2335
+
2336
+ return bbmax.x - bbmin.x;
2337
+ }
2338
+
2339
+ private double SelectionSizeY()
2340
+ {
2341
+ cVector bbmin = new cVector();
2342
+ cVector bbmax = new cVector();
2343
+
2344
+ group.selection.getBounds(bbmin, bbmax, true);
2345
+
2346
+ return bbmax.y - bbmin.y;
2347
+ }
2348
+
2349
+ private double SelectionSizeZ()
2350
+ {
2351
+ cVector bbmin = new cVector();
2352
+ cVector bbmax = new cVector();
2353
+
2354
+ group.selection.getBounds(bbmin, bbmax, true);
2355
+
2356
+ return bbmax.z - bbmin.z;
22502357 }
22512358
22522359 /**
....@@ -3590,6 +3697,10 @@
35903697 {
35913698 ReverseNormals();
35923699 } else
3700
+ if (source == mazeItem)
3701
+ {
3702
+ GenerateMaze();
3703
+ } else
35933704 if (source == parseverticesItem)
35943705 {
35953706 ParseVertices();
....@@ -4874,29 +4985,13 @@
48744985 if (group.selection.size() == 0)
48754986 return;
48764987
4877
- cVector bbmin = new cVector();
4878
- cVector bbmax = new cVector();
4879
-
4880
- group.selection.get(0).getBounds(bbmin, bbmax, true);
4881
-
4882
- double dx = bbmax.x - bbmin.x;
4883
- double dy = bbmax.y - bbmin.y;
4884
- double dz = bbmax.z - bbmin.z;
4885
-
4886
- double scale = Math.sqrt(dx*dx + dy*dy + dz*dz);
4988
+ double scale = SelectionSize();
48874989
48884990 for (int i=0; i<group.selection.size(); i++)
48894991 {
48904992 Object3D obj = group.selection.get(i);
48914993
4892
- if (obj.toParent == null)
4893
- {
4894
- obj.toParent = LA.newMatrix();
4895
- obj.fromParent = LA.newMatrix();
4896
- }
4897
-
4898
- LA.matTranslate(obj.toParent, i * scale, 0, 0);
4899
- LA.matTranslateInv(obj.fromParent, -i * scale, 0, 0);
4994
+ obj.Translate(i * scale, 0, 0);
49004995 }
49014996
49024997 Globals.lighttouched = true;
....@@ -6429,8 +6524,9 @@
64296524 private MenuItem unstripifyItem;
64306525 private MenuItem trimItem;
64316526 private MenuItem untrimItem;
6432
-
64336527 private MenuItem clearColorsItem;
6528
+
6529
+ private MenuItem mazeItem;
64346530 private MenuItem parseverticesItem;
64356531 private MenuItem alignItem;
64366532 private MenuItem mirrorItem;