You can subscribe to this list here.
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(7) |
Jul
(26) |
Aug
(85) |
Sep
(141) |
Oct
(85) |
Nov
(60) |
Dec
(29) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
(38) |
Feb
(78) |
Mar
(10) |
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <tre...@us...> - 2008-02-07 12:20:05
|
Revision: 722
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=722&view=rev
Author: trevorolio
Date: 2008-02-07 04:20:10 -0800 (Thu, 07 Feb 2008)
Log Message:
-----------
More attachment work:
a first pass at a body editor UI
a template for Joe with just a texture containing shirts and pants
fixed up the populate mojo to read an attachment property out of template.properties
Modified Paths:
--------------
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/brow.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/butt.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheek3.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheekOut.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chest.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chinThick.ogmorph
Removed Paths:
-------------
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/fat.morph
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/brow.ogmorph
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/brow.ogmorph 2008-02-07 12:19:56 UTC (rev 721)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/brow.ogmorph 2008-02-07 12:20:10 UTC (rev 722)
@@ -1,6 +1,6 @@
# MorphDeltaMap
name: brow
-parent:
+parent: fat
1269 0.000353,-0.000444,0.001144 -0.000021,-0.000349,0.001276
1321 0.002633,-0.003791,0.004474 0.002541,-0.004746,0.005373 0.005863,0.002154,0.007560 0.002584,0.001964,0.008025
1327 -0.001588,0.002413,0.007872 0.002138,0.003638,0.004206 -0.000081,0.003460,0.004519 0.001414,0.000859,0.000921 0.004683,0.002147,0.001203
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/butt.ogmorph
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/butt.ogmorph 2008-02-07 12:19:56 UTC (rev 721)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/butt.ogmorph 2008-02-07 12:20:10 UTC (rev 722)
@@ -1,6 +1,6 @@
# MorphDeltaMap
name: butt
-parent:
+parent: fat
615 0.010044,0.002371,0.002102
652 0.019570,0.000706,0.002320
659 -0.000000,-0.002001,0.000897
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheek3.ogmorph
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheek3.ogmorph 2008-02-07 12:19:56 UTC (rev 721)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheek3.ogmorph 2008-02-07 12:20:10 UTC (rev 722)
@@ -1,6 +1,6 @@
# MorphDeltaMap
name: cheek3
-parent:
+parent: fat
1314 0.005677,-0.001169,0.001506 0.000771,-0.000764,0.002669 0.001006,-0.000607,0.001707 0.001440,0.000115,0.002162 0.001113,0.000360,0.004320 0.002647,-0.000088,0.000690
1363 0.002411,0.000104,0.001582 0.003964,-0.001424,0.002634
1488 -0.005596,-0.001202,0.001462
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheekOut.ogmorph
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheekOut.ogmorph 2008-02-07 12:19:56 UTC (rev 721)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheekOut.ogmorph 2008-02-07 12:20:10 UTC (rev 722)
@@ -1,6 +1,6 @@
# MorphDeltaMap
name: cheekOut
-parent:
+parent: fat
1301 -0.000267,-0.001377,-0.000594
1307 0.000155,0.000268,-0.001847
1314 0.001009,0.000378,-0.010385
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chest.ogmorph
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chest.ogmorph 2008-02-07 12:19:56 UTC (rev 721)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chest.ogmorph 2008-02-07 12:20:10 UTC (rev 722)
@@ -1,6 +1,6 @@
# MorphDeltaMap
name: chest
-parent:
+parent: fat
463 0.005405,-0.003852,-0.006757 0.000535,-0.000181,-0.001978
469 0.009583,-0.001376,0.000584
480 0.000017,-0.005626,-0.019694 0.003326,-0.006232,-0.019444
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chinThick.ogmorph
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chinThick.ogmorph 2008-02-07 12:19:56 UTC (rev 721)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chinThick.ogmorph 2008-02-07 12:20:10 UTC (rev 722)
@@ -1,6 +1,6 @@
# MorphDeltaMap
name: chin
-parent:
+parent: fat
1296 0.000538,-0.000308,0.001786 0.001493,0.000237,0.002013
1300 0.003115,-0.000357,0.002173 0.003156,-0.000304,0.002616
1303 0.002578,0.000439,0.003116 0.009022,-0.000763,0.003919 0.006926,-0.000637,0.001376 0.004330,0.000126,0.000663 0.006259,0.000132,0.002489
Deleted: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/fat.morph
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/fat.morph 2008-02-07 12:19:56 UTC (rev 721)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/fat.morph 2008-02-07 12:20:10 UTC (rev 722)
@@ -1,65 +0,0 @@
-# MorphDeltaMap
-name: fat
-parent:
-470 0.001389,-0.000834,0.000306
-473 0.050762,-0.010745,-0.001618 0.002163,-0.002683,-0.054441 0.014630,-0.001839,-0.052733 0.068779,-0.008121,-0.003150 0.000078,0.010674,-0.044558 0.012213,0.014695,-0.052760 0.032987,-0.015669,-0.002378
-482 0.004179,0.000434,-0.019068
-486 0.033043,-0.000165,-0.029876 0.026409,0.006184,-0.044981 0.025801,-0.001395,-0.027615
-501 0.007928,0.000384,0.005607
-504 0.002275,-0.008769,0.063638 0.066934,-0.019120,0.037455 0.000327,0.008801,0.066665 0.067193,-0.001169,0.050459 0.000000,0.008757,0.065695 0.000443,-0.008614,0.036264 0.000000,-0.008751,0.035002 0.022549,0.006445,0.036163
-513 0.000000,0.002187,0.007657 0.000601,0.007880,0.019976 0.002211,-0.008751,0.063448 0.000000,0.002187,0.007657 0.000000,0.007657,0.018595
-529 0.001447,-0.003476,0.003320 0.002752,-0.008992,0.000579 -0.000377,-0.024457,0.001341 0.003412,-0.016643,0.015945 0.000628,0.008750,0.008403 -0.000066,0.002717,0.002638 0.001626,-0.028753,0.005010 0.002296,-0.017423,0.022295
-543 0.001046,0.008713,0.006498 0.003576,-0.025773,0.004531 0.003246,-0.007996,0.014542
-549 0.001632,0.014495,0.011195 0.000573,-0.019701,0.005206 0.002024,-0.009369,0.015912
-553 -0.000698,-0.003985,-0.002119
-555 0.000533,0.011308,0.009761 -0.000584,-0.013120,0.003069 -0.000258,-0.004880,0.007031
-559 -0.000053,-0.001259,-0.000956
-561 -0.000008,0.007051,0.006220 0.001355,-0.008317,0.000737 0.001488,-0.010071,0.012044
-565 0.000555,-0.001904,-0.001539
-567 0.000757,0.004822,0.004458
-572 0.000613,-0.001613,0.006005 0.000216,0.001079,0.001052 0.000698,-0.004786,0.003172
-587 0.000190,-0.001354,-0.000031
-596 0.002019,-0.000772,0.023803 -0.000474,0.000541,0.026588 0.003429,0.002555,0.030484 0.005360,0.005253,0.032683 0.004124,0.006147,0.040678 0.002222,0.002922,0.034365 0.001165,0.004228,0.017269
-613 0.005968,0.002182,0.009294 -0.003700,-0.003542,0.001997 0.024311,0.010233,0.003176 -0.024287,0.003458,0.004663 -0.034031,0.001523,0.033818 0.018066,0.009853,0.038083 0.008177,0.001288,0.026977 -0.021651,-0.002291,0.007567
-623 -0.009639,-0.002433,0.012437 0.008085,-0.001257,-0.000052 0.001842,-0.000083,-0.000007 0.010188,-0.006404,0.027796
-630 0.002482,0.000104,0.000007
-634 0.001344,0.000074,-0.000056
-636 -0.003877,-0.000160,0.000821 -0.006730,0.000907,0.010177 0.011618,0.001421,0.001282 0.004537,0.000575,0.011542 -0.012548,-0.002054,0.002345 -0.002694,-0.000076,0.000933 -0.001410,-0.000100,0.003087 -0.012192,-0.003590,0.019807 0.017028,-0.003639,0.002648 0.002954,0.000027,-0.000322 0.008835,-0.002914,0.019463
-648 -0.025432,-0.002791,0.040995 -0.029902,-0.004845,0.007002 0.033633,-0.003475,0.009411 0.012730,-0.002944,0.039770 0.043789,-0.000727,0.003559 0.025545,0.002063,0.001447 -0.014200,0.000358,0.014739 -0.008960,0.000432,0.002353 0.020495,-0.001064,0.000525 0.010268,-0.001568,0.037519
-659 -0.000005,-0.004257,0.001909
-661 0.002100,-0.013629,-0.013767
-663 0.008610,0.015771,-0.028735 0.007857,-0.003829,-0.011523 0.004460,0.000765,-0.009167 -0.002456,0.000401,-0.002203 -0.017381,-0.003291,-0.014815 0.029175,-0.010184,-0.050191 0.030516,-0.002645,-0.048407 -0.009610,-0.001865,-0.007626 0.018828,-0.000921,-0.033042 -0.008373,-0.000211,-0.007382 0.003650,0.000329,-0.009420 -0.003389,-0.000079,-0.003299 0.005810,0.002099,-0.012294 -0.001352,0.000146,-0.001998
-678 0.005187,-0.002741,-0.007745 0.000884,-0.000373,-0.001616
-681 0.009124,0.005241,-0.007639 -0.001684,-0.000449,-0.001542 0.015776,-0.002451,-0.022357 -0.009072,-0.000025,-0.008483 0.015329,0.000435,-0.029362 0.021457,-0.004117,-0.020231 0.007473,-0.006379,-0.043224
-689 -0.000467,-0.007573,-0.009905 0.000161,0.016113,-0.029756 0.000104,-0.010931,-0.056938
-699 0.000186,0.001113,0.000948 0.002059,-0.012269,0.008172 0.000504,-0.002886,0.000119
-703 0.003206,-0.004598,0.019192 0.000000,-0.031720,0.041565 0.005610,-0.016754,0.001417 0.019863,-0.003204,-0.000293 0.000000,-0.031720,0.041565 0.011277,0.009206,-0.019670 0.012959,0.005038,-0.009246 0.002314,0.007616,-0.021781
-1035 -0.001117,-0.000018,0.000043 -0.001122,-0.000659,0.000243
-1039 -0.048605,-0.019032,-0.000785 -0.009990,-0.001620,-0.052930 -0.082143,-0.009569,-0.002306 -0.012383,0.014786,-0.054498 -0.037962,-0.013682,-0.001720
-1045 -0.003517,0.000490,-0.016430
-1047 -0.027500,-0.000687,-0.029220 -0.026995,0.005399,-0.046551 -0.026244,-0.000906,-0.028299
-1058 -0.008923,0.000399,0.006304
-1061 0.002167,-0.008763,0.063571 -0.055774,-0.016365,0.035559 -0.000299,0.008790,0.066550 -0.063961,0.004489,0.050452 -0.000426,-0.008622,0.036207 -0.021919,0.006229,0.035551
-1068 0.000000,0.002187,0.007657 -0.000578,0.007875,0.019933
-1080 -0.001076,-0.002567,0.002433 -0.002399,-0.007775,0.000518 0.000445,-0.023962,0.001271 -0.003223,-0.016333,0.015486 -0.000726,0.010071,0.009468 0.000084,0.002923,0.002862 -0.001482,-0.030247,0.004339 -0.002214,-0.018185,0.022410
-1094 -0.000910,0.009974,0.007645 -0.004212,-0.027877,0.005035 -0.002823,-0.007288,0.013251
-1100 -0.002597,0.016261,0.012025 -0.001001,-0.020778,0.005475 -0.002059,-0.008850,0.014886
-1104 0.000433,-0.003070,-0.001711
-1106 0.000092,0.013312,0.010277 0.000573,-0.013843,0.003223 0.000143,-0.003790,0.005510
-1112 -0.000044,0.008237,0.007277 -0.000935,-0.006951,0.000629 -0.001292,-0.009708,0.011610
-1116 -0.000275,-0.001092,-0.000881
-1118 -0.000764,0.004645,0.004253
-1123 -0.000250,-0.000489,0.001779
-1125 -0.000210,-0.001209,0.000793
-1147 -0.001973,-0.000725,0.022707 0.000295,0.000388,0.024961 -0.003612,0.002648,0.029581 -0.005107,0.004976,0.032216 -0.003985,0.005891,0.039758 -0.002117,0.002564,0.033210 -0.001038,0.003612,0.015073
-1161 -0.005577,0.002049,0.008902 0.002732,-0.002673,0.001490 -0.024913,0.011864,0.007670 0.023082,0.003226,0.004322 0.034263,0.001692,0.034415 -0.015587,0.009166,0.035818 -0.007091,0.001586,0.024655 0.021045,-0.002135,0.007663 0.001064,-0.000142,0.000396
-1171 0.009160,-0.002368,0.011891 -0.010637,-0.002181,0.000268 -0.001681,-0.000136,0.000050 -0.009742,-0.007027,0.025657
-1178 -0.002873,0.000255,0.000006
-1182 -0.001198,0.000123,-0.000050
-1184 0.003362,-0.000143,0.000663 0.007728,0.001198,0.011259 -0.009970,0.000903,0.001084 -0.004787,0.000467,0.011632 0.009901,-0.002027,0.000728 0.002548,-0.000280,0.000227 0.002089,-0.000482,0.002937 0.012887,-0.003839,0.015110 -0.018544,-0.003992,0.003044 -0.002838,0.000178,-0.000162 -0.008969,-0.002943,0.021295 -0.000666,-0.000009,0.001271 0.026995,-0.001779,0.042337 0.022040,-0.002855,0.003652 -0.032090,-0.003855,0.009560 -0.012889,-0.003510,0.040502 -0.035084,0.001837,0.005362 -0.030352,0.002611,0.001877 0.015614,0.000001,0.016653 0.008424,0.000361,0.002183 -0.025221,-0.001470,0.000558 -0.010110,-0.001537,0.034405 -0.001020,-0.007502,-0.007510
-1208 -0.009106,0.017075,-0.030549 -0.005615,-0.002802,-0.008573 -0.003960,0.000886,-0.008357 0.004651,0.000995,-0.004151 0.017772,-0.002964,-0.014936 -0.029316,-0.012167,-0.050122 -0.023649,-0.005333,-0.050390 0.009464,-0.001973,-0.006843 -0.018642,0.001179,-0.036129 0.010290,-0.000989,-0.010518 -0.003946,0.000727,-0.009784 0.004740,-0.000165,-0.005279 -0.006362,0.002175,-0.013173 0.001341,0.000113,-0.001844
-1223 -0.005749,-0.003366,-0.008544 -0.000740,-0.000324,-0.001606
-1226 -0.010459,0.005911,-0.008207 0.002314,-0.000583,-0.002385 -0.016551,-0.002818,-0.023553 0.010527,0.000016,-0.009791 -0.015381,0.000290,-0.030439 -0.022090,-0.004257,-0.020783 -0.007715,-0.007830,-0.045447
-1238 -0.000390,0.001509,0.001299 -0.001563,-0.007702,0.004942 -0.000407,-0.002050,0.000073
-1242 -0.002918,-0.003091,0.012281 0.000000,-0.031720,0.041565 -0.005104,-0.016425,0.000803 -0.008509,-0.001675,-0.000008 -0.006870,0.009798,-0.020016 -0.009513,0.005728,-0.009762
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ian...@us...> - 2008-02-07 02:31:46
|
Revision: 720
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=720&view=rev
Author: iansmith
Date: 2008-02-06 18:28:03 -0800 (Wed, 06 Feb 2008)
Log Message:
-----------
Added a migration to fix the SimRecords in the database to have the fields we want and dropped the old fields we were not using.
This checkin does not change functionality, it just does the same things as the old version with this new datamodel. Tests and various places were updated to reflect the new data model and semantics, including "retirement" of sims.
For hibernate reasons, I was forced to add some bogus code in SimRecords. This only increases the size of the SimRecord class' code by a few bytes, so it seemed better than fighting hibernate.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SimDocument.java
maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SimMessageHandler.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-3.xml
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SimDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SimDocument.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SimDocument.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -27,26 +27,26 @@
public static final String SIM_URI = "simuri";
- public static final String DISPLAY_NAME = "displayname";
+ public static final String REACHABLE = "reachable";
- public static final String ACTIVE = "active";
+ public static final String RETIRED = "retired";
XMLElement data = null;
- public SimDocument(long simID, URI simURI, String displayName, boolean active) {
- if (active && simURI == null) {
- throw new IllegalArgumentException("Active sims need a URI: " + simURI);
+ public SimDocument(long simID, URI simURI, boolean reachable, boolean retired) {
+ if (reachable && simURI == null) {
+ throw new IllegalArgumentException("Reachable sims need a URI: " + simURI);
}
- if (displayName == null) {
- throw new IllegalArgumentException("You must name the sim");
+ if (!retired && simURI == null) {
+ throw new IllegalArgumentException("Non-retired sims need a URI: " + simURI);
}
data = new XMLElement(NAME);
if (simURI != null) {
data.setAttribute(SIM_URI, simURI.toString());
}
data.setAttribute(SIM_ID, simID);
- data.setAttribute(DISPLAY_NAME, displayName);
- data.setAttribute(ACTIVE, active);
+ data.setAttribute(REACHABLE, reachable);
+ data.setAttribute(RETIRED, retired);
}
public SimDocument(XMLElement data) {
@@ -54,11 +54,14 @@
throw new IllegalArgumentException("SimDocument data is null");
}
if (!NAME.equals(data.getName())) {
- throw new IllegalArgumentException("SimDocument data is not named Auth: " + data);
+ throw new IllegalArgumentException("SimDocument data is not named Sim: " + data);
}
- if (data.getBooleanAttribute(ACTIVE, false) && data.getStringAttribute(SIM_URI) == null) {
- throw new IllegalArgumentException("No sim URI in active sim document");
+ if (data.getBooleanAttribute(REACHABLE, false) && data.getStringAttribute(SIM_URI) == null) {
+ throw new IllegalArgumentException("No sim URI in reachable sim document");
}
+ if (data.getBooleanAttribute(RETIRED, false) && data.getStringAttribute(SIM_URI) == null) {
+ throw new IllegalArgumentException("No sim URI in a non-retired sim document");
+ }
this.data = data;
}
@@ -74,12 +77,12 @@
return data.getLongAttribute(SIM_ID);
}
- public boolean isActive() {
- return data.getBooleanAttribute(ACTIVE, false);
+ public boolean isReachable() {
+ return data.getBooleanAttribute(REACHABLE, false);
}
- public String getDisplayName() {
- return data.getStringAttribute(DISPLAY_NAME);
+ public boolean isRetired() {
+ return data.getBooleanAttribute(RETIRED, false);
}
public URI getSimURI() {
Modified: maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java
===================================================================
--- maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -122,23 +122,29 @@
}
public void testSimDocuments() {
- SimDocument simDoc1 = new SimDocument(1, simURI1, displayName1, true);
+ SimDocument simDoc1 = new SimDocument(1, simURI1, true, false);
assertEquals(1, simDoc1.getSimID());
- assertEquals(displayName1, simDoc1.getDisplayName());
assertEquals(simURI1, simDoc1.getSimURI());
- assertEquals(true, simDoc1.isActive());
+ assertEquals(true, simDoc1.isReachable());
+ assertEquals(false, simDoc1.isRetired());
SimDocument simDoc2 = new SimDocument(XMLElement.parseElementFromString(simDoc1.toElement().toString()));
- assertEquals(displayName1, simDoc2.getDisplayName());
assertEquals(simURI1, simDoc2.getSimURI());
- assertEquals(true, simDoc2.isActive());
+ assertEquals(true, simDoc2.isReachable());
+ assertEquals(false, simDoc2.isRetired());
try {
- new SimDocument(1, null, displayName1, true);
- fail("Shouldn't allow null URIs when active");
+ new SimDocument(1, null, true, true);
+ fail("Shouldn't allow null URIs when reachable");
} catch (IllegalArgumentException e) {
//this should happen
}
+ try {
+ new SimDocument(1, null, false, false);
+ fail("Shouldn't allow null URIs when not retired");
+ } catch (IllegalArgumentException e) {
+ //this should happen
+ }
String displayName = "Rolling Donuts";
ThingDocument doc1 = new ThingDocument(1, displayName, 2, "susan", "susan", 1, new Transform3D(), null);
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/pom.xml 2008-02-07 02:28:03 UTC (rev 720)
@@ -207,7 +207,6 @@
<!-- these are for the populate -->
<configuration>
-
<serviceURI>${ogoglio.baseURL}</serviceURI>
<username>${ogoglio.bootstrapUser}</username>
<password>${ogoglio.bootstrapUserPW}</password>
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -17,10 +17,10 @@
public static final OgoglioServerMigration SINGLETON = new OgoglioServerMigration();
// THIS IS THE CRITICAL VERSION NUMBER
- private static final int DB_VERSION_NUMBER = 2;
+ private static final int DB_VERSION_NUMBER = 3;
// this is the set of semantic migrations, in order
- private static final Migration[] migration = { new AccountsForTesting(), new NoopMigration() };
+ private static final Migration[] migration = { new AccountsForTesting(), new NoopMigration(), new NoopMigration() };
public Migration[] getMigrationList() {
return migration;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -21,8 +21,6 @@
public class ServiceInitializationPersistTasks {
- public static final String LOCAL_SIM_DISPLAY_NAME = "Localhost Sim";
-
public static final String DEFAULT_LAND_DISPLAY_NAME = "Default Land";
public static final String DEFAULT_DOOR_DISPLAY_NAME = "Default Door";
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -28,8 +28,10 @@
public static final String SIM_BY_ID = "com.ogoglio.persist.simBySimID";
- public static final String SIMS_BY_ACTIVE = "com.ogoglio.persist.simsByActive";
+ public static final String SIMS_BY_REACHABLE_AND_RETIRED= "com.ogoglio.persist.simsByReachableAndRetired";
+ public static final String SIMS_BY_REACHABLE= "com.ogoglio.persist.simsByReachable";
+
public static final String SIMS = "com.ogoglio.persist.sims";
public static SimRecord[] findSims(SessionFactory sessionFactory) throws PersistException {
@@ -55,10 +57,10 @@
return (SimRecord) task.execute();
}
- public static SimRecord createSim(final String displayName, final URI simURI, final int eventPort, final boolean active, SessionFactory sessionFactory) throws PersistException {
+ public static SimRecord createSim(final URI simURI, final boolean reachable, final boolean retired, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
- SimRecord record = new SimRecord(displayName, simURI, eventPort, active);
+ SimRecord record = new SimRecord(simURI, reachable, retired);
hibernateSession.save(record);
return record;
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimRecord.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimRecord.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -19,18 +19,14 @@
public class SimRecord {
- public static final int DEFAULT_EVENT_PORT = 8932;
-
private long simID = -1;
- private String displayName = null;
-
private String simURIString = null;
- private int eventPort = -1;
+ private boolean reachable = false;
+
+ private boolean retired = false;
- private boolean active = false;
-
/***
* The SimRecord stores the connection information for a simulation server which can simultaneously simulate multiple spaces
*/
@@ -39,29 +35,28 @@
}
- public SimRecord(String displayName, URI simURI, int eventPort, boolean active) {
- this.displayName = displayName;
+ public SimRecord(URI simURI, boolean reachable, boolean retired) {
if (simURI != null) {
this.simURIString = simURI.toString();
}
- this.eventPort = eventPort;
- this.active = active;
+ this.reachable=reachable;
+ this.retired=retired;
}
- public boolean isActive() {
- return active;
+ public boolean isReachable() {
+ return reachable;
}
- public void setActive(boolean active) {
- this.active = active;
+ public void setReachable(boolean reachable) {
+ this.reachable= reachable;
}
- public String getDisplayName() {
- return displayName;
+ public boolean isRetired() {
+ return retired;
}
- public void setDisplayName(String displayName) {
- this.displayName = displayName;
+ public void setRetired(boolean retired) {
+ this.retired= retired;
}
public long getSimID() {
@@ -106,12 +101,26 @@
public int hashCode() {
return ("SimRecord-YO" + getSimID()).hashCode();
}
-
- public int getEventPort() {
- return eventPort;
+
+ /*
+ * This is pretty darn evil. XXX EVIL XXX
+ */
+ private String getDisplayName() { //FIELD NO LONGER EXISTS
+ return null;
}
-
- public void setEventPort(int eventPort) {
- this.eventPort = eventPort;
+
+ private void setDisplayName(String IGNORED) { //FIELD NO LONGER EXISTS
}
+ private boolean getActive() { //FIELD NO LONGER EXISTS
+ return false;
+ }
+
+ private void setActive(boolean IGNORED) { //FIELD NO LONGER EXISTS
+ }
+ private int getEventPort() { //FIELD NO LONGER EXISTS
+ return 0;
+ }
+
+ private void setEventPort(int IGNORED) { //FIELD NO LONGER EXISTS
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -169,7 +169,7 @@
task.execute();
}
- private static SimRecord findSimIfActive(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
+ private static SimRecord findSimFromSpaceIfReachable(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
SimRecord simRecord = null;
@@ -177,10 +177,9 @@
Query simQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIM_BY_ID);
simQuery.setLong("simID", spaceRecord.getSimID());
simRecord = (SimRecord) simQuery.uniqueResult();
- if (simRecord == null || simRecord.isActive() == false) {
+ if (simRecord == null || simRecord.isReachable()== false) {
spaceRecord.setSimID(-1);
updateRecordAndUpdateModifiedTime(spaceRecord, hibernateSession, true);
- simRecord = null;
return null;
} else {
return simRecord;
@@ -194,68 +193,68 @@
return (SimRecord) task.execute();
}
- private static void markInactive(SimRecord record, SessionFactory sessionFactory) throws PersistException {
- record.setActive(false);
+ private static void markNotReachable(SimRecord record, SessionFactory sessionFactory) throws PersistException {
+ record.setReachable(false);
SimPersistTasks.update(record, sessionFactory);
}
public static SimRecord findOrAssignSim(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
return findOrAssignSim(spaceRecord, sessionFactory, true);
}
- public static void verifyActiveSims(SimRecord[] purportedActive, SessionFactory sessionFactory) throws PersistException {
+ public static void verifyReachableSims(SimRecord[] puportedReachable, SessionFactory sessionFactory) throws PersistException {
//let's see if they are ok
- for (int i=0; i<purportedActive.length;++i) {
+ for (int i=0; i<puportedReachable.length;++i) {
try {
- URI simURI=purportedActive[i].getSimURI();
+ URI simURI=puportedReachable[i].getSimURI();
HttpURLConnection connection = (HttpURLConnection) simURI.toURL().openConnection();
connection.setRequestMethod("GET");
connection.setAllowUserInteraction(false);
+ connection.setReadTimeout(3000);
if (connection.getResponseCode()!=200) {
Log.warn("Can't get a connection to "+simURI+"! Marking inactive!");
- markInactive(purportedActive[i], sessionFactory);
+ markNotReachable(puportedReachable[i], sessionFactory);
} else {
Log.info("Verified connection to "+simURI);
}
} catch (MalformedURLException e) {
- Log.warn("Can't understand the URI "+purportedActive[i].getSimURI()+"! Marking inactive!");
- markInactive(purportedActive[i], sessionFactory);
+ Log.warn("Can't understand the URI "+puportedReachable[i].getSimURI()+"! Marking inactive!");
+ markNotReachable(puportedReachable[i], sessionFactory);
} catch (ProtocolException e) {
- Log.warn("Can't understand the URI protocol "+purportedActive[i].getSimURI()+"! Marking inactive!");
- markInactive(purportedActive[i], sessionFactory);
+ Log.warn("Can't understand the URI protocol "+puportedReachable[i].getSimURI()+"! Marking inactive!");
+ markNotReachable(puportedReachable[i], sessionFactory);
} catch (IOException e) {
- Log.warn("Can't connect to "+purportedActive[i].getSimURI()+"! Marking inactive! IOException:"+e.getMessage());
- markInactive(purportedActive[i], sessionFactory);
+ Log.warn("Can't connect to "+puportedReachable[i].getSimURI()+"! Marking inactive! IOException:"+e.getMessage());
+ markNotReachable(puportedReachable[i], sessionFactory);
}
}
}
public static SimRecord findOrAssignSim(final SpaceRecord spaceRecord, SessionFactory sessionFactory, boolean use_network) throws PersistException {
- SimRecord rec = findSimIfActive(spaceRecord, sessionFactory);
- SimRecord[] active;
+ SimRecord rec = findSimFromSpaceIfReachable(spaceRecord, sessionFactory);
if (rec!=null) {
//assume that if we have a sim ID already assigned we are ok
return rec;
}
- active=findAllActiveSims(spaceRecord, sessionFactory);
- if (active.length==0) {
- throw new PersistException("Unable to find any active sims!");
+ SimRecord[] assignable=findAllReachableAndNotRetiredSims(spaceRecord, sessionFactory);
+ if (assignable.length==0) {
+ throw new PersistException("Unable to find any sims that we can assign to!");
}
//has it been a while?
long now=System.currentTimeMillis();
if ((now-lastTestOfSimServers<TEST_SIM_INTERVAL_MS) || (!use_network)) {
- return pickSimRandomly(spaceRecord, sessionFactory, active);
+ return pickSimRandomly(spaceRecord, sessionFactory, assignable);
}
//update the time check
lastTestOfSimServers=now;
- verifyActiveSims(active,sessionFactory);
+ verifyReachableSims(findAllReachableSims(spaceRecord, sessionFactory),sessionFactory);
- active=findAllActiveSims(spaceRecord, sessionFactory);
- if (active.length==0) {
- throw new PersistException("Unable to find any active sims (after doing a check)!");
+ assignable=findAllReachableAndNotRetiredSims(spaceRecord, sessionFactory);
+ if (assignable.length==0) {
+ throw new PersistException("Unable to find any reachable sims (after doing a check)!");
}
- return pickSimRandomly(spaceRecord, sessionFactory, active);
+ return pickSimRandomly(spaceRecord, sessionFactory, assignable);
}
private static SimRecord pickSimRandomly(final SpaceRecord spaceRecord, SessionFactory sessionFactory, SimRecord[] active) throws PersistException {
@@ -267,17 +266,30 @@
return rec;
}
- private static SimRecord[] findAllActiveSims(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
+ private static SimRecord[] findAllReachableSims(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
- Query simsQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIMS_BY_ACTIVE);
- simsQuery.setBoolean("active", true);
+ Query simsQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIMS_BY_REACHABLE);
+ simsQuery.setBoolean("reachable", true);
return (SimRecord[]) simsQuery.list().toArray(new SimRecord[0]);
}
};
task.setSessionFactory(sessionFactory);
return (SimRecord[]) task.execute();
}
+
+ private static SimRecord[] findAllReachableAndNotRetiredSims(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
+ Query simsQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIMS_BY_REACHABLE_AND_RETIRED);
+ simsQuery.setBoolean("reachable", true);
+ simsQuery.setBoolean("retired", false);
+ return (SimRecord[]) simsQuery.list().toArray(new SimRecord[0]);
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (SimRecord[]) task.execute();
+ }
public static SpaceRecord createSpace(final String displayName, final String ownerUsername, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -94,7 +94,7 @@
ArgumentUtils.assertNotNull(sessionFactory);
this.sessionFactory = sessionFactory;
- messageHandler = new SimMessageHandler(simRecord.getEventPort(), this, descriptor);
+ messageHandler = new SimMessageHandler(this, descriptor);
snapshotTimer.schedule(new SnapshotTask(), 300000, SNAPSHOT_FREQUENCY);
reaperTimer.schedule(new ReaperTask(), 30000, VACANCY_TIME_TILL_SHUTDOWN);
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SimMessageHandler.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SimMessageHandler.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SimMessageHandler.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -32,7 +32,7 @@
private Sim sim = null;
- public SimMessageHandler(int port, Sim sim, WebAPIDescriptor descriptor) throws IOException {
+ public SimMessageHandler(Sim sim, WebAPIDescriptor descriptor) throws IOException {
channelServer = new NetworkChannelServer(this, descriptor.getCometSimURI(), false, this);
this.sim = sim;
//Log.info("Started SimMessageHandler on port " + channelServer.getLocator().getPort());
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -38,7 +38,6 @@
import com.ogoglio.client.WebAPIDescriptor;
import com.ogoglio.media.MediaService;
import com.ogoglio.persist.AccountRecord;
-import com.ogoglio.persist.PossessionPersistTasks;
import com.ogoglio.persist.ServiceInitializationPersistTasks;
import com.ogoglio.persist.SimPersistTasks;
import com.ogoglio.persist.SimRecord;
@@ -58,7 +57,6 @@
import com.ogoglio.xml.PageDocument;
import com.ogoglio.xml.SettingDocument;
import com.ogoglio.xml.SpaceDocument;
-import com.ogoglio.xml.SpaceMemberDocument;
import com.ogoglio.xml.SpaceSimulatorDocument;
import com.ogoglio.xml.TemplateDocument;
import com.ogoglio.xml.ThingDocument;
@@ -104,12 +102,13 @@
SimRecord simRecord = SimPersistTasks.findSimsBySimURI(simURI, getSessionFactory());
if (simRecord != null) {
//error
- Log.warn("Marking sim server active @ " + simRecord.getSimURI() + " [it was already in the database]! Ignored.");
- simRecord.setActive(true);
+ Log.warn("Marking sim server as ready @ " + simRecord.getSimURI() + " [it was already in the database]! Ignored.");
+ simRecord.setReachable(true);
+ simRecord.setRetired(false);
SimPersistTasks.update(simRecord, getSessionFactory());
} else {
Log.info("Starting up sim @ " + simURI);
- simRecord = SimPersistTasks.createSim(ServiceInitializationPersistTasks.LOCAL_SIM_DISPLAY_NAME, simURI, SimRecord.DEFAULT_EVENT_PORT, true, getSessionFactory());
+ simRecord = SimPersistTasks.createSim(simURI, true, false, getSessionFactory());
}
WebAPIDescriptor descriptor;
String serviceURI = (String) envCtx.lookup("ogoglio/baseURL");
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -611,7 +611,7 @@
for (int i = 0; i < simRecord.length; ++i) {
SimRecord sim = simRecord[i];
try {
- buffer.append("Sim Server:" + sim.getDisplayName() + " [" + sim.getSimID() + "] " + sim.getSimURI() + "\n");
+ buffer.append("Sim Server: [" + sim.getSimID() + "] " + sim.getSimURI() + "\n");
buffer.append("===============================================\n");
if (!isOnLocalhost(sim)) {
String hackedURI=dodgyConversionOfSimURI(sim.getSimURI().toString());
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -32,7 +32,7 @@
}
public static SimDocument documentFromRecord(SimRecord record) {
- return new SimDocument(record.getSimID(), record.getSimURI(), record.getDisplayName(), record.isActive());
+ return new SimDocument(record.getSimID(), record.getSimURI(), record.isReachable(), record.isRetired());
}
public static SpaceDocument documentFromRecord(SpaceRecord requestedRecord) {
Added: maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-3.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-3.xml (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-3.xml 2008-02-07 02:28:03 UTC (rev 720)
@@ -0,0 +1,337 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<!--
+ Copyright 2007,2008 Transmutable (http://transmutable.com/)
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+-->
+
+<hibernate-mapping>
+
+ <class name="com.ogoglio.persist.ServiceStateRecord"
+ table="ServiceStateRecords">
+ <id name="serviceStateID">
+ <generator class="identity" />
+ </id>
+ <property name="registrationState" not-null="true" />
+ </class>
+
+ <class name="com.ogoglio.persist.PendingEmailValidationRecord"
+ table="PendingEmailValidationRecords">
+ <id name="email">
+ <generator class="assigned" />
+ </id>
+ <property name="username" not-null="true" />
+ <property name="secret" not-null="true" />
+ <property name="creationDate" />
+ </class>
+
+ <class name="com.ogoglio.persist.PossessionRecord"
+ table="PossessionRecords">
+ <id name="possessionID">
+ <generator class="identity" />
+ </id>
+
+ <property name="ownerUsername" not-null="true" />
+ <property name="templateID" />
+ <property name="spaceID" />
+ <property name="thingID" />
+ </class>
+
+ <class name="com.ogoglio.persist.SpaceRecord"
+ table="SpaceRecords">
+ <id name="spaceID" access="field">
+ <generator class="identity" />
+ </id>
+
+ <property name="displayName" not-null="true" />
+ <property name="ownerUsername" not-null="true" update="false" />
+ <property name="published" />
+ <property name="maxGuests" />
+ <property name="displaySea" access="field" />
+ <property name="seaLevel" />
+ <property name="simID" />
+ <property name="lastModifiedTime" />
+ <property name="bgRed" />
+ <property name="bgGreen" />
+ <property name="bgBlue" />
+ </class>
+
+ <class name="com.ogoglio.persist.SpaceMemberRecord"
+ table="SpaceMemberRecords">
+ <id name="spaceMemberID">
+ <generator class="identity" />
+ </id>
+
+ <property name="spaceID" update="false" />
+ <property name="memberUsername" not-null="true" />
+ <property name="banned" />
+ <property name="role" />
+ </class>
+
+ <class name="com.ogoglio.persist.SimRecord" table="SimRecords">
+ <id name="simID">
+ <generator class="identity" />
+ </id>
+ <property name="simURIString" column="simURI" />
+ <property name="reachable" />
+ <property name="retired" />
+ </class>
+
+ <class name="com.ogoglio.persist.AccountRecord"
+ table="AccountRecords">
+ <id name="username">
+ <generator class="assigned" />
+ </id>
+ <property name="email" not-null="true" unique="true" />
+ <property name="emailValid" />
+ <property name="accountlevel" not-null="true" />
+ <property name="passwordHash" />
+ <property name="firstName" />
+ <property name="lastName" />
+ <property name="homepage" />
+ <property name="creationDate" update="false" />
+ <property name="cookie" />
+ <property name="frozenUntil" />
+ <property name="defaultBodyConfigurationID" />
+ <property name="voiceURI" />
+ <property name="textURI" />
+ </class>
+
+ <class name="com.ogoglio.persist.TemplateRecord"
+ table="TemplateRecords">
+ <id name="templateID">
+ <generator class="identity" />
+ </id>
+
+ <property name="ownerUsername" not-null="true" />
+ <property name="displayName" not-null="true" />
+ <property name="description" />
+ <property name="seat" />
+ <property name="attachment" />
+
+ <set name="supportFiles" table="TemplateTemplateSupportFiles"
+ cascade="all">
+ <key column="templateID" />
+ <many-to-many column="templateSupportFileID" unique="true"
+ class="com.ogoglio.persist.TemplateSupportFileRecord" />
+ </set>
+
+ <property name="seatX" />
+ <property name="seatY" />
+ <property name="seatZ" />
+ <property name="seatRX" />
+ <property name="seatRY" />
+ <property name="seatRZ" />
+ <property name="seatRW" />
+
+ </class>
+
+ <class name="com.ogoglio.appdev.migrate.DBVersionRecord"
+ table="DBVersion">
+ <id name="versionId">
+ <generator class="identity" />
+ </id>
+ <property name="version" not-null="true" />
+ </class>
+
+ <class name="com.ogoglio.persist.TemplateSupportFileRecord"
+ table="TemplateSupportFileRecords">
+ <id name="templateSupportFileID">
+ <generator class="identity" />
+ </id>
+ <property name="supportFile" />
+ <property name="script" not-null="true" />
+ <property name="levelOfDetail" not-null="true" />
+ <property name="lastChanged" not-null="true" />
+ </class>
+
+ <class name="com.ogoglio.persist.BodyDataRecord"
+ table="BodyDataRecords">
+ <id name="bodyDataID">
+ <generator class="identity" />
+ </id>
+ <property name="displayName" not-null="true" />
+ <property name="fileName" not-null="true" unique="true" />
+ </class>
+
+ <class name="com.ogoglio.persist.BodyConfigurationRecord"
+ table="BodyConfigurationRecords">
+ <id name="bodyConfigurationID">
+ <generator class="identity" />
+ </id>
+ <property name="ownerUsername" not-null="true" />
+ <property name="displayName" not-null="true" />
+ <property name="bodyDataID" />
+ <property name="baseTextureName" />
+ </class>
+
+ <class name="com.ogoglio.persist.BodySettingRecord"
+ table="BodySettingRecords">
+ <id name="bodySettingID">
+ <generator class="identity" />
+ </id>
+ <property name="settingName" not-null="true" />
+ <property name="setting" />
+ <property name="bodyConfigurationID" />
+ </class>
+
+ <class name="com.ogoglio.persist.AttachmentRecord"
+ table="AttachmentRecords">
+ <id name="attachmentID">
+ <generator class="identity" />
+ </id>
+ <property name="templateOwner" />
+ <property name="templateID" />
+ <property name="bodyConfigurationID" />
+ </class>
+
+ <query name="com.ogoglio.persist.bodyData">
+ <![CDATA[ from com.ogoglio.persist.BodyDataRecord order by bodyDataID asc ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodyDataByID">
+ <![CDATA[ from com.ogoglio.persist.BodyDataRecord as record where record.bodyDataID = :bodyDataID ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodyDataByFileName">
+ <![CDATA[ from com.ogoglio.persist.BodyDataRecord as record where record.fileName = :fileName ]]>
+ </query>
+ <query
+ name="com.ogoglio.persist.bodyConfigurationByUsernameAndBodyDataID">
+ <![CDATA[ from com.ogoglio.persist.BodyConfigurationRecord as record where record.ownerUsername = :username and record.bodyDataID = :bodyDataID ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodyConfigurationsByUsername">
+ <![CDATA[ from com.ogoglio.persist.BodyConfigurationRecord as record where record.ownerUsername = :username ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodyConfigurationByID">
+ <![CDATA[ from com.ogoglio.persist.BodyConfigurationRecord as record where record.bodyConfigurationID = :bodyConfigurationID ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodySettingsByConfigurationID">
+ <![CDATA[ from com.ogoglio.persist.BodySettingRecord as record where record.bodyConfigurationID = :bodyConfigurationID ]]>
+ </query>
+ <query
+ name="com.ogoglio.persist.bodySettingByConfigurationIDAndSettingName">
+ <![CDATA[ from com.ogoglio.persist.BodySettingRecord as record where record.bodyConfigurationID = :bodyConfigurationID and record.settingName = :settingName ]]>
+ </query>
+ <query name="com.ogoglio.persist.attachmentsByConfigurationID">
+ <![CDATA[ from com.ogoglio.persist.AttachmentRecord as record where record.bodyConfigurationID = :bodyConfigurationID ]]>
+ </query>
+ <query name="com.ogoglio.persist.attachmentByID">
+ <![CDATA[ from com.ogoglio.persist.AttachmentRecord as record where record.attachmentID = :attachmentID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.serviceStateRecords">
+ <![CDATA[ from com.ogoglio.persist.ServiceStateRecord ]]>
+ </query>
+
+ <query
+ name="com.ogoglio.persist.pendingEmailValidationsByUsername">
+ <![CDATA[ from com.ogoglio.persist.PendingEmailValidationRecord as record where record.username = :username ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.pendingEmailValidationByEmail">
+ <![CDATA[ from com.ogoglio.persist.PendingEmailValidationRecord as record where record.email = :email ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.pendingEmailValidationBySecret">
+ <![CDATA[ from com.ogoglio.persist.PendingEmailValidationRecord as record where record.secret = :secret ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessionByPossessionID">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.possessionID = :possessionID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessionsByOwnerUsername">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.ownerUsername = :ownerUsername ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessionsBySpaceID">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.spaceID = :spaceID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessionsByTemplateID">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.templateID = :templateID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.templateByID">
+ <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.templateID = :templateID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.templateByIDs">
+ <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.templateID in ( :templateIDs ) ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.templateByOwner">
+ <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.ownerUsername = :ownerUsername ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.accountByUsername">
+ <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.username = :username ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.accountByEmail">
+ <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.email = :email ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.accountByCookie">
+ <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.cookie = :cookie ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.simByURI">
+ <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.simURIString = :simURI ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.simBySimID">
+ <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.simID = :simID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.simsByReachableAndRetired">
+ <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.reachable = :reachable and sim.retired = :retired]]>
+ </query>
+
+ <query name="com.ogoglio.persist.simsByReachable">
+ <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.reachable = :reachable ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.sims">
+ <![CDATA[ from com.ogoglio.persist.SimRecord ]]>
+ </query>
+
+ <query name="com.ogoglio.appdev.migrate.dbversions">
+ <![CDATA[ from com.ogoglio.appdev.migrate.DBVersionRecord ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.accounts">
+ <![CDATA[ from com.ogoglio.persist.AccountRecord ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessions">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord order by PossessionID asc ]]>
+ </query>
+ <query name="com.ogoglio.persist.spaces">
+ <![CDATA[ from com.ogoglio.persist.SpaceRecord order by SpaceID asc]]>
+ </query>
+ <query name="com.ogoglio.persist.spacemembers">
+ <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord order by SpaceMemberID asc]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spacesByOwnerUsername">
+ <![CDATA[ from com.ogoglio.persist.SpaceRecord as space where space.ownerUsername = :ownerUsername ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spaceBySpaceID">
+ <![CDATA[ from com.ogoglio.persist.SpaceRecord as space where space.spaceID = :spaceID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spaceMembersBySpaceID">
+ <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.spaceID = :spaceID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spaceMembershipByMemberUsername">
+ <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.memberUsername = :memberUsername ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spaceMemberByUsername">
+ <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.spaceID = :spaceID and spaceMember.memberUsername = :username ]]>
+ </query>
+</hibernate-mapping>
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2008-02-07 01:01:18 UTC (rev 719)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2008-02-07 02:28:03 UTC (rev 720)
@@ -37,6 +37,7 @@
import com.ogoglio.persist.SpaceRecord;
import com.ogoglio.persist.TemplatePersistTasks;
import com.ogoglio.persist.TemplateRecord;
+import com.ogoglio.util.ArgumentUtils;
import com.ogoglio.util.Log;
import com.ogoglio.util.PropStorage;
@@ -64,7 +65,7 @@
try {
SimRecord simRecord1 = SimPersistTasks.findSimsBySimURI(simURI1, sessionFactory);
if (simRecord1 != null) {
- Log.test("Destroying leftover sim record test state:" + simRecord1.getDisplayName());
+ Log.test("Destroying leftover sim record test state:" + simRecord1.getSimID());
SimPersistTasks.delete(simRecord1, sessionFactory);
}
} catch (PersistException e) {
@@ -225,16 +226,12 @@
private SpaceRecord checkSpaceAndSimTasks() throws PersistException {
SimRecord simRecord1;
// ok to create sim now on that URI
- simRecord1 = SimPersistTasks.createSim(displayName1, simURI1, 2048, true, sessionFactory);
- verifySimProps(simRecord1, displayName1, simURI1, -1, 2048);
+ simRecord1 = SimPersistTasks.createSim(simURI1, true, false, sessionFactory);
+ verifySimProps(simRecord1, simURI1, -1);
- String displayName2 = "moon unit";
- simRecord1.setDisplayName(displayName2);
- SimPersistTasks.update(simRecord1, sessionFactory);
- assertEquals(displayName2, simRecord1.getDisplayName());
// better test is to load it from db
SimRecord simRecord2 = SimPersistTasks.findSimsBySimURI(simURI1, sessionFactory);
- verifySimProps(simRecord2, displayName2, simURI1, -1, 2048);
+ verifySimProps(simRecord2, simURI1, -1);
// it's the same sim on the same URI so better have same id?
assertEquals(simRecord1.getSimID(), simRecord2.getSimID());
@@ -253,39 +250,46 @@
SimRecord assignedSimRecord = SpacePersistTasks.findOrAssignSim(spaceRecord2, sessionFactory, false);
assertNotNull(assignedSimRecord);
- assertTrue(assignedSimRecord.isActive());
+ assertTrue(assignedSimRecord.isReachable());
+ assertFalse(assignedSimRecord.isRetired());
- //System.out.println("XXX ASSIGNED TO SIM:"
- // + assignedSimRecord.getSimID() + ","
- // + assignedSimRecord.getSimURI() + " -->\n" + "space was "
- // + spaceRecord2.getSpaceID() + " now on "
- // + spaceRecord2.getSimID() + ","
- // + spaceRecord2.getDisplayName());
- /*
- * IES: I spent a lot of time looking at this and could not see any
- * way to test this given that IES: that assigned sim is random.
- * Apparently, before we were depending on a random number IES:
- * sequence doing something we expected.
- * assertEquals(simRecord1.getSimURI(),
- * assignedSimRecord.getSimURI());
- * assertEquals(simRecord1.getDisplayName(),
- * assignedSimRecord.getDisplayName());
- * assertEquals(simRecord1.getSimID(),
- * assignedSimRecord.getSimID()); assertEquals(simRecord1,
- * assignedSimRecord);
- */
-
+ //bogus sim
+ URI bossaNova=ArgumentUtils.createURI("http://bossanova.example.com");
+ SimRecord bogus1 = SimPersistTasks.createSim(bossaNova,true, false, sessionFactory);
+ SimRecord[] arrayOfOne=new SimRecord[] {bogus1};
+
+ //verify that right now we are reachable
+ assertTrue(SimPersistTasks.findSimsBySimURI(bossaNova,sessionFactory).isReachable());
+ //check on that URI
+ SpacePersistTasks.verifyReachableSims(arrayOfOne, sessionFactory);
+ assertFalse(SimPersistTasks.findSimsBySimURI(bossaNova,sessionFactory).isReachable());
+ //ok it's not reachable, clean up
+ SimPersistTasks.delete(bogus1, sessionFactory);
+
+ //make a new space
+ SpaceRecord spaceMen3 = SpacePersistTasks.createSpace(spaceName1, username1, sessionFactory);
+ assertNotNull(spaceMen3);
+ //mark the sim as retired so we can't assign to it
+ simRecord1.setRetired(true);
+ SimPersistTasks.update(simRecord1, sessionFactory);
+ //we cannot assign this space
+ try {
+ SpacePersistTasks.findOrAssignSim(spaceMen3, sessionFactory);
+ fail("Should not be able to assign new spaces to a retired sim!");
+ } catch (PersistException IGNORED) {
+ //we expected this
+ }
+ SpacePersistTasks.deleteSpace(spaceMen3, sessionFactory);
+
//subtle: need to return 2 ... because these differ in the assignment of the simid
//since we assigned the spaceRecord2 version to a sim
return spaceRecord2;
}
- private void verifySimProps(SimRecord rec, String name, URI uri, int not_id, int port) {
+ private void verifySimProps(SimRecord rec, URI uri, int not_id) {
assertNotNull(rec);
- assertEquals(name, rec.getDisplayName());
assertEquals(uri, rec.getSimURI());
assertFalse(not_id == rec.getSimID());
- assertEquals(port, rec.getEventPort());
}
private void verifyTemplateProps(String templateName1, TemplateRecord templateRec1) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-07 01:01:21
|
Revision: 719
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=719&view=rev
Author: trevorolio
Date: 2008-02-06 17:01:18 -0800 (Wed, 06 Feb 2008)
Log Message:
-----------
Fixed a bad cast introduced when I added attachments, and then found by Nic.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2008-02-07 00:01:39 UTC (rev 718)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2008-02-07 01:01:18 UTC (rev 719)
@@ -257,7 +257,7 @@
Query attachmentsQuery = session.getNamedQuery(ATTACHMENTS_BY_CONFIGURATION_ID);
attachmentsQuery.setLong("bodyConfigurationID", rec.getBodyConfigurationID());
- AttachmentRecord[] attachmentRecords = (AttachmentRecord[])bodySettingQuery.list().toArray(new AttachmentRecord[0]);
+ AttachmentRecord[] attachmentRecords = (AttachmentRecord[])attachmentsQuery.list().toArray(new AttachmentRecord[0]);
return DocumentFactory.documentFromRecord(rec, settingRecords, attachmentRecords);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <duc...@us...> - 2008-02-07 00:01:38
|
Revision: 718
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=718&view=rev
Author: ducheneaut
Date: 2008-02-06 16:01:39 -0800 (Wed, 06 Feb 2008)
Log Message:
-----------
Fixed a bug that prevented pages from persisting across sessions. Pages are translated into PageDocuments that are included in a Thing's ThingDocument, which is in turn dumped to disk as part of the SpaceDocument on logout.
Note that this has implications for template scripts: they must NOT call createTextPage in their constructor anymore (unless you want page contents to be re-created from scratch all the time). Instead the recommended approach is to call getPageIDs to see if we have pages from previous sessions in the SpaceDocument, and point the script at the correct pageIDs if they exist. See whiteboard.js for an example.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Page.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Thing.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/PageDocument.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ThingDocument.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java
maven/trunk/ogoglio-server/src/main/resources/populate/template-28/WhiteBoard.js
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Page.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Page.java 2008-02-06 17:31:15 UTC (rev 717)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Page.java 2008-02-07 00:01:39 UTC (rev 718)
@@ -5,6 +5,8 @@
import javax.media.j3d.Transform3D;
+import com.ogoglio.xml.PageDocument;
+
public class Page {
public static final String TEXT_PLAIN = "text/plain";
@@ -31,6 +33,11 @@
private double height = -1;
+ public Page(Thing thing, PageDocument document) {
+ this(thing, document.getPageID(), document.getContentType(), document.getWidth(), document.getHeight(), document.getTransform());
+
+ }
+
public Page(Thing thing, long pageID, String contentType, double width, double height, Transform3D position) {
this.thing = thing;
this.pageID = pageID;
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Thing.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Thing.java 2008-02-06 17:31:15 UTC (rev 717)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Thing.java 2008-02-07 00:01:39 UTC (rev 718)
@@ -14,13 +14,12 @@
package com.ogoglio.client.model;
-import java.io.IOException;
-import java.io.InputStream;
import java.util.HashMap;
import javax.media.j3d.Transform3D;
import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.xml.PageDocument;
import com.ogoglio.xml.ShapeDocument;
import com.ogoglio.xml.ThingDocument;
@@ -54,6 +53,10 @@
for (int i = 0; i < shapeDocs.length; i++) {
addShape(new Shape(this, shapeDocs[i]));
}
+ PageDocument[] pageDocs = thingDoc.getPageDocuments();
+ for (int j = 0; j < pageDocs.length; j++) {
+ addPageFromThingDocument(new Page(this, pageDocs[j]));
+ }
}
public Thing(Space space, long thingID, Template template, String name, String ownerUsername, long possessionID, Transform3D position) {
@@ -146,6 +149,13 @@
pages.put(new Long(page.getPageID()), page);
space.notifyPageAdded(page);
}
+
+ public void addPageFromThingDocument(Page page) {
+ if (pages.get(new Long(page.getPageID())) != null) {
+ return;
+ }
+ pages.put(new Long(page.getPageID()), page);
+ }
public void removePage(Page page) {
if (pages.remove(new Long(page.getPageID())) == null) {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/PageDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/PageDocument.java 2008-02-06 17:31:15 UTC (rev 717)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/PageDocument.java 2008-02-07 00:01:39 UTC (rev 718)
@@ -2,6 +2,8 @@
import javax.media.j3d.Transform3D;
+import com.ogoglio.client.model.Page;
+
import nanoxml.XMLElement;
public class PageDocument extends PositionedDocument {
@@ -15,6 +17,10 @@
public static final String HEIGHT = "height";
+ public PageDocument(Page page) {
+ this(page.getPageID(), page.getContentType(), page.getWidth(), page.getHeight(), page.getPosition());
+ }
+
public PageDocument(long pageID, String contentType, double width, double height, Transform3D position) {
super(NAME, position, null);
getData().setAttribute(PAGE_ID, pageID);
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ThingDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ThingDocument.java 2008-02-06 17:31:15 UTC (rev 717)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ThingDocument.java 2008-02-07 00:01:39 UTC (rev 718)
@@ -17,6 +17,7 @@
import nanoxml.XMLElement;
+import com.ogoglio.client.model.Page;
import com.ogoglio.client.model.Shape;
import com.ogoglio.client.model.SplinePath;
import com.ogoglio.client.model.Thing;
@@ -44,7 +45,11 @@
getData().addChild(new ShapeDocument(shapes[i]).toElement());
}
- //we don't automatically store pages, because they're ephemeral between space instances
+ // Persist pages to disk also, to avoid loosing images between sessions
+ Page[] pages = thing.getPages();
+ for (int j = 0; j < pages.length; j++) {
+ getData().addChild(new PageDocument(pages[j]).toElement());
+ }
}
public ThingDocument(long thingID, String displayName, long templateID, String templateOwner, String ownerUsername, long possessionID, Transform3D transform, SplinePath splinePath) {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2008-02-06 17:31:15 UTC (rev 717)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2008-02-07 00:01:39 UTC (rev 718)
@@ -56,7 +56,6 @@
import com.ogoglio.xml.SettingDocument;
import com.ogoglio.xml.SpaceDocument;
import com.ogoglio.xml.SpaceEvent;
-import com.ogoglio.xml.SpaceMemberDocument;
import com.ogoglio.xml.TemplateDocument;
import com.ogoglio.xml.ThingDocument;
import com.ogoglio.xml.UserDocument;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java 2008-02-06 17:31:15 UTC (rev 717)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java 2008-02-07 00:01:39 UTC (rev 718)
@@ -22,7 +22,6 @@
import java.util.TimerTask;
import javax.media.j3d.Transform3D;
-import javax.vecmath.Point3f;
import javax.vecmath.Quat4d;
import javax.vecmath.Vector3d;
@@ -39,7 +38,6 @@
import com.ogoglio.sim.SpaceSimulator;
import com.ogoglio.util.ArgumentUtils;
import com.ogoglio.util.Log;
-import com.ogoglio.viewer.j3d.J3DSplineKeyFrame;
import com.ogoglio.viewer.j3d.J3DSplinePath;
import com.ogoglio.xml.PageDocument;
import com.ogoglio.xml.SpaceEvent;
@@ -203,7 +201,7 @@
spaceSimulator.setPageContent((long) thingID, pageID, Page.TEXT_PLAIN, content);
return pageID;
}
-
+
public void jsFunction_setTextPageContent(double thingID, double pageID, String content) {
spaceSimulator.setPageContent((long) thingID, (long) pageID, Page.TEXT_PLAIN, content);
}
Modified: maven/trunk/ogoglio-server/src/main/resources/populate/template-28/WhiteBoard.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-28/WhiteBoard.js 2008-02-06 17:31:15 UTC (rev 717)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-28/WhiteBoard.js 2008-02-07 00:01:39 UTC (rev 718)
@@ -9,8 +9,12 @@
function construct(id){
thingID = id;
textSettingKey = "thing." + thingID + ".whiteboard.text";
-
- pageID = space.createTextPage(thingID, 4, 2, htmlPrefix + formatBoardText(getTextSetting()) + htmlSuffix, 0, 2, 0.1, 0, math.PI, 0);
+ var pageIDs = space.getPageIDs(thingID);
+ if (pageIDs.length == 0) {
+ pageID = space.createTextPage(thingID, 4, 2, htmlPrefix + formatBoardText(getTextSetting()) + htmlSuffix, 0, 2, 0.1, 0, math.PI, 0);
+ } else {
+ pageID = pageIDs[0]; // Note: whiteboards are assumed to have only one page.
+ }
}
function cleanup(){
@@ -129,6 +133,7 @@
var imageReq = new HTTPRequest(thingID, "GET", url, handleImageResponse);
imageReq.setDestinationPage(space, thingID, pageID);
imageReq.send();
+ space.removeSetting(textSettingKey);
}
function handleImageResponse(requestingThingID, request){
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 17:31:09
|
Revision: 717
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=717&view=rev
Author: trevorolio
Date: 2008-02-06 09:31:15 -0800 (Wed, 06 Feb 2008)
Log Message:
-----------
Switched over to naked Joe model in preparation for attachments. Added the ability for attachments to include body images which are baked onto the base skin image.
Modified Paths:
--------------
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.blend
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.mtl
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.obj
Added Paths:
-----------
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.gif
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.psd
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/body.gif
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/body.psd
Modified: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.blend
===================================================================
(Binary files differ)
Added: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.mtl
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.mtl 2008-02-06 17:30:52 UTC (rev 716)
+++ maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.mtl 2008-02-06 17:31:15 UTC (rev 717)
@@ -30,7 +30,7 @@
illum 2
-newmtl Material
+newmtl Material_AttachmentTest.gif
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.361391 0.351441
@@ -38,5 +38,6 @@
Ni 1.000000
d 1.000000
illum 2
+map_Kd AttachmentTest.gif
Modified: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.obj
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.obj 2008-02-06 17:30:52 UTC (rev 716)
+++ maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.obj 2008-02-06 17:31:15 UTC (rev 717)
@@ -68,38 +68,38 @@
v -0.071789 -1.069690 0.104303
usemtl Material.003
s 1
-f 1 33 34 2
-f 2 34 35 3
-f 3 35 36 4
-f 4 36 37 5
-f 5 37 38 6
-f 6 38 39 7
-f 7 39 40 8
-f 8 40 41 9
-f 9 41 42 10
-f 10 42 43 11
-f 11 43 44 12
-f 12 44 45 13
-f 13 45 46 14
-f 14 46 47 15
-f 15 47 48 16
-f 16 48 49 17
-f 17 49 50 18
-f 18 50 51 19
-f 19 51 52 20
-f 20 52 53 21
-f 21 53 54 22
-f 22 54 55 23
-f 23 55 56 24
-f 24 56 57 25
-f 25 57 58 26
-f 26 58 59 27
-f 27 59 60 28
-f 28 60 61 29
-f 29 61 62 30
-f 30 62 63 31
-f 31 63 64 32
-f 33 1 32 64
+f 1 2 34 33
+f 2 3 35 34
+f 3 4 36 35
+f 4 5 37 36
+f 5 6 38 37
+f 6 7 39 38
+f 7 8 40 39
+f 8 9 41 40
+f 9 10 42 41
+f 10 11 43 42
+f 11 12 44 43
+f 12 13 45 44
+f 13 14 46 45
+f 14 15 47 46
+f 15 16 48 47
+f 16 17 49 48
+f 17 18 50 49
+f 18 19 51 50
+f 19 20 52 51
+f 20 21 53 52
+f 21 22 54 53
+f 22 23 55 54
+f 23 24 56 55
+f 24 25 57 56
+f 25 26 58 57
+f 26 27 59 58
+f 27 28 60 59
+f 28 29 61 60
+f 29 30 62 61
+f 30 31 63 62
+f 31 32 64 63
+f 32 1 33 64
o lShin
v 0.192337 -1.100912 0.092450
v 0.204190 -1.100912 0.078008
@@ -167,38 +167,38 @@
v 0.177894 -1.069690 0.104303
usemtl Material.003
s 1
-f 65 97 98 66
-f 66 98 99 67
-f 67 99 100 68
-f 68 100 101 69
-f 69 101 102 70
-f 70 102 103 71
-f 71 103 104 72
-f 72 104 105 73
-f 73 105 106 74
-f 74 106 107 75
-f 75 107 108 76
-f 76 108 109 77
-f 77 109 110 78
-f 78 110 111 79
-f 79 111 112 80
-f 80 112 113 81
-f 81 113 114 82
-f 82 114 115 83
-f 83 115 116 84
-f 84 116 117 85
-f 85 117 118 86
-f 86 118 119 87
-f 87 119 120 88
-f 88 120 121 89
-f 89 121 122 90
-f 90 122 123 91
-f 91 123 124 92
-f 92 124 125 93
-f 93 125 126 94
-f 94 126 127 95
-f 95 127 128 96
-f 97 65 96 128
+f 65 66 98 97
+f 66 67 99 98
+f 67 68 100 99
+f 68 69 101 100
+f 69 70 102 101
+f 70 71 103 102
+f 71 72 104 103
+f 72 73 105 104
+f 73 74 106 105
+f 74 75 107 106
+f 75 76 108 107
+f 76 77 109 108
+f 77 78 110 109
+f 78 79 111 110
+f 79 80 112 111
+f 80 81 113 112
+f 81 82 114 113
+f 82 83 115 114
+f 83 84 116 115
+f 84 85 117 116
+f 85 86 118 117
+f 86 87 119 118
+f 87 88 120 119
+f 88 89 121 120
+f 89 90 122 121
+f 90 91 123 122
+f 91 92 124 123
+f 92 93 125 124
+f 93 94 126 125
+f 94 95 127 126
+f 95 96 128 127
+f 96 65 97 128
o hip
v 0.121349 -0.013444 0.146552
v 0.142717 -0.013444 0.120515
@@ -266,38 +266,38 @@
v 0.095311 0.042842 0.167920
usemtl Material.003
s 1
-f 129 161 162 130
-f 130 162 163 131
-f 131 163 164 132
-f 132 164 165 133
-f 133 165 166 134
-f 134 166 167 135
-f 135 167 168 136
-f 136 168 169 137
-f 137 169 170 138
-f 138 170 171 139
-f 139 171 172 140
-f 140 172 173 141
-f 141 173 174 142
-f 142 174 175 143
-f 143 175 176 144
-f 144 176 177 145
-f 145 177 178 146
-f 146 178 179 147
-f 147 179 180 148
-f 148 180 181 149
-f 149 181 182 150
-f 150 182 183 151
-f 151 183 184 152
-f 152 184 185 153
-f 153 185 186 154
-f 154 186 187 155
-f 155 187 188 156
-f 156 188 189 157
-f 157 189 190 158
-f 158 190 191 159
-f 159 191 192 160
-f 161 129 160 192
+f 129 130 162 161
+f 130 131 163 162
+f 131 132 164 163
+f 132 133 165 164
+f 133 134 166 165
+f 134 135 167 166
+f 135 136 168 167
+f 136 137 169 168
+f 137 138 170 169
+f 138 139 171 170
+f 139 140 172 171
+f 140 141 173 172
+f 141 142 174 173
+f 142 143 175 174
+f 143 144 176 175
+f 144 145 177 176
+f 145 146 178 177
+f 146 147 179 178
+f 147 148 180 179
+f 148 149 181 180
+f 149 150 182 181
+f 150 151 183 182
+f 151 152 184 183
+f 152 153 185 184
+f 153 154 186 185
+f 154 155 187 186
+f 155 156 188 187
+f 156 157 189 188
+f 157 158 190 189
+f 158 159 191 190
+f 159 160 192 191
+f 160 129 161 192
o rForeArm
v -0.808079 0.389348 -0.071138
v -0.807899 0.383059 -0.076296
@@ -638,15 +638,51 @@
v -0.190000 0.659348 0.190000
v -0.190000 0.692001 0.190000
v -0.000000 0.992001 0.000000
-usemtl Material
+vt 0.740758 0.987268 0.0
+vt 0.710900 1.000000 0.0
+vt 0.500000 0.689834 0.0
+vt 0.529859 0.677102 0.0
+vt 0.740758 0.366084 0.0
+vt 0.529859 0.676251 0.0
+vt 0.500000 0.663519 0.0
+vt 0.710900 0.353352 0.0
+vt 0.259241 0.663944 0.0
+vt 0.470141 0.353778 0.0
+vt 0.500000 0.366510 0.0
+vt 0.289100 0.676676 0.0
+vt 0.053795 0.001081 0.0
+vt 0.498635 0.000000 0.0
+vt 0.500000 0.352272 0.0
+vt 0.055160 0.353352 0.0
+vt 0.210900 1.000000 0.0
+vt 0.000000 0.689834 0.0
+vt 0.029859 0.677101 0.0
+vt 0.240759 0.987268 0.0
+vt 0.946205 0.352272 0.0
+vt 0.501365 0.353352 0.0
+vt 0.500000 0.001081 0.0
+vt 0.944840 0.000000 0.0
+vt 0.740758 0.366084 0.0
+vt 1.000000 0.676676 0.0
+vt 0.529859 0.676251 0.0
+vt 0.259241 0.663944 0.0
+vt 0.000000 0.353352 0.0
+vt 0.470141 0.353778 0.0
+vt 0.740758 0.987268 0.0
+vt 0.529859 0.677102 0.0
+vt 1.000000 0.676676 0.0
+vt 0.240759 0.987268 0.0
+vt 0.029859 0.677101 0.0
+vt 0.500000 0.676676 0.0
+usemtl Material_AttachmentTest.gif
s 1
-f 325 326 327 328
-f 329 332 331 330
-f 325 329 330 326
-f 326 330 331 327
-f 327 331 332 328
-f 329 325 328 332
-f 329 332 333
-f 325 329 333
-f 325 333 328
-f 328 333 332
+f 325/1 326/2 327/3 328/4
+f 329/5 332/6 331/7 330/8
+f 325/9 329/10 330/11 326/12
+f 326/13 330/14 331/15 327/16
+f 327/17 331/18 332/19 328/20
+f 329/21 325/22 328/23 332/24
+f 329/25 333/26 332/27
+f 325/28 333/29 329/30
+f 325/31 328/32 333/33
+f 328/34 332/35 333/36
Added: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.psd
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/body.psd
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/body.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 17:30:51
|
Revision: 716
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=716&view=rev
Author: trevorolio
Date: 2008-02-06 09:30:52 -0800 (Wed, 06 Feb 2008)
Log Message:
-----------
Switched over to naked Joe model in preparation for attachments. Added the ability for attachments to include body images which are baked onto the base skin image.
Modified Paths:
--------------
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.obj
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.smap
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/texture/body.jpg
Added Paths:
-----------
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/brow.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/butt.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheek3.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/cheekOut.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chest.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/chinThick.ogmorph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/fat.morph
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/fat.ogmorph
Removed Paths:
-------------
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/noop.bvh
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/standing.bvh
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/wave.bvh
Deleted: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/noop.bvh
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/noop.bvh 2008-02-06 17:30:33 UTC (rev 715)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/noop.bvh 2008-02-06 17:30:52 UTC (rev 716)
@@ -1,120 +0,0 @@
-HIERARCHY
-ROOT hip
-{
- OFFSET 0 0 0
- CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation Yrotation
- JOINT abdomen
- {
- OFFSET 6.968294947e-016 3.421486582 -0.06209118794
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT chest
- {
- OFFSET 0 8.501656001 -0.4628408359
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT neck
- {
- OFFSET 0 10.26616192 -0.2737640142
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT head
- {
- OFFSET 0 3.148284912 1.110223025e-016
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0 3.148288965 -1.110223025e-016
- }
- }
- }
- JOINT lCollar
- {
- OFFSET 3.422053099 6.707222939 -0.8212929964
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lShldr
- {
- OFFSET 4.718440653 0.001246272894 0.01252591642
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lForeArm
- {
- OFFSET 10.12927818 -4.321487517e-012 -4.95107966e-005
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lHand
- {
- OFFSET 12.35454478 0.5037980427 -0.8622296773
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 7.858297129 1.749542691e-007 -4.740068835e-006
- }
- }
- }
- }
- }
- JOINT rCollar
- {
- OFFSET -3.558934927 6.707222939 -0.8212929964
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rShldr
- {
- OFFSET -4.58155935 0.001203480418 0.01208941333
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rForeArm
- {
- OFFSET -10.26615906 -1.791783034e-006 -3.556754652e-006
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rHand
- {
- OFFSET -12.35757831 0.07958206652 -1.1825164
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET -8.24911309 -1.280361378e-006 5.414234339e-007
- }
- }
- }
- }
- }
- }
- }
- JOINT lThigh
- {
- OFFSET 5 -1.642588973 1.368821025
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lShin
- {
- OFFSET 0 -20.12166977 4.440892099e-016
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lFoot
- {
- OFFSET 0 -19.30038071 -1.231938958
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0 -2.463877916 4.65399313
- }
- }
- }
- }
- JOINT rThigh
- {
- OFFSET -5 -1.642588973 1.368821025
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rShin
- {
- OFFSET 0 -20.12166977 2.220446049e-016
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rFoot
- {
- OFFSET 0 -19.30038071 -1.231938958
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0 -2.463877916 4.65399313
- }
- }
- }
- }
-}
-MOTION
-Frames: 1
-Frame Time: 10.03333
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Deleted: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/standing.bvh
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/standing.bvh 2008-02-06 17:30:33 UTC (rev 715)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/standing.bvh 2008-02-06 17:30:52 UTC (rev 716)
@@ -1,120 +0,0 @@
-HIERARCHY
-ROOT hip
-{
- OFFSET 0 0 0
- CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation Yrotation
- JOINT abdomen
- {
- OFFSET 6.968294947e-016 3.421486582 -0.06209118794
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT chest
- {
- OFFSET 0 8.501656001 -0.4628408359
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT neck
- {
- OFFSET 0 10.26616192 -0.2737640142
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT head
- {
- OFFSET 0 3.148284912 1.110223025e-016
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0 3.148288965 -1.110223025e-016
- }
- }
- }
- JOINT lCollar
- {
- OFFSET 3.422053099 6.707222939 -0.8212929964
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lShldr
- {
- OFFSET 4.718440653 0.001246272894 0.01252591642
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lForeArm
- {
- OFFSET 10.12927818 -4.321487517e-012 -4.95107966e-005
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lHand
- {
- OFFSET 12.35454478 0.5037980427 -0.8622296773
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 7.858297129 1.749542691e-007 -4.740068835e-006
- }
- }
- }
- }
- }
- JOINT rCollar
- {
- OFFSET -3.558934927 6.707222939 -0.8212929964
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rShldr
- {
- OFFSET -4.58155935 0.001203480418 0.01208941333
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rForeArm
- {
- OFFSET -10.26615906 -1.791783034e-006 -3.556754652e-006
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rHand
- {
- OFFSET -12.35757831 0.07958206652 -1.1825164
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET -8.24911309 -1.280361378e-006 5.414234339e-007
- }
- }
- }
- }
- }
- }
- }
- JOINT lThigh
- {
- OFFSET 5 -1.642588973 1.368821025
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lShin
- {
- OFFSET 0 -20.12166977 4.440892099e-016
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT lFoot
- {
- OFFSET 0 -19.30038071 -1.231938958
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0 -2.463877916 4.65399313
- }
- }
- }
- }
- JOINT rThigh
- {
- OFFSET -5 -1.642588973 1.368821025
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rShin
- {
- OFFSET 0 -20.12166977 2.220446049e-016
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT rFoot
- {
- OFFSET 0 -19.30038071 -1.231938958
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0 -2.463877916 4.65399313
- }
- }
- }
- }
-}
-MOTION
-Frames: 1
-Frame Time: 10
-0 43.36142209 0 1.82039 0 0 0 0.51983 0 0 -0.12099 0 2.6346 -2.60796 0.83518 0 0 0 0 0 0 -82.89336 14.37391 3.98813 -1e-005 1e-005 -15.25321 -2.36341 8.53013 -3.60908 0 0 0 83.83073 -4.52751 -0.23063 -1e-005 1e-005 16.0995 0.3843 11.75838 5.358 -1e-005 -6.68469 -1e-005 0 9.79213 0 -1e-005 -4.92784 0 -1e-005 -6.68469 -1e-005 0 9.79213 0 -1e-005 -4.92784 0
Deleted: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/wave.bvh
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/wave.bvh 2008-02-06 17:30:33 UTC (rev 715)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/animation/wave.bvh 2008-02-06 17:30:52 UTC (rev 716)
@@ -1,157 +0,0 @@
-HIERARCHY
-ROOT hip
-{
- OFFSET 0.00 0.00 0.00
- CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation Yrotation
- JOINT abdomen
- {
- OFFSET 0.000000 0.000000 0.000000
- CHANNELS 3 Xrotation Zrotation Yrotation
- JOINT chest
- {
- OFFSET 0.000000 5.018152 -1.882228
- CHANNELS 3 Xrotation Zrotation Yrotation
- JOINT neckDummy
- {
- OFFSET 0.000000 8.316447 0.784897
- CHANNELS 3 Xrotation Yrotation Zrotation
- JOINT neck
- {
- OFFSET 0.000000 2.280413 -0.392801
- CHANNELS 3 Xrotation Zrotation Yrotation
- JOINT head
- {
- OFFSET 0.000000 3.496879 0.529469
- CHANNELS 3 Xrotation Zrotation Yrotation
- JOINT figureHair
- {
- OFFSET 0.000000 4.699570 0.720622
- CHANNELS 3 Zrotation Yrotation Xrotation
- End Site
- {
- OFFSET 0.000000 -6.419331 0.000000
- }
- }
- }
- }
- }
- JOINT lCollar
- {
- OFFSET 0.599237 8.316447 0.784897
- CHANNELS 3 Yrotation Zrotation Xrotation
- JOINT lShldr
- {
- OFFSET 6.421198 0.010146 -0.332128
- CHANNELS 3 Zrotation Yrotation Xrotation
- JOINT lForeArm
- {
- OFFSET 10.552783 0.025574 0.125508
- CHANNELS 3 Yrotation Zrotation Xrotation
- JOINT lHand
- {
- OFFSET 11.035963 0.319619 0.041520
- CHANNELS 3 Zrotation Yrotation Xrotation
- End Site
- {
- OFFSET 10.353753 0.000000 0.000000
- }
- }
- }
- }
- }
- JOINT rCollar
- {
- OFFSET -0.599237 8.316447 0.784897
- CHANNELS 3 Yrotation Zrotation Xrotation
- JOINT rShldr
- {
- OFFSET -6.421198 0.010146 -0.332128
- CHANNELS 3 Zrotation Yrotation Xrotation
- JOINT rForeArm
- {
- OFFSET -10.552783 0.025574 0.125508
- CHANNELS 3 Yrotation Zrotation Xrotation
- JOINT rHand
- {
- OFFSET -11.035963 0.319619 0.041520
- CHANNELS 3 Zrotation Yrotation Xrotation
- End Site
- {
- OFFSET -10.353753 0.000000 0.000000
- }
- }
- }
- }
- }
- }
- }
- JOINT lThigh
- {
- OFFSET 4.500466 -6.400484 -1.832696
- CHANNELS 3 Xrotation Zrotation Yrotation
- JOINT lShin
- {
- OFFSET -1.359117 -18.918689 1.179887
- CHANNELS 3 Xrotation Zrotation Yrotation
- JOINT lFoot
- {
- OFFSET -0.652380 -17.215186 -0.312137
- CHANNELS 3 Xrotation Yrotation Zrotation
- End Site
- {
- OFFSET 0.000000 0.000000 10.353752
- }
- }
- }
- }
- JOINT rThigh
- {
- OFFSET -4.500466 -6.400484 -1.832696
- CHANNELS 3 Xrotation Zrotation Yrotation
- JOINT rShin
- {
- OFFSET 1.359117 -18.918689 1.179887
- CHANNELS 3 Xrotation Zrotation Yrotation
- JOINT rFoot
- {
- OFFSET 0.652380 -17.215186 -0.312137
- CHANNELS 3 Xrotation Yrotation Zrotation
- End Site
- {
- OFFSET 0.000000 0.000000 10.353752
- }
- }
- }
- }
-}
-MOTION
-Frames: 28
-Frame Time: 0.041667
-0.000000 42.014908 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -4.986940 -2.752690 0.189484 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 3.309840 -6.730210 -0.001574 -66.360001 10.633800 16.642500 -21.534800 -1.635280 0.144600 5.969490 -0.173112 0.175734 8.867130 -30.000000 11.046200 -11.979800 5.482120 -62.553398 18.606001 -0.547100 -16.789700 -5.969490 0.173112 0.175734 -7.548709 4.016634 0.126881 15.890360 -3.336124 -0.813312 -8.628910 1.044381 -0.888102 -7.530616 -4.334307 0.100752 15.830232 3.319340 0.622262 -8.660608 -1.559428 0.936809
-0.000000 42.014973 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -5.175648 -2.480400 0.196170 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2.822945 -7.101828 -0.094887 -66.960083 10.696887 16.534462 -21.354279 -2.527532 0.143427 5.969491 -0.173112 0.175733 7.854506 -30.000000 10.694261 -15.283331 7.221420 -61.855095 23.336979 -3.892672 -16.147259 -5.827211 -6.644628 0.714062 -7.559102 4.017835 0.126619 15.930134 -3.336789 -0.816053 -8.648877 1.041934 -0.888112 -7.541069 -4.335666 0.100348 15.850156 3.319505 0.623610 -8.670751 -1.558202 0.936774
-0.000000 42.015045 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -5.405861 -2.132957 0.204501 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2.236393 -7.555357 -0.208094 -67.721718 10.778363 16.397621 -21.137777 -3.659457 0.142332 5.969491 -0.173111 0.175731 6.605235 -30.000000 10.268524 -19.435774 9.412048 -60.979790 28.995588 -8.153320 -15.384860 -5.653086 -12.086100 1.417033 -7.590332 4.021317 0.127889 15.990005 -3.335071 -0.829577 -8.678817 1.038318 -0.888126 -7.553596 -4.333396 0.099697 15.879966 3.320085 0.625672 -8.689248 -1.565768 0.926152
-0.000000 42.015118 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -5.634183 -1.846634 0.212094 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.623744 -8.005759 -0.323169 -68.364227 10.841942 16.281139 -20.908846 -4.616312 0.139964 5.969493 -0.173111 0.175730 5.419388 -30.000000 9.832511 -23.087185 11.322140 -60.201050 35.008759 -11.704025 -14.552032 -5.468979 -9.588296 2.184160 -7.547146 4.019575 0.126706 15.899512 -3.340155 -0.814458 -8.638988 1.042372 -0.878402 -7.530472 -4.334557 0.100768 15.830447 3.318288 0.622137 -8.660609 -1.559426 0.936809
-0.000000 42.015194 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -5.827470 -1.770500 0.216613 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.017950 -8.388240 -0.428402 -68.586098 10.846600 16.237400 -20.674500 -4.953330 0.134301 5.969494 -0.173110 0.175728 4.567200 -30.000000 9.424100 -24.846001 12.190000 -59.796799 41.255901 -12.780200 -13.626200 -5.286163 -1.000912 2.931037 -7.579844 4.020308 0.127456 15.970176 -3.334462 -0.828173 -8.668835 1.039541 -0.888120 -7.540812 -4.336113 0.100378 15.858101 3.329446 0.624880 -8.671209 -1.555633 0.936975
-0.000000 42.015266 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -5.962902 -2.003254 0.216522 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.447076 -8.651439 -0.514374 -68.181892 10.765501 16.302177 -20.442883 -4.367002 0.124019 5.969495 -0.173110 0.175727 4.245867 -29.845789 9.078021 -23.765375 11.501060 -59.961372 46.781998 -10.346832 -12.728861 -5.115909 9.608676 3.573263 -7.515226 4.017333 0.125350 15.860250 -3.336972 -0.811416 -8.628671 1.046369 -0.887950 -7.538427 -4.340274 0.099912 15.846990 3.334975 0.624874 -8.671341 -1.554891 0.927268
-0.000000 42.015339 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -6.058966 -2.442118 0.213494 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.080350 -8.797764 -0.580817 -67.330482 10.628532 16.444759 -20.226631 -3.118837 0.110584 5.969495 -0.173109 0.175726 4.360435 -29.651041 8.816403 -20.677324 9.729217 -60.554668 47.294201 -6.287160 -12.557800 -4.969490 18.173100 4.026433 -7.537868 4.016270 0.126409 15.880302 -3.336514 -0.812692 -8.628830 1.045043 -0.888051 -7.548607 -4.342108 0.099541 15.866806 3.335672 0.626287 -8.679822 -1.562971 0.916738
-0.000000 42.015411 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -6.144474 -2.933943 0.210008 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.560688 -8.843065 -0.629753 -66.306839 10.479764 16.617813 -20.039511 -1.611603 0.096159 5.969494 -0.173109 0.175724 4.742913 -29.488380 8.658229 -16.858589 7.595486 -61.352962 39.558979 -2.846162 -13.657420 -4.855869 21.173100 4.206143 -7.579527 4.020905 0.127420 15.970063 -3.335028 -0.828240 -8.668835 1.039541 -0.888120 -7.538260 -4.340563 0.099931 15.847128 3.334310 0.624794 -8.671341 -1.554890 0.927268
-0.000000 42.015484 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -6.248238 -3.325580 0.208539 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.990295 -8.803197 -0.663203 -65.385925 10.363264 16.774006 -19.895281 -0.248065 0.082910 5.969495 -0.173108 0.175723 5.225309 -29.430428 8.622475 -13.585903 5.820879 -62.132549 27.917828 -0.797511 -15.382331 -4.774332 17.891592 4.065722 -7.525555 4.018668 0.125766 15.850601 -3.335371 -0.810560 -8.608940 1.046827 -0.888093 -7.548720 -4.341911 0.099528 15.867064 3.334403 0.626136 -8.679822 -1.562973 0.916737
-0.000000 42.015556 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -6.399070 -3.463880 0.211564 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.365530 -8.694010 -0.683189 -64.842697 10.323100 16.865999 -19.807699 0.569012 0.073000 5.969496 -0.173108 0.175722 5.639630 -29.549801 8.728120 -12.136000 5.126410 -62.669701 18.606001 -0.547058 -16.789700 -4.721832 10.598413 3.709415 -7.535957 4.019866 0.126188 15.880371 -3.336178 -0.812653 -8.628830 1.045043 -0.888051 -7.483238 -4.338469 0.102273 15.767605 3.332751 0.619287 -8.640657 -1.559999 0.927262
-0.000000 42.015629 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -6.617071 -3.249569 0.220647 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.682752 -8.531354 -0.691731 -64.871376 10.387590 16.860281 -19.784191 0.552387 0.068003 5.969497 -0.173107 0.175720 5.855781 -29.881824 8.977901 -13.392333 5.997663 -62.803127 16.379274 -2.284198 -17.158264 -4.695447 2.173111 3.279199 -7.567648 4.022512 0.127515 15.939633 -3.337502 -0.826540 -8.658774 1.041428 -0.888063 -7.518629 -4.335611 0.100592 15.800681 3.317464 0.619482 -8.640321 -1.561875 0.936881
-0.000000 42.015697 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -6.887500 -2.798871 0.233701 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.938317 -8.331080 -0.690851 -65.343216 10.522053 16.778618 -19.806835 -0.123075 0.067142 5.969498 -0.173107 0.175719 5.895262 -30.000000 9.309578 -16.665239 7.978505 -62.621250 20.075459 -5.332518 -16.653046 -4.692377 -4.663684 2.917050 -7.569182 4.019621 0.127004 15.950467 -3.333287 -0.826701 -8.658854 1.040768 -0.888114 -7.529097 -4.336951 0.100187 15.818789 3.326495 0.621879 -8.650924 -1.558090 0.937045
-0.000000 42.015770 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -7.186905 -2.281881 0.247729 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -2.128585 -8.109040 -0.682571 -66.048721 10.676058 16.656597 -19.851377 -1.166985 0.069050 5.969497 -0.173106 0.175717 5.817470 -30.000000 9.644670 -20.871769 10.377374 -62.274933 27.052887 -8.799149 -15.660637 -4.709944 -7.826900 2.764948 -7.537669 4.016647 0.126386 15.880443 -3.335831 -0.812611 -8.628830 1.045041 -0.888051 -7.548374 -4.342513 0.099568 15.867320 3.333160 0.625988 -8.679822 -1.562971 0.916738
-0.000000 42.015839 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -7.491833 -1.868698 0.259731 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -2.249914 -7.881085 -0.668911 -66.778389 10.799172 16.529797 -19.893555 -2.288951 0.072359 5.969497 -0.173106 0.175716 5.681803 -30.000000 9.904694 -24.928970 12.502705 -61.915016 34.669884 -11.791218 -14.567630 -4.745596 -5.899844 2.926324 -7.548056 4.017863 0.126808 15.900337 -3.336122 -0.813977 -8.638815 1.043818 -0.888056 -7.472326 -4.337875 0.102729 15.747978 3.331125 0.617764 -8.630512 -1.561226 0.927297
-0.000000 42.015907 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -7.778831 -1.729418 0.266709 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -2.298662 -7.663067 -0.651893 -67.322739 10.840964 16.433804 -19.909115 -3.198582 0.075702 5.969498 -0.173105 0.175715 5.547657 -30.000000 10.011168 -27.753895 13.662934 -61.692352 40.284775 -13.415857 -13.760619 -4.796904 0.496285 3.350437 -7.548024 4.017924 0.126805 15.900359 -3.336016 -0.813964 -8.638815 1.043821 -0.888056 -7.472239 -4.338027 0.102738 15.748037 3.330843 0.617730 -8.630512 -1.561226 0.927297
-0.000000 42.015976 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -8.024450 -2.034140 0.265665 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -2.271187 -7.470837 -0.633538 -67.472298 10.751000 16.404200 -19.873800 -3.605490 0.077711 5.969497 -0.173105 0.175713 5.474430 -30.000000 9.885610 -28.263599 13.166500 -61.757801 41.255901 -12.780200 -13.626200 -4.861558 10.230832 3.947999 -7.504465 4.016804 0.124887 15.840604 -3.335455 -0.809905 -8.619826 1.038102 -0.888671 -7.537092 -4.342598 0.100065 15.847415 3.332903 0.624627 -8.671341 -1.554891 0.927268
-0.000000 42.016045 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -8.215930 -2.840772 0.255298 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -2.163848 -7.320246 -0.615868 -67.093506 10.496702 16.463688 -19.777840 -3.338267 0.076858 5.969496 -0.173104 0.175712 5.473949 -28.798227 9.487674 -25.795719 10.687522 -62.184551 36.005146 -9.441908 -14.390418 -4.937371 22.173100 4.629722 -7.535734 4.020283 0.126163 15.880531 -3.335398 -0.812559 -8.628830 1.045043 -0.888051 -7.472073 -4.338312 0.102757 15.748158 3.330253 0.617661 -8.630512 -1.561226 0.927297
-0.000000 42.016109 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -8.383297 -3.758474 0.241098 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.973004 -7.227144 -0.600903 -66.356636 10.116887 16.583427 -19.669392 -2.701442 0.070965 5.969496 -0.173104 0.175711 5.367761 -27.635384 8.929544 -21.370234 7.362841 -62.735104 27.208628 -4.760770 -15.637142 -5.022276 33.819302 5.306320 -7.547935 4.018092 0.126795 15.900428 -3.335677 -0.813924 -8.638815 1.043820 -0.888056 -7.461429 -4.337243 0.103183 15.728336 3.329558 0.616250 -8.629687 -1.565804 0.936719
-0.000000 42.016174 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -8.567270 -4.284220 0.230257 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.695012 -7.207384 -0.590665 -65.507896 9.668220 16.721701 -19.611099 -2.118530 0.057692 5.969495 -0.173103 0.175709 4.929840 -27.207500 8.361540 -16.427700 4.694980 -63.094299 18.606001 -0.547100 -16.789700 -5.114323 37.173100 5.888507 -7.547906 4.018145 0.126791 15.900452 -3.335570 -0.813911 -8.638815 1.043820 -0.888056 -7.461349 -4.337385 0.103192 15.728394 3.329277 0.616217 -8.629686 -1.565805 0.936719
-0.000000 42.016239 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -8.805661 -4.055430 0.227844 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.326230 -7.276816 -0.587176 -64.804909 9.246442 16.834417 -19.621813 -1.934965 0.035836 5.969494 -0.173103 0.175708 4.047131 -27.940468 7.935217 -12.445763 3.764318 -63.061680 13.388170 1.722369 -17.381668 -5.211670 26.175665 6.286996 -7.525205 4.019324 0.125726 15.840980 -3.333617 -0.809687 -8.600175 1.037897 -0.888863 -7.526696 -4.341128 0.100461 15.827983 3.330329 0.622990 -8.661198 -1.556123 0.927302
-0.000000 42.016304 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -9.124647 -3.271319 0.230457 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.863018 -7.451290 -0.592457 -64.550735 9.103567 16.868025 -19.545166 -2.183858 0.008750 5.969494 -0.173103 0.175707 3.058445 -29.179585 7.807070 -11.050306 3.962605 -62.895576 12.550781 1.905331 -17.387650 -5.312580 8.010839 6.412500 -7.546034 4.021667 0.126575 15.890621 -3.334836 -0.813158 -8.628910 1.044381 -0.888102 -7.515996 -4.340187 0.100892 15.808128 3.329829 0.621601 -8.650798 -1.558798 0.936990
-0.000000 42.016365 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -9.547500 -2.271550 0.232572 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.301732 -7.746660 -0.608528 -65.059799 9.530680 16.766600 -19.181000 -2.820240 -0.019076 5.969495 -0.173102 0.175706 2.415560 -30.000000 8.134830 -13.904300 4.259440 -62.969002 16.540701 0.193065 -16.892500 -5.415400 -6.826900 6.175730 -7.546006 4.021724 0.126572 15.890640 -3.334741 -0.813147 -8.628910 1.044380 -0.888102 -7.526545 -4.341391 0.100479 15.828089 3.329799 0.622928 -8.660939 -1.557570 0.936955
-0.000000 42.016422 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.025920 -1.371164 0.229915 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.350818 -8.138762 -0.630273 -66.446205 10.652070 16.511005 -18.456450 -3.726853 -0.041970 5.969496 -0.173102 0.175705 2.470489 -29.762602 8.980062 -21.511997 3.905190 -63.510616 24.904070 -2.968511 -16.040998 -5.518540 -10.347096 5.524571 -7.493823 4.016043 0.124436 15.820871 -3.334351 -0.808443 -8.609842 1.039324 -0.888666 -7.449970 -4.337583 0.102963 15.698437 3.329325 0.614227 -8.611506 -1.556528 0.937691
-0.000000 42.016479 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.225323 -0.786689 0.223197 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.046031 -8.443364 -0.624023 -68.022842 11.924867 16.229242 -17.807842 -4.497295 -0.049531 5.969497 -0.173101 0.175704 3.176177 -28.971237 10.019674 -29.742861 3.273289 -64.171585 33.584236 -6.114997 -15.217605 -5.620425 -4.575804 4.567089 -7.545951 4.021822 0.126565 15.890676 -3.334561 -0.813125 -8.628910 1.044382 -0.888102 -7.505433 -4.339002 0.101308 15.788438 3.328504 0.620113 -8.640651 -1.560028 0.937025
-0.000000 42.016537 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -9.739550 -0.710029 0.214376 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.724850 -8.436220 -0.548971 -68.902298 12.639400 16.086100 -17.798800 -4.652870 -0.030179 5.969498 -0.173101 0.175703 4.385800 -28.415501 10.834400 -33.307598 3.017940 -64.458702 37.623798 -7.527350 -14.866700 -5.719391 5.956805 3.436393 -7.558163 4.019604 0.127198 15.920669 -3.332645 -0.824628 -8.648791 1.042653 -0.888058 -7.492727 -4.341526 0.101979 15.768608 3.327876 0.618709 -8.630507 -1.561252 0.937061
-0.000000 42.016586 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -8.343087 -1.233335 0.205211 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2.337016 -7.983024 -0.382778 -68.488899 12.319228 16.191038 -18.781443 -3.899771 0.021722 5.969499 -0.173101 0.175702 5.926502 -28.660614 11.127560 -28.726873 3.587007 -64.042053 33.779503 -6.093127 -15.273297 -5.813463 16.720585 2.248377 -7.547706 4.018523 0.126769 15.900577 -3.334943 -0.813837 -8.638815 1.043819 -0.888056 -7.513717 -4.344142 0.101163 15.788934 3.326088 0.619836 -8.630761 -1.559837 0.937171
-0.000000 42.016636 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -6.553798 -2.032281 0.196568 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2.876734 -7.322030 -0.178788 -67.401970 11.459437 16.423294 -20.232765 -2.711746 0.087311 5.969500 -0.173100 0.175701 7.526488 -29.342930 11.117447 -20.041325 4.575019 -63.269028 25.941183 -3.225203 -16.058920 -5.899616 18.476620 1.110248 -7.525022 4.019671 0.125706 15.850972 -3.333549 -0.810344 -8.610081 1.037336 -0.888818 -7.439726 -4.335819 0.103344 15.651234 3.316227 0.609368 -8.580422 -1.563753 0.937538
-0.000000 42.016674 0.240040 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -4.986900 -2.752700 0.189500 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 3.309800 -6.730200 -0.001600 -66.360001 10.633800 16.642500 -21.534800 -1.635300 0.144600 5.969500 -0.173100 0.175700 8.867100 -30.000000 11.046200 -11.979800 5.482100 -62.553398 18.606001 -0.547100 -16.789700 -5.969500 0.173100 0.175700 -7.568130 4.021603 0.127570 15.940418 -3.333630 -0.826077 -8.658774 1.041428 -0.888064 -7.516407 -4.339471 0.100846 15.799290 3.324273 0.620286 -8.640779 -1.559319 0.937081
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.obj
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.obj 2008-02-06 17:30:33 UTC (rev 715)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.obj 2008-02-06 17:30:52 UTC (rev 716)
@@ -1,3700 +1,3225 @@
-# Height scale: 0.039675497
-# Y Change: -1.2706338
+# Height scale: 0.00998366
+# Y Change: -1.2726992
# created by Ogoglio Obj library: http://ogoglio.com/
-# num vertices: 1838
-# num faces: 3567
-# num groups: 20
-# num smoothing groups: 6
-# num material groups: 2
-v 0.08845962 0.6103351 0.02162263
-v 0.08537687 0.57808506 0.019098118
-v 0.07792002 0.57465196 0.021851556
-v 0.08041402 0.60996234 0.024112822
-v -0.07871309 0.57566416 0.023116332
-v -0.08537695 0.57808506 0.019098038
-v -0.08474619 0.60062575 -0.0036995814
-v -0.08493671 0.5774913 0.0038236862
-v -0.07973867 0.628121 0.044066064
-v -0.07695884 0.64460635 0.04289572
-v -0.03801694 0.677588 0.08443239
-v -0.06413667 0.6701579 0.060374122
-v -0.08196918 0.65795946 0.045869954
-v -0.08042953 0.64363146 0.041517075
-v -0.045013595 0.6884848 0.1088698
-v 0.0021079592 0.6983787 0.1189158
-v -0.06713523 0.6859877 0.08042315
-v -0.08894282 0.6386143 -0.021284714
-v -0.039797977 0.7078376 0.09145765
-v -0.00929585 0.7100545 0.09376875
-v -0.049237885 0.7031808 0.047245223
-v -0.063325144 0.7069478 -0.026346078
-v -0.0674512 0.65021 -0.07158721
-v -0.066906616 0.68227136 -0.060839992
-v -0.0131692495 0.71460664 0.04776156
-v -0.022642765 0.72276556 0.03172286
-v -0.027116138 0.7164868 -0.03875681
-v -0.031025881 0.6960387 -0.07594636
-v -0.06983736 0.6563648 0.044418383
-v -0.082706705 0.6290158 0.041454826
-v -0.08692794 0.65681124 -0.010210132
-v -0.07975791 0.6782901 0.0071545234
-v -0.05685717 0.69647145 0.06400138
-v -0.080005914 0.5733957 0.006613231
-v 0.083697245 0.65795946 0.04587003
-v -0.010887075 0.67695475 0.092765436
-v 0.0821576 0.64363146 0.041517153
-v 0.018988019 0.55614245 -0.09239559
-v 0.06945021 0.6936171 0.107812084
-v 0.020927515 0.6923803 0.108200714
-v 0.07145533 0.6859877 0.080423184
-v 0.09067088 0.6386143 -0.021284714
-v 0.044295114 0.70775664 0.08696445
-v 0.00929577 0.7100549 0.09376883
-v 0.049237926 0.7031809 0.047245223
-v 0.06332519 0.7069478 -0.026346078
-v 0.048845574 0.55351937 -0.07468682
-v 0.059810374 0.58795357 -0.07320673
-v 0.06669518 0.6029105 -0.078607
-v 0.074180916 0.6301204 -0.06607601
-v 0.06874728 0.65021026 -0.07158721
-v 0.06820265 0.68227136 -0.060839992
-v 0.01316929 0.71460664 0.04776156
-v 0.022642806 0.7227657 0.03172286
-v 0.027116138 0.7164868 -0.03875681
-v 0.031025881 0.6960391 -0.07594636
-v 0.031001283 0.66004634 -0.09879746
-v 0.029249966 0.6372099 -0.0925089
-v 0.029300077 0.6092044 -0.10356745
-v 0.02898426 0.5876365 -0.09697461
-v -0.018988058 0.55614245 -0.09239554
-v -0.048845574 0.55351937 -0.07468666
-v -0.059810337 0.58795357 -0.073206566
-v -0.06669518 0.6029105 -0.07860692
-v -0.07250312 0.629786 -0.069097176
-v -0.031001242 0.66004634 -0.0987975
-v -0.029249966 0.6372098 -0.092508934
-v -0.029300077 0.6092044 -0.10356737
-v -0.02898426 0.5876365 -0.09697453
-v 0.08443477 0.62901604 0.041454785
-v 0.08865601 0.656811 -0.010210053
-v 0.08148593 0.6782899 0.007154563
-v 0.060281165 0.68770266 0.06929941
-v -0.045462288 0.53849685 -0.068057835
-v -0.019157074 0.53383243 -0.08046298
-v 0.020348929 0.5343325 -0.080644846
-v 0.046202514 0.53697884 -0.06772813
-v 0.06705746 0.55911064 -0.039681606
-v -0.07101961 0.5600294 -0.046535864
-v 0.08562452 0.5718962 0.0038236862
-v 0.08562433 0.5774913 0.0038236862
-v 0.020010376 0.5310981 -0.06689999
-v 1.6163796E-4 0.53512585 -0.06986324
-v 0.010887075 0.67695475 0.092765436
-v 0.03801694 0.677588 0.08443239
-v 0.06413667 0.6701579 0.060374122
-v 0.0854338 0.60062575 -0.0036995814
-v 0.08586313 0.6013694 -0.022362974
-v 0.08390062 0.59211016 -0.033892196
-v 0.0803824 0.57285905 -0.025794666
-v 0.045445267 0.5405717 -0.05483348
-v -0.08390062 0.59211016 -0.03389212
-v -0.08586309 0.60136914 -0.022362974
-v -0.0803824 0.57285905 -0.025794586
-v -0.019687101 0.5336286 -0.06689991
-v -0.045445267 0.5405717 -0.05483348
-v 0.07156539 0.65636444 0.044418424
-v 0.0786869 0.64460635 0.042895798
-v 0.08146673 0.6281215 0.04406611
-v -0.06656382 0.5584346 -0.036385644
-v 0.06692066 0.5577327 -0.035465967
-v -0.08759564 0.6103351 0.02162259
-v -0.079550005 0.60996234 0.024112742
-v 0.04888335 0.61756027 0.078690834
-v 0.027585698 0.61756027 0.0786908
-v 0.016936835 0.59911644 0.0786908
-v 0.027585657 0.5806719 0.0786908
-v 0.04888335 0.5806719 0.078690834
-v 0.05953217 0.5991161 0.078690834
-v 0.047456656 0.61508954 0.08933966
-v 0.029012349 0.61508954 0.08933966
-v 0.019790176 0.5991162 0.08933966
-v 0.029012349 0.583143 0.08933966
-v 0.047456656 0.583143 0.08933966
-v 0.056678828 0.5991162 0.08933966
-v 0.043558933 0.60833836 0.09713514
-v 0.032910112 0.60833836 0.09713514
-v 0.027585657 0.5991162 0.09713514
-v 0.03291007 0.5898942 0.09713514
-v 0.043558933 0.5898942 0.09713514
-v 0.04888335 0.5991162 0.09713514
-v 0.03823452 0.5991162 0.09998848
-v 0.07938726 -1.2768523 -0.027476113
-v 0.14038254 -1.2768694 -0.063643895
-v 0.14018793 -1.2768028 0.04468937
-v 0.09320786 -1.2755837 0.043821707
-v 0.18514441 -1.276824 -0.008717301
-v 0.17951246 -1.2768438 0.045568064
-v 0.070623696 -1.1772999 0.047493435
-v 0.10728552 -1.1765271 0.086895406
-v 0.17972706 -1.178061 0.009442847
-v 0.16673236 -1.1766728 0.05043696
-v 0.13759193 -1.2534479 -0.07144815
-v 0.07719546 -1.2534609 -0.02744493
-v 0.08163658 -1.2534683 0.04620271
-v 0.1915341 -1.2534027 -0.008702741
-v 0.19150232 -1.2534227 0.046505716
-v 0.07738345 -1.2114437 0.102501884
-v 0.10836089 -1.1956061 0.11790248
-v 0.07097458 -1.2534533 0.10088654
-v 0.15892349 -1.2046208 0.11137285
-v 0.2036886 -1.2534388 0.106235154
-v 0.07948787 -1.2771747 0.10493138
-v 0.14238134 -1.2771997 0.10695919
-v 0.19942214 -1.2772343 0.10555344
-v 0.076810256 -1.2330444 0.16444041
-v 0.109375745 -1.2158724 0.16457888
-v 0.063865095 -1.2533958 0.16457951
-v 0.16450708 -1.2212176 0.16457999
-v 0.20664418 -1.2534249 0.16457865
-v 0.06853327 -1.2767562 0.16457972
-v 0.13892573 -1.276768 0.16457956
-v 0.1988495 -1.2768273 0.16457857
-v 0.098365396 -1.2534006 0.24367979
-v 0.16576459 -1.2539403 0.23737389
-v 0.10206033 -1.274574 0.22829741
-v 0.16832559 -1.2745885 0.22150347
-v 0.10251779 -1.2330422 0.22723739
-v 0.1652449 -1.2330419 0.22033076
-v 0.19495226 -1.2330419 0.16443996
-v 0.19212799 -1.2330418 0.10756193
-v 0.18319537 -1.2330462 0.046559714
-v 0.19034284 -1.233132 -0.009777709
-v 0.13670945 -1.233197 -0.061828904
-v 0.07739003 -1.2332497 -0.027622122
-v 0.07709604 -1.2331901 0.045180432
-v 0.07466036 -1.2330455 0.10181554
-v 0.10030624 -1.2334753 -0.05867609
-v 0.100650184 -1.2537063 -0.06339712
-v 0.10314137 -1.2771128 -0.059510585
-v 0.1746669 -1.276214 -0.050569195
-v 0.17636774 -1.2527927 -0.05468664
-v 0.17710645 -1.2325299 -0.04935287
-v 0.10955932 -1.16236 0.07368283
-v 0.07574211 -1.1628261 0.037324525
-v 0.084609784 -1.1627905 -0.027657073
-v 0.07884644 -1.1777468 -0.027128834
-v 0.13578542 -1.1627632 -0.040606882
-v 0.168759 -1.1627905 0.007873325
-v 0.15867734 -1.1790566 -0.036822986
-v 0.16077599 -1.162662 0.04601429
-v 0.10740407 -1.1783172 -0.047874875
-v 0.13582708 -1.178554 -0.048439417
-v -0.07938726 -1.2768523 -0.027476113
-v -0.14038254 -1.2768694 -0.063643895
-v -0.14018793 -1.2768028 0.04468937
-v -0.09320786 -1.2755837 0.043821707
-v -0.18514441 -1.276824 -0.008717301
-v -0.17951246 -1.2768438 0.045568064
-v -0.070623696 -1.1772999 0.047493435
-v -0.10728552 -1.1765271 0.086895406
-v -0.17972706 -1.178061 0.009442847
-v -0.16673236 -1.1766728 0.05043696
-v -0.13759193 -1.2534479 -0.07144815
-v -0.07719546 -1.2534609 -0.02744493
-v -0.08163658 -1.2534683 0.04620271
-v -0.1915341 -1.2534027 -0.008702741
-v -0.19150232 -1.2534227 0.046505716
-v -0.07738345 -1.2114437 0.102501884
-v -0.10836089 -1.1956061 0.11790248
-v -0.07097458 -1.2534533 0.10088654
-v -0.15892349 -1.2046208 0.11137285
-v -0.2036886 -1.2534388 0.106235154
-v -0.07948787 -1.2771747 0.10493138
-v -0.14238134 -1.2771997 0.10695919
-v -0.19942214 -1.2772343 0.10555344
-v -0.076810256 -1.2330444 0.16444041
-v -0.109375745 -1.2158724 0.16457888
-v -0.063865095 -1.2533958 0.16457951
-v -0.16450708 -1.2212176 0.16457999
-v -0.20664418 -1.2534249 0.16457865
-v -0.06853327 -1.2767562 0.16457972
-v -0.13892573 -1.276768 0.16457956
-v -0.1988495 -1.2768273 0.16457857
-v -0.098365396 -1.2534006 0.24367979
-v -0.16576459 -1.2539403 0.23737389
-v -0.10206033 -1.274574 0.22829741
-v -0.16832559 -1.2745885 0.22150347
-v -0.10251779 -1.2330422 0.22723739
-v -0.1652449 -1.2330419 0.22033076
-v -0.19495226 -1.2330419 0.16443996
-v -0.19212799 -1.2330418 0.10756193
-v -0.18319537 -1.2330462 0.046559714
-v -0.19034284 -1.233132 -0.009777709
-v -0.13670945 -1.233197 -0.061828904
-v -0.07739003 -1.2332497 -0.027622122
-v -0.07709604 -1.2331901 0.045180432
-v -0.07466036 -1.2330455 0.10181554
-v -0.10030624 -1.2334753 -0.05867609
-v -0.100650184 -1.2537063 -0.06339712
-v -0.10314137 -1.2771128 -0.059510585
-v -0.1746669 -1.276214 -0.050569195
-v -0.17636774 -1.2527927 -0.05468664
-v -0.17710645 -1.2325299 -0.04935287
-v -0.10955932 -1.16236 0.07368283
-v -0.07574211 -1.1628261 0.037324525
-v -0.084609784 -1.1627905 -0.027657073
-v -0.07884644 -1.1777468 -0.027128834
-v -0.13578542 -1.1627632 -0.040606882
-v -0.168759 -1.1627905 0.007873325
-v -0.15867734 -1.1790566 -0.036822986
-v -0.16077599 -1.162662 0.04601429
-v -0.10740407 -1.1783172 -0.047874875
-v -0.13582708 -1.178554 -0.048439417
-v 0.08265866 0.59260404 -0.0077337855
-v 0.08562433 0.5774913 0.0038236862
-v 0.07977501 0.5921104 -0.033892196
-v 0.08173744 0.60136974 -0.022362974
-v 0.08038248 0.57285905 -0.025794666
-v 0.066920705 0.5577327 -0.035466004
-v -0.06656382 0.5584346 -0.036385644
-v -0.08493671 0.5774913 0.0038236862
-v -0.08474619 0.60062575 -0.0036995814
-v -0.08104982 0.60136974 -0.022362974
-v -0.07908739 0.5921104 -0.033892196
-v -0.08038248 0.57285905 -0.025794666
-v 0.08041402 0.60996234 0.024112822
-v 0.0786869 0.64460635 0.042895798
-v 0.08108358 0.5882939 0.020464977
-v -0.07973867 0.6281215 0.04406611
-v -0.07954996 0.60996234 0.024112822
-v -0.07695884 0.64460635 0.042895798
-v -0.08108358 0.5882939 0.020464938
-v 0.08129652 0.6042129 0.013951452
-v 0.08227488 0.6186496 0.013863373
-v 0.03801694 0.677588 0.08443239
-v 0.010887075 0.67695475 0.092765436
-v 0.06413667 0.6701579 0.060374122
-v 0.07156539 0.65636444 0.044418424
-v -0.010887075 0.67695475 0.092765436
-v 0.08205182 0.64016736 0.023675798
-v -0.08227488 0.6186501 0.013863293
-v -0.08129656 0.6042129 0.013951372
-v -0.03801694 0.677588 0.08443239
-v -0.06413667 0.6701579 0.060374122
-v -0.06983736 0.65636444 0.044418424
-v -0.08205182 0.6401675 0.023675757
-v 0.0 0.53512585 -0.06986324
-v 0.018669702 0.56264746 -0.07797758
-v 0.01360806 0.53616357 -0.06746929
-v 0.045445267 0.5405716 -0.054833442
-v 0.036042888 0.6971053 0.059305105
-v 0.015753832 0.69776833 0.06583946
-v 0.059744433 0.68692946 0.02794135
-v 0.07216913 0.6690906 0.010784951
-v 0.08126335 0.62679875 -0.019118432
-v 0.07758397 0.6480423 -0.010385696
-v 0.027419817 0.70528865 0.03493618
-v 0.009140004 0.70741487 0.03608542
-v 0.04841248 0.698107 0.0020457876
-v 0.062263593 0.6830764 -0.03176091
-v 0.04802675 0.5613439 -0.060922958
-v 0.058807816 0.57914686 -0.065498486
-v 0.06557721 0.5987301 -0.06924295
-v 0.06963986 0.61574984 -0.067629896
-v 0.069718696 0.6386316 -0.06264979
-v 0.06918319 0.66231096 -0.05502523
-v 0.012948494 0.7086611 0.0018459025
-v 0.02226323 0.70256364 -0.028719742
-v 0.026661577 0.69010615 -0.054019816
-v 0.030505775 0.67022085 -0.07851003
-v 0.030481573 0.6406257 -0.0908916
-v 0.028759656 0.6206176 -0.093297005
-v 0.028808933 0.6029587 -0.093438655
-v 0.028498393 0.5835484 -0.09043013
-v -0.018669741 0.56264746 -0.077977546
-v -0.013489074 0.53614914 -0.06750861
-v -0.045445267 0.5405716 -0.05483348
-v -0.036042925 0.6971053 0.059305105
-v -0.015753832 0.69776833 0.06583951
-v -0.059744433 0.68692946 0.027941389
-v -0.07216913 0.6690906 0.010784951
-v -0.08126335 0.62679875 -0.019118471
-v -0.07758397 0.6480422 -0.010385736
-v -0.027419854 0.705289 0.03493618
-v -0.009140004 0.70741487 0.03608542
-v -0.048412517 0.698107 0.002045748
-v -0.062263593 0.6830764 -0.03176091
-v -0.048026793 0.5613439 -0.060922958
-v -0.058807816 0.57914674 -0.065498486
-v -0.065577164 0.5987301 -0.06924291
-v -0.06963982 0.61574984 -0.067629896
-v -0.06971866 0.6386316 -0.06264983
-v -0.06918323 0.6623107 -0.055025272
-v -0.012948534 0.7086611 0.0018459025
-v -0.02226323 0.70256364 -0.028719742
-v -0.026661577 0.69010615 -0.054019816
-v -0.030505775 0.67022085 -0.07851003
-v -0.030481534 0.6406257 -0.0908916
-v -0.028759615 0.6206174 -0.09329697
-v -0.028808895 0.6029587 -0.09343861
-v -0.028498434 0.5835484 -0.09043013
-v -0.001187329 0.56264746 -0.07797758
-v -0.0016514132 0.5835483 -0.090430096
-v -0.0014333964 0.6029587 -0.09343861
-v -0.0016319723 0.6206174 -0.09329697
-v -0.0018146778 0.6406257 -0.0908916
-v -0.0019253725 0.67022085 -0.07851003
-v -0.0017039436 0.69010603 -0.054019775
-v -0.0013347233 0.70256364 -0.028719703
-v -0.0013023878 0.7086611 0.0018459025
-v -6.2524615E-4 0.707415 0.03608538
-v -2.3932259E-4 0.69776833 0.06583946
-v -0.07903006 0.55867374 -0.020264816
-v 0.07903006 0.55867374 -0.020264816
-v 0.0 0.676955 0.092765436
-v 0.041515723 0.49764872 -0.058908276
-v 0.06362692 0.48939645 -0.031152725
-v -0.041515686 0.49764872 -0.058908276
-v -0.06362692 0.4893967 -0.031152725
-v 0.047414042 0.46319485 0.0332389
-v 0.03372223 0.45927632 0.04399338
-v -0.047414042 0.46319485 0.0332389
-v -0.017252732 0.4570887 0.05053452
-v -0.03372223 0.45927644 0.04399338
-v 0.8993638 0.3304975 -0.0010451319
-v 0.9012229 0.33148158 -0.016570115
-v 0.9212231 0.33945835 -0.01453119
-v 0.9216694 0.3394866 -0.0017467138
-v 0.91884756 0.3487568 -0.021188341
-v 0.94348586 0.34960032 -0.018275287
-v 0.94417423 0.3423221 -0.010577925
-v 0.94492024 0.34296477 -0.001245771
-v 0.9428059 0.3491223 0.0050577135
-v 0.9190257 0.34868026 0.004719797
-v 0.90093017 0.34766817 0.0063302647
-v 0.90410715 0.35945272 -0.0028046607
-v 0.92272764 0.35854113 -0.0010715559
-v 0.92241555 0.358979 -0.01432575
-v 0.90511596 0.36137652 -0.01564143
-v 0.9400238 0.35896683 -0.011410077
-v 0.96593654 0.34793317 -0.016038027
-v 0.9757117 0.3455875 -0.014177563
-v 0.9747643 0.34007704 -0.010048494
-v 0.9661192 0.34223783 -0.010986978
-v 0.9663382 0.34201288 -8.054126E-4
-v 0.9748956 0.3399564 -0.0012197834
-v 0.98230714 0.34565592 -0.012459614
-v 0.9817939 0.34102476 -0.008922781
-v 0.98184687 0.34075975 -0.0012885014
-v 0.9824238 0.3451618 0.002833624
-v 0.97573245 0.34554708 0.003539332
-v 0.9664516 0.34723437 0.0044596842
-v 0.9855671 0.34353912 -0.007541479
-v 0.98574126 0.3433385 -0.0025372482
-v 0.97622156 0.3510461 -0.009558065
-v 0.9828441 0.35006213 -0.008337369
-v 0.9639975 0.35417497 -0.010287935
-v 0.9648051 0.35367298 -0.0010263654
-v 0.9768029 0.35096967 -0.0013127828
-v 0.98290515 0.34983313 -7.0340687E-4
-v 0.9857427 0.34599733 -0.009489307
-v 0.9860231 0.34799767 -0.0064857136
-v 0.9857181 0.34481263 4.5515728E-4
-v 0.9859207 0.34775257 -0.0015058041
-v 0.95609796 0.34884894 -0.01622458
-v 0.95630693 0.3413862 -0.011149846
-v 0.95640486 0.3412094 -8.790106E-4
-v 0.95672405 0.35552466 -0.001313735
-v 0.9406587 0.3586092 -0.0010063293
-v 0.9559046 0.34880507 0.004421715
-v 0.88808334 0.32551718 -0.080015
-v 0.8812116 0.32297456 -0.078421876
-v 0.8793587 0.33434534 -0.092158325
-v 0.88721293 0.33671522 -0.092059806
-v 0.8901763 0.32979465 -0.023612436
-v 0.8881097 0.32718801 -0.045498587
-v 0.89997387 0.33494794 -0.04131719
-v 0.90000457 0.3341285 -0.02840456
-v 0.887688 0.32580626 -0.0011241655
-v 0.88772076 0.33750224 0.009534498
-v 0.8878709 0.35158432 0.0058164676
-v 0.89619654 0.35887015 -0.0021990938
-v 0.88951313 0.360039 -0.0038647107
-v 0.89155096 0.36302757 -0.023050154
-v 0.8977351 0.36194682 -0.017342437
-v 0.8891676 0.3625735 -0.053114776
-v 0.89874804 0.36383867 -0.029741624
-v 0.8978256 0.3637463 -0.04629555
-v 0.9066667 0.3650396 -0.0323614
-v 0.9059934 0.36362982 -0.044849936
-v 0.8854011 0.35532784 -0.07725478
-v 0.8952948 0.36154938 -0.058630623
-v 0.8926111 0.35750067 -0.07319784
-v 0.8801335 0.348086 -0.09031223
-v 0.8905432 0.35354853 -0.08098614
-v 0.8865143 0.34904194 -0.09022835
-v 0.9043708 0.3576814 -0.022071637
-v 0.9016508 0.3384663 -0.022305407
-v 0.92180514 0.3566209 -0.024856975
-v 0.9019075 0.35708296 -0.051337317
-v 0.9021815 0.3611678 -0.06111026
-v 0.88559604 0.3245933 -0.06435421
-v 0.8943247 0.33391964 -0.06877945
-v 0.89537835 0.33095157 -0.062369008
-v 0.891947 0.3280877 -0.07107893
-v 0.97211415 0.35080922 -0.046562646
-v 0.9810329 0.34823036 -0.044758048
-v 0.9799504 0.34363985 -0.039426018
-v 0.9713681 0.34537876 -0.040426314
-v 0.98046356 0.34489286 -0.030521607
-v 0.9723677 0.34667206 -0.030613812
-v 0.98181325 0.35105443 -0.026898796
-v 0.9883364 0.34482884 -0.031008782
-v 0.989361 0.3496567 -0.027676119
-v 0.99318916 0.3456409 -0.038147673
-v 0.9919292 0.3473233 -0.042112406
-v 0.9940437 0.3495326 -0.037849274
-v 0.98996216 0.35349226 -0.032232888
-v 0.9895079 0.3525077 -0.040107444
-v 0.9820165 0.35422707 -0.041213438
-v 0.98301256 0.35543203 -0.032887097
-v 0.99414694 0.3501314 -0.032912966
-v 0.99350816 0.34815514 -0.030517874
-v 0.9935922 0.3462032 -0.03319879
-v 0.97059256 0.35805094 -0.042101894
-v 0.9716103 0.35909116 -0.03284274
-v 0.94617313 0.35348022 -0.04881463
-v 0.96046805 0.35184133 -0.047276605
-v 0.9605144 0.34570026 -0.040812675
-v 0.9436796 0.34594512 -0.04097967
-v 0.9609537 0.35951293 -0.04327065
-v 0.9435951 0.36342895 -0.04395672
-v 0.9452287 0.36515224 -0.033173475
-v 0.9621813 0.36097896 -0.033528414
-v 0.9437177 0.3472625 -0.030615637
-v 0.9612106 0.34716213 -0.030401032
-v 0.96134925 0.35514295 -0.026397021
-v 0.94755834 0.35623956 -0.025741305
-v 0.9728757 0.3535565 -0.026496645
-v 0.9236838 0.34501743 -0.04174493
-v 0.92499053 0.34676445 -0.02982189
-v 0.8985102 0.3400489 -0.04744674
-v 0.92002 0.35379338 -0.04960183
-v 0.9266239 0.3642565 -0.03267527
-v 0.9259744 0.3625213 -0.044729717
-v 0.9595719 0.3322568 -0.066527836
-v 0.96824694 0.32874632 -0.06456687
-v 0.9690804 0.3309673 -0.05660491
-v 0.96093255 0.33401608 -0.056737863
-v 0.9647815 0.34116948 -0.06900029
-v 0.97115964 0.33816123 -0.067894176
-v 0.9695626 0.3322127 -0.07017064
-v 0.9605691 0.33582342 -0.07243631
-v 0.9758966 0.32994318 -0.057222184
-v 0.9800619 0.33072257 -0.05938553
-v 0.9801991 0.33292258 -0.05722734
-v 0.97740275 0.33474648 -0.055050146
-v 0.97952265 0.3312527 -0.06656342
-v 0.98066497 0.33317244 -0.06435711
-v 0.97947264 0.32960188 -0.063947655
-v 0.980946 0.3343767 -0.059806764
-v 0.9710569 0.33699238 -0.054236565
-v 0.97821206 0.33771455 -0.059839655
-v 0.97241867 0.34020567 -0.060479738
-v 0.96619123 0.34341478 -0.060343534
-v 0.9610063 0.34575617 -0.060493153
-v 0.9621489 0.3409804 -0.05382001
-v 0.9373828 0.3431816 -0.07512873
-v 0.9507002 0.3384782 -0.072947174
-v 0.9502514 0.33369052 -0.065946825
-v 0.9386178 0.33678746 -0.06468784
-v 0.9596755 0.34357536 -0.06930123
-v 0.95208806 0.34592092 -0.07031494
-v 0.95360214 0.34841907 -0.06148619
-v 0.9513433 0.33625722 -0.05636194
-v 0.95247346 0.34412158 -0.053901106
-v 0.91308546 0.3452785 -0.07420103
-v 0.91723204 0.3375826 -0.06543267
-v 0.92920166 0.33684373 -0.066196665
-v 0.8954432 0.3506285 -0.07512222
-v 0.93108255 0.3385346 -0.056455255
-v 0.91820174 0.3408321 -0.054808166
-v 0.939113 0.34768033 -0.053170998
-v 0.9404044 0.3396995 -0.056141783
-v 0.9179872 0.3549261 -0.07177686
-v 0.899732 0.35713935 -0.07291563
-v 0.91934556 0.35811126 -0.060743105
-v 0.9358203 0.35279727 -0.07036695
-v 0.9375789 0.35508668 -0.060677245
-v 0.9160136 0.35121894 -0.051807627
-v 0.9563123 0.31230295 -0.08752819
-v 0.95762247 0.31389737 -0.08591534
-v 0.9560021 0.3112905 -0.0850695
-v 0.95824766 0.31535518 -0.08218573
-v 0.95748943 0.3146323 -0.079778105
-v 0.9568266 0.31262803 -0.0813239
-v 0.95579815 0.31647122 -0.08833016
-v 0.9569516 0.31863177 -0.08263066
-v 0.9458011 0.32374895 -0.09102741
-v 0.9418 0.32645607 -0.09146531
-v 0.94338876 0.3288499 -0.084545195
-v 0.9475297 0.32625926 -0.084078684
-v 0.94378406 0.32521963 -0.07757917
-v 0.92221576 0.32990718 -0.09517307
-v 0.932411 0.32365763 -0.09334534
-v 0.93170613 0.32032382 -0.08654242
-v 0.92304265 0.32515574 -0.08548487
-v 0.9396709 0.3166002 -0.08641887
-v 0.9407949 0.3192228 -0.07959706
-v 0.9335508 0.32338822 -0.078460716
-v 0.9358235 0.33034098 -0.07734397
-v 0.90412915 0.32754552 -0.08355652
-v 0.90182483 0.33387148 -0.092074685
-v 0.9177549 0.3282324 -0.07689076
-v 0.9060528 0.33036125 -0.076199524
-v 0.91513133 0.32586265 -0.08558826
-v 0.9254921 0.32834888 -0.07819366
-v 0.92578006 0.33622527 -0.076467216
-v 0.9055205 0.34045458 -0.07470884
-v 0.91007525 0.3460816 -0.08175569
-v 0.8958262 0.3519379 -0.08239596
-v 0.8319781 0.36792755 -0.019020472
-v 0.82811385 0.34757972 0.0101247905
-v 0.84865224 0.3443464 0.015379175
-v 0.8665378 0.36748576 -0.01570245
-v 0.8719487 0.34086812 0.016183952
-v 0.8804989 0.3349718 0.014113011
-v 0.8077486 0.3494475 6.1290705E-4
-v 0.8105345 0.36478674 -0.029292936
-v 0.8054355 0.3339398 0.0036820448
-v 0.8249258 0.3362931 0.02251263
-v 0.8343553 0.36757827 -0.054724846
-v 0.8106584 0.36062956 -0.062022083
-v 0.86769336 0.36557388 -0.0556089
-v 0.82386243 0.34798157 -0.08036312
-v 0.86053824 0.34909022 -0.08747031
-v 0.8056207 0.32862175 -0.07624337
-v 0.8057305 0.34627855 -0.07623357
-v 0.81958395 0.32310307 -0.0861361
-v 0.8619038 0.32684255 -0.092265725
-v 0.815966 0.31103337 -0.07075014
-v 0.8659372 0.3158574 -0.07701693
-v 0.84464514 0.31271267 -0.04656852
-v 0.8155225 0.31038308 -0.04693032
-v 0.87138647 0.3180225 -0.05676552
-v 0.88777244 0.3118943 0.029105747
-v 0.88652873 0.32119226 0.03798921
-v 0.8996936 0.31767666 0.045091797
-v 0.900245 0.3091054 0.036225636
-v 0.9133767 0.3129294 0.051114142
-v 0.91316384 0.30575597 0.043845233
-v 0.8973409 0.2970158 0.038636714
-v 0.9105428 0.29533684 0.046047106
-v 0.89202493 0.31448352 0.05468025
-v 0.88290834 0.31767285 0.05046501
-v 0.88468075 0.29854608 0.031636726
-v 0.87544215 0.3173889 0.019725388
-v 0.87039876 0.3313378 0.0329503
-v 0.9231733 0.30931067 0.057852387
-v 0.9233508 0.3033018 0.052290875
-v 0.92110866 0.294433 0.054045964
-v 0.9101127 0.30993307 0.060133055
-v 0.9187619 0.29154527 0.061375216
-v 0.90765303 0.2922039 0.055713523
-v 0.89286184 0.29387093 0.04926467
-v 0.8808161 0.30486417 0.053850044
-v 0.89032775 0.3034302 0.0570125
-v 0.8567116 0.3248465 0.04230122
-v 0.86643445 0.32188213 0.046990544
-v 0.8612647 0.33486342 0.026623407
-v 0.8788696 0.29498756 0.042516578
-v 0.8706334 0.29619646 0.02047212
-v 0.8550817 0.30703712 0.045122545
-v 0.8639789 0.30673194 0.049188964
-v 0.9266673 0.30542254 0.061761975
-v 0.9272366 0.30206454 0.05913998
-v 0.9260227 0.29621243 0.060372975
-v 0.92077184 0.30642664 0.065159105
-v 0.92408425 0.29358566 0.06301917
-v 0.90837437 0.3001207 0.06280659
-v 0.9244176 0.2966944 0.06602868
-v 0.918604 0.29753792 0.06693478
-v 0.8618565 0.2946862 0.034760933
-v 0.8422625 0.30945086 0.035775237
-v 0.84571636 0.33181906 0.035088096
-v 0.9260584 0.30245423 0.065053254
-v 0.8486941 0.29682314 0.024055928
-v 0.8811316 0.3236493 0.0045528426
-v 0.82664114 0.3016218 0.0047357865
-v 0.82410085 0.31595242 0.02447018
-v 0.8040215 0.32159245 -0.003613406
-v 0.8113685 0.31025457 -0.028450586
-v 0.83876777 0.31143916 -0.030336399
-v 0.8356043 0.30372775 -0.011328386
-v 0.8585638 0.29749787 0.009457646
-v 0.87683207 0.3201872 -0.036513757
-v 0.8814112 0.32009864 -0.009414797
-v 0.9428141 0.3506081 -0.07085044
-v 0.956094 0.35575354 -0.010658069
-v 0.8038189 0.3178252 -0.06595353
-v 0.8004514 0.31487334 -0.044231154
-v 0.80095047 0.31723523 -0.023096059
-v 0.8956128 0.33280694 -0.050966945
-v 0.8922281 0.34722638 -0.091604136
-v 0.9879551 0.3438244 -0.038878378
-v 0.98852766 0.34766388 -0.043440938
-v 0.9752496 0.32809567 -0.06416651
-v 0.97603863 0.33106804 -0.06896065
-v 0.97749674 0.33589578 -0.06678969
-v 0.94499034 0.3529662 -0.06105285
-v 0.9463207 0.3133428 -0.08529994
-v 0.9401753 0.31946433 -0.09238273
-v 0.94786114 0.3152871 -0.09065109
-v 0.95256245 0.3109212 -0.085013755
-v 0.9536156 0.31260002 -0.089524426
-v 0.9536712 0.31311417 -0.07932338
-v 0.9477011 0.31588948 -0.07884426
-v 0.9504476 0.32008207 -0.089578226
-v 0.9558828 0.31696165 -0.07812542
-v 0.9504903 0.32072496 -0.077723466
-v 0.952127 0.32232678 -0.08351394
-v 0.9348291 0.33020055 -0.09214
-v 0.9282263 0.33557117 -0.09315156
-v 0.92228365 0.338547 -0.092418514
-v 0.9245609 0.34202945 -0.084105946
-v 0.930543 0.33885682 -0.08476321
-v 0.9370206 0.3330121 -0.0847638
-v 0.9077168 0.34217346 -0.091473125
-v 0.7951476 0.34637845 -0.07065361
-v 0.79806584 0.35893476 -0.060508423
-v 0.7932355 0.31917584 -0.057675596
-v 0.7930932 0.33017433 -0.06765505
-v 0.79505944 0.3140707 -0.043553337
-v 0.7989401 0.31794143 -0.024340836
-v 0.8003401 0.3298812 -0.007475736
-v 0.80120367 0.36336315 -0.03525132
-v 0.8023059 0.3504728 -0.008895326
-v 0.14663948 0.20128214 -0.11484065
-v 0.13667002 0.28571343 -0.15039565
-v 0.1841775 0.2870865 -0.13093005
-v 0.19405353 0.25137627 -0.10907548
-v 0.206811 0.418311 -0.042091418
-v 0.14296053 0.428442 -0.04640176
-v 0.19373874 0.21091366 -0.0040366645
-v 0.19560908 0.25875056 -0.019158147
-v 0.12767161 0.37587714 -0.14110643
-v 0.18414298 0.38131726 -0.12812714
-v 0.18381852 -0.050536394 0.009508589
-v 0.0 -0.05491233 -0.115862206
-v 0.059705157 -0.054704905 -0.118471384
-v 0.19603644 -0.02698648 0.0088621965
-v 0.0 -0.017378211 -0.13065569
-v 0.073632285 -0.018264294 -0.12126629
-v 0.18258934 0.11511946 0.007871182
-v 0.0 0.20027399 -0.13959597
-v 0.07221302 0.19994855 -0.13612822
-v 0.06776722 0.10705435 -0.10175812
-v 0.0 0.10945618 -0.10516915
-v 0.0 0.28104222 -0.15347306
-v 0.08014542 0.28501856 -0.15199505
-v 0.12020045 -0.054374337 -0.076933324
-v 0.14704235 -0.020776153 -0.08383488
-v 0.13445891 0.10359609 -0.07682406
-v -1.7715109E-4 0.37028635 -0.1443391
-v 0.07333896 0.3727485 -0.15488055
-v 0.05014261 0.4445908 -0.088092424
-v 0.10594631 0.44244158 -0.054119635
-v 0.068250224 0.42158532 -0.12058137
-v 0.0 0.4480852 -0.09441542
-v 0.0 0.41980195 -0.12952165
-v 0.0655296 0.47555304 -0.04435982
-v 0.035067108 0.4818213 -0.06409425
-v 0.0 0.48290634 -0.073304884
-v 0.13713408 0.39863813 0.0063981107
-v 0.19555137 0.38189864 0.021300543
-v 0.15445615 0.21505475 0.08783695
-v 0.19542733 0.30313313 0.064307906
-v 0.146722 0.37339818 0.047608495
-v 0.05212646 -0.05438721 0.13259849
-v 0.12145487 -0.053924084 0.09370265
-v 0.07494122 -0.036236405 0.15432137
-v 0.14942618 -0.033704877 0.11248944
-v 0.0 -0.036518693 0.165503
-v 0.07494725 0.11480224 0.14040777
-v 0.0 0.1148746 0.1464978
-v 0.14457299 0.114842415 0.08122519
-v 0.15599976 0.3018558 0.09456842
-v 0.091305815 0.31152773 0.12105704
-v 0.08888962 0.2155248 0.1391294
-v 0.0 -0.054356456 0.14255272
-v 0.0 0.30056667 0.12813471
-v 0.0 0.21515512 0.14999108
-v 0.09372126 0.38314605 0.066976406
-v 0.09316283 0.4091586 0.034894835
-v 0.0 0.4205624 0.058180068
-v 0.026291404 0.42245793 0.061509557
-v 0.034761447 0.44539022 0.04627528
-v 0.0 0.4448533 0.05337513
-v 0.10085671 0.43159914 -0.015597748
-v 0.066586435 0.4607178 -0.009893759
-v 0.060958624 0.44494092 0.03699962
-v 0.020551432 0.44479203 0.051682252
-v 0.05950523 0.37566042 0.088209264
-v 0.23412201 0.31405008 0.03577845
-v 0.23382778 0.27389276 -0.03675637
-v 0.28790414 0.28155613 -0.061440483
-v 0.29043669 0.32595015 0.027207155
-v 0.2917303 0.37937796 0.029337332
-v 0.22730592 0.37744725 0.018493224
-v 0.3609575 0.2761023 -0.0669088
-v 0.35980988 0.31615508 0.0072958875
-v 0.29035017 0.2951628 -0.1124033
-v 0.28537223 0.37255108 -0.12743223
-v 0.36214843 0.37077188 -0.117408246
-v 0.36180398 0.28562927 -0.11567765
-v 0.28641945 0.40768445 -0.05827684
-v 0.3589704 0.40355074 -0.06856687
-v 0.35850146 0.37859607 0.013557554
-v 0.4448018 0.2947029 -0.049217932
-v 0.4377172 0.31958485 0.016193515
-v 0.45453218 0.37494862 -0.10058583
-v 0.4546281 0.3077588 -0.09992009
-v 0.44483072 0.38664186 -0.046192553
-v 0.43775564 0.3761902 0.015704632
-v 0.4769265 0.2901839 -0.036414884
-v 0.47576973 0.32481015 0.006437071
-v 0.47018954 0.3625332 -0.09550547
-v 0.47015417 0.29940164 -0.088269494
-v 0.47710633 0.39116716 -0.03538023
-v 0.47534418 0.3767078 0.006284956
-v 0.53369135 0.28789854 -0.038550496
-v 0.5361322 0.3154075 0.013435075
-v 0.530406 0.37186778 -0.10441254
-v 0.5307219 0.29109955 -0.10439611
-v 0.5333736 0.3942598 -0.04504014
-v 0.53590506 0.38275254 0.009884079
-v 0.6180758 0.28880596 -0.04160206
-v 0.61888266 0.3190627 0.014404823
-v 0.6175621 0.36431265 -0.0989814
-v 0.61748856 0.30837464 -0.09774888
-v 0.61845785 0.3903519 -0.044696867
-v 0.6188105 0.37708938 0.009582506
-v 0.74124557 0.32571948 -0.07771613
-v 0.74165046 0.3430872 -0.08345007
-v 0.74256694 0.37332892 -0.039035372
-v 0.74228543 0.36694968 -0.070325494
-v 0.7420282 0.33475614 0.0036314584
-v 0.74267435 0.36448538 -0.0023742213
-v 0.741657 0.32104266 -0.0075092223
-v 0.2268049 0.29074597 -0.11063238
-v 0.21255544 0.41613793 -0.043619398
-v 0.21661255 0.38801515 -0.12516825
-v 0.7950507 0.3249178 -0.07231697
-v 0.79780954 0.34730303 -0.08012411
-v 0.79357725 0.3101145 -0.061875843
-v 0.79381853 0.30550838 -0.04463783
-v 0.7969477 0.3142078 -0.021082846
-v 0.79896283 0.33161688 0.0029006358
-v 0.8026539 0.35806167 -0.0019340218
-v 0.804427 0.37387288 -0.030896064
-v 0.8019817 0.36666524 -0.06507246
-v 0.74100167 0.31192923 -0.038648497
-v 0.61751705 0.3300619 -0.11422024
-v 0.5305741 0.32887876 -0.12039728
-v 0.46732578 0.3276453 -0.10890991
-v 0.45458966 0.33447266 -0.11530203
-v 0.3619777 0.32857215 -0.13254401
-v 0.28801343 0.32567883 -0.13626479
-v 0.21173564 0.32213795 -0.1331754
-v 0.17081179 0.31816256 -0.1403787
-v 0.6188586 0.33844578 0.02341739
-v 0.53603673 0.34372878 0.02256512
-v 0.47558373 0.34749246 0.016993968
-v 0.43773612 0.35146642 0.025959518
-v 0.3591739 0.34650528 0.020962827
-v 0.29092276 0.3460263 0.039299928
-v 0.23118103 0.34170747 0.03894364
-v 0.13582708 -1.178554 -0.048439417
-v 0.07884644 -1.1777468 -0.027128834
-v 0.084609784 -1.1627905 -0.027657073
-v 0.13578542 -1.1627632 -0.04060692
-v 0.10955932 -1.16236 0.07368283
-v 0.07574211 -1.1628261 0.037324525
-v 0.168759 -1.1627905 0.007873325
-v 0.16077599 -1.162662 0.04601429
-v 0.056849353 -0.1415304 0.15652785
-v 0.05622351 -0.23773491 0.12233991
-v 0.13249937 -0.14380455 0.13296993
-v 0.019659923 -0.3156253 0.017998552
-v 0.19879793 -0.10859704 0.032864403
-v 0.011910624 -0.3714407 0.031852204
-v 0.067669615 -0.35195887 0.122716144
-v 0.1484275 -0.24146116 0.14447689
-v 0.1451991 -0.3344255 0.15002467
-v 0.020637965 -0.52708703 0.04773629
-v 0.02693621 -0.6322662 0.04110671
-v 0.075...
[truncated message content] |
|
From: <tre...@us...> - 2008-02-06 17:30:30
|
Revision: 715
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=715&view=rev
Author: trevorolio
Date: 2008-02-06 09:30:33 -0800 (Wed, 06 Feb 2008)
Log Message:
-----------
Switched over to naked Joe model in preparation for attachments. Added the ability for attachments to include body images which are baked onto the base skin image.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Template.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DAttachment.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Template.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Template.java 2008-02-06 01:26:13 UTC (rev 714)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Template.java 2008-02-06 17:30:33 UTC (rev 715)
@@ -13,6 +13,8 @@
limitations under the License. */
package com.ogoglio.client.model;
+import java.util.Vector;
+
import javax.vecmath.Point3d;
import javax.vecmath.Quat4d;
@@ -35,6 +37,8 @@
private Quat4d seatRotation = new Quat4d();
+ Vector resourceNames = new Vector();
+
public Template(long templateID, String ownerUsername, String displayName, boolean isASeat, Point3d seatPosition, Quat4d seatRotation) {
ArgumentUtils.assertNotNegative(templateID);
this.templateID = templateID;
@@ -49,8 +53,16 @@
public Template(TemplateDocument templateDoc) {
this(templateDoc.getTemplateID(), templateDoc.getOwnerUsername(), templateDoc.getDisplayName(), templateDoc.isSeat(), templateDoc.getSeatPosition(), templateDoc.getSeatRotation());
+ String[] fileNames = templateDoc.getAllSupportFileNames();
+ for (int i = 0; i < fileNames.length; i++) {
+ resourceNames.add(fileNames[i]);
+ }
}
+ public String[] getResourceNames(){
+ return (String[])resourceNames.toArray(new String[0]);
+ }
+
public long getTemplateID() {
return templateID;
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DAttachment.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DAttachment.java 2008-02-06 01:26:13 UTC (rev 714)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DAttachment.java 2008-02-06 17:30:33 UTC (rev 715)
@@ -1,7 +1,11 @@
package com.ogoglio.viewer.j3d;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.Vector;
+import javax.imageio.ImageIO;
import javax.media.j3d.Appearance;
import javax.media.j3d.Geometry;
import javax.media.j3d.Shape3D;
@@ -21,6 +25,8 @@
private Skeleton skeleton = null;
+ private BufferedImage bodyImage = null;
+
public J3DAttachment(Attachment attachment, J3DDataManager dataManager) {
this.attachment = attachment;
@@ -51,6 +57,24 @@
boneAttachment.setUserData(shapeNames[j]);
skeletonAttachments.add(boneAttachment);
}
+ String[] resourceNames = attachment.getTemplate().getResourceNames();
+ String bodyImageName = null;
+ for (int i = 0; i < resourceNames.length; i++) {
+ if(resourceNames[i].equals("body.jpg") || resourceNames[i].equals("body.gif")){
+ bodyImageName = resourceNames[i];
+ break;
+ }
+ }
+ if(bodyImageName != null){
+ InputStream bodyImageStream = dataManager.getTemplateResource(attachment.getTemplate().getOwnerUsername(), attachment.getTemplate().getTemplateID(), bodyImageName);
+ if(bodyImageStream != null){
+ try {
+ bodyImage = ImageIO.read(bodyImageStream);
+ } catch (IOException e) {
+ Log.debug("Could not read body image: " + attachment.getTemplate().getTemplateID() + ", " + bodyImageName);
+ }
+ }
+ }
}
public Attachment getAttachment(){
@@ -99,4 +123,8 @@
bone.addAttachment(sAttachments[i]);
}
}
+
+ public BufferedImage getBodyImage() {
+ return bodyImage;
+ }
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2008-02-06 01:26:13 UTC (rev 714)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2008-02-06 17:30:33 UTC (rev 715)
@@ -563,6 +563,10 @@
return objs;
}
+ public InputStream getTemplateResource(String ownerUsername, long templateID, String resourceName) {
+ return templateDataProvider.getTemplateResource(ownerUsername, templateID, resourceName);
+ }
+
private long getHeapRemaining() {
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
return memoryBean.getHeapMemoryUsage().getMax() - memoryBean.getHeapMemoryUsage().getUsed();
@@ -597,4 +601,5 @@
public void cleanup() {
dataCache.cleanup();
}
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2008-02-06 01:26:13 UTC (rev 714)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2008-02-06 17:30:33 UTC (rev 715)
@@ -320,5 +320,10 @@
}
attachments.add(attachment);
attachment.attach(skeleton);
+
+ BufferedImage bodyImage = attachment.getBodyImage();
+ if(bodyImage != null){
+ skin.addDecal(bodyImage);
+ }
}
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java 2008-02-06 01:26:13 UTC (rev 714)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java 2008-02-06 17:30:33 UTC (rev 715)
@@ -63,6 +63,8 @@
private J3DUserRenderable userRenderable = null;
+ private Vector decals = new Vector(); // list of BufferedImage
+
public Skin(BufferedImage baseImage, MorphDeltaMap[] morphDeltaMaps, BodyConfiguration bodyConfiguration, J3DUserRenderable userRenderable) {
setCapability(Skin.ALLOW_APPEARANCE_WRITE);
setCapability(Skin.ALLOW_PICKABLE_READ);
@@ -116,7 +118,10 @@
Graphics g = imageComp.getImage().getGraphics();
g.drawImage(baseImage, 0, 0, null);
- //TODO this is where we'd draw on the decals
+ BufferedImage[] decalBIs = getDecals();
+ for (int i = 0; i < decalBIs.length; i++) {
+ g.drawImage(decalBIs[i], 0, 0, null);
+ }
}
}
@@ -332,4 +337,18 @@
return (float) (upper.y - lower.y);
}
+ public BufferedImage[] getDecals(){
+ return (BufferedImage[])decals.toArray(new BufferedImage[0]);
+ }
+
+ public void addDecal(BufferedImage decal) {
+ decals.add(decal);
+ updateTexture();
+ }
+
+ public void removeDecal(BufferedImage decal){
+ if(decals.remove(decal)){
+ updateTexture();
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 01:26:09
|
Revision: 714
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=714&view=rev
Author: trevorolio
Date: 2008-02-05 17:26:13 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
A scaled and positioned Joe obj, since we are not doing that on the fly anymore.
Modified Paths:
--------------
maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.obj
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.obj
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.obj 2008-02-06 01:21:04 UTC (rev 713)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-joe/src/main/resources/geometry/body.obj 2008-02-06 01:26:13 UTC (rev 714)
@@ -1,9796 +1,9594 @@
-# This file uses meters as units for non-parametric coordinates.
-
-g head
-v 2.229578 47.408833 0.544987
-v 2.151879 46.595985 0.481358
-v 1.963933 46.509457 0.550757
-v 2.026793 47.399437 0.607751
-v -1.983922 46.534969 0.582635
-v -2.151881 46.595985 0.481356
-v -2.135983 47.164112 -0.093246
-v -2.140785 46.581020 0.096374
-v -2.009771 47.857117 1.110662
-v -1.939707 48.272621 1.081164
-v -0.958197 49.103905 2.128074
-v -1.616531 48.916634 1.521698
-v -2.065990 48.609177 1.156128
-v -2.027184 48.248047 1.046416
-v -1.134544 49.378551 2.744006
-v 0.053130 49.627922 2.997210
-v -1.692108 49.315617 2.027023
-v -2.241757 48.121593 -0.536470
-v -1.003087 49.866329 2.305142
-v -0.234297 49.922207 2.363392
-v -1.241015 49.748959 1.190791
-v -1.596077 49.843903 -0.664039
-v -1.700072 48.413857 -1.804318
-v -1.686346 49.221947 -1.533440
-v -0.331924 50.036942 1.203805
-v -0.570699 50.242580 0.799558
-v -0.683448 50.084328 -0.976845
-v -0.781991 49.568947 -1.914188
-v -1.760214 48.568985 1.119542
-v -2.084579 47.879669 1.044847
-v -2.190973 48.580238 -0.257341
-v -2.010256 49.121601 0.180326
-v -1.433055 49.579853 1.613121
-v -2.016507 46.477795 0.166683
-v 2.109545 48.609177 1.156130
-v -0.274403 49.087944 2.338104
-v 2.070739 48.248047 1.046418
-v 0.478583 46.042934 -2.328782
-v 1.750456 49.507912 2.717347
-v 0.527467 49.476738 2.727142
-v 1.800994 49.315617 2.027024
-v 2.285312 48.121593 -0.536470
-v 1.116435 49.864288 2.191893
-v 0.234295 49.922215 2.363394
-v 1.241016 49.748962 1.190791
-v 1.596078 49.843903 -0.664039
-v 1.231127 45.976822 -1.882442
-v 1.507489 46.844715 -1.845137
-v 1.681017 47.221699 -1.981248
-v 1.869691 47.907509 -1.665411
-v 1.732739 48.413864 -1.804318
-v 1.719012 49.221947 -1.533440
-v 0.331925 50.036942 1.203805
-v 0.570700 50.242584 0.799558
-v 0.683448 50.084328 -0.976845
-v 0.781991 49.568954 -1.914188
-v 0.781371 48.661777 -2.490138
-v 0.737230 48.086197 -2.331638
-v 0.738493 47.380333 -2.610363
-v 0.730533 46.836723 -2.444194
-v -0.478584 46.042934 -2.328781
-v -1.231127 45.976822 -1.882438
-v -1.507488 46.844715 -1.845133
-v -1.681017 47.221699 -1.981246
-v -1.827403 47.899082 -1.741558
-v -0.781370 48.661777 -2.490139
-v -0.737230 48.086193 -2.331639
-v -0.738493 47.380333 -2.610361
-v -0.730533 46.836723 -2.444192
-v 2.128134 47.879673 1.044846
-v 2.234528 48.580231 -0.257339
-v 2.053810 49.121597 0.180327
-v 1.519355 49.358841 1.746655
-v -1.145853 45.598186 -1.715362
-v -0.482844 45.480621 -2.028027
-v 0.512884 45.493225 -2.032611
-v 1.164510 45.559925 -1.707052
-v 1.690148 46.117744 -1.000154
-v -1.790012 46.140903 -1.172912
-v 2.158121 46.439999 0.096374
-v 2.158116 46.581020 0.096374
-v 0.504351 45.411705 -1.686179
-v 0.004074 45.513222 -1.760866
-v 0.274403 49.087944 2.338104
-v 0.958197 49.103905 2.128074
-v 1.616531 48.916634 1.521698
-v 2.153314 47.164112 -0.093246
-v 2.164135 47.182854 -0.563647
-v 2.114671 46.949482 -0.854235
-v 2.025996 46.464268 -0.650141
-v 1.145424 45.650482 -1.382049
-v -2.114671 46.949482 -0.854233
-v -2.164134 47.182850 -0.563647
-v -2.025996 46.464268 -0.650139
-v -0.496203 45.475483 -1.686177
-v -1.145424 45.650482 -1.382049
-v 1.803768 48.568977 1.119543
-v 1.983262 48.272621 1.081166
-v 2.053326 47.857128 1.110663
-v -1.677706 46.100708 -0.917081
-v 1.686700 46.083015 -0.893901
-v -2.207802 47.408833 0.544986
-v -2.005016 47.399437 0.607749
-v 1.232079 47.590939 1.983361
-v 0.695283 47.590939 1.983360
-v 0.426884 47.126072 1.983360
-v 0.695282 46.661186 1.983360
-v 1.232079 46.661186 1.983361
-v 1.500477 47.126060 1.983361
-v 1.196120 47.528664 2.251759
-v 0.731241 47.528664 2.251759
-v 0.498801 47.126064 2.251759
-v 0.731241 46.723469 2.251759
-v 1.196120 46.723469 2.251759
-v 1.428560 47.126064 2.251759
-v 1.097880 47.358505 2.448240
-v 0.829482 47.358505 2.448240
-v 0.695282 47.126064 2.448240
-v 0.829481 46.893627 2.448240
-v 1.097880 46.893627 2.448240
-v 1.232079 47.126064 2.448240
-v 0.963681 47.126064 2.520157
-g lFoot
-v 2.000914 -0.156732 -0.692521
-v 3.538268 -0.157166 -1.604111
-v 3.533363 -0.155486 1.126372
-v 2.349255 -0.124761 1.104503
-v 4.666467 -0.156021 -0.219715
-v 4.524517 -0.156519 1.148519
-g lShin
-v 1.780033 2.352432 1.197047
-g lFoot
-v 2.704075 2.371908 2.190153
-g lShin
-v 4.529926 2.333250 0.238002
-v 4.202401 2.368239 1.271237
-g lFoot
-v 3.467932 0.433162 -1.800813
-v 1.945671 0.432835 -0.691735
-v 2.057607 0.432647 1.164515
-v 4.827516 0.434301 -0.219348
-v 4.826715 0.433796 1.172152
-v 1.950409 1.491857 2.583506
-v 2.731179 1.891035 2.971670
-v 1.788877 0.433028 2.542792
-v 4.005583 1.663824 2.807094
-v 5.133864 0.433391 2.677601
-v 2.003450 -0.164859 2.644740
-v 3.588647 -0.165490 2.695850
-v 5.026330 -0.166362 2.660419
-v 1.935962 0.947422 4.144634
-v 2.756758 1.380232 4.148124
-v 1.609686 0.434475 4.148140
-v 4.146314 1.245509 4.148152
-v 5.208358 0.433741 4.148118
-v 1.727345 -0.154310 4.148145
-v 3.501550 -0.154607 4.148141
-v 5.011897 -0.156105 4.148116
-v 2.479248 0.434354 6.141821
-v 4.178009 0.420750 5.982884
-v 2.572377 -0.099310 5.754116
-v 4.242558 -0.099674 5.582878
-v 2.583907 0.947475 5.727399
-v 4.164911 0.947485 5.553321
-v 4.913669 0.947485 4.144623
-v 4.842485 0.947488 2.711042
-v 4.617343 0.947377 1.173513
-v 4.797491 0.945214 -0.246442
-g lShin
-v 3.445690 0.943576 -1.558365
-g lFoot
-v 1.950575 0.942248 -0.696201
-v 1.943165 0.943751 1.138749
-v 1.881775 0.947396 2.566207
-g lShin
-v 2.528166 0.936560 -1.478900
-g lFoot
-v 2.536835 0.426647 -1.597891
-v 2.599624 -0.163301 -1.499933
-v 4.402387 -0.140645 -1.274570
-v 4.445256 0.449677 -1.378348
-g lShin
-v 4.463875 0.960389 -1.243913
-v 2.761385 2.728987 1.857137
-v 1.909040 2.717237 0.940745
-v 2.132545 2.718132 -0.697082
-v 1.987283 2.341169 -0.683768
-v 3.422400 2.718821 -1.023475
-v 4.253482 2.718132 0.198443
-v 3.999379 2.308153 -0.928104
-v 4.052274 2.721373 1.159766
-v 2.707063 2.326791 -1.206661
-v 3.423450 2.320823 -1.220890
-g rFoot
-v -2.000914 -0.156732 -0.692521
-v -3.538268 -0.157166 -1.604111
-v -3.533363 -0.155486 1.126372
-v -2.349255 -0.124761 1.104503
-v -4.666467 -0.156021 -0.219715
-v -4.524517 -0.156519 1.148519
-g rShin
-v -1.780033 2.352432 1.197047
-g rFoot
-v -2.704075 2.371908 2.190153
-g rShin
-v -4.529926 2.333250 0.238002
-v -4.202401 2.368239 1.271237
-g rFoot
-v -3.467932 0.433162 -1.800813
-v -1.945671 0.432835 -0.691735
-v -2.057607 0.432647 1.164515
-v -4.827516 0.434301 -0.219348
-v -4.826715 0.433796 1.172152
-v -1.950409 1.491857 2.583506
-v -2.731179 1.891035 2.971670
-v -1.788877 0.433028 2.542792
-v -4.005583 1.663824 2.807094
-v -5.133864 0.433391 2.677601
-v -2.003450 -0.164859 2.644740
-v -3.588647 -0.165490 2.695850
-v -5.026330 -0.166362 2.660419
-v -1.935962 0.947422 4.144634
-v -2.756758 1.380232 4.148124
-v -1.609686 0.434475 4.148140
-v -4.146314 1.245509 4.148152
-v -5.208358 0.433741 4.148118
-v -1.727345 -0.154310 4.148145
-v -3.501550 -0.154607 4.148141
-v -5.011897 -0.156105 4.148116
-v -2.479248 0.434354 6.141821
-v -4.178009 0.420750 5.982884
-v -2.572377 -0.099310 5.754116
-v -4.242558 -0.099674 5.582878
-v -2.583907 0.947475 5.727399
-v -4.164911 0.947485 5.553321
-v -4.913669 0.947485 4.144623
-v -4.842485 0.947488 2.711042
-v -4.617343 0.947377 1.173513
-v -4.797491 0.945214 -0.246442
-g rShin
-v -3.445690 0.943576 -1.558365
-g rFoot
-v -1.950575 0.942248 -0.696201
-v -1.943165 0.943751 1.138749
-v -1.881775 0.947396 2.566207
-g rShin
-v -2.528166 0.936560 -1.478900
-g rFoot
-v -2.536835 0.426647 -1.597891
-v -2.599624 -0.163301 -1.499933
-v -4.402387 -0.140645 -1.274570
-v -4.445256 0.449677 -1.378348
-g rShin
-v -4.463875 0.960389 -1.243913
-v -2.761385 2.728987 1.857137
-v -1.909040 2.717237 0.940745
-v -2.132545 2.718132 -0.697082
-v -1.987283 2.341169 -0.683768
-v -3.422400 2.718821 -1.023475
-v -4.253482 2.718132 0.198443
-v -3.999379 2.308153 -0.928104
-v -4.052274 2.721373 1.159766
-v -2.707063 2.326791 -1.206661
-v -3.423450 2.320823 -1.220890
-g head
-v 2.083368 46.961929 -0.194926
-v 2.158116 46.581020 0.096374
-v 2.010687 46.949486 -0.854235
-v 2.060149 47.182865 -0.563647
-v 2.025998 46.464268 -0.650141
-v 1.686701 46.083015 -0.893902
-v -1.677706 46.100708 -0.917081
-v -2.140785 46.581020 0.096374
-v -2.135983 47.164112 -0.093246
-v -2.042818 47.182865 -0.563647
-v -1.993356 46.949486 -0.854235
-v -2.025998 46.464268 -0.650141
-v 2.026793 47.399437 0.607751
-v 1.983262 48.272621 1.081166
-v 2.043669 46.853294 0.515809
-v -2.009771 47.857128 1.110663
-v -2.005015 47.399437 0.607751
-v -1.939707 48.272621 1.081166
-v -2.043669 46.853294 0.515808
-v 2.049036 47.254524 0.351639
-v 2.073695 47.618393 0.349419
-v 0.958197 49.103905 2.128074
-v 0.274403 49.087944 2.338104
-v 1.616531 48.916634 1.521698
-v 1.803768 48.568977 1.119543
-v -0.274403 49.087944 2.338104
-v 2.068073 48.160736 0.596736
-v -2.073695 47.618404 0.349417
-v -2.049037 47.254524 0.351637
-v -0.958197 49.103905 2.128074
-v -1.616531 48.916634 1.521698
-v -1.760214 48.568977 1.119543
-v -2.068073 48.160740 0.596735
-v 0.000000 45.513222 -1.760866
-v 0.470560 46.206890 -1.965384
-v 0.342984 45.539375 -1.700528
-v 1.145424 45.650478 -1.382048
-v 0.908442 49.595829 1.494754
-v 0.397067 49.612541 1.659449
-v 1.505827 49.339352 0.704247
-v 1.818985 48.889732 0.271829
-v 2.048200 47.823788 -0.481870
-v 1.955463 48.359222 -0.261766
-v 0.691102 49.802086 0.880548
-v 0.230369 49.855675 0.909514
-v 1.220211 49.621075 0.051563
-v 1.569321 49.242237 -0.800517
-v 1.210489 46.174034 -1.535531
-v 1.482220 46.622749 -1.650855
-v 1.652839 47.116333 -1.745232
-v 1.755236 47.545307 -1.704576
-v 1.757223 48.122028 -1.579055
-v 1.743726 48.718857 -1.386882
-v 0.326360 49.887085 0.046525
-v 0.561133 49.733402 -0.723866
-v 0.671991 49.419418 -1.361541
-v 0.768882 48.918221 -1.978804
-v 0.768272 48.172291 -2.290875
-v 0.724872 47.667995 -2.351502
-v 0.726114 47.222912 -2.355072
-v 0.718287 46.733688 -2.279244
-v -0.470561 46.206890 -1.965383
-v -0.339985 45.539013 -1.701519
-v -1.145424 45.650478 -1.382049
-v -0.908443 49.595829 1.494754
-v -0.397067 49.612541 1.659450
-v -1.505827 49.339352 0.704248
-v -1.818985 48.889732 0.271829
-v -2.048200 47.823788 -0.481871
-v -1.955463 48.359219 -0.261767
-v -0.691103 49.802094 0.880548
-v -0.230369 49.855675 0.909514
-v -1.220212 49.621075 0.051562
-v -1.569321 49.242237 -0.800517
-v -1.210490 46.174034 -1.535531
-v -1.482220 46.622746 -1.650855
-v -1.652838 47.116333 -1.745231
-v -1.755235 47.545307 -1.704576
-v -1.757222 48.122028 -1.579056
-v -1.743727 48.718849 -1.386883
-v -0.326361 49.887085 0.046525
-v -0.561133 49.733402 -0.723866
-v -0.671991 49.419418 -1.361541
-v -0.768882 48.918221 -1.978804
-v -0.768271 48.172291 -2.290875
-v -0.724871 47.667992 -2.351501
-v -0.726113 47.222912 -2.355071
-v -0.718288 46.733688 -2.279244
-v -0.029926 46.206890 -1.965384
-v -0.041623 46.733685 -2.279243
-v -0.036128 47.222912 -2.355071
-v -0.041133 47.667992 -2.351501
-v -0.045738 48.172291 -2.290875
-v -0.048528 48.918221 -1.978804
-v -0.042947 49.419415 -1.361540
-v -0.033641 49.733402 -0.723865
-v -0.032826 49.887085 0.046525
-v -0.015759 49.855679 0.909513
-v -0.006032 49.612541 1.659449
-v -1.991911 46.106735 -0.510764
-v 1.991911 46.106735 -0.510764
-v 0.000000 49.087952 2.338104
-g neck
-v 1.046382 44.568630 -1.484752
-v 1.603683 44.360638 -0.785188
-v -1.046381 44.568630 -1.484752
-v -1.603683 44.360641 -0.785188
-v 1.195046 43.700237 0.837769
-v 0.849951 43.601475 1.108830
-v -1.195046 43.700237 0.837769
-v -0.434846 43.546337 1.273696
-v -0.849951 43.601479 1.108830
-g lHand
-v 22.667992 40.355671 -0.026342
-v 22.714848 40.380474 -0.417641
-v 23.218943 40.581524 -0.366251
-v 23.230192 40.582237 -0.044025
-v 23.159069 40.815887 -0.534041
-v 23.780064 40.837147 -0.460619
-v 23.797415 40.653706 -0.266611
-v 23.816217 40.669903 -0.031399
-v 23.762926 40.825100 0.127477
-v 23.163559 40.813957 0.118960
-v 22.707470 40.788448 0.159551
-v 22.787544 41.085472 -0.070690
-v 23.256865 41.062496 -0.027008
-v 23.248999 41.073532 -0.361073
-v 22.812971 41.133961 -0.394234
-v 23.692804 41.073227 -0.287585
-v 24.345922 40.795128 -0.404230
-v 24.592300 40.736008 -0.357338
-v 24.568420 40.597118 -0.253267
-v 24.350527 40.651581 -0.276921
-v 24.356047 40.645912 -0.020300
-v 24.571730 40.594078 -0.030744
-v 24.758533 40.737732 -0.314038
-v 24.745598 40.621006 -0.224894
-v 24.746933 40.614326 -0.032476
-v 24.761475 40.725277 0.071420
-v 24.592823 40.734989 0.089207
-v 24.358904 40.777515 0.112404
-v 24.840700 40.684380 -0.190079
-v 24.845089 40.679321 -0.063950
-v 24.605150 40.873589 -0.240906
-v 24.772068 40.848789 -0.210139
-v 24.297049 40.952450 -0.259302
-v 24.317406 40.939796 -0.025869
-v 24.619802 40.871662 -0.033088
-v 24.773607 40.843018 -0.017729
-v 24.845125 40.746338 -0.239173
-v 24.852194 40.796753 -0.163469
-v 24.844505 40.716476 0.011472
-v 24.849613 40.790577 -0.037953
-v 24.097946 40.818211 -0.408932
-v 24.103212 40.630116 -0.281026
-v 24.105680 40.625660 -0.022155
-v 24.113726 40.986469 -0.033112
-v 23.708807 41.064213 -0.025364
-v 24.093073 40.817104 0.111447
-v 22.383673 40.230145 -2.016736
-v 22.210474 40.166061 -1.976582
-v 22.163773 40.452656 -2.322802
-v 22.361734 40.512386 -2.320319
-v 22.436424 40.337955 -0.595139
-v 22.384336 40.272259 -1.146768
-v 22.683367 40.467842 -1.041378
-v 22.684141 40.447189 -0.715922
-v 22.373709 40.237431 -0.028334
-v 22.374535 40.532223 0.240312
-v 22.378319 40.887154 0.146601
-v 22.588161 41.070789 -0.055427
-v 22.419710 41.100250 -0.097408
-v 22.471073 41.175575 -0.580967
-v 22.626942 41.148335 -0.437107
-v 22.411001 41.164131 -1.338730
-v 22.652472 41.196018 -0.749622
-v 22.629221 41.193691 -1.166855
-v 22.852057 41.226288 -0.815652
-v 22.835087 41.190754 -1.130419
-v 22.316069 40.981506 -1.947166
-v 22.565434 41.138317 -1.477754
-v 22.497793 41.036274 -1.844913
-v 22.183302 40.798981 -2.276272
-v 22.445673 40.936661 -2.041213
-v 22.344126 40.823074 -2.274158
-v 22.794189 41.040829 -0.556304
-v 22.725634 40.556522 -0.562196
-v 23.233614 41.014099 -0.626507
-v 22.732103 41.025745 -1.293930
-v 22.739010 41.128700 -1.540252
-v 22.320982 40.206860 -1.622014
-v 22.540983 40.441925 -1.733550
-v 22.567539 40.367115 -1.571978
-v 22.481054 40.294933 -1.791507
-v 24.501625 40.867619 -1.173587
-v 24.726418 40.802620 -1.128103
-v 24.699135 40.686916 -0.993712
-v 24.482821 40.730747 -1.018924
-v 24.712069 40.718498 -0.769281
-v 24.508017 40.763344 -0.771605
-v 24.746086 40.873798 -0.677970
-v 24.910498 40.716885 -0.781560
-v 24.936323 40.838570 -0.697562
-v 25.032810 40.737354 -0.961492
-v 25.001053 40.779758 -1.061421
-v 25.054348 40.835442 -0.953971
-v 24.951475 40.935242 -0.812413
-v 24.940025 40.910427 -1.010887
-v 24.751209 40.953762 -1.038763
-v 24.776314 40.984135 -0.828902
-v 25.056950 40.850533 -0.829554
-v 25.040850 40.800724 -0.769187
-v 25.042969 40.751526 -0.836758
-v 24.463274 41.050140 -1.061156
-v 24.488926 41.076359 -0.827784
-v 23.847795 40.934940 -1.230347
-v 24.208092 40.893631 -1.191582
-v 24.209261 40.738850 -1.028662
-v 23.784946 40.745022 -1.032871
-v 24.220333 41.086990 -1.090614
-v 23.782818 41.185692 -1.107906
-v 23.823992 41.229126 -0.836120
-v 24.251274 41.123940 -0.845066
-v 23.785908 40.778225 -0.771651
-v 24.226807 40.775696 -0.766242
-v 24.230301 40.976849 -0.665323
-v 23.882710 41.004486 -0.648796
-v 24.520821 40.936863 -0.667834
-v 23.280964 40.721638 -1.052159
-v 23.313900 40.765671 -0.751645
-v 22.646477 40.596409 -1.195870
-v 23.188620 40.942833 -1.250188
-v 23.355066 41.206551 -0.823563
-v 23.338697 41.162815 -1.127389
-v 24.185505 40.400013 -1.676799
-v 24.404154 40.311535 -1.627374
-v 24.425161 40.367512 -1.426697
-v 24.219799 40.444355 -1.430048
-v 24.316811 40.624653 -1.739116
-v 24.477568 40.548832 -1.711237
-v 24.437315 40.398903 -1.768614
-v 24.210638 40.489910 -1.825719
-v 24.596960 40.341702 -1.442255
-v 24.701944 40.361343 -1.496781
-v 24.705402 40.416794 -1.442385
-v 24.634922 40.462765 -1.387510
-v 24.688353 40.374706 -1.677696
-v 24.717144 40.423092 -1.622087
-v 24.687092 40.333099 -1.611767
-v 24.724228 40.453445 -1.507398
-v 24.474977 40.519371 -1.367004
-v 24.655319 40.537575 -1.508227
-v 24.509300 40.600361 -1.524360
-v 24.352341 40.681244 -1.520927
-v 24.221657 40.740257 -1.524698
-v 24.250456 40.619888 -1.356505
-v 23.626240 40.675369 -1.893580
-v 23.961899 40.556820 -1.838595
-v 23.950586 40.436150 -1.662155
-v 23.657368 40.514206 -1.630423
-v 24.188116 40.685291 -1.746701
-v 23.996878 40.744411 -1.772251
-v 24.035040 40.807377 -1.549727
-v 23.978107 40.500843 -1.420573
-v 24.006592 40.699059 -1.358549
-v 23.013838 40.728218 -1.870198
-v 23.118351 40.534248 -1.649196
-v 23.420038 40.515625 -1.668452
-v 22.569174 40.863064 -1.893416
-v 23.467445 40.558243 -1.422925
-v 23.142792 40.616150 -1.381411
-v 23.669849 40.788757 -1.340147
-v 23.702398 40.587605 -1.415024
-v 23.137384 40.971382 -1.809098
-v 22.677271 41.027164 -1.837800
-v 23.171621 41.051662 -1.530998
-v 23.586857 40.917725 -1.773562
-v 23.631184 40.975430 -1.529338
-v 23.087641 40.877945 -1.305784
-v 24.103348 39.897087 -2.206102
-v 24.136370 39.937275 -2.165451
-v 24.095530 39.871571 -2.144132
-v 24.152128 39.974018 -2.071448
-v 24.133017 39.955799 -2.010765
-v 24.116312 39.905281 -2.049726
-v 24.090389 40.002148 -2.226315
-v 24.119461 40.056602 -2.082662
-v 23.838419 40.185577 -2.294298
-v 23.737574 40.253811 -2.305335
-v 23.777617 40.314144 -2.130917
-v 23.881987 40.248848 -2.119159
-v 23.787580 40.222645 -1.955342
-v 23.243963 40.340794 -2.398787
-v 23.500929 40.183277 -2.352720
-v 23.483162 40.099251 -2.181256
-v 23.264805 40.221035 -2.154601
-v 23.683910 40.005398 -2.178142
-v 23.712240 40.071499 -2.006202
-v 23.529655 40.176487 -1.977561
-v 23.586939 40.351727 -1.949414
-v 22.788099 40.281269 -2.105998
-v 22.730021 40.440712 -2.320694
-v 23.131529 40.298580 -1.937991
-v 22.836584 40.352238 -1.920569
-v 23.065403 40.238853 -2.157207
-v 23.326542 40.301517 -1.970830
-v 23.333799 40.500038 -1.927316
-v 22.823168 40.606636 -1.882997
-v 22.937967 40.748463 -2.060609
-v 22.578829 40.896065 -2.076747
-v 20.969570 41.299076 -0.479401
-v 20.872173 40.786221 0.255190
-v 21.389833 40.704727 0.387624
-v 21.840630 41.287941 -0.395772
-v 21.977009 40.617058 0.407908
-v 22.192511 40.468445 0.355711
-v 20.358879 40.833298 0.015448
-v 20.429094 41.219913 -0.738313
-v 20.300577 40.442432 0.092804
-v 20.791821 40.501747 0.567419
-v 21.029486 41.290272 -1.379311
-v 20.432219 41.115135 -1.563234
-v 21.869755 41.239754 -1.401593
-v 20.765018 40.796349 -2.025510
-v 21.689413 40.824291 -2.204643
-v 20.305244 40.308395 -1.921674
-v 20.308014 40.753426 -1.921427
-v 20.657183 40.169300 -2.171015
-v 21.723831 40.263550 -2.325509
-v 20.565994 39.865089 -1.783220
-v 21.825491 39.986675 -1.941171
-v 21.288836 39.907413 -1.173735
-v 20.554815 39.848698 -1.182854
-v 21.962837 40.041245 -1.430745
-v 22.375837 39.886787 0.733595
-v 22.344490 40.121140 0.957498
-v 22.676304 40.032528 1.136515
-v 22.690201 39.816494 0.913048
-v 23.021179 39.912876 1.288305
-v 23.015814 39.732075 1.105096
-v 22.617004 39.511784 0.973818
-v 22.949751 39.469467 1.160593
-v 22.483019 39.952049 1.378187
-v 22.253241 40.032433 1.271944
-v 22.297913 39.550354 0.797387
-v 22.065058 40.025276 0.497168
-v 21.937943 40.376850 0.830495
-v 23.268097 39.821671 1.458139
-v 23.272572 39.670219 1.317964
-v 23.216059 39.446686 1.362200
-v 22.938911 39.837357 1.515622
-v 23.156910 39.373901 1.546930
-v 22.876917 39.390503 1.404230
-v 22.504112 39.432518 1.241690
-v 22.200506 39.709599 1.357262
-v 22.440243 39.673454 1.436970
-v 21.592966 40.213242 1.066180
-v 21.838024 40.138527 1.184372
-v 21.707724 40.465714 0.671029
-v 22.151445 39.460663 1.071608
-v 21.943857 39.491131 0.515989
-v 21.551884 39.764366 1.137290
-v 21.776134 39.756672 1.239782
-v 23.356161 39.723671 1.556678
-v 23.370510 39.639034 1.490592
-v 23.339914 39.491535 1.521669
-v 23.207569 39.748978 1.642301
-v 23.291058 39.425327 1.588365
-v 22.895098 39.590042 1.583007
-v 23.299459 39.503681 1.664218
-v 23.152931 39.524944 1.687056
-v 21.722639 39.453068 0.876131
-v 21.228783 39.825203 0.901696
-v 21.315836 40.388981 0.884377
-v 23.340815 39.648857 1.639633
-v 21.390888 39.506927 0.606317
-v 22.208458 40.183067 0.114752
-v 20.835054 39.627876 0.119363
-v 20.771029 39.989071 0.616758
-v 20.264938 40.131226 -0.091074
-v 20.450117 39.845459 -0.717082
-v 21.140699 39.875317 -0.764613
-v 21.060966 39.680954 -0.285526
-v 21.639648 39.523933 0.238375
-v 22.100090 40.095806 -0.920310
-v 22.215506 40.093575 -0.237295
-v 23.763134 40.862549 -1.785748
-v 24.097847 40.992237 -0.268631
-v 20.259832 40.036274 -1.662324
-v 20.174955 39.961872 -1.114823
-v 20.187534 40.021404 -0.582124
-v 22.573448 40.413879 -1.284595
-v 22.488140 40.777313 -2.308834
-v 24.900888 40.691570 -0.979909
-v 24.915319 40.788342 -1.094906
-v 24.580652 40.295135 -1.617283
-v 24.600540 40.370052 -1.738117
-v 24.637291 40.491734 -1.683399
-v 23.817984 40.921982 -1.538805
-v 23.851515 39.923298 -2.149940
-v 23.696623 40.077587 -2.328458
-v 23.890341 39.972301 -2.284813
-v 24.008835 39.862263 -2.142727
-v 24.035379 39.904575 -2.256416
-v 24.036781 39.917534 -1.999304
-v 23.886307 39.987484 -1.987228
-v 23.955532 40.093155 -2.257772
-v 24.092522 40.014507 -1.969110
-v 23.956608 40.109360 -1.958979
-v 23.997860 40.149734 -2.104925
-v 23.561876 40.348186 -2.322340
-v 23.395454 40.483551 -2.347836
-v 23.245674 40.558556 -2.329360
-v 23.303070 40.646328 -2.119846
-v 23.453846 40.566364 -2.136412
-v 23.617111 40.419052 -2.136427
-v 22.878525 40.649960 -2.305532
-v 20.041277 40.755943 -1.780787
-v 20.114830 41.072418 -1.525083
-v 19.993082 40.070316 -1.453683
-v 19.989496 40.347527 -1.705210
-v 20.039055 39.941643 -1.097739
-v 20.136866 40.039204 -0.613498
-v 20.172152 40.340137 -0.188422
-v 20.193916 41.184032 -0.888491
-v 20.221697 40.859138 -0.224202
-g lCollar
-v 3.695971 37.098866 -2.894498
-v 3.444696 39.226913 -3.790643
-v 4.642097 39.261520 -3.300023
-v 4.891017 38.361462 -2.749190
-v 5.212562 42.568966 -1.060892
-v 3.603245 42.824310 -1.169532
-v 4.883083 37.341625 -0.101742
-v 4.930224 38.547329 -0.482871
-v 3.217896 41.499443 -3.556513
-v 4.641227 41.636559 -3.229377
-g hip
-v 4.633049 30.751913 0.239659
-g abdomen
-v 0.000000 30.641619 -2.920246
-v 1.504837 30.646847 -2.986009
-g hip
-v 4.940995 31.345476 0.223367
-g abdomen
-v 0.000000 31.587648 -3.293108
-v 1.855863 31.565315 -3.056453
-v 4.602068 34.927181 0.198389
-g chest
-v 0.000000 37.073456 -3.518443
-v 1.820091 37.065254 -3.431040
-g abdomen
-v 1.708037 34.723904 -2.564760
-v 0.000000 34.784443 -2.650733
-g chest
-v 0.000000 39.109177 -3.868208
-v 2.020023 39.209400 -3.830955
-g abdomen
-v 3.029589 30.655180 -1.939064
-v 3.706125 31.502005 -2.113014
-v 3.388966 34.636742 -1.936310
-g chest
-v -0.004465 41.358528 -3.637991
-v 1.848470 41.420586 -3.903683
-g neck
-v 1.263818 43.231335 -2.220323
-g lCollar
-v 2.670321 43.177162 -1.364057
-g chest
-v 1.720211 42.651493 -3.039190
-g neck
-v 0.000000 43.319408 -2.379691
-g chest
-v 0.000000 42.606544 -3.264525
-g neck
-v 1.651639 44.011719 -1.118066
-v 0.883848 44.169708 -1.615462
-v 0.000000 44.197056 -1.847611
-g lCollar
-v 3.456392 42.073120 0.161261
-v 4.928769 41.651211 0.536869
-v 3.892986 37.445999 2.213884
-v 4.925643 39.665966 1.620847
-v 3.698051 41.436962 1.199947
-g hip
-v 1.313820 30.654856 3.342075
-v 3.061206 30.666529 2.361726
-v 1.888854 31.112337 3.889589
-v 3.766208 31.176142 2.835237
-v 0.000000 31.105223 4.171416
-g abdomen
-v 1.889006 34.919186 3.538904
-v 0.000000 34.921009 3.692400
-v 3.643886 34.920200 2.047238
-g lCollar
-v 3.931892 39.633774 2.383547
-g chest
-v 2.301315 39.877548 3.051179
-v 2.240416 37.457844 3.506683
-g hip
-v 0.000000 30.655630 3.592966
-g chest
-v 0.000000 39.601280 3.229568
-v 0.000000 37.448528 3.780446
-g lCollar
-v 2.362195 41.682652 1.688105
-v 2.348120 42.338284 0.879506
-g chest
-v 0.000000 42.625710 1.466398
-v 0.662661 42.673485 1.550316
-g neck
-v 0.876144 43.251484 1.166344
-v 0.000000 43.237949 1.345292
-g lCollar
-v 2.542040 42.903885 -0.393133
-g neck
-v 1.678276 43.637806 -0.249367
-v 1.536430 43.240158 0.932556
-v 0.517988 43.236404 1.302624
-g chest
-v 1.499798 41.493980 2.223268
-g lShldr
-v 5.900922 39.941124 0.901777
-v 5.893506 38.928978 -0.926425
-v 7.256472 39.122131 -1.548575
-v 7.320304 40.241058 0.685742
-v 7.352909 41.587677 0.739432
-v 5.729126 41.539017 0.466112
-v 9.097744 38.984669 -1.686401
-v 9.068818 39.994179 0.183889
-v 7.318123 39.465080 -2.833066
-v 7.192657 41.415611 -3.211862
-v 9.127761 41.370766 -2.959213
-v 9.119079 39.224792 -2.915594
-v 7.219052 42.301128 -1.468837
-v 9.047660 42.196941 -1.728192
-v 9.035841 41.567970 0.341711
-v 11.210996 39.453487 -1.240512
-v 11.032432 40.080624 0.408149
-v 11.456244 41.476040 -2.535213
-v 11.458662 39.782555 -2.518433
-v 11.211724 41.770760 -1.164259
-v 11.033401 41.507332 0.395827
-g lForeArm
-v 12.020681 39.339588 -0.917818
-v 11.991526 40.212326 0.162243
-v 11.850880 41.163116 -2.407165
-g lShldr
-v 11.849988 39.571918 -2.224786
-g lForeArm
-v 12.025214 41.884819 -0.891740
-v 11.980800 41.520378 0.158409
-v 13.451409 39.281986 -0.971645
-v 13.512931 39.975338 0.338624
-v 13.368604 41.398388 -2.631663
-v 13.376566 39.362667 -2.631249
-v 13.443401 41.962769 -1.135213
-v 13.507205 41.672733 0.249123
-v 15.578275 39.304859 -1.048558
-v 15.598612 40.067463 0.363066
-v 15.565328 41.207966 -2.494774
-v 15.563474 39.798077 -2.463709
-v 15.587905 41.864269 -1.126561
-v 15.596792 41.529995 0.241522
-v 18.682705 40.235245 -1.958794
-v 18.692909 40.672989 -2.103315
-v 18.716009 41.435215 -0.983866
-v 18.708914 41.274429 -1.772517
-v 18.702429 40.463009 0.091529
-v 18.718716 41.212318 -0.059841
-v 18.693075 40.117367 -0.189266
-g lShldr
-v 5.716498 39.353756 -2.788431
-g lCollar
-v 5.357348 42.514194 -1.099404
-g lShldr
-v 5.459605 41.805374 -3.154800
-g lForeArm
-v 20.038834 40.215038 -1.822711
-v 20.108370 40.779247 -2.019486
-v 20.001698 39.841930 -1.559548
-v 20.007778 39.725834 -1.125073
-v 20.086647 39.945099 -0.531382
-v 20.137438 40.383884 0.073109
-v 20.230469 41.050411 -0.048746
-v 20.275160 41.448925 -0.778719
-v 20.213526 41.267262 -1.640117
-v 18.676558 39.887669 -0.974115
-v 15.564192 40.344692 -2.878861
-v 13.372841 40.314873 -3.034550
-v 11.778700 40.283783 -2.745017
-g lShldr
-v 11.457693 40.455864 -2.906127
-v 9.123457 40.307144 -3.340702
-v 7.259227 40.234219 -3.434482
-v 5.336685 40.144974 -3.356616
-g lCollar
-v 4.305221 40.044777 -3.538171
-g lForeArm
-v 15.598004 40.556004 0.590223
-v 13.510523 40.689159 0.568742
-v 11.986837 40.784019 0.428324
-g lShldr
-v 11.032908 40.884182 0.654296
-v 9.052789 40.759140 0.528357
-v 7.332555 40.747066 0.990534
-v 5.826796 40.638214 0.981554
-g lShin
-v 3.423450 2.320823 -1.220890
-v 1.987283 2.341169 -0.683768
-v 2.132545 2.718132 -0.697082
-v 3.422400 2.718822 -1.023476
-v 2.761385 2.728987 1.857137
-v 1.909040 2.717237 0.940745
-v 4.253482 2.718132 0.198443
-v 4.052274 2.721373 1.159766
-g hip
-v 1.432858 28.458458 3.945202
-g lThigh
-v 1.417084 26.033672 3.083513
-g hip
-v 3.339577 28.401138 3.351437
-v 0.495518 24.070486 0.453644
-v 5.010597 29.288525 0.828330
-g lThigh
-v 0.300201 22.663689 0.802818
-v 1.705577 23.154718 3.092996
-v 3.741037 25.939754 3.641464
-v 3.659667 23.596638 3.781293
-v 0.520169 18.740705 1.203168
-v 0.678913 16.089720 1.036073
-v 1.909712 16.122910 2.776623
-v 1.795664 18.909363 3.021704
-v 5.015799 18.921558 1.502610
-v 4.870823 16.180758 1.383574
-v 3.573608 18.960030 3.354131
-v 3.681568 16.150110 3.120712
-g lShin
-v 0.827918 14.139985 0.995010
-v 1.870350 14.217982 2.767231
-g lThigh
-v 4.866526 14.409216 1.320118
-v 3.922977 14.287776 3.077039
-g lShin
-v 0.792537 12.306957 0.391119
-v 1.883732 12.189103 2.556452
-v 4.914065 12.361855 0.655368
-v 3.868377 12.278161 2.798106
-v 0.932787 10.111225 0.396981
-v 1.948950 10.034234 2.593401
-v 5.012206 10.366936 0.565392
-v 3.980003 10.152779 2.359324
-v 1.094686 4.502764 0.966840
-g lFoot
-v 1.175093 1.687517 0.825771
-v 2.003956 2.036015 3.148684
-g lShin
-v 1.821833 4.588631 2.281278
-v 5.084761 4.984588 0.535219
-v 5.607564 2.015813 0.208522
-v 3.770760 4.917832 1.843668
-g lFoot
-v 4.262095 2.079021 3.015043
-g lShin
-v 1.957637 7.376563 2.582939
-v 1.081090 7.250028 0.571152
-v 5.052967 8.276890 0.464220
-v 4.159451 8.224395 2.262278
-g lThigh
-v 5.415800 27.354464 0.817633
-v 5.261125 23.524775 1.138885
-v 1.764454 21.286749 3.018586
-v 0.234289 20.903795 0.931680
-v 5.173312 21.822882 1.259720
-v 3.576088 21.686827 3.489960
-g hip
-v 0.000000 25.929646 3.340255
-v 0.000000 24.041737 0.729534
-v 0.000000 28.462002 4.122940
-g lThigh
-v 1.817651 24.829428 -2.399626
-g hip
-v 0.184588 24.035885 -1.577716
-v 1.808087 29.112015 -2.884637
-g lThigh
-v 3.386046 24.892494 -1.947125
-v 3.622681 23.665857 -1.773577
-v 0.167494 22.661526 -1.564422
-v 0.752448 18.711729 -1.450581
-v 3.305046 18.916801 -1.119304
-v 3.352692 16.253151 -1.240193
-v 1.040107 15.930214 -1.272784
-g lShin
-v 3.465796 14.325057 -1.222316
-v 1.220634 14.124224 -1.321831
-v 3.218741 12.424414 -1.665461
-v 1.312665 12.384177 -1.666665
-v 3.558863 10.287652 -1.707779
-v 1.666083 10.231895 -1.857466
-v 1.813527 4.750624 -1.668651
-v 3.268895 4.585973 -1.887423
-v 3.780823 1.447519 -2.251014
-v 2.071391 1.520291 -2.100863
-g hip
-v 3.611485 28.921408 -1.818590
-g lShin
-v 1.634725 7.417192 -1.864729
-v 3.603587 8.182657 -1.727933
-g lThigh
-v 0.408523 20.989262 -1.711810
-v 3.800614 21.779657 -1.677387
-v 3.755615 26.686554 -2.638612
-g hip
-v 2.101094 26.904926 -3.482746
-v 0.000000 24.070814 -1.590281
-v 0.000000 24.937546 -2.414850
-v 0.000000 29.091072 -2.867248
-v 0.000000 27.054850 -3.318166
-g lCollar
-v 5.222827 41.599804 0.513167
-v 4.969442 41.678314 -3.311593
-g neck
-v 1.215429 44.354553 -1.919498
-v 2.259712 44.111343 -1.153068
-g lCollar
-v 2.812332 43.193321 -1.350649
-g neck
-v 1.343526 43.296268 -2.337278
-v 0.000000 44.382942 -2.225113
-v 0.000000 43.368446 -2.530778
-g lCollar
-v 2.726768 42.898552 -0.300062
-g neck
-v 2.306298 43.706493 -0.176972
-g lCollar
-v 2.421259 42.339436 1.062528
-g neck
-v 2.075951 43.177406 1.028379
-g chest
-v 1.033273 42.605042 2.000249
-v 1.506615 41.619675 2.253813
-v 0.000000 42.415108 1.648859
-v 0.000000 41.950428 1.795407
-g lForeArm
-v 18.275339 40.116409 -2.074114
-v 18.275339 41.626404 -0.897522
-v 18.275339 41.371590 -1.888296
-v 18.275339 41.352722 0.027223
-v 18.275339 40.022194 -0.094329
-v 18.275339 39.691460 -0.875411
-v 18.363766 40.638779 -2.413259
-v 18.275339 40.445274 0.446309
-g hip
-v 1.382385 29.837351 3.193716
-v 3.050477 29.837351 2.287415
-v 4.563772 29.837351 0.250918
-v 0.000000 29.837351 3.424546
-v 1.587359 29.837349 -2.876318
-v 3.060982 29.837351 -1.875846
-v 0.000000 29.837351 -2.816584
-g chest
-v 1.252821 41.858799 2.029063
-v 0.969375 42.410442 1.845083
-v -0.000000 41.505329 2.094098
-g lShin
-v 2.707063 2.326791 -1.206661
-v 3.999379 2.308153 -0.928104
-g rHand
-v -22.750669 40.355671 -0.030791
-v -22.797523 40.380474 -0.422090
-v -23.301619 40.581524 -0.370700
-v -23.312870 40.582237 -0.048475
-v -23.241745 40.815887 -0.538490
-v -23.862740 40.837147 -0.465069
-v -23.880091 40.653706 -0.271060
-v -23.898895 40.669903 -0.035848
-v -23.845604 40.825100 0.123028
-v -23.246237 40.813957 0.114511
-v -22.790146 40.788448 0.155102
-v -22.870222 41.085472 -0.075139
-v -23.339542 41.062496 -0.031457
-v -23.331675 41.073532 -0.365523
-v -22.895647 41.133961 -0.398684
-v -23.775482 41.073227 -0.292034
-v -24.428600 40.795128 -0.408679
-v -24.674976 40.736008 -0.361787
-v -24.651098 40.597118 -0.257716
-v -24.433203 40.651581 -0.281371
-v -24.438725 40.645912 -0.024750
-v -24.654408 40.594078 -0.035193
-v -24.841211 40.737732 -0.318487
-v -24.828276 40.621006 -0.229343
-v -24.829611 40.614326 -0.036925
-v -24.844152 40.725277 0.066971
-v -24.675499 40.734989 0.084757
-v -24.441580 40.777515 0.107954
-v -24.923378 40.684380 -0.194529
-v -24.927767 40.679321 -0.068399
-v -24.687828 40.873589 -0.245355
-v -24.854746 40.848789 -0.214589
-v -24.379725 40.952450 -0.263751
-v -24.400084 40.939796 -0.030318
-v -24.702478 40.871662 -0.037538
-v -24.856285 40.843018 -0.022178
-v -24.927801 40.746338 -0.243622
-v -24.934872 40.796753 -0.167918
-v -24.927181 40.716476 0.007023
-v -24.932289 40.790577 -0.042402
-v -24.180624 40.818211 -0.413381
-v -24.185888 40.630116 -0.285476
-v -24.188358 40.625660 -0.026605
-v -24.196404 40.986469 -0.037562
-v -23.791485 41.064213 -0.029813
-v -24.175751 40.817104 0.106998
-v -22.466351 40.230145 -2.021185
-v -22.293152 40.166061 -1.981031
-v -22.246449 40.452656 -2.327251
-v -22.444410 40.512386 -2.324768
-v -22.519102 40.337955 -0.599588
-v -22.467012 40.272259 -1.151218
-v -22.766043 40.467842 -1.045827
-v -22.766817 40.447189 -0.720372
-v -22.456387 40.237431 -0.032784
-v -22.457212 40.532223 0.235863
-v -22.460995 40.887154 0.142151
-v -22.670837 41.070789 -0.059877
-v -22.502388 41.100250 -0.101858
-v -22.553751 41.175575 -0.585416
-v -22.709620 41.148335 -0.441557
-v -22.493679 41.164131 -1.343179
-v -22.735149 41.196018 -0.754071
-v -22.711899 41.193691 -1.171304
-v -22.934734 41.226288 -0.820101
-v -22.917765 41.190754 -1.134868
-v -22.398745 40.981506 -1.951616
-v -22.648111 41.138317 -1.482203
-v -22.580471 41.036274 -1.849363
-v -22.265980 40.798981 -2.280722
-v -22.528351 40.936661 -2.045662
-v -22.426804 40.823074 -2.278607
-v -22.876867 41.040829 -0.560754
-v -22.808310 40.556522 -0.566646
-v -23.316292 41.014099 -0.630957
-v -22.814779 41.025745 -1.298379
-v -22.821688 41.128700 -1.544701
-v -22.403658 40.206860 -1.626463
-v -22.623661 40.441925 -1.738000
-v -22.650215 40.367115 -1.576427
-v -22.563732 40.294933 -1.795956
-v -24.584303 40.867619 -1.178037
-v -24.809095 40.802620 -1.132553
-v -24.781813 40.686916 -0.998162
-v -24.565496 40.730747 -1.023373
-v -24.794744 40.718498 -0.773731
-v -24.590693 40.763344 -0.776055
-v -24.828762 40.873798 -0.682419
-v -24.993176 40.716885 -0.786010
-v -25.019001 40.838570 -0.702011
-v -25.115488 40.737354 -0.965942
-v -25.083729 40.779758 -1.065871
-v -25.137024 40.835442 -0.958421
-v -25.034153 40.935242 -0.816863
-v -25.022701 40.910427 -1.015336
-v -24.833885 40.953762 -1.043212
-v -24.858992 40.984135 -0.833351
-v -25.139626 40.850533 -0.834004
-v -25.123528 40.800724 -0.773636
-v -25.125647 40.751526 -0.841208
-v -24.545952 41.050140 -1.065605
-v -24.571602 41.076359 -0.832233
-v -23.930473 40.934940 -1.234796
-v -24.290768 40.893631 -1.196032
-v -24.291937 40.738850 -1.033112
-v -23.867624 40.745022 -1.037321
-v -24.303011 41.086990 -1.095064
-v -23.865494 41.185692 -1.112355
-v -23.906670 41.229126 -0.840570
-v -24.333952 41.123940 -0.849515
-v -23.868586 40.778225 -0.776100
-v -24.309484 40.775696 -0.770692
-v -24.312977 40.976849 -0.669773
-v -23.965387 41.004486 -0.653246
-v -24.603498 40.936863 -0.672283
-v -23.363642 40.721638 -1.056609
-v -23.396576 40.765671 -0.756094
-v -22.729155 40.596409 -1.200319
-v -23.271297 40.942833 -1.254638
-v -23.437744 41.206551 -0.828012
-v -23.421375 41.162815 -1.131838
-v -24.268181 40.400013 -1.681248
-v -24.486832 40.311535 -1.631823
-v -24.507839 40.367512 -1.431147
-v -24.302477 40.444355 -1.434497
-v -24.399488 40.624653 -1.743566
-v -24.560244 40.548832 -1.715687
-v -24.519991 40.398903 -1.773064
-v -24.293314 40.489910 -1.830168
-v -24.679638 40.341702 -1.446704
-v -24.784622 40.361343 -1.501231
-v -24.788080 40.416794 -1.446834
-v -24.717598 40.462765 -1.391960
-v -24.771029 40.374706 -1.682146
-v -24.799822 40.423092 -1.626536
-v -24.769770 40.333099 -1.616216
-v -24.806906 40.453445 -1.511848
-v -24.557655 40.519371 -1.371453
-v -24.737997 40.537575 -1.512677
-v -24.591978 40.600361 -1.528809
-v -24.435017 40.681244 -1.525377
-v -24.304333 40.740257 -1.529148
-v -24.333132 40.619888 -1.360955
-v -23.708918 40.675369 -1.898029
-v -24.044577 40.556820 -1.843044
-v -24.033262 40.436150 -1.666604
-v -23.740046 40.514206 -1.634872
-v -24.270792 40.685291 -1.751150
-v -24.079556 40.744411 -1.776700
-v -24.117716 40.807377 -1.554177
-v -24.060785 40.500843 -1.425022
-v -24.089270 40.699059 -1.362999
-v -23.096514 40.728218 -1.874647
-v -23.201029 40.534248 -1.653645
-v -23.502714 40.515625 -1.672901
-v -22.651850 40.863064 -1.897865
-v -23.550123 40.558243 -1.427374
-v -23.225470 40.616150 -1.385860
-v -23.752525 40.788757 -1.344596
-v -23.785076 40.587605 -1.419473
-v -23.220062 40.971382 -1.813547
-v -22.759949 41.027164 -1.842250
-v -23.254299 41.051662 -1.535447
-v -23.669533 40.917725 -1.778011
-v -23.713860 40.975430 -1.533788
-v -23.170317 40.877945 -1.310234
-v -24.186024 39.897087 -2.210552
-v -24.219048 39.937275 -2.169901
-v -24.178207 39.871571 -2.148581
-v -24.234806 39.974018 -2.075897
-v -24.215693 39.955799 -2.015214
-v -24.198990 39.905281 -2.054176
-v -24.173067 40.002148 -2.230764
-v -24.202139 40.056602 -2.087112
-v -23.921097 40.185577 -2.298748
-v -23.820251 40.253811 -2.309784
-v -23.860294 40.314144 -2.135366
-v -23.964663 40.248848 -2.123608
-v -23.870258 40.222645 -1.959791
-v -23.326639 40.340794 -2.403237
-v -23.583605 40.183277 -2.357169
-v -23.565840 40.099251 -2.185706
-v -23.347483 40.221035 -2.159051
-v -23.766588 40.005398 -2.182591
-v -23.794918 40.071499 -2.010651
-v -23.612331 40.176487 -1.982011
-v -23.669617 40.351727 -1.953864
-v -22.870777 40.281269 -2.110448
-v -22.812698 40.440712 -2.325144
-v -23.214207 40.298580 -1.942441
-v -22.919262 40.352238 -1.925018
-v -23.148081 40.238853 -2.161656
-v -23.409220 40.301517 -1.975280
-v -23.416477 40.500038 -1.931765
-v -22.905844 40.606636 -1.887446
-v -23.020645 40.748463 -2.065058
-v -22.661507 40.896065 -2.081197
-v -21.052248 41.299076 -0.483850
-v -20.954851 40.786221 0.250740
-v -21.472511 40.704727 0.383175
-v -21.923307 41.287941 -0.400221
-v -22.059685 40.617058 0.403459
-v -22.275188 40.468445 0.351261
-v -20.441557 40.833298 0.010999
-v -20.511772 41.219913 -0.742763
-v -20.383255 40.442432 0.088355
-v -20.874498 40.501747 0.562970
-v -21.112164 41.290272 -1.383760
-v -20.514896 41.115135 -1.567683
-v -21.952433 41.239754 -1.406042
-v -20.847694 40.796349 -2.029959
-v -21.772091 40.824291 -2.209093
-v -20.387922 40.308395 -1.926123
-v -20.390690 40.753426 -1.925877
-v -20.739861 40.169300 -2.175464
-v -21.806507 40.263550 -2.329958
-v -20.648672 39.865089 -1.787670
-v -21.908169 39.986675 -1.945621
-v -21.371513 39.907413 -1.178185
-v -20.637493 39.848698 -1.187303
-v -22.045515 40.041245 -1.435194
-v -22.458513 39.886787 0.729146
-v -22.427168 40.121140 0.953049
-v -22.758980 40.032528 1.132066
-v -22.772879 39.816494 0.908599
-v -23.103857 39.912876 1.283855
-v -23.098492 39.732075 1.100647
-v -22.699682 39.511784 0.969368
-v -23.032427 39.469467 1.156144
-v -22.565697 39.952049 1.373738
-v -22.335918 40.032433 1.267494
-v -22.380590 39.550354 0.792937
-v -22.147736 40.025276 0.492718
-v -22.020618 40.376850 0.826045
-v -23.350773 39.821671 1.453690
-v -23.355249 39.670219 1.313514
-v -23.298735 39.446686 1.357751
-v -23.021589 39.837357 1.511173
-v -23.239586 39.373901 1.542480
-v -22.959595 39.390503 1.399780
-v -22.586788 39.432518 1.237241
-v -22.283182 39.709599 1.352813
-v -22.522921 39.673454 1.432521
-v -21.675644 40.213242 1.061730
-v -21.920702 40.138527 1.179923
-v -21.790401 40.465714 0.666580
-v -22.234123 39.460663 1.067159
-v -22.026535 39.491131 0.511540
-v -21.634562 39.764366 1.132840
-v -21.858810 39.756672 1.235333
-v -23.438839 39.723671 1.552228
-v -23.453188 39.639034 1.486143
-v -23.422592 39.491535 1.517219
-v -23.290245 39.748978 1.637852
-v -23.373735 39.425327 1.583916
-v -22.977776 39.590042 1.578557
-v -23.382137 39.503681 1.659768
-v -23.235609 39.524944 1.682606
-v -21.805315 39.453068 0.871682
-v -21.311460 39.825203 0.897246
-v -21.398514 40.388981 0.879928
-v -23.423492 39.648857 1.635183
-v -21.473566 39.506927 0.601867
-v -22.291136 40.183067 0.110302
-v -20.917732 39.627876 0.114914
-v -20.853706 39.989071 0.612308
-v -20.347616 40.131226 -0.095523
-v -20.532793 39.845459 -0.721532
-v -21.223377 39.875317 -0.769063
-v -21.143644 39.680954 -0.289975
-v -21.722326 39.523933 0.233926
-v -22.182768 40.095806 -0.924759
-v -22.298182 40.093575 -0.241745
-v -23.845812 40.862549 -1.790198
-v -24.180523 40.992237 -0.273081
-v -20.342510 40.036274 -1.666773
-v -20.257631 39.961872 -1.119272
-v -20.270210 40.021404 -0.586574
-v -22.656126 40.413879 -1.289044
-v -22.570818 40.777313 -2.313284
-v -24.983566 40.691570 -0.984358
-v -24.997995 40.788342 -1.099355
-v -24.663328 40.295135 -1.621733
-v -24.683216 40.370052 -1.742566
-v -24.719969 40.491734 -1.687849
-v -23.900661 40.921982 -1.543254
-v -23.934191 39.923298 -2.154390
-v -23.779301 40.077587 -2.332908
-v -23.973017 39.972301 -2.289263
-v -24.091511 39.862263 -2.147176
-v -24.118057 39.904575 -2.260866
-v -24.119459 39.917534 -2.003753
-v -23.968985 39.987484 -1.991678
-v -24.038208 40.093155 -2.262222
-v -24.175198 40.014507 -1.973560
-v -24.039286 40.109360 -1.963429
-v -24.080538 40.149734 -2.109374
-v -23.644552 40.348186 -2.326790
-v -23.478132 40.483551 -2.352285
-v -23.328352 40.558556 -2.333810
-v -23.385748 40.646328 -2.124295
-v -23.536522 40.566364 -2.140862
-v -23.699787 40.419052 -2.140876
-v -22.961201 40.649960 -2.309981
-v -20.123955 40.755943 -1.785236
-v -20.197508 41.072418 -1.529532
-v -20.075758 40.070316 -1.458133
-v -20.072172 40.347527 -1.709659
-v -20.121733 39.941643 -1.102189
-v -20.219542 40.039204 -0.617947
-v -20.254829 40.340137 -0.192872
-v -20.276594 41.184032 -0.892941
-v -20.304375 40.859138 -0.228652
-g rCollar
-v -3.695971 37.098866 -2.894498
-v -3.444696 39.226913 -3.790643
-v -4.642097 39.261520 -3.300023
-v -4.891017 38.361462 -2.749190
-v -5.022981 42.605106 -1.060892
-v -3.603245 42.824310 -1.169532
-v -4.883083 37.341625 -0.101742
-v -4.930224 38.547329 -0.482871
-v -3.222362 41.499443 -3.556513
-v -4.620452 41.587051 -3.229377
-g hip
-v -4.633049 30.751913 0.239659
-g abdomen
-v -1.504837 30.646847 -2.986009
-g hip
-v -4.940995 31.345476 0.223367
-g abdomen
-v -1.855863 31.565315 -3.056453
-v -4.602068 34.927181 0.198389
-g chest
-v -1.820091 37.065254 -3.431040
-g abdomen
-v -1.708037 34.723904 -2.564760
-g chest
-v -2.020023 39.209400 -3.830955
-g abdomen
-v -3.029589 30.655180 -1.939064
-v -3.706125 31.502005 -2.113014
-v -3.388966 34.636742 -1.936310
-g chest
-v -1.857401 41.420586 -3.903683
-g neck
-v -1.263818 43.231335 -2.220323
-g rCollar
-v -2.670321 43.177162 -1.364057
-g chest
-v -1.720211 42.651493 -3.039190
-g neck
-v -1.651639 44.011719 -1.118066
-v -0.883848 44.169708 -1.615462
-g rCollar
-v -3.456392 42.073120 0.161261
-v -4.899064 41.601704 0.536869
-v -3.892986 37.445999 2.213884
-v -4.925643 39.665966 1.620847
-v -3.698051 41.436962 1.199947
-g hip
-v -1.313820 30.654856 3.342075
-v -3.061206 30.666529 2.361726
-v -1.888854 31.112337 3.889589
-v -3.766208 31.176142 2.835237
-g abdomen
-v -1.889006 34.919186 3.538904
-v -3.643886 34.920200 2.047238
-g rCollar
-v -3.931892 39.633774 2.383547
-g chest
-v -2.301315 39.877548 3.051179
-v -2.240416 37.457844 3.506683
-g rCollar
-v -2.362195 41.682652 1.688105
-v -2.348120 42.338284 0.879506
-g chest
-v -0.662661 42.673485 1.550316
-g neck
-v -0.876144 43.251484 1.166344
-g rCollar
-v -2.542040 42.903885 -0.393133
-g neck
-v -1.678276 43.637806 -0.249367
-v -1.536430 43.240158 0.932556
-v -1.434631 43.838139 0.539554
-v -0.517988 43.236404 1.302624
-g chest
-v -1.499798 41.493980 2.223268
-g rShldr
-v -5.900922 39.941124 0.901777
-v -5.893506 38.928978 -0.926425
-v -7.256472 39.122131 -1.548575
-v -7.320304 40.241058 0.685742
-v -7.352909 41.587677 0.739432
-v -5.729126 41.539017 0.466112
-v -9.097744 38.984669 -1.192481
-v -9.068818 39.994179 0.183889
-v -7.318123 39.465080 -2.833066
-v -7.192657 41.415611 -3.211862
-v -9.127761 41.370766 -2.959213
-v -9.119079 39.224792 -2.915594
-v -7.219052 42.301128 -1.468837
-v -9.047660 42.196941 -1.234272
-v -9.035841 41.567970 0.341711
-v -11.202062 39.453487 -1.399184
-v -11.115108 40.080624 0.403700
-v -11.434842 41.476040 -2.519938
-v -11.437262 39.782555 -2.503159
-v -11.202790 41.770760 -1.322931
-v -11.116078 41.507332 0.391377
-g rForeArm
-v -12.103358 39.339588 -0.922268
-v -12.074203 40.212326 0.157794
-v -11.933557 41.163116 -2.411615
-v -11.932665 39.571918 -2.229236
-v -12.107891 41.884819 -0.896190
-v -12.063477 41.520378 0.153960
-v -13.534086 39.281986 -0.976095
-v -13.595608 39.975338 0.334174
-v -13.451281 41.398388 -2.636112
-v -13.459243 39.362667 -2.635699
-v -13.526078 41.962769 -1.139662
-v -13.589882 41.672733 0.244673
-v -15.660952 39.304859 -1.053007
-v -15.681289 40.067463 0.358617
-v -15.648005 41.207966 -2.499224
-v -15.646151 39.798077 -2.468159
-v -15.670582 41.864269 -1.131010
-v -15.679470 41.529995 0.237072
-v -18.765381 40.235245 -1.963243
-v -18.775587 40.672989 -2.107764
-v -18.798687 41.435215 -0.988315
-v -18.791590 41.274429 -1.776966
-v -18.785105 40.463009 0.087079
-v -18.801394 41.212318 -0.064291
-v -18.775753 40.117367 -0.193715
-g rShldr
-v -5.716498 39.353756 -2.788431
-g rCollar
-v -5.357348 42.514194 -1.099404
-g rShldr
-v -5.468535 41.805374 -3.154800
-g rForeArm
-v -20.121511 40.215038 -1.827160
-v -20.191048 40.779247 -2.023936
-v -20.084375 39.841930 -1.563998
-v -20.090456 39.725834 -1.129523
-v -20.169325 39.945099 -0.535831
-v -20.220116 40.383884 0.068659
-v -20.313145 41.050411 -0.053195
-v -20.357836 41.448925 -0.783168
-v -20.296204 41.267262 -1.644567
-v -18.759235 39.887669 -0.978564
-v -15.646870 40.344692 -2.883310
-v -13.455518 40.314873 -3.039000
-v -11.861377 40.283783 -2.749467
-g rShldr
-v -11.436292 40.455864 -2.890853
-v -9.123457 40.307144 -3.340702
-v -7.259227 40.234219 -3.434482
-v -5.336685 40.144974 -3.356616
-g rCollar
-v -4.305221 40.044777 -3.538171
-g rForeArm
-v -15.680682 40.556004 0.585773
-v -13.593200 40.689159 0.564292
-v -12.069514 40.784019 0.423875
-g rShldr
-v -11.115586 40.884182 0.649847
-v -9.052789 40.759140 0.528357
-v -7.332555 40.747066 0.990534
-v -5.826796 40.638214 0.981554
-g rShin
-v -2.132545 2.718132 -0.697082
-v -3.422400 2.718822 -1.023476
-v -2.761385 2.728987 1.857137
-v -1.909040 2.717237 0.940745
-v -4.253482 2.718132 0.198443
-v -4.052274 2.721373 1.159766
-g hip
-v -1.432858 28.458458 3.945202
-g rThigh
-v -1.417084 26.033672 3.083513
-g hip
-v -3.339577 28.401138 3.351437
-v -0.495518 24.070486 0.453644
-v -5.010597 29.288525 0.828330
-g rThigh
-v -0.300201 22.663689 0.802818
-v -1.705577 23.154718 3.092996
-v -3.741037 25.939754 3.641464
-v -3.659667 23.596638 3.781293
-v -0.520169 18.740705 1.203168
-v -0.678913 16.089720 1.036073
-v -1.909712 16.122910 2.776623
-v -1.795664 18.909363 3.021704
-v -5.015799 18.921558 1.502610
-v -4.870823 16.180758 1.383574
-v -3.573608 18.960030 3.354131
-v -3.681568 16.150110 3.120712
-g rShin
-v -0.827918 14.139985 0.995010
-v -1.870350 14.217982 2.767231
-g rThigh
-v -4.866526 14.409216 1.320118
-v -3.922977 14.287776 3.077039
-g rShin
-v -0.792537 12.306957 0.391119
-v -1.883732 12.189103 2.556452
-v -4.914065 12.361855 0.655368
-v -3.868377 12.278161 2.798106
-v -0.932787 10.111225 0.396981
-v -1.948950 10.034234 2.593401
-v -5.012206 10.366936 0.565392
-v -3.980003 10.152779 2.359324
-v -1.094686 4.502764 0.966840
-g rFoot
-v -1.175093 1.687517 0.825771
-v -2.003956 2.036015 3.148684
-g rShin
-v -1.821833 4.588867 2.281278
-v -5.084761 4.984588 0.535219
-v -5.607564 2.015813 0.208522
-v -3.770760 4.917732 1.843668
-g rFoot
-v -4.262095 2.079021 3.015043
-g rShin
-v -1.957637 7.376563 2.582939
-v -1.081090 7.250028 0.571152
-v -5.052967 8.276890 0.464220
-v -4.159451 8.224395 2.262278
-g rThigh
-v -5.415800 27.354464 0.817633
-v -5.261125 23.524775 1.138885
-v -1.764454 21.286749 3.018586
-v -0.234289 20.903795 0.931680
-v -5.173312 21.822882 1.259720
-v -3.576088 21.686827 3.489960
-v -1.817651 24.829428 -2.399626
-g hip
-v -0.184588 24.035885 -1.577716
-v -1.808087 29.112015 -2.884637
-g rThigh
-v -3.386046 24.892494 -1.947125
-v -3.622681 23.665857 -1.773577
-v -0.167494 22.661526 -1.564422
-v -0.752448 18.711729 -1.450581
-v -3.305046 18.916801 -1.119304
-v -3.352692 16.253151 -1.240193
-v -1.040107 15.930214 -1.272784
-g rShin
-v -3.465796 14.325057 -1.222316
-v -1.220634 14.124224 -1.321831
-v -3.218741 12.424414 -1.665461
-v -1.312665 12.384177 -1.666665
-v -3.558863 10.287652 -1.707779
-v -1.666083 10.231895 -1.857466
-v -1.813527 4.750624 -1.668651
-v -3.268895 4.585973 -1.887423
-v -3.780823 1.447519 -2.251014
-v -2.071391 1.520291 -2.100863
-g hip
-v -3.611485 28.921408 -1.818590
-g rShin
-v -1.634725 7.417192 -1.864729
-v -3.603587 8.182657 -1.727933
-g rThigh
-v -0.408523 20.989262 -1.711810
-v -3.800614 21.779657 -1.677387
-v -3.755615 26.686554 -2.638612
-g hip
-v -2.101094 26.904926 -3.482746
-g rCollar
-v -5.222827 41.599804 0.513167
-v -4.978374 41.678314 -3.311593
-g neck
-v -1.215429 44.354553 -1.919498
-v -2.259712 44.111343 -1.153068
-g rCollar
-v -2.812332 43.193321 -1.350649
-g neck
-v -1.343526 43.296268 -2.337278
-g rCollar
-v -2.726768 42.898552 -0.300062
-g neck
-v -2.306298 43.706493 -0.176972
-g rCollar
-v -2.421259 42.339436 1.062528
-g neck
-v -2.075951 43.177406 1.028379
-g chest
-v -1.033273 42.605042 2.000249
-v -1.506615 41.619675 2.253813
-g rForeArm
-v -18.358017 40.116409 -2.078564
-v -18.358017 41.626404 -0.901971
-v -18.358017 41.371590 -1.892746
-v -18.358017 41.352722 0.022773
-v -18.358017 40.022194 -0.098779
-v -18.358017 39.691460 -0.879861
-v -18.411072 40.638779 -2.435394
-v -18.358017 40.445274 0.441859
-g hip
-v -1.382385 29.837351 3.193716
-v -3.050477 29.837351 2.287415
-v -4.563772 29.837351 0.250918
-v -1.587359 29.837349 -2.876318
-v -3.060982 29.837351 -1.875846
-g chest
-v -1.252821 41.858799 2.029063
-v -0.969375 42.410442 1.845083
-g head
-v 2.251043 46.052860 -0.701550
-v 2.374032 46.371662 -0.945070
-v 2.147082 46.582901 -0.002909
-v 2.066226 46.197426 0.028698
-v 2.391363 46.930481 -1.147094
-v 2.211032 47.007973 -0.112555
-v 1.967967 46.104523 -0.568608
-v 2.102113 46.478840 -0.786580
-v 2.002958 46.238003 0.109756
-v 2.013654 45.854553 -0.077751
-v 2.163070 45.824848 -0.527355
-v 2.217167 46.976791 -1.018102
-v 2.203419 47.306286 -0.822076
-v 2.124577 47.307575 -0.449441
-v 2.287045 47.292999 -0.473294
-v 2.363372 47.288757 -0.875092
-v 2.162801 47.173084 -0.598831
-v 1.966143 45.822636 0.016447
-v 1.962599 45.799381 -0.390917
-v 2.153314 47.164112 -0.093246
-v 0.211297 47.502041 2.866419
-v 0.000000 47.538113 2.904093
-v 0.000000 47.147629 3.001020
-v 0.121064 47.136494 2.952435
-v 0.203359 47.129124 2.784944
-v 0.385524 47.446369 2.752810
-v 0.000000 45.956684 2.997131
-v 0.126709 45.956680 2.997131
-v 0.173945 46.065571 3.378407
-v 0.000000 46.056763 3.386673
-v 0.000000 46.158077 3.546192
-v 0.162939 46.173016 3.513085
-v 0.140245 46.370117 3.533911
-v 0.000000 46.373802 3.549659
-v 0.325978 46.087467 3.123376
-v 0.368846 46.285789 3.155359
-v 0.434814 46.065155 2.875690
-v 0.295494 45.985935 2.843136
-v 0.453541 46.006001 2.707664
-v 0.517784 46.220650 2.736845
-v 0.502215 46.288452 2.870486
-v 0.241459 46.806549 2.968424
-v 0.261137 46.494774 3.135468
-v 0.415892 46.476551 2.838915
-v 0.308538 46.809006 2.792964
-v 0.115252 46.796310 3.186177
-v 0.000000 46.790989 3.214985
-g neck
-v 0.255299 44.799629 2.824369
-v 0.578731 44.807209 2.649870
-v 0.607162 45.061810 2.644542
-v 0.251677 44.969063 2.959043
-v 1.379041 44.834637 1.929841
-g head
-v 1.435415 45.376503 1.939306
-v 1.135785 45.384930 2.217185
-g neck
-v 1.075168 44.822956 2.271626
-v 1.602512 44.892147 1.429569
-v 1.800390 45.008404 0.796295
-g head
-v 1.855538 45.433933 0.805303
-v 1.660953 45.391769 1.490839
-v 0.215659 45.385109 3.041754
-v 0.573158 45.366711 2.760294
-v 0.571872 45.457867 2.757996
-v 0.421554 45.494305 2.944354
-v 0.230820 45.528221 3.046134
-v 1.916539 45.922909 0.771577
-v 1.773437 45.903870 1.510448
-v 0.723015 46.013748 2.619651
-v 1.219013 45.930645 2.453835
-v 1.267092 46.410652 2.473508
-v 0.744578 46.447334 2.662624
-v 1.863565 46.446266 1.548479
-v 1.980372 46.446674 0.806397
-v 0.599075 47.725235 2.876139
-v 0.975188 47.774609 2.713178
-v 1.011915 48.097744 2.613864
-v 0.616120 48.086552 2.830470
-v 2.053326 47.857132 1.110663
-v 1.964653 47.369610 0.891674
-v 0.269400 48.044182 2.899422
-v 0.889069 48.564938 2.532358
-v 0.274645 48.551018 2.671283
-v 1.630272 48.544258 1.788723
-v 1.839215 48.355747 1.317321
-g neck
-v 0.000000 44.985565 2.962010
-v 0.000000 44.799221 2.825430
-g head
-v 0.000000 45.482124 3.044501
-v 0.000000 45.351223 3.034014
-v 0.270335 47.750523 2.938207
-v 0.576571 45.192551 2.675371
-g neck
-v 0.237878 45.148773 2.960771
-v 0.000000 45.151432 2.966194
-v 0.000000 44.441650 2.925019
-v 0.256185 44.441036 2.925288
-v 0.576121 44.449539 2.705261
-v 1.305455 44.488728 1.908290
-v 1.537982 44.547672 1.382697
-v 1.750584 44.683987 0.776582
-g head
-v 0.429699 46.437195 2.743567
-v 0.597708 46.216816 2.726956
-v 0.928893 45.425690 2.341608
-g neck
-v 0.847334 44.815804 2.445218
-g head
-v 0.819501 47.635448 2.438749
-g neck
-v 1.062962 44.464783 2.260381
-g head
-v 1.875032 47.925926 1.501133
-v 1.863035 47.358566 1.558445
-v 2.044922 46.872238 0.850128
-v 1.831533 46.918098 1.535854
-v 1.472462 47.996971 2.146124
-v 1.496894 47.679802 2.337295
-v 0.742318 46.896404 2.601507
-v 0.439438 47.061573 2.549471
-v 0.300693 47.111622 2.678158
-v 0.389139 46.815556 2.693849
-v 1.145101 46.823231 2.457602
-v 1.664484 46.430706 2.063589
-v 1.588779 45.890568 2.022359
-v 1.372174 47.579578 2.342570
-v 0.832274 45.392368 2.392959
-v 0.761047 45.360428 2.504442
-v 0.000000 45.288212 2.897926
-v 0.244378 45.293312 2.870654
-v 0.508640 45.285748 2.683959
-v 0.476876 47.217857 2.551864
-v 0.560475 47.090477 2.475962
-v 0.553396 47.138710 2.474352
-v 1.252470 47.410206 2.486802
-v 0.810757 47.414444 2.571376
-v 0.822254 47.282017 2.515947
-v 1.234421 47.273205 2.437482
-v 0.803101 46.992805 2.521831
-v 1.159492 46.973991 2.462741
-v 1.432406 47.150818 2.255726
-v 1.585321 47.272770 2.090096
-v 1.507287 46.885128 2.072658
-v 1.414711 47.104397 2.256685
-v 0.000000 45.757805 2.985503
-v 0.176358 45.761963 3.006798
-v 0.342449 45.786144 2.870920
-v 0.537504 45.767044 2.752061
-g neck
-v 0.243835 44.027180 2.842765
-v 0.567438 44.061977 2.695372
-v 1.022229 44.121124 2.214885
-v 1.230159 44.173725 1.791451
-v 1.504214 44.232880 1.298574
-v 1.645041 44.389717 0.742875
-v 1.776782 44.845676 0.370797
-g head
-v 1.861614 45.223930 0.224294
-v 1.880227 45.493279 0.073830
-g neck
-v 0.000000 44.027588 2.845272
-v 1.094478 45.110336 -1.397214
-v 0.000000 45.100304 -1.623204
-g head
-v 1.658984 45.367733 -0.562959
-g neck
-v 1.526728 44.961533 -0.681529
-v 1.656389 44.919518 -0.212599
-v 1.657555 44.504612 0.151327
-v 0.721246 43.988129 2.205554
-v 0.000000 43.843201 2.215667
-v 0.352510 43.880844 2.206131
-v 0.237322 43.948448 2.688029
-v 0.000000 43.929138 2.693680
-v 1.517035 44.189766 0.647604
-v 1.307145 44.052864 1.011601
-v 1.007886 43.922607 1.521863
-v 0.744842 43.882442 1.801755
-v 0.417973 43.791054 1.821974
-v 0.000000 43.774303 1.828157
-g head
-v 0.760083 45.304260 2.520113
-v 0.812747 45.250950 2.407393
-v 0.912491 45.206482 2.349185
-v 0.000000 47.750523 2.938207
-v 0.000000 48.044182 2.899421
-v 0.000000 48.551018 2.671282
-g neck
-v 0.000000 44.511021 -1.741966
-v 1.643453 44.138260 -0.084829
-v 1.434631 43.838139 0.539554
-v 0.000000 43.511559 1.342167
-v 0.434846 43.546337 1.273696
-v 0.802149 44.461159 2.450193
-v 0.728344 44.082905 2.525375
-v 0.618673 44.037376 2.532208
-g head
-v 0.435118 45.366917 2.885839
-v 0.399379 45.288876 2.761150
-v -2.233712 46.052860 -0.701550
-v -2.356700 46.371662 -0.945070
-v -2.129751 46.582901 -0.002909
-v -2.048895 46.197426 0.028698
-v -2.374975 46.930481 -1.147094
-v -2.193701 47.007973 -0.112555
-v -2.071954 46.104523 -0.568608
-v -2.084782 46.478840 -0.786580
-v -1.985627 46.238003 0.109756
-v -1.996323 45.854553 -0.077751
-v -2.184366 45.824848 -0.527355
-v -2.199836 46.976791 -1.018102
-v -2.164311 47.306286 -0.822076
-v -2.085468 47.307575 -0.449441
-v -2.324157 47.292999 -0.473294
-v -2.399405 47.288757 -0.875092
-v -2.145470 47.173084 -0.598831
-v -1.957477 45.822636 0.016447
-v -1.962599 45.799381 -0.390917
-v -2.135983 47.164112 -0.093246
-v -0.211297 47.502041 2.866419
-v -0.121064 47.136494 2.952435
-v -0.203359 47.129124 2.784944
-v -0.385524 47.446369 2.752810
-v -0.126709 45.956680 2.997131
-v -0.173945 46.065571 3.378407
-v -0.162939 46.173016 3.513085
-v -0.140245 46.370117 3.533911
-v -0.325978 46.087467 3.123376
-v -0.368846 46.285789 3.155359
-v -0.434814 46.065155 2.875690
-v -0.295494 45.985935 2.843136
-v -0.453541 46.006001 2.707664
-v -0.517784 46.220650 2.736845
-v -0.502215 46.288452 2.870486
-v -0.241459 46.806549 2.968424
-v -0.261137 46.494774 3.135468
-v -0.415892 46.476551 2.838915
-v -0.308538 46.809006 2.792964
-v -0.115252 46.796310 3.186177
-g neck
-v -0.255299 44.799629 2.824369
-v -0.578731 44.807209 2.649870
-v -0.607162 45.061810 2.644542
-v -0.251677 44.969063 2.959043
-v -1.379041 44.834637 1.929841
-g head
-v -1.435415 45.376503 1.939306
-v -1.135785 45.384930 2.217185
-g neck
-v -1.075168 44.822956 2.271626
-v -1.602512 44.892147 1.429569
-v -1.800390 45.008404 0.796295
-g head
-v -1.855538 45.433933 0.805303
-v -1.660953 45.391769 1.490839
-v -0.215659 45.385109 3.041754
-v -0.573158 45.366711 2.760294
-v -0.571872 45.457867 2.757996
-v -0.421554 45.494305 2.944354
-v -0.230820 45.528221 3.046134
-v -1.916539 45.922909 0.771577
-v -1.773437 45.903870 1.510448
-v -0.723015 46.013748 2.619651
-v -1.219013 45.930645 2.453835
-v -1.267092 46.410652 2.473508
-v -0.744578 46.447334 2.662624
-v -1.863565 46.446266 1.548479
-v -1.980372 46.446674 0.806397
-v -0.599075 47.725235 2.876139
-v -0.975188 47.774609 2.713178
-v -1.011915 48.097744 2.613864
-v -0.616120 48.086552 2.830470
-v -2.046862 47.369610 0.891674
-v -0.269400 48.044182 2.899422
-v -0.889069 48.564938 2.532358
-v -0.274645 48.551018 2.671283
-v -1.630272 48.544258 1.788723
-v -1.795660 48.355747 1.317321
-v -0.270335 47.750523 2.938207
-v -0.576571 45.192551 2.675371
-g neck
-v -0.237878 45.148773 2.960771
-v -0.256185 44.441036 2.925288
-v -0.576121 44.449539 2.705261
-v -1.305455 44.488728 1.908290
-v -1.537982 44.547672 1.382697
-v -1.750584 44.683987 0.776582
-g head
-v -0.429699 46.437195 2.743567
-v -0.597708 46.216816 2.726956
-v -0.928893 45.425690 2.341608
-g neck
-v -0.847334 44.815804 2.445218
-g head
-v -0.819501 47.635448 2.438749
-g neck
-v -1.062962 44.464783 2.260381
-g head
-v -1.831477 47.925926 1.501133
-v -1.841257 47.358566 1.558445
-v -2.044922 46.872238 0.850128
-v -1.831533 46.918098 1.535854
-v -1.472462 47.996971 2.146124
-v -1.496894 47.679802 2.337295
-v -0.742318 46.896404 2.601507
-v -0.439438 47.061573 2.549471
-v -0.300693 47.111622 2.678158
-v -0.389139 46.815556 2.693849
-v -1.145101 46.823231 2.457602
-v -1.664484 46.430706 2.063589
-v -1.588779 45.890568 2.022359
-v -1.372174 47.579578 2.342570
-v -0.832274 45.392368 2.392959
-v -0.761047 45.360428 2.504442
-v -0.244378 45.293312 2.870654
-v -0.508640 45.285748 2.683959
-v -0.476876 47.217857 2.551864
-v -0.560475 47.090477 2.475962
-v -0.553396 47.138710 2.474352
-v -1.252470 47.410206 2.486802
-v -0.810757 47.414444 2.571376
-v -0.822254 47.282017 2.515947
-v -1.234421 47.273205 2.437482
-v -0.803101 46.992805 2.521831
-v -1.159492 46.973991 2.462741
-v -1.432406 47.150818 2.255726
-v -1.585321 47.272770 2.090096
-v -1.507287 46.885128 2.072658
-v -1.414711 47.104397 2.256685
-v -0.176358 45.761963 3.006798
-v -0.342449 45.786144 2.870920
-v -0.537504 45.767044 2.752061
-g neck
-v -0.243835 44.027180 2.842765
-v -0.567438 44.061977 2.695372
-v -1.022229 44.121124 2.214885
-v -1.230159 44.173725 1.791451
-v -1.504214 44.232880 1.298574
-v -1.645041 44.389717 0.742875
-v -1.776782 44.845676 0.370797
-g head
-v -1.861614 45.223930 0.224294
-v -1.880227 45.493279 0.073830
-g neck
-v -1.094478 45.110336 -1.397214
-g head
-...
[truncated message content] |
|
From: <tre...@us...> - 2008-02-06 01:20:59
|
Revision: 713
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=713&view=rev
Author: trevorolio
Date: 2008-02-05 17:21:04 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
Added the back end and 3D rendering of attachment geometries and appearances, but not yet morphs or skin textures.
Also no example UI for picking attachments in the body editor, yet.
The "time to private parts" for Ogoglio starts now.
Modified Paths:
--------------
maven/trunk/ogoglio-viewer-applet/src/main/java/com/ogoglio/viewer/applet/ViewerApplet.java
Modified: maven/trunk/ogoglio-viewer-applet/src/main/java/com/ogoglio/viewer/applet/ViewerApplet.java
===================================================================
--- maven/trunk/ogoglio-viewer-applet/src/main/java/com/ogoglio/viewer/applet/ViewerApplet.java 2008-02-06 01:20:50 UTC (rev 712)
+++ maven/trunk/ogoglio-viewer-applet/src/main/java/com/ogoglio/viewer/applet/ViewerApplet.java 2008-02-06 01:21:04 UTC (rev 713)
@@ -132,7 +132,7 @@
try {
serviceURI = new URI(getParameter("serviceURI"));
String port = serviceURI.getPort() == -1 ? "" : ":" + serviceURI.getPort();
- serviceURI = URI.create(serviceURI.getScheme() + "://" + serverIP + port + serviceURI.getPath());
+ //serviceURI = URI.create(serviceURI.getScheme() + "://" + serverIP + port + serviceURI.getPath());
System.out.println("Service URI is: " + serviceURI);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 01:20:43
|
Revision: 712
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=712&view=rev
Author: trevorolio
Date: 2008-02-05 17:20:50 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
Added the back end and 3D rendering of attachment geometries and appearances, but not yet morphs or skin textures.
Also no example UI for picking attachments in the body editor, yet.
The "time to private parts" for Ogoglio starts now.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodySettingRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AttachmentRecord.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-2.xml
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -10,6 +10,8 @@
import com.ogoglio.appdev.migrate.Migration;
import com.ogoglio.appdev.persist.PersistException;
+import com.ogoglio.persist.BodyDataRecord;
+import com.ogoglio.persist.BodyPersistTasks;
import com.ogoglio.persist.ServiceInitializationPersistTasks;
import com.ogoglio.util.Log;
import com.ogoglio.util.PropStorage;
@@ -21,7 +23,6 @@
}
public boolean populate(SessionFactory sessionFactory, int from, int to) throws PersistException {
-
if ((from != 0) || (to != 1)) {
Log.error("Migration called in the wrong place! Expected 0->1 but was:" + from + " -> " + to + "!");
Log.error("Migration called in the wrong place! Check the ordering of migration array!");
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -1,31 +1,51 @@
package com.ogoglio.migrate;
+import javax.naming.Context;
+import javax.servlet.ServletConfig;
+
+import org.hibernate.SessionFactory;
+
import com.ogoglio.appdev.migrate.Migration;
import com.ogoglio.appdev.migrate.MigrationSupport;
+import com.ogoglio.appdev.persist.PersistException;
+import com.ogoglio.persist.ServiceStateTasks;
+import com.ogoglio.util.Log;
+import com.ogoglio.xml.ServiceStateDocument;
public class OgoglioServerMigration extends MigrationSupport {
- public static final OgoglioServerMigration SINGLETON = new OgoglioServerMigration();
-
+ public static final OgoglioServerMigration SINGLETON = new OgoglioServerMigration();
+
// THIS IS THE CRITICAL VERSION NUMBER
- private static final int DB_VERSION_NUMBER = 1;
+ private static final int DB_VERSION_NUMBER = 2;
// this is the set of semantic migrations, in order
- private static final Migration[] migration = { new AccountsForTesting() };
+ private static final Migration[] migration = { new AccountsForTesting(), new NoopMigration() };
- public Migration[] getMigrationList() {
- return migration;
- }
+ public Migration[] getMigrationList() {
+ return migration;
+ }
- public int getVersionNumber() {
- return DB_VERSION_NUMBER;
- }
+ public int getVersionNumber() {
+ return DB_VERSION_NUMBER;
+ }
- public String getResourcePath() { return "com/ogoglio/migrate"; }
-
- private OgoglioServerMigration() {
-
- }
-
-
+ public String getResourcePath() {
+ return "com/ogoglio/migrate";
+ }
+
+ private OgoglioServerMigration() {
+
+ }
+
+ public static class NoopMigration implements Migration {
+ public boolean patch(SessionFactory sessionFactory, ServletConfig servletConfig, Context ctx, int from, int to) throws PersistException {
+ return true;
+ }
+
+ public boolean populate(SessionFactory sessionFactory, int from, int to) throws PersistException {
+ return true;
+ }
+ }
+
}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AttachmentRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AttachmentRecord.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AttachmentRecord.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -0,0 +1,71 @@
+/* Copyright 2008 Transmutable (http://transmutable.com/)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. */
+package com.ogoglio.persist;
+
+import com.ogoglio.util.ArgumentUtils;
+
+public class AttachmentRecord {
+
+ private long attachmentID = -1;
+
+ private String templateOwner = null;
+
+ private long templateID = -1;
+
+ private long bodyConfigurationID = -1;
+
+ public AttachmentRecord(){
+ }
+
+ public AttachmentRecord(String templateOwner, long templateID, long bodyConfigurationID){
+ ArgumentUtils.assertNotEmpty(templateOwner);
+ this.templateOwner = templateOwner;
+ ArgumentUtils.assertNotNegative(templateID);
+ this.templateID = templateID;
+ ArgumentUtils.assertNotNegative(bodyConfigurationID);
+ this.bodyConfigurationID = bodyConfigurationID;
+ }
+
+ public long getBodyConfigurationID() {
+ return bodyConfigurationID;
+ }
+
+ public void setBodyConfigurationID(long bodyConfigurationID) {
+ this.bodyConfigurationID = bodyConfigurationID;
+ }
+
+ public long getAttachmentID() {
+ return attachmentID;
+ }
+
+ public void setAttachmentID(long attachmentID) {
+ this.attachmentID = attachmentID;
+ }
+
+ public long getTemplateID() {
+ return templateID;
+ }
+
+ public void setTemplateID(long templateID) {
+ this.templateID = templateID;
+ }
+
+ public String getTemplateOwner() {
+ return templateOwner;
+ }
+
+ public void setTemplateOwner(String templateOwner) {
+ this.templateOwner = templateOwner;
+ }
+}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -8,9 +8,8 @@
import com.ogoglio.appdev.persist.HibernateTask;
import com.ogoglio.appdev.persist.PersistException;
-import com.ogoglio.site.AuthServlet;
import com.ogoglio.util.WebConstants;
-import com.ogoglio.xml.AccountDocument;
+import com.ogoglio.xml.AttachmentDocument;
import com.ogoglio.xml.BodyConfigurationDocument;
import com.ogoglio.xml.BodySettingDocument;
import com.ogoglio.xml.server.DocumentFactory;
@@ -33,6 +32,10 @@
public static final String BODY_SETTING_BY_CONFIGURATION_ID_AND_SETTING_NAME = "com.ogoglio.persist.bodySettingByConfigurationIDAndSettingName";
+ public static final String ATTACHMENTS_BY_CONFIGURATION_ID = "com.ogoglio.persist.attachmentsByConfigurationID";
+
+ public static final String ATTACHMENT_BY_ID = "com.ogoglio.persist.attachmentByID";
+
public static BodySettingRecord createOrUpdateBodySetting(final long bodyConfigurationID, final String settingName, final float setting, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session session) throws PersistException {
@@ -97,6 +100,13 @@
for (int i = 0; i < settings.length; i++) {
session.delete(settings[i]);
}
+
+ Query attachmentsQuery = session.getNamedQuery(ATTACHMENTS_BY_CONFIGURATION_ID);
+ attachmentsQuery.setLong("bodyConfigurationID", record.getBodyConfigurationID());
+ AttachmentRecord[] attachments = (AttachmentRecord[])attachmentsQuery.list().toArray(new AttachmentRecord[0]);
+ for (int j = 0; j < attachments.length; j++) {
+ session.delete(attachments[j]);
+ }
session.delete(record);
return Boolean.TRUE;
@@ -142,6 +152,18 @@
return (BodySettingRecord[]) task.execute();
}
+ public static AttachmentRecord[] findAttachmentsByConfigurationID(final long bodyConfigurationID, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query query = session.getNamedQuery(ATTACHMENTS_BY_CONFIGURATION_ID);
+ query.setLong("bodyConfigurationID", bodyConfigurationID);
+ return query.list().toArray(new AttachmentRecord[0]);
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (AttachmentRecord[]) task.execute();
+ }
+
public static BodyDataRecord findBodyDataRecord(final String fileName, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session session) throws PersistException {
@@ -211,8 +233,6 @@
HibernateTask task = new HibernateTask() {
public Object run(Session session) throws PersistException {
if(username.startsWith(WebConstants.GUEST_COOKIE_PREFIX)){ //fake up a configuration for our guests
- Query bodyDataQuery = session.getNamedQuery(BODY_DATA);
- BodyDataRecord[] bodyDataRecs = (BodyDataRecord[])bodyDataQuery.list().toArray(new BodyDataRecord[0]);
BodyConfigurationDocument doc = new BodyConfigurationDocument(0, username, "Guest Body", -1, null);
return doc;
}
@@ -227,12 +247,19 @@
Query bodyConfigQuery = session.getNamedQuery(BODY_CONFIGURATION_BY_ID);
bodyConfigQuery.setLong("bodyConfigurationID", accountRecord.getDefaultBodyConfigurationID());
BodyConfigurationRecord rec = (BodyConfigurationRecord)bodyConfigQuery.uniqueResult();
+ if(rec == null){
+ throw new IllegalStateException("User has an invalid body configuration: " + accountRecord.getUsername());
+ }
Query bodySettingQuery = session.getNamedQuery(BODY_SETTINGS_BY_CONFIGURATION_ID);
bodySettingQuery.setLong("bodyConfigurationID", rec.getBodyConfigurationID());
BodySettingRecord[] settingRecords = (BodySettingRecord[])bodySettingQuery.list().toArray(new BodySettingRecord[0]);
- return DocumentFactory.documentFromRecord(rec, settingRecords);
+ Query attachmentsQuery = session.getNamedQuery(ATTACHMENTS_BY_CONFIGURATION_ID);
+ attachmentsQuery.setLong("bodyConfigurationID", rec.getBodyConfigurationID());
+ AttachmentRecord[] attachmentRecords = (AttachmentRecord[])bodySettingQuery.list().toArray(new AttachmentRecord[0]);
+
+ return DocumentFactory.documentFromRecord(rec, settingRecords, attachmentRecords);
}
};
task.setSessionFactory(sessionFactory);
@@ -299,6 +326,20 @@
session.update(changedRec);
}
+ Query attachmentsQuery = session.getNamedQuery(ATTACHMENTS_BY_CONFIGURATION_ID);
+ attachmentsQuery.setLong("bodyConfigurationID", configRec.getBodyConfigurationID());
+ AttachmentRecord[] attachmentRecs = (AttachmentRecord[])attachmentsQuery.list().toArray(new AttachmentRecord[0]);
+ Vector deletedAttachmentRecs = getDeletedAttachmentRecords(proposedDoc.getAttachmentDocuments(), attachmentRecs);
+ for (int i = 0; i < deletedAttachmentRecs.size(); i++) {
+ AttachmentRecord deletedRec = (AttachmentRecord)deletedAttachmentRecs.get(i);
+ session.delete(deletedRec);
+ }
+ Vector addedAttachmentDocs = getAddedAttachmentDocuments(proposedDoc.getAttachmentDocuments(), attachmentRecs);
+ for (int i = 0; i < addedAttachmentDocs.size(); i++) {
+ AttachmentDocument doc = (AttachmentDocument)addedAttachmentDocs.get(i);
+ AttachmentRecord rec = new AttachmentRecord(doc.getTemplateOwner(), doc.getTemplateID(), configRec.getBodyConfigurationID());
+ session.save(rec);
+ }
return proposedDoc;
}
};
@@ -325,6 +366,40 @@
return result;
}
+ private static Vector getAddedAttachmentDocuments(AttachmentDocument[] attachmentDocs, AttachmentRecord[] attachmentRecs) {
+ Vector result = new Vector();
+ for (int i = 0; i < attachmentDocs.length; i++) {
+ boolean found = false;
+ for (int j = 0; j < attachmentRecs.length; j++) {
+ if(attachmentDocs[i].getAttachmentID() == attachmentRecs[j].getAttachmentID()){
+ found = true;
+ break;
+ }
+ }
+ if(!found){
+ result.add(attachmentDocs[i]);
+ }
+ }
+ return result;
+ }
+
+ private static Vector getDeletedAttachmentRecords(AttachmentDocument[] attachmentDocs, AttachmentRecord[] attachmentRecs) {
+ Vector result = new Vector();
+ for (int i = 0; i < attachmentRecs.length; i++) {
+ boolean found = false;
+ for (int j = 0; j < attachmentDocs.length; j++) {
+ if(attachmentRecs[i].getAttachmentID() == attachmentDocs[j].getAttachmentID()){
+ found = true;
+ break;
+ }
+ }
+ if(!found){
+ result.add(attachmentRecs[i]);
+ }
+ }
+ return result;
+ }
+
private static Vector getAddedBodySettingDocuments(BodySettingDocument[] settingDocs, BodySettingRecord[] settingRecs) {
Vector result = new Vector();
for (int i = 0; i < settingDocs.length; i++) {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodySettingRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodySettingRecord.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodySettingRecord.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -1,3 +1,16 @@
+/* Copyright 2008 Transmutable (http://transmutable.com/)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. */
package com.ogoglio.persist;
import com.ogoglio.util.ArgumentUtils;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -28,11 +28,12 @@
import com.ogoglio.util.Log;
import com.ogoglio.xml.TemplateDocument;
-
public class TemplatePersistTasks {
public static final String TEMPLATE_BY_ID = "com.ogoglio.persist.templateByID";
+
public static final String TEMPLATE_BY_IDS = "com.ogoglio.persist.templateByIDs";
+
protected static final String TEMPLATE_BY_OWNER = "com.ogoglio.persist.templateByOwner";
public static TemplateRecord createTemplate(final String displayName, final String ownerUsername, SessionFactory sessionFactory) throws PersistException {
@@ -41,7 +42,7 @@
public Object run(Session session) throws PersistException {
Query accountQuery = session.getNamedQuery(AccountPersistTasks.ACCOUNT_BY_USERNAME);
accountQuery.setString("username", ownerUsername);
- if(accountQuery.uniqueResult() == null) {
+ if (accountQuery.uniqueResult() == null) {
Log.error("Tried to create a template for a nonexistent user: " + ownerUsername);
return null;
}
@@ -50,15 +51,15 @@
}
};
task.setSessionFactory(sessionFactory);
- return (TemplateRecord)task.execute();
+ return (TemplateRecord) task.execute();
}
-
+
public static TemplateRecord findTemplateByTemplateID(final long templateID, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session session) throws PersistException {
Query query = session.getNamedQuery(TEMPLATE_BY_ID);
query.setLong("templateID", templateID);
- TemplateRecord rec = (TemplateRecord)query.uniqueResult();
+ TemplateRecord rec = (TemplateRecord) query.uniqueResult();
initializeCollection(rec);
return rec;
}
@@ -68,10 +69,10 @@
}
private static void initializeCollection(TemplateRecord rec) {
- if (rec!=null) {
- Hibernate.initialize(rec.getSupportFiles());
+ if (rec != null) {
+ Hibernate.initialize(rec.getSupportFiles());
}
- }
+ }
public static TemplateRecord[] findTemplatesByTemplateIDs(final long[] ids, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
@@ -89,13 +90,14 @@
task.setSessionFactory(sessionFactory);
return (TemplateRecord[]) task.execute();
}
- private static TemplateRecord[] prepareTemplatesCollections(Query query) {
- TemplateRecord[] allRecs=(TemplateRecord[])query.list().toArray(new TemplateRecord[0]);
- for(int i=0; i<allRecs.length;++i) {
- initializeCollection(allRecs[i]);
+
+ private static TemplateRecord[] prepareTemplatesCollections(Query query) {
+ TemplateRecord[] allRecs = (TemplateRecord[]) query.list().toArray(new TemplateRecord[0]);
+ for (int i = 0; i < allRecs.length; ++i) {
+ initializeCollection(allRecs[i]);
}
return allRecs;
- }
+ }
public static TemplateRecord[] findTemplatesByOwnerUsername(final String username, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
@@ -111,24 +113,24 @@
public static TemplateRecord update(TemplateDocument newDoc, TemplateRecord record, SessionFactory sessionFactory) throws PersistException {
boolean dirty = false;
- if(newDoc.getDisplayName() != null && newDoc.getDisplayName().trim().length() != 0 && !newDoc.getDisplayName().trim().equals(record.getDisplayName())) {
+ if (newDoc.getDisplayName() != null && newDoc.getDisplayName().trim().length() != 0 && !newDoc.getDisplayName().trim().equals(record.getDisplayName())) {
dirty = true;
record.setDisplayName(newDoc.getDisplayName().trim());
}
- if(newDoc.isSeat() != record.isSeat()){
+ if (newDoc.isSeat() != record.isSeat()) {
dirty = true;
record.setSeat(newDoc.isSeat());
}
Point3d seatPosition = newDoc.getSeatPosition();
- if(seatPosition.x != record.getSeatX() || seatPosition.y != record.getSeatY() || seatPosition.z != record.getSeatZ()){
+ if (seatPosition.x != record.getSeatX() || seatPosition.y != record.getSeatY() || seatPosition.z != record.getSeatZ()) {
dirty = true;
record.setSeatX(seatPosition.x);
record.setSeatY(seatPosition.y);
record.setSeatZ(seatPosition.z);
}
Quat4d seatRotation = newDoc.getSeatRotation();
- if(seatRotation.w != record.getSeatRW() || seatRotation.x != record.getSeatRX() || seatRotation.y != record.getSeatRY() || seatRotation.z != record.getSeatRZ()){
+ if (seatRotation.w != record.getSeatRW() || seatRotation.x != record.getSeatRX() || seatRotation.y != record.getSeatRY() || seatRotation.z != record.getSeatRZ()) {
dirty = true;
record.setSeatRW(seatRotation.w);
record.setSeatRX(seatRotation.x);
@@ -136,7 +138,12 @@
record.setSeatRZ(seatRotation.z);
}
- if(dirty) {
+ if (record.isAttachment() != newDoc.isAttachment()) {
+ record.setAttachment(newDoc.isAttachment());
+ dirty = true;
+ }
+
+ if (dirty) {
return update(record, sessionFactory);
}
return record;
@@ -153,111 +160,111 @@
return (TemplateRecord) task.execute();
}
- public static boolean deleteTemplate(final TemplateRecord record, SessionFactory sessionFactory) throws PersistException{
- HibernateTask task = new HibernateTask() {
- public Object run(Session session) throws PersistException {
- Query accountQuery = session.getNamedQuery(AccountPersistTasks.ACCOUNT_BY_USERNAME);
- accountQuery.setString("username", record.getOwnerUsername());
- AccountRecord accountRecord = (AccountRecord) accountQuery.uniqueResult();
- if (accountRecord == null) {
- return null;
- }
-
- Query possQuery = session.getNamedQuery(PossessionPersistTasks.POSSESSIONS_BY_TEMPLATE_ID);
- possQuery.setLong("templateID", record.getTemplateID());
- PossessionRecord[] currentPossessions = (PossessionRecord[])possQuery.list().toArray(new PossessionRecord[0]);
- if(currentPossessions.length > 0){
- return Boolean.FALSE;
- }
+ public static boolean deleteTemplate(final TemplateRecord record, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query accountQuery = session.getNamedQuery(AccountPersistTasks.ACCOUNT_BY_USERNAME);
+ accountQuery.setString("username", record.getOwnerUsername());
+ AccountRecord accountRecord = (AccountRecord) accountQuery.uniqueResult();
+ if (accountRecord == null) {
+ return null;
+ }
- session.delete(record);
- return Boolean.TRUE;
- }
- };
- task.setSessionFactory(sessionFactory);
- return task.execute() == Boolean.TRUE;
- }
+ Query possQuery = session.getNamedQuery(PossessionPersistTasks.POSSESSIONS_BY_TEMPLATE_ID);
+ possQuery.setLong("templateID", record.getTemplateID());
+ PossessionRecord[] currentPossessions = (PossessionRecord[]) possQuery.list().toArray(new PossessionRecord[0]);
+ if (currentPossessions.length > 0) {
+ return Boolean.FALSE;
+ }
+
+ session.delete(record);
+ return Boolean.TRUE;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return task.execute() == Boolean.TRUE;
+ }
+
// XXX this should be unified with its brothers that updates the same for scripts and geom
- public static void updateSupportFileTemplateLastModified(TemplateRecord record, String name, boolean newValue, SessionFactory sessionFactory) throws PersistException {
- TemplateSupportFileRecord scriptRec = record.findSupportFile(name);
- boolean currentValue;
+ public static void updateSupportFileTemplateLastModified(TemplateRecord record, String name, boolean newValue, SessionFactory sessionFactory) throws PersistException {
+ TemplateSupportFileRecord scriptRec = record.findSupportFile(name);
+ boolean currentValue;
- if (scriptRec==null) {
- currentValue = false;
- } else {
- currentValue=true;
- }
+ if (scriptRec == null) {
+ currentValue = false;
+ } else {
+ currentValue = true;
+ }
- if (currentValue==newValue) {
- if (newValue==false) {
- return; //nothing to do
- }
- //only thing to do is refresh timestamp
- scriptRec.setLastChanged(new Date());
- } else {
- if (newValue==true) {
- scriptRec= TemplateSupportFilePersistTasks.createSupportFileForMaterial(name, sessionFactory);
- record.addTemplateSupportFileRecord(scriptRec);
- } else {
- record.getSupportFiles().remove(scriptRec);
- }
- }
- TemplatePersistTasks.update(record, sessionFactory);
- }
- // XXX this should be unified with its brother that updates the same for scripts or support files
- public static void updateGeometryFileTemplateLastModified(TemplateRecord record, int LOD, boolean newValue, SessionFactory sessionFactory) throws PersistException {
- TemplateSupportFileRecord scriptRec = record.findGeometryFileRec(LOD);
- boolean currentValue;
+ if (currentValue == newValue) {
+ if (newValue == false) {
+ return; //nothing to do
+ }
+ //only thing to do is refresh timestamp
+ scriptRec.setLastChanged(new Date());
+ } else {
+ if (newValue == true) {
+ scriptRec = TemplateSupportFilePersistTasks.createSupportFileForMaterial(name, sessionFactory);
+ record.addTemplateSupportFileRecord(scriptRec);
+ } else {
+ record.getSupportFiles().remove(scriptRec);
+ }
+ }
+ TemplatePersistTasks.update(record, sessionFactory);
+ }
- if (scriptRec==null) {
- currentValue = false;
- } else {
- currentValue=true;
- }
+ // XXX this should be unified with its brother that updates the same for scripts or support files
+ public static void updateGeometryFileTemplateLastModified(TemplateRecord record, int LOD, boolean newValue, SessionFactory sessionFactory) throws PersistException {
+ TemplateSupportFileRecord scriptRec = record.findGeometryFileRec(LOD);
+ boolean currentValue;
- if (currentValue==newValue) {
- if (newValue==false) {
- return; //nothing to do
- }
- //only thing to do is refresh timestamp
- scriptRec.setLastChanged(new Date());
- } else {
- if (newValue==true) {
- scriptRec= TemplateSupportFilePersistTasks.createSupportFileForGeometry(LOD, sessionFactory);
- record.addTemplateSupportFileRecord(scriptRec);
- } else {
- record.getSupportFiles().remove(scriptRec);
- }
- }
- TemplatePersistTasks.update(record, sessionFactory);
- }
- public static void updateScriptFilePropOfTemplate(TemplateRecord record, boolean newValue, SessionFactory sessionFactory) throws PersistException {
- TemplateSupportFileRecord scriptRec = record.findScriptFileRec();
- boolean currentValue;
+ if (scriptRec == null) {
+ currentValue = false;
+ } else {
+ currentValue = true;
+ }
- if (scriptRec==null) {
- currentValue = false;
- } else {
- currentValue=true;
- }
-
- if (currentValue==newValue) {
- if (newValue==false) {
- return; //nothing to do
- }
- //only thing to do is refresh timestamp
- scriptRec.setLastChanged(new Date());
- } else {
- if (newValue==true) {
- scriptRec= TemplateSupportFilePersistTasks.createSupportFileForScript(sessionFactory);
- record.addTemplateSupportFileRecord(scriptRec);
- } else {
- record.getSupportFiles().remove(scriptRec);
- }
- }
+ if (currentValue == newValue) {
+ if (newValue == false) {
+ return; //nothing to do
+ }
+ //only thing to do is refresh timestamp
+ scriptRec.setLastChanged(new Date());
+ } else {
+ if (newValue == true) {
+ scriptRec = TemplateSupportFilePersistTasks.createSupportFileForGeometry(LOD, sessionFactory);
+ record.addTemplateSupportFileRecord(scriptRec);
+ } else {
+ record.getSupportFiles().remove(scriptRec);
+ }
+ }
TemplatePersistTasks.update(record, sessionFactory);
- }
-}
+ }
+ public static void updateScriptFilePropOfTemplate(TemplateRecord record, boolean newValue, SessionFactory sessionFactory) throws PersistException {
+ TemplateSupportFileRecord scriptRec = record.findScriptFileRec();
+ boolean currentValue;
+ if (scriptRec == null) {
+ currentValue = false;
+ } else {
+ currentValue = true;
+ }
+ if (currentValue == newValue) {
+ if (newValue == false) {
+ return; //nothing to do
+ }
+ //only thing to do is refresh timestamp
+ scriptRec.setLastChanged(new Date());
+ } else {
+ if (newValue == true) {
+ scriptRec = TemplateSupportFilePersistTasks.createSupportFileForScript(sessionFactory);
+ record.addTemplateSupportFileRecord(scriptRec);
+ } else {
+ record.getSupportFiles().remove(scriptRec);
+ }
+ }
+ TemplatePersistTasks.update(record, sessionFactory);
+ }
+}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateRecord.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateRecord.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -40,6 +40,8 @@
private Set supportFiles = new HashSet();
+ private boolean attachment = false;
+
public TemplateRecord() {
}
@@ -262,4 +264,12 @@
public void setSeat(boolean seat) {
this.seat = seat;
}
+
+ public boolean isAttachment() {
+ return attachment;
+ }
+
+ public void setAttachment(boolean attachment) {
+ this.attachment = attachment;
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -29,6 +29,7 @@
import javax.vecmath.Vector3d;
import com.ogoglio.client.UserInputListener;
+import com.ogoglio.client.model.Attachment;
import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.client.model.BodyDataProvider;
import com.ogoglio.client.model.Door;
@@ -47,7 +48,9 @@
import com.ogoglio.util.Log;
import com.ogoglio.util.BlockingQueue.QueueClosedException;
import com.ogoglio.viewer.j3d.J3DRenderer;
+import com.ogoglio.xml.AttachmentDocument;
import com.ogoglio.xml.BodyConfigurationDocument;
+import com.ogoglio.xml.BodySettingDocument;
import com.ogoglio.xml.DoorDocument;
import com.ogoglio.xml.PageDocument;
import com.ogoglio.xml.SettingDocument;
@@ -75,7 +78,7 @@
//TODO stop shoving the log into memory
private Vector log = new Vector();
- private Space space = null;
+ private Space space = null;
private J3DRenderer renderer = null;
@@ -885,7 +888,7 @@
String role = listener.getUserRole(space.getSpaceID(), username);
String voiceURI = listener.getUserVoiceU1RI(username);
String textURI = listener.getUserTextURI(username);
- User user = new User(space, username, position, new BodyConfiguration(bodyConfigDoc), null, role, voiceURI, textURI);
+ User user = new User(space, username, position, createBodyConfiguration(bodyConfigDoc), null, role, voiceURI, textURI);
space.addUser(user);
SpaceEvent spaceEvent = new SpaceEvent(SpaceEvent.ADD_USER_EVENT);
@@ -953,6 +956,30 @@
return space.getSpaceID();
}
+ private BodyConfiguration createBodyConfiguration(BodyConfigurationDocument configDoc) {
+ BodyConfiguration config = new BodyConfiguration(configDoc.getBodyConfigurationID(), configDoc.getDisplayName(), configDoc.getBodyDataID(), configDoc.getBaseTextureName());
+ BodySettingDocument[] settingDocs = configDoc.getBodySettingDocuments();
+ for (int i = 0; i < settingDocs.length; i++) {
+ config.addSetting(settingDocs[i].getSettingName(), settingDocs[i].getSetting());
+ }
+ AttachmentDocument[] attachmentDocs = configDoc.getAttachmentDocuments();
+ for (int i = 0; i < attachmentDocs.length; i++) {
+ Template template = space.getTemplate(attachmentDocs[i].getTemplateID());
+ if(template == null){
+ TemplateDocument templateDoc = listener.getTemplateDocument(attachmentDocs[i].getTemplateID());
+ if(templateDoc == null){
+ Log.warn("Could not load an attachment template: " + attachmentDocs[i].getTemplateID());
+ continue;
+ }
+ template = new Template(templateDoc);
+ space.addTemplate(template);
+ }
+ Attachment attachment = new Attachment(attachmentDocs[i].getAttachmentID(), template, config);
+ config.addAttachment(attachment);
+ }
+ return config;
+ }
+
public SpaceDocument toSpaceDocument() {
SpaceDocument spaceDoc = new SpaceDocument(space.getSpaceID(), space.getDisplayName(), space.getOwnerUsername(), false, 0, space.shouldDisplaySea(), space.getSeaLevel(), -1, null, new float[] {space.getBackgroundColor().x, space.getBackgroundColor().y, space.getBackgroundColor().z });
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -40,6 +40,7 @@
import com.ogoglio.media.MediaService;
import com.ogoglio.persist.AccountPersistTasks;
import com.ogoglio.persist.AccountRecord;
+import com.ogoglio.persist.AttachmentRecord;
import com.ogoglio.persist.BodyConfigurationRecord;
import com.ogoglio.persist.BodyPersistTasks;
import com.ogoglio.persist.BodySettingRecord;
@@ -286,8 +287,7 @@
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
- BodySettingRecord[] settingRecords = BodyPersistTasks.findBodySettingsByConfigurationID(bodyConfigID, getSessionFactory());
- sendStringResponse(DocumentFactory.documentFromRecord(record, settingRecords).toString(), "text/xml", response);
+ sendStringResponse(createBodyConfigurationDocument(record).toString(), "text/xml", response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements, AccountRecord authedAccount) throws PersistException, IOException {
@@ -402,7 +402,8 @@
private BodyConfigurationDocument createBodyConfigurationDocument(BodyConfigurationRecord record) throws PersistException {
BodySettingRecord[] settingRecords = BodyPersistTasks.findBodySettingsByConfigurationID(record.getBodyConfigurationID(), getSessionFactory());
- return DocumentFactory.documentFromRecord(record, settingRecords);
+ AttachmentRecord[] attachmentRecords = BodyPersistTasks.findAttachmentsByConfigurationID(record.getBodyConfigurationID(), getSessionFactory());
+ return DocumentFactory.documentFromRecord(record, settingRecords, attachmentRecords);
}
private void sendValidationMail(PendingEmailValidationRecord validationRecord) throws MailSendException {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -242,14 +242,14 @@
}
public void doDelete(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
- handleRequest(request, response, pathElements, new TemplateSupportFileDelete());
+ handleModifyRequest(request, response, pathElements, new TemplateSupportFileDelete());
}
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
- handleRequest(request, response, pathElements, new TemplateSupportFilePost());
+ handleModifyRequest(request, response, pathElements, new TemplateSupportFilePost());
}
- public void handleRequest(HttpServletRequest request, HttpServletResponse response, String[] pathElements, TemplateSupportFileAction action) throws ServletException, IOException {
+ public void handleModifyRequest(HttpServletRequest request, HttpServletResponse response, String[] pathElements, TemplateSupportFileAction action) throws ServletException, IOException {
String usernameParam = pathElements[1];
try {
AccountRecord authedAccount = getAuthedAccount(request, response);
@@ -389,21 +389,9 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
String usernameParam = pathElements[1];
try {
- AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount == null && !AuthServlet.isGuest(request)) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
- AccountRecord requestedAccount = AccountPersistTasks.findAccountByUsername(usernameParam, getSessionFactory());
- if (requestedAccount == null) {
- response.setStatus(HttpServletResponse.SC_NOT_FOUND);
- return;
- }
-
long templateID = Long.parseLong(pathElements[3]);
TemplateRecord record = TemplatePersistTasks.findTemplateByTemplateID(templateID, getSessionFactory());
- if (record == null || !record.getOwnerUsername().equals(requestedAccount.getUsername())) {
+ if (record == null || !record.getOwnerUsername().equals(usernameParam)) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -4,6 +4,7 @@
import java.util.Iterator;
import java.util.Set;
+import com.ogoglio.persist.AttachmentRecord;
import com.ogoglio.persist.BodyConfigurationRecord;
import com.ogoglio.persist.BodyDataRecord;
import com.ogoglio.persist.BodySettingRecord;
@@ -14,6 +15,7 @@
import com.ogoglio.persist.SpaceRecord;
import com.ogoglio.persist.TemplateRecord;
import com.ogoglio.persist.TemplateSupportFileRecord;
+import com.ogoglio.xml.AttachmentDocument;
import com.ogoglio.xml.BodyConfigurationDocument;
import com.ogoglio.xml.BodyDataDocument;
import com.ogoglio.xml.PossessionDocument;
@@ -55,7 +57,7 @@
TemplateSupportFileDocument doc = documentFromRecord(rec);
supportSet.add(doc);
}
- return new TemplateDocument(templateRecord.getTemplateID(), templateRecord.getDisplayName(), templateRecord.getOwnerUsername(), templateRecord.getDescription(), supportSet, templateRecord.isSeat(), templateRecord.getSeatX(), templateRecord.getSeatY(), templateRecord.getSeatZ(), templateRecord.getSeatRW(), templateRecord.getSeatRX(), templateRecord.getSeatRY(), templateRecord.getSeatRZ());
+ return new TemplateDocument(templateRecord.getTemplateID(), templateRecord.getDisplayName(), templateRecord.getOwnerUsername(), templateRecord.getDescription(), supportSet, templateRecord.isAttachment(), templateRecord.isSeat(), templateRecord.getSeatX(), templateRecord.getSeatY(), templateRecord.getSeatZ(), templateRecord.getSeatRW(), templateRecord.getSeatRX(), templateRecord.getSeatRY(), templateRecord.getSeatRZ());
}
public static TemplateSupportFileDocument documentFromRecord(TemplateSupportFileRecord rec) {
@@ -76,11 +78,14 @@
}
}
- public static BodyConfigurationDocument documentFromRecord(BodyConfigurationRecord record, BodySettingRecord[] settingRecords) {
+ public static BodyConfigurationDocument documentFromRecord(BodyConfigurationRecord record, BodySettingRecord[] settingRecords, AttachmentRecord[] attachmentRecords) {
BodyConfigurationDocument doc = new BodyConfigurationDocument(record.getBodyConfigurationID(), record.getOwnerUsername(), record.getDisplayName(), record.getBodyDataID(), record.getBaseTextureName());
for (int i = 0; i < settingRecords.length; i++) {
doc.addBodySetting(settingRecords[i].getSettingName(), settingRecords[i].getSetting());
}
+ for (int i = 0; i < attachmentRecords.length; i++) {
+ doc.toElement().addChild(new AttachmentDocument(attachmentRecords[i].getAttachmentID(), attachmentRecords[i].getTemplateOwner(), attachmentRecords[i].getTemplateID(), attachmentRecords[i].getBodyConfigurationID()).toElement());
+ }
return doc;
}
}
Added: maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-2.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-2.xml (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-2.xml 2008-02-06 01:20:50 UTC (rev 712)
@@ -0,0 +1,335 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<!--
+ Copyright 2007,2008 Transmutable (http://transmutable.com/)
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+-->
+
+<hibernate-mapping>
+
+ <class name="com.ogoglio.persist.ServiceStateRecord"
+ table="ServiceStateRecords">
+ <id name="serviceStateID">
+ <generator class="identity" />
+ </id>
+ <property name="registrationState" not-null="true" />
+ </class>
+
+ <class name="com.ogoglio.persist.PendingEmailValidationRecord"
+ table="PendingEmailValidationRecords">
+ <id name="email">
+ <generator class="assigned" />
+ </id>
+ <property name="username" not-null="true" />
+ <property name="secret" not-null="true" />
+ <property name="creationDate" />
+ </class>
+
+ <class name="com.ogoglio.persist.PossessionRecord"
+ table="PossessionRecords">
+ <id name="possessionID">
+ <generator class="identity" />
+ </id>
+
+ <property name="ownerUsername" not-null="true" />
+ <property name="templateID" />
+ <property name="spaceID" />
+ <property name="thingID" />
+ </class>
+
+ <class name="com.ogoglio.persist.SpaceRecord"
+ table="SpaceRecords">
+ <id name="spaceID" access="field">
+ <generator class="identity" />
+ </id>
+
+ <property name="displayName" not-null="true" />
+ <property name="ownerUsername" not-null="true" update="false" />
+ <property name="published" />
+ <property name="maxGuests" />
+ <property name="displaySea" access="field" />
+ <property name="seaLevel" />
+ <property name="simID" />
+ <property name="lastModifiedTime" />
+ <property name="bgRed" />
+ <property name="bgGreen" />
+ <property name="bgBlue" />
+ </class>
+
+ <class name="com.ogoglio.persist.SpaceMemberRecord"
+ table="SpaceMemberRecords">
+ <id name="spaceMemberID">
+ <generator class="identity" />
+ </id>
+
+ <property name="spaceID" update="false" />
+ <property name="memberUsername" not-null="true" />
+ <property name="banned" />
+ <property name="role" />
+ </class>
+
+ <class name="com.ogoglio.persist.SimRecord" table="SimRecords">
+ <id name="simID">
+ <generator class="identity" />
+ </id>
+
+ <property name="displayName" />
+ <property name="simURIString" column="simURI" />
+ <property name="active" />
+ <property name="eventPort" />
+ </class>
+
+ <class name="com.ogoglio.persist.AccountRecord"
+ table="AccountRecords">
+ <id name="username">
+ <generator class="assigned" />
+ </id>
+ <property name="email" not-null="true" unique="true" />
+ <property name="emailValid" />
+ <property name="accountlevel" not-null="true" />
+ <property name="passwordHash" />
+ <property name="firstName" />
+ <property name="lastName" />
+ <property name="homepage" />
+ <property name="creationDate" update="false" />
+ <property name="cookie" />
+ <property name="frozenUntil" />
+ <property name="defaultBodyConfigurationID" />
+ <property name="voiceURI" />
+ <property name="textURI" />
+ </class>
+
+ <class name="com.ogoglio.persist.TemplateRecord"
+ table="TemplateRecords">
+ <id name="templateID">
+ <generator class="identity" />
+ </id>
+
+ <property name="ownerUsername" not-null="true" />
+ <property name="displayName" not-null="true" />
+ <property name="description" />
+ <property name="seat" />
+ <property name="attachment" />
+
+ <set name="supportFiles" table="TemplateTemplateSupportFiles"
+ cascade="all">
+ <key column="templateID" />
+ <many-to-many column="templateSupportFileID" unique="true"
+ class="com.ogoglio.persist.TemplateSupportFileRecord" />
+ </set>
+
+ <property name="seatX" />
+ <property name="seatY" />
+ <property name="seatZ" />
+ <property name="seatRX" />
+ <property name="seatRY" />
+ <property name="seatRZ" />
+ <property name="seatRW" />
+
+ </class>
+
+ <class name="com.ogoglio.appdev.migrate.DBVersionRecord"
+ table="DBVersion">
+ <id name="versionId">
+ <generator class="identity" />
+ </id>
+ <property name="version" not-null="true" />
+ </class>
+
+ <class name="com.ogoglio.persist.TemplateSupportFileRecord"
+ table="TemplateSupportFileRecords">
+ <id name="templateSupportFileID">
+ <generator class="identity" />
+ </id>
+ <property name="supportFile" />
+ <property name="script" not-null="true" />
+ <property name="levelOfDetail" not-null="true" />
+ <property name="lastChanged" not-null="true" />
+ </class>
+
+ <class name="com.ogoglio.persist.BodyDataRecord"
+ table="BodyDataRecords">
+ <id name="bodyDataID">
+ <generator class="identity" />
+ </id>
+ <property name="displayName" not-null="true" />
+ <property name="fileName" not-null="true" unique="true" />
+ </class>
+
+ <class name="com.ogoglio.persist.BodyConfigurationRecord"
+ table="BodyConfigurationRecords">
+ <id name="bodyConfigurationID">
+ <generator class="identity" />
+ </id>
+ <property name="ownerUsername" not-null="true" />
+ <property name="displayName" not-null="true" />
+ <property name="bodyDataID" />
+ <property name="baseTextureName" />
+ </class>
+
+ <class name="com.ogoglio.persist.BodySettingRecord"
+ table="BodySettingRecords">
+ <id name="bodySettingID">
+ <generator class="identity" />
+ </id>
+ <property name="settingName" not-null="true" />
+ <property name="setting" />
+ <property name="bodyConfigurationID" />
+ </class>
+
+ <class name="com.ogoglio.persist.AttachmentRecord"
+ table="AttachmentRecords">
+ <id name="attachmentID">
+ <generator class="identity" />
+ </id>
+ <property name="templateOwner" />
+ <property name="templateID" />
+ <property name="bodyConfigurationID" />
+ </class>
+
+ <query name="com.ogoglio.persist.bodyData">
+ <![CDATA[ from com.ogoglio.persist.BodyDataRecord order by bodyDataID asc ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodyDataByID">
+ <![CDATA[ from com.ogoglio.persist.BodyDataRecord as record where record.bodyDataID = :bodyDataID ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodyDataByFileName">
+ <![CDATA[ from com.ogoglio.persist.BodyDataRecord as record where record.fileName = :fileName ]]>
+ </query>
+ <query
+ name="com.ogoglio.persist.bodyConfigurationByUsernameAndBodyDataID">
+ <![CDATA[ from com.ogoglio.persist.BodyConfigurationRecord as record where record.ownerUsername = :username and record.bodyDataID = :bodyDataID ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodyConfigurationsByUsername">
+ <![CDATA[ from com.ogoglio.persist.BodyConfigurationRecord as record where record.ownerUsername = :username ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodyConfigurationByID">
+ <![CDATA[ from com.ogoglio.persist.BodyConfigurationRecord as record where record.bodyConfigurationID = :bodyConfigurationID ]]>
+ </query>
+ <query name="com.ogoglio.persist.bodySettingsByConfigurationID">
+ <![CDATA[ from com.ogoglio.persist.BodySettingRecord as record where record.bodyConfigurationID = :bodyConfigurationID ]]>
+ </query>
+ <query
+ name="com.ogoglio.persist.bodySettingByConfigurationIDAndSettingName">
+ <![CDATA[ from com.ogoglio.persist.BodySettingRecord as record where record.bodyConfigurationID = :bodyConfigurationID and record.settingName = :settingName ]]>
+ </query>
+ <query name="com.ogoglio.persist.attachmentsByConfigurationID">
+ <![CDATA[ from com.ogoglio.persist.AttachmentRecord as record where record.bodyConfigurationID = :bodyConfigurationID ]]>
+ </query>
+ <query name="com.ogoglio.persist.attachmentByID">
+ <![CDATA[ from com.ogoglio.persist.AttachmentRecord as record where record.attachmentID = :attachmentID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.serviceStateRecords">
+ <![CDATA[ from com.ogoglio.persist.ServiceStateRecord ]]>
+ </query>
+
+ <query
+ name="com.ogoglio.persist.pendingEmailValidationsByUsername">
+ <![CDATA[ from com.ogoglio.persist.PendingEmailValidationRecord as record where record.username = :username ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.pendingEmailValidationByEmail">
+ <![CDATA[ from com.ogoglio.persist.PendingEmailValidationRecord as record where record.email = :email ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.pendingEmailValidationBySecret">
+ <![CDATA[ from com.ogoglio.persist.PendingEmailValidationRecord as record where record.secret = :secret ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessionByPossessionID">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.possessionID = :possessionID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessionsByOwnerUsername">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.ownerUsername = :ownerUsername ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessionsBySpaceID">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.spaceID = :spaceID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessionsByTemplateID">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.templateID = :templateID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.templateByID">
+ <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.templateID = :templateID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.templateByIDs">
+ <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.templateID in ( :templateIDs ) ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.templateByOwner">
+ <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.ownerUsername = :ownerUsername ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.accountByUsername">
+ <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.username = :username ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.accountByEmail">
+ <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.email = :email ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.accountByCookie">
+ <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.cookie = :cookie ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.simByURI">
+ <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.simURIString = :simURI ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.simBySimID">
+ <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.simID = :simID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.simsByActive">
+ <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.active = :active ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.sims">
+ <![CDATA[ from com.ogoglio.persist.SimRecord ]]>
+ </query>
+
+ <query name="com.ogoglio.appdev.migrate.dbversions">
+ <![CDATA[ from com.ogoglio.appdev.migrate.DBVersionRecord ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.accounts">
+ <![CDATA[ from com.ogoglio.persist.AccountRecord ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.possessions">
+ <![CDATA[ from com.ogoglio.persist.PossessionRecord order by PossessionID asc ]]>
+ </query>
+ <query name="com.ogoglio.persist.spaces">
+ <![CDATA[ from com.ogoglio.persist.SpaceRecord order by SpaceID asc]]>
+ </query>
+ <query name="com.ogoglio.persist.spacemembers">
+ <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord order by SpaceMemberID asc]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spacesByOwnerUsername">
+ <![CDATA[ from com.ogoglio.persist.SpaceRecord as space where space.ownerUsername = :ownerUsername ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spaceBySpaceID">
+ <![CDATA[ from com.ogoglio.persist.SpaceRecord as space where space.spaceID = :spaceID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spaceMembersBySpaceID">
+ <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.spaceID = :spaceID ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spaceMembershipByMemberUsername">
+ <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.memberUsername = :memberUsername ]]>
+ </query>
+
+ <query name="com.ogoglio.persist.spaceMemberByUsername">
+ <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.spaceID = :spaceID and spaceMember.memberUsername = :username ]]>
+ </query>
+</hibernate-mapping>
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2008-02-06 01:20:38 UTC (rev 711)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2008-02-06 01:20:50 UTC (rev 712)
@@ -33,7 +33,7 @@
spaceSimulator = new SpaceSimulator(spaceDocument, listener);
spaceSimulator.startSim();
- TemplateDocument templateDoc1 = new TemplateDocument(1, "Template 1", "trevor", "A cool template", null, false, 0, 0, 0, 1, 0, 0, 0);
+ TemplateDocument templateDoc1 = new TemplateDocument(1, "Template 1", "trevor", "A cool template", null, false, false, 0, 0, 0, 1, 0, 0, 0);
listener.templateMap.put(new Long(1), templateDoc1);
listener.scriptMap.put(new Long(1), simplestScript);
listener.objMap.put(new Long(1), "templates/TestCube.obj");
@@ -41,7 +41,7 @@
ThingDocument thingDoc = spaceSimulator.addThing(templateDoc1.getTemplateID(), templateDoc1.getOwnerUsername(), templateDoc1.getDisplayName(), "trevor", 1, new Transform3D());
assertTrue(spaceSimulator.removeThing(thingDoc.getThingID()));
- TemplateDocument templateDoc2 = new TemplateDocument(2, "Template 2", "trevor", "Another cool template", null, false, 0, 0, 0, 1, 0, 0, 0);
+ TemplateDocument templateDoc2 = new TemplateDocument(2, "Template 2", "trevor", "Another cool template", null, false, false, 0, 0, 0, 1, 0, 0, 0);
listener.templateMap.put(new Long(2), templateDoc2);
listener.scriptMap.put(new Long(2), constructorScript);
listener.objMap.put(new Long(2), "templates/TestCube.obj");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 01:20:34
|
Revision: 711
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=711&view=rev
Author: trevorolio
Date: 2008-02-05 17:20:38 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
Added the back end and 3D rendering of attachment geometries and appearances, but not yet morphs or skin textures.
Also no example UI for picking attachments in the body editor, yet.
The "time to private parts" for Ogoglio starts now.
Modified Paths:
--------------
maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java
Added Paths:
-----------
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.blend
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.mtl
maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.obj
Modified: maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java 2008-02-06 01:20:17 UTC (rev 710)
+++ maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java 2008-02-06 01:20:38 UTC (rev 711)
@@ -62,6 +62,7 @@
import com.ogoglio.util.UIConstants;
import com.ogoglio.util.WebConstants;
import com.ogoglio.xml.AccountDocument;
+import com.ogoglio.xml.AttachmentDocument;
import com.ogoglio.xml.AuthDocument;
import com.ogoglio.xml.BodyConfigurationDocument;
import com.ogoglio.xml.BodyDataDocument;
@@ -395,6 +396,8 @@
checkUserSitting(spaceDocument, thingDocs, spaceClient1, guestSpaceClient1);
+ checkAttachments(spaceDocument, thingDocs, spaceClient1, advancedClient);
+
checkDeletingSpaceDestroysThings(spaceDocument.getSpaceID(), advancedClient, USERNAME1);
} finally {
@@ -408,6 +411,37 @@
}
+ private void checkAttachments(SpaceDocument spaceDocument, ThingDocument[] thingDocs, SpaceClient spaceClient, WebAPIClient advancedClient) throws IOException {
+ TemplateDocument templateDoc = advancedClient.createTemplate("Attachment Test");
+ assertNotNull(templateDoc);
+ templateDoc.setAttachment(true);
+ templateDoc = advancedClient.updateTemplate(templateDoc);
+ assertNotNull(templateDoc);
+ assertTrue(templateDoc.isAttachment());
+ advancedClient.uploadTemplateGeometryStream(templateDoc.getOwnerUsername(), templateDoc.getTemplateID(), 0, UIConstants.getResource("sample-art3d/AttachmentTest.obj"));
+ advancedClient.uploadTemplateResourceStream(templateDoc.getOwnerUsername(), templateDoc.getTemplateID(), "AttachmentTest.mtl", UIConstants.getResource("sample-art3d/AttachmentTest.mtl"));
+
+ BodyConfigurationDocument confDoc = advancedClient.getDefaultBodyConfiguration(advancedClient.getAuthenticator().getUsername());
+ AttachmentDocument[] attachmentDocs = confDoc.getAttachmentDocuments();
+ for (int i = 0; i < attachmentDocs.length; i++) {
+ confDoc.removeAttachment(attachmentDocs[i].getAttachmentID());
+ }
+ confDoc.addAttachment(templateDoc.getOwnerUsername(), templateDoc.getTemplateID());
+ advancedClient.updateBodyConfiguration(confDoc);
+ confDoc = advancedClient.getDefaultBodyConfiguration(advancedClient.getAuthenticator().getUsername());
+ attachmentDocs = confDoc.getAttachmentDocuments();
+ assertEquals(1, attachmentDocs.length);
+ assertEquals(templateDoc.getTemplateID(), attachmentDocs[0].getTemplateID());
+
+ confDoc.removeAttachment(attachmentDocs[0].getAttachmentID());
+ advancedClient.updateBodyConfiguration(confDoc);
+ confDoc = advancedClient.getDefaultBodyConfiguration(advancedClient.getAuthenticator().getUsername());
+ attachmentDocs = confDoc.getAttachmentDocuments();
+ assertEquals(0, attachmentDocs.length);
+
+ advancedClient.deleteTemplate(templateDoc.getTemplateID());
+ }
+
private void checkAccountPhoto(WebAPIClient basicClient) throws IOException {
InputStream imageData = UIConstants.getResource(testAccountPhotoPath);
basicClient.setAccountPhoto(basicClient.getAuthenticator().getUsername(), imageData, "image/jpeg");
Added: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.blend
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.blend
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.mtl
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.mtl (rev 0)
+++ maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.mtl 2008-02-06 01:20:38 UTC (rev 711)
@@ -0,0 +1,42 @@
+# Blender3D MTL File: AttachmentTest.blend
+# Material Count: 4
+newmtl Material.001
+Ns 96.078431
+Ka 0.000000 0.000000 0.000000
+Kd 0.000000 0.640000 0.000000
+Ks 0.500000 0.500000 0.500000
+Ni 1.000000
+d 1.000000
+illum 2
+
+
+newmtl Material.002
+Ns 96.078431
+Ka 0.000000 0.000000 0.000000
+Kd 0.000000 0.000000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ni 1.000000
+d 1.000000
+illum 2
+
+
+newmtl Material.003
+Ns 96.078431
+Ka 0.000000 0.000000 0.000000
+Kd 0.800000 0.800000 0.000000
+Ks 0.500000 0.500000 0.500000
+Ni 1.000000
+d 1.000000
+illum 2
+
+
+newmtl Material
+Ns 96.078431
+Ka 0.000000 0.000000 0.000000
+Kd 0.800000 0.361391 0.351441
+Ks 0.500000 0.500000 0.500000
+Ni 1.000000
+d 1.000000
+illum 2
+
+
Added: maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.obj
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.obj (rev 0)
+++ maven/trunk/ogoglio-integration-test/src/test/resources/sample-art3d/AttachmentTest.obj 2008-02-06 01:20:38 UTC (rev 711)
@@ -0,0 +1,652 @@
+# Blender3D v243 OBJ File: AttachmentTest.blend
+# www.blender3d.org
+mtllib AttachmentTest.mtl
+o rShin
+v -0.057346 -1.100912 0.092450
+v -0.045493 -1.100912 0.078008
+v -0.036685 -1.100912 0.061530
+v -0.031262 -1.100912 0.043651
+v -0.029431 -1.100912 0.025057
+v -0.031262 -1.100912 0.006464
+v -0.036685 -1.100912 -0.011415
+v -0.045493 -1.100912 -0.027893
+v -0.057346 -1.100912 -0.042335
+v -0.071788 -1.100912 -0.054188
+v -0.088266 -1.100912 -0.062995
+v -0.106145 -1.100912 -0.068419
+v -0.124738 -1.100912 -0.070250
+v -0.143332 -1.100912 -0.068419
+v -0.161211 -1.100912 -0.062995
+v -0.177689 -1.100912 -0.054188
+v -0.192131 -1.100912 -0.042335
+v -0.203984 -1.100912 -0.027893
+v -0.212791 -1.100912 -0.011415
+v -0.218215 -1.100912 0.006464
+v -0.220046 -1.100912 0.025058
+v -0.218215 -1.100912 0.043651
+v -0.212791 -1.100912 0.061530
+v -0.203984 -1.100912 0.078008
+v -0.192131 -1.100912 0.092450
+v -0.177688 -1.100912 0.104303
+v -0.161211 -1.100912 0.113110
+v -0.143332 -1.100912 0.118534
+v -0.124738 -1.100912 0.120365
+v -0.106145 -1.100912 0.118534
+v -0.088265 -1.100912 0.113110
+v -0.071788 -1.100912 0.104303
+v -0.057345 -1.069690 0.092450
+v -0.045493 -1.069690 0.078007
+v -0.036685 -1.069690 0.061530
+v -0.031262 -1.069690 0.043651
+v -0.029431 -1.069690 0.025057
+v -0.031262 -1.069690 0.006464
+v -0.036686 -1.069690 -0.011415
+v -0.045493 -1.069690 -0.027893
+v -0.057346 -1.069690 -0.042335
+v -0.071788 -1.069690 -0.054188
+v -0.088266 -1.069690 -0.062995
+v -0.106145 -1.069690 -0.068419
+v -0.124738 -1.069690 -0.070250
+v -0.143332 -1.069690 -0.068419
+v -0.161211 -1.069690 -0.062995
+v -0.177688 -1.069690 -0.054188
+v -0.192131 -1.069690 -0.042335
+v -0.203984 -1.069690 -0.027893
+v -0.212791 -1.069690 -0.011415
+v -0.218215 -1.069690 0.006464
+v -0.220046 -1.069690 0.025057
+v -0.218215 -1.069690 0.043651
+v -0.212791 -1.069690 0.061530
+v -0.203984 -1.069690 0.078007
+v -0.192131 -1.069690 0.092450
+v -0.177689 -1.069690 0.104303
+v -0.161212 -1.069690 0.113110
+v -0.143333 -1.069690 0.118534
+v -0.124739 -1.069690 0.120365
+v -0.106145 -1.069690 0.118534
+v -0.088266 -1.069690 0.113111
+v -0.071789 -1.069690 0.104303
+usemtl Material.003
+s 1
+f 1 33 34 2
+f 2 34 35 3
+f 3 35 36 4
+f 4 36 37 5
+f 5 37 38 6
+f 6 38 39 7
+f 7 39 40 8
+f 8 40 41 9
+f 9 41 42 10
+f 10 42 43 11
+f 11 43 44 12
+f 12 44 45 13
+f 13 45 46 14
+f 14 46 47 15
+f 15 47 48 16
+f 16 48 49 17
+f 17 49 50 18
+f 18 50 51 19
+f 19 51 52 20
+f 20 52 53 21
+f 21 53 54 22
+f 22 54 55 23
+f 23 55 56 24
+f 24 56 57 25
+f 25 57 58 26
+f 26 58 59 27
+f 27 59 60 28
+f 28 60 61 29
+f 29 61 62 30
+f 30 62 63 31
+f 31 63 64 32
+f 33 1 32 64
+o lShin
+v 0.192337 -1.100912 0.092450
+v 0.204190 -1.100912 0.078008
+v 0.212997 -1.100912 0.061530
+v 0.218421 -1.100912 0.043651
+v 0.220252 -1.100912 0.025057
+v 0.218421 -1.100912 0.006464
+v 0.212997 -1.100912 -0.011415
+v 0.204190 -1.100912 -0.027893
+v 0.192337 -1.100912 -0.042335
+v 0.177894 -1.100912 -0.054188
+v 0.161417 -1.100912 -0.062995
+v 0.143538 -1.100912 -0.068419
+v 0.124944 -1.100912 -0.070250
+v 0.106351 -1.100912 -0.068419
+v 0.088472 -1.100912 -0.062995
+v 0.071994 -1.100912 -0.054188
+v 0.057551 -1.100912 -0.042335
+v 0.045699 -1.100912 -0.027893
+v 0.036891 -1.100912 -0.011415
+v 0.031468 -1.100912 0.006464
+v 0.029637 -1.100912 0.025058
+v 0.031468 -1.100912 0.043651
+v 0.036891 -1.100912 0.061530
+v 0.045699 -1.100912 0.078008
+v 0.057552 -1.100912 0.092450
+v 0.071994 -1.100912 0.104303
+v 0.088472 -1.100912 0.113110
+v 0.106351 -1.100912 0.118534
+v 0.124944 -1.100912 0.120365
+v 0.143538 -1.100912 0.118534
+v 0.161417 -1.100912 0.113110
+v 0.177895 -1.100912 0.104303
+v 0.192337 -1.069690 0.092450
+v 0.204190 -1.069690 0.078007
+v 0.212997 -1.069690 0.061530
+v 0.218421 -1.069690 0.043651
+v 0.220252 -1.069690 0.025057
+v 0.218421 -1.069690 0.006464
+v 0.212997 -1.069690 -0.011415
+v 0.204190 -1.069690 -0.027893
+v 0.192337 -1.069690 -0.042335
+v 0.177894 -1.069690 -0.054188
+v 0.161417 -1.069690 -0.062995
+v 0.143538 -1.069690 -0.068419
+v 0.124944 -1.069690 -0.070250
+v 0.106351 -1.069690 -0.068419
+v 0.088472 -1.069690 -0.062995
+v 0.071994 -1.069690 -0.054188
+v 0.057552 -1.069690 -0.042335
+v 0.045699 -1.069690 -0.027893
+v 0.036892 -1.069690 -0.011415
+v 0.031468 -1.069690 0.006464
+v 0.029637 -1.069690 0.025057
+v 0.031468 -1.069690 0.043651
+v 0.036891 -1.069690 0.061530
+v 0.045698 -1.069690 0.078007
+v 0.057551 -1.069690 0.092450
+v 0.071994 -1.069690 0.104303
+v 0.088471 -1.069690 0.113110
+v 0.106350 -1.069690 0.118534
+v 0.124944 -1.069690 0.120365
+v 0.143537 -1.069690 0.118534
+v 0.161416 -1.069690 0.113111
+v 0.177894 -1.069690 0.104303
+usemtl Material.003
+s 1
+f 65 97 98 66
+f 66 98 99 67
+f 67 99 100 68
+f 68 100 101 69
+f 69 101 102 70
+f 70 102 103 71
+f 71 103 104 72
+f 72 104 105 73
+f 73 105 106 74
+f 74 106 107 75
+f 75 107 108 76
+f 76 108 109 77
+f 77 109 110 78
+f 78 110 111 79
+f 79 111 112 80
+f 80 112 113 81
+f 81 113 114 82
+f 82 114 115 83
+f 83 115 116 84
+f 84 116 117 85
+f 85 117 118 86
+f 86 118 119 87
+f 87 119 120 88
+f 88 120 121 89
+f 89 121 122 90
+f 90 122 123 91
+f 91 123 124 92
+f 92 124 125 93
+f 93 125 126 94
+f 94 126 127 95
+f 95 127 128 96
+f 97 65 96 128
+o hip
+v 0.121349 -0.013444 0.146552
+v 0.142717 -0.013444 0.120515
+v 0.158595 -0.013444 0.090810
+v 0.168372 -0.013444 0.058578
+v 0.171674 -0.013444 0.025058
+v 0.168372 -0.013444 -0.008463
+v 0.158595 -0.013444 -0.040695
+v 0.142717 -0.013444 -0.070400
+v 0.121349 -0.013444 -0.096436
+v 0.095312 -0.013444 -0.117804
+v 0.065607 -0.013444 -0.133682
+v 0.033375 -0.013444 -0.143460
+v -0.000145 -0.013444 -0.146761
+v -0.033665 -0.013444 -0.143459
+v -0.065897 -0.013444 -0.133682
+v -0.095602 -0.013444 -0.117804
+v -0.121639 -0.013444 -0.096436
+v -0.143007 -0.013444 -0.070400
+v -0.158884 -0.013444 -0.040694
+v -0.168662 -0.013444 -0.008462
+v -0.171963 -0.013444 0.025058
+v -0.168662 -0.013444 0.058578
+v -0.158884 -0.013444 0.090810
+v -0.143007 -0.013444 0.120515
+v -0.121639 -0.013444 0.146552
+v -0.095602 -0.013444 0.167920
+v -0.065897 -0.013444 0.183797
+v -0.033665 -0.013444 0.193575
+v -0.000145 -0.013444 0.196876
+v 0.033376 -0.013444 0.193575
+v 0.065608 -0.013444 0.183797
+v 0.095313 -0.013444 0.167919
+v 0.121349 0.042842 0.146551
+v 0.142717 0.042842 0.120514
+v 0.158595 0.042842 0.090809
+v 0.168372 0.042842 0.058577
+v 0.171674 0.042842 0.025057
+v 0.168372 0.042842 -0.008463
+v 0.158595 0.042842 -0.040695
+v 0.142717 0.042842 -0.070400
+v 0.121349 0.042842 -0.096437
+v 0.095312 0.042842 -0.117804
+v 0.065607 0.042842 -0.133682
+v 0.033375 0.042842 -0.143459
+v -0.000145 0.042842 -0.146761
+v -0.033665 0.042842 -0.143460
+v -0.065897 0.042842 -0.133682
+v -0.095602 0.042842 -0.117804
+v -0.121638 0.042842 -0.096437
+v -0.143006 0.042842 -0.070400
+v -0.158884 0.042842 -0.040695
+v -0.168662 0.042842 -0.008463
+v -0.171963 0.042842 0.025057
+v -0.168662 0.042842 0.058577
+v -0.158885 0.042842 0.090809
+v -0.143007 0.042842 0.120514
+v -0.121639 0.042842 0.146551
+v -0.095603 0.042842 0.167919
+v -0.065898 0.042842 0.183797
+v -0.033666 0.042842 0.193574
+v -0.000146 0.042842 0.196876
+v 0.033374 0.042842 0.193575
+v 0.065606 0.042842 0.183798
+v 0.095311 0.042842 0.167920
+usemtl Material.003
+s 1
+f 129 161 162 130
+f 130 162 163 131
+f 131 163 164 132
+f 132 164 165 133
+f 133 165 166 134
+f 134 166 167 135
+f 135 167 168 136
+f 136 168 169 137
+f 137 169 170 138
+f 138 170 171 139
+f 139 171 172 140
+f 140 172 173 141
+f 141 173 174 142
+f 142 174 175 143
+f 143 175 176 144
+f 144 176 177 145
+f 145 177 178 146
+f 146 178 179 147
+f 147 179 180 148
+f 148 180 181 149
+f 149 181 182 150
+f 150 182 183 151
+f 151 183 184 152
+f 152 184 185 153
+f 153 185 186 154
+f 154 186 187 155
+f 155 187 188 156
+f 156 188 189 157
+f 157 189 190 158
+f 158 190 191 159
+f 159 191 192 160
+f 161 129 160 192
+o rForeArm
+v -0.808079 0.389348 -0.071138
+v -0.807899 0.383059 -0.076296
+v -0.807765 0.375883 -0.080129
+v -0.807683 0.368097 -0.082489
+v -0.807655 0.360000 -0.083286
+v -0.807683 0.351903 -0.082489
+v -0.807765 0.344117 -0.080129
+v -0.807899 0.336941 -0.076296
+v -0.808079 0.330651 -0.071138
+v -0.808299 0.325490 -0.064852
+v -0.808549 0.321654 -0.057681
+v -0.808821 0.319293 -0.049900
+v -0.809103 0.318495 -0.041809
+v -0.809386 0.319293 -0.033717
+v -0.809658 0.321654 -0.025936
+v -0.809908 0.325490 -0.018765
+v -0.810127 0.330652 -0.012480
+v -0.810308 0.336941 -0.007321
+v -0.810441 0.344117 -0.003488
+v -0.810524 0.351903 -0.001128
+v -0.810552 0.360000 -0.000331
+v -0.810524 0.368097 -0.001128
+v -0.810441 0.375883 -0.003488
+v -0.810308 0.383059 -0.007321
+v -0.810127 0.389348 -0.012480
+v -0.809908 0.394510 -0.018765
+v -0.809658 0.398345 -0.025936
+v -0.809386 0.400707 -0.033717
+v -0.809103 0.401505 -0.041809
+v -0.808821 0.400707 -0.049900
+v -0.808549 0.398345 -0.057681
+v -0.808299 0.394510 -0.064852
+v -0.728567 0.389348 -0.068361
+v -0.728387 0.383059 -0.073519
+v -0.728253 0.375883 -0.077352
+v -0.728170 0.368097 -0.079712
+v -0.728143 0.360000 -0.080509
+v -0.728170 0.351903 -0.079712
+v -0.728253 0.344117 -0.077352
+v -0.728387 0.336941 -0.073519
+v -0.728567 0.330651 -0.068361
+v -0.728786 0.325490 -0.062076
+v -0.729037 0.321654 -0.054905
+v -0.729308 0.319293 -0.047124
+v -0.729591 0.318495 -0.039032
+v -0.729874 0.319293 -0.030940
+v -0.730145 0.321654 -0.023159
+v -0.730396 0.325490 -0.015988
+v -0.730615 0.330651 -0.009703
+v -0.730795 0.336941 -0.004545
+v -0.730929 0.344116 -0.000712
+v -0.731012 0.351902 0.001648
+v -0.731039 0.360000 0.002445
+v -0.731012 0.368097 0.001649
+v -0.730929 0.375883 -0.000712
+v -0.730795 0.383058 -0.004545
+v -0.730615 0.389348 -0.009703
+v -0.730396 0.394510 -0.015988
+v -0.730145 0.398345 -0.023159
+v -0.729874 0.400707 -0.030940
+v -0.729591 0.401505 -0.039032
+v -0.729308 0.400707 -0.047123
+v -0.729037 0.398345 -0.054904
+v -0.728786 0.394510 -0.062075
+v -0.809103 0.360000 -0.041809
+v -0.729591 0.360000 -0.039032
+usemtl Material.001
+s 1
+f 257 193 194
+f 258 226 225
+f 257 194 195
+f 258 227 226
+f 257 195 196
+f 258 228 227
+f 257 196 197
+f 258 229 228
+f 257 197 198
+f 258 230 229
+f 257 198 199
+f 258 231 230
+f 257 199 200
+f 258 232 231
+f 257 200 201
+f 258 233 232
+f 257 201 202
+f 258 234 233
+f 257 202 203
+f 258 235 234
+f 257 203 204
+f 258 236 235
+f 257 204 205
+f 258 237 236
+f 257 205 206
+f 258 238 237
+f 257 206 207
+f 258 239 238
+f 257 207 208
+f 258 240 239
+f 257 208 209
+f 258 241 240
+f 257 209 210
+f 258 242 241
+f 257 210 211
+f 258 243 242
+f 257 211 212
+f 258 244 243
+f 257 212 213
+f 258 245 244
+f 257 213 214
+f 258 246 245
+f 257 214 215
+f 258 247 246
+f 257 215 216
+f 258 248 247
+f 257 216 217
+f 258 249 248
+f 257 217 218
+f 258 250 249
+f 257 218 219
+f 258 251 250
+f 257 219 220
+f 258 252 251
+f 257 220 221
+f 258 253 252
+f 257 221 222
+f 258 254 253
+f 257 222 223
+f 258 255 254
+f 257 223 224
+f 258 256 255
+f 224 193 257
+f 258 225 256
+f 193 225 226 194
+f 194 226 227 195
+f 195 227 228 196
+f 196 228 229 197
+f 197 229 230 198
+f 198 230 231 199
+f 199 231 232 200
+f 200 232 233 201
+f 201 233 234 202
+f 202 234 235 203
+f 203 235 236 204
+f 204 236 237 205
+f 205 237 238 206
+f 206 238 239 207
+f 207 239 240 208
+f 208 240 241 209
+f 209 241 242 210
+f 210 242 243 211
+f 211 243 244 212
+f 212 244 245 213
+f 213 245 246 214
+f 214 246 247 215
+f 215 247 248 216
+f 216 248 249 217
+f 217 249 250 218
+f 218 250 251 219
+f 219 251 252 220
+f 220 252 253 221
+f 221 253 254 222
+f 222 254 255 223
+f 223 255 256 224
+f 225 193 224 256
+o lForeArm
+v 0.735953 0.389348 -0.071138
+v 0.736133 0.383059 -0.076296
+v 0.736267 0.375883 -0.080129
+v 0.736349 0.368097 -0.082489
+v 0.736377 0.360000 -0.083286
+v 0.736349 0.351903 -0.082489
+v 0.736267 0.344117 -0.080129
+v 0.736133 0.336941 -0.076296
+v 0.735953 0.330651 -0.071138
+v 0.735733 0.325490 -0.064852
+v 0.735483 0.321654 -0.057681
+v 0.735211 0.319293 -0.049900
+v 0.734929 0.318495 -0.041809
+v 0.734646 0.319293 -0.033717
+v 0.734374 0.321654 -0.025936
+v 0.734124 0.325490 -0.018765
+v 0.733904 0.330652 -0.012480
+v 0.733724 0.336941 -0.007321
+v 0.733590 0.344117 -0.003488
+v 0.733508 0.351903 -0.001128
+v 0.733480 0.360000 -0.000331
+v 0.733508 0.368097 -0.001128
+v 0.733590 0.375883 -0.003488
+v 0.733724 0.383059 -0.007321
+v 0.733904 0.389348 -0.012480
+v 0.734124 0.394510 -0.018765
+v 0.734374 0.398345 -0.025936
+v 0.734646 0.400707 -0.033717
+v 0.734929 0.401505 -0.041809
+v 0.735211 0.400707 -0.049900
+v 0.735483 0.398345 -0.057681
+v 0.735733 0.394510 -0.064852
+v 0.815465 0.389348 -0.068361
+v 0.815645 0.383059 -0.073519
+v 0.815779 0.375883 -0.077352
+v 0.815861 0.368097 -0.079712
+v 0.815889 0.360000 -0.080509
+v 0.815861 0.351903 -0.079712
+v 0.815779 0.344117 -0.077352
+v 0.815645 0.336941 -0.073519
+v 0.815465 0.330651 -0.068361
+v 0.815246 0.325490 -0.062076
+v 0.814995 0.321654 -0.054905
+v 0.814723 0.319293 -0.047124
+v 0.814441 0.318495 -0.039032
+v 0.814158 0.319293 -0.030940
+v 0.813887 0.321654 -0.023159
+v 0.813636 0.325490 -0.015988
+v 0.813417 0.330651 -0.009703
+v 0.813237 0.336941 -0.004545
+v 0.813103 0.344116 -0.000712
+v 0.813020 0.351902 0.001648
+v 0.812992 0.360000 0.002445
+v 0.813020 0.368097 0.001649
+v 0.813103 0.375883 -0.000712
+v 0.813237 0.383058 -0.004545
+v 0.813417 0.389348 -0.009703
+v 0.813636 0.394510 -0.015988
+v 0.813887 0.398345 -0.023159
+v 0.814158 0.400707 -0.030940
+v 0.814441 0.401505 -0.039032
+v 0.814723 0.400707 -0.047123
+v 0.814995 0.398345 -0.054904
+v 0.815246 0.394510 -0.062075
+v 0.734929 0.360000 -0.041809
+v 0.814441 0.360000 -0.039032
+usemtl Material.002
+s 1
+f 323 259 260
+f 324 292 291
+f 323 260 261
+f 324 293 292
+f 323 261 262
+f 324 294 293
+f 323 262 263
+f 324 295 294
+f 323 263 264
+f 324 296 295
+f 323 264 265
+f 324 297 296
+f 323 265 266
+f 324 298 297
+f 323 266 267
+f 324 299 298
+f 323 267 268
+f 324 300 299
+f 323 268 269
+f 324 301 300
+f 323 269 270
+f 324 302 301
+f 323 270 271
+f 324 303 302
+f 323 271 272
+f 324 304 303
+f 323 272 273
+f 324 305 304
+f 323 273 274
+f 324 306 305
+f 323 274 275
+f 324 307 306
+f 323 275 276
+f 324 308 307
+f 323 276 277
+f 324 309 308
+f 323 277 278
+f 324 310 309
+f 323 278 279
+f 324 311 310
+f 323 279 280
+f 324 312 311
+f 323 280 281
+f 324 313 312
+f 323 281 282
+f 324 314 313
+f 323 282 283
+f 324 315 314
+f 323 283 284
+f 324 316 315
+f 323 284 285
+f 324 317 316
+f 323 285 286
+f 324 318 317
+f 323 286 287
+f 324 319 318
+f 323 287 288
+f 324 320 319
+f 323 288 289
+f 324 321 320
+f 323 289 290
+f 324 322 321
+f 290 259 323
+f 324 291 322
+f 259 291 292 260
+f 260 292 293 261
+f 261 293 294 262
+f 262 294 295 263
+f 263 295 296 264
+f 264 296 297 265
+f 265 297 298 266
+f 266 298 299 267
+f 267 299 300 268
+f 268 300 301 269
+f 269 301 302 270
+f 270 302 303 271
+f 271 303 304 272
+f 272 304 305 273
+f 273 305 306 274
+f 274 306 307 275
+f 275 307 308 276
+f 276 308 309 277
+f 277 309 310 278
+f 278 310 311 279
+f 279 311 312 280
+f 280 312 313 281
+f 281 313 314 282
+f 282 314 315 283
+f 283 315 316 284
+f 284 316 317 285
+f 285 317 318 286
+f 286 318 319 287
+f 287 319 320 288
+f 288 320 321 289
+f 289 321 322 290
+f 291 259 290 322
+o head
+v 0.190000 0.692001 -0.190000
+v 0.190000 0.659348 -0.190000
+v -0.190000 0.659348 -0.190000
+v -0.190000 0.692001 -0.190000
+v 0.190000 0.692001 0.190000
+v 0.190000 0.659348 0.190000
+v -0.190000 0.659348 0.190000
+v -0.190000 0.692001 0.190000
+v -0.000000 0.992001 0.000000
+usemtl Material
+s 1
+f 325 326 327 328
+f 329 332 331 330
+f 325 329 330 326
+f 326 330 331 327
+f 327 331 332 328
+f 329 325 328 332
+f 329 332 333
+f 325 329 333
+f 325 333 328
+f 328 333 332
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 01:20:14
|
Revision: 710
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=710&view=rev
Author: trevorolio
Date: 2008-02-05 17:20:17 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
Added the back end and 3D rendering of attachment geometries and appearances, but not yet morphs or skin textures.
Also no example UI for picking attachments in the body editor, yet.
The "time to private parts" for Ogoglio starts now.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/MorphDeltaMap.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/MorphDeltaMapParser.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skeleton.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/SkinLoader.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/obj/Obj.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/TemplateDocument.java
maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java
Added Paths:
-----------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Attachment.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DAttachment.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/AttachmentDocument.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -26,6 +26,7 @@
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
+import com.ogoglio.client.model.Attachment;
import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.client.model.BodyDataProvider;
import com.ogoglio.client.model.Door;
@@ -47,8 +48,10 @@
import com.ogoglio.util.Log;
import com.ogoglio.util.WebConstants;
import com.ogoglio.xml.AccountDocument;
+import com.ogoglio.xml.AttachmentDocument;
import com.ogoglio.xml.BodyConfigurationDocument;
import com.ogoglio.xml.BodyDataDocument;
+import com.ogoglio.xml.BodySettingDocument;
import com.ogoglio.xml.DoorDocument;
import com.ogoglio.xml.PageDocument;
import com.ogoglio.xml.ShapeDocument;
@@ -182,7 +185,7 @@
} else {
bodyConfDoc = webClient.getBodyConfiguration(userDocs[i].getUsername(), userDocs[i].getBodyConfigurationID());
}
- BodyConfiguration bodyConfig = new BodyConfiguration(bodyConfDoc);
+ BodyConfiguration bodyConfig = createBodyConfiguration(bodyConfDoc);
Thing seatThing = null;
if (userDocs[i].getSeatThingID() != -1) {
seatThing = space.getThing(userDocs[i].getSeatThingID());
@@ -214,6 +217,31 @@
messenger.stopWaiting();
}
+ public BodyConfiguration createBodyConfiguration(BodyConfigurationDocument configDoc) {
+ BodyConfiguration config = new BodyConfiguration(configDoc.getBodyConfigurationID(), configDoc.getDisplayName(), configDoc.getBodyDataID(), configDoc.getBaseTextureName());
+ BodySettingDocument[] settingDocs = configDoc.getBodySettingDocuments();
+ for (int i = 0; i < settingDocs.length; i++) {
+ config.addSetting(settingDocs[i].getSettingName(), settingDocs[i].getSetting());
+ }
+ AttachmentDocument[] attachmentDocs = configDoc.getAttachmentDocuments();
+ for (int i = 0; i < attachmentDocs.length; i++) {
+ Template template = space.getTemplate(attachmentDocs[i].getTemplateID());
+ if (template == null) {
+ try {
+ TemplateDocument templateDoc = webClient.getTemplateDocument(attachmentDocs[i].getTemplateOwner(), attachmentDocs[i].getTemplateID());
+ template = new Template(templateDoc);
+ space.addTemplate(template);
+ } catch (IOException e) {
+ System.err.println("Could not find template for attachment: " + attachmentDocs[i].getTemplateID());
+ continue;
+ }
+ }
+ Attachment attachment = new Attachment(attachmentDocs[i].getAttachmentID(), template, config);
+ config.addAttachment(attachment);
+ }
+ return config;
+ }
+
public void mouseClickedUser(User user, Point3d intersection) {
Log.warn("SpaceClient ignoring user click");
}
@@ -352,7 +380,8 @@
SpaceEvent event = ((PayloadFactory.SpaceEventPayload) message.getPayload()).getSpaceEvent();
if (SpaceEvent.ADD_USER_EVENT.equals(event.getName())) {
BodyConfigurationDocument bodyConfigDoc = event.getBodyConfigurationDocument();
- BodyConfiguration bodyConfig = new BodyConfiguration(bodyConfigDoc);
+ BodyConfiguration bodyConfig = null;
+ bodyConfig = createBodyConfiguration(bodyConfigDoc);
String role = event.getStringProperty(SpaceEvent.USER_ROLE);
String voiceURI = event.getStringProperty(SpaceEvent.VOICE_URI);
String textURI = event.getStringProperty(SpaceEvent.TEXT_URI);
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -301,7 +301,7 @@
}
public TemplateDocument createTemplate(String templateName) throws IOException {
- TemplateDocument templateDoc = new TemplateDocument(-1, templateName, authenticator.getUsername(), null, null, false, 0, 0, 0, 1, 0, 0, 0);
+ TemplateDocument templateDoc = new TemplateDocument(-1, templateName, authenticator.getUsername(), null, null, false, false, 0, 0, 0, 1, 0, 0, 0);
XMLElement templateXML = wire.postAuthenticatedXML(descriptor.getTemplatesURI(authenticator.getUsername()), templateDoc.toString(), authenticator.getAuthCookie());
return new TemplateDocument(templateXML);
}
Added: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Attachment.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Attachment.java (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Attachment.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -0,0 +1,35 @@
+package com.ogoglio.client.model;
+
+import com.ogoglio.util.ArgumentUtils;
+
+public class Attachment {
+
+ private long attachmentID = -1;
+
+ private Template template = null;
+
+ private BodyConfiguration bodyConfiguration = null;
+
+ public Attachment(long attachmentID, Template template, BodyConfiguration bodyConfiguration){
+ ArgumentUtils.assertNotNegative(attachmentID);
+ this.attachmentID = attachmentID;
+ ArgumentUtils.assertNotNull(template);
+ this.template = template;
+ ArgumentUtils.assertNotNull(bodyConfiguration);
+ this.bodyConfiguration = bodyConfiguration;
+ }
+
+ public long getAttachmentID() {
+ return attachmentID;
+ }
+
+ public Template getTemplate() {
+ return template;
+ }
+
+ public BodyConfiguration getBodyConfiguration() {
+ return bodyConfiguration;
+ }
+
+
+}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -1,8 +1,10 @@
package com.ogoglio.client.model;
import java.util.HashMap;
+import java.util.Vector;
import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.xml.AttachmentDocument;
import com.ogoglio.xml.BodyConfigurationDocument;
import com.ogoglio.xml.BodySettingDocument;
@@ -20,13 +22,7 @@
private HashMap settings = new HashMap();
- public BodyConfiguration(BodyConfigurationDocument configDoc) {
- this(configDoc.getBodyConfigurationID(), configDoc.getDisplayName(), configDoc.getBodyDataID(), configDoc.getBaseTextureName());
- BodySettingDocument[] settingDocs = configDoc.getBodySettingDocuments();
- for (int i = 0; i < settingDocs.length; i++) {
- addSetting(settingDocs[i].getSettingName(), settingDocs[i].getSetting());
- }
- }
+ private Vector attachments = new Vector();
public BodyConfiguration(long bodyConfigurationID, String displayName, long bodyDataID, String baseTextureName) {
ArgumentUtils.assertNotNegative(bodyConfigurationID);
@@ -37,6 +33,25 @@
this.baseTextureName = baseTextureName;
}
+ public Attachment[] getAttachments(){
+ return (Attachment[])attachments.toArray(new Attachment[0]);
+ }
+
+ public void addAttachment(Attachment attachment){
+ attachments.add(attachment);
+ }
+
+ public Attachment removeAttachment(long attachmentID){
+ Attachment[] as = getAttachments();
+ for (int i = 0; i < as.length; i++) {
+ if(as[i].getAttachmentID() == attachmentID){
+ attachments.remove(as[i]);
+ return as[i];
+ }
+ }
+ return null;
+ }
+
public void setUser(User user) {
ArgumentUtils.assertNotNull(user);
this.user = user;
Added: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DAttachment.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DAttachment.java (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DAttachment.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -0,0 +1,102 @@
+package com.ogoglio.viewer.j3d;
+
+import java.util.Vector;
+
+import javax.media.j3d.Appearance;
+import javax.media.j3d.Geometry;
+import javax.media.j3d.Shape3D;
+import javax.media.j3d.Transform3D;
+import javax.vecmath.Point3f;
+import javax.vecmath.Vector3f;
+
+import com.ogoglio.client.model.Attachment;
+import com.ogoglio.util.Log;
+import com.ogoglio.viewer.j3d.body.Skeleton;
+
+public class J3DAttachment {
+
+ private Attachment attachment = null;
+
+ private Vector skeletonAttachments = new Vector();
+
+ private Skeleton skeleton = null;
+
+ public J3DAttachment(Attachment attachment, J3DDataManager dataManager) {
+ this.attachment = attachment;
+
+ J3DTemplateData[] templateDataList = dataManager.getTemplateData(attachment.getTemplate().getOwnerUsername(), attachment.getTemplate().getTemplateID(), true);
+ J3DTemplateData templateData = null;
+ for (int j = 0; j < templateDataList.length; j++) {
+ if (templateDataList[j] != null) {
+ templateData = templateDataList[j];
+ break;
+ }
+ }
+
+ if (templateData == null) {
+ Log.warn("Could not load template data for attachment " + attachment.getAttachmentID());
+ return;
+ }
+
+ String[] shapeNames = templateData.getShapeNames();
+ for (int j = 0; j < shapeNames.length; j++) {
+ Geometry geometry = templateData.getGeometry(shapeNames[j]);
+ Skeleton.Attachment boneAttachment = new Skeleton.Attachment();
+ Shape3D shape = new Shape3D(geometry);
+ Appearance appearance = templateData.getAppearance(shapeNames[j]);
+ if (appearance != null) {
+ shape.setAppearance(appearance);
+ }
+ boneAttachment.addChild(shape);
+ boneAttachment.setUserData(shapeNames[j]);
+ skeletonAttachments.add(boneAttachment);
+ }
+ }
+
+ public Attachment getAttachment(){
+ return attachment;
+ }
+
+ public Skeleton.Attachment[] getSkeletonAttachments() {
+ return (Skeleton.Attachment[]) skeletonAttachments.toArray(new Skeleton.Attachment[0]);
+ }
+
+ public void detach() {
+ if (skeleton == null) {
+ return;
+ }
+ Skeleton.Attachment[] sAttachments = getSkeletonAttachments();
+ for (int i = 0; i < sAttachments.length; i++) {
+ String shapeName = (String) sAttachments[i].getUserData();
+ Skeleton.Bone bone = skeleton.getRootBone().getBone(shapeName);
+ if(bone != null){
+ bone.removeChild(sAttachments[i]);
+ }
+ }
+ skeleton = null;
+ }
+
+ public void attach(Skeleton skeleton) {
+ if (skeleton == this.skeleton) {
+ return;
+ }
+ detach();
+
+ this.skeleton = skeleton;
+ Skeleton.Attachment[] sAttachments = getSkeletonAttachments();
+ for (int i = 0; i < sAttachments.length; i++) {
+ String shapeName = (String) sAttachments[i].getUserData();
+ Skeleton.Bone bone = skeleton.getRootBone().getBone(shapeName);
+ if (bone == null) {
+ Log.warn("Could not find a bone for attachment shape " + shapeName + ", ignoring.");
+ continue;
+ }
+ Transform3D boneTransform = new Transform3D();
+ Point3f cumulativeOffset = bone.getCumulativeOffset();
+ boneTransform.setTranslation(new Vector3f(-cumulativeOffset.x, -cumulativeOffset.y, -cumulativeOffset.z));
+ sAttachments[i].setTransform(boneTransform);
+
+ bone.addAttachment(sAttachments[i]);
+ }
+ }
+}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -325,7 +325,6 @@
return results;
}
}
-
fetchTemplateData(username, templateID, results);
for (int i = 0; i < results.length; i++) {
if (results[i] == null) {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -17,30 +17,33 @@
import java.awt.GraphicsConfigTemplate;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
-import java.awt.event.MouseWheelEvent;
-import java.awt.event.MouseWheelListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Enumeration;
import javax.media.j3d.AmbientLight;
+import javax.media.j3d.Appearance;
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.DirectionalLight;
+import javax.media.j3d.Geometry;
import javax.media.j3d.GraphicsConfigTemplate3D;
import javax.media.j3d.Node;
+import javax.media.j3d.Shape3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.View;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
+import javax.vecmath.Point3f;
import javax.vecmath.Quat4d;
import javax.vecmath.Vector3d;
import javax.vecmath.Vector3f;
import com.ogoglio.client.SpaceClient;
import com.ogoglio.client.UserInputListener;
+import com.ogoglio.client.model.Attachment;
import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.client.model.BodyDataProvider;
import com.ogoglio.client.model.Door;
@@ -54,8 +57,8 @@
import com.ogoglio.client.model.User;
import com.ogoglio.util.BodyConstants;
import com.ogoglio.util.Log;
-import com.ogoglio.util.UIConstants;
import com.ogoglio.util.WebConstants;
+import com.ogoglio.viewer.j3d.body.Skeleton;
import com.ogoglio.viewer.render.Camera;
import com.ogoglio.viewer.render.ClickTarget;
import com.ogoglio.viewer.render.DoorRenderable;
@@ -128,7 +131,7 @@
setCapabilities(sceneRoot);
setCapabilities(usersGroup);
setCapabilities(worldGroup);
- GraphicsConfiguration graphicsConfig = getGraphicsConfiguration(this.offScreen);
+ GraphicsConfiguration graphicsConfig = getGraphicsConfiguration(offScreen);
if (graphicsConfig == null) {
throw new IllegalStateException("Cannot create a 3D graphics configuration.");
}
@@ -216,7 +219,7 @@
sceneRoot.addChild(background);
if (!offScreen && getSpace().shouldDisplaySea()) {
- //TODO ideally this would be infinite in percieved size
+ //TODO ideally this would be infinite in size
float sideLength = 2500;
int divisions = (int) Math.min(20, sideLength / 100);
water = new J3DWater(sideLength, divisions, 2, 0);
@@ -697,10 +700,16 @@
customSkin = dataManager.getBodyTexture(user.getUsername(), bodyConfig.getBodyConfigurationID());
}
- boolean isLocalUser = !offScreen && username != null && user.getUsername().equals(username);
final J3DUserRenderable renderable = new J3DUserRenderable(user, bodyData, customSkin);
renderable.setID(USER_ID_PREFIX + user.getUsername());
+ if (offScreen) {
+ return renderable;
+ }
+
+ //NOTE: BELOW HERE SHOULD BE ONLY ON-SCREEN BLING LIKE CAMERAS, NAME TAGS, AND ATTACHMENTS
+
+ boolean isLocalUser = username != null && user.getUsername().equals(username);
if (isLocalUser) {
float cameraHeight = (float) (renderable.getHeight() - renderable.getHeight() / 5);
camera.setDefaultLocation(0, 0, 0);
@@ -711,7 +720,7 @@
getCanvas().addMouseListener(motionHandler);
getCanvas().addMouseMotionListener(motionHandler);
getCanvas().addMouseWheelListener(motionHandler);
- } else if (!offScreen) {
+ } else {
String displayName = user.getUsername();
if (displayName.startsWith(WebConstants.GUEST_COOKIE_PREFIX)) {
displayName = J3DUserRenderable.convertGuestCookieToDisplayName(displayName);
@@ -719,6 +728,11 @@
renderable.setNameTag(displayName);
}
+ Attachment[] attachments = bodyConfig.getAttachments();
+ for (int i = 0; i < attachments.length; i++) {
+ J3DAttachment j3dAttachment = new J3DAttachment(attachments[i], dataManager);
+ renderable.attach(j3dAttachment);
+ }
return renderable;
}
@@ -848,7 +862,7 @@
public boolean completedInitialLoad() {
return completedInitialLoad;
}
-
+
public static void getEuler(Quat4d quat, Vector3d euler) {
double heading = 0, bank = 0, attitude = 0;
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -16,6 +16,7 @@
import java.awt.Font;
import java.awt.image.BufferedImage;
+import java.util.Vector;
import java.util.regex.Pattern;
import javax.media.j3d.Billboard;
@@ -79,6 +80,8 @@
private boolean playDefaultAnimationWhenComplete = true;
private J3DCameraMotionBehavior cameraBehavior = null;
+
+ private Vector attachments = new Vector();
public J3DUserRenderable(User user, J3DBodyData bodyData, BufferedImage customSkin) {
ArgumentUtils.assertNotNull(user);
@@ -306,4 +309,16 @@
public J3DCameraMotionBehavior getCameraBehavior() {
return cameraBehavior;
}
+
+ public Skeleton getSkeleton() {
+ return skeleton;
+ }
+
+ public void attach(J3DAttachment attachment) {
+ if(attachments.contains(attachment)){
+ return;
+ }
+ attachments.add(attachment);
+ attachment.attach(skeleton);
+ }
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/MorphDeltaMap.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/MorphDeltaMap.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/MorphDeltaMap.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -30,6 +30,9 @@
public MorphDeltaMap(String name, String parentName) {
this.name = name;
+ if(parentName != null && parentName.length() == 0){
+ parentName = null;
+ }
this.parentName = parentName;
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/MorphDeltaMapParser.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/MorphDeltaMapParser.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/MorphDeltaMapParser.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -63,8 +63,8 @@
}
private void parseParentName(String[] tokens) throws MorphDeltaMapParseException {
- if(tokens.length < 2){
- throw new MorphDeltaMapParseException("Bad parent name definition: " + LineTokenizer.toString(tokens));
+ if(tokens.length == 1){
+ return;
}
parentName = LineTokenizer.toString(tokens, 1);
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skeleton.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skeleton.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skeleton.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -162,6 +162,18 @@
setTransform(workingTransform);
}
+ public Point3f getCumulativeOffset() {
+ Point3f result = new Point3f(offset.x, offset.y, offset.z);
+ Bone parent = getParentBone();
+ while(parent != null){
+ result.x += parent.getOffset().x;
+ result.y += parent.getOffset().y;
+ result.z += parent.getOffset().z;
+ parent = parent.getParentBone();
+ }
+ return result;
+ }
+
}
public void print(Bone bone) {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/SkinLoader.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/SkinLoader.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/SkinLoader.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -25,8 +25,10 @@
public class SkinLoader {
- public static final float AVATAR_SIZE = 2; //this will eventually be changable
+ public static final float AVATAR_SIZE = 2; //this will eventually be mutable
+ public static final float ANIMATION_Y_SHIFT = -1.2772343f; //this is the offset to place a human hip at the origin (usually) for standard BVH files
+
private GeometryArray geometry = null;
private BufferedImage baseImage;
@@ -61,37 +63,6 @@
}
public Skin generateSkin(J3DUserRenderable userRenderable) {
- float[] vertices = geometry.getCoordRefFloat();
-
- float maxY = Float.MIN_VALUE;
- float minY = Float.MAX_VALUE;
- for (int i = 1; i < vertices.length; i += 3) {
- if (vertices[i] < minY) {
- minY = vertices[i];
- }
- if (vertices[i] > maxY) {
- maxY = vertices[i];
- }
- }
- float heightScale = AVATAR_SIZE / Math.abs(maxY - minY);
- if (Math.abs(heightScale) > 0.001) {
- for (int i = 0; i < vertices.length - 2; i += 3) {
- vertices[i] = vertices[i] * heightScale;
- vertices[i + 1] = vertices[i + 1] * heightScale;
- vertices[i + 2] = vertices[i + 2] * heightScale;
- }
- }
-
- minY = Float.MAX_VALUE;
- for (int i = 1; i < vertices.length; i += 3) {
- if (vertices[i] < minY) {
- minY = vertices[i];
- }
- }
- float yChange = (float) -1.2772343 - minY;
- for (int i = 0; i < vertices.length - 2; i += 3) {
- vertices[i + 1] = vertices[i + 1] + yChange;
- }
Skin skin = new Skin(baseImage, morphDeltaMaps, bodyConfiguration, userRenderable);
skin.setGeometry(geometry);
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/obj/Obj.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/obj/Obj.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/obj/Obj.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -67,7 +67,13 @@
private ObjMtl mtl = null;
public void writeObj(Writer writer) throws IOException {
- writer.write("# created by Ogoglio Obj library\n");
+ writer.write("# created by Ogoglio Obj library: http://ogoglio.com/\n");
+ writer.write("# num vertices: " + getVertices().length + "\n");
+ writer.write("# num faces: " + faces.size() + "\n");
+ writer.write("# num groups: " + getGroups().length + "\n");
+ writer.write("# num smoothing groups: " + getSmoothingGroups().length + "\n");
+ writer.write("# num material groups: " + getMaterialGroups().length + "\n");
+
if (mtl != null) {
writer.write("mtllib " + mtl.getResourceName() + "\n");
}
@@ -92,7 +98,6 @@
int[][] materialRangeStarts = getRangeStarts(getMaterialGroups());
for (int i = 1; i <= faces.size(); i++) {
-
for (int j = 0; j < groupRangeStarts.length; j++) {
if(groupRangeStarts[j][0] == i) {
writer.write("g " + getGroup(groupRangeStarts[j][1]).getName() + "\n");
@@ -132,6 +137,7 @@
}
writer.write("\n");
}
+ writer.flush();
}
/**
Added: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/AttachmentDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/AttachmentDocument.java (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/AttachmentDocument.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -0,0 +1,62 @@
+package com.ogoglio.xml;
+
+import nanoxml.XMLElement;
+
+import com.ogoglio.util.ArgumentUtils;
+
+public class AttachmentDocument {
+
+ public static final String NAME = "attachment";
+
+ public static final String ATTACHMENT_ID = "attachmentid";
+
+ public static final String TEMPLATE_ID = "templateid";
+
+ public static final String TEMPLATE_OWNER = "templateowner";
+
+ public static final String BODY_CONFIGURATION_ID = "bodyconfigurationid";
+
+ public XMLElement data = null;
+
+ public AttachmentDocument(long attachmentID, String templateOwner, long templateID, long bodyConfigurationID) {
+ data = new XMLElement(NAME);
+ data.setAttribute(ATTACHMENT_ID, attachmentID);
+ ArgumentUtils.assertNotEmpty(templateOwner);
+ data.setAttribute(TEMPLATE_OWNER, templateOwner);
+ ArgumentUtils.assertNotNegative(templateID);
+ data.setAttribute(TEMPLATE_ID, templateID);
+ ArgumentUtils.assertNotNegative(bodyConfigurationID);
+ data.setAttribute(BODY_CONFIGURATION_ID, bodyConfigurationID);
+ }
+
+ public AttachmentDocument(XMLElement data) {
+ if (!NAME.equals(data.getName())) {
+ throw new IllegalArgumentException("data is not named " + NAME + ": " + data);
+ }
+ this.data = data;
+ }
+
+ public long getAttachmentID() {
+ return data.getLongAttribute(ATTACHMENT_ID);
+ }
+
+ public long getTemplateID() {
+ return data.getLongAttribute(TEMPLATE_ID);
+ }
+
+ public String getTemplateOwner() {
+ return data.getStringAttribute(TEMPLATE_OWNER);
+ }
+
+ public long getBodyConfigurationID() {
+ return data.getLongAttribute(BODY_CONFIGURATION_ID);
+ }
+
+ public XMLElement toElement() {
+ return data;
+ }
+
+ public String toString() {
+ return data.toString();
+ }
+}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -41,7 +41,7 @@
data.setAttribute(OWNER_USERNAME, ownerUsername);
ArgumentUtils.assertNotNull(displayName);
data.setAttribute(DISPLAY_NAME, displayName);
- data.setAttribute(BODY_DATA_ID, bodyDataID); //if -1, indicates to use the guest body
+ data.setAttribute(BODY_DATA_ID, bodyDataID); // -1 indicates to use the guest body
if(baseTextureName != null){
data.setAttribute(BASE_TEXTURE_NAME, baseTextureName);
}
@@ -117,6 +117,31 @@
return results;
}
+ public AttachmentDocument[] getAttachmentDocuments() {
+ XMLElement[] elements = data.getChildren(AttachmentDocument.NAME);
+ AttachmentDocument[] results = new AttachmentDocument[elements.length];
+ for (int i = 0; i < results.length; i++) {
+ results[i] = new AttachmentDocument(elements[i]);
+ }
+ return results;
+ }
+
+ public void removeAttachment(long attachmentID) {
+ AttachmentDocument[] docs = getAttachmentDocuments();
+ for (int i = 0; i < docs.length; i++) {
+ if(docs[i].getAttachmentID() == attachmentID){
+ data.removeChild(docs[i].toElement());
+ return;
+ }
+ }
+ }
+
+ public AttachmentDocument addAttachment(String templateOwner, long templateID) {
+ AttachmentDocument doc = new AttachmentDocument(-1, templateOwner, templateID, getBodyConfigurationID());
+ data.addChild(doc.toElement());
+ return doc;
+ }
+
public XMLElement toElement(){
return data;
}
@@ -124,5 +149,4 @@
public String toString(){
return data.toString();
}
-
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/TemplateDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/TemplateDocument.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/TemplateDocument.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -62,14 +62,16 @@
private static final String SEAT_RZ = "seatrz";
+ private static final String IS_ATTACHMENT = "attachment";
+
XMLElement data = null;
//for convenience of people who are creating this dynamically via the mock system
- public TemplateDocument(Long templateID, String displayName, String ownerUsername, String description) {
- this(templateID.longValue(), displayName, ownerUsername, description, null, false, 0, 0, 0, 1, 0, 0, 0);
+ public TemplateDocument(Long templateID, String displayName, String ownerUsername, String description, boolean isAttachment) {
+ this(templateID.longValue(), displayName, ownerUsername, description, null, isAttachment, false, 0, 0, 0, 1, 0, 0, 0);
}
- public TemplateDocument(long templateID, String displayName, String ownerUsername, String description, Set supportFiles, boolean isASeat, double seatX, double seatY, double seatZ, double seatRW, double seatRX, double seatRY, double seatRZ) {
+ public TemplateDocument(long templateID, String displayName, String ownerUsername, String description, Set supportFiles, boolean isAttachment, boolean isASeat, double seatX, double seatY, double seatZ, double seatRW, double seatRX, double seatRY, double seatRZ) {
data = new XMLElement(NAME);
data.setAttribute(TEMPLATE_ID, templateID);
ArgumentUtils.assertNotNull(displayName);
@@ -106,6 +108,7 @@
}
}
}
+ setAttachment(isAttachment);
setSeat(isASeat);
setSeatPosition(seatX, seatY, seatZ);
setSeatRotation(seatRW, seatRX, seatRY, seatRZ);
@@ -216,6 +219,14 @@
return result;
}
+ public boolean isAttachment(){
+ return data.getBooleanAttribute(IS_ATTACHMENT, false);
+ }
+
+ public void setAttachment(boolean isAttachment){
+ data.setAttribute(IS_ATTACHMENT, isAttachment);
+ }
+
public boolean isSeat() {
return data.getBooleanAttribute(IS_SEAT);
}
Modified: maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java
===================================================================
--- maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java 2008-02-06 01:19:59 UTC (rev 709)
+++ maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java 2008-02-06 01:20:17 UTC (rev 710)
@@ -159,18 +159,20 @@
String username = "kurt";
String description = "This thing rocks out with it's cupcake out.";
- TemplateDocument templateDoc = new TemplateDocument(1, displayName, username, description, null, false, 0, 0, 0, 1, 0, 0, 0);
+ TemplateDocument templateDoc = new TemplateDocument(1, displayName, username, description, null, true, false, 0, 0, 0, 1, 0, 0, 0);
assertEquals(1, templateDoc.getTemplateID());
assertEquals(displayName, templateDoc.getDisplayName());
assertEquals(username, templateDoc.getOwnerUsername());
assertEquals(description, templateDoc.getDescription());
-
+ assertEquals(true, templateDoc.isAttachment());
+
templateDoc = new TemplateDocument(XMLElement.parseElementFromString(templateDoc.toString()));
assertEquals(1, templateDoc.getTemplateID());
assertEquals(displayName, templateDoc.getDisplayName());
assertEquals(username, templateDoc.getOwnerUsername());
assertEquals(description, templateDoc.getDescription());
-
+ assertEquals(true, templateDoc.isAttachment());
+
ThingDocument thingDoc1 = new ThingDocument(1, displayName, 1, username, username, 1, new Transform3D(), null);
assertEquals(1, thingDoc1.getThingID());
assertEquals(displayName, thingDoc1.getDisplayName());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 01:19:52
|
Revision: 709
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=709&view=rev
Author: trevorolio
Date: 2008-02-05 17:19:59 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
Added the back end and 3D rendering of attachment geometries and appearances, but not yet morphs or skin textures.
Also no example UI for picking attachments in the body editor, yet.
The "time to private parts" for Ogoglio starts now.
Modified Paths:
--------------
maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java
Modified: maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java
===================================================================
--- maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java 2008-02-06 01:19:48 UTC (rev 708)
+++ maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java 2008-02-06 01:19:59 UTC (rev 709)
@@ -51,13 +51,16 @@
import com.ogoglio.client.WebAPIClient;
import com.ogoglio.client.WebAPIClientWire;
import com.ogoglio.client.WebAPIDescriptor;
+import com.ogoglio.client.model.Attachment;
import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.client.model.BodyDataProvider;
import com.ogoglio.client.model.Space;
+import com.ogoglio.client.model.Template;
import com.ogoglio.client.model.TemplateDataProvider;
import com.ogoglio.client.model.User;
import com.ogoglio.client.model.Space.Context;
import com.ogoglio.util.UIConstants;
+import com.ogoglio.viewer.j3d.J3DAttachment;
import com.ogoglio.viewer.j3d.J3DBodyData;
import com.ogoglio.viewer.j3d.J3DCamera;
import com.ogoglio.viewer.j3d.J3DCanvas;
@@ -68,8 +71,11 @@
import com.ogoglio.viewer.j3d.body.MorphDeltaMap;
import com.ogoglio.viewer.j3d.bvh.Bvh;
import com.ogoglio.xml.AccountDocument;
+import com.ogoglio.xml.AttachmentDocument;
import com.ogoglio.xml.BodyConfigurationDocument;
import com.ogoglio.xml.BodyDataDocument;
+import com.ogoglio.xml.BodySettingDocument;
+import com.ogoglio.xml.TemplateDocument;
/*
* NOTE: String arrays don't function in LiveConnect in IE, so we use the getXXXCount and getXXX(index) pattern
@@ -205,8 +211,8 @@
if (user == null || bodyPanel == null || bodyPanel.renderable == null) {
return;
}
- new Thread(){
- public void run(){
+ new Thread() {
+ public void run() {
try {
// Obtain the size of the displayed canvas
@@ -243,7 +249,7 @@
} catch (Throwable e) {
e.printStackTrace();
}
-
+
}
}.start();
}
@@ -322,7 +328,7 @@
System.err.println("Could not fetch body config");
return;
}
- user.setBodyConfiguration(new BodyConfiguration(doc));
+ user.setBodyConfiguration(createBodyConfiguration(doc));
bodyPanel.bodyData = dataManager.getBodyData(user.getBodyConfiguration().getBodyDataID());
bodyPanel.renderable.initBody(bodyPanel.bodyData, dataManager.getBodyTexture(user.getUsername(), user.getBodyConfiguration().getBodyConfigurationID()));
accountDoc.setBodyConfigurationID(bodyConfigurationID);
@@ -334,9 +340,29 @@
}
}
+ private BodyConfiguration createBodyConfiguration(BodyConfigurationDocument configDoc) {
+ BodyConfiguration config = new BodyConfiguration(configDoc.getBodyConfigurationID(), configDoc.getDisplayName(), configDoc.getBodyDataID(), configDoc.getBaseTextureName());
+ BodySettingDocument[] settingDocs = configDoc.getBodySettingDocuments();
+ for (int i = 0; i < settingDocs.length; i++) {
+ config.addSetting(settingDocs[i].getSettingName(), settingDocs[i].getSetting());
+ }
+ AttachmentDocument[] attachmentDocs = configDoc.getAttachmentDocuments();
+ for (int i = 0; i < attachmentDocs.length; i++) {
+ try {
+ TemplateDocument templateDoc = webClient.getTemplateDocument(attachmentDocs[i].getTemplateOwner(), attachmentDocs[i].getTemplateID());
+ Template template = new Template(templateDoc);
+ Attachment attachment = new Attachment(attachmentDocs[i].getAttachmentID(), template, config);
+ config.addAttachment(attachment);
+ } catch (IOException e) {
+ System.err.println("Could not find template " + attachmentDocs[i].getTemplateID() + " for attachment: " + e);
+ }
+ }
+ return config;
+ }
+
private class SpacelessUser extends User {
public SpacelessUser(String username, BodyConfigurationDocument bodyConfigDoc) {
- super(new Space(new SpacelessContext(), 1, "Space", "nobody", false, 0, UIConstants.LIGHT_BLUE), username, new Transform3D(), new BodyConfiguration(bodyConfigDoc), null, null, null, null);
+ super(new Space(new SpacelessContext(), 1, "Space", "nobody", false, 0, UIConstants.LIGHT_BLUE), username, new Transform3D(), createBodyConfiguration(bodyConfigDoc), null, null, null, null);
}
}
@@ -400,6 +426,13 @@
renderable = new J3DUserRenderable(user, bodyData, dataManager.getBodyTexture(user.getUsername(), user.getBodyConfiguration().getBodyConfigurationID()));
renderable.setCamera(camera);
renderable.getCameraBehavior().setAllowXRotation(false);
+
+ Attachment[] attachments = user.getBodyConfiguration().getAttachments();
+ for (int i = 0; i < attachments.length; i++) {
+ J3DAttachment j3dAttachment = new J3DAttachment(attachments[i], dataManager);
+ renderable.attach(j3dAttachment);
+ }
+
userGroup.addChild(renderable);
return true;
} catch (Exception e) {
@@ -409,7 +442,7 @@
}
public void fetchNewBodyConfiguration() throws IOException {
- user.setBodyConfiguration(new BodyConfiguration(webClient.getDefaultBodyConfiguration(accountDoc.getUsername())));
+ user.setBodyConfiguration(createBodyConfiguration(webClient.getDefaultBodyConfiguration(accountDoc.getUsername())));
bodyData = dataManager.getBodyData(user.getBodyConfiguration().getBodyDataID());
renderable.initBody(bodyData, dataManager.getBodyTexture(user.getUsername(), user.getBodyConfiguration().getBodyConfigurationID()));
}
@@ -522,11 +555,21 @@
private class TemplateProvider implements TemplateDataProvider {
public InputStream getTemplateGeometry(String username, long templateID, int lod) {
- return null;
+ try {
+ return webClient.getTemplateGeometryStream(username, templateID, lod);
+ } catch (IOException e) {
+ System.err.println("Could not fetch template geometry: " + username + ", " + templateID + ", " + lod);
+ return null;
+ }
}
public InputStream getTemplateResource(String username, long templateID, String resourceName) {
- return null;
+ try {
+ return webClient.getTemplateResourceStream(username, templateID, resourceName);
+ } catch (IOException e) {
+ System.err.println("Could not fetch template resource: " + username + ", " + templateID + ", " + resourceName);
+ return null;
+ }
}
public String getTemplateScript(String username, long templateID) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 01:19:43
|
Revision: 708
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=708&view=rev
Author: trevorolio
Date: 2008-02-05 17:19:48 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
Added the back end and 3D rendering of attachment geometries and appearances, but not yet morphs or skin textures.
Also no example UI for picking attachments in the body editor, yet.
The "time to private parts" for Ogoglio starts now.
Modified Paths:
--------------
maven/trunk/ogoglio-bodies/.classpath
maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/BodyMorphTool.java
maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/MayaSkinMapTool.java
maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/createMorph.sh
Added Paths:
-----------
maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/BodyFixer.java
maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/fixBody.sh
Modified: maven/trunk/ogoglio-bodies/.classpath
===================================================================
--- maven/trunk/ogoglio-bodies/.classpath 2008-02-06 01:19:31 UTC (rev 707)
+++ maven/trunk/ogoglio-bodies/.classpath 2008-02-06 01:19:48 UTC (rev 708)
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="src" path="ogoglio-body-tools/src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
Added: maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/BodyFixer.java
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/BodyFixer.java (rev 0)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/BodyFixer.java 2008-02-06 01:19:48 UTC (rev 708)
@@ -0,0 +1,83 @@
+package com.ogoglio.util.body;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.OutputStreamWriter;
+
+import javax.vecmath.Point3f;
+
+import com.ogoglio.viewer.j3d.body.SkinLoader;
+import com.ogoglio.viewer.j3d.obj.Obj;
+import com.ogoglio.viewer.j3d.obj.ObjParser;
+
+public class BodyFixer {
+
+ public static void main(String[] args) {
+ try {
+
+ if (args.length != 1) {
+ System.err.println("Bad arg length: " + args.length);
+ printHelp();
+ return;
+ }
+ File baseMeshFile = new File(args[0]);
+
+ if (!baseMeshFile.exists()) {
+ System.err.println("Could not read: ");
+ System.err.println(baseMeshFile + " exists: " + baseMeshFile.exists());
+ printHelp();
+ return;
+ }
+
+ Obj baseObj = new ObjParser(new FileInputStream(baseMeshFile)).parse();
+ scaleToStandardAvatarHeight(baseObj);
+ moveHipToOrigin(baseObj);
+ baseObj.writeObj(new OutputStreamWriter(System.out));
+ System.out.flush();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void moveHipToOrigin(Obj obj){
+ Point3f[] vertices = obj.getVertices();
+ float minY = Float.MAX_VALUE;
+ for (int i = 0; i < vertices.length; i++) {
+ if (vertices[i].y < minY) {
+ minY = vertices[i].y;
+ }
+ }
+ float yChange = (float) SkinLoader.ANIMATION_Y_SHIFT - minY;
+ System.out.println("# Y Change: " + yChange);
+ for (int i = 0; i < vertices.length; i++) {
+ vertices[i].y = vertices[i].y + yChange;
+ }
+ }
+
+ public static void scaleToStandardAvatarHeight(Obj obj){
+ Point3f[] vertices = obj.getVertices();
+ float maxY = Float.MIN_VALUE;
+ float minY = Float.MAX_VALUE;
+ for (int i = 0; i < vertices.length; i++) {
+ if (vertices[i].y < minY) {
+ minY = vertices[i].y;
+ }
+ if (vertices[i].y > maxY) {
+ maxY = vertices[i].y;
+ }
+ }
+ float heightScale = SkinLoader.AVATAR_SIZE / Math.abs(maxY - minY);
+ System.out.println("# Height scale: " + heightScale);
+ if (Math.abs(heightScale) > 0.001 || Math.abs(heightScale) < 0.001) {
+ for (int i = 0; i < vertices.length; i++) {
+ vertices[i].x = vertices[i].x * heightScale;
+ vertices[i].y = vertices[i].y * heightScale;
+ vertices[i].z = vertices[i].z * heightScale;
+ }
+ }
+ }
+
+ public static void printHelp() {
+ System.out.println("Usage: ...BodyFixer <path to obj file>");
+ }
+}
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/BodyMorphTool.java
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/BodyMorphTool.java 2008-02-06 01:19:31 UTC (rev 707)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/BodyMorphTool.java 2008-02-06 01:19:48 UTC (rev 708)
@@ -9,6 +9,7 @@
import javax.vecmath.Vector3f;
import com.ogoglio.viewer.j3d.body.MorphDeltaMap;
+import com.ogoglio.viewer.j3d.body.SkinLoader;
import com.ogoglio.viewer.j3d.obj.Obj;
import com.ogoglio.viewer.j3d.obj.ObjParseException;
import com.ogoglio.viewer.j3d.obj.ObjParser;
@@ -16,26 +17,20 @@
public class BodyMorphTool {
public static void main(String[] args) {
- if (args.length < 3) {
+ if (args.length != 4) {
System.err.println("Bad arg length: " + args.length);
printHelp();
return;
}
String name = args[0];
- String parentName = null;
- File baseMeshFile = null;
- File morphMeshFile = null;
- if(args.length > 3){
- parentName = args[1];
- baseMeshFile = new File(args[2]);
- morphMeshFile = new File(args[3]);
- } else {
- baseMeshFile = new File(args[1]);
- morphMeshFile = new File(args[2]);
- }
+ String parentName = args[1];
+ File baseMeshFile = new File(args[2]);
+ File morphMeshFile = new File(args[3]);
if (!baseMeshFile.exists() || !morphMeshFile.exists()) {
- System.err.println("Could not read: " + baseMeshFile.exists() + ", " + morphMeshFile.exists());
+ System.err.println("Could not read: ");
+ System.err.println(baseMeshFile + " exists: " + baseMeshFile.exists());
+ System.err.println(morphMeshFile + " exists: " + morphMeshFile.exists());
printHelp();
return;
}
@@ -62,6 +57,29 @@
Point3f[] basePoints = baseObj.getVertices();
Point3f[] morphPoints = morphObj.getVertices();
+ float maxY = Float.MIN_VALUE;
+ float minY = Float.MAX_VALUE;
+ for (int i = 0; i < basePoints.length; i++) {
+ if (basePoints[i].y < minY) {
+ minY = basePoints[i].y;
+ }
+ if (basePoints[i].y > maxY) {
+ maxY = basePoints[i].y;
+ }
+ }
+
+ float heightScale = SkinLoader.AVATAR_SIZE / Math.abs(maxY - minY);
+ if (Math.abs(heightScale) > 0.001) {
+ for (int i = 0; i < basePoints.length; i++) {
+ basePoints[i].x = basePoints[i].x * heightScale;
+ basePoints[i].y = basePoints[i].y * heightScale;
+ basePoints[i].z = basePoints[i].z * heightScale;
+ morphPoints[i].x = morphPoints[i].x * heightScale;
+ morphPoints[i].y = morphPoints[i].y * heightScale;
+ morphPoints[i].z = morphPoints[i].z * heightScale;
+ }
+ }
+
MorphDeltaMap map = new MorphDeltaMap(name, parentName);
int lower = -1;
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/MayaSkinMapTool.java
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/MayaSkinMapTool.java 2008-02-06 01:19:31 UTC (rev 707)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/java/com/ogoglio/util/body/MayaSkinMapTool.java 2008-02-06 01:19:48 UTC (rev 708)
@@ -56,7 +56,7 @@
}
parseGroupName(line);
currentGroup = new Group(currentGroupName);
- } else if (line.startsWith("// Result: ")) {
+ } else if (line.startsWith("// Result:")) {
if (currentGroup == null) {
throw new SkinMapParseException("Started a group without parsing a new group name: " + line);
}
Modified: maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/createMorph.sh
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/createMorph.sh 2008-02-06 01:19:31 UTC (rev 707)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/createMorph.sh 2008-02-06 01:19:48 UTC (rev 708)
@@ -2,4 +2,4 @@
PATH_TO_TRUNK="../../../../../.."
LOCAL_CLASSPATH=$PATH_TO_TRUNK/ogoglio-bodies/ogoglio-body-tools/target/ogoglio-body-tools-0.0.1-SNAPSHOT.jar
LOCAL_CLASSPATH=$LOCAL_CLASSPATH:$PATH_TO_TRUNK/ogoglio-common/target/ogoglio-common-0.0.1-SNAPSHOT.jar
-java -cp $LOCAL_CLASSPATH com.ogoglio.util.body.BodyMorphTool "$1" "$2" "$3" "$4" "$5" "$6"
+java -cp $LOCAL_CLASSPATH com.ogoglio.util.body.BodyMorphTool "$1" "$2" "$3/$4" "$3/$5"
Added: maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/fixBody.sh
===================================================================
--- maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/fixBody.sh (rev 0)
+++ maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/fixBody.sh 2008-02-06 01:19:48 UTC (rev 708)
@@ -0,0 +1,5 @@
+#!/bin/bash
+PATH_TO_TRUNK="../../../../../.."
+LOCAL_CLASSPATH=$PATH_TO_TRUNK/ogoglio-bodies/ogoglio-body-tools/target/ogoglio-body-tools-0.0.1-SNAPSHOT.jar
+LOCAL_CLASSPATH=$LOCAL_CLASSPATH:$PATH_TO_TRUNK/ogoglio-common/target/ogoglio-common-0.0.1-SNAPSHOT.jar
+java -cp $LOCAL_CLASSPATH com.ogoglio.util.body.BodyFixer "$1"
Property changes on: maven/trunk/ogoglio-bodies/ogoglio-body-tools/src/main/resources/scripts/fixBody.sh
___________________________________________________________________
Name: svn:executable
+ *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-06 01:19:26
|
Revision: 707
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=707&view=rev
Author: trevorolio
Date: 2008-02-05 17:19:31 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
Added the back end and 3D rendering of attachment geometries and appearances, but not yet morphs or skin textures.
Also no example UI for picking attachments in the body editor, yet.
The "time to private parts" for Ogoglio starts now.
Modified Paths:
--------------
maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/migrate/MigrationSupport.java
Modified: maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/migrate/MigrationSupport.java
===================================================================
--- maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/migrate/MigrationSupport.java 2008-02-05 04:00:23 UTC (rev 706)
+++ maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/migrate/MigrationSupport.java 2008-02-06 01:19:31 UTC (rev 707)
@@ -132,12 +132,14 @@
Log.error("Cannot migrate data! Property ogoglio.okToMigrateDB is false or non-existent!");
return false;
}
- String hbm_auto_flag = "update";
- if (!isUpdate) {
- hbm_auto_flag = "create";
- }
for (int i = db_is; i < db_wants_to_be; ++i) {
+
+ String hbm_auto_flag = "update";
+ if (i == 0 && !isUpdate) {
+ hbm_auto_flag = "create";
+ }
+
Migration current = getMigrationList()[i];
Log.info("DB: Attempting migration from " + i + " to " + (i + 1) + " with auto HBM:" + hbm_auto_flag);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ian...@us...> - 2008-02-05 04:00:21
|
Revision: 706
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=706&view=rev
Author: iansmith
Date: 2008-02-04 20:00:23 -0800 (Mon, 04 Feb 2008)
Log Message:
-----------
Added support for a new optional argument in server.xml (preferredIPAddr). This allows the
server configuration to control what IP the server will give out for itself when asked. This returned via the ServiceDocument that can be grabbed from the BaseSpace resource.
This was needed because it appears amazon uses a NAT interface via Xen to protect instances, thus servers were (wrongly, from a client point of view) reporting their IP addr as a local address, like 10.1.2.3. This interacted badly (sigh) with our workaround to the sun security
problem that appeared in java 1.6_03 that required us to use IP addresses to address the server.
Really, most people will never need this. Really.
Modified Paths:
--------------
maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/VerifyEnvironmentMojo.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/WebappServletBase.java
maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml
Modified: maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/VerifyEnvironmentMojo.java
===================================================================
--- maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/VerifyEnvironmentMojo.java 2008-02-01 23:48:38 UTC (rev 705)
+++ maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/VerifyEnvironmentMojo.java 2008-02-05 04:00:23 UTC (rev 706)
@@ -29,6 +29,11 @@
"UserDatabase",
"mailSession"
};
+
+ private static final String[] OPTIONAL_NAMES= {
+ "preferredIPAddr"
+ };
+
/**
* @parameter
*/
@@ -108,7 +113,7 @@
Iterator<String> it = resourceLinkMap.keySet().iterator();
while (it.hasNext()) {
String target = it.next();
- if (!areDefined.contains(target)) {
+ if ((!areDefined.contains(target)) && (!isOptional(target))) {
result.add(target);
}
}
@@ -116,6 +121,15 @@
}
+ private boolean isOptional(String target) {
+ for (int i=0; i<OPTIONAL_NAMES.length;++i) {
+ if (OPTIONAL_NAMES[i].equals(target)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private Map<String,String> computeExpectedLinks(XMLElement contextRoot) throws MojoExecutionException {
Map<String,String> result=new HashMap<String,String>();
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2008-02-01 23:48:38 UTC (rev 705)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2008-02-05 04:00:23 UTC (rev 706)
@@ -109,7 +109,11 @@
}
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements, AccountRecord authedAccount) throws PersistException, ServletException, IOException {
- ServiceDocument serviceDocument = new ServiceDocument(messageProxy.getUserCount(), messageProxy.getSimCount(), request.getLocalAddr());
+ String localAddr=request.getLocalAddr();
+ if (preferredIPAddr!=null) {
+ localAddr=preferredIPAddr;
+ }
+ ServiceDocument serviceDocument = new ServiceDocument(messageProxy.getUserCount(), messageProxy.getSimCount(), localAddr);
sendStringResponse(serviceDocument.toString(), "text/xml", response);
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/WebappServletBase.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/WebappServletBase.java 2008-02-01 23:48:38 UTC (rev 705)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/WebappServletBase.java 2008-02-05 04:00:23 UTC (rev 706)
@@ -1,6 +1,7 @@
package com.ogoglio.site;
import javax.naming.Context;
+import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
@@ -8,6 +9,7 @@
public abstract class WebappServletBase extends OgoglioServletBase {
protected boolean servletNeeded=true;
+ protected String preferredIPAddr=null;
public void init(ServletConfig config) throws ServletException {
try {
@@ -17,6 +19,11 @@
if ("false".equals(useMe.toLowerCase())) {
servletNeeded=false;
}
+ try {
+ preferredIPAddr = (String) envCtx.lookup("ogoglio/preferredIPAddr");
+ } catch (NameNotFoundException e) {
+ //this is optional
+ }
super.init(config);
} catch (NamingException e) {
bailOutOfInit(e);
Modified: maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml 2008-02-01 23:48:38 UTC (rev 705)
+++ maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml 2008-02-05 04:00:23 UTC (rev 706)
@@ -23,4 +23,6 @@
<ResourceLink name="ogoglio/simFilter" global="simFilter" type="java.lang.String"/>
<ResourceLink name="ogoglio/simFilterPort" global="simFilterPort" type="java.lang.String"/>
+ <ResourceLink name="ogoglio/preferredIPAddr" global="preferredIPAddr" type="java.lang.String"/>
+
</Context>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ian...@us...> - 2008-02-01 23:48:57
|
Revision: 705
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=705&view=rev
Author: iansmith
Date: 2008-02-01 15:48:38 -0800 (Fri, 01 Feb 2008)
Log Message:
-----------
Added some chicanery so that our openGL settings don't hose an EC2 instance.
Pom changes so we can debug with log4j (sigh) in ogoglio integration tests.
Modified Paths:
--------------
maven/trunk/ogoglio-appdev/pom.xml
maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java
maven/trunk/ogoglio-integration-test/pom.xml
maven/trunk/ogoglio-server/pom.xml
Modified: maven/trunk/ogoglio-appdev/pom.xml
===================================================================
--- maven/trunk/ogoglio-appdev/pom.xml 2008-01-31 23:07:09 UTC (rev 704)
+++ maven/trunk/ogoglio-appdev/pom.xml 2008-02-01 23:48:38 UTC (rev 705)
@@ -15,7 +15,7 @@
<dependencies>
<dependency>
- <groupId>com.sun</groupId>
+ <groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
<scope>provided</scope>
Modified: maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java
===================================================================
--- maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java 2008-01-31 23:07:09 UTC (rev 704)
+++ maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java 2008-02-01 23:48:38 UTC (rev 705)
@@ -382,13 +382,13 @@
setLayout(new BorderLayout());
universe = new J3DUniverse();
- canvas = new J3DCanvas(J3DRenderer.getGraphicsConfiguration(), false);
+ canvas = new J3DCanvas(J3DRenderer.getGraphicsConfiguration(false), false);
canvas.addMouseWheelListener(this);
camera = new J3DCamera();
camera.setCanvas(canvas);
add(canvas, BorderLayout.CENTER);
- offscreenCanvas = new J3DCanvas(J3DRenderer.getGraphicsConfiguration(), true);
+ offscreenCanvas = new J3DCanvas(J3DRenderer.getGraphicsConfiguration(false), true);
camera.getView().addCanvas3D(offscreenCanvas);
setupUniverse();
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2008-01-31 23:07:09 UTC (rev 704)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2008-02-01 23:48:38 UTC (rev 705)
@@ -128,7 +128,7 @@
setCapabilities(sceneRoot);
setCapabilities(usersGroup);
setCapabilities(worldGroup);
- GraphicsConfiguration graphicsConfig = getGraphicsConfiguration();
+ GraphicsConfiguration graphicsConfig = getGraphicsConfiguration(this.offScreen);
if (graphicsConfig == null) {
throw new IllegalStateException("Cannot create a 3D graphics configuration.");
}
@@ -747,13 +747,15 @@
return renderable;
}
- public static GraphicsConfiguration getGraphicsConfiguration() {
+ public static GraphicsConfiguration getGraphicsConfiguration(boolean offscreen) {
GraphicsConfigTemplate3D configTemplate = new GraphicsConfigTemplate3D();
configTemplate.setSceneAntialiasing(GraphicsConfigTemplate.PREFERRED);
configTemplate.setDoubleBuffer(GraphicsConfigTemplate.PREFERRED);
- configTemplate.setBlueSize(8);
- configTemplate.setRedSize(8);
- configTemplate.setGreenSize(8);
+ if (!offscreen) { //it appears that these lines hose up an EC2 instance running j3d
+ configTemplate.setBlueSize(8);
+ configTemplate.setRedSize(8);
+ configTemplate.setGreenSize(8);
+ }
GraphicsConfiguration config = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getBestConfiguration(configTemplate);
if (config != null) {
return config;
Modified: maven/trunk/ogoglio-integration-test/pom.xml
===================================================================
--- maven/trunk/ogoglio-integration-test/pom.xml 2008-01-31 23:07:09 UTC (rev 704)
+++ maven/trunk/ogoglio-integration-test/pom.xml 2008-02-01 23:48:38 UTC (rev 705)
@@ -16,6 +16,14 @@
<packaging>jar</packaging>
<build>
+ <resources>
+ <resource>
+ <directory>src/main/resources/log4j</directory>
+ <includes>
+ <include>log4j.properties</include>
+ </includes>
+ </resource>
+ </resources>
<testResources>
<testResource>
<filtering>true</filtering>
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2008-01-31 23:07:09 UTC (rev 704)
+++ maven/trunk/ogoglio-server/pom.xml 2008-02-01 23:48:38 UTC (rev 705)
@@ -295,7 +295,7 @@
</dependency>
<dependency>
- <groupId>com.sun</groupId>
+ <groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
<scope>provided</scope>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <duc...@us...> - 2008-01-31 23:07:07
|
Revision: 704
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=704&view=rev
Author: ducheneaut
Date: 2008-01-31 15:07:09 -0800 (Thu, 31 Jan 2008)
Log Message:
-----------
Deal more gracefully with the (rare) occasions when files checked out by SVN on MacOS X have exactly the same timestamp, causing og:populate to throw an exception. Instead, PopulateMojo now increases a file's timestamp by a few milliseconds if it's equal to another one.
Modified Paths:
--------------
maven/trunk/dev-plugins/.classpath
maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/PopulateMojo.java
maven/trunk/ogoglio/.classpath
maven/trunk/ogoglio-bodies/.classpath
maven/trunk/ogoglio-server/.classpath
Modified: maven/trunk/dev-plugins/.classpath
===================================================================
--- maven/trunk/dev-plugins/.classpath 2008-01-31 19:01:00 UTC (rev 703)
+++ maven/trunk/dev-plugins/.classpath 2008-01-31 23:07:09 UTC (rev 704)
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry excluding="**" kind="src" output="src/main/resources" path="src/main/resources"/>
+ <classpathentry excluding="**" kind="src" output="src/test/resources" path="src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
Modified: maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/PopulateMojo.java
===================================================================
--- maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/PopulateMojo.java 2008-01-31 19:01:00 UTC (rev 703)
+++ maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/PopulateMojo.java 2008-01-31 23:07:09 UTC (rev 704)
@@ -42,7 +42,7 @@
private Map<Long, SpaceDocument> localSpaces = new HashMap<Long, SpaceDocument>();
- private Map<String, SpaceDocument> serveSpacerNameToSpaceDoc = new HashMap<String, SpaceDocument>();
+ private Map<String, SpaceDocument> serverSpaceNameToSpaceDoc = new HashMap<String, SpaceDocument>();
private Map<String, TemplateDocument> existingServerTemplates = null;
@@ -67,14 +67,14 @@
if (candidate.getName().startsWith(TEMPLATE_PREFIX)) {
uploadTemplate(client, candidate, existingServerTemplates);
} else if (candidate.getName().startsWith(SPACE_PREFIX)) {
- readSpace(client, candidate);
+ readSpace(client, candidate, i);
} else {
if (!candidate.getName().equals(".svn")) {
getLog().warn("Unable to process in populate:" + candidate.getAbsolutePath());
}
}
}
- serveSpacerNameToSpaceDoc = getAllServerSpaces(client);
+ serverSpaceNameToSpaceDoc = getAllServerSpaces(client);
patchSpaces(client);
}
@@ -110,8 +110,8 @@
try {
long localModTime = iter.next();
fakeSpaceDoc = localSpaces.get(localModTime);
- if (serveSpacerNameToSpaceDoc.containsKey(fakeSpaceDoc.getDisplayName())) {
- realSpaceDoc = serveSpacerNameToSpaceDoc.get(fakeSpaceDoc.getDisplayName());
+ if (serverSpaceNameToSpaceDoc.containsKey(fakeSpaceDoc.getDisplayName())) {
+ realSpaceDoc = serverSpaceNameToSpaceDoc.get(fakeSpaceDoc.getDisplayName());
Date fileModified = new Date(localModTime);
Date serverModified = TemplateSupportFileDocument.fmt.parse(realSpaceDoc.getLastModifiedAsUTC());
@@ -167,7 +167,7 @@
}
}
- private void readSpace(WebAPIClient client, File candidate) throws MojoExecutionException {
+ private void readSpace(WebAPIClient client, File candidate, int fileNumber) throws MojoExecutionException {
String name = candidate.getName();
String num = name.substring(SPACE_PREFIX.length());
int spaceFakeId = -189;
@@ -183,10 +183,13 @@
FileInputStream inputStream = new FileInputStream(candidate);
String docContent = StreamUtils.readInput(inputStream);
SpaceDocument doc = new SpaceDocument(XMLElement.parseElementFromString(docContent));
- if(localSpaces.get(candidate.lastModified()) != null){
- throw new MojoExecutionException("Sadly, space-* docs must have unique timestamps.");
+ long timeStamp = candidate.lastModified();
+ if(localSpaces.get(timeStamp) != null){
+ // Rare occurrence: sometimes files checked out by SVN on MacOS X end up having exactly the same timestamp
+ // Simply increment it by a few milliseconds and use the new value for the index
+ timeStamp = candidate.lastModified() + fileNumber;
}
- localSpaces.put(candidate.lastModified(), doc);
+ localSpaces.put(timeStamp, doc);
inputStream.close();
} catch (IOException e) {
throw new MojoExecutionException("IO Error reading space", e);
Modified: maven/trunk/ogoglio/.classpath
===================================================================
--- maven/trunk/ogoglio/.classpath 2008-01-31 19:01:00 UTC (rev 703)
+++ maven/trunk/ogoglio/.classpath 2008-01-31 23:07:09 UTC (rev 704)
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry excluding="**" kind="src" output="src/main/resources" path="src/main/resources"/>
+ <classpathentry excluding="**" kind="src" output="src/test/resources" path="src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
Modified: maven/trunk/ogoglio-bodies/.classpath
===================================================================
--- maven/trunk/ogoglio-bodies/.classpath 2008-01-31 19:01:00 UTC (rev 703)
+++ maven/trunk/ogoglio-bodies/.classpath 2008-01-31 23:07:09 UTC (rev 704)
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="ogoglio-body-tools/src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
Modified: maven/trunk/ogoglio-server/.classpath
===================================================================
--- maven/trunk/ogoglio-server/.classpath 2008-01-31 19:01:00 UTC (rev 703)
+++ maven/trunk/ogoglio-server/.classpath 2008-01-31 23:07:09 UTC (rev 704)
@@ -6,10 +6,6 @@
<classpathentry excluding="**" kind="src" output="src/main/resources/hibernate" path="src/main/resources/hibernate"/>
<classpathentry excluding="**" kind="src" output="src/test/resources" path="src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
- <attributes>
- <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="/usr/local/jdk1.5.0_12/jre/lib/i386"/>
- </attributes>
- </classpathentry>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-01-31 19:00:59
|
Revision: 703
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=703&view=rev
Author: trevorolio
Date: 2008-01-31 11:01:00 -0800 (Thu, 31 Jan 2008)
Log Message:
-----------
Tweaked the inventory page to easily add multiple possessions to a space. Added a handy (if not exactly accurate) landscape on which to test picking speeds.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/inventory.html
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/resources/populate/template-89/
maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.blend
maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.mtl
maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.obj
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.blend
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.blend
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.mtl
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.mtl (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.mtl 2008-01-31 19:01:00 UTC (rev 703)
@@ -0,0 +1,12 @@
+# Blender3D MTL File: BaseMap.blend
+# Material Count: 1
+newmtl None_BaseMap.gif
+Ns 0
+Ka 0.000000 0.000000 0.000000
+Kd 0.8 0.8 0.8
+Ks 0.8 0.8 0.8
+d 1
+illum 2
+map_Kd IraqMap.gif
+
+
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-89/IraqMap.obj 2008-01-31 19:01:00 UTC (rev 703)
@@ -0,0 +1,23947 @@
+# Blender3D v243 OBJ File: BaseMap.blend
+# www.blender3d.org
+mtllib IraqMap.mtl
+o Grid
+v 100.404411 0.304802 99.593941
+v 97.229843 0.304802 99.606804
+v 94.055267 0.304802 99.619667
+v 90.880684 0.312150 99.632530
+v 87.706108 0.642298 99.645393
+v 84.531532 1.154474 99.658264
+v 81.356949 1.420378 99.671127
+v 78.182373 1.420378 99.683990
+v 75.007797 1.420378 99.696854
+v 71.833221 1.420378 99.709717
+v 68.658653 1.420378 99.722588
+v 65.484070 1.431400 99.735451
+v 62.309494 1.926621 99.748314
+v 59.134922 2.694885 99.761177
+v 55.960339 3.093741 99.774040
+v 52.785763 3.093741 99.786911
+v 49.611187 3.093741 99.799774
+v 46.436615 3.093741 99.812637
+v 43.262035 3.093741 99.825500
+v 40.087456 3.079045 99.838364
+v 36.912880 2.418749 99.851234
+v 33.738304 1.384041 99.864098
+v 30.563726 0.356346 99.876961
+v 27.389147 -0.411919 99.889824
+v 24.214569 -0.810774 99.902687
+v 21.039993 -0.810774 99.915558
+v 17.865417 -0.810774 99.928421
+v 14.690840 -0.810774 99.941284
+v 11.516263 -0.810774 99.954147
+v 8.341686 -0.810774 99.967010
+v 5.167109 -0.799752 99.979881
+v 1.992531 -0.304529 99.992744
+v -1.182046 0.463735 100.005608
+v -4.356623 0.867451 100.018471
+v -7.531200 1.085877 100.031342
+v -10.705776 1.424731 100.044205
+v -13.880354 1.594170 100.057068
+v -17.054930 1.302937 100.069931
+v -20.229507 0.851130 100.082794
+v -23.404085 0.621431 100.095665
+v -26.578661 0.839856 100.108528
+v -29.753239 1.178711 100.121391
+v -32.927814 1.346529 100.134254
+v -36.102394 0.982487 100.147118
+v -39.276970 0.417729 100.159988
+v -42.451546 0.131009 100.172852
+v -45.626125 0.422243 100.185715
+v -48.800701 0.874049 100.198578
+v -51.975281 1.102129 100.211441
+v -55.149860 0.810895 100.224312
+v -58.324432 0.359089 100.237175
+v -61.499012 0.129389 100.250038
+v -64.673592 0.347814 100.262901
+v -67.848167 0.686669 100.275764
+v -71.022743 0.854487 100.288635
+v -74.197327 0.490445 100.301498
+v -77.371902 -0.074312 100.314362
+v -80.546478 -0.361032 100.327225
+v -83.721054 -0.069799 100.340088
+v -86.895630 0.382007 100.352959
+v -90.070213 0.611708 100.365822
+v -93.244789 0.393282 100.378685
+v -96.419357 0.054427 100.391548
+v -99.593933 -0.121493 100.404411
+v -99.606796 0.054428 97.229843
+v -96.432220 0.191225 97.216980
+v -93.257652 0.466232 97.204117
+v -90.083076 0.382009 97.191254
+v -86.908493 0.199612 97.178391
+v -83.733917 -0.167064 97.165520
+v -80.559341 -0.074312 97.152657
+v -77.384766 0.153683 97.139793
+v -74.210190 0.612029 97.126930
+v -71.035606 0.686670 97.114067
+v -67.861031 0.549873 97.101196
+v -64.686455 0.274865 97.088333
+v -61.511875 0.359089 97.075470
+v -58.337296 0.541485 97.062607
+v -55.162724 0.908162 97.049744
+v -51.988144 0.874050 97.036873
+v -48.813564 0.691654 97.024010
+v -45.638988 0.324978 97.011147
+v -42.464409 0.417729 96.998283
+v -39.289833 0.645724 96.985420
+v -36.115257 1.104070 96.972549
+v -32.940678 1.178711 96.959686
+v -29.766104 1.041914 96.946823
+v -26.591526 0.766907 96.933960
+v -23.416950 0.851131 96.921097
+v -20.242373 1.033527 96.908226
+v -17.067795 1.400203 96.895363
+v -13.893219 1.424732 96.882500
+v -10.718641 1.287935 96.869637
+v -7.544065 1.012928 96.856773
+v -4.369488 0.463736 96.843903
+v -1.194911 0.153585 96.831039
+v 1.979666 -0.469923 96.818176
+v 5.154243 -0.810773 96.805313
+v 8.328821 -0.810773 96.792442
+v 11.503398 -0.810773 96.779579
+v 14.677975 -0.411919 96.766716
+v 17.852552 -0.411919 96.753853
+v 21.027128 -0.411919 96.740990
+v 24.201704 -0.411919 96.728119
+v 27.376282 -0.101768 96.715256
+v 30.550861 1.057652 96.702393
+v 33.725441 1.807931 96.689529
+v 36.900017 2.639275 96.676666
+v 40.074593 3.093742 96.663795
+v 43.249172 3.093742 96.650932
+v 46.423752 2.694888 96.638069
+v 49.598324 2.694888 96.625206
+v 52.772900 2.694888 96.612343
+v 55.947475 2.694888 96.599472
+v 59.122059 2.384735 96.586609
+v 62.296631 1.761228 96.573746
+v 65.471207 1.420378 96.560883
+v 68.645790 1.420378 96.548019
+v 71.820358 1.154475 96.535149
+v 74.994934 1.154475 96.522285
+v 78.169510 1.154475 96.509422
+v 81.344086 1.154475 96.496559
+v 84.518669 0.947707 96.483696
+v 87.693245 0.532035 96.470825
+v 90.867821 0.304802 96.457962
+v 94.042404 0.304802 96.445099
+v 97.216980 0.703657 96.432236
+v 100.391548 0.703657 96.419373
+v 100.378685 1.075977 93.244797
+v 97.204117 0.619347 93.257660
+v 94.029541 0.703657 93.270523
+v 90.854958 0.703657 93.283386
+v 87.680382 0.735621 93.296249
+v 84.505806 0.929349 93.309120
+v 81.331223 0.642300 93.321983
+v 78.156647 0.642300 93.334846
+v 74.982071 0.642300 93.347710
+v 71.807495 0.947708 93.360573
+v 68.632927 1.154475 93.373444
+v 65.458344 1.154475 93.386307
+v 62.283764 1.202871 93.399170
+v 59.109192 1.494297 93.412033
+v 55.934608 1.926624 93.424896
+v 52.760033 1.926624 93.437767
+v 49.585457 1.926624 93.450630
+v 46.410885 2.384737 93.463493
+v 43.236305 2.694888 93.476357
+v 40.061726 2.694888 93.489220
+v 36.887150 2.630960 93.502090
+v 33.712574 2.243504 93.514954
+v 30.537996 1.763642 93.527817
+v 27.363417 1.057651 93.540680
+v 24.188839 0.356345 93.553543
+v 21.014263 0.356345 93.566414
+v 17.839687 0.356345 93.579277
+v 14.665111 -0.101768 93.592140
+v 11.490534 -0.411919 93.605003
+v 8.315957 -0.411919 93.617867
+v 5.141379 -0.411919 93.630737
+v 1.966802 -0.363973 93.643600
+v -1.207776 -0.469922 93.656464
+v -4.382353 0.153585 93.669327
+v -7.556930 0.484883 93.682198
+v -10.731505 1.012928 93.695061
+v -13.906083 1.287935 93.707924
+v -17.080660 1.396152 93.720787
+v -20.255238 1.400203 93.733650
+v -23.429815 1.033527 93.746521
+v -26.604391 0.872512 93.759384
+v -29.778969 0.766907 93.772247
+v -32.953545 1.041914 93.785110
+v -36.128124 1.142986 93.797974
+v -39.302700 1.104070 93.810844
+v -42.477276 0.645724 93.823708
+v -45.651855 0.446145 93.836571
+v -48.826431 0.324978 93.849434
+v -52.001011 0.691654 93.862297
+v -55.175591 0.845542 93.875168
+v -58.350163 0.908161 93.888031
+v -61.524742 0.541485 93.900894
+v -64.699318 0.380470 93.913757
+v -67.873894 0.274866 93.926620
+v -71.048470 0.549873 93.939491
+v -74.223053 0.650944 93.952354
+v -77.397629 0.612028 93.965218
+v -80.572205 0.153682 93.978081
+v -83.746780 -0.045897 93.990944
+v -86.921356 -0.167064 94.003815
+v -90.095940 0.199613 94.016678
+v -93.270515 0.360627 94.029541
+v -96.445084 0.466232 94.042404
+v -99.619659 0.393282 94.055267
+v -99.632523 0.611709 90.880684
+v -96.457947 0.382009 90.867821
+v -93.283379 0.199613 90.854958
+v -90.108803 -0.167063 90.842094
+v -86.934219 -0.045896 90.829231
+v -83.759644 0.153684 90.816360
+v -80.585068 0.612029 90.803497
+v -77.410492 0.650945 90.790634
+v -74.235916 0.549873 90.777771
+v -71.061333 0.274865 90.764908
+v -67.886757 0.380471 90.752037
+v -64.712181 0.541487 90.739174
+v -61.537605 0.908163 90.726311
+v -58.363026 0.845543 90.713448
+v -55.188454 0.691654 90.700584
+v -52.013874 0.324978 90.687714
+v -48.839294 0.446145 90.674850
+v -45.664719 0.645725 90.661987
+v -42.490139 1.104071 90.649124
+v -39.315563 1.142987 90.636261
+v -36.140987 1.041914 90.623390
+v -32.966408 0.766907 90.610527
+v -29.791834 0.872512 90.597664
+v -26.617256 1.033528 90.584801
+v -23.442680 1.400205 90.571938
+v -20.268103 1.396152 90.559067
+v -17.093525 1.287935 90.546204
+v -13.918948 1.012928 90.533340
+v -10.744370 0.484883 90.520477
+v -7.569795 0.153584 90.507614
+v -4.395217 -0.469923 90.494743
+v -1.220640 -0.363973 90.481880
+v 1.953937 -0.101766 90.469017
+v 5.128514 0.356347 90.456154
+v 8.303092 0.356347 90.443283
+v 11.477669 0.356347 90.430420
+v 14.652246 1.057654 90.417557
+v 17.826822 1.347081 90.404694
+v 21.001398 1.384043 90.391830
+v 24.175974 1.384043 90.378960
+v 27.350552 1.807934 90.366096
+v 30.525131 2.243505 90.353233
+v 33.699711 2.323114 90.340370
+v 36.874287 1.926622 90.327507
+v 40.048862 1.926622 90.314636
+v 43.223442 1.926622 90.301773
+v 46.398022 1.494295 90.288910
+v 49.572594 1.202870 90.276047
+v 52.747169 1.165328 90.263184
+v 55.921745 1.165328 90.250313
+v 59.096329 0.947707 90.237450
+v 62.270901 0.642299 90.224586
+v 65.445480 0.642299 90.211723
+v 68.620064 0.642299 90.198860
+v 71.794632 0.929349 90.185989
+v 74.969208 0.735623 90.173126
+v 78.143784 0.710756 90.160263
+v 81.318359 0.710756 90.147400
+v 84.492943 0.619349 90.134537
+v 87.667519 1.075977 90.121666
+v 90.842094 1.075977 90.108803
+v 94.016678 1.075977 90.095940
+v 97.191254 0.935588 90.083076
+v 100.365822 0.769012 90.070213
+v 100.352959 1.016080 86.895638
+v 97.178391 1.304008 86.908501
+v 94.003815 0.803037 86.921364
+v 90.829231 0.803037 86.934227
+v 87.654655 0.769012 86.947090
+v 84.480080 0.935589 86.959961
+v 81.305496 1.075979 86.972824
+v 78.130920 1.075979 86.985687
+v 74.956345 1.075979 86.998550
+v 71.781769 0.619347 87.011414
+v 68.607201 0.710754 87.024284
+v 65.432617 0.710754 87.037148
+v 62.258034 0.735621 87.050011
+v 59.083462 0.929348 87.062874
+v 55.908878 0.642299 87.075737
+v 52.734303 0.642299 87.088608
+v 49.559727 0.642299 87.101471
+v 46.385155 0.947708 87.114334
+v 43.210575 1.165329 87.127197
+v 40.035995 1.165329 87.140060
+v 36.861420 1.202871 87.152931
+v 33.686844 1.494296 87.165794
+v 30.512268 2.323116 87.178658
+v 27.337688 2.243506 87.191521
+v 24.163111 2.418751 87.204384
+v 20.988535 2.418751 87.217255
+v 17.813959 2.418751 87.230118
+v 14.639380 1.807932 87.242981
+v 11.464804 1.384041 87.255844
+v 8.290227 1.384041 87.268707
+v 5.115649 1.347078 87.281578
+v 1.941072 1.057652 87.294441
+v -1.233505 -0.101767 87.307304
+v -4.408082 -0.363973 87.320168
+v -7.582660 -0.469922 87.333038
+v -10.757236 0.153586 87.345901
+v -13.931813 0.484884 87.358765
+v -17.106388 1.012928 87.371628
+v -20.280966 1.287936 87.384491
+v -23.455544 1.396152 87.397362
+v -26.630119 1.400204 87.410225
+v -29.804697 1.033527 87.423088
+v -32.979275 0.872512 87.435951
+v -36.153854 0.766907 87.448814
+v -39.328430 1.041915 87.461685
+v -42.503006 1.142987 87.474548
+v -45.677586 1.104071 87.487411
+v -48.852161 0.645725 87.500275
+v -52.026741 0.446145 87.513138
+v -55.201321 0.324978 87.526009
+v -58.375893 0.691655 87.538872
+v -61.550472 0.845543 87.551735
+v -64.725044 0.908162 87.564598
+v -67.899620 0.541485 87.577461
+v -71.074196 0.380471 87.590332
+v -74.248779 0.274866 87.603195
+v -77.423355 0.549873 87.616058
+v -80.597931 0.650945 87.628922
+v -83.772507 0.612030 87.641785
+v -86.947083 0.153684 87.654655
+v -90.121666 -0.045897 87.667519
+v -93.296242 -0.167063 87.680382
+v -96.470810 0.199614 87.693245
+v -99.645386 0.382009 87.706108
+v -99.658257 -0.069796 84.531532
+v -96.483681 -0.167063 84.518669
+v -93.309113 -0.045896 84.505806
+v -90.134537 0.153683 84.492943
+v -86.959953 0.612029 84.480080
+v -83.785378 0.650945 84.467209
+v -80.610802 0.549874 84.454346
+v -77.436226 0.274866 84.441483
+v -74.261650 0.380471 84.428619
+v -71.087067 0.541486 84.415756
+v -67.912491 0.908162 84.402885
+v -64.737915 0.845543 84.390022
+v -61.563335 0.691655 84.377159
+v -58.388756 0.324979 84.364296
+v -55.214184 0.446145 84.351433
+v -52.039604 0.645725 84.338562
+v -48.865025 1.104070 84.325699
+v -45.690449 1.142986 84.312836
+v -42.515869 1.041915 84.299973
+v -39.341293 0.766908 84.287109
+v -36.166718 0.872512 84.274239
+v -32.992138 1.033527 84.261375
+v -29.817562 1.400204 84.248512
+v -26.642984 1.396152 84.235649
+v -23.468409 1.287936 84.222786
+v -20.293831 1.012929 84.209915
+v -17.119253 0.484884 84.197052
+v -13.944677 0.153586 84.184189
+v -10.770100 -0.469922 84.171326
+v -7.595524 -0.363972 84.158463
+v -4.420947 -0.101767 84.145592
+v -1.246370 1.057651 84.132729
+v 1.928208 1.763643 84.119865
+v 5.102785 2.418748 84.107002
+v 8.277363 2.418748 84.094131
+v 11.451940 2.418748 84.081268
+v 14.626516 2.243504 84.068405
+v 17.801094 2.630961 84.055542
+v 20.975670 2.680695 84.042679
+v 24.150246 2.680695 84.029808
+v 27.324823 2.384737 84.016945
+v 30.499403 1.494298 84.004082
+v 33.673981 0.995328 83.991219
+v 36.848557 0.642300 83.978355
+v 40.023132 0.642300 83.965485
+v 43.197712 0.642300 83.952621
+v 46.372292 0.929350 83.939758
+v 49.546864 0.735622 83.926895
+v 52.721439 0.710754 83.914032
+v 55.896015 0.710754 83.901161
+v 59.070599 0.619349 83.888298
+v 62.245171 1.075977 83.875435
+v 65.419746 1.075977 83.862572
+v 68.594330 1.075977 83.849709
+v 71.768898 0.935588 83.836838
+v 74.943474 0.769014 83.823975
+v 78.118050 0.803040 83.811111
+v 81.292625 0.803040 83.798248
+v 84.467209 1.304009 83.785385
+v 87.641785 1.016080 83.772514
+v 90.816360 0.979552 83.759651
+v 93.990944 0.979552 83.746788
+v 97.165520 1.486478 83.733925
+v 100.340088 2.250000 83.721062
+v 100.327225 2.275769 80.546478
+v 97.152657 1.797581 80.559341
+v 93.978081 2.250004 80.572205
+v 90.803497 2.250004 80.585068
+v 87.628922 2.250004 80.597931
+v 84.454346 1.486484 80.610802
+v 81.279762 0.979555 80.623665
+v 78.105186 0.979555 80.636528
+v 74.930611 1.016084 80.649391
+v 71.756035 1.304008 80.662254
+v 68.581467 0.803038 80.675125
+v 65.406883 0.803038 80.687988
+v 62.232304 0.769013 80.700851
+v 59.057732 0.935588 80.713715
+v 55.883148 1.075978 80.726578
+v 52.708572 1.075978 80.739449
+v 49.533997 1.075978 80.752312
+v 46.359425 0.619349 80.765175
+v 43.184845 0.710757 80.778038
+v 40.010265 0.710757 80.790901
+v 36.835690 0.735623 80.803772
+v 33.661114 0.929350 80.816635
+v 30.486538 0.995327 80.829498
+v 27.311958 1.494296 80.842361
+v 24.137381 1.926623 80.855225
+v 20.962805 1.926623 80.868095
+v 17.788229 1.926623 80.880959
+v 14.613651 2.384736 80.893822
+v 11.439075 2.680694 80.906685
+v 8.264498 2.680694 80.919548
+v 5.089920 2.630960 80.932419
+v 1.915343 2.243506 80.945282
+v -1.259234 1.763646 80.958145
+v -4.433812 1.057654 80.971008
+v -7.608389 -0.101765 80.983879
+v -10.782965 -0.363972 80.996742
+v -13.957542 -0.469923 81.009605
+v -17.132118 0.153585 81.022469
+v -20.306696 0.484884 81.035332
+v -23.481274 1.012928 81.048203
+v -26.655849 1.287936 81.061066
+v -29.830427 1.396153 81.073929
+v -33.005005 1.400205 81.086792
+v -36.179585 1.033529 81.099655
+v -39.354160 0.872513 81.112526
+v -42.528736 0.766908 81.125389
+v -45.703316 1.041915 81.138252
+v -48.877892 1.142987 81.151115
+v -52.052471 1.104072 81.163979
+v -55.227051 0.645726 81.176849
+v -58.401623 0.446146 81.189713
+v -61.576202 0.324978 81.202576
+v -64.750778 0.691655 81.215439
+v -67.925354 0.845544 81.228302
+v -71.099930 0.908163 81.241173
+v -74.274513 0.541487 81.254036
+v -77.449089 0.380472 81.266899
+v -80.623665 0.274866 81.279762
+v -83.798241 0.549874 81.292625
+v -86.972816 0.650945 81.305496
+v -90.147400 0.612030 81.318359
+v -93.321976 0.153684 81.331223
+v -96.496544 -0.074311 81.344086
+v -99.671120 -0.361030 81.356949
+v -99.683983 -0.074311 78.182373
+v -96.509407 0.153683 78.169510
+v -93.334839 0.612029 78.156647
+v -90.160263 0.650945 78.143784
+v -86.985680 0.549874 78.130920
+v -83.811104 0.274866 78.118050
+v -80.636528 0.380471 78.105186
+v -77.461952 0.541486 78.092323
+v -74.287376 0.908163 78.079460
+v -71.112793 0.845544 78.066597
+v -67.938217 0.691656 78.053726
+v -64.763641 0.324979 78.040863
+v -61.589066 0.446145 78.028000
+v -58.414486 0.645725 78.015137
+v -55.239914 1.104071 78.002274
+v -52.065334 1.142987 77.989403
+v -48.890755 1.041916 77.976540
+v -45.716179 0.766908 77.963676
+v -42.541599 0.872513 77.950813
+v -39.367023 1.033528 77.937950
+v -36.192448 1.400205 77.925079
+v -33.017868 1.396153 77.912216
+v -29.843292 1.287937 77.899353
+v -26.668715 1.012929 77.886490
+v -23.494139 0.484884 77.873627
+v -20.319561 0.153586 77.860756
+v -17.144983 -0.469922 77.847893
+v -13.970407 -0.363973 77.835030
+v -10.795830 -0.101767 77.822166
+v -7.621253 1.057652 77.809303
+v -4.446676 1.763644 77.796432
+v -1.272099 2.243506 77.783569
+v 1.902478 2.323117 77.770706
+v 5.077055 1.926623 77.757843
+v 8.251633 1.926623 77.744972
+v 11.426209 1.926623 77.732109
+v 14.600786 1.494297 77.719246
+v 17.775364 1.202872 77.706383
+v 20.949940 1.165330 77.693520
+v 24.124516 1.165330 77.680649
+v 27.299093 0.947709 77.667786
+v 30.473673 0.929350 77.654922
+v 33.648251 0.651516 77.642059
+v 36.822826 1.075980 77.629196
+v 39.997402 1.075980 77.616325
+v 43.171982 1.075980 77.603462
+v 46.346561 0.935590 77.590599
+v 49.521133 0.769013 77.577736
+v 52.695709 0.803038 77.564873
+v 55.870285 0.803038 77.552002
+v 59.044868 1.304008 77.539139
+v 62.219440 1.016080 77.526276
+v 65.394020 0.979553 77.513412
+v 68.568604 0.979553 77.500549
+v 71.743172 1.486479 77.487679
+v 74.917747 2.250004 77.474815
+v 78.092323 2.250004 77.461952
+v 81.266899 2.250004 77.449089
+v 84.441483 1.797583 77.436226
+v 87.616058 2.275774 77.423355
+v 90.790634 2.336165 77.410492
+v 93.965218 2.336165 77.397629
+v 97.139793 1.772938 77.384766
+v 100.314362 0.918151 77.371902
+v 100.301498 0.080897 74.197327
+v 97.126930 0.611822 74.210190
+v 93.952354 0.918155 74.223053
+v 90.777771 0.918155 74.235916
+v 87.603195 0.918155 74.248779
+v 84.428619 1.772935 74.261650
+v 81.254036 2.336165 74.274513
+v 78.079460 2.336165 74.287376
+v 74.904884 2.275772 74.300240
+v 71.730309 1.797578 74.313103
+v 68.555740 2.250001 74.325974
+v 65.381157 2.250001 74.338837
+v 62.206577 2.250001 74.351700
+v 59.032005 1.486482 74.364563
+v 55.857422 0.979553 74.377426
+v 52.682846 0.979553 74.390297
+v 49.508270 1.016082 74.403160
+v 46.333698 1.304010 74.416023
+v 43.159119 0.803040 74.428886
+v 39.984539 0.803040 74.441750
+v 36.809963 0.769015 74.454620
+v 33.635387 0.935589 74.467484
+v 30.460808 0.651517 74.480347
+v 27.286228 0.929351 74.493210
+v 24.111650 0.642301 74.506073
+v 20.937075 0.642301 74.518944
+v 17.762499 0.642301 74.531807
+v 14.587922 0.947710 74.544670
+v 11.413345 1.165331 74.557533
+v 8.238769 1.165331 74.570396
+v 5.064190 1.202873 74.583267
+v 1.889613 1.494299 74.596130
+v -1.284964 2.323116 74.608994
+v -4.459541 2.243505 74.621857
+v -7.634119 1.763644 74.634727
+v -10.808694 1.057652 74.647591
+v -13.983272 -0.101766 74.660454
+v -17.157848 -0.363971 74.673317
+v -20.332426 -0.469921 74.686180
+v -23.507004 0.153587 74.699051
+v -26.681580 0.484885 74.711914
+v -29.856157 1.012930 74.724777
+v -33.030731 1.287937 74.737640
+v -36.205311 1.396153 74.750504
+v -39.379887 1.400205 74.763374
+v -42.554462 1.033528 74.776237
+v -45.729042 0.872514 74.789101
+v -48.903618 0.766909 74.801964
+v -52.078197 1.041916 74.814827
+v -55.252777 1.142987 74.827698
+v -58.427349 1.104072 74.840561
+v -61.601929 0.645725 74.853424
+v -64.776505 0.446146 74.866287
+v -67.951080 0.324980 74.879150
+v -71.125656 0.691656 74.892021
+v -74.300240 0.845544 74.904884
+v -77.474815 0.908163 74.917747
+v -80.649391 0.541486 74.930611
+v -83.823967 0.380472 74.943474
+v -86.998543 0.274867 74.956345
+v -90.173126 0.549875 74.969208
+v -93.347702 0.650946 74.982071
+v -96.522270 0.612030 74.994934
+v -99.696846 0.490447 75.007797
+v -99.709709 0.854490 71.833221
+v -96.535133 0.686671 71.820358
+v -93.360565 0.549875 71.807495
+v -90.185989 0.274867 71.794632
+v -87.011406 0.380472 71.781769
+v -83.836830 0.541486 71.768898
+v -80.662254 0.908163 71.756035
+v -77.487679 0.845544 71.743172
+v -74.313103 0.691657 71.730309
+v -71.138519 0.324980 71.717445
+v -67.963943 0.446146 71.704575
+v -64.789368 0.645726 71.691711
+v -61.614796 1.104071 71.678848
+v -58.440216 1.142987 71.665985
+v -55.265644 1.041916 71.653122
+v -52.091064 0.766909 71.640251
+v -48.916485 0.872514 71.627388
+v -45.741909 1.033528 71.614525
+v -42.567329 1.400205 71.601662
+v -39.392754 1.396153 71.588799
+v -36.218178 1.287937 71.575928
+v -33.043598 1.012930 71.563065
+v -29.869020 0.484885 71.550201
+v -26.694443 0.153587 71.537338
+v -23.519867 -0.469921 71.524475
+v -20.345289 -0.363971 71.511604
+v -17.170712 -0.101766 71.498741
+v -13.996137 1.057652 71.485878
+v -10.821559 1.763644 71.473015
+v -7.646983 2.243505 71.460152
+v -4.472406 2.323116 71.447281
+v -1.297829 1.494299 71.434418
+v 1.876749 0.995329 71.421555
+v 5.051326 0.642301 71.408691
+v 8.225904 0.642301 71.395821
+v 11.400480 0.642301 71.382957
+v 14.575057 0.929351 71.370094
+v 17.749636 0.735623 71.357231
+v 20.924212 0.710756 71.344368
+v 24.098787 0.710756 71.331497
+v 27.273365 0.619349 71.318634
+v 30.447945 0.935589 71.305771
+v 33.622520 1.257553 71.292908
+v 36.797096 1.016082 71.280045
+v 39.971672 0.979553 71.267174
+v 43.146252 0.979553 71.254311
+v 46.320831 1.486480 71.241447
+v 49.495403 2.250001 71.228584
+v 52.669979 2.250001 71.215721
+v 55.844555 2.250001 71.202850
+v 59.019138 1.797580 71.189987
+v 62.193710 2.275774 71.177124
+v 65.368294 2.336164 71.164261
+v 68.542877 2.336164 71.151398
+v 71.717445 1.772939 71.138527
+v 74.892021 0.918155 71.125664
+v 78.066597 0.918155 71.112801
+v 81.241173 0.918155 71.099937
+v 84.415756 0.611820 71.087074
+v 87.590332 0.080896 71.074203
+v 90.764908 0.016134 71.061340
+v 93.939491 0.016134 71.048477
+v 97.114067 -0.000005 71.035614
+v 100.288635 -0.000005 71.022751
+v 100.275764 -0.000005 67.848183
+v 97.101196 -0.000005 67.861046
+v 93.926620 -0.000005 67.873909
+v 90.752037 -0.000005 67.886772
+v 87.577461 -0.000005 67.899635
+v 84.402885 -0.000005 67.912506
+v 81.228302 0.016134 67.925369
+v 78.053726 0.016134 67.938232
+v 74.879150 0.080897 67.951096
+v 71.704575 0.611822 67.963959
+v 68.530006 0.918155 67.976830
+v 65.355423 0.918155 67.989693
+v 62.180847 0.918155 68.002556
+v 59.006275 1.772936 68.015419
+v 55.831692 2.336165 68.028282
+v 52.657116 2.336165 68.041153
+v 49.482540 2.275773 68.054016
+v 46.307968 1.797580 68.066879
+v 43.133389 2.250001 68.079742
+v 39.958809 2.250001 68.092606
+v 36.784233 2.250001 68.105476
+v 33.609657 1.528354 68.118340
+v 30.435080 1.257553 68.131203
+v 27.260500 0.935589 68.144066
+v 24.085922 1.075979 68.156929
+v 20.911346 1.075979 68.169800
+v 17.736771 1.075979 68.182663
+v 14.562192 0.619349 68.195526
+v 11.387615 0.710756 68.208389
+v 8.213038 0.710756 68.221252
+v 5.038461 0.735623 68.234123
+v 1.863884 0.929351 68.246986
+v -1.310693 0.995329 68.259850
+v -4.485271 1.494299 68.272713
+v -7.659848 2.323117 68.285583
+v -10.834424 2.243505 68.298447
+v -14.009002 1.763644 68.311310
+v -17.183577 1.057652 68.324173
+v -20.358154 -0.101766 68.337036
+v -23.532732 -0.363971 68.349907
+v -26.707308 -0.469921 68.362770
+v -29.881886 0.153587 68.375633
+v -33.056461 0.484885 68.388496
+v -36.231041 1.012930 68.401360
+v -39.405617 1.287937 68.414230
+v -42.580193 1.396153 68.427094
+v -45.754772 1.400205 68.439957
+v -48.929348 1.033528 68.452820
+v -52.103928 0.872514 68.465683
+v -55.278507 0.766909 68.478554
+v -58.453079 1.041916 68.491417
+v -61.627659 1.142987 68.504280
+v -64.802238 1.104072 68.517143
+v -67.976814 0.645725 68.530006
+v -71.151390 0.446146 68.542877
+v -74.325974 0.324980 68.555740
+v -77.500549 0.691656 68.568604
+v -80.675125 0.845544 68.581467
+v -83.849701 0.908163 68.594330
+v -87.024277 0.541487 68.607201
+v -90.198860 0.380472 68.620064
+v -93.373436 0.274867 68.632927
+v -96.548004 0.549875 68.645790
+v -99.722580 0.686671 68.658653
+v -99.735443 0.347817 65.484070
+v -96.560867 0.274867 65.471207
+v -93.386299 0.380472 65.458344
+v -90.211723 0.541488 65.445480
+v -87.037140 0.908165 65.432617
+v -83.862564 0.845545 65.419746
+v -80.687988 0.691656 65.406883
+v -77.513412 0.324979 65.394020
+v -74.338837 0.446147 65.381157
+v -71.164253 0.645728 65.368294
+v -67.989677 1.104073 65.355423
+v -64.815102 1.142988 65.342560
+v -61.640526 1.041916 65.329697
+v -58.465946 0.766909 65.316833
+v -55.291374 0.872514 65.303970
+v -52.116795 1.033530 65.291100
+v -48.942215 1.400207 65.278236
+v -45.767639 1.396154 65.265373
+v -42.593060 1.287937 65.252510
+v -39.418484 1.012930 65.239647
+v -36.243908 0.484885 65.226776
+v -33.069328 0.153586 65.213913
+v -29.894751 -0.469922 65.201050
+v -26.720173 -0.363971 65.188187
+v -23.545597 -0.101764 65.175323
+v -20.371019 1.057655 65.162453
+v -17.196442 1.763647 65.149590
+v -14.021866 2.243507 65.136726
+v -10.847288 2.323116 65.123863
+v -7.672713 1.494298 65.111000
+v -4.498136 0.995328 65.098129
+v -1.323558 0.929351 65.085266
+v 1.851019 0.651518 65.072403
+v 5.025596 1.075979 65.059540
+v 8.200174 1.075979 65.046669
+v 11.374751 1.075979 65.033806
+v 14.549328 0.935590 65.020943
+v 17.723906 0.769014 65.008080
+v 20.898481 0.803039 64.995216
+v 24.073057 0.803039 64.982346
+v 27.247635 1.304010 64.969482
+v 30.422215 1.528356 64.956619
+v 33.596790 1.797581 64.943756
+v 36.771366 2.275770 64.930893
+v 39.945942 2.336162 64.918022
+v 43.120522 2.336162 64.905159
+v 46.295101 1.772934 64.892296
+v 49.469673 0.918151 64.879433
+v 52.644249 0.918151 64.866570
+v 55.818825 0.918151 64.853699
+v 58.993408 0.611818 64.840836
+v 62.167980 0.080895 64.827972
+v 65.342560 0.016134 64.815109
+v 68.517143 0.016134 64.802246
+v 71.691711 -0.000005 64.789375
+v 74.866287 -0.000005 64.776512
+v 78.040863 -0.000005 64.763649
+v 81.215439 -0.000005 64.750786
+v 84.390022 -0.000005 64.737923
+v 87.564598 -0.000005 64.725052
+v 90.739174 -0.000005 64.712189
+v 93.913757 -0.000005 64.699326
+v 97.088333 -0.000005 64.686462
+v 100.262901 -0.000005 64.673599
+v 100.250038 -0.000005 61.499016
+v 97.075470 -0.000005 61.511879
+v 93.900894 -0.000005 61.524746
+v 90.726311 -0.000005 61.537609
+v 87.551735 -0.000005 61.550476
+v 84.377159 -0.000005 61.563339
+v 81.202576 -0.000005 61.576206
+v 78.028000 -0.000005 61.589069
+v 74.853424 -0.000005 61.601933
+v 71.678848 -0.000005 61.614799
+v 68.504280 -0.000005 61.627663
+v 65.329697 -0.000005 61.640530
+v 62.155117 -0.000005 61.653393
+v 58.980545 -0.000005 61.666256
+v 55.805962 0.016134 61.679123
+v 52.631386 0.016134 61.691986
+v 49.456810 0.080896 61.704853
+v 46.282238 0.611819 61.717716
+v 43.107658 0.918152 61.730579
+v 39.933079 0.918152 61.743446
+v 36.758503 0.918154 61.756310
+v 33.583927 2.275773 61.769176
+v 30.409349 2.525662 61.782040
+v 27.234770 1.486481 61.794907
+v 24.060192 0.979554 61.807770
+v 20.885616 0.979554 61.820633
+v 17.711040 1.016082 61.833500
+v 14.536463 1.304010 61.846363
+v 11.361886 0.803039 61.859230
+v 8.187309 0.803039 61.872093
+v 5.012732 0.769014 61.884956
+v 1.838155 0.935591 61.897823
+v -1.336423 0.651517 61.910686
+v -4.511000 0.929351 61.923553
+v -7.685577 0.995330 61.936417
+v -10.860153 1.494299 61.949280
+v -14.034731 2.323118 61.962147
+v -17.209307 2.243507 61.975010
+v -20.383884 1.763645 61.987877
+v -23.558462 1.057654 62.000740
+v -26.733038 -0.101766 62.013603
+v -29.907616 -0.363971 62.026470
+v -33.082191 -0.469921 62.039333
+v -36.256771 0.153587 62.052200
+v -39.431347 0.484885 62.065063
+v -42.605923 1.012930 62.077930
+v -45.780502 1.287938 62.090794
+v -48.955078 1.396154 62.103657
+v -52.129658 1.400206 62.116524
+v -55.304237 1.033529 62.129387
+v -58.478809 0.872514 62.142254
+v -61.653389 0.766909 62.155117
+v -64.827965 1.041917 62.167980
+v -68.002541 1.142989 62.180847
+v -71.177116 1.104073 62.193710
+v -74.351700 0.645726 62.206577
+v -77.526276 0.446147 62.219440
+v -80.700851 0.324981 62.232304
+v -83.875427 0.691657 62.245171
+v -87.050003 0.845545 62.258034
+v -90.224586 0.908164 62.270901
+v -93.399162 0.541487 62.283764
+v -96.573730 0.359092 62.296631
+v -99.748306 0.129392 62.309494
+v -99.761169 0.359092 59.134922
+v -96.586594 0.541488 59.122059
+v -93.412025 0.908164 59.109192
+v -90.237450 0.845545 59.096329
+v -87.062866 0.691657 59.083462
+v -83.888290 0.324981 59.070599
+v -80.713715 0.446148 59.057732
+v -77.539139 0.645727 59.044868
+v -74.364563 1.104072 59.032005
+v -71.189980 1.142989 59.019138
+v -68.015404 1.041918 59.006275
+v -64.840828 0.766910 58.993408
+v -61.666252 0.872515 58.980545
+v -58.491673 1.033530 58.967682
+v -55.317101 1.400206 58.954815
+v -52.142521 1.396155 58.941952
+v -48.967941 1.287938 58.929085
+v -45.793365 1.012931 58.916222
+v -42.618786 0.484886 58.903358
+v -39.444210 0.153588 58.890491
+v -36.269634 -0.469919 58.877628
+v -33.095055 -0.363970 58.864761
+v -29.920481 -0.101765 58.851898
+v -26.745903 1.057654 58.839031
+v -23.571327 1.763645 58.826168
+v -20.396749 2.243506 58.813305
+v -17.222172 2.323117 58.800438
+v -14.047596 1.494300 58.787575
+v -10.873018 0.995330 58.774708
+v -7.698442 0.929352 58.761845
+v -4.523865 0.651518 58.748981
+v -1.349288 0.935590 58.736115
+v 1.825290 1.257555 58.723251
+v 4.999867 1.016083 58.710384
+v 8.174444 0.979554 58.697521
+v 11.349021 0.979554 58.684658
+v 14.523598 1.486481 58.671791
+v 17.698175 2.250002 58.658928
+v 20.872751 2.250002 58.646061
+v 24.047327 2.250002 58.633198
+v 27.221905 1.797580 58.620335
+v 30.396484 2.275774 58.607468
+v 33.571064 1.772938 58.594604
+v 36.745640 0.611821 58.581738
+v 39.920216 0.016134 58.568874
+v 43.094795 0.016134 58.556007
+v 46.269375 -0.000004 58.543144
+v 49.443947 -0.000004 58.530281
+v 52.618523 -0.000004 58.517414
+v 55.793098 -0.000004 58.504551
+v 58.967682 -0.000004 58.491684
+v 62.142254 -0.000004 58.478821
+v 65.316833 -0.000004 58.465958
+v 68.491417 -0.000004 58.453091
+v 71.665985 -0.000004 58.440228
+v 74.840561 -0.000004 58.427361
+v 78.015137 -0.000004 58.414497
+v 81.189713 -0.000004 58.401634
+v 84.364296 -0.000004 58.388767
+v 87.538872 -0.000004 58.375904
+v 90.713448 -0.000004 58.363037
+v 93.888031 -0.000004 58.350174
+v 97.062607 -0.000004 58.337307
+v 100.237175 -0.000004 58.324444
+v 100.224312 -0.000004 55.149860
+v 97.049744 -0.000004 55.162724
+v 93.875168 -0.000004 55.175591
+v 90.700584 -0.000004 55.188454
+v 87.526009 -0.000004 55.201321
+v 84.351433 -0.000004 55.214184
+v 81.176849 -0.000004 55.227051
+v 78.002274 -0.000004 55.239914
+v 74.827698 -0.000004 55.252777
+v 71.653122 -0.000004 55.265644
+v 68.478554 -0.000004 55.278507
+v 65.303970 -0.000004 55.291374
+v 62.129387 -0.000004 55.304237
+v 58.954815 -0.000004 55.317101
+v 55.780231 -0.000004 55.329967
+v 52.605656 -0.000004 55.342831
+v 49.431080 -0.000004 55.355698
+v 46.256508 -0.000004 55.368561
+v 43.081928 -0.000004 55.381424
+v 39.907349 -0.000004 55.394291
+v 36.732773 0.080896 55.407154
+v 33.558197 0.611819 55.420021
+v 30.383619 0.918152 55.432884
+v 27.209040 1.772936 55.445751
+v 24.034462 2.336162 55.458614
+v 20.859886 2.336162 55.471478
+v 17.685310 2.275771 55.484344
+v 14.510734 1.797582 55.497208
+v 11.336157 2.250006 55.510075
+v 8.161580 2.250006 55.522938
+v 4.987002 2.250006 55.535801
+v 1.812425 1.528357 55.548668
+v -1.362152 1.257554 55.561531
+v -4.536729 0.935590 55.574398
+v -7.711307 0.651519 55.587261
+v -10.885882 0.929351 55.600124
+v -14.060460 0.995329 55.612991
+v -17.235037 1.494298 55.625854
+v -20.409615 2.323117 55.638721
+v -23.584192 2.243508 55.651585
+v -26.758768 1.763648 55.664448
+v -29.933346 1.057656 55.677315
+v -33.107922 -0.101763 55.690178
+v -36.282501 -0.363970 55.703045
+v -39.457077 -0.469921 55.715908
+v -42.631653 0.153586 55.728775
+v -45.806232 0.484886 55.741638
+v -48.980808 1.012930 55.754501
+v -52.155388 1.287937 55.767368
+v -55.329967 1.396155 55.780231
+v -58.504539 1.400207 55.793098
+v -61.679119 1.033530 55.805962
+v -64.853691 0.872515 55.818825
+v -68.028267 0.766909 55.831692
+v -71.202843 1.041917 55.844555
+v -74.377426 1.142989 55.857422
+v -77.552002 1.104074 55.870285
+v -80.726578 0.645728 55.883148
+v -83.901154 0.446147 55.896015
+v -87.075729 0.324980 55.908878
+v -90.250313 0.691657 55.921745
+v -93.424889 0.845545 55.934608
+v -96.599457 0.908165 55.947475
+v -99.774033 0.810899 55.960339
+v -99.786903 1.102132 52.785763
+v -96.612328 0.874053 52.772900
+v -93.437759 0.691658 52.760033
+v -90.263184 0.324981 52.747169
+v -87.088600 0.446147 52.734303
+v -83.914024 0.645727 52.721439
+v -80.739449 1.104072 52.708572
+v -77.564873 1.142989 52.695709
+v -74.390297 1.041918 52.682846
+v -71.215714 0.766910 52.669979
+v -68.041138 0.872515 52.657116
+v -64.866562 1.033530 52.644249
+v -61.691982 1.400206 52.631386
+v -58.517403 1.396155 52.618523
+v -55.342831 1.287938 52.605656
+v -52.168251 1.012931 52.592793
+v -48.993671 0.484886 52.579926
+v -45.819096 0.153588 52.567062
+v -42.644516 -0.469920 52.554199
+v -39.469940 -0.363971 52.541332
+v -36.295364 -0.101765 52.528469
+v -33.120785 1.057654 52.515602
+v -29.946209 1.763646 52.502739
+v -26.771631 2.243507 52.489872
+v -23.597055 2.323118 52.477009
+v -20.422478 1.494300 52.464146
+v -17.247900 0.995330 52.451279
+v -14.073325 0.929352 52.438416
+v -10.898747 0.651518 52.425549
+v -7.724172 0.935591 52.412685
+v -4.549594 1.257555 52.399822
+v -1.375017 1.528354 52.386955
+v 1.799560 1.797582 52.374092
+v 4.974137 2.275775 52.361225
+v 8.148715 2.336167 52.348362
+v 11.323292 2.336167 52.335499
+v 14.497869 1.772939 52.322632
+v 17.672447 0.918152 52.309769
+v 20.847023 0.918152 52.296902
+v 24.021599 0.918152 52.284039
+v 27.196177 0.611820 52.271175
+v 30.370756 0.080896 52.258308
+v 33.545334 -0.000004 52.245445
+v 36.719910 -0.000004 52.232578
+v 39.894485 -0.000004 52.219715
+v 43.069065 -0.000004 52.206848
+v 46.243645 -0.000004 52.193985
+v 49.418217 -0.000004 52.181122
+v 52.592793 -0.000004 52.168255
+v 55.767368 -0.000004 52.155392
+v 58.941952 -0.000004 52.142525
+v 62.116524 -0.000004 52.129662
+v 65.291100 -0.000004 52.116798
+v 68.465683 -0.000004 52.103931
+v 71.640251 -0.000004 52.091068
+v 74.814827 -0.000004 52.078201
+v 77.989403 -0.000004 52.065338
+v 81.163979 -0.000004 52.052475
+v 84.338562 -0.000004 52.039608
+v 87.513138 -0.000004 52.026745
+v 90.687714 -0.000004 52.013878
+v 93.862297 -0.000004 52.001015
+v 97.036873 -0.000004 51.988148
+v 100.211441 -0.000004 51.975285
+v 100.198578 -0.000004 48.800709
+v 97.024010 -0.000004 48.813572
+v 93.849434 -0.000004 48.826439
+v 90.674850 -0.000004 48.839302
+v 87.500275 -0.000004 48.852169
+v 84.325699 -0.000004 48.865032
+v 81.151115 -0.000004 48.877899
+v 77.976540 -0.000004 48.890762
+v 74.801964 -0.000004 48.903625
+v 71.627388 -0.000004 48.916492
+v 68.452820 -0.000004 48.929356
+v 65.278236 -0.000004 48.942223
+v 62.103657 -0.000004 48.955086
+v 58.929085 -0.000004 48.967949
+v 55.754501 -0.000004 48.980816
+v 52.579926 -0.000004 48.993679
+v 49.405350 -0.000004 49.006546
+v 46.230778 -0.000004 49.019409
+v 43.056198 -0.000004 49.032272
+v 39.881618 -0.000004 49.045139
+v 36.707043 -0.000004 49.058002
+v 33.532467 -0.000004 49.070869
+v 30.357891 -0.000004 49.083733
+v 27.183311 -0.000004 49.096600
+v 24.008734 0.016135 49.109463
+v 20.834158 0.016135 49.122326
+v 17.659582 0.080898 49.135193
+v 14.485004 0.611823 49.148056
+v 11.310428 0.918157 49.160923
+v 8.135851 0.918157 49.173786
+v 4.961273 2.336166 49.186649
+v 1.786696 2.250005 49.199516
+v -1.387882 0.979556 49.212379
+v -4.562459 0.803041 49.225246
+v -7.737036 1.075981 49.238110
+v -10.911612 0.710758 49.250973
+v -14.086189 0.642302 49.263840
+v -17.260765 1.165332 49.276703
+v -20.435343 1.926626 49.289570
+v -23.609921 2.680697 49.302433
+v -26.784496 2.418753 49.315296
+v -29.959074 1.384044 49.328163
+v -33.133652 0.356349 49.341026
+v -36.308231 -0.411915 49.353893
+v -39.482807 -0.799748 49.366756
+v -42.657383 -0.304525 49.379623
+v -45.831963 0.463740 49.392487
+v -49.006538 0.867456 49.405350
+v -52.181118 1.085881 49.418217
+v -55.355698 1.424736 49.431080
+v -58.530270 1.594175 49.443947
+v -61.704849 1.302941 49.456810
+v -64.879425 0.851135 49.469673
+v -68.054001 0.621435 49.482540
+v -71.228577 0.839860 49.495403
+v -74.403160 1.178715 49.508270
+v -77.577736 1.346533 49.521133
+v -80.752312 0.982490 49.533997
+v -83.926888 0.417733 49.546864
+v -87.101463 0.131014 49.559727
+v -90.276047 0.422248 49.572594
+v -93.450623 0.874054 49.585457
+v -96.625191 1.108615 49.598324
+v -99.799767 1.108615 49.611187
+v -99.812630 1.108615 46.436615
+v -96.638054 1.108615 46.423752
+v -93.463486 0.874054 46.410885
+v -90.288910 0.422248 46.398022
+v -87.114326 0.131014 46.385155
+v -83.939751 0.417733 46.372292
+v -80.765175 0.982490 46.359425
+v -77.590599 1.346533 46.346561
+v -74.416023 1.178715 46.333698
+v -71.241440 0.839860 46.320831
+v -68.066864 0.621435 46.307968
+v -64.892288 0.851135 46.295101
+v -61.717712 1.302941 46.282238
+v -58.543133 1.594175 46.269375
+v -55.368561 1.424736 46.256508
+v -52.193981 1.085881 46.243645
+v -49.019402 0.867456 46.230778
+v -45.844826 0.463740 46.217915
+v -42.670246 -0.304525 46.205051
+v -39.495670 -0.799748 46.192184
+v -36.321095 -0.411915 46.179321
+v -33.146515 0.356349 46.166454
+v -29.971939 1.384044 46.153591
+v -26.797361 2.418753 46.140724
+v -23.622786 2.680698 46.127861
+v -20.448208 1.926627 46.114998
+v -17.273630 1.165333 46.102131
+v -14.099054 0.642303 46.089268
+v -10.924477 0.710758 46.076401
+v -7.749901 1.075981 46.063538
+v -4.575324 0.803041 46.050674
+v -1.400746 0.979556 46.037807
+v 1.773831 2.250005 46.024944
+v 4.948408 2.336166 46.012077
+v 8.122986 0.918155 45.999214
+v 11.297563 0.016136 45.986351
+v 14.472139 -0.000003 45.973484
+v 17.646717 -0.000003 45.960621
+v 20.821293 -0.000003 45.947754
+v 23.995869 -0.000003 45.934891
+v 27.170446 -0.000003 45.922028
+v 30.345026 -0.000003 45.909161
+v 33.519604 -0.000003 45.896297
+v 36.694180 -0.000003 45.883430
+v 39.868755 -0.000003 45.870567
+v 43.043335 -0.000003 45.857700
+v 46.217915 -0.000003 45.844837
+v 49.392487 -0.000003 45.831974
+v 52.567062 -0.000003 45.819107
+v 55.741638 -0.000003 45.806244
+v 58.916222 -0.000003 45.793377
+v 62.090794 -0.000003 45.780514
+v 65.265373 -0.000003 45.767651
+v 68.439957 -0.000003 45.754784
+v 71.614525 -0.000003 45.741920
+v 74.789101 -0.000003 45.729053
+v 77.963676 -0.000003 45.716190
+v 81.138252 -0.000003 45.703327
+v 84.312836 -0.000003 45.690460
+v 87.487411 -0.000003 45.677597
+v 90.661987 -0.000003 45.664730
+v 93.836571 -0.000003 45.651867
+v 97.011147 -0.000003 45.639000
+v 100.185715 -0.000003 45.626137
+v 100.172852 -0.000003 42.451557
+v 96.998283 -0.000003 42.464420
+v 93.823708 -0.000003 42.477287
+v 90.649124 -0.000003 42.490150
+v 87.474548 -0.000003 42.503017
+v 84.299973 -0.000003 42.515881
+v 81.125389 -0.000003 42.528748
+v 77.950813 -0.000003 42.541611
+v 74.776237 -0.000003 42.554474
+v 71.601662 -0.000003 42.567341
+v 68.427094 -0.000003 42.580204
+v 65.252510 -0.000003 42.593071
+v 62.077930 -0.000003 42.605934
+v 58.903358 -0.000003 42.618797
+v 55.728775 -0.000003 42.631664
+v 52.554199 -0.000003 42.644527
+v 49.379623 -0.000003 42.657394
+v 46.205051 -0.000003 42.670258
+v 43.030472 -0.000003 42.683121
+v 39.855892 -0.000003 42.695988
+v 36.681316 -0.000003 42.708851
+v 33.506741 -0.000003 42.721718
+v 30.332161 -0.000003 42.734581
+v 27.157581 -0.000003 42.747448
+v 23.983004 -0.000003 42.760311
+v 20.808428 -0.000003 42.773174
+v 17.633852 -0.000003 42.786041
+v 14.459274 -0.000003 42.798904
+v 11.284698 0.080898 42.811771
+v 8.110121 0.918155 42.824635
+v 4.935543 2.275775 42.837498
+v 1.760966 2.250005 42.850365
+v -1.413611 0.979556 42.863228
+v -4.588189 0.803042 42.876095
+v -7.762766 1.075981 42.888958
+v -10.937342 0.710758 42.901821
+v -14.111919 0.642303 42.914688
+v -17.286495 1.165333 42.927551
+v -20.461073 1.926627 42.940418
+v -23.635651 2.680698 42.953281
+v -26.810226 2.418753 42.966145
+v -29.984804 1.384045 42.979012
+v -33.159378 0.356350 42.991875
+v -36.333958 -0.411914 43.004742
+v -39.508533 -0.799747 43.017605
+v -42.683109 -0.304524 43.030472
+v -45.857689 0.463740 43.043335
+v -49.032265 0.867456 43.056198
+v -52.206844 1.085882 43.069065
+v -55.381424 1.424736 43.081928
+v -58.555996 1.594175 43.094795
+v -61.730576 1.302941 43.107658
+v -64.905151 0.851135 43.120522
+v -68.079727 0.621435 43.133389
+v -71.254303 0.839861 43.146252
+v -74.428886 1.178715 43.159119
+v -77.603462 1.346534 43.171982
+v -80.778038 0.982491 43.184845
+v -83.952614 0.417734 43.197712
+v -87.127190 0.131014 43.210575
+v -90.301773 0.422249 43.223442
+v -93.476349 0.874054 43.236305
+v -96.650917 1.108616 43.249172
+v -99.825493 1.108616 43.262035
+v -99.838356 1.108616 40.087456
+v -96.663780 0.874054 40.074593
+v -93.489212 0.691659 40.061726
+v -90.314636 0.324982 40.048862
+v -87.140053 0.417734 40.035995
+v -83.965477 0.645728 40.023132
+v -80.790901 1.104074 40.010265
+v -77.616325 1.178715 39.997402
+v -74.441750 1.041919 39.984539
+v -71.267166 0.766911 39.971672
+v -68.092590 0.851135 39.958809
+v -64.918015 1.033531 39.945942
+v -61.743443 1.400208 39.933079
+v -58.568863 1.424736 39.920216
+v -55.394291 1.287939 39.907349
+v -52.219711 1.012932 39.894485
+v -49.045132 0.463739 39.881618
+v -45.870556 0.153589 39.868755
+v -42.695976 -0.469919 39.855892
+v -39.521400 -0.411914 39.843025
+v -36.346825 -0.101763 39.830162
+v -33.172245 1.057656 39.817295
+v -29.997669 1.807936 39.804432
+v -26.823092 2.243508 39.791565
+v -23.648516 2.384740 39.778702
+v -20.473938 1.494300 39.765839
+v -17.299360 0.947711 39.752972
+v -14.124784 0.929353 39.740108
+v -10.950206 1.013813 39.727242
+v -7.775630 1.240778 39.714378
+v -4.601053 0.811051 39.701515
+v -1.426476 0.979555 39.688648
+v 1.748101 1.486482 39.675785
+v 4.922678 1.797583 39.662918
+v 8.097257 1.772940 39.650055
+v 11.271833 0.611823 39.637192
+v 14.446410 -0.000003 39.624325
+v 17.620987 -0.000003 39.611462
+v 20.795563 -0.000003 39.598595
+v 23.970139 -0.000003 39.585732
+v 27.144716 -0.000003 39.572868
+v 30.319296 -0.000003 39.560001
+v 33.493874 -0.000003 39.547138
+v 36.668449 -0.000003 39.534271
+v 39.843025 -0.000003 39.521408
+v 43.017605 -0.000003 39.508541
+v 46.192184 -0.000003 39.495678
+v 49.366756 -0.000003 39.482815
+v 52.541332 -0.000003 39.469948
+v 55.715908 -0.000003 39.457085
+v 58.890491 -0.000003 39.444218
+v 62.065063 -0.000003 39.431355
+v 65.239647 -0.000003 39.418491
+v 68.414230 -0.000003 39.405624
+v 71.588799 -0.000003 39.392761
+v 74.763374 -0.000003 39.379894
+v 77.937950 -0.000003 39.367031
+v 81.112526 -0.000003 39.354168
+v 84.287109 -0.000003 39.341301
+v 87.461685 -0.000003 39.328438
+v 90.636261 -0.000003 39.315571
+v 93.810844 -0.000003 39.302708
+v 96.985420 -0.000003 39.289841
+v 100.159988 -0.000003 39.276978
+v 100.147118 -0.000003 36.102402
+v 96.972549 -0.000003 36.115265
+v 93.797974 -0.000003 36.128132
+v 90.623390 -0.000003 36.140995
+v 87.448814 -0.000003 36.153862
+v 84.274239 -0.000003 36.166725
+v 81.099655 -0.000003 36.179592
+v 77.925079 -0.000003 36.192455
+v 74.750504 -0.000003 36.205318
+v 71.575928 -0.000003 36.218185
+v 68.401360 -0.000003 36.231049
+v 65.226776 -0.000003 36.243916
+v 62.052200 -0.000003 36.256779
+v 58.877628 -0.000003 36.269642
+v 55.703045 -0.000003 36.282509
+v 52.528469 -0.000003 36.295372
+v 49.353893 -0.000003 36.308239
+v 46.179321 -0.000003 36.321102
+v 43.004742 -0.000003 36.333965
+v 39.830162 -0.000003 36.346832
+v 36.655586 -0.000003 36.359695
+v 33.481010 -0.000003 36.372562
+v 30.306431 -0.000003 36.385426
+v 27.131851 -0.000003 36.398293
+v 23.957273 -0.000003 36.411156
+v 20.782698 -0.000003 36.424019
+v 17.608122 -0.000003 36.436886
+v 14.433545 0.016136 36.449749
+v 11.258968 0.918155 36.462616
+v 8.084392 2.336166 36.475479
+v 4.909814 2.250006 36.488342
+v 1.735237 0.969565 36.501209
+v -1.439341 0.304807 36.514072
+v -4.613918 0.645657 36.526939
+v -7.788495 1.222949 36.539803
+v -10.963071 1.240779 36.552666
+v -14.137649 0.651520 36.565533
+v -17.312225 0.929353 36.578396
+v -20.486803 0.995332 36.591263
+v -23.661381 1.494301 36.604126
+v -26.835957 2.323120 36.616989
+v -30.010534 2.243509 36.629856
+v -33.185108 1.763647 36.642719
+v -36.359688 1.057656 36.655586
+v -39.534264 -0.101763 36.668449
+v -42.708839 -0.363969 36.681316
+v -45.883419 -0.469918 36.694180
+v -49.057995 0.153590 36.707043
+v -52.232574 0.484888 36.719910
+v -55.407154 1.012932 36.732773
+v -58.581726 1.287940 36.745640
+v -61.756306 1.396157 36.758503
+v -64.930885 1.400208 36.771366
+v -68.105461 1.033531 36.784233
+v -71.280037 0.872517 36.797096
+v -74.454620 0.766912 36.809963
+v -77.629196 1.041919 36.822826
+v -80.803772 1.142991 36.835690
+v -83.978348 1.104075 36.848557
+v -87.152924 0.645730 36.861420
+v -90.327507 0.446149 36.874287
+v -93.502083 0.324983 36.887150
+v -96.676651 0.691660 36.900017
+v -99.851227 0.874055 36.912880
+v -99.864090 0.422249 33.738304
+v -96.689514 0.324983 33.725441
+v -93.514946 0.446150 33.712574
+v -90.340370 0.645728 33.699711
+v -87.165787 1.104075 33.686844
+v -83.991211 1.142991 33.673981
+v -80.816635 1.041919 33.661114
+v -77.642059 0.766912 33.648251
+v -74.467484 0.872517 33.635387
+v -71.292900 1.033531 33.622520
+v -68.118324 1.400208 33.609657
+v -64.943748 1.396156 33.596790
+v -61.769173 1.287940 33.583927
+v -58.594593 1.012933 33.571064
+v -55.420021 0.484888 33.558197
+v -52.245441 0.153590 33.545334
+v -49.070862 -0.469918 33.532467
+v -45.896286 -0.363968 33.519604
+v -42.721706 -0.101763 33.506741
+v -39.547131 1.057655 33.493874
+v -36.372555 1.763647 33.481010
+v -33.197975 2.243508 33.468143
+v -30.023397 2.323119 33.455280
+v -26.848820 1.494302 33.442413
+v -23.674244 0.995332 33.429550
+v -20.499666 0.929354 33.416687
+v -17.325089 0.651520 33.403820
+v -14.150514 0.935592 33.390957
+v -10.975936 0.769018 33.378090
+v -7.801360 0.645658 33.365227
+v -4.626782 0.353565 33.352364
+v -1.452205 0.969564 33.339497
+v 1.722372 1.486483 33.326633
+v 4.896949 2.525663 33.313766
+v 8.071527 2.352414 33.300903
+v 11.246103 0.918155 33.288040
+v 14.420680 0.016136 33.275173
+v 17.595259 -0.000003 33.262310
+v 20.769835 -0.000003 33.249443
+v 23.944410 -0.000003 33.236580
+v 27.118988 -0.000003 33.223717
+v 30.293568 -0.000003 33.210850
+v 33.468143 -0.000003 33.197987
+v 36.642719 -0.000003 33.185120
+v 39.817295 -0.000003 33.172256
+v 42.991875 -0.000003 33.159389
+v 46.166454 -0.000003 33.146526
+v 49.341026 -0.000003 33.133663
+v 52.515602 -0.000003 33.120796
+v 55.690178 -0.000003 33.107933
+v 58.864761 -0.000003 33.095066
+v 62.039333 -0.000003 33.082203
+v 65.213913 -0.000003 33.069340
+v 68.388496 -0.000003 33.056473
+v 71.563065 -0.000003 33.043610
+v 74.737640 -0.000003 33.030743
+v 77.912216 -0.000003 33.017879
+v 81.086792 -0.000003 33.005016
+v 84.261375 -0.000003 32.992149
+v 87.435951 -0.000003 32.979286
+v 90.610527 -0.000003 32.966419
+v 93.785110 -0.000003 32.953556
+v 96.959686 -0.000003 32.940689
+v 100.134254 -0.000003 32.927826
+v 100.121391 -0.000002 29.753248
+v 96.946823 -0.000002 29.766113
+v 93.772247 -0.000002 29.778978
+v 90.597664 -0.000002 29.791843
+v 87.423088 0.009062 29.804707
+v 84.248512 0.009062 29.817572
+v 81.073929 -0.000002 29.830437
+v 77.899353 -0.000002 29.843302
+v 74.724777 -0.000002 29.856167
+v 71.550201 -0.000002 29.869030
+v 68.375633 -0.000002 29.881895
+v 65.201050 -0.000002 29.894760
+v 62.026470 -0.000002 29.907625
+v 58.851898 -0.000002 29.920490
+v 55.677315 -0.000002 29.933355
+v 52.502739 -0.000002 29.946218
+v 49.328163 -0.000002 29.959084
+v 46.153591 -0.000002 29.971949
+v 42.979012 -0.000002 29.984814
+v 39.804432 -0.000002 29.997679
+v 36.629856 -0.000002 30.010544
+v 33.455280 -0.000002 30.023407
+v 30.280703 -0.000002 30.036272
+v 27.106123 -0.000002 30.049137
+v 23.931545 -0.000002 30.062002
+v 20.756969 -0.000002 30.074867
+v 17.582394 -0.000002 30.087730
+v 14.407816 0.016136 30.100595
+v 11.233239 0.918156 30.113461
+v 8.058662 2.352414 30.126326
+v 4.884084 3.012485 30.139191
+v 1.709507 2.525664 30.152056
+v -1.465070 1.486485 30.164919
+v -4.639647 0.969566 30.177784
+v -7.814225 0.969566 30.190649
+v -10.988800 1.016086 30.203514
+v -14.163378 1.257557 30.216379
+v -17.337954 0.935592 30.229244
+v -20.512531 0.651520 30.242107
+v -23.687109 0.929354 30.254972
+v -26.861685 0.995332 30.267838
+v -30.036263 1.494301 30.280703
+v -33.210838 2.323119 30.293568
+v -36.385418 2.243509 30.306431
+v -39.559994 1.763648 30.319296
+v -42.734570 1.057658 30.332161
+v -45.909149 -0.101763 30.345026
+v -49.083725 -0.363968 30.357891
+v -52.258305 -0.469919 30.370756
+v -55.432884 0.153590 30.383619
+v -58.607456 0.484887 30.396484
+v -61.782036 1.012932 30.409349
+v -64.956612 1.287940 30.422215
+v -68.131187 1.396157 30.435080
+v -71.305763 1.400208 30.447945
+v -74.480347 1.033531 30.460808
+v -77.654922 0.872517 30.473673
+v -80.829498 0.766912 30.486538
+v -84.004074 1.041919 30.499403
+v -87.178650 1.142990 30.512268
+v -90.353233 1.104075 30.525131
+v -93.527809 0.645729 30.537996
+v -96.702377 0.417734 30.550861
+v -99.876953 0.131015 30.563726
+v -99.889816 0.417736 27.389147
+v -96.715240 0.645730 27.376282
+v -93.540672 1.104075 27.363417
+v -90.366096 1.142991 27.350552
+v -87.191513 1.041919 27.337688
+v -84.016937 0.766912 27.324823
+v -80.842361 0.872517 27.311958
+v -77.667786 1.033533 27.299093
+v -74.493210 1.400209 27.286228
+v -71.318626 1.396157 27.273365
+v -68.144051 1.287941 27.260500
+v -64.969475 1.012933 27.247635
+v -61.794903 0.484888 27.234770
+v -58.620323 0.153589 27.221905
+v -55.445751 -0.469918 27.209040
+v -52.271172 -0.363968 27.196177
+v -49.096592 -0.101761 27.183311
+v -45.922016 1.057657 27.170446
+v -42.747437 1.763650 27.157581
+v -39.572861 2.243510 27.144716
+v -36.398285 2.323120 27.131851
+v -33.223705 1.494301 27.118988
+v -30.049128 0.995332 27.106123
+v -26.874550 0.929354 27.093258
+v -23.699974 0.651520 27.080393
+v -20.525396 0.935593 27.067528
+v -17.350819 1.257557 27.054665
+v -14.176243 1.528358 27.041800
+v -11.001665 2.250008 27.028934
+v -7.827089 2.250008 27.016069
+v -4.652512 2.250008 27.003204
+v -1.477935 1.797584 26.990339
+v 1.696643 2.275775 26.977476
+v 4.871220 2.352413 26.964611
+v 8.045797 1.772939 26.951746
+v 11.220374 0.611823 26.938881
+v 14.394951 -0.000002 26.926016
+v 17.569529 -0.000002 26.913151
+v 20.744104 -0.000002 26.900288
+v 23.918680 -0.000002 26.887423
+v 27.093258 -0.000002 26.874557
+v 30.267838 -0.000002 26.861692
+v 33.442413 -0.000002 26.848827
+v 36.616989 -0.000002 26.835964
+v 39.791565 -0.000002 26.823099
+v 42.966145 -0.000002 26.810234
+v 46.140724 -0.000002 26.797369
+v 49.315296 -0.000002 26.784504
+v 52.489872 -0.000002 26.771639
+v 55.664448 -0.000002 26.758776
+v 58.839031 -0.000002 26.745911
+v 62.013603 -0.000002 26.733046
+v 65.188187 -0.000002 26.720181
+v 68.362770 -0.000002 26.707315
+v 71.537338 0.009062 26.694450
+v 74.711914 0.009062 26.681587
+v 77.886490 0.040095 26.668722
+v 81.061066 0.280305 26.655857
+v 84.235649 0.416322 26.642992
+v 87.410225 0.416322 26.630127
+v 90.584801 0.280306 26.617264
+v 93.759384 0.040095 26.604399
+v 96.933960 -0.000002 26.591534
+v 100.108528 -0.000002 26.578669
+v 100.095665 0.040095 23.404095
+v 96.921097 0.280306 23.416960
+v 93.746521 0.416322 23.429825
+v 90.571938 0.793064 23.442690
+v 87.397255 1.054462 23.453936
+v 84.222687 1.054462 23.466799
+v 81.048203 0.793063 23.481283
+v 77.873627 0.280306 23.494148
+v 74.699051 0.416322 23.507013
+v 71.524475 0.416321 23.519876
+v 68.349907 0.280304 23.532742
+v 65.175323 0.040094 23.545607
+v 62.000740 -0.000002 23.558472
+v 58.826168 -0.000002 23.571337
+v 55.651585 -0.000002 23.584202
+v 52.477009 -0.000002 23.597065
+v 49.302433 -0.000002 23.609930
+v 46.127861 -0.000002 23.622795
+v 42.953281 -0.000002 23.635660
+v 39.778702 -0.000002 23.648525
+v 36.604126 -0.000002 23.661390
+v 33.429550 -0.000002 23.674253
+v 30.254972 -0.000002 23.687119
+v 27.080393 -0.000002 23.699984
+v 23.905815 -0.000002 23.712849
+v 20.731239 -0.000002 23.725714
+v 17.556664 -0.000002 23.738577
+v 14.382086 -0.000002 23.751442
+v 11.207509 0.080899 23.764307
+v 8.032932 0.611823 23.777172
+v 4.858355 0.918157 23.790037
+v 1.683778 0.918157 23.802902
+v -1.490800 1.772941 23.815765
+v -4.665377 2.336169 23.828630
+v -7.839954 2.336169 23.841496
+v -11.014530 2.275777 23.854361
+v -14.189108 1.797584 23.867226
+v -17.363684 1.528356 23.880091
+v -20.538261 1.257557 23.892954
+v -23.712839 0.935593 23.905819
+v -26.887415 0.651520 23.918684
+v -30.061993 0.929354 23.931549
+v -33.236568 0.995332 23.944414
+v -36.411148 1.494302 23.957277
+v -39.585724 2.323120 23.970142
+v -42.760300 2.243510 23.983007
+v -45.934879 1.763647 23.995872
+v -49.109455 1.057657 24.008738
+v -52.284035 -0.101762 24.021603
+v -55.458614 -0.363968 24.034466
+v -58.633186 -0.469918 24.047331
+v -61.807766 0.153591 24.060196
+v -64.982338 0.484888 24.073061
+v -68.156914 1.012933 24.085926
+v -71.331490 1.287941 24.098789
+v -74.506073 1.396157 24.111654
+v -77.680649 1.400209 24.124519
+v -80.855225 1.033532 24.137384
+v -84.029800 0.872517 24.150249
+v -87.204376 0.766912 24.163115
+v -90.378960 1.041920 24.175978
+v -93.553535 1.142991 24.188843
+v -96.728104 1.104075 24.201708
+v -99.902679 0.982493 24.214573
+v -99.915550 1.346536 21.039995
+v -96.740974 1.178717 21.027130
+v -93.566406 1.041920 21.014265
+v -90.391830 0.766913 21.001400
+v -87.217247 0.872518 20.988537
+v -84.042671 1.033533 20.975672
+v -80.868095 1.400209 20.962807
+v -77.693520 1.396158 20.949942
+v -74.518944 1.287941 20.937077
+v -71.344360 1.012934 20.924213
+v -68.169785 0.484889 20.911348
+v -64.995209 0.153590 20.898483
+v -61.820629 -0.469917 20.885618
+v -58.646049 -0.363967 20.872753
+v -55.471478 -0.101762 20.859888
+v -52.296898 1.057658 20.847025
+v -49.122318 1.763650 20.834160
+v -45.947742 2.243510 20.821295
+v -42.773163 2.323120 20.808430
+v -39.598587 1.494302 20.795565
+v -36.424011 0.995333 20.782700
+v -33.249432 0.929355 20.769836
+v -30.074858 0.651521 20.756971
+v -26.900280 0.935593 20.744106
+v -23.725704 1.257558 20.731241
+v -20.551126 1.528358 20.718376
+v -17.376549 1.797583 20.705513
+v -14.201972 1.705873 20.692648
+v -11.027394 0.918158 20.679783
+v -7.852819 0.918158 20.666918
+v -4.678242 0.918158 20.654053
+v -1.503664 0.611824 20.641188
+v 1.670913 0.080900 20.628325
+v 4.845490 0.016137 20.615459
+v 8.020068 -0.000002 20.602594
+v 11.194645 -0.000002 20.589729
+v 14.369222 -0.000002 20.576864
+v 17.543798 -0.000002 20.563999
+v 20.718374 -0.000002 20.551136
+v 23.892950 -0.000002 20.538271
+v 27.067528 -0.000002 20.525406
+v 30.242107 -0.000002 20.512541
+v 33.416687 -0.000002 20.499676
+v 36.591263 -0.000002 20.486813
+v 39.765839 -0.000002 20.473948
+v 42.940418 -0.000002 20.461082
+v 46.114998 -0.000002 20.448217
+v 49.289570 -0.000002 20.435352
+v 52.464146 -0.000002 20.422487
+v 55.638721 -0.000002 20.409624
+v 58.813305 0.008871 20.396759
+v 61.987877 0.039683 20.383894
+v 65.162453 0.280304 20.371029
+v 68.337036 0.793062 20.358164
+v 71.511543 1.052306 20.344233
+v 74.686111 1.053281 20.331118
+v 77.860313 0.821730 20.312246
+v 81.031960 1.267770 20.250576
+v 84.204811 1.708678 20.208858
+v 87.379387 1.708678 20.195993
+v 90.555695 1.267771 20.211981
+v 93.733192 1.078309 20.247534
+v 96.908226 0.793065 20.242382
+v 100.082794 0.280306 20.229517
+v 100.069496 0.821731 17.047615
+v 96.891983 1.267771 17.011675
+v 93.715683 1.708679 16.995689
+v 90.536469 2.010640 16.931387
+v 87.358749 2.227370 16.891966
+v 84.184174 2.227370 16.904831
+v 81.012733 2.010638 16.969980
+v 77.844521 1.267771 17.088865
+v 74.668320 1.701864 17.074619
+v 71.493851 1.705324 17.089184
+v 68.321030 1.252729 17.131302
+v 65.149239 0.813537 17.190653
+v 61.975010 0.416292 17.209316
+v 58.800438 0.414849 17.222181
+v 55.625854 0.279134 17.235046
+v 52.451279 0.039684 17.247910
+v 49.276703 -0.000001 17.260775
+v 46.102131 -0.000001 17.273640
+v 42.927551 -0.000001 17.286505
+v 39.752972 -0.000001 17.299370
+v 36.578396 -0.000001 17.312235
+v 33.403820 -0.000001 17.325098
+v 30.229244 -0.000001 17.337963
+v 27.054665 -0.000001 17.350828
+v 23.880087 -0.000001 17.363693
+v 20.705511 -0.000001 17.376558
+v 17.530935 -0.000001 17.389421
+v 14.356357 -0.000001 17.402287
+v 11.181780 -0.000001 17.415152
+v 8.007203 -0.000001 17.428017
+v 4.832625 -0.000001 17.440882
+v 1.658048 -0.000001 17.453747
+v -1.516529 -0.000001 17.466610
+v -4.691106 0.016138 17.479475
+v -7.865684 0.016138 17.492340
+v -11.040259 0.918157 17.505205
+v -14.214837 2.336168 17.518070
+v -17.389412 2.250007 17.530935
+v -20.563990 0.979558 17.543798
+v -23.738567 0.803043 17.556664
+v -26.913143 1.075983 17.569529
+v -30.087721 0.710760 17.582394
+v -33.262299 0.642305 17.595259
+v -36.436878 1.165334 17.608122
+v -39.611454 1.926628 17.620987
+v -42.786030 2.680699 17.633852
+v -45.960609 2.418755 17.646717
+v -49.135185 1.384047 17.659582
+v -52.309765 0.356352 17.672447
+v -55.484344 -0.411913 17.685310
+v -58.658916 -0.799745 17.698175
+v -61.833496 -0.304523 17.711040
+v -65.008072 0.463741 17.723906
+v -68.182648 0.867458 17.736771
+v -71.357224 1.085883 17.749634
+v -74.531807 1.424738 17.762499
+v -77.706383 1.594177 17.775364
+v -80.880959 1.302942 17.788229
+v -84.055534 0.851137 17.801094
+v -87.230110 0.621437 17.813959
+v -90.404694 0.839863 17.826822
+v -93.579269 1.178717 17.839687
+v -96.753838 1.354638 17.852552
+v -99.928413 1.354638 17.865417
+v -99.941277 1.354638 14.690842
+v -96.766701 1.354638 14.677977
+v -93.592133 1.178717 14.665112
+v -90.417557 0.839863 14.652247
+v -87.242973 0.621437 14.639382
+v -84.068398 0.851137 14.626518
+v -80.893822 1.302942 14.613653
+v -77.719246 1.594177 14.600788
+v -74.544670 1.424738 14.587924
+v -71.370087 1.085883 14.575059
+v -68.195511 0.867458 14.562194
+v -65.020935 0.463741 14.549330
+v -61.846359 -0.304523 14.536465
+v -58.671780 -0.799745 14.523600
+v -55.497208 -0.411913 14.510736
+v -52.322628 0.356352 14.497870
+v -49.148048 1.384047 14.485005
+v -45.973473 2.418755 14.472141
+v -42.798893 2.680700 14.459276
+v -39.624317 1.926629 14.446412
+v -36.449741 1.165335 14.433547
+v -33.275162 0.642305 14.420682
+v -30.100586 0.710760 14.407818
+v -26.926008 1.075984 14.394953
+v -23.751432 0.803044 14.382088
+v -20.576855 0.979558 14.369224
+v -17.402277 2.250007 14.356359
+v -14.227702 2.336168 14.343493
+v -11.053124 0.918157 14.330629
+v -7.878548 0.016138 14.317764
+v -4.703971 -0.000001 14.304899
+v -1.529394 -0.000001 14.292035
+v 1.645184 -0.000001 14.279170
+v 4.819761 -0.000001 14.266306
+v 7.994339 -0.000001 14.253441
+v 11.168915 -0.000001 14.240576
+v 14.343492 -0.000001 14.227712
+v 17.518070 -0.000001 14.214847
+v 20.692646 -0.000001 14.201982
+v 23.867222 -0.000001 14.189117
+v 27.041800 -0.000001 14.176252
+v 30.216379 -0.000001 14.163387
+v 33.390957 -0.000001 14.150523
+v 36...
[truncated message content] |
|
From: <tre...@us...> - 2008-01-31 16:23:36
|
Revision: 702
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=702&view=rev
Author: trevorolio
Date: 2008-01-31 08:23:34 -0800 (Thu, 31 Jan 2008)
Log Message:
-----------
Fixed a test bug which Nic found. I'm surprised that test ever passed, given the random nature of the bug.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2008-01-31 01:09:13 UTC (rev 701)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2008-01-31 16:23:34 UTC (rev 702)
@@ -140,11 +140,11 @@
assertNotNull(configurationRecord);
assertEquals(bodyDataRecord.getBodyDataID(), configurationRecord.getBodyDataID());
- BodySettingRecord settingRecord = BodyPersistTasks.createOrUpdateBodySetting(configurationRecord.getBodyDataID(), "height", 0.5f, sessionFactory);
+ BodySettingRecord settingRecord = BodyPersistTasks.createOrUpdateBodySetting(configurationRecord.getBodyConfigurationID(), "height", 0.5f, sessionFactory);
assertNotNull(settingRecord);
assertEquals(0.5f, settingRecord.getSetting(), 0.00001);
assertEquals("height", settingRecord.getSettingName());
- settingRecord = BodyPersistTasks.createOrUpdateBodySetting(configurationRecord.getBodyDataID(), "height", 0.9f, sessionFactory);
+ settingRecord = BodyPersistTasks.createOrUpdateBodySetting(configurationRecord.getBodyConfigurationID(), "height", 0.9f, sessionFactory);
assertNotNull(settingRecord);
assertEquals(0.9f, settingRecord.getSetting(), 0.00001);
assertEquals("height", settingRecord.getSettingName());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ian...@us...> - 2008-01-31 01:09:13
|
Revision: 701
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=701&view=rev
Author: iansmith
Date: 2008-01-30 17:09:13 -0800 (Wed, 30 Jan 2008)
Log Message:
-----------
I moved the multiuser tests into ogoglio-common. This is not a huge amount of extra bloat and means that it easy for folks (incl me) to write scripts that do load testing. Before this required chicanery with the test jars.
Added Paths:
-----------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/Bot.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultispaceTests.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultiuserTests.java
Removed Paths:
-------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/Bot.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultispaceTests.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultiuserTests.java
maven/trunk/ogoglio-common/src/test/java/com/ogoglio/loadtest/
Copied: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest (from rev 689, maven/trunk/ogoglio-common/src/test/java/com/ogoglio/loadtest)
Deleted: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/Bot.java
===================================================================
--- maven/trunk/ogoglio-common/src/test/java/com/ogoglio/loadtest/Bot.java 2008-01-23 03:18:47 UTC (rev 689)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/Bot.java 2008-01-31 01:09:13 UTC (rev 701)
@@ -1,139 +0,0 @@
-package com.ogoglio.loadtest;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Random;
-import java.util.Vector;
-
-import javax.media.j3d.Transform3D;
-import javax.vecmath.Vector3d;
-
-import com.ogoglio.client.SpaceClient;
-import com.ogoglio.client.model.SplinePath;
-import com.ogoglio.client.model.Thing;
-import com.ogoglio.client.model.User;
-import com.ogoglio.util.Log;
-import com.ogoglio.viewer.j3d.J3DSplinePath;
-
-public class Bot implements SpaceClient.Listener {
- SpaceClient spaceClient = null;
-
- Random random = new Random();
-
- WanderThread wanderThread = null;
-
- public Bot(long spaceID, URI serviceURI) throws IOException {
- String guestCookie = "guestRobot_Banger_Test_" + System.currentTimeMillis() + "_" + random.nextInt();
- if (guestCookie == null) {
- throw new IOException("Could not get a guest cookie");
- }
- spaceClient = new SpaceClient(spaceID, serviceURI, guestCookie, this);
- }
-
- public void wander() {
- wanderThread = new WanderThread();
- wanderThread.start();
- }
-
- public void cleanup() {
- if (spaceClient != null) {
- spaceClient.cleanup();
- }
- }
-
- public void teleport(Transform3D position) {
- spaceClient.viewpointMotionStopped(position);
- }
-
- public void disconnected() {
- Log.error("UserRobot was disconnected");
- }
-
- public void receivedChatMessage(String username, String message) {
- }
-
- public void receivedSpaceTransfer(URI link) {
- }
-
- public void receivedLink(String displayName, String link) {
- }
-
- public void receivedCommandFocusRequest(String preloadedText) {
- }
-
- public void receivedBrowserMessage(long sourceThingID, String message) {
- }
-
- public void receivedContextMenuRequest(Thing thing, String shapeName, int x, int y, long nonce) {
- }
-
- public void receivedContextMenuData(long nonce, String errorIfAny, Vector contextMenu) {
- }
-
- public void contextItemChosen(Thing thing, long nonce, String id) {
- }
-
- public void receivedInfoPanel(long sourceThingID, String nonce) {
- }
-
- private class WanderThread extends Thread {
- public void run() {
- User user = spaceClient.getSpace().getUser(spaceClient.getUsername());
- while (user == null) {
- try {
- sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- user = spaceClient.getSpace().getUser(spaceClient.getUsername());
- }
- Vector3d homePosition = new Vector3d(Math.abs(random.nextInt()) % 10, 0, -30 + Math.abs(random.nextInt()) % 10);
- Transform3D userPosition = new Transform3D();
- userPosition.setTranslation(homePosition);
- boolean lastSpun = true;
- while (true) {
- if (random.nextBoolean() || random.nextBoolean()) {
- userPosition.setTranslation(homePosition);
- spaceClient.viewpointMotionStopped(userPosition);
- try {
- sleep(1000 + Math.abs((random.nextInt() % 5000)));
- } catch (InterruptedException e) {
- break;
- }
- } else if (lastSpun) {
- userPosition.rotY(random.nextFloat() % (2 * Math.PI));
- userPosition.setTranslation(homePosition);
- SplinePath path = J3DSplinePath.getSplinePath(userPosition, 1, 0, 0, 2);
- spaceClient.viewpointMotionChanged(path);
- try {
- sleep(3000 + Math.abs((random.nextInt() % 6000)));
- } catch (InterruptedException e) {
- break;
- }
- lastSpun = false;
- } else {
- userPosition.setTranslation(homePosition);
- SplinePath path = J3DSplinePath.getSplinePath(userPosition, 0, 1, 0, 2);
- spaceClient.viewpointMotionChanged(path);
- try {
- sleep(1000 + Math.abs((random.nextInt() % 6000)));
- } catch (InterruptedException e) {
- break;
- }
- lastSpun = true;
- }
- }
- }
- }
-
- public void receivedUserContextMenuRequest(User user, int x, int y) {
- // TODO Auto-generated method stub
-
- }
-
- public void receivedTellMessage(String username, String message) {
- // TODO Auto-generated method stub
-
- }
-
-}
Copied: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/Bot.java (from rev 700, maven/trunk/ogoglio-common/src/test/java/com/ogoglio/loadtest/Bot.java)
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/Bot.java (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/Bot.java 2008-01-31 01:09:13 UTC (rev 701)
@@ -0,0 +1,135 @@
+package com.ogoglio.loadtest;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Random;
+import java.util.Vector;
+
+import javax.media.j3d.Transform3D;
+import javax.vecmath.Vector3d;
+
+import com.ogoglio.client.SpaceClient;
+import com.ogoglio.client.model.SplinePath;
+import com.ogoglio.client.model.Thing;
+import com.ogoglio.client.model.User;
+import com.ogoglio.util.Log;
+import com.ogoglio.viewer.j3d.J3DSplinePath;
+
+public class Bot implements SpaceClient.Listener {
+ SpaceClient spaceClient = null;
+
+ private Random random = new Random();
+ private WanderThread wanderThread = null;
+ private long timeLimitInMillis;
+ private long startTime;
+
+ public Bot(long spaceID, URI serviceURI, long timeLimitInMillis) throws IOException {
+ String guestCookie = "guestRobot_Banger_Test_" + System.currentTimeMillis() + "_" + random.nextInt();
+ if (guestCookie == null) {
+ throw new IOException("Could not get a guest cookie");
+ }
+ spaceClient = new SpaceClient(spaceID, serviceURI, guestCookie, this);
+ this.timeLimitInMillis=timeLimitInMillis;
+ this.startTime=System.currentTimeMillis();
+ }
+
+ public void wander() {
+ wanderThread = new WanderThread();
+ wanderThread.start();
+ }
+
+ public void cleanup() {
+ if (spaceClient != null) {
+ spaceClient.cleanup();
+ }
+ }
+
+ public void teleport(Transform3D position) {
+ spaceClient.viewpointMotionStopped(position);
+ }
+
+ public void disconnected() {
+ Log.error("UserRobot was disconnected");
+ }
+
+ public void receivedChatMessage(String username, String message) {
+ }
+
+ public void receivedSpaceTransfer(URI link) {
+ }
+
+ public void receivedLink(String displayName, String link) {
+ }
+
+ public void receivedCommandFocusRequest(String preloadedText) {
+ }
+
+ public void receivedBrowserMessage(long sourceThingID, String message) {
+ }
+
+ public void receivedContextMenuRequest(Thing thing, String shapeName, int x, int y, long nonce) {
+ }
+
+ public void receivedContextMenuData(long nonce, String errorIfAny, Vector contextMenu) {
+ }
+
+ public void contextItemChosen(Thing thing, long nonce, String id) {
+ }
+
+ public void receivedInfoPanel(long sourceThingID, String nonce) {
+ }
+
+ private class WanderThread extends Thread {
+ public void run() {
+ User user = spaceClient.getSpace().getUser(spaceClient.getUsername());
+ while (user == null) {
+ try {
+ sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ user = spaceClient.getSpace().getUser(spaceClient.getUsername());
+ }
+ try {
+ Vector3d homePosition = new Vector3d(Math.abs(random.nextInt()) % 10, 0, -30 + Math.abs(random.nextInt()) % 10);
+ Transform3D userPosition = new Transform3D();
+ userPosition.setTranslation(homePosition);
+ boolean lastSpun = true;
+ while (System.currentTimeMillis()-startTime < timeLimitInMillis) {
+ if (random.nextBoolean() || random.nextBoolean()) {
+ userPosition.setTranslation(homePosition);
+ spaceClient.viewpointMotionStopped(userPosition);
+ sleep(1000 + Math.abs((random.nextInt() % 5000)));
+ } else if (lastSpun) {
+ userPosition.rotY(random.nextFloat() % (2 * Math.PI));
+ userPosition.setTranslation(homePosition);
+ SplinePath path = J3DSplinePath.getSplinePath(userPosition, 1, 0, 0, 2);
+ spaceClient.viewpointMotionChanged(path);
+ sleep(3000 + Math.abs((random.nextInt() % 6000)));
+ lastSpun = false;
+ } else {
+ userPosition.setTranslation(homePosition);
+ SplinePath path = J3DSplinePath.getSplinePath(userPosition, 0, 1, 0, 2);
+ spaceClient.viewpointMotionChanged(path);
+ sleep(1000 + Math.abs((random.nextInt() % 6000)));
+ lastSpun = true;
+ }
+ }
+ } catch (Throwable t) {
+ Log.warn("Thread "+Thread.currentThread().getId()+" had to abort due to caught error:");
+ Log.warn(t.getClass().getName()+":"+t.getMessage());
+ }
+ }
+ }
+
+ public void receivedUserContextMenuRequest(User user, int x, int y) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void receivedTellMessage(String username, String message) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Deleted: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultispaceTests.java
===================================================================
--- maven/trunk/ogoglio-common/src/test/java/com/ogoglio/loadtest/MultispaceTests.java 2008-01-23 03:18:47 UTC (rev 689)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultispaceTests.java 2008-01-31 01:09:13 UTC (rev 701)
@@ -1,67 +0,0 @@
-package com.ogoglio.loadtest;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Vector;
-
-import com.ogoglio.util.Log;
-
-public class MultispaceTests {
-
- private URI serviceURI = null;
-
- private long lowerSpaceID = -1;
-
- private long upperSpaceID = -1;
-
- Vector bots = new Vector();
-
- public MultispaceTests(URI serviceURI, long lowerSpaceID, long upperSpaceID) {
- this.lowerSpaceID = lowerSpaceID;
- this.upperSpaceID = upperSpaceID;
- this.serviceURI = serviceURI;
- if (lowerSpaceID >= upperSpaceID) {
- throw new IllegalArgumentException("lower space ID must be less than upper space ID");
- }
- }
-
- public void startTests() throws IOException {
- for (long i = lowerSpaceID; i <= upperSpaceID; i++) {
- try {
- Bot bot = new Bot(i, serviceURI);
- System.out.println("Adding bot to space " + i);
- bots.add(bot);
- } catch (IOException e) {
- System.out.println("Skipping space " + i);
- }
- }
- }
-
- public void stopTests() {
- Bot[] theBots = (Bot[]) bots.toArray(new Bot[0]);
- for (int i = 0; i < theBots.length; i++) {
- theBots[i].cleanup();
- }
- }
-
- public static void main(String[] args) {
- if (args.length != 3) {
- Log.error("usage: ... serviceURI lowerSpaceID upperSpaceID");
- return;
- }
-
- URI serviceURI = URI.create(args[0]);
- long lowerSpaceID = Long.parseLong(args[1]);
- long upperSpaceID = Long.parseLong(args[2]);
-
- MultispaceTests tests = new MultispaceTests(serviceURI, lowerSpaceID, upperSpaceID);
- try {
- tests.startTests();
- Thread.sleep(500000000);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
-
-}
Copied: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultispaceTests.java (from rev 700, maven/trunk/ogoglio-common/src/test/java/com/ogoglio/loadtest/MultispaceTests.java)
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultispaceTests.java (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultispaceTests.java 2008-01-31 01:09:13 UTC (rev 701)
@@ -0,0 +1,67 @@
+package com.ogoglio.loadtest;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Vector;
+
+import com.ogoglio.util.Log;
+
+public class MultispaceTests {
+
+ private URI serviceURI = null;
+
+ private long lowerSpaceID = -1;
+
+ private long upperSpaceID = -1;
+
+ Vector bots = new Vector();
+
+ public MultispaceTests(URI serviceURI, long lowerSpaceID, long upperSpaceID) {
+ this.lowerSpaceID = lowerSpaceID;
+ this.upperSpaceID = upperSpaceID;
+ this.serviceURI = serviceURI;
+ if (lowerSpaceID >= upperSpaceID) {
+ throw new IllegalArgumentException("lower space ID must be less than upper space ID");
+ }
+ }
+
+ public void startTests() throws IOException {
+ for (long i = lowerSpaceID; i <= upperSpaceID; i++) {
+ try {
+ Bot bot = new Bot(i, serviceURI, 1000 * 10 * 60);
+ System.out.println("Adding bot to space " + i);
+ bots.add(bot);
+ } catch (IOException e) {
+ System.out.println("Skipping space " + i);
+ }
+ }
+ }
+
+ public void stopTests() {
+ Bot[] theBots = (Bot[]) bots.toArray(new Bot[0]);
+ for (int i = 0; i < theBots.length; i++) {
+ theBots[i].cleanup();
+ }
+ }
+
+ public static void main(String[] args) {
+ if (args.length != 3) {
+ Log.error("usage: ... serviceURI lowerSpaceID upperSpaceID");
+ return;
+ }
+
+ URI serviceURI = URI.create(args[0]);
+ long lowerSpaceID = Long.parseLong(args[1]);
+ long upperSpaceID = Long.parseLong(args[2]);
+
+ MultispaceTests tests = new MultispaceTests(serviceURI, lowerSpaceID, upperSpaceID);
+ try {
+ tests.startTests();
+ Thread.sleep(500000000);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+}
Deleted: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultiuserTests.java
===================================================================
--- maven/trunk/ogoglio-common/src/test/java/com/ogoglio/loadtest/MultiuserTests.java 2008-01-23 03:18:47 UTC (rev 689)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultiuserTests.java 2008-01-31 01:09:13 UTC (rev 701)
@@ -1,83 +0,0 @@
-package com.ogoglio.loadtest;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Random;
-import java.util.Vector;
-
-import javax.media.j3d.Transform3D;
-import javax.vecmath.Vector3d;
-
-import com.ogoglio.client.SpaceClient;
-import com.ogoglio.client.SpaceClient.Listener;
-import com.ogoglio.client.model.SplinePath;
-import com.ogoglio.client.model.Thing;
-import com.ogoglio.client.model.User;
-import com.ogoglio.util.Log;
-import com.ogoglio.viewer.j3d.J3DSplinePath;
-
-public class MultiuserTests {
-
- private long spaceID = -1;
-
- private URI serviceURI = null;
-
- Vector robots = new Vector();
-
- public MultiuserTests(long spaceID, URI serviceURI) {
- this.spaceID = spaceID;
- this.serviceURI = serviceURI;
- }
-
- public synchronized void addRobot(Transform3D startPosition, boolean wander) throws IOException {
- Bot robot = new Bot(spaceID, serviceURI);
- robot.teleport(startPosition);
- robots.add(robot);
- if (wander) {
- robot.wander();
- }
- }
-
- private synchronized Bot[] getRobots() {
- return (Bot[]) robots.toArray(new Bot[0]);
- }
-
- public void cleanup() {
- Bot[] bots = getRobots();
- for (int i = 0; i < bots.length; i++) {
- bots[i].cleanup();
- }
- }
-
- public static void main(String[] args) {
- if (args.length != 3) {
- Log.error("usage: ... spaceID serviceURI numRobots");
- return;
- }
- MultiuserTests tests = null;
- try {
- long spaceID = Long.parseLong(args[0]);
- URI serviceURI = new URI(args[1]);
- tests = new MultiuserTests(spaceID, serviceURI);
-
- int numRobots = Integer.parseInt(args[2]);
- Transform3D startPosition = new Transform3D();
- for (int i = 0; i < numRobots; i++) {
- startPosition.setTranslation(new Vector3d(0, 0, -50));
- tests.addRobot(startPosition, true);
- Log.info("Added robot " + (i + 1) + " of " + numRobots);
- Thread.sleep(1000);
- }
-
- Thread.sleep(500000000);
- } catch (Throwable e) {
- e.printStackTrace();
- System.exit(1);
- } finally {
- if (tests != null) {
- tests.cleanup();
- }
- }
- }
-
-}
Copied: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultiuserTests.java (from rev 700, maven/trunk/ogoglio-common/src/test/java/com/ogoglio/loadtest/MultiuserTests.java)
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultiuserTests.java (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/loadtest/MultiuserTests.java 2008-01-31 01:09:13 UTC (rev 701)
@@ -0,0 +1,85 @@
+package com.ogoglio.loadtest;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Date;
+import java.util.Vector;
+
+import javax.media.j3d.Transform3D;
+import javax.vecmath.Vector3d;
+
+import com.ogoglio.util.Log;
+
+public class MultiuserTests {
+
+ private long spaceID = -1;
+
+ private URI serviceURI = null;
+ private long timeLimit;
+
+ Vector robots = new Vector();
+
+ public MultiuserTests(long spaceID, URI serviceURI, long timeLimit) {
+ this.spaceID = spaceID;
+ this.serviceURI = serviceURI;
+ this.timeLimit=timeLimit;
+ }
+
+ public synchronized void addRobot(Transform3D startPosition, boolean wander) throws IOException {
+ Bot robot = new Bot(spaceID, serviceURI, timeLimit);
+ robot.teleport(startPosition);
+ robots.add(robot);
+ if (wander) {
+ robot.wander();
+ }
+ }
+
+ private synchronized Bot[] getRobots() {
+ return (Bot[]) robots.toArray(new Bot[0]);
+ }
+
+ public void cleanup() {
+ Bot[] bots = getRobots();
+ for (int i = 0; i < bots.length; i++) {
+ bots[i].cleanup();
+ }
+ }
+
+ public static void main(String[] args) {
+ if (args.length != 4) {
+ Log.error("usage: ... spaceID serviceURI numRobots duration");
+ return;
+ }
+ MultiuserTests tests = null;
+ try {
+ long spaceID = Long.parseLong(args[0]);
+ long limit= Long.parseLong(args[3]);
+ URI serviceURI = new URI(args[1]);
+ tests = new MultiuserTests(spaceID, serviceURI, limit);
+
+ int numRobots = Integer.parseInt(args[2]);
+ Transform3D startPosition = new Transform3D();
+ for (int i = 0; i < numRobots; i++) {
+ startPosition.setTranslation(new Vector3d(0, 0, -50));
+ tests.addRobot(startPosition, true);
+ Log.info("Added robot " + (i + 1) + " of " + numRobots);
+ Thread.sleep(1000);
+ }
+ Log.info("Finished launching all robots ("+args[2]+") onto "+args[1]+" space="+args[0]+"@"+(new Date())+" thread id "+Thread.currentThread().getId());
+ try {
+ Thread.sleep(limit);
+ } catch (InterruptedException e) {
+
+ }
+ } catch (Throwable e) {
+ e.printStackTrace();
+ return;
+ } finally {
+ Log.info("Cleaning up for thread "+Thread.currentThread().getId()+" @ "+ (new Date()));
+ if (tests != null) {
+ tests.cleanup();
+ }
+ }
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-01-30 22:44:24
|
Revision: 700
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=700&view=rev
Author: trevorolio
Date: 2008-01-30 14:44:28 -0800 (Wed, 30 Jan 2008)
Log Message:
-----------
Added the requested IP number to the service doc so the applet can work against round robin dns clusters, on Windows, in Firefox. Also tweaked the renderer graphics config to indicate a lowest level of texture bit depth, which also has the nice side effect of making the card use higher bit depth if possible.
Modified Paths:
--------------
maven/trunk/ogoglio-viewer-applet/src/main/java/com/ogoglio/viewer/applet/ViewerApplet.java
Modified: maven/trunk/ogoglio-viewer-applet/src/main/java/com/ogoglio/viewer/applet/ViewerApplet.java
===================================================================
--- maven/trunk/ogoglio-viewer-applet/src/main/java/com/ogoglio/viewer/applet/ViewerApplet.java 2008-01-30 22:44:12 UTC (rev 699)
+++ maven/trunk/ogoglio-viewer-applet/src/main/java/com/ogoglio/viewer/applet/ViewerApplet.java 2008-01-30 22:44:28 UTC (rev 700)
@@ -65,6 +65,8 @@
private URI serviceURI = null;
+ private String serverIP = null;
+
private String authCookie = null;
private Map popupMap = new HashMap();
@@ -103,6 +105,16 @@
return;
}
+ serverIP = getParameter("serverIP");
+ if(serverIP == null || serverIP.length() == 0){
+ removeAll();
+ validate();
+ add(new ErrorPanel("I can't find the server IP."), BorderLayout.CENTER);
+ validate();
+ repaint();
+ return;
+ }
+
float x = getFloatParameter("x", 0);
float y = getFloatParameter("y", 0);
float z = getFloatParameter("z", 0);
@@ -119,6 +131,11 @@
try {
serviceURI = new URI(getParameter("serviceURI"));
+ String port = serviceURI.getPort() == -1 ? "" : ":" + serviceURI.getPort();
+ serviceURI = URI.create(serviceURI.getScheme() + "://" + serverIP + port + serviceURI.getPath());
+
+ System.out.println("Service URI is: " + serviceURI);
+
long spaceID = Long.parseLong(getParameter("spaceID"));
spaceClient = new SpaceClient(spaceID, serviceURI, authCookie, spaceClientListener);
if (x != 0 || y != 0 || z != 0 || rx != 0 || ry != 0 || rz != 0) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-01-30 22:44:08
|
Revision: 699
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=699&view=rev
Author: trevorolio
Date: 2008-01-30 14:44:12 -0800 (Wed, 30 Jan 2008)
Log Message:
-----------
Added the requested IP number to the service doc so the applet can work against round robin dns clusters, on Windows, in Firefox. Also tweaked the renderer graphics config to indicate a lowest level of texture bit depth, which also has the nice side effect of making the card use higher bit depth if possible.
Modified Paths:
--------------
maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/AppletTestWindow.java
maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java
Modified: maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/AppletTestWindow.java
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/AppletTestWindow.java 2008-01-30 22:43:45 UTC (rev 698)
+++ maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/AppletTestWindow.java 2008-01-30 22:44:12 UTC (rev 699)
@@ -21,10 +21,12 @@
import java.awt.Frame;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
+import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.net.UnknownHostException;
import java.util.HashMap;
import com.ogoglio.client.WebAPIAuthenticator;
@@ -39,14 +41,14 @@
public static final String TEST_HELP_MESSAGE = "This is the help message.\nDo you feel helped?";
Dimension appDimension = new Dimension(500, 500);
-
+
public ViewerApplet applet = null;
EnvironmentStub clientStub1 = null;
URI serviceURI = null;
- public AppletTestWindow(URI serviceURI, long spaceID, String authCookie, Dimension appDimension, boolean fullScreen) {
+ public AppletTestWindow(URI serviceURI, long spaceID, String serverIP, String authCookie, Dimension appDimension, boolean fullScreen) {
ArgumentUtils.assertNotNull(appDimension);
this.appDimension = appDimension;
ArgumentUtils.assertNotNull(serviceURI);
@@ -63,6 +65,7 @@
parameters1.put("loginCookie", authCookie);
parameters1.put("spaceID", "" + spaceID);
parameters1.put("serviceURI", serviceURI.toString());
+ parameters1.put("serverIP", serverIP);
parameters1.put("helpMessage", TEST_HELP_MESSAGE);
@@ -159,18 +162,19 @@
}
}
- long spaceID = Long.parseLong(System.getProperty("AppletTestWindow.space"));
-
try {
- AppletTestWindow test = new AppletTestWindow(new URI(serviceURI), spaceID, loginCookie, dim, fullScreen);
+ long spaceID = Long.parseLong(System.getProperty("AppletTestWindow.space"));
+ URI actualServiceURI = URI.create(serviceURI);
+ String serverIP = InetAddress.getByName(actualServiceURI.getHost()).getHostAddress();
+ AppletTestWindow test = new AppletTestWindow(actualServiceURI, spaceID, serverIP, loginCookie, dim, fullScreen);
test.setVisible(true);
if (fullScreen) {
device.setFullScreenWindow(test);
}
test.start();
- } catch (URISyntaxException e) {
+ } catch (UnknownHostException e) {
+ // TODO Auto-generated catch block
e.printStackTrace();
- System.exit(1);
}
}
}
Modified: maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java 2008-01-30 22:43:45 UTC (rev 698)
+++ maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java 2008-01-30 22:44:12 UTC (rev 699)
@@ -22,9 +22,11 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.LineNumberReader;
+import java.net.InetAddress;
import java.net.Socket;
import java.net.URI;
import java.net.URISyntaxException;
+import java.net.UnknownHostException;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
@@ -209,15 +211,15 @@
serviceStateDoc = adminWebClient.setRegistrationState(ServiceStateDocument.REGISTRATION_STATE_OPEN);
assertEquals(ServiceStateDocument.REGISTRATION_STATE_OPEN, serviceStateDoc.getRegistrationState());
- assertNotNull(adminWebClient.createAccount("shouldexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo"+System.currentTimeMillis() + "@example.com", "1234"));
- assertNotNull(basicWebClient.createAccount("shouldexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo"+System.currentTimeMillis() + "@example.com", "1234"));
- assertNotNull(guestWebClient.createAccount("shouldexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo"+System.currentTimeMillis() + "@example.com", "1234"));
+ assertNotNull(adminWebClient.createAccount("shouldexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo" + System.currentTimeMillis() + "@example.com", "1234"));
+ assertNotNull(basicWebClient.createAccount("shouldexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo" + System.currentTimeMillis() + "@example.com", "1234"));
+ assertNotNull(guestWebClient.createAccount("shouldexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo" + System.currentTimeMillis() + "@example.com", "1234"));
serviceStateDoc = adminWebClient.setRegistrationState(ServiceStateDocument.REGISTRATION_STATE_ADMIN_ONLY);
assertEquals(ServiceStateDocument.REGISTRATION_STATE_ADMIN_ONLY, serviceStateDoc.getRegistrationState());
- assertNotNull(adminWebClient.createAccount("shouldexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo"+System.currentTimeMillis() + "@example.com", "1234"));
- assertNull(basicWebClient.createAccount("shouldnotexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo"+System.currentTimeMillis() + "@example.com", "1234"));
- assertNull(guestWebClient.createAccount("shouldnotexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo"+System.currentTimeMillis() + "@example.com", "1234"));
+ assertNotNull(adminWebClient.createAccount("shouldexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo" + System.currentTimeMillis() + "@example.com", "1234"));
+ assertNull(basicWebClient.createAccount("shouldnotexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo" + System.currentTimeMillis() + "@example.com", "1234"));
+ assertNull(guestWebClient.createAccount("shouldnotexist" + System.currentTimeMillis(), AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, "foo" + System.currentTimeMillis() + "@example.com", "1234"));
String username = "testuser" + Math.abs(new Random().nextLong());
AccountDocument accountDoc = adminWebClient.createAccount(username, AccountDocument.ACCOUNT_LEVEL_BASIC, "Test", "Sims", null, username + "@example.com", "1234");
@@ -231,7 +233,7 @@
StreamUtils.discardInput(wire1.performGET(URI.create(emailValidationURL), null));
accountDoc = adminWebClient.getAccountDocument(username);
assertTrue(accountDoc.isEmailValid());
-
+
Date frozenDate = new Date(System.currentTimeMillis() + 1000000);
accountDoc.setFrozenUntil(frozenDate);
accountDoc.setAccountLevel(AccountDocument.ACCOUNT_LEVEL_ADMIN);
@@ -298,22 +300,22 @@
public boolean accept(File dir, String name) {
return name.startsWith("Mail-Message-");
}
-
+
});
File emailFile = null;
for (int i = 0; i < mailFiles.length; i++) {
- if(containsString(email, mailFiles[i])){
+ if (containsString(email, mailFiles[i])) {
emailFile = mailFiles[i];
break;
}
}
- if(emailFile == null){
+ if (emailFile == null) {
return null;
}
LineNumberReader input = new LineNumberReader(new FileReader(emailFile));
String line;
- while((line = input.readLine()) != null){
- if(line.startsWith("http://")){
+ while ((line = input.readLine()) != null) {
+ if (line.startsWith("http://")) {
return line.trim();
}
}
@@ -323,14 +325,14 @@
private boolean containsString(String target, File file) throws IOException {
LineNumberReader input = new LineNumberReader(new FileReader(file));
String line;
- while((line = input.readLine()) != null){
- if(line.indexOf(target) != -1){
+ while ((line = input.readLine()) != null) {
+ if (line.indexOf(target) != -1) {
return true;
}
}
return false;
}
-
+
public void testWebAPIClient() throws IOException {
SpaceClient spaceClient1 = null;
SpaceClient guestSpaceClient1 = null;
@@ -443,7 +445,7 @@
}
- public void testApplet() throws AuthenticationFailedException, IOException {
+ public void testApplet() throws AuthenticationFailedException, IOException, UnknownHostException {
WebAPIAuthenticator basicAuthenticator = new WebAPIAuthenticatorFactory().authenticate(wire1, descriptor1, USERNAME1, PASSWORD1);
assertNotNull("got null auth cookie", basicAuthenticator.getAuthCookie());
WebAPIClient basicWebClient = new WebAPIClient(descriptor1, basicAuthenticator, wire1);
@@ -477,11 +479,11 @@
assertEquals(basicAuthenticator.getAuthDocument(true).getUsername(), testWindow.applet.getUsername());
testWindow.cleanup();
testWindow.setVisible(false);
-
+
BodyAppletTestWindow bodyWindow = openBodyAppletTestWindow(basicAuthenticator);
bodyWindow.cleanup();
bodyWindow.setVisible(false);
-
+
basicWebClient.deleteSpace(spaceDocument.getSpaceID());
}
@@ -501,8 +503,10 @@
return bodyWindow;
}
- private AppletTestWindow openAppletTestWindow(SpaceDocument spaceDocument, WebAPIAuthenticator authenticator) {
- AppletTestWindow testWindow = new AppletTestWindow(descriptor1.getServiceURI(), spaceDocument.getSpaceID(), authenticator.getAuthCookie(), new Dimension(500, 500), true);
+ private AppletTestWindow openAppletTestWindow(SpaceDocument spaceDocument, WebAPIAuthenticator authenticator) throws UnknownHostException {
+
+ String serverIP = InetAddress.getByName(descriptor1.getServiceURI().getHost()).getHostAddress();
+ AppletTestWindow testWindow = new AppletTestWindow(descriptor1.getServiceURI(), spaceDocument.getSpaceID(), serverIP, authenticator.getAuthCookie(), new Dimension(500, 500), true);
testWindow.setVisible(true);
testWindow.start();
@@ -515,6 +519,7 @@
}
assertTrue(testWindow.applet.completedInitialLoad());
return testWindow;
+
}
private void checkThingScripting(WebAPIClient webClient, ThingDocument thingDocument, SpaceDocument spaceDocument) throws IOException {
@@ -1158,7 +1163,7 @@
public void receivedTellMessage(String username, String message) {
// TODO Auto-generated method stub
-
+
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-01-30 22:43:42
|
Revision: 698
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=698&view=rev
Author: trevorolio
Date: 2008-01-30 14:43:45 -0800 (Wed, 30 Jan 2008)
Log Message:
-----------
Added the requested IP number to the service doc so the applet can work against round robin dns clusters, on Windows, in Firefox. Also tweaked the renderer graphics config to indicate a lowest level of texture bit depth, which also has the nice side effect of making the card use higher bit depth if possible.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2008-01-30 22:43:10 UTC (rev 697)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2008-01-30 22:43:45 UTC (rev 698)
@@ -109,7 +109,7 @@
}
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements, AccountRecord authedAccount) throws PersistException, ServletException, IOException {
- ServiceDocument serviceDocument = new ServiceDocument(messageProxy.getUserCount(), messageProxy.getSimCount());
+ ServiceDocument serviceDocument = new ServiceDocument(messageProxy.getUserCount(), messageProxy.getSimCount(), request.getLocalAddr());
sendStringResponse(serviceDocument.toString(), "text/xml", response);
}
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2008-01-30 22:43:10 UTC (rev 697)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2008-01-30 22:43:45 UTC (rev 698)
@@ -631,6 +631,9 @@
}
// BEGIN SERVICE UTILS
+function requestService(listener){
+ new XMLRequestManager(appPath + "/space/", new BasicHTTPListener(listener)).send();
+}
function requestServiceState(listener){
new XMLRequestManager(appPath + "/space/state/", new BasicHTTPListener(listener)).send();
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js 2008-01-30 22:43:10 UTC (rev 697)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js 2008-01-30 22:43:45 UTC (rev 698)
@@ -89,12 +89,22 @@
spaceDiv.innerHTML = "No cookie. Please sign in or register as a guest.";
return;
}
+ requestService(handleService);
+}
+function handleService(serviceXML){
+ if(serviceXML == null){
+ spaceDiv.innerHTML = "There was an error and I could not talk to the server. Sorry.";
+ return;
+ }
+ var loginCookie = getLoginCookie();
+ var serverIP = serviceXML.getAttribute("serverip"); //we pass this in because Firefox and Applets on XP can resolve different IPs using load balanced DNS
var serviceURI = getServiceURI();
var html = "<applet id='viewer' archive='ogoglio-common.jar,ogoglio-viewer-applet.jar' codebase='" + serviceURI + "' code='com.ogoglio.viewer.applet.ViewerApplet' width='" + viewerWidth + "' height='" + viewerHeight + "' mayscript='true'>";
html += "<param name='loginCookie' value='" + loginCookie + "' />";
html += "<param name='serviceURI' value='" + serviceURI + "' />";
+ html += "<param name='serverIP' value='" + serverIP + "' />";
html += "<param name='spaceID' value='" + locationParameters['spaceID'] + "' />";
html += "<param name='image' value='" + appletLoadingImagePath + "' />";
if(viewerHelpMessage != null){
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ian...@us...> - 2008-01-26 01:18:45
|
Revision: 690
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=690&view=rev
Author: iansmith
Date: 2008-01-25 17:18:49 -0800 (Fri, 25 Jan 2008)
Log Message:
-----------
Added brief mode to the status servlet. Other load-management tools use this to get a machine readable version of status.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java 2008-01-23 03:18:47 UTC (rev 689)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java 2008-01-26 01:18:49 UTC (rev 690)
@@ -6,7 +6,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.net.URI;
import java.net.URL;
import java.sql.Time;
import java.util.ArrayList;
@@ -25,7 +24,6 @@
import com.ogoglio.persist.SimPersistTasks;
import com.ogoglio.persist.SimRecord;
import com.ogoglio.util.Log;
-import com.ogoglio.util.NetworkUtils;
import com.ogoglio.util.StreamUtils;
public class StatusServlet extends OgoglioServletBase {
@@ -196,6 +194,16 @@
response.setStatus(HttpServletResponse.SC_OK);
return;
}
+
+ if (request.getParameter("brief")!=null) {
+ StatusData sd=computeCurrentStatus();
+ addSpaceInfo(sd);
+ StringBuffer buffer=new StringBuffer();
+ buffer.append(""+sd.load_1min+","+sd.simCount+","+sd.userCount);
+ sendStringResponse(buffer.toString(), "text/plain", response);
+ response.setStatus(HttpServletResponse.SC_OK);
+ return;
+ }
try {
StatusData data = computeCurrentStatus();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|