.. | .. |
---|
2052 | 2052 | } |
---|
2053 | 2053 | |
---|
2054 | 2054 | menu.add("-"); |
---|
| 2055 | + mazeItem = menu.add(new MenuItem("Maze")); |
---|
| 2056 | + mazeItem.addActionListener(this); |
---|
2055 | 2057 | parseverticesItem = menu.add(new MenuItem("Multiplicity")); |
---|
2056 | 2058 | parseverticesItem.addActionListener(this); |
---|
2057 | 2059 | textureFieldItem = menu.add(new MenuItem("Texture Field")); |
---|
.. | .. |
---|
2247 | 2249 | elem.openEditWindow(this, newWindow); //, false); |
---|
2248 | 2250 | System.out.println("edit : " + elem); |
---|
2249 | 2251 | 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; |
---|
2250 | 2357 | } |
---|
2251 | 2358 | |
---|
2252 | 2359 | /** |
---|
.. | .. |
---|
3590 | 3697 | { |
---|
3591 | 3698 | ReverseNormals(); |
---|
3592 | 3699 | } else |
---|
| 3700 | + if (source == mazeItem) |
---|
| 3701 | + { |
---|
| 3702 | + GenerateMaze(); |
---|
| 3703 | + } else |
---|
3593 | 3704 | if (source == parseverticesItem) |
---|
3594 | 3705 | { |
---|
3595 | 3706 | ParseVertices(); |
---|
.. | .. |
---|
4874 | 4985 | if (group.selection.size() == 0) |
---|
4875 | 4986 | return; |
---|
4876 | 4987 | |
---|
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(); |
---|
4887 | 4989 | |
---|
4888 | 4990 | for (int i=0; i<group.selection.size(); i++) |
---|
4889 | 4991 | { |
---|
4890 | 4992 | Object3D obj = group.selection.get(i); |
---|
4891 | 4993 | |
---|
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); |
---|
4900 | 4995 | } |
---|
4901 | 4996 | |
---|
4902 | 4997 | Globals.lighttouched = true; |
---|
.. | .. |
---|
6429 | 6524 | private MenuItem unstripifyItem; |
---|
6430 | 6525 | private MenuItem trimItem; |
---|
6431 | 6526 | private MenuItem untrimItem; |
---|
6432 | | - |
---|
6433 | 6527 | private MenuItem clearColorsItem; |
---|
| 6528 | + |
---|
| 6529 | + private MenuItem mazeItem; |
---|
6434 | 6530 | private MenuItem parseverticesItem; |
---|
6435 | 6531 | private MenuItem alignItem; |
---|
6436 | 6532 | private MenuItem mirrorItem; |
---|