|
From: <tre...@us...> - 2007-10-18 18:57:09
|
Revision: 510
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=510&view=rev
Author: trevorolio
Date: 2007-10-18 11:57:11 -0700 (Thu, 18 Oct 2007)
Log Message:
-----------
Two thirds of the way to sitting:
Added a "Sit Here" context menu item for things made from templates with seat metadata.
Bound the avatar renderable to the seat thing renderable's transform group (hello, flying sofa).
If an avatar moves or teleports while seated, it stands.
Tried to be somewhat good about progressive loading, showing standing avatars before things and then sitting avatars.
Not yet done:
Call the sit animation.
Add seat metadata UI to the template editor HTML.
Make a flying Le Corbusier sofa with info panel controls.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.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/J3DRenderer.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DThingRenderable.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
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-18 18:56:57 UTC (rev 509)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-10-18 18:57:11 UTC (rev 510)
@@ -104,8 +104,7 @@
//create the event channel and start queuing events
Object selector = AsyncProtoFactory.getDefaultInfo().getProxySpecificSelector();
- messageChannel = new TCPChannel(AsyncProtoFactory.getDefaultClient(serviceURI.getHost(), selector),
- messenger, true, new ChannelListener());
+ messageChannel = new TCPChannel(AsyncProtoFactory.getDefaultClient(serviceURI.getHost(), selector), messenger, true, new ChannelListener());
messenger.authenticate(authCookie);
long startWait = System.currentTimeMillis();
@@ -127,22 +126,6 @@
}
}
- //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++) {
- 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();
for (int i = 0; i < thingDocs.length; i++) {
Template template = space.getTemplate(thingDocs[i].getTemplateID());
@@ -175,6 +158,26 @@
}
+ //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++) {
+ 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());
+ Thing seatThing = null;
+ if (userDocs[i].getSeatThingID() != -1) {
+ seatThing = space.getThing(userDocs[i].getSeatThingID());
+ }
+ User user = new User(space, userDocs[i].getUsername(), userDocs[i].getTransform(), bodyConfig, seatThing);
+ bodyConfig.setUser(user);
+ space.addUser(user);
+ }
+
DoorDocument[] doorDocs = spaceDoc.getDoorDocuments();
for (int i = 0; i < doorDocs.length; i++) {
Template template = space.getTemplate(doorDocs[i].getTemplateID());
@@ -300,13 +303,26 @@
sendSpaceEvent(event);
}
+ public void userRequestedSeat(Thing seatThing) {
+ User user = space.getUser(accountDoc.getUsername());
+ if (user == null || user.getSeat() == seatThing) {
+ return;
+ }
+ user.setSeat(seatThing);
+
+ SpaceEvent event = new SpaceEvent(SpaceEvent.USER_SAT_EVENT);
+ event.setProperty(SpaceEvent.USERNAME, accountDoc.getUsername());
+ event.setProperty(SpaceEvent.THING_ID, new Long(seatThing.getThingID()));
+ sendSpaceEvent(event);
+ }
+
private void handleMessageFromService(Message message) {
if (message.getPayload() instanceof PayloadFactory.SpaceEventPayload) {
SpaceEvent event = ((PayloadFactory.SpaceEventPayload) message.getPayload()).getSpaceEvent();
if (SpaceEvent.ADD_USER_EVENT.equals(event.getName())) {
BodyConfigurationDocument bodyConfigDoc = event.getBodyConfigurationDocument();
BodyConfiguration bodyConfig = new BodyConfiguration(bodyConfigDoc);
- User user = new User(space, event.getStringProperty(SpaceEvent.USERNAME), event.getTransform(), bodyConfig);
+ User user = new User(space, event.getStringProperty(SpaceEvent.USERNAME), event.getTransform(), bodyConfig, null);
space.addUser(user);
} else if (SpaceEvent.REMOVE_USER_EVENT.equals(event.getName())) {
User user = space.getUser(event.getStringProperty(SpaceEvent.USERNAME));
@@ -473,6 +489,27 @@
}
user.stopMotion(event.getTransform());
+ } else if (SpaceEvent.USER_SAT_EVENT.equals(event.getName())) {
+ if (accountDoc.getUsername().equals(event.getStringProperty(SpaceEvent.USERNAME))) {
+ return;
+ }
+
+ User user = space.getUser(event.getStringProperty(SpaceEvent.USERNAME));
+ if (user == null) {
+ Log.error("Got a sit event for an unknown user: " + event.getStringProperty(SpaceEvent.USERNAME));
+ return;
+ }
+ Thing thing = space.getThing(event.getLongProperty(SpaceEvent.THING_ID).longValue());
+ if (thing == null) {
+ Log.error("Got a sit event for an unknown thing: " + user.getUsername() + ", " + event.getLongProperty(SpaceEvent.THING_ID));
+ return;
+ }
+ if (!thing.getTemplate().isASeat()) {
+ Log.error("Got a sit event for a thing which is not a seat: " + user.getUsername() + ", " + event.getLongProperty(SpaceEvent.THING_ID));
+ return;
+ }
+ user.setSeat(thing);
+
} else if (SpaceEvent.THING_START_MOTION_EVENT.equals(event.getName())) {
long thingID = event.getLongProperty(SpaceEvent.THING_ID).longValue();
Thing thing = space.getThing(thingID);
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2007-10-18 18:56:57 UTC (rev 509)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2007-10-18 18:57:11 UTC (rev 510)
@@ -42,9 +42,9 @@
private String ownerUsername = null;
private boolean displaySea = false;
-
+
private double seaLevel = 0;
-
+
private HashMap templates = new HashMap(); // Long templateIDs to Templates
private HashMap things = new HashMap(); // Long thingIDs to Things
@@ -62,7 +62,7 @@
this.spaceContext = spaceContext;
ArgumentUtils.assertNotNegative(spaceID);
this.spaceID = spaceID;
-
+
ArgumentUtils.assertNotNull(displayName);
this.displayName = displayName;
@@ -76,11 +76,11 @@
public boolean shouldDisplaySea() {
return displaySea;
}
-
+
public double getSeaLevel() {
return seaLevel;
}
-
+
private class ListenerList {
Vector list = new Vector();
@@ -114,20 +114,31 @@
Thing[] things = getThings();
Arrays.sort(things, new DistanceComparator());
-
+
if (things.length > 0) {
listener.thingAdded(things[0]);
}
User[] users = getUsers();
+
+ //We can't show seated users until after the things are loaded, but we should show as many as possible
for (int i = 0; i < users.length; i++) {
- listener.userAdded(users[i]);
+ if (users[i].getSeat() == null) {
+ listener.userAdded(users[i]);
+ }
}
for (int i = 1; i < things.length; i++) {
listener.thingAdded(things[i]);
}
+ //now show seated users
+ for (int i = 0; i < users.length; i++) {
+ if (users[i].getSeat() != null) {
+ listener.userAdded(users[i]);
+ }
+ }
+
Door[] doors = getDoors();
for (int i = 0; i < doors.length; i++) {
listener.doorAdded(doors[i]);
@@ -204,6 +215,10 @@
public void userAnimationStarted(User user, String animationName);
+ public void userSat(User user, Thing seatThing);
+
+ public void userStood(User user, Thing seat);
+
}
public interface Context {
@@ -497,4 +512,18 @@
public InputStream getPageContentStream(long thingID, long pageID) throws IOException {
return spaceContext.getPageContentStream(thingID, pageID);
}
+
+ public void notifyUserSat(User user, Thing seatThing) {
+ Listener[] listeners = listenerList.getListeners();
+ for (int i = 0; i < listeners.length; i++) {
+ listeners[i].userSat(user, seatThing);
+ }
+ }
+
+ public void notifyUserStood(User user, Thing seat) {
+ Listener[] listeners = listenerList.getListeners();
+ for (int i = 0; i < listeners.length; i++) {
+ listeners[i].userStood(user, seat);
+ }
+ }
}
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-18 18:56:57 UTC (rev 509)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/User.java 2007-10-18 18:57:11 UTC (rev 510)
@@ -31,8 +31,10 @@
private SplinePath path = null;
private BodyConfiguration bodyConfiguration = null;
-
- public User(Space space, String username, Transform3D position, BodyConfiguration bodyConfiguration) {
+
+ private Thing seatThing = null;
+
+ public User(Space space, String username, Transform3D position, BodyConfiguration bodyConfiguration, Thing seatThing) {
ArgumentUtils.assertNotNull(space);
this.space = space;
ArgumentUtils.assertNotNull(username);
@@ -42,16 +44,18 @@
ArgumentUtils.assertNotNull(bodyConfiguration);
this.bodyConfiguration = bodyConfiguration;
bodyConfiguration.setUser(this);
+ this.seatThing = seatThing;
}
public void startMotion(SplinePath path) {
- //TODO make the model reflect the ongoing movement along the path (by listening to the renderer's motion calcs?)
+ setSeat(null);
this.path = path;
this.pathStarted = System.currentTimeMillis();
space.notifyUserMotionStarted(this, path);
}
public void stopMotion(Transform3D position) {
+ setSeat(null);
this.path = null;
this.pathStarted = -1;
space.notifyUserMotionStopped(this, position);
@@ -61,10 +65,10 @@
space.notifyUserAnimationStarted(this, animationName);
}
- public BodyConfiguration getBodyConfiguration(){
+ public BodyConfiguration getBodyConfiguration() {
return bodyConfiguration;
}
-
+
public String toString() {
return "User: " + username;
}
@@ -80,7 +84,7 @@
public String getUsername() {
return username;
}
-
+
public void setPosition(Transform3D newPosition) {
position.set(newPosition);
}
@@ -88,10 +92,27 @@
public SplinePath getSplinePath() {
SplinePath path = this.path;
long pathStarted = this.pathStarted;
- if(path == null || (!path.isLooping() && pathStarted < System.currentTimeMillis() - path.getDuration())) {
+ if (path == null || (!path.isLooping() && pathStarted < System.currentTimeMillis() - path.getDuration())) {
return null;
}
return path;
}
+ public Thing getSeat() {
+ return seatThing;
+ }
+
+ public void setSeat(Thing seatThing) {
+ if(this.seatThing == seatThing){
+ return;
+ }
+
+ Thing oldSeat = this.seatThing;
+ this.seatThing = seatThing;
+ if (seatThing == null) {
+ space.notifyUserStood(this, oldSeat);
+ } else {
+ space.notifyUserSat(this, seatThing);
+ }
+ }
}
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-18 18:56:57 UTC (rev 509)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-18 18:57:11 UTC (rev 510)
@@ -389,11 +389,23 @@
return;
}
try {
- UserRenderable renderable = createUserRenderable(user);
- if(rendererStopped){
+ J3DUserRenderable renderable = (J3DUserRenderable) createUserRenderable(user);
+ if (rendererStopped) {
return;
}
- addUserRenderable(renderable);
+
+ Thing seat = user.getSeat();
+ if (seat != null) {
+ J3DThingRenderable thingRenderable = (J3DThingRenderable)getThingRenderable(seat.getThingID());
+ if(thingRenderable == null){
+ Log.error("Error: tried to add a user sitting on an unknown thing: " + seat);
+ return;
+ }
+ thingRenderable.addSitter(renderable);
+ return;
+ }
+
+ usersGroup.addChild(renderable);
SplinePath path = user.getSplinePath();
if (path != null) {
userMotionStarted(user, path);
@@ -428,6 +440,38 @@
renderable.stopAnimation();
}
+ public void userSat(User user, Thing seatThing) {
+ if (rendererStopped) {
+ return;
+ }
+ J3DUserRenderable userRenderable = (J3DUserRenderable) getUserRenderable(user.getUsername());
+ if (userRenderable == null) { //haven't loaded the user renderable
+ return;
+ }
+ J3DThingRenderable thingRenderable = (J3DThingRenderable) getThingRenderable(seatThing.getThingID());
+ if (thingRenderable == null) { //haven't loaded the thing renderable
+ return;
+ }
+ usersGroup.removeChild(userRenderable);
+ thingRenderable.addSitter(userRenderable);
+ }
+
+ public void userStood(User user, Thing oldSeat) {
+ if (rendererStopped) {
+ return;
+ }
+ J3DUserRenderable userRenderable = (J3DUserRenderable) getUserRenderable(user.getUsername());
+ if (userRenderable == null) { //haven't loaded the user renderable
+ return;
+ }
+ J3DThingRenderable thingRenderable = (J3DThingRenderable) getThingRenderable(oldSeat.getThingID());
+ if (thingRenderable == null) { //haven't loaded the thing renderable
+ return;
+ }
+ thingRenderable.removeSitter(userRenderable);
+ usersGroup.addChild(userRenderable);
+ }
+
public void userAnimationStarted(User user, String animationName) {
if (rendererStopped) {
return;
@@ -552,24 +596,6 @@
return null;
}
- private void addUserRenderable(UserRenderable group) {
- usersGroup.addChild((J3DUserRenderable) group);
- }
-
- /*
- private UserRenderable[] getUserRenderables() {
- Vector results = new Vector();
- Enumeration children = usersGroup.getAllChildren();
- while (children.hasMoreElements()) {
- Node child = (Node) children.nextElement();
- if (child instanceof J3DUserRenderable) {
- results.add(child);
- }
- }
- return (UserRenderable[]) results.toArray(new UserRenderable[0]);
- }
- */
-
private void removeUserRenderable(UserRenderable renderable) {
if (renderable == null) {
Log.error("User renderable == null");
@@ -591,6 +617,18 @@
}
}
}
+ children = worldGroup.getAllChildren();
+ J3DUserRenderable result = null;
+ while(children.hasMoreElements()){
+ Node node = (Node) children.nextElement();
+ if (node instanceof J3DThingRenderable) {
+ J3DThingRenderable group = (J3DThingRenderable) node;
+ result = group.getSitter(username);
+ if(result != null){
+ return result;
+ }
+ }
+ }
return null;
}
@@ -619,15 +657,15 @@
private UserRenderable createUserRenderable(User user) throws IOException, RenderableParseException {
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)
+ if (rendererStopped) { //this happens sometimes when someone logs in and then a space is cleaned up (usually during testing)
return null;
}
- if(bodyData == null){
+ if (bodyData == null) {
throw new IllegalStateException("Cannot load body data");
}
BufferedImage 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());
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DThingRenderable.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DThingRenderable.java 2007-10-18 18:56:57 UTC (rev 509)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DThingRenderable.java 2007-10-18 18:57:11 UTC (rev 510)
@@ -24,7 +24,9 @@
import javax.media.j3d.Switch;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
+import javax.vecmath.Point3d;
import javax.vecmath.Point3f;
+import javax.vecmath.Vector3d;
import com.ogoglio.client.model.Thing;
import com.ogoglio.viewer.render.ThingRenderable;
@@ -145,4 +147,33 @@
return null;
}
+ public void addSitter(J3DUserRenderable userRenderable) {
+ transformGroup.addChild(userRenderable);
+ Transform3D seatTransform = new Transform3D();
+ seatTransform.setRotation(thing.getTemplate().getSeatRotation());
+ Point3d position = thing.getTemplate().getSeatPosition();
+ seatTransform.setTranslation(new Vector3d(position.x, position.y, position.z));
+ userRenderable.setPosition(seatTransform);
+ }
+
+ public void removeSitter(J3DUserRenderable userRenderable) {
+ transformGroup.removeChild(userRenderable);
+ Transform3D thingTransform = new Transform3D();
+ transformGroup.getTransform(thingTransform);
+ userRenderable.setPosition(thingTransform);
+ }
+
+ public J3DUserRenderable getSitter(String username) {
+ Enumeration children = transformGroup.getAllChildren();
+ while(children.hasMoreElements()){
+ Node node = (Node) children.nextElement();
+ if (node instanceof J3DUserRenderable) {
+ J3DUserRenderable userRenderable = (J3DUserRenderable)node;
+ if(userRenderable.getUser().getUsername().equals(username)){
+ return userRenderable;
+ }
+ }
+ }
+ return null;
+ }
}
\ No newline at end of file
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-18 18:56:57 UTC (rev 509)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java 2007-10-18 18:57:11 UTC (rev 510)
@@ -218,10 +218,12 @@
public static final String THING_CONTEXT_SELECTION_MADE_EVENT = "contextMenuItemChosen";
- public static final String SHOW_INFO_PANEL_EVENT = "ShowInfoPanelEvent";
+ public static final String SHOW_INFO_PANEL_EVENT = "ShowInfoPanel";
public static final String INFO_PANEL_NONCE = "infoPanelNonce";
+ public static final String USER_SAT_EVENT = "UserSat";
+
private String name = null;
private HashMap properties = new HashMap();
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-18 18:56:57 UTC (rev 509)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/UserDocument.java 2007-10-18 18:57:11 UTC (rev 510)
@@ -28,17 +28,20 @@
public static final String BODY_CONFIGURATION_ID = "bodyconfigurationid";
+ public static final String SEAT_THING_ID = "seatthingid";
+
public UserDocument(User user) {
- this(user.getUsername(), user.getPosition(), user.getSplinePath(), user.getBodyConfiguration().getBodyConfigurationID());
+ this(user.getUsername(), user.getPosition(), user.getSplinePath(), user.getBodyConfiguration().getBodyConfigurationID(), user.getSeat() == null ? -1 : user.getSeat().getThingID());
}
- public UserDocument(String username, Transform3D transform, SplinePath splinePath, long bodyConfigurationID) {
+ public UserDocument(String username, Transform3D transform, SplinePath splinePath, long bodyConfigurationID, long seatThingID) {
super(NAME, transform, splinePath);
ArgumentUtils.assertNotNull(username);
getData().setAttribute(USERNAME, username);
if (bodyConfigurationID >= 0) {
getData().setAttribute(BODY_CONFIGURATION_ID, bodyConfigurationID);
}
+ getData().setAttribute(SEAT_THING_ID, seatThingID);
}
public UserDocument(XMLElement data) {
@@ -56,4 +59,8 @@
public long getBodyConfigurationID() {
return getData().getLongAttribute(BODY_CONFIGURATION_ID);
}
+
+ public long getSeatThingID(){
+ return getData().getLongAttribute(SEAT_THING_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-18 18:56:57 UTC (rev 509)
+++ maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java 2007-10-18 18:57:11 UTC (rev 510)
@@ -189,13 +189,15 @@
assertEquals(0, shapeMove1.getSplinePath().getSplineKeyFrames()[1].getKnot(), keyFrames[1].getKnot());
assertEquals(shapeMove1.getShapeName(), "a_shape");
- UserDocument userDoc = new UserDocument(username, new Transform3D(), null, 23);
+ UserDocument userDoc = new UserDocument(username, new Transform3D(), null, 23, 24);
assertEquals(username, userDoc.getUsername());
assertEquals(23, userDoc.getBodyConfigurationID());
+ assertEquals(24, userDoc.getSeatThingID());
userDoc = new UserDocument(XMLElement.parseElementFromString(userDoc.toString()));
assertEquals(username, userDoc.getUsername());
assertEquals(23, userDoc.getBodyConfigurationID());
+ assertEquals(24, userDoc.getSeatThingID());
DoorDocument door1 = new DoorDocument(1, displayName, 2, "susan", uri1, new Transform3D());
assertEquals(1, door1.getDoorID());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|