|
From: <tre...@us...> - 2007-10-04 06:30:35
|
Revision: 474
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=474&view=rev
Author: trevorolio
Date: 2007-10-03 23:30:38 -0700 (Wed, 03 Oct 2007)
Log Message:
-----------
Though there's no UI to set them, body rendering now respects body configuration for morphs.
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/WebAPIDescriptor.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyDataProvider.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/User.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataCache.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/SkinLoader.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/UserDocument.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/BodyConfiguration.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 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -23,6 +23,7 @@
import javax.media.j3d.Transform3D;
import javax.vecmath.Point3d;
+import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.client.model.BodyDataProvider;
import com.ogoglio.client.model.Door;
import com.ogoglio.client.model.Page;
@@ -40,7 +41,10 @@
import com.ogoglio.message.TCPChannel;
import com.ogoglio.util.ArgumentUtils;
import com.ogoglio.util.Log;
+import com.ogoglio.util.WebConstants;
import com.ogoglio.xml.AccountDocument;
+import com.ogoglio.xml.BodyConfigurationDocument;
+import com.ogoglio.xml.BodyDataDocument;
import com.ogoglio.xml.DoorDocument;
import com.ogoglio.xml.PageDocument;
import com.ogoglio.xml.ShapeDocument;
@@ -125,7 +129,17 @@
//can't use spaceDoc list of users because it doesn't include the user that just authed (me!)
UserDocument[] userDocs = webClient.getUserDocuments(spaceID);
for (int i = 0; i < userDocs.length; i++) {
- space.addUser(new User(space, userDocs[i].getUsername(), userDocs[i].getTransform()));
+ BodyConfigurationDocument bodyConfDoc = null;
+ if (userDocs[i].getUsername().startsWith(WebConstants.GUEST_COOKIE_PREFIX)) {
+ System.out.println("Need to handle guest bodies correctly");
+ bodyConfDoc = new BodyConfigurationDocument(0, userDocs[i].getUsername(), "Body", 1);
+ } else {
+ bodyConfDoc = webClient.getBodyConfiguration(userDocs[i].getUsername(), userDocs[i].getBodyConfigurationID());
+ }
+ BodyConfiguration bodyConfig = new BodyConfiguration(bodyConfDoc.getBodyConfigurationID(), bodyConfDoc.getDisplayName(), bodyConfDoc.getBodyDataID());
+ User user = new User(space, userDocs[i].getUsername(), userDocs[i].getTransform(), bodyConfig);
+ bodyConfig.setUser(user);
+ space.addUser(user);
}
ThingDocument[] thingDocs = spaceDoc.getThingDocuments();
@@ -289,7 +303,9 @@
if (message.getPayload() instanceof PayloadFactory.SpaceEventPayload) {
SpaceEvent event = ((PayloadFactory.SpaceEventPayload) message.getPayload()).getSpaceEvent();
if (SpaceEvent.ADD_USER_EVENT.equals(event.getName())) {
- User user = new User(space, event.getStringProperty(SpaceEvent.USERNAME), event.getTransform());
+ BodyConfigurationDocument bodyConfigDoc = event.getBodyConfigurationDocument();
+ BodyConfiguration bodyConfig = new BodyConfiguration(bodyConfigDoc);
+ User user = new User(space, event.getStringProperty(SpaceEvent.USERNAME), event.getTransform(), bodyConfig);
space.addUser(user);
} else if (SpaceEvent.REMOVE_USER_EVENT.equals(event.getName())) {
User user = space.getUser(event.getStringProperty(SpaceEvent.USERNAME));
@@ -701,11 +717,12 @@
private class NetworkBodyDataProvider implements BodyDataProvider {
- public ZipInputStream getBodyData(String bodyName) {
+ public ZipInputStream getBodyData(long bodyDataID) {
try {
- return webClient.getBodyData(bodyName);
+ BodyDataDocument dataDoc = webClient.getBodyDataDocument(bodyDataID);
+ return webClient.getBodyData(dataDoc.getFileName());
} catch (IOException e) {
- Log.warn("Requested an unknown body: " + bodyName);
+ Log.warn("Requested an unknown body: " + bodyDataID);
return null;
}
}
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 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -479,8 +479,8 @@
wire.sendDelete(descriptor.getBodyDataDocumentURI(bodyDataID), authenticator.getAuthCookie());
}
- public ZipInputStream getBodyData(String bodyName) throws IOException {
- InputStream stream = wire.fetchAuthenticatedStream(descriptor.getBodyDataURI(bodyName), authenticator.getAuthCookie());
+ public ZipInputStream getBodyData(String fileName) throws IOException {
+ InputStream stream = wire.fetchAuthenticatedStream(descriptor.getBodyDataURI(fileName), authenticator.getAuthCookie());
if (stream == null) {
return null;
}
@@ -528,4 +528,8 @@
public WebAPIClientWire getWire() {
return wire;
}
+
+ public BodyConfigurationDocument getDefaultBodyConfiguration(String username) throws IOException {
+ return new BodyConfigurationDocument(wire.fetchAuthenticatedXML(descriptor.getDefaultBodyConfiguration(username), authenticator.getAuthCookie()));
+ }
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -123,8 +123,8 @@
return WebAPIUtil.appendToURI(getBodiesURI(), bodyDataID + "/");
}
- public URI getBodyDataURI(String bodyName) {
- return WebAPIUtil.appendToURI(serviceURI, "ogoglio-body-" + bodyName + ".jar");
+ public URI getBodyDataURI(String fileName) {
+ return WebAPIUtil.appendToURI(serviceURI, fileName);
}
public URI getBodyConfigurationsURI(String username) {
@@ -135,6 +135,10 @@
return WebAPIUtil.appendToURI(getBodyConfigurationsURI(username), bodyConfigurationID + "/");
}
+ public URI getDefaultBodyConfiguration(String username) {
+ return WebAPIUtil.appendToURI(getBodyConfigurationsURI(username), "default/");
+ }
+
public URI getPagesURI(long spaceID, long thingID) {
return WebAPIUtil.appendToURI(getThingURI(spaceID, thingID), "page/");
}
Added: 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 (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -0,0 +1,82 @@
+package com.ogoglio.client.model;
+
+import java.util.HashMap;
+
+import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.xml.BodyConfigurationDocument;
+import com.ogoglio.xml.BodySettingDocument;
+
+public class BodyConfiguration {
+
+ private User user = null;
+
+ private long bodyConfigurationID = -1;
+
+ private String displayName = null;
+
+ private long bodyDataID = -1;
+
+ private HashMap settings = new HashMap();
+
+ public BodyConfiguration(BodyConfigurationDocument configDoc){
+ this(configDoc.getBodyConfigurationID(), configDoc.getDisplayName(), configDoc.getBodyDataID());
+ BodySettingDocument[] settingDocs = configDoc.getBodySettingDocuments();
+ for (int i = 0; i < settingDocs.length; i++) {
+ addSetting(settingDocs[i].getSettingName(), settingDocs[i].getSetting());
+ }
+ }
+
+ public BodyConfiguration(long bodyConfigurationID, String displayName, long bodyDataID){
+ ArgumentUtils.assertNotNegative(bodyConfigurationID);
+ this.bodyConfigurationID = bodyConfigurationID;
+ ArgumentUtils.assertNotEmpty(displayName);
+ this.displayName = displayName;
+ ArgumentUtils.assertNotNegative(bodyDataID);
+ this.bodyDataID = bodyDataID;
+ }
+
+ public void setUser(User user){
+ ArgumentUtils.assertNotNull(user);
+ this.user = user;
+ }
+
+ public void addSetting(String settingName, float setting){
+ ArgumentUtils.assertNotEmpty(settingName);
+ if(setting < 0){
+ setting = 0;
+ }
+ if(setting > 1){
+ setting = 1;
+ }
+ settings.put(settingName, new Float(setting));
+ }
+
+ public void removeSetting(String settingName){
+ settings.remove(settingName);
+ }
+
+ public float getSetting(String settingName){
+ Float setting = (Float)settings.get(settingName);
+ if(setting == null){
+ return 0;
+ }
+ return setting.floatValue();
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public long getBodyConfigurationID() {
+ return bodyConfigurationID;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public long getBodyDataID() {
+ return bodyDataID;
+ }
+
+}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyDataProvider.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyDataProvider.java 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyDataProvider.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -4,6 +4,6 @@
public interface BodyDataProvider {
- public ZipInputStream getBodyData(String bodyName);
+ public ZipInputStream getBodyData(long bodyDataID);
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/User.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/User.java 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/User.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -14,8 +14,6 @@
package com.ogoglio.client.model;
-import java.io.IOException;
-
import javax.media.j3d.Transform3D;
import com.ogoglio.util.ArgumentUtils;
@@ -32,13 +30,17 @@
private SplinePath path = null;
- public User(Space space, String username, Transform3D position) {
+ private BodyConfiguration bodyConfiguration = null;
+
+ public User(Space space, String username, Transform3D position, BodyConfiguration bodyConfiguration) {
ArgumentUtils.assertNotNull(space);
this.space = space;
ArgumentUtils.assertNotNull(username);
this.username = username;
ArgumentUtils.assertNotNull(position);
this.position = position;
+ ArgumentUtils.assertNotNull(bodyConfiguration);
+ this.bodyConfiguration = bodyConfiguration;
}
public void startMotion(SplinePath path) {
@@ -58,6 +60,10 @@
space.notifyUserAnimationStarted(this, animationName);
}
+ public BodyConfiguration getBodyConfiguration(){
+ return bodyConfiguration;
+ }
+
public String toString() {
return "User: " + username;
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataCache.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataCache.java 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataCache.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -17,7 +17,7 @@
public class J3DDataCache {
- private HashMap bodyDataMap = new HashMap(); //maps body names to J3DBodyData objects
+ private HashMap bodyDataMap = new HashMap(); //maps body IDs to J3DBodyData objects
private HashMap templateDataMap = new HashMap(); //maps template guid to J3DTemplateData objects
@@ -25,12 +25,12 @@
return (J3DTemplateData) templateDataMap.get(createTemplateGUID(templateID, lod));
}
- public void putBodyData(String bodyName, J3DBodyData data){
- bodyDataMap.put(bodyName, data);
+ public void putBodyData(long bodyDataID, J3DBodyData data){
+ bodyDataMap.put(new Long(bodyDataID), data);
}
- public J3DBodyData getBodyData(String bodyName){
- return (J3DBodyData)bodyDataMap.get(bodyName);
+ public J3DBodyData getBodyData(long bodyDataID){
+ return (J3DBodyData)bodyDataMap.get(new Long(bodyDataID));
}
public void putTemplateData(long templateID, int lod, J3DTemplateData entry) {
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 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -89,13 +89,13 @@
this.bodyDataProvider = bodyDataProvider;
}
- public J3DBodyData getBodyData(String bodyName) {
- J3DBodyData data = dataCache.getBodyData(bodyName);
+ public J3DBodyData getBodyData(long bodyDataID) {
+ J3DBodyData data = dataCache.getBodyData(bodyDataID);
if (data != null) {
return data;
}
- ZipInputStream bodyDataInput = bodyDataProvider.getBodyData(bodyName);
+ ZipInputStream bodyDataInput = bodyDataProvider.getBodyData(bodyDataID);
if (bodyDataInput == null) {
throw new IllegalStateException("Trevor didn't implement an error body for an unknown body name");
}
@@ -104,8 +104,8 @@
if (bodyData == null) {
throw new IllegalStateException("Trevor didn't implement an error body for an illegible body");
}
- System.out.println("Morph count: " + bodyData.getMorphDeltaMaps().length);
- dataCache.putBodyData(bodyName, bodyData);
+
+ dataCache.putBodyData(bodyDataID, bodyData);
return bodyData;
}
@@ -510,11 +510,9 @@
Log.error("Error parsing obj: " + e);
}
if (!gotObj) {
- System.err.println("didn't get obj for template " + templateID);
try {
ObjParser parser = new ObjParser(UIConstants.getResource("templates/loading.obj"));
objs[0] = parser.parse();
- System.err.println("Set error obj");
} catch (Exception e) {
e.printStackTrace();
}
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 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -38,6 +38,7 @@
import com.ogoglio.client.SpaceClient;
import com.ogoglio.client.UserInputListener;
+import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.client.model.BodyDataProvider;
import com.ogoglio.client.model.Door;
import com.ogoglio.client.model.Page;
@@ -615,14 +616,15 @@
}
private UserRenderable createUserRenderable(User user) throws IOException, RenderableParseException {
- J3DBodyData bodyData = dataManager.getBodyData("mike");
+ BodyConfiguration bodyConfig = user.getBodyConfiguration();
+ J3DBodyData bodyData = dataManager.getBodyData(bodyConfig.getBodyDataID());
+ if(rendererStopped){ //this happens sometimes when someone logs in and then a space is cleaned up (usually during testing)
+ return null;
+ }
if(bodyData == null){
throw new IllegalStateException("Cannot load body data");
}
- if(rendererStopped){ //this happens sometimes when someone logs in and then a space is cleaned up (usually during testing)
- return null;
- }
- System.out.println("Trevor needs to allow bodyData other than mike");
+
boolean isLocalUser = !offScreen && username != null && user.getUsername().equals(username);
final J3DUserRenderable renderable = new J3DUserRenderable(user, bodyData);
renderable.setID(USER_ID_PREFIX + user.getUsername());
@@ -750,10 +752,8 @@
public double getLandHeight(double x, double z, double pickHeight) {
pickStart.set(x, pickHeight, z);
if (picker.pickRayClosest(pickStart, DOWN_VEC, intersectionPoint) == null) {
- //System.out.println("no land height: 0!");
return 0;
}
- //System.out.println("intersected with land: "+intersectionPoint.y);
return intersectionPoint.y;
}
}
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 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -92,7 +92,7 @@
private void initBody() {
bodyGroup.removeAllChildren();
- skin = new SkinLoader(bodyData).generateSkin();
+ skin = new SkinLoader(bodyData, user.getBodyConfiguration()).generateSkin();
userHeight = skin.getHeight();
skinMap = bodyData.getSkinMap();
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 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/SkinLoader.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -19,6 +19,7 @@
import javax.media.j3d.GeometryArray;
import javax.vecmath.Vector3f;
+import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.viewer.j3d.J3DBodyData;
public class SkinLoader {
@@ -29,25 +30,32 @@
private BufferedImage baseImage;
+ private BodyConfiguration bodyConfiguration = null;
+
private MorphDeltaMap[] morphDeltaMaps = null;
- public SkinLoader(J3DBodyData bodyData) {
+ public SkinLoader(J3DBodyData bodyData, BodyConfiguration bodyConfiguration) {
this.geometry = bodyData.cloneBodyGeometry();
this.morphDeltaMaps = bodyData.getMorphDeltaMaps();
this.baseImage = bodyData.getBaseTexture();
+ this.bodyConfiguration = bodyConfiguration;
}
public Skin generateSkin() {
float[] vertices = geometry.getCoordRefFloat();
for (int i = 0; i < morphDeltaMaps.length; i++) {
+ float setting = bodyConfiguration.getSetting(morphDeltaMaps[i].getName());
+ if(setting <= 0.0001){
+ continue;
+ }
MorphDeltaMap.Range[] ranges = morphDeltaMaps[i].getRanges();
for (int r = 0; r < ranges.length; r++) {
Vector3f[] deltas = ranges[r].getDeltas();
for (int d = 0; d < deltas.length; d++) {
int index = (ranges[r].getLower() - 1 + d) * 3;
- vertices[index] = vertices[index] + deltas[d].x;
- vertices[index + 1] = vertices[index + 1] + deltas[d].y;
- vertices[index + 2] = vertices[index + 2] + deltas[d].z;
+ vertices[index] = vertices[index] + (deltas[d].x * setting);
+ vertices[index + 1] = vertices[index + 1] + (deltas[d].y * setting);
+ vertices[index + 2] = vertices[index + 2] + (deltas[d].z * setting);
}
}
}
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 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -33,7 +33,7 @@
public BodyConfigurationDocument(long bodyConfigurationID, String ownerUsername, String displayName, long bodyDataID) {
data = new XMLElement(NAME);
- data.setAttribute(BODY_CONFIGURATION_ID, bodyDataID);
+ data.setAttribute(BODY_CONFIGURATION_ID, bodyConfigurationID);
ArgumentUtils.assertNotEmpty(ownerUsername);
data.setAttribute(OWNER_USERNAME, ownerUsername);
ArgumentUtils.assertNotNull(displayName);
@@ -62,7 +62,7 @@
}
public long getBodyDataID(){
- return data.getLongAttribute(BODY_CONFIGURATION_ID);
+ return data.getLongAttribute(BODY_DATA_ID);
}
public void addBodySetting(String settingName, float setting) {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -25,6 +25,7 @@
import nanoxml.XMLElement;
+import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.client.model.SplinePath;
import com.ogoglio.util.ContextMenuItemInfo;
import com.ogoglio.viewer.j3d.J3DSplinePath;
@@ -81,7 +82,7 @@
public static final String USERNAME = "userID";
- public static final String BODY_ID = "bodyID";
+ public static final String BODY_CONFIGURATION_ID = "bodyConfigurationID";
public static final String THING_ID = "thingID";
@@ -227,6 +228,8 @@
private SplinePath splinePath = null;
+ private BodyConfigurationDocument bodyConfigDoc = null;
+
private String html = null;
private Vector contextMenu = new Vector();
@@ -264,6 +267,11 @@
splinePath = new SplinePathDocument(splinePathElement).getSplinePath();
}
+ XMLElement bodyConfigElement = element.getChild(BodyConfigurationDocument.NAME);
+ if (bodyConfigElement != null) {
+ bodyConfigDoc = new BodyConfigurationDocument(bodyConfigElement);
+ }
+
XMLElement htmlElement = element.getChild(HtmlElement.NAME);
if (htmlElement != null) {
HtmlElement ele = new HtmlElement(htmlElement);
@@ -354,7 +362,7 @@
String[] keys = getKeys();
for (int i = 0; i < keys.length; i++) {
Object value = properties.get(keys[i]);
- if(value == null){
+ if (value == null) {
continue;
}
XMLElement property = new XMLElement(PROPERTY);
@@ -384,12 +392,17 @@
element.addChild(new SplinePathDocument((J3DSplinePath) splinePath).toElement());
}
+ if (bodyConfigDoc != null) {
+ element.addChild(bodyConfigDoc.toElement());
+ }
+
if (html != null) {
element.addChild(new HtmlElement(html).toElement());
}
- if (contextMenu!=null) {
- for (int i=0; i<contextMenu.size();++i) {
- ContextMenuItemInfo info=(ContextMenuItemInfo)contextMenu.get(i);
+
+ if (contextMenu != null) {
+ for (int i = 0; i < contextMenu.size(); ++i) {
+ ContextMenuItemInfo info = (ContextMenuItemInfo) contextMenu.get(i);
XMLElement item = new XMLElement();
item.setName(CONTEXT_MENU_DATA_ITEM);
item.setAttribute(CONTEXT_MENU_DATA_ITEM_TEXT, info.getUserVisibleString());
@@ -437,6 +450,10 @@
return splinePath;
}
+ public BodyConfigurationDocument getBodyConfigurationDocument(){
+ return bodyConfigDoc;
+ }
+
public void setSplinePath(SplinePath path) {
this.splinePath = path;
}
@@ -480,4 +497,8 @@
public String toString() {
return toElement().toString();
}
+
+ public void setBodyConfigurationDocument(BodyConfigurationDocument bodyConfigurationDocument) {
+ bodyConfigDoc = bodyConfigurationDocument;
+ }
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/UserDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/UserDocument.java 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/UserDocument.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -26,14 +26,19 @@
public static final String USERNAME = "username";
+ public static final String BODY_CONFIGURATION_ID = "bodyconfigurationid";
+
public UserDocument(User user) {
- this(user.getUsername(), user.getPosition(), user.getSplinePath());
+ this(user.getUsername(), user.getPosition(), user.getSplinePath(), user.getBodyConfiguration().getBodyConfigurationID());
}
- public UserDocument(String username, Transform3D transform, SplinePath splinePath) {
+ public UserDocument(String username, Transform3D transform, SplinePath splinePath, long bodyConfigurationID) {
super(NAME, transform, splinePath);
ArgumentUtils.assertNotNull(username);
getData().setAttribute(USERNAME, username);
+ if (bodyConfigurationID >= 0) {
+ getData().setAttribute(BODY_CONFIGURATION_ID, bodyConfigurationID);
+ }
}
public UserDocument(XMLElement data) {
@@ -47,4 +52,8 @@
public String getUsername() {
return getData().getStringAttribute(USERNAME);
}
+
+ public long getBodyConfigurationID() {
+ return getData().getLongAttribute(BODY_CONFIGURATION_ID);
+ }
}
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 2007-10-03 16:22:31 UTC (rev 473)
+++ maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java 2007-10-04 06:30:38 UTC (rev 474)
@@ -189,12 +189,14 @@
assertEquals(0, shapeMove1.getSplinePath().getSplineKeyFrames()[1].getKnot(), keyFrames[1].getKnot());
assertEquals(shapeMove1.getShapeName(), "a_shape");
- UserDocument userDoc = new UserDocument(username, new Transform3D(), null);
+ UserDocument userDoc = new UserDocument(username, new Transform3D(), null, 23);
assertEquals(username, userDoc.getUsername());
-
+ assertEquals(23, userDoc.getBodyConfigurationID());
+
userDoc = new UserDocument(XMLElement.parseElementFromString(userDoc.toString()));
assertEquals(username, userDoc.getUsername());
-
+ assertEquals(23, userDoc.getBodyConfigurationID());
+
DoorDocument door1 = new DoorDocument(1, displayName, 2, "susan", uri1, new Transform3D());
assertEquals(1, door1.getDoorID());
assertEquals(2, door1.getTemplateID());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|