|
From: <tre...@us...> - 2007-10-19 17:15:36
|
Revision: 518
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=518&view=rev
Author: trevorolio
Date: 2007-10-19 10:15:31 -0700 (Fri, 19 Oct 2007)
Log Message:
-----------
Sitting framework pretty much done for now, though the avatars need better animations and a fix for Mike's baggy butt when sitting.
Added seat metadata editing to templateEditor.html
Handled the cases of a thing or user involved in a sit being reloaded or removed from a space.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.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
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-19 17:15:26 UTC (rev 517)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2007-10-19 17:15:31 UTC (rev 518)
@@ -381,6 +381,12 @@
public void removeThing(Thing thing) {
synchronized (this) {
+ User[] users = getUsers();
+ for (int i = 0; i < users.length; i++) {
+ if(users[i].getSeat() == thing){
+ users[i].setSeat(null);
+ }
+ }
if (things.remove(new Long(thing.getThingID())) == null) {
return;
}
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-19 17:15:26 UTC (rev 517)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-19 17:15:31 UTC (rev 518)
@@ -347,6 +347,10 @@
}
try {
J3DThingRenderable renderable = (J3DThingRenderable) getThingRenderable(thing.getThingID());
+ if (renderable.getSitters().length > 0) {
+ System.err.println("Cannot reload things which have avatars seated upon them.");
+ return;
+ }
if (renderable != null) {
physicsBehavior.stopRenderableMotion(renderable);
J3DShapeRenderable[] shapeRenderables = renderable.getShapeRenderables();
@@ -396,8 +400,8 @@
Thing seat = user.getSeat();
if (seat != null) {
- J3DThingRenderable thingRenderable = (J3DThingRenderable)getThingRenderable(seat.getThingID());
- if(thingRenderable == 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;
}
@@ -469,7 +473,7 @@
J3DThingRenderable thingRenderable = (J3DThingRenderable) getThingRenderable(oldSeat.getThingID());
if (thingRenderable == null) { //haven't loaded the thing renderable
return;
- }
+ }
thingRenderable.removeSitter(userRenderable);
usersGroup.addChild(userRenderable);
}
@@ -604,7 +608,12 @@
return;
}
physicsBehavior.stopRenderableMotion(renderable);
- usersGroup.removeChild((J3DUserRenderable) renderable);
+ if (renderable.getUser().getSeat() == null) {
+ usersGroup.removeChild((J3DUserRenderable) renderable);
+ } else {
+ J3DThingRenderable thingRenderable = (J3DThingRenderable)getThingRenderable(renderable.getUser().getSeat().getThingID());
+ thingRenderable.removeSitter((J3DUserRenderable)renderable);
+ }
((J3DUserRenderable) renderable).cleanup();
}
@@ -621,12 +630,12 @@
}
children = worldGroup.getAllChildren();
J3DUserRenderable result = null;
- while(children.hasMoreElements()){
+ while (children.hasMoreElements()) {
Node node = (Node) children.nextElement();
if (node instanceof J3DThingRenderable) {
J3DThingRenderable group = (J3DThingRenderable) node;
result = group.getSitter(username);
- if(result != null){
+ if (result != null) {
return result;
}
}
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-19 17:15:26 UTC (rev 517)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DThingRenderable.java 2007-10-19 17:15:31 UTC (rev 518)
@@ -16,6 +16,7 @@
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.Vector;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
@@ -164,16 +165,24 @@
}
public J3DUserRenderable getSitter(String username) {
+ J3DUserRenderable[] sitters = getSitters();
+ for (int i = 0; i < sitters.length; i++) {
+ if(sitters[i].getUser().getUsername().equals(username)){
+ return sitters[i];
+ }
+ }
+ return null;
+ }
+
+ public J3DUserRenderable[] getSitters() {
Enumeration children = transformGroup.getAllChildren();
+ Vector results = new Vector();
while(children.hasMoreElements()){
Node node = (Node) children.nextElement();
if (node instanceof J3DUserRenderable) {
- J3DUserRenderable userRenderable = (J3DUserRenderable)node;
- if(userRenderable.getUser().getUsername().equals(username)){
- return userRenderable;
- }
+ results.add(node);
}
}
- return null;
+ return (J3DUserRenderable[])results.toArray(new J3DUserRenderable[0]);
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|