|
From: <tre...@us...> - 2007-08-27 23:52:35
|
Revision: 274
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=274&view=rev
Author: trevorolio
Date: 2007-08-27 16:52:35 -0700 (Mon, 27 Aug 2007)
Log Message:
-----------
Added ServiceState docs and API. Added test cube and cylindar objs. Added fetal mail service. Added abstract remote servlet for apps in the same container which use ogoglio on the back end. Added some email validation code.
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/util/ArgumentUtils.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/StreamUtils.java
Added Paths:
-----------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ServiceStateDocument.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-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -37,6 +37,7 @@
import com.ogoglio.message.PayloadFactory;
import com.ogoglio.message.TCPChannel;
import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.viewer.render.UIConstants;
import com.ogoglio.xml.AccountDocument;
import com.ogoglio.xml.BodyDocument;
import com.ogoglio.xml.DoorDocument;
@@ -710,25 +711,25 @@
}
public InputStream getUserGeometryStream(String username, String name) throws IOException {
- return SpaceClient.class.getClassLoader().getResourceAsStream("/avatar/avatar.obj");
+ return UIConstants.getResource("avatar/avatar.obj");
}
public InputStream getUserAnimationStream(String username, long animationID) throws IOException {
System.out.println("trying to FART: "+username+","+animationID);
if (animationID == 1) {
- return SpaceClient.class.getClassLoader().getResourceAsStream("avatar/avatar.bvh");
+ return UIConstants.getResource("avatar/avatar.bvh");
} else if (animationID == 2) {
- return SpaceClient.class.getClassLoader().getResourceAsStream("avatar/avatar-walk.bvh");
+ return UIConstants.getResource("avatar/avatar-walk.bvh");
} else if (animationID == 3) {
- return SpaceClient.class.getClassLoader().getResourceAsStream("avatar/avatar-wave.bvh");
+ return UIConstants.getResource("avatar/avatar-wave.bvh");
} else if (animationID == 4) {
- return SpaceClient.class.getClassLoader().getResourceAsStream("avatar/avatar-point.bvh");
+ return UIConstants.getResource("avatar/avatar-point.bvh");
}
return null;
}
public InputStream getUserSkinMapStream(String username) throws IOException {
- return SpaceClient.class.getClassLoader().getResourceAsStream("/avatar/avatar.smap");
+ return UIConstants.getResource("avatar/avatar.smap");
}
public BodyDocument getBodyDocument(String username, long bodyID) throws IOException {
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-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -32,6 +32,7 @@
import com.ogoglio.xml.DoorDocument;
import com.ogoglio.xml.PageDocument;
import com.ogoglio.xml.PossessionDocument;
+import com.ogoglio.xml.ServiceStateDocument;
import com.ogoglio.xml.SettingDocument;
import com.ogoglio.xml.SpaceDocument;
import com.ogoglio.xml.SpaceMemberDocument;
@@ -58,8 +59,12 @@
public AccountDocument createAccount(String username, String accountLevel, String firstName, String lastName, String homepage, String email, String password) throws IOException {
AccountDocument newAccountDoc = new AccountDocument(username, accountLevel, firstName, lastName, homepage, password, email, null, AccountDocument.NO_TIME_VALUE, null, AccountDocument.NO_TIME_VALUE, -1);
- XMLElement result = wire.sendAuthenticatedXML(descriptor.getAccountURI(), newAccountDoc.toString(), "POST", authenticator.getAuthCookie());
- return new AccountDocument(result);
+ try {
+ XMLElement result = wire.sendAuthenticatedXML(descriptor.getAccountURI(), newAccountDoc.toString(), "POST", authenticator.getAuthCookie());
+ return new AccountDocument(result);
+ } catch (IOException e) {
+ return null;
+ }
}
public SpaceDocument createSpace(String spaceName) throws IOException {
@@ -479,6 +484,19 @@
return wire.sendDelete(descriptor.getBodyURI(authenticator.getUsername(), bodyID), authenticator.getAuthCookie());
}
+ public ServiceStateDocument setRegistrationState(String registrationState) throws IOException {
+ ServiceStateDocument doc = new ServiceStateDocument(registrationState);
+ XMLElement xml = wire.postAuthenticatedXML(descriptor.getServiceStateURI(), doc.toString(), authenticator.getAuthCookie());
+ if (xml == null) {
+ return null;
+ }
+ return new ServiceStateDocument(xml);
+ }
+
+ public ServiceStateDocument getRegistrationState() throws IOException {
+ return new ServiceStateDocument(wire.fetchAuthenticatedXML(descriptor.getServiceStateURI(), authenticator.getAuthCookie()));
+ }
+
public String toString() {
return "<WebAPI:" + descriptor.getServiceURI() + ">";
}
@@ -494,4 +512,5 @@
public WebAPIClientWire getWire() {
return wire;
}
+
}
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-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -155,4 +155,8 @@
return serviceURI;
}
+ public URI getServiceStateURI() {
+ return WebAPIUtil.appendToURI(getSpacesURI(), "state/");
+ }
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java 2007-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -61,7 +61,7 @@
public static void assertReadableFile(String path) {
File file = new File(path);
- if(!file.exists() || !file.canRead() || !file.isFile()) {
+ if (!file.exists() || !file.canRead() || !file.isFile()) {
throw new IllegalArgumentException("No readable file at " + path);
}
}
@@ -72,33 +72,72 @@
}
if (file.exists()) {
- if(!file.isDirectory()) {
+ if (!file.isDirectory()) {
throw new IllegalArgumentException("Expected a directory: " + file);
}
if (!file.canRead()) {
throw new IllegalArgumentException("Can't read this directory: " + file);
}
return;
- } else if(createIfPossible && file.mkdirs()){
+ } else if (createIfPossible && file.mkdirs()) {
return;
}
throw new IllegalArgumentException("Can't read this directory: " + file);
}
public static void assertNoPaths(String name) {
- if(name == null || name.trim().length() == 0) {
+ if (name == null || name.trim().length() == 0) {
return;
}
- if(name.indexOf("..") != -1) {
+ if (name.indexOf("..") != -1) {
throw new IllegalArgumentException("Bad name: " + name);
}
}
public static void assertBoringDouble(double value) {
- if(Double.isInfinite(value) || Double.isInfinite(value)) {
+ if (Double.isInfinite(value) || Double.isInfinite(value)) {
throw new IllegalArgumentException("Bad double: " + value);
}
}
+ public static void assertIsEmail(String email) {
+ if (email == null || email.trim().length() == 0) {
+ throw new IllegalArgumentException("Bad email: " + email);
+ }
+ if (email.indexOf("@") == -1 || email.indexOf("@") == 0) {
+ throw new IllegalArgumentException("Bad email: " + email);
+ }
+ if (email.indexOf(".", email.indexOf("@")) == -1 && email.indexOf("localhost") != email.indexOf("@") + 1) {
+ throw new IllegalArgumentException("Bad email: " + email);
+ }
+ }
+ public static void assertIsCreditCardNumber(String ccNumberString) {
+ if (ccNumberString == null || ccNumberString.length() < 13 || ccNumberString.length() > 16) {
+ throw new IllegalArgumentException("Bad CC number length: " + ccNumberString);
+ }
+
+ // Check Luhn (mod 10)
+ int[] digits = new int[ccNumberString.length()];
+ for (int i = 0; i < ccNumberString.length(); i++) {
+ digits[i] = Integer.parseInt(ccNumberString.charAt(i) + "");
+ }
+
+ int sum = 0;
+ boolean alt = false;
+ for (int i = digits.length - 1; i >= 0; i--) {
+ if (alt) {
+ digits[i] *= 2;
+ if (digits[i] > 9) {
+ digits[i] -= 9;
+ }
+ }
+ sum += digits[i];
+ alt = !alt;
+ }
+ if(sum % 10 != 0) {
+ throw new IllegalArgumentException("Bad CC number mod: " + ccNumberString);
+ }
+ }
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/StreamUtils.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/StreamUtils.java 2007-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/StreamUtils.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -57,6 +57,14 @@
output.flush();
output.close();
}
+
+ public static String readResource(String resourceName) throws IOException {
+ InputStream resourceStream = StreamUtils.class.getClassLoader().getResourceAsStream(resourceName);
+ if (resourceStream == null) {
+ return null;
+ }
+ return readInput(resourceStream);
+ }
public static void copyResource(String resourceName, File destinationDir) throws IOException {
InputStream resourceStream = StreamUtils.class.getClassLoader().getResourceAsStream(resourceName);
Added: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ServiceStateDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ServiceStateDocument.java (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ServiceStateDocument.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -0,0 +1,48 @@
+package com.ogoglio.xml;
+
+import nanoxml.XMLElement;
+
+import com.ogoglio.util.ArgumentUtils;
+
+public class ServiceStateDocument {
+
+ public static final String REGISTRATION_STATE_CLOSED = "closed";
+
+ public static final String REGISTRATION_STATE_ADMIN_ONLY = "adminOnly";
+
+ public static final String REGISTRATION_STATE_OPEN = "open";
+
+ public static final String[] REGISTRATION_STATES = { REGISTRATION_STATE_CLOSED, REGISTRATION_STATE_ADMIN_ONLY, REGISTRATION_STATE_OPEN };
+
+ public static final String NAME = "servicestate";
+
+ public static final String REGISTRATION_STATE = "registrationstate";
+
+ private XMLElement data = null;
+
+ public ServiceStateDocument(XMLElement data) {
+ ArgumentUtils.assertNotNull(data);
+ if (!NAME.equals(data.getName())) {
+ throw new IllegalArgumentException("data is not named " + NAME + ": " + data);
+ }
+ this.data = data;
+ }
+
+ public ServiceStateDocument(String registrationState) {
+ data = new XMLElement(NAME);
+ data.setAttribute(REGISTRATION_STATE, registrationState);
+ }
+
+ public String getRegistrationState() {
+ return data.getStringAttribute(REGISTRATION_STATE);
+ }
+
+ public XMLElement toElement() {
+ return data;
+ }
+
+ public String toString() {
+ return toElement().toString();
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ian...@us...> - 2007-08-28 22:40:17
|
Revision: 278
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=278&view=rev
Author: iansmith
Date: 2007-08-28 15:40:16 -0700 (Tue, 28 Aug 2007)
Log Message:
-----------
Changed some constants.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceDocument.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java 2007-08-28 02:50:58 UTC (rev 277)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java 2007-08-28 22:40:16 UTC (rev 278)
@@ -15,7 +15,6 @@
public static final String GUEST_COOKIE_PREFIX = "guest";
-
private static Properties bootstrapProps=null;
public static String getBootstrapUsername() {
@@ -49,4 +48,5 @@
}
}
}
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceDocument.java 2007-08-28 02:50:58 UTC (rev 277)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceDocument.java 2007-08-28 22:40:16 UTC (rev 278)
@@ -37,6 +37,8 @@
public static final String SIM_ID = "simid";
+ public static final int MAX_SETTING_VALUE_SIZE = 10240;
+
XMLElement data = null;
public SpaceDocument(long spaceID, String displayName, String ownerUsername, boolean published, int maxGuests, boolean displaySea, double seaLevel, long simID) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-08-30 00:59:11
|
Revision: 295
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=295&view=rev
Author: trevorolio
Date: 2007-08-29 17:59:14 -0700 (Wed, 29 Aug 2007)
Log Message:
-----------
Added the path from a template script to the info panel.
Cannot send information in the other direction, yet.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java 2007-08-30 00:59:09 UTC (rev 294)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java 2007-08-30 00:59:14 UTC (rev 295)
@@ -109,6 +109,11 @@
public void contextItemChosen(Thing thing, long nonce, String id) {
}
+ public void receivedInfoPanel(long sourceThingID, String panelHTML) {
+ // TODO Auto-generated method stub
+
+ }
+
}
private class WanderThread extends Thread {
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-08-30 00:59:09 UTC (rev 294)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-08-30 00:59:14 UTC (rev 295)
@@ -521,6 +521,11 @@
String link = event.getStringProperty(SpaceEvent.LINK);
listener.receivedLink(displayName, link);
+ } else if (SpaceEvent.SHOW_INFO_PANEL_EVENT.equals(event.getName())) {
+ String panelHTML = event.getStringProperty(SpaceEvent.INFO_PANEL_HTML);
+ long sourceThingID = event.getLongProperty(SpaceEvent.THING_ID).longValue();
+ listener.receivedInfoPanel(sourceThingID, panelHTML);
+
} else if (SpaceEvent.RELOAD_THING_EVENT.equals(event.getName())) {
long thingID = event.getLongProperty(SpaceEvent.THING_ID).longValue();
Thing thing = space.getThing(thingID);
@@ -650,6 +655,8 @@
public interface Listener {
public void receivedChatMessage(String username, String message);
+ public void receivedInfoPanel(long sourceThingID, String panelHTML);
+
public void contextItemChosen(Thing thing, long nonce, String id);
public void receivedContextMenuData(long nonce, String errorIfAny, Vector contextMenu);
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-08-30 00:59:09 UTC (rev 294)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java 2007-08-30 00:59:14 UTC (rev 295)
@@ -217,6 +217,10 @@
public static final String THING_CONTEXT_SELECTION_MADE_EVENT = "contextMenuItemChosen";
+ public static final String SHOW_INFO_PANEL_EVENT = "ShowInfoPanelEvent";
+
+ public static final String INFO_PANEL_HTML = "infoPanelHTML";
+
private String name = null;
private HashMap properties = new HashMap();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-08-31 03:40:43
|
Revision: 301
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=301&view=rev
Author: trevorolio
Date: 2007-08-30 20:40:40 -0700 (Thu, 30 Aug 2007)
Log Message:
-----------
Added a bridge between the external URL space and things, so now template scripts can be directly addressed via HTTP, and info panels are just iFrames showing a thing's service page.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java
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/xml/SpaceEvent.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java 2007-08-31 03:40:36 UTC (rev 300)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java 2007-08-31 03:40:40 UTC (rev 301)
@@ -109,9 +109,7 @@
public void contextItemChosen(Thing thing, long nonce, String id) {
}
- public void receivedInfoPanel(long sourceThingID, String panelHTML) {
- // TODO Auto-generated method stub
-
+ public void receivedInfoPanel(long sourceThingID, String nonce) {
}
}
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-08-31 03:40:36 UTC (rev 300)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-08-31 03:40:40 UTC (rev 301)
@@ -522,9 +522,9 @@
listener.receivedLink(displayName, link);
} else if (SpaceEvent.SHOW_INFO_PANEL_EVENT.equals(event.getName())) {
- String panelHTML = event.getStringProperty(SpaceEvent.INFO_PANEL_HTML);
+ String nonce = event.getStringProperty(SpaceEvent.INFO_PANEL_NONCE);
long sourceThingID = event.getLongProperty(SpaceEvent.THING_ID).longValue();
- listener.receivedInfoPanel(sourceThingID, panelHTML);
+ listener.receivedInfoPanel(sourceThingID, nonce);
} else if (SpaceEvent.RELOAD_THING_EVENT.equals(event.getName())) {
long thingID = event.getLongProperty(SpaceEvent.THING_ID).longValue();
@@ -655,7 +655,7 @@
public interface Listener {
public void receivedChatMessage(String username, String message);
- public void receivedInfoPanel(long sourceThingID, String panelHTML);
+ public void receivedInfoPanel(long sourceThingID, String nonce);
public void contextItemChosen(Thing thing, long nonce, String id);
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-08-31 03:40:36 UTC (rev 300)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-08-31 03:40:40 UTC (rev 301)
@@ -371,6 +371,14 @@
return (ThingDocument[]) results.toArray(new ThingDocument[0]);
}
+ public String getThingService(long spaceID, long thingID) throws IOException {
+ InputStream stream = wire.fetchAuthenticatedStream(descriptor.getThingServiceURI(spaceID, thingID), authenticator.getAuthCookie());
+ if(stream == null){
+ return null;
+ }
+ return StreamUtils.readInput(stream);
+ }
+
public PageDocument[] getPageDocuments(long spaceID, long thingID) throws IOException {
Vector results = new Vector();
@@ -512,5 +520,5 @@
public WebAPIClientWire getWire() {
return wire;
}
+}
-}
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-08-31 03:40:36 UTC (rev 300)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java 2007-08-31 03:40:40 UTC (rev 301)
@@ -99,6 +99,10 @@
return WebAPIUtil.appendToURI(getThingsURI(spaceID), thingID + "/");
}
+ public URI getThingServiceURI(long spaceID, long thingID) {
+ return WebAPIUtil.appendToURI(getThingURI(spaceID, thingID), "service/");
+ }
+
public URI getReloadThingURI(long spaceID, long thingID) {
return WebAPIUtil.appendToURI(getThingsURI(spaceID), thingID + "/?reload=true");
}
@@ -158,5 +162,4 @@
public URI getServiceStateURI() {
return WebAPIUtil.appendToURI(getSpacesURI(), "state/");
}
-
}
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-08-31 03:40:36 UTC (rev 300)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java 2007-08-31 03:40:40 UTC (rev 301)
@@ -219,7 +219,7 @@
public static final String SHOW_INFO_PANEL_EVENT = "ShowInfoPanelEvent";
- public static final String INFO_PANEL_HTML = "infoPanelHTML";
+ public static final String INFO_PANEL_NONCE = "infoPanelNonce";
private String name = null;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-09-02 20:04:42
|
Revision: 336
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=336&view=rev
Author: trevorolio
Date: 2007-09-02 13:04:41 -0700 (Sun, 02 Sep 2007)
Log Message:
-----------
Added a basic sanity check with the viewer applet during the integration tests.
It doesn't do much more than load a space with a test cube for the moment.
This test does not check that the applet will load properly from the server, but simply that the java code will actually open a space client, load a thing via the web api, and render it once.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/render/Renderer.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java
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-09-02 18:12:42 UTC (rev 335)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-09-02 20:04:41 UTC (rev 336)
@@ -107,7 +107,9 @@
private J3DWater water = null;
- private boolean rendererStopped = false;;
+ private boolean rendererStopped = false;
+
+ private boolean completedInitialLoad = false;
public J3DRenderer(SpaceClient spaceClient, boolean offScreen) {
this(spaceClient.getSpace(), spaceClient.getUsername(), spaceClient, spaceClient.getErrorGeometryProvider(), offScreen);
@@ -229,6 +231,7 @@
new Thread() {
public void run() {
getSpace().addListener(new SpaceListener(), true);
+ completedInitialLoad = true;
}
}.start();
}
@@ -844,4 +847,8 @@
public boolean isOffScreen() {
return offScreen;
}
+
+ public boolean completedInitialLoad() {
+ return completedInitialLoad;
+ }
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/render/Renderer.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/render/Renderer.java 2007-09-02 18:12:42 UTC (rev 335)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/render/Renderer.java 2007-09-02 20:04:41 UTC (rev 336)
@@ -30,6 +30,8 @@
public abstract void startRenderer();
+ public abstract boolean completedInitialLoad();
+
public abstract void stopRenderer();
public abstract Canvas getCanvas();
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-09-02 18:12:42 UTC (rev 335)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java 2007-09-02 20:04:41 UTC (rev 336)
@@ -354,6 +354,9 @@
String[] keys = getKeys();
for (int i = 0; i < keys.length; i++) {
Object value = properties.get(keys[i]);
+ if(value == null){
+ continue;
+ }
XMLElement property = new XMLElement(PROPERTY);
property.setAttribute(PROPERTY_NAME, keys[i]);
if (value instanceof String) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-09-06 13:16:29
|
Revision: 376
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=376&view=rev
Author: trevorolio
Date: 2007-09-06 06:16:32 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
Improved the account checks when accepting or denying space modifications via web api.
Avoided a null pointer exception in populate mojo when the populate dir was not configured.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceMemberDocument.java
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-09-06 13:16:29 UTC (rev 375)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-09-06 13:16:32 UTC (rev 376)
@@ -67,10 +67,13 @@
}
}
- public SpaceDocument createSpace(String spaceName) throws IOException {
+ public SpaceDocument createSpace(String spaceName) {
SpaceDocument spaceDoc = new SpaceDocument(-1, spaceName, authenticator.getUsername(), false, 0, false, 0, -1);
- XMLElement result = wire.sendAuthenticatedXML(descriptor.getSpacesURI(), spaceDoc.toString(), "POST", authenticator.getAuthCookie());
- return new SpaceDocument(result);
+ try {
+ return new SpaceDocument(wire.sendAuthenticatedXML(descriptor.getSpacesURI(), spaceDoc.toString(), "POST", authenticator.getAuthCookie()));
+ } catch (IOException e) {
+ return null;
+ }
}
public boolean deleteSpace(long spaceID) throws IOException {
@@ -210,6 +213,14 @@
wire.postAuthenticatedXML(descriptor.getSpaceURI(spaceID), spaceDoc.toString(), authenticator.getAuthCookie());
}
+ public SpaceMemberDocument updateSpaceMember(long spaceID, SpaceMemberDocument spaceMemberDocument) {
+ try {
+ return new SpaceMemberDocument(wire.sendAuthenticatedXML(descriptor.getSpaceMemberURI(spaceID, spaceMemberDocument.getMemberUsername()), spaceMemberDocument.toString(), "POST", authenticator.getAuthCookie()));
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
public SpaceMemberDocument addSpaceMember(long spaceID, String memberUsername, String role) throws IOException {
SpaceDocument spaceDoc = new SpaceDocument(wire.fetchAuthenticatedXML(descriptor.getSpaceURI(spaceID), authenticator.getAuthCookie()));
SpaceMemberDocument memberDoc = new SpaceMemberDocument(spaceDoc.getSpaceID(), memberUsername, false, role);
@@ -259,8 +270,12 @@
return new SpaceDocument(wire.fetchAuthenticatedXML(descriptor.getSpaceURI(spaceID, includeChildren), authenticator.getAuthCookie()));
}
- public ThingDocument updateThing(long spaceID, ThingDocument thingDoc) throws IOException {
- return new ThingDocument(wire.postAuthenticatedXML(descriptor.getThingURI(spaceID, thingDoc.getThingID()), thingDoc.toString(), authenticator.getAuthCookie()));
+ public ThingDocument updateThing(long spaceID, ThingDocument thingDoc) {
+ try {
+ return new ThingDocument(wire.postAuthenticatedXML(descriptor.getThingURI(spaceID, thingDoc.getThingID()), thingDoc.toString(), authenticator.getAuthCookie()));
+ } catch (Exception e) {
+ return null;
+ }
}
public TemplateDocument updateTemplate(TemplateDocument templateDoc) throws IOException {
@@ -373,7 +388,7 @@
public String getThingService(long spaceID, long thingID) throws IOException {
InputStream stream = wire.fetchAuthenticatedStream(descriptor.getThingServiceURI(spaceID, thingID), authenticator.getAuthCookie());
- if(stream == null){
+ if (stream == null) {
return null;
}
return StreamUtils.readInput(stream);
@@ -520,5 +535,5 @@
public WebAPIClientWire getWire() {
return wire;
}
+
}
-
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java 2007-09-06 13:16:29 UTC (rev 375)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java 2007-09-06 13:16:32 UTC (rev 376)
@@ -26,7 +26,6 @@
import com.ogoglio.client.model.SplinePath;
import com.ogoglio.client.model.Thing;
import com.ogoglio.util.ArgumentUtils;
-import com.ogoglio.util.Log;
import com.ogoglio.viewer.render.ClickTarget;
import com.ogoglio.viewer.render.DoorRenderable;
import com.ogoglio.viewer.render.PageRenderable;
@@ -37,8 +36,7 @@
import com.ogoglio.viewer.render.UserRenderable;
public class MotionInputHandler implements MouseMotionListener, MouseListener {
- // right now we only support arrow key based walking and turning
- // TODO add a full motion set: walk, fun, strafe, jump
+ //TODO right now we only support arrow key based walking, strafing and turning
public double maxRadiansPerSecond = Math.PI / 60;
@@ -111,7 +109,6 @@
// called from within PhysicsBehavior
public void keyPressed(KeyEvent e) {
- Log.info("Key down "+e.toString());
if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_W) {
if (moveForward == false || run == true) {
dirty = true;
@@ -156,7 +153,6 @@
// called from within PhysicsBehavior
public void keyReleased(KeyEvent e) {
- Log.info("Key up:"+e.toString());
if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_W) {
if (moveForward == true) {
dirty = true;
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceMemberDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceMemberDocument.java 2007-09-06 13:16:29 UTC (rev 375)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceMemberDocument.java 2007-09-06 13:16:32 UTC (rev 376)
@@ -109,4 +109,11 @@
public int getRoleAsInt() {
return parseRole(getRole());
}
+
+ public void setRole(String role) {
+ if(parseRole(role) == -1){
+ throw new IllegalArgumentException("Bad space member role: " + role);
+ }
+ data.setAttribute(ROLE, role);
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-09-24 18:33:18
|
Revision: 435
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=435&view=rev
Author: trevorolio
Date: 2007-09-24 11:33:21 -0700 (Mon, 24 Sep 2007)
Log Message:
-----------
Added a test for memory usage and refuses to load template data when we reach a (magic) limit.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.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
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java 2007-09-24 07:32:04 UTC (rev 434)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java 2007-09-24 18:33:21 UTC (rev 435)
@@ -1,5 +1,8 @@
package com.ogoglio.util;
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
+
public class Log {
private static class Logger {
@@ -31,6 +34,12 @@
public void error(Object msg, Throwable t) {
System.err.println(msg + ": " + t);
}
+
+ public void logMemoryUsage() {
+ MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
+ System.out.println("\tHeap: " + (memoryBean.getHeapMemoryUsage().getUsed() / 1024 / 1024f) + "MB / " + (memoryBean.getHeapMemoryUsage().getCommitted() / 1024 / 1024f) + "MB / " + (memoryBean.getHeapMemoryUsage().getMax() / 1024 / 1024f) + "MB");
+ System.out.println("\tNon: " + (memoryBean.getNonHeapMemoryUsage().getUsed() / 1024 / 1024f) + "MB / " + (memoryBean.getNonHeapMemoryUsage().getCommitted() / 1024 / 1024f) + "MB / " + (memoryBean.getNonHeapMemoryUsage().getMax() / 1024 / 1024f) + "MB");
+ }
}
static Logger log = new Logger();
@@ -66,4 +75,8 @@
public static void test(Object msg) {
log.debug("TEST:" + msg);
}
+
+ public static void logMemoryUsage(){
+ log.logMemoryUsage();
+ }
}
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-09-24 07:32:04 UTC (rev 434)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2007-09-24 18:33:21 UTC (rev 435)
@@ -3,6 +3,8 @@
import java.awt.Image;
import java.io.BufferedInputStream;
import java.io.InputStream;
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
import java.util.HashMap;
import java.util.Vector;
@@ -33,6 +35,8 @@
public class J3DDataManager {
+ public static final float MINIMUM_REMAINING_HEAP = 20 * 1024 * 1024; //if we lower this, Firefox crashes when the heap limit is reached
+
public static Appearance DEFAULT_APPEARANCE = new Appearance();
private static Material DEFAULT_MATERIAL = new Material();
@@ -52,8 +56,11 @@
private boolean loadAppearances = true;
- public J3DDataManager(boolean loadAppearances) {
+ private boolean complainedAboutMemory = false;
+
+ public J3DDataManager(boolean loadAppearances, GeometryProvider errorGeometryProvider) {
this.loadAppearances = loadAppearances;
+ this.errorGeometryProvider = errorGeometryProvider;
}
public J3DTemplateData[] getTemplateData(long templateID, GeometryProvider geoProvider, boolean useCache) {
@@ -270,12 +277,12 @@
return appearance;
}
-
+
private Obj[] getObjs(GeometryProvider geoProvider, long templateID) {
boolean gotObj = false;
Obj[] objs = new Obj[GeometryProvider.LOD_DISTANCES.length + 1];
try {
- for (int i = 0; i < objs.length; i++) {
+ for (int i = 0; !atMaxMemory() && i < objs.length; i++) {
objs[i] = getObj(geoProvider, i);
if (objs[i] != null && objs[i].getGroups().length == 0) {
Log.error("Got obj with no groups for template " + templateID);
@@ -302,6 +309,25 @@
return objs;
}
+ private long getHeapRemaining(){
+ MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
+ return memoryBean.getHeapMemoryUsage().getMax() - memoryBean.getHeapMemoryUsage().getUsed();
+ }
+
+ private boolean atMaxMemory(){
+ boolean atMax = getHeapRemaining() < MINIMUM_REMAINING_HEAP;
+ if(atMax){
+ Runtime.getRuntime().runFinalization();
+ System.gc();
+ }
+ atMax = getHeapRemaining() < MINIMUM_REMAINING_HEAP;
+ if(atMax && !complainedAboutMemory){
+ complainedAboutMemory = true;
+ Log.error("Reached maximum memory use. Try raising your max heap size.");
+ }
+ return atMax;
+ }
+
private Obj getObj(GeometryProvider provider, int lodIndex) throws ObjParseException {
if (lodIndex != 0) {
return 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 2007-09-24 07:32:04 UTC (rev 434)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-09-24 18:33:21 UTC (rev 435)
@@ -123,7 +123,7 @@
this.username = username;
this.userInputListener = userInputListener;
this.offScreen = offScreen;
- this.dataManager = new J3DDataManager(!offScreen);
+ this.dataManager = new J3DDataManager(!offScreen, errorGeometryProvider);
setCapabilities(sceneRoot);
setCapabilities(usersGroup);
@@ -528,7 +528,10 @@
}
}
- public void stopRenderer() {
+ public synchronized void stopRenderer() {
+ if(rendererStopped){
+ return;
+ }
rendererStopped = true;
physicsBehavior.cleanup();
universe.removeAllLocales();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-10-04 21:24:17
|
Revision: 477
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=477&view=rev
Author: trevorolio
Date: 2007-10-04 14:24:10 -0700 (Thu, 04 Oct 2007)
Log Message:
-----------
At last, in the body editor applet you can change the morph settings and see them reflected in real time. Hit save, and the next time you visit a space the morph settings will be respected.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.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/J3DUserRenderable.java
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/SkinLoader.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java
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 2007-10-04 06:30:49 UTC (rev 476)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java 2007-10-04 21:24:10 UTC (rev 477)
@@ -78,5 +78,9 @@
public long getBodyDataID() {
return bodyDataID;
}
+
+ public String[] getSettingNames() {
+ return (String[])settings.keySet().toArray(new String[0]);
+ }
}
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-04 06:30:49 UTC (rev 476)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/User.java 2007-10-04 21:24:10 UTC (rev 477)
@@ -41,6 +41,7 @@
this.position = position;
ArgumentUtils.assertNotNull(bodyConfiguration);
this.bodyConfiguration = bodyConfiguration;
+ bodyConfiguration.setUser(this);
}
public void startMotion(SplinePath path) {
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-04 06:30:49 UTC (rev 476)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-10-04 21:24:10 UTC (rev 477)
@@ -221,6 +221,10 @@
stopAnimation();
}
+ public void updateMorphs(){
+ skin.updateMorphs();
+ }
+
public void repaintSkinTexture() {
skin.updateTexture();
}
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 2007-10-04 06:30:49 UTC (rev 476)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java 2007-10-04 21:24:10 UTC (rev 477)
@@ -15,8 +15,8 @@
package com.ogoglio.viewer.j3d.body;
import java.awt.Graphics;
-import java.awt.Image;
import java.awt.image.BufferedImage;
+import java.util.HashMap;
import java.util.Vector;
import javax.media.j3d.Appearance;
@@ -36,8 +36,9 @@
import javax.vecmath.Point3d;
import javax.vecmath.Point3f;
import javax.vecmath.Vector3d;
+import javax.vecmath.Vector3f;
-import com.ogoglio.util.BodyConstants;
+import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.viewer.j3d.body.Skeleton.Bone;
import com.ogoglio.viewer.j3d.smap.SkinMap;
import com.ogoglio.viewer.j3d.smap.SkinMap.Group;
@@ -51,15 +52,23 @@
private Texture texture = null;
- private SkinUpdater skinUpdater = null;
+ private SkinAnimationUpdater skinAnimationUpdater = null;
- public Skin(BufferedImage baseImage) {
+ private SkinMorphUpdater skinMorphUpdater = null;
+
+ private MorphDeltaMap[] morphDeltaMaps;
+
+ private BodyConfiguration bodyConfiguration = null;
+
+ public Skin(BufferedImage baseImage, MorphDeltaMap[] morphDeltaMaps, BodyConfiguration bodyConfiguration) {
setCapability(Skin.ALLOW_APPEARANCE_WRITE);
setCapability(Skin.ALLOW_PICKABLE_READ);
setCapability(Skin.ALLOW_GEOMETRY_READ);
setCapability(Skin.ALLOW_BOUNDS_READ);
this.baseImage = baseImage;
-
+ this.morphDeltaMaps = morphDeltaMaps;
+ this.bodyConfiguration = bodyConfiguration;
+
//I don't really care for any of these formats
// LUMINANCE is nice for a film noir effect
texture = new TextureLoader(baseImage, "RGB5", TextureLoader.BY_REFERENCE, null).getTexture();
@@ -92,17 +101,19 @@
}
public void updateData(ImageComponent2D imageComp, int arg1, int arg2, int arg3, int arg4) {
- if(baseImage == null){
+ if (baseImage == null) {
return;
}
Graphics g = imageComp.getImage().getGraphics();
g.drawImage(baseImage, 0, 0, null);
+
+ //TODO this is where we'd draw on the decals
}
}
public void updateTexture() {
- if(baseImage == null){
+ if (baseImage == null) {
return;
}
ImageComponent2D imageComp = (ImageComponent2D) texture.getImage(0);
@@ -112,17 +123,62 @@
public void setGeometry(Geometry geo) {
super.setGeometry(geo);
PickTool.setCapabilities(this, PickTool.INTERSECT_FULL);
+
+ skinMorphUpdater = new SkinMorphUpdater();
+ skinMorphUpdater.morph();
}
+ public void updateMorphs() {
+ skinMorphUpdater.morph();
+ }
+
+ private class SkinMorphUpdater implements GeometryUpdater {
+
+ HashMap lastMorphValues = new HashMap();
+
+ float[] vertices = null;
+
+ SkinMorphUpdater() {
+ IndexedTriangleArray triArray = (IndexedTriangleArray) getGeometry();
+ vertices = triArray.getCoordRefFloat();
+ }
+
+ public void morph(){
+ ((GeometryArray) getGeometry()).updateData(this);
+ }
+
+ public void updateData(Geometry ignored) {
+ for (int i = 0; i < morphDeltaMaps.length; i++) {
+ float setting = bodyConfiguration.getSetting(morphDeltaMaps[i].getName());
+ if (lastMorphValues.get(morphDeltaMaps[i].getName()) != null) {
+ setting -= ((Float)lastMorphValues.remove(morphDeltaMaps[i].getName())).floatValue();
+ }
+ lastMorphValues.put(morphDeltaMaps[i].getName(), new Float(bodyConfiguration.getSetting(morphDeltaMaps[i].getName())));
+
+ 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 * setting);
+ vertices[index + 1] = vertices[index + 1] + (deltas[d].y * setting);
+ vertices[index + 2] = vertices[index + 2] + (deltas[d].z * setting);
+ }
+ }
+ }
+ }
+
+ }
+
public void setSkeleton(Skeleton skeleton, SkinMap skinMap) {
- skinUpdater = new SkinUpdater(skeleton, skinMap);
+ skinAnimationUpdater = new SkinAnimationUpdater(skeleton, skinMap);
}
public void pose() {
- skinUpdater.transform();
+ skinAnimationUpdater.transform();
}
- private class SkinUpdater implements GeometryUpdater {
+ private class SkinAnimationUpdater implements GeometryUpdater {
Skeleton skeleton = null;
@@ -150,7 +206,7 @@
float[] coords = null;
- SkinUpdater(Skeleton skeleton, SkinMap skinMap) {
+ SkinAnimationUpdater(Skeleton skeleton, SkinMap skinMap) {
this.skeleton = skeleton;
bones = getBoneArray(skeleton);
groups = new SkinMap.Group[bones.length];
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-04 06:30:49 UTC (rev 476)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/SkinLoader.java 2007-10-04 21:24:10 UTC (rev 477)
@@ -43,22 +43,6 @@
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 * setting);
- vertices[index + 1] = vertices[index + 1] + (deltas[d].y * setting);
- vertices[index + 2] = vertices[index + 2] + (deltas[d].z * setting);
- }
- }
- }
float maxY = Float.MIN_VALUE;
float minY = Float.MAX_VALUE;
@@ -79,7 +63,7 @@
}
}
- Skin skin = new Skin(baseImage);
+ Skin skin = new Skin(baseImage, morphDeltaMaps, bodyConfiguration);
skin.setGeometry(geometry);
return skin;
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-04 06:30:49 UTC (rev 476)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java 2007-10-04 21:24:10 UTC (rev 477)
@@ -15,6 +15,7 @@
import nanoxml.XMLElement;
+import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.util.ArgumentUtils;
public class BodyConfigurationDocument {
@@ -49,6 +50,14 @@
this.data = data;
}
+ public BodyConfigurationDocument(BodyConfiguration bodyConfiguration) {
+ this(bodyConfiguration.getBodyConfigurationID(), bodyConfiguration.getUser().getUsername(), bodyConfiguration.getDisplayName(), bodyConfiguration.getBodyDataID());
+ String[] settingNames = bodyConfiguration.getSettingNames();
+ for (int i = 0; i < settingNames.length; i++) {
+ addBodySetting(settingNames[i], bodyConfiguration.getSetting(settingNames[i]));
+ }
+ }
+
public long getBodyConfigurationID(){
return data.getLongAttribute(BODY_CONFIGURATION_ID);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-10-05 02:59:37
|
Revision: 479
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=479&view=rev
Author: trevorolio
Date: 2007-10-04 19:59:40 -0700 (Thu, 04 Oct 2007)
Log Message:
-----------
Added a chooser for the body editor. You'll need to add this to your maven settings.xml:
<ogoglio.bodyDataDisplayNames>Mike,Andrea</ogoglio.bodyDataDisplayNames>
<ogoglio.bodyDataFileNames>ogoglio-body-mike.jar,ogoglio-body-andrea.jar</ogoglio.bodyDataFileNames>
Modified Paths:
--------------
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/J3DUserRenderable.java
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-04 21:24:13 UTC (rev 478)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-10-05 02:59:40 UTC (rev 479)
@@ -471,6 +471,17 @@
return new BodyDataDocument(result);
}
+ public BodyDataDocument[] getBodyDataDocuments() throws IOException {
+
+ XMLElement result = wire.fetchAuthenticatedXML(descriptor.getBodiesURI(), authenticator.getAuthCookie());
+ Vector docs = new Vector();
+ Vector children = result.getChildren();
+ for (int i = 0; i < children.size(); i++) {
+ docs.add(new BodyDataDocument((XMLElement)children.get(i)));
+ }
+ return (BodyDataDocument[])docs.toArray(new BodyDataDocument[0]);
+ }
+
public BodyDataDocument getBodyDataDocument(long bodyDataID) throws IOException {
return new BodyDataDocument(wire.fetchAuthenticatedXML(descriptor.getBodyDataDocumentURI(bodyDataID), authenticator.getAuthCookie()));
}
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 2007-10-04 21:24:13 UTC (rev 478)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java 2007-10-05 02:59:40 UTC (rev 479)
@@ -9,24 +9,24 @@
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){
+
+ 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){
+
+ public BodyConfiguration(long bodyConfigurationID, String displayName, long bodyDataID) {
ArgumentUtils.assertNotNegative(bodyConfigurationID);
this.bodyConfigurationID = bodyConfigurationID;
ArgumentUtils.assertNotEmpty(displayName);
@@ -35,34 +35,34 @@
this.bodyDataID = bodyDataID;
}
- public void setUser(User user){
+ public void setUser(User user) {
ArgumentUtils.assertNotNull(user);
this.user = user;
}
-
- public void addSetting(String settingName, float setting){
+
+ public void addSetting(String settingName, float setting) {
ArgumentUtils.assertNotEmpty(settingName);
- if(setting < 0){
+ if (setting < 0) {
setting = 0;
}
- if(setting > 1){
+ if (setting > 1) {
setting = 1;
}
settings.put(settingName, new Float(setting));
}
-
- public void removeSetting(String settingName){
+
+ public void removeSetting(String settingName) {
settings.remove(settingName);
}
-
- public float getSetting(String settingName){
- Float setting = (Float)settings.get(settingName);
- if(setting == null){
+
+ public float getSetting(String settingName) {
+ Float setting = (Float) settings.get(settingName);
+ if (setting == null) {
return 0;
}
return setting.floatValue();
}
-
+
public User getUser() {
return user;
}
@@ -79,8 +79,11 @@
return bodyDataID;
}
+ public void setBodyDataID(long bodyDataID) {
+ this.bodyDataID = bodyDataID;
+ }
+
public String[] getSettingNames() {
- return (String[])settings.keySet().toArray(new String[0]);
+ return (String[]) settings.keySet().toArray(new String[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 2007-10-04 21:24:13 UTC (rev 478)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-10-05 02:59:40 UTC (rev 479)
@@ -86,12 +86,12 @@
setCapabilities(bodyGroup);
transformGroup.addChild(bodyGroup);
- initBody();
+ initBody(bodyData);
}
- private void initBody() {
+ public void initBody(J3DBodyData bodyData) {
bodyGroup.removeAllChildren();
-
+ this.bodyData = bodyData;
skin = new SkinLoader(bodyData, user.getBodyConfiguration()).generateSkin();
userHeight = skin.getHeight();
skinMap = bodyData.getSkinMap();
@@ -267,7 +267,4 @@
animator.animate(loop);
}
- public void setHeight(float newHeight) {
- initBody();
- }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-10-08 12:51:15
|
Revision: 488
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=488&view=rev
Author: trevorolio
Date: 2007-10-08 05:51:18 -0700 (Mon, 08 Oct 2007)
Log Message:
-----------
Fixed the sim side Page so that it retains new content types upon update.
Added a new web api call to update a page from an input stream.
(all of this is handy for my hawt new iSight -> page demo hack)
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/viewer/j3d/J3DPageRenderable.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.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-07 18:46:30 UTC (rev 487)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-10-08 12:51:18 UTC (rev 488)
@@ -406,6 +406,7 @@
if (!page.getContentType().equals(event.getStringProperty(SpaceEvent.CONTENT_TYPE))) {
page.setContentType(event.getStringProperty(SpaceEvent.CONTENT_TYPE));
}
+ System.out.println("Page content type: " + page.getContentType());
page.reloadContent();
} else if (SpaceEvent.ADD_DOOR_EVENT.equals(event.getName())) {
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-07 18:46:30 UTC (rev 487)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-10-08 12:51:18 UTC (rev 488)
@@ -13,6 +13,7 @@
limitations under the License. */
package com.ogoglio.client;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
@@ -430,6 +431,10 @@
wire.performPOST(descriptor.getPageContentsURI(spaceID, thingID, pageID), contents, "application/octet-stream", authenticator.getAuthCookie());
}
+ public void setPageContents(long spaceID, long thingID, long pageID, InputStream inputStream, String mimeType) throws IOException {
+ wire.performPOST(descriptor.getPageContentsURI(spaceID, thingID, pageID), inputStream, mimeType, authenticator.getAuthCookie());
+ }
+
public InputStream getPageContents(long spaceID, long thingID, long pageID) throws IOException {
return wire.performGET(descriptor.getPageContentsURI(spaceID, thingID, pageID), authenticator.getAuthCookie(), false);
}
@@ -543,4 +548,5 @@
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/viewer/j3d/J3DPageRenderable.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DPageRenderable.java 2007-10-07 18:46:30 UTC (rev 487)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DPageRenderable.java 2007-10-08 12:51:18 UTC (rev 488)
@@ -42,17 +42,14 @@
private BrowserScreen screen = null;
- // private J3DThingRenderable thingRenderable = null;
-
- public J3DPageRenderable(J3DThingRenderable NOT_USED, Page page) {
- //this.thingRenderable = thingRenderable;
+ public J3DPageRenderable(Page page) {
this.page = page;
setCapability(BranchGroup.ALLOW_DETACH);
pageGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
pageGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
addChild(pageGroup);
pageGroup.setTransform(page.getPosition());
- screen = new BrowserScreen(page.getContentType(), (float) page.getWidth(), (float) page.getHeight());
+ screen = new BrowserScreen();
pageGroup.addChild(screen);
reloadContent();
}
@@ -73,32 +70,18 @@
ImageRenderer imageRenderer = null;
- float width = -1;
-
- float height = -1;
-
float textureWidth = 512;
float textureHeight = -1;
- BrowserScreen(String contentType, float width, float height) {
- this.width = width;
- this.height = height;
-
- textureHeight = textureWidth * (height / (float) width);
- if (isTextType()) {
- textRenderer = new HtmlRenderer((int) textureWidth, (int) textureHeight);
- textRenderer.updateRender();
- } else if(isImageType()){
- imageRenderer = new ImageRenderer((int) textureWidth, (int) textureHeight);
- imageRenderer.updateRender();
- } else {
- throw new IllegalStateException("Unknown page type: " + page.getContentType());
- }
+ BrowserScreen() {
initShape();
+ updateContent();
}
private void initShape() {
+ float width = (float) page.getWidth();
+ float height = (float) page.getHeight();
PickTool.setCapabilities(this, PickTool.INTERSECT_COORD);
setCapability(Shape3D.ALLOW_APPEARANCE_READ);
@@ -106,7 +89,7 @@
setCapability(Shape3D.ALLOW_GEOMETRY_READ);
setCapability(Shape3D.ALLOW_BOUNDS_READ);
setCapability(Shape3D.ALLOW_COLLIDABLE_READ);
-
+
QuadArray polygon = new QuadArray(4, QuadArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2);
polygon.setCapability(QuadArray.ALLOW_COORDINATE_READ);
polygon.setCapability(QuadArray.ALLOW_COUNT_READ);
@@ -124,13 +107,14 @@
Appearance appearance = new Appearance();
appearance.setCapability(Appearance.ALLOW_TEXTURE_WRITE);
- updateAppearance(appearance);
setGeometry(polygon);
setAppearance(appearance);
}
public void clicked(double x, double y) {
+ float width = (float) page.getWidth();
+ float height = (float) page.getHeight();
int textureX = -1 * ((int) (x * (textureWidth / width)) - (int) (textureWidth / 2));
int textureY = -1 * ((int) (y * (textureHeight / height)) - (int) (textureHeight / 2));
if (textRenderer != null) {
@@ -156,6 +140,7 @@
}
public void updateContent() {
+ textureHeight = textureWidth * ((float) page.getHeight() / (float) page.getWidth());
try {
if (isTextType() && textRenderer == null) {
if (imageRenderer != null) {
@@ -170,7 +155,6 @@
}
imageRenderer = new ImageRenderer((int) textureWidth, (int) textureHeight);
}
-
InputStream contentStream = page.getContent();
if (contentStream == null) {
throw new IOException("Null content stream");
@@ -198,7 +182,7 @@
public PageRenderable getPageRenderable() {
return J3DPageRenderable.this;
}
-
+
public double getHeight() {
return 0;
}
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-07 18:46:30 UTC (rev 487)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-08 12:51:18 UTC (rev 488)
@@ -262,7 +262,7 @@
Log.error("Tried to add a page to an unknown thing: " + page.getThing().getThingID());
return;
}
- J3DPageRenderable pageRenderable = new J3DPageRenderable(thingRenderable/*not used!*/, page);
+ J3DPageRenderable pageRenderable = new J3DPageRenderable(page);
thingRenderable.addPageRenderable(pageRenderable);
}
@@ -666,7 +666,7 @@
Page[] pages = thing.getPages();
for (int i = 0; i < pages.length; i++) {
- J3DPageRenderable pageRenderable = new J3DPageRenderable(renderable/*not used!*/, pages[i]);
+ J3DPageRenderable pageRenderable = new J3DPageRenderable(pages[i]);
renderable.addPageRenderable(pageRenderable);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-10-15 13:04:51
|
Revision: 494
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=494&view=rev
Author: trevorolio
Date: 2007-10-15 06:04:52 -0700 (Mon, 15 Oct 2007)
Log Message:
-----------
Added a body texture web resource, backed by the media service. This is used in conjunction with body configurations to provide users with skin customization.
Still to come in texture land:
the body editor UI needs some design love to incorporate the texture upload form
body loading takes too long and shows no progress information
a base skin texture with decal textures baked on top
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/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
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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -728,6 +728,10 @@
}
}
+ public InputStream getBodyTexture(String username, long bodyConfigurationID) {
+ return webClient.getBodyTexture(username, bodyConfigurationID);
+ }
+
}
public TemplateDataProvider getTemplateDataProvider() {
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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -477,14 +477,14 @@
}
public BodyDataDocument[] getBodyDataDocuments() throws IOException {
-
+
XMLElement result = wire.fetchAuthenticatedXML(descriptor.getBodiesURI(), authenticator.getAuthCookie());
Vector docs = new Vector();
Vector children = result.getChildren();
for (int i = 0; i < children.size(); i++) {
- docs.add(new BodyDataDocument((XMLElement)children.get(i)));
+ docs.add(new BodyDataDocument((XMLElement) children.get(i)));
}
- return (BodyDataDocument[])docs.toArray(new BodyDataDocument[0]);
+ return (BodyDataDocument[]) docs.toArray(new BodyDataDocument[0]);
}
public BodyDataDocument getBodyDataDocument(long bodyDataID) throws IOException {
@@ -549,4 +549,19 @@
return new BodyConfigurationDocument(wire.fetchAuthenticatedXML(descriptor.getDefaultBodyConfiguration(username), authenticator.getAuthCookie()));
}
+ public void setBodyTexture(String username, long bodyConfigurationID, InputStream textureData, String mimeType) throws IOException {
+ wire.performPOST(descriptor.getBodyTextureURI(username, bodyConfigurationID), textureData, mimeType, authenticator.getAuthCookie());
+ }
+
+ public InputStream getBodyTexture(String username, long bodyConfigurationID) {
+ try {
+ return wire.fetchAuthenticatedStream(descriptor.getBodyTextureURI(username, bodyConfigurationID), authenticator.getAuthCookie());
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ public void deleteBodyTexture(String username, long bodyConfigurationID) throws IOException {
+ wire.sendDelete(descriptor.getBodyTextureURI(username, bodyConfigurationID), 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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -135,6 +135,9 @@
return WebAPIUtil.appendToURI(getBodyConfigurationsURI(username), bodyConfigurationID + "/");
}
+ public URI getBodyTextureURI(String username, long bodyConfigurationID){
+ return WebAPIUtil.appendToURI(getBodyConfigurationURI(username, bodyConfigurationID), "texture");
+ }
public URI getDefaultBodyConfiguration(String username) {
return WebAPIUtil.appendToURI(getBodyConfigurationsURI(username), "default/");
}
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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyDataProvider.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -1,9 +1,12 @@
package com.ogoglio.client.model;
+import java.io.InputStream;
import java.util.zip.ZipInputStream;
public interface BodyDataProvider {
public ZipInputStream getBodyData(long bodyDataID);
+ public InputStream getBodyTexture(String username, long bodyConfigurationID);
+
}
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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataCache.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -13,46 +13,61 @@
limitations under the License. */
package com.ogoglio.viewer.j3d;
+import java.awt.image.BufferedImage;
import java.util.HashMap;
public class J3DDataCache {
private HashMap bodyDataMap = new HashMap(); //maps body IDs to J3DBodyData objects
-
+
private HashMap templateDataMap = new HashMap(); //maps template guid to J3DTemplateData objects
+ private HashMap bodyTextureMap = new HashMap(); //maps bodyConfigurationIDs to BufferedImage objects
+
+ public BufferedImage getBodyTexture(long bodyConfigurationID) {
+ return (BufferedImage) bodyTextureMap.get(new Long(bodyConfigurationID));
+ }
+
+ public void putBodyTexture(long bodyConfigurationID, BufferedImage image) {
+ if(image == null){
+ bodyTextureMap.remove(new Long(bodyConfigurationID));
+ return;
+ }
+ bodyTextureMap.put(new Long(bodyConfigurationID), image);
+ }
+
public J3DTemplateData getTemplateData(long templateID, int lod) {
return (J3DTemplateData) templateDataMap.get(createTemplateGUID(templateID, lod));
}
- public void putBodyData(long bodyDataID, J3DBodyData data){
+ public void putBodyData(long bodyDataID, J3DBodyData data) {
bodyDataMap.put(new Long(bodyDataID), data);
}
-
- public J3DBodyData getBodyData(long bodyDataID){
- return (J3DBodyData)bodyDataMap.get(new Long(bodyDataID));
+
+ public J3DBodyData getBodyData(long bodyDataID) {
+ return (J3DBodyData) bodyDataMap.get(new Long(bodyDataID));
}
-
+
public void putTemplateData(long templateID, int lod, J3DTemplateData entry) {
templateDataMap.put(createTemplateGUID(templateID, lod), entry);
}
- private String createTemplateGUID(long id, int lod){
+ private String createTemplateGUID(long id, int lod) {
return id + "-" + lod;
}
-
- private long getIDFromGUID(String guid){
+
+ private long getIDFromGUID(String guid) {
return Long.parseLong(guid.split("-")[0]);
}
- private long getLODFromGUID(String guid){
+ private long getLODFromGUID(String guid) {
return Long.parseLong(guid.split("-")[1]);
}
- private J3DTemplateData[] getAllTemplateData(){
- return (J3DTemplateData[])templateDataMap.values().toArray(new J3DTemplateData[0]);
+ private J3DTemplateData[] getAllTemplateData() {
+ return (J3DTemplateData[]) templateDataMap.values().toArray(new J3DTemplateData[0]);
}
-
+
public void cleanup() {
J3DTemplateData[] data = getAllTemplateData();
for (int i = 0; i < data.length; i++) {
@@ -65,6 +80,6 @@
}
private J3DBodyData[] getAllBodyData() {
- return (J3DBodyData[])bodyDataMap.values().toArray(new J3DBodyData[0]);
+ return (J3DBodyData[]) bodyDataMap.values().toArray(new J3DBodyData[0]);
}
}
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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -89,6 +89,25 @@
this.bodyDataProvider = bodyDataProvider;
}
+ public BufferedImage getBodyTexture(String username, long bodyConfigurationID){
+ BufferedImage image = dataCache.getBodyTexture(bodyConfigurationID);
+ if(image != null){
+ return image;
+ }
+ InputStream imageStream = bodyDataProvider.getBodyTexture(username, bodyConfigurationID);
+ if(imageStream == null){
+ return null;
+ }
+ try {
+ image = ImageIO.read(imageStream);
+ } catch (IOException e) {
+ Log.warn("Custom skin could not be read: " + e);
+ return null;
+ }
+ dataCache.putBodyTexture(bodyConfigurationID, image);
+ return image;
+ }
+
public J3DBodyData getBodyData(long bodyDataID) {
J3DBodyData data = dataCache.getBodyData(bodyDataID);
if (data != null) {
@@ -554,5 +573,4 @@
public void cleanup() {
dataCache.cleanup();
}
-
}
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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -18,6 +18,7 @@
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
+import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Enumeration;
@@ -625,8 +626,10 @@
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);
+ final J3DUserRenderable renderable = new J3DUserRenderable(user, bodyData, customSkin);
renderable.setID(USER_ID_PREFIX + user.getUsername());
if (isLocalUser) {
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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -15,6 +15,7 @@
package com.ogoglio.viewer.j3d;
import java.awt.Font;
+import java.awt.image.BufferedImage;
import javax.media.j3d.Billboard;
import javax.media.j3d.BoundingSphere;
@@ -73,7 +74,7 @@
private float userHeight = 2; //meters
- public J3DUserRenderable(User user, J3DBodyData bodyData) {
+ public J3DUserRenderable(User user, J3DBodyData bodyData, BufferedImage customSkin) {
ArgumentUtils.assertNotNull(user);
this.user = user;
ArgumentUtils.assertNotNull(bodyData);
@@ -86,13 +87,13 @@
setCapabilities(bodyGroup);
transformGroup.addChild(bodyGroup);
- initBody(bodyData);
+ initBody(bodyData, customSkin);
}
- public void initBody(J3DBodyData bodyData) {
+ public void initBody(J3DBodyData bodyData, BufferedImage customSkin) {
bodyGroup.removeAllChildren();
this.bodyData = bodyData;
- skin = new SkinLoader(bodyData, user.getBodyConfiguration()).generateSkin();
+ skin = new SkinLoader(bodyData, user.getBodyConfiguration(), customSkin).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-15 13:04:48 UTC (rev 493)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/SkinLoader.java 2007-10-15 13:04:52 UTC (rev 494)
@@ -34,10 +34,14 @@
private MorphDeltaMap[] morphDeltaMaps = null;
- public SkinLoader(J3DBodyData bodyData, BodyConfiguration bodyConfiguration) {
+ public SkinLoader(J3DBodyData bodyData, BodyConfiguration bodyConfiguration, BufferedImage customSkin) {
this.geometry = bodyData.cloneBodyGeometry();
this.morphDeltaMaps = bodyData.getMorphDeltaMaps();
- this.baseImage = bodyData.getBaseTexture();
+ if(customSkin == null){
+ this.baseImage = bodyData.getBaseTexture();
+ } else {
+ this.baseImage = customSkin;
+ }
this.bodyConfiguration = bodyConfiguration;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-10-19 00:58:44
|
Revision: 514
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=514&view=rev
Author: trevorolio
Date: 2007-10-18 17:58:48 -0700 (Thu, 18 Oct 2007)
Log Message:
-----------
Now plays the sit animation when sitting.
Other folks see the sitting avatar, both upon the event and on initial load.
Need to add UI to template html.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/BodyConstants.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
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/BodyConstants.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/BodyConstants.java 2007-10-18 18:57:24 UTC (rev 513)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/BodyConstants.java 2007-10-19 00:58:48 UTC (rev 514)
@@ -7,4 +7,5 @@
public static final String WALK_ANIMATION_NAME = "walk";
+ public static final String SIT_ANIMATION_NAME = "sit";
}
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:57:24 UTC (rev 513)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-19 00:58:48 UTC (rev 514)
@@ -402,6 +402,7 @@
return;
}
thingRenderable.addSitter(renderable);
+ renderable.playAnimation(BodyConstants.SIT_ANIMATION_NAME, false, false);
return;
}
@@ -427,7 +428,7 @@
}
startRenderableMotion(renderable, path);
if (!offScreen) {
- renderable.playAnimation(BodyConstants.WALK_ANIMATION_NAME, true);
+ renderable.playAnimation(BodyConstants.WALK_ANIMATION_NAME, true, true);
}
}
@@ -454,6 +455,7 @@
}
usersGroup.removeChild(userRenderable);
thingRenderable.addSitter(userRenderable);
+ userRenderable.playAnimation(BodyConstants.SIT_ANIMATION_NAME, false, false);
}
public void userStood(User user, Thing oldSeat) {
@@ -481,7 +483,7 @@
return;
}
if (!offScreen) {
- renderable.playAnimation(animationName, false);
+ renderable.playAnimation(animationName, false, true);
}
}
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-18 18:57:24 UTC (rev 513)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-10-19 00:58:48 UTC (rev 514)
@@ -67,13 +67,15 @@
private float skeletonScale = 1;
private BodyAnimator animator = null;
-
+
private Bvh[] animations = new Bvh[0];
private BodyAnimatorListener bodyAnimatorListener = new BodyAnimatorListener();
private float userHeight = 2; //meters
+ private boolean playDefaultAnimationWhenComplete = true;
+
public J3DUserRenderable(User user, J3DBodyData bodyData, BufferedImage customSkin) {
ArgumentUtils.assertNotNull(user);
this.user = user;
@@ -102,7 +104,7 @@
for (int i = 0; i < sourceAnimations.length; i++) {
animations[i] = sourceAnimations[i].cloneBvh();
scaleBvh(animations[i]);
- if(animations[i].getName().equals(BodyConstants.DEFAULT_ANIMATION_NAME)){
+ if (animations[i].getName().equals(BodyConstants.DEFAULT_ANIMATION_NAME)) {
defaultAnimation = animations[i];
}
}
@@ -127,7 +129,7 @@
bodyGroup.addChild(skeletonBranch);
setPosition(user.getPosition());
- playAnimation(BodyConstants.DEFAULT_ANIMATION_NAME, false);
+ playAnimation(BodyConstants.DEFAULT_ANIMATION_NAME, false, true);
}
private void scaleBvh(Bvh bvh) {
@@ -222,14 +224,14 @@
stopAnimation();
}
- public void updateMorphs(){
+ public void updateMorphs() {
skin.updateMorphs();
}
-
- public void setSkinTexture(BufferedImage skinTexture){
+
+ public void setSkinTexture(BufferedImage skinTexture) {
skin.setBaseImage(skinTexture);
}
-
+
public void repaintSkinTexture() {
skin.updateTexture();
}
@@ -239,7 +241,9 @@
animator.cleanup();
animator = null;
}
- playAnimation(BodyConstants.DEFAULT_ANIMATION_NAME, false);
+ if (playDefaultAnimationWhenComplete) {
+ playAnimation(BodyConstants.DEFAULT_ANIMATION_NAME, false, false);
+ }
}
private class BodyAnimatorListener implements BodyAnimator.Listener {
@@ -247,27 +251,30 @@
if (animator.getBvh().getName().equals(BodyConstants.DEFAULT_ANIMATION_NAME)) {
return;
}
- playAnimation(BodyConstants.DEFAULT_ANIMATION_NAME, false);
+ if (playDefaultAnimationWhenComplete) {
+ playAnimation(BodyConstants.DEFAULT_ANIMATION_NAME, false, false);
+ }
}
}
- public Bvh getAnimation(String animationName){
+ public Bvh getAnimation(String animationName) {
for (int i = 0; i < animations.length; i++) {
- if(animations[i].getName().equals(animationName)){
+ if (animations[i].getName().equals(animationName)) {
return animations[i];
}
}
return null;
}
-
- public synchronized void playAnimation(String animationName, boolean loop) {
+
+ public void playAnimation(String animationName, boolean loop, boolean playDefaultWhenComplete) {
if (animator != null) {
animator.cleanup();
}
Bvh animation = getAnimation(animationName);
- if(animation == null){
+ if (animation == null) {
return;
}
+ this.playDefaultAnimationWhenComplete = playDefaultWhenComplete;
animator = new BodyAnimator(skeleton, animation, skin, bodyAnimatorListener);
animator.animate(loop);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <tre...@us...> - 2007-10-21 16:11:21
|
Revision: 524
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=524&view=rev
Author: trevorolio
Date: 2007-10-21 09:11:23 -0700 (Sun, 21 Oct 2007)
Log Message:
-----------
INCLUDES A NEW DB SCHEMA. Dump your old db and make clean.
For those who don't want to break out photoshop to get a new look, added the capability to select from a set of textures included in the body data jar.
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/J3DBodyData.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/body/SkinLoader.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.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-20 12:21:41 UTC (rev 523)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-10-21 16:11:23 UTC (rev 524)
@@ -164,11 +164,11 @@
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);
+ bodyConfDoc = new BodyConfigurationDocument(0, userDocs[i].getUsername(), "Body", 1, null);
} else {
bodyConfDoc = webClient.getBodyConfiguration(userDocs[i].getUsername(), userDocs[i].getBodyConfigurationID());
}
- BodyConfiguration bodyConfig = new BodyConfiguration(bodyConfDoc.getBodyConfigurationID(), bodyConfDoc.getDisplayName(), bodyConfDoc.getBodyDataID());
+ BodyConfiguration bodyConfig = new BodyConfiguration(bodyConfDoc);
Thing seatThing = null;
if (userDocs[i].getSeatThingID() != -1) {
seatThing = space.getThing(userDocs[i].getSeatThingID());
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-20 12:21:41 UTC (rev 523)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-10-21 16:11:23 UTC (rev 524)
@@ -504,7 +504,7 @@
}
public BodyConfigurationDocument createBodyConfiguration(String username, String displayName, long bodyDataID) throws IOException {
- BodyConfigurationDocument configDoc = new BodyConfigurationDocument(-1, username, displayName, bodyDataID);
+ BodyConfigurationDocument configDoc = new BodyConfigurationDocument(-1, username, displayName, bodyDataID, null);
return new BodyConfigurationDocument(wire.postAuthenticatedXML(descriptor.getBodyConfigurationsURI(username), configDoc.toString(), authenticator.getAuthCookie()));
}
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 2007-10-20 12:21:41 UTC (rev 523)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java 2007-10-21 16:11:23 UTC (rev 524)
@@ -16,23 +16,26 @@
private long bodyDataID = -1;
+ private String baseTextureName = null; //try custom, then named texture (ignoring if null), then default
+
private HashMap settings = new HashMap();
public BodyConfiguration(BodyConfigurationDocument configDoc) {
- this(configDoc.getBodyConfigurationID(), configDoc.getDisplayName(), configDoc.getBodyDataID());
+ 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());
}
}
- public BodyConfiguration(long bodyConfigurationID, String displayName, long bodyDataID) {
+ public BodyConfiguration(long bodyConfigurationID, String displayName, long bodyDataID, String baseTextureName) {
ArgumentUtils.assertNotNegative(bodyConfigurationID);
this.bodyConfigurationID = bodyConfigurationID;
ArgumentUtils.assertNotEmpty(displayName);
this.displayName = displayName;
ArgumentUtils.assertNotNegative(bodyDataID);
this.bodyDataID = bodyDataID;
+ this.baseTextureName = baseTextureName;
}
public void setUser(User user) {
@@ -86,4 +89,12 @@
public String[] getSettingNames() {
return (String[]) settings.keySet().toArray(new String[0]);
}
+
+ public String getBaseTextureName(){
+ return baseTextureName;
+ }
+
+ public void setBaseTextureName(String baseTextureName) {
+ this.baseTextureName = baseTextureName;
+ }
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DBodyData.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DBodyData.java 2007-10-20 12:21:41 UTC (rev 523)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DBodyData.java 2007-10-21 16:11:23 UTC (rev 524)
@@ -19,21 +19,25 @@
private SkinMap skinMap = null;
- private BufferedImage baseTexture = null;
+ private BaseTexture defaultBaseTexture = null;
+ private BaseTexture[] baseTextures = null;
+
private Bvh defaultAnimation = null;
private MorphDeltaMap[] morphDeltaMaps = null;
- public J3DBodyData(IndexedTriangleArray bodyGeometry, Bvh[] animations, SkinMap skinMap, BufferedImage baseTexture, MorphDeltaMap[] morphDeltaMaps) {
+ public J3DBodyData(IndexedTriangleArray bodyGeometry, Bvh[] animations, SkinMap skinMap, BaseTexture defaultBaseTexture, BaseTexture[] baseTextures, MorphDeltaMap[] morphDeltaMaps) {
ArgumentUtils.assertNotNull(bodyGeometry);
this.bodyGeometry = bodyGeometry;
ArgumentUtils.assertNotNull(animations);
this.animations = animations;
ArgumentUtils.assertNotNull(skinMap);
this.skinMap = skinMap;
- ArgumentUtils.assertNotNull(baseTexture);
- this.baseTexture = baseTexture;
+ ArgumentUtils.assertNotNull(defaultBaseTexture);
+ this.defaultBaseTexture = defaultBaseTexture;
+ ArgumentUtils.assertNotNull(baseTextures);
+ this.baseTextures = baseTextures;
ArgumentUtils.assertNotNull(morphDeltaMaps);
this.morphDeltaMaps = morphDeltaMaps;
@@ -47,6 +51,27 @@
}
}
+ public static class BaseTexture {
+
+ String name = null;
+ BufferedImage image = null;
+
+ public BaseTexture(String name, BufferedImage image){
+ ArgumentUtils.assertNotNull(name);
+ this.name = name;
+ ArgumentUtils.assertNotNull(image);
+ this.image = image;
+ }
+
+ public String getName(){
+ return name;
+ }
+
+ public BufferedImage getImage(){
+ return image;
+ }
+ }
+
public GeometryArray cloneBodyGeometry(){
float[] vertexArray = bodyGeometry.getCoordRefFloat();
@@ -84,7 +109,7 @@
bodyGeometry = null;
animations = null;
skinMap = null;
- baseTexture = null;
+ defaultBaseTexture = null;
}
public Bvh[] getAnimations() {
@@ -98,12 +123,16 @@
return skinMap;
}
- public BufferedImage getBaseTexture() {
- return baseTexture;
+ public BaseTexture getDefaultBaseTexture() {
+ return defaultBaseTexture;
}
+ public BaseTexture[] getBaseTextures(){
+ return baseTextures;
+ }
+
public String toString() {
- return "BodyData (" + bodyGeometry + ", " + skinMap + ", " + baseTexture + ")";
+ return "BodyData (" + bodyGeometry + ", " + skinMap + ", " + defaultBaseTexture + ")";
}
public Bvh getDefaultAnimation() {
@@ -113,4 +142,13 @@
public MorphDeltaMap[] getMorphDeltaMaps(){
return morphDeltaMaps;
}
+
+ public BaseTexture getBaseTexture(String baseTextureName) {
+ for (int i = 0; i < baseTextures.length; i++) {
+ if(baseTextures[i].getName().equals(baseTextureName)){
+ return baseTextures[i];
+ }
+ }
+ return null;
+ }
}
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-20 12:21:41 UTC (rev 523)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2007-10-21 16:11:23 UTC (rev 524)
@@ -89,13 +89,13 @@
this.bodyDataProvider = bodyDataProvider;
}
- public BufferedImage getBodyTexture(String username, long bodyConfigurationID){
+ public BufferedImage getBodyTexture(String username, long bodyConfigurationID) {
BufferedImage image = dataCache.getBodyTexture(bodyConfigurationID);
- if(image != null){
+ if (image != null) {
return image;
}
InputStream imageStream = bodyDataProvider.getBodyTexture(username, bodyConfigurationID);
- if(imageStream == null){
+ if (imageStream == null) {
return null;
}
try {
@@ -137,7 +137,8 @@
SkinMap skinMap = null;
Vector animations = new Vector();
Vector morphDeltas = new Vector();
- BufferedImage baseTexture = null;
+ J3DBodyData.BaseTexture defaultBaseTexture = null;
+ Vector baseTextures = new Vector();
try {
ZipEntry entry = null;
while ((entry = bodyDataStream.getNextEntry()) != null) {
@@ -157,7 +158,11 @@
BvhParser parser = new BvhParser(name, entryStream);
animations.add(parser.parse());
} else if (entry.getName().equals("texture/body.jpg")) {
- baseTexture = ImageIO.read(entryStream);
+ defaultBaseTexture = new J3DBodyData.BaseTexture("Default", ImageIO.read(entryStream));
+ } else if (entry.getName().startsWith("texture/") && entry.getName().endsWith(".jpg")) {
+ String name = entry.getName().substring(8, entry.getName().length() - 4);
+ J3DBodyData.BaseTexture baseTexture = new J3DBodyData.BaseTexture(name, ImageIO.read(entryStream));
+ baseTextures.add(baseTexture);
} else { //discard the data
StreamUtils.discardInput(new LimitedInputStream(bodyDataStream, (int) entry.getSize()));
}
@@ -176,44 +181,44 @@
sortMorphDeltas(morphDeltas);
- return new J3DBodyData(array, (Bvh[]) animations.toArray(new Bvh[0]), skinMap, baseTexture, (MorphDeltaMap[]) morphDeltas.toArray(new MorphDeltaMap[0]));
+ return new J3DBodyData(array, (Bvh[]) animations.toArray(new Bvh[0]), skinMap, defaultBaseTexture, (J3DBodyData.BaseTexture[]) baseTextures.toArray(new J3DBodyData.BaseTexture[0]), (MorphDeltaMap[]) morphDeltas.toArray(new MorphDeltaMap[0]));
}
/**
* arranges the morph delta maps in depth first order
*/
private void sortMorphDeltas(Vector morphDeltas) {
- if(morphDeltas.size() == 0){
+ if (morphDeltas.size() == 0) {
return;
}
MorphDeltaMap[] deltas = (MorphDeltaMap[]) morphDeltas.toArray(new MorphDeltaMap[0]);
-
+
HashMap nodeMap = new HashMap();
for (int i = 0; i < deltas.length; i++) {
nodeMap.put(deltas[i].getName(), new MorphTreeNode(deltas[i]));
}
MorphTreeNode rootNode = null;
for (int i = 0; i < deltas.length; i++) {
- if(deltas[i].getParentName() == null){
- if(rootNode == null){
- rootNode = (MorphTreeNode)nodeMap.get(deltas[i].getName());
+ if (deltas[i].getParentName() == null) {
+ if (rootNode == null) {
+ rootNode = (MorphTreeNode) nodeMap.get(deltas[i].getName());
} else {
Log.warn("Found multiple morph delta maps with no parent, adding " + deltas[i].getName() + " to " + rootNode.map.getName());
rootNode.children.add(nodeMap.get(deltas[i].getName()));
}
} else {
- MorphTreeNode parentNode = (MorphTreeNode)nodeMap.get(deltas[i].getParentName());
- if(parentNode == null){
+ MorphTreeNode parentNode = (MorphTreeNode) nodeMap.get(deltas[i].getParentName());
+ if (parentNode == null) {
Log.warn("MorphDeltaMap (" + deltas[i].getName() + ") has unknown parent: " + deltas[i].getParentName() + ", ignoring.");
} else {
parentNode.children.add(nodeMap.get(deltas[i].getName()));
}
}
}
- if(rootNode == null){
+ if (rootNode == null) {
throw new IllegalStateException("Cannot have a morph tree with no root");
}
-
+
morphDeltas.clear();
serializeMorphTree(0, rootNode, morphDeltas);
}
@@ -223,12 +228,12 @@
*/
private void serializeMorphTree(int depth, MorphTreeNode node, Vector morphDeltas) {
depth++;
- if(depth > 30){
+ if (depth > 30) {
Log.error("Morph tree depth was greater than 30, which probably indicates a cyclic tree. Aborting");
return;
}
for (int i = 0; i < node.children.size(); i++) {
- serializeMorphTree(depth, (MorphTreeNode)node.children.get(i), morphDeltas);
+ serializeMorphTree(depth, (MorphTreeNode) node.children.get(i), morphDeltas);
}
morphDeltas.add(node.map);
}
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-20 12:21:41 UTC (rev 523)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/SkinLoader.java 2007-10-21 16:11:23 UTC (rev 524)
@@ -23,7 +23,7 @@
import com.ogoglio.viewer.j3d.J3DBodyData;
public class SkinLoader {
-
+
public static final float AVATAR_SIZE = 2; //this will eventually be changable
private GeometryArray geometry = null;
@@ -37,8 +37,18 @@
public SkinLoader(J3DBodyData bodyData, BodyConfiguration bodyConfiguration, BufferedImage customSkin) {
this.geometry = bodyData.cloneBodyGeometry();
this.morphDeltaMaps = bodyData.getMorphDeltaMaps();
- if(customSkin == null){
- this.baseImage = bodyData.getBaseTexture();
+ if (customSkin == null) {
+ if (bodyConfiguration.getBaseTextureName() == null) {
+ this.baseImage = bodyData.getDefaultBaseTexture().getImage();
+ } else {
+ J3DBodyData.BaseTexture baseTexture = bodyData.getBaseTexture(bodyConfiguration.getBaseTextureName());
+ if(baseTexture == null){
+ System.err.println("Could not find base texture by name: " + bodyConfiguration.getBaseTextureName());
+ this.baseImage = bodyData.getDefaultBaseTexture().getImage();
+ } else {
+ this.baseImage = baseTexture.getImage();
+ }
+ }
} else {
this.baseImage = customSkin;
}
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-20 12:21:41 UTC (rev 523)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java 2007-10-21 16:11:23 UTC (rev 524)
@@ -30,9 +30,11 @@
public static final String BODY_DATA_ID = "bodydataid";
+ public static final String BASE_TEXTURE_NAME = "basetexturename";
+
private XMLElement data = null;
- public BodyConfigurationDocument(long bodyConfigurationID, String ownerUsername, String displayName, long bodyDataID) {
+ public BodyConfigurationDocument(long bodyConfigurationID, String ownerUsername, String displayName, long bodyDataID, String baseTextureName) {
data = new XMLElement(NAME);
data.setAttribute(BODY_CONFIGURATION_ID, bodyConfigurationID);
ArgumentUtils.assertNotEmpty(ownerUsername);
@@ -41,6 +43,9 @@
data.setAttribute(DISPLAY_NAME, displayName);
ArgumentUtils.assertNotNegative(bodyDataID);
data.setAttribute(BODY_DATA_ID, bodyDataID);
+ if(baseTextureName != null){
+ data.setAttribute(BASE_TEXTURE_NAME, baseTextureName);
+ }
}
public BodyConfigurationDocument(XMLElement data) {
@@ -51,7 +56,7 @@
}
public BodyConfigurationDocument(BodyConfiguration bodyConfiguration) {
- this(bodyConfiguration.getBodyConfigurationID(), bodyConfiguration.getUser().getUsername(), bodyConfiguration.getDisplayName(), bodyConfiguration.getBodyDataID());
+ this(bodyConfiguration.getBodyConfigurationID(), bodyConfiguration.getUser().getUsername(), bodyConfiguration.getDisplayName(), bodyConfiguration.getBodyDataID(), bodyConfiguration.getBaseTextureName());
String[] settingNames = bodyConfiguration.getSettingNames();
for (int i = 0; i < settingNames.length; i++) {
addBodySetting(settingNames[i], bodyConfiguration.getSetting(settingNames[i]));
@@ -74,6 +79,19 @@
return data.getLongAttribute(BODY_DATA_ID);
}
+ public String getBaseTextureName(){
+ return data.getStringAttribute(BASE_TEXTURE_NAME);
+ }
+
+ public void setBaseTextureName(String baseTextureName) {
+ if(baseTextureName == null){
+ data.removeAttribute(BASE_TEXTURE_NAME);
+ return;
+ }
+ data.setAttribute(BASE_TEXTURE_NAME, baseTextureName);
+ }
+
+
public void addBodySetting(String settingName, float setting) {
data.addChild(new BodySettingDocument(getBodyConfigurationID(), settingName, setting).toElement());
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-10-22 20:34:35
|
Revision: 537
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=537&view=rev
Author: trevorolio
Date: 2007-10-22 13:34:39 -0700 (Mon, 22 Oct 2007)
Log Message:
-----------
Now guests can enter a display name, so we can finally get "Guest Gandalfs" at every event.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.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
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java 2007-10-22 12:01:32 UTC (rev 536)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java 2007-10-22 20:34:39 UTC (rev 537)
@@ -11,4 +11,8 @@
public static final String SPACE_INCLUDE_CHILDREN_PARAM = "children";
public static final String GUEST_COOKIE_PREFIX = "guest";
+
+ public static final String REQUESTED_GUEST_NAME_PARAMETER = "requestedGuestName";
+
+ public static final String GUEST_DISPLAY_NAME_PREFIX = "Guest";
}
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-22 12:01:32 UTC (rev 536)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-22 20:34:39 UTC (rev 537)
@@ -53,6 +53,7 @@
import com.ogoglio.util.BodyConstants;
import com.ogoglio.util.Log;
import com.ogoglio.util.UIConstants;
+import com.ogoglio.util.WebConstants;
import com.ogoglio.viewer.render.Camera;
import com.ogoglio.viewer.render.ClickTarget;
import com.ogoglio.viewer.render.DoorRenderable;
@@ -677,7 +678,10 @@
throw new IllegalStateException("Cannot load body data");
}
- BufferedImage customSkin = dataManager.getBodyTexture(user.getUsername(), bodyConfig.getBodyConfigurationID());
+ BufferedImage customSkin = null;
+ if(!offScreen && !user.getUsername().startsWith(WebConstants.GUEST_COOKIE_PREFIX)){
+ customSkin = dataManager.getBodyTexture(user.getUsername(), bodyConfig.getBodyConfigurationID());
+ }
boolean isLocalUser = !offScreen && username != null && user.getUsername().equals(username);
final J3DUserRenderable renderable = new J3DUserRenderable(user, bodyData, customSkin);
@@ -694,10 +698,11 @@
getCanvas().addMouseListener(motionHandler);
getCanvas().addMouseMotionListener(motionHandler);
} else if (!offScreen) {
- String displayName = user.getUsername().replaceAll("_", " ");
- if (displayName.startsWith("guest")) {
- displayName = displayName.substring(0, 1).toUpperCase() + displayName.substring(1);
+ String displayName = user.getUsername();
+ if (displayName.startsWith(WebConstants.GUEST_COOKIE_PREFIX)) {
+ displayName = J3DUserRenderable.convertGuestCookieToDisplayName(displayName);
}
+ System.out.println("Setting name tag: " + displayName);
renderable.setNameTag(displayName);
}
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-22 12:01:32 UTC (rev 536)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-10-22 20:34:39 UTC (rev 537)
@@ -16,6 +16,7 @@
import java.awt.Font;
import java.awt.image.BufferedImage;
+import java.util.regex.Pattern;
import javax.media.j3d.Billboard;
import javax.media.j3d.BoundingSphere;
@@ -29,6 +30,7 @@
import com.ogoglio.client.model.User;
import com.ogoglio.util.ArgumentUtils;
import com.ogoglio.util.BodyConstants;
+import com.ogoglio.util.WebConstants;
import com.ogoglio.viewer.j3d.body.BodyAnimator;
import com.ogoglio.viewer.j3d.body.Skeleton;
import com.ogoglio.viewer.j3d.body.SkeletonLoader;
@@ -285,4 +287,21 @@
animator = new BodyAnimator(skeleton, animation, skin, bodyAnimatorListener);
animator.animate(loop);
}
+
+ public static String convertGuestCookieToDisplayName(String displayName) {
+ if(displayName == null || !displayName.startsWith(WebConstants.GUEST_COOKIE_PREFIX)){
+ return displayName;
+ }
+ displayName = displayName.substring(WebConstants.GUEST_COOKIE_PREFIX.length() + 1);
+ StringBuffer result = new StringBuffer(WebConstants.GUEST_DISPLAY_NAME_PREFIX);
+ String[] tokens = displayName.split(Pattern.quote("_"));
+ for (int i = 0; i < tokens.length; i++) {
+ System.out.println("TOKEN " + tokens[i]);
+ }
+ int startIndex = tokens.length > 3 ? 3 : 0;
+ for (int i = startIndex; i < tokens.length; i++) {
+ result.append(" " + tokens[i]);
+ }
+ return result.toString();
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-11-01 17:27:04
|
Revision: 551
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=551&view=rev
Author: trevorolio
Date: 2007-11-01 10:27:02 -0700 (Thu, 01 Nov 2007)
Log Message:
-----------
Added a separate guest body, in this case a simplified Mike with a matte black texture.
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/BodyConfiguration.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.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-11-01 13:16:40 UTC (rev 550)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-11-01 17:27:02 UTC (rev 551)
@@ -165,8 +165,7 @@
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, null);
+ bodyConfDoc = new BodyConfigurationDocument(0, userDocs[i].getUsername(), "Body", -1, null);
} else {
bodyConfDoc = webClient.getBodyConfiguration(userDocs[i].getUsername(), userDocs[i].getBodyConfigurationID());
}
@@ -758,8 +757,12 @@
public ZipInputStream getBodyData(long bodyDataID) {
try {
- BodyDataDocument dataDoc = webClient.getBodyDataDocument(bodyDataID);
- return webClient.getBodyData(dataDoc.getFileName());
+ if(bodyDataID == -1){
+ return webClient.getBodyData(WebConstants.GUEST_BODY_FILE_NAME);
+ } else {
+ BodyDataDocument dataDoc = webClient.getBodyDataDocument(bodyDataID);
+ return webClient.getBodyData(dataDoc.getFileName());
+ }
} catch (IOException e) {
Log.warn("Requested an unknown body: " + bodyDataID);
return null;
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 2007-11-01 13:16:40 UTC (rev 550)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/BodyConfiguration.java 2007-11-01 17:27:02 UTC (rev 551)
@@ -33,8 +33,7 @@
this.bodyConfigurationID = bodyConfigurationID;
ArgumentUtils.assertNotEmpty(displayName);
this.displayName = displayName;
- ArgumentUtils.assertNotNegative(bodyDataID);
- this.bodyDataID = bodyDataID;
+ this.bodyDataID = bodyDataID; //-1 indicates that this is a guest body
this.baseTextureName = baseTextureName;
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java 2007-11-01 13:16:40 UTC (rev 550)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/WebConstants.java 2007-11-01 17:27:02 UTC (rev 551)
@@ -15,4 +15,6 @@
public static final String REQUESTED_GUEST_NAME_PARAMETER = "requestedGuestName";
public static final String GUEST_DISPLAY_NAME_PREFIX = "Guest";
+
+ public static final String GUEST_BODY_FILE_NAME = "ogoglio-body-guest.jar";
}
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-11-01 13:16:40 UTC (rev 550)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DDataManager.java 2007-11-01 17:27:02 UTC (rev 551)
@@ -37,6 +37,7 @@
import com.ogoglio.util.Log;
import com.ogoglio.util.StreamUtils;
import com.ogoglio.util.UIConstants;
+import com.ogoglio.util.WebConstants;
import com.ogoglio.viewer.j3d.body.MorphDeltaMap;
import com.ogoglio.viewer.j3d.body.MorphDeltaMapParseException;
import com.ogoglio.viewer.j3d.body.MorphDeltaMapParser;
@@ -71,8 +72,6 @@
DEFAULT_APPEARANCE.setMaterial(DEFAULT_MATERIAL);
}
- public static final String[] BODY_NAMES = { "mike", "andrea" };
-
private TemplateDataProvider templateDataProvider = null;
private BodyDataProvider bodyDataProvider = null;
@@ -90,6 +89,10 @@
}
public BufferedImage getBodyTexture(String username, long bodyConfigurationID) {
+ if(username == null || username.startsWith(WebConstants.GUEST_COOKIE_PREFIX)){
+ return null;
+ }
+
BufferedImage image = dataCache.getBodyTexture(bodyConfigurationID);
if (image != null) {
return image;
@@ -112,6 +115,11 @@
dataCache.removeBodyTexture(bodyConfigurationID);
}
+ /**
+ *
+ * @param bodyDataID if -1, indicates guest body. otherwise, bodyDataID
+ * @return
+ */
public J3DBodyData getBodyData(long bodyDataID) {
J3DBodyData data = dataCache.getBodyData(bodyDataID);
if (data != null) {
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-11-01 13:16:40 UTC (rev 550)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java 2007-11-01 17:27:02 UTC (rev 551)
@@ -41,8 +41,7 @@
data.setAttribute(OWNER_USERNAME, ownerUsername);
ArgumentUtils.assertNotNull(displayName);
data.setAttribute(DISPLAY_NAME, displayName);
- ArgumentUtils.assertNotNegative(bodyDataID);
- data.setAttribute(BODY_DATA_ID, bodyDataID);
+ data.setAttribute(BODY_DATA_ID, bodyDataID); //if -1, indicates to use the guest body
if(baseTextureName != null){
data.setAttribute(BASE_TEXTURE_NAME, baseTextureName);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-11-19 20:44:45
|
Revision: 592
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=592&view=rev
Author: trevorolio
Date: 2007-11-19 12:44:43 -0800 (Mon, 19 Nov 2007)
Log Message:
-----------
A couple of tweaks:
Caused Log to init at class initialization instead of first log (which had concurrency errors).
CometProto no longer throws null pointer exceptions during shutdown if the wrapper is already null (not thread safe, though).
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java 2007-11-19 19:44:11 UTC (rev 591)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java 2007-11-19 20:44:43 UTC (rev 592)
@@ -8,19 +8,25 @@
public class CometProto implements AsyncProto {
private Writer writer;
+
private LineOrientedCRLFSocket input;
+
private Locator local;
+
private Locator remote;
+
private boolean needsChunking;
- StringBuffer buffer=new StringBuffer();
-
+
+ StringBuffer buffer = new StringBuffer();
+
public CometProto(Writer writer, InputStream input, Locator remote, Locator local, boolean needsChunking) {
- this.writer=writer;
- this.input=new LineOrientedCRLFSocket(input);
- this.local=local;
- this.remote=remote;
- this.needsChunking=needsChunking;
+ this.writer = writer;
+ this.input = new LineOrientedCRLFSocket(input);
+ this.local = local;
+ this.remote = remote;
+ this.needsChunking = needsChunking;
}
+
public Locator getLocalLocator() {
return local;
}
@@ -34,49 +40,49 @@
}
public void prepareOutput() throws IOException {
- //no effect in comment
+ //no effect in comment
}
public String readLine() throws IOException {
- if (input==null) {
+ if (input == null) {
throw new IOException("Can't read on a stream that is already closed [readLine].");
}
- String chunkLine=input.waitForNextLine();
- String dataLine=input.waitForNextLine();
-
+ String chunkLine = input.waitForNextLine();
+ String dataLine = input.waitForNextLine();
+
if (chunkLine.equals("0")) {
throw new NegativeReadValueException("Read EOC from server! Closing!");
}
-
+
try {
- int len=Integer.parseInt(chunkLine,16);
- if (len!=dataLine.length()) {
- Log.error("Whoa! Chunk wasn't the size we expected:"+chunkLine+"->"+dataLine);
+ int len = Integer.parseInt(chunkLine, 16);
+ if (len != dataLine.length()) {
+ Log.error("Whoa! Chunk wasn't the size we expected:" + chunkLine + "->" + dataLine);
}
} catch (NumberFormatException e) {
- Log.error("Whoa! Chunk line wasn't well formed:"+chunkLine);
+ Log.error("Whoa! Chunk line wasn't well formed:" + chunkLine);
}
-
+
buffer.append(dataLine);
return CometClient.pullOutNextMessage(buffer);
}
-/* public String readString(int length) throws IOException {
- throw new IOException("Not implemented for this protocol");
- if (input==null) {
- throw new IOException("Can't read on a stream that is already closed [readString].");
- }
- String next=input.waitForNextLine();
- if (next.length()!=length) {
- throw new IOException("We are out of sync with the protocol!");
- }
- return next;
-
- }*/
+ /* public String readString(int length) throws IOException {
+ throw new IOException("Not implemented for this protocol");
+ if (input==null) {
+ throw new IOException("Can't read on a stream that is already closed [readString].");
+ }
+ String next=input.waitForNextLine();
+ if (next.length()!=length) {
+ throw new IOException("We are out of sync with the protocol!");
+ }
+ return next;
+
+ }*/
public void sendMessage(String command, String message) throws IOException {
- String bunch=command+"$"+message;
- if (writer==null) {
+ String bunch = command + "$" + message;
+ if (writer == null) {
throw new IOException("Can't write on a stream that is already closed [sendMessage].");
}
if (needsChunking) {
@@ -90,28 +96,28 @@
}
}
}
-
+
public void shutdown() {
Log.info("Shutting down Comet Proto, flushing...");
- if (writer!=null) {
+ if (writer != null) {
try {
writer.flush();
} catch (IOException e) {
- Log.error("Problem attempting to flush comet proto buffers:"+e.getMessage());
+ Log.error("Problem attempting to flush comet proto buffers:" + e.getMessage());
}
- }
- //again, a horrible modularity break: we *know* that needs chunking implies we are on the
- //client side
- if (needsChunking) {
- try {
- Log.info("Closing client-side connection to server since we are shutting down.");
- writer.close();
- } catch (IOException e) {
- Log.error("Unable to close connection to server:"+e.getMessage());
+ //again, a horrible modularity break: we *know* that needs chunking implies we are on the
+ //client side
+ if (needsChunking) {
+ try {
+ Log.info("Closing client-side connection to server since we are shutting down.");
+ writer.close();
+ } catch (IOException e) {
+ Log.error("Unable to close connection to server:" + e.getMessage());
+ }
}
}
- input=null;
- writer=null;
+ input = null;
+ writer = null;
}
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java 2007-11-19 19:44:11 UTC (rev 591)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java 2007-11-19 20:44:43 UTC (rev 592)
@@ -66,6 +66,11 @@
SpaceEvent.THING_START_MOTION_EVENT,
SpaceEvent.SHAPE_START_MOTION_EVENT
};
+
+ static {
+ faultInLogger();
+ }
+
public static void faultInLogger() {
try {
if (faultedInAlready) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-12-01 00:24:48
|
Revision: 611
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=611&view=rev
Author: trevorolio
Date: 2007-11-30 16:21:27 -0800 (Fri, 30 Nov 2007)
Log Message:
-----------
Added a spline interpolator to the scripting API, the better to do things like test for whether a thrown ball would hit a person without breaking out the hard maths.
Added a announcement function to the script API so scripts can show messages to all people in a space.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DCameraMotionBehavior.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.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-12-01 00:21:24 UTC (rev 610)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-12-01 00:21:27 UTC (rev 611)
@@ -564,6 +564,10 @@
}
shape.stopMotion(event.getTransform());
+ } else if (SpaceEvent.ANNOUNCE_EVENT.equals(event.getName())) {
+ String announcement = event.getStringProperty(SpaceEvent.ANNOUNCE_MESSAGE);
+ listener.receivedChatMessage(null, announcement);
+
} else if (SpaceEvent.TEXT_SAY_EVENT.equals(event.getName())) {
User user = space.getUser(event.getStringProperty(SpaceEvent.USERNAME));
if (user == null) {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DCameraMotionBehavior.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DCameraMotionBehavior.java 2007-12-01 00:21:24 UTC (rev 610)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DCameraMotionBehavior.java 2007-12-01 00:21:27 UTC (rev 611)
@@ -113,35 +113,10 @@
} else if (id == MouseEvent.MOUSE_PRESSED) {
transformGroup.getTransform(currXform);
currXform.get(orientation);
- getEuler(orientation, euler);
+ J3DRenderer.getEuler(orientation, euler);
x_last = evt.getX();
y_last = evt.getY();
}
}
}
-
- private void getEuler(Quat4d quat, Vector3d euler) {
- double heading = 0, bank = 0, attitude = 0;
-
- double sqw = quat.w * quat.w;
- double sqx = quat.x * quat.x;
- double sqy = quat.y * quat.y;
- double sqz = quat.z * quat.z;
- double unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor
- double test = quat.x * quat.y + quat.z * quat.w;
- if (test > 0.499 * unit) { // singularity at north pole
- heading = 2 * Math.atan2(quat.x, quat.w);
- bank = Math.PI / 2;
- attitude = 0;
- } else if (test < -0.499 * unit) { // singularity at south pole
- heading = -2 * Math.atan2(quat.x, quat.w);
- bank = -Math.PI / 2;
- attitude = 0;
- } else {
- heading = Math.atan2(2 * quat.y * quat.w - 2 * quat.x * quat.z, sqx - sqy - sqz + sqw);
- bank = Math.asin(2 * test / unit);
- attitude = Math.atan2(2 * quat.x * quat.w - 2 * quat.y * quat.z, -sqx + sqy - sqz + sqw);
- }
- euler.set(attitude, heading, bank);
- }
}
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-12-01 00:21:24 UTC (rev 610)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-12-01 00:21:27 UTC (rev 611)
@@ -35,6 +35,7 @@
import javax.media.j3d.View;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
+import javax.vecmath.Quat4d;
import javax.vecmath.Vector3d;
import javax.vecmath.Vector3f;
@@ -835,4 +836,29 @@
public boolean completedInitialLoad() {
return completedInitialLoad;
}
+
+ public static void getEuler(Quat4d quat, Vector3d euler) {
+ double heading = 0, bank = 0, attitude = 0;
+
+ double sqw = quat.w * quat.w;
+ double sqx = quat.x * quat.x;
+ double sqy = quat.y * quat.y;
+ double sqz = quat.z * quat.z;
+ double unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor
+ double test = quat.x * quat.y + quat.z * quat.w;
+ if (test > 0.499 * unit) { // singularity at north pole
+ heading = 2 * Math.atan2(quat.x, quat.w);
+ bank = Math.PI / 2;
+ attitude = 0;
+ } else if (test < -0.499 * unit) { // singularity at south pole
+ heading = -2 * Math.atan2(quat.x, quat.w);
+ bank = -Math.PI / 2;
+ attitude = 0;
+ } else {
+ heading = Math.atan2(2 * quat.y * quat.w - 2 * quat.x * quat.z, sqx - sqy - sqz + sqw);
+ bank = Math.asin(2 * test / unit);
+ attitude = Math.atan2(2 * quat.x * quat.w - 2 * quat.y * quat.z, -sqx + sqy - sqz + sqw);
+ }
+ euler.set(attitude, heading, bank);
+ }
}
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-12-01 00:21:24 UTC (rev 610)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/SpaceEvent.java 2007-12-01 00:21:27 UTC (rev 611)
@@ -224,6 +224,10 @@
public static final String USER_SAT_EVENT = "UserSat";
+ public static final String ANNOUNCE_EVENT = "Announce";
+
+ public static final String ANNOUNCE_MESSAGE = "message";
+
private String name = null;
private HashMap properties = new HashMap();
@@ -422,7 +426,7 @@
return transform;
}
- private void getTransform(Transform3D transform) {
+ public void getTransform(Transform3D transform) {
Vector3d vector = new Vector3d(getDoubleProperty(SpaceEvent.X).doubleValue(), getDoubleProperty(SpaceEvent.Y).doubleValue(), getDoubleProperty(SpaceEvent.Z).doubleValue());
Quat4d quaternion = new Quat4d(getDoubleProperty(SpaceEvent.RX).doubleValue(), getDoubleProperty(SpaceEvent.RY).doubleValue(), getDoubleProperty(SpaceEvent.RZ).doubleValue(), getDoubleProperty(SpaceEvent.RW).doubleValue());
transform.set(quaternion, vector, 1);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-12-13 01:29:34
|
Revision: 629
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=629&view=rev
Author: trevorolio
Date: 2007-12-12 17:29:36 -0800 (Wed, 12 Dec 2007)
Log Message:
-----------
Removed old debug messages.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/SenderQueue.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/TCPChannel.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java 2007-12-13 01:29:24 UTC (rev 628)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java 2007-12-13 01:29:36 UTC (rev 629)
@@ -36,14 +36,12 @@
throw new IllegalArgumentException("Cannot copy a space to itself: " + destinationSpaceID);
}
- Log.info("DUP:Creating new client:"+destinationSpaceID+","+emptyFirst+", from "+originSpaceID);
WebAPIClient client = new WebAPIClient(descriptor, auth, wire);
if (emptyFirst) {
emptySpace(destinationSpaceID, client);
}
- Log.info("DUP: Getting space document and setting simple properties");
SpaceDocument spaceDoc1 = client.getSpaceDocument(originSpaceID, false);
SpaceDocument spaceDoc2 = client.getSpaceDocument(destinationSpaceID, false);
@@ -54,9 +52,7 @@
client.setSpacePublished(destinationSpaceID, spaceDoc1.isPublished());
ThingDocument[] thingDocs = client.getThingDocuments(originSpaceID);
- Log.info("DUP: setting up possessions and things:"+thingDocs.length);
for (int i = 0; i < thingDocs.length; i++) {
- Log.info("DUP: Setting up thing "+i+":"+thingDocs[i].getDisplayName());
PossessionDocument[] possDocuments = client.getPossessionDocuments();
PossessionDocument possToUse = null;
for (int j = 0; j < possDocuments.length; j++) {
@@ -85,12 +81,10 @@
}
DoorDocument[] doorDocs = client.getDoorDocuments(spaceDoc1.getSpaceID());
- Log.info("DUP: Setting up doors:"+doorDocs.length);
for (int i = 0; i < doorDocs.length; i++) {
client.createDoor(spaceDoc2.getSpaceID(), doorDocs[i].getTemplateID(), doorDocs[i].getTemplateOwner(), doorDocs[i].getDisplayName(), doorDocs[i].getLink(), doorDocs[i].getTransform());
}
- Log.info("DUP: copying space settings ");
Map settings = client.getSpaceSettings(spaceDoc1.getSpaceID());
String[] keys = (String[]) settings.keySet().toArray(new String[0]);
for (int i = 0; i < keys.length; i++) {
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-12-13 01:29:24 UTC (rev 628)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-12-13 01:29:36 UTC (rev 629)
@@ -86,25 +86,16 @@
public AccountDocument updateAccount(AccountDocument accountDoc) throws IOException {
XMLElement result = wire.sendAuthenticatedXML(descriptor.getAccountURI(accountDoc.getUsername()), accountDoc.toElement().toString(), "POST", authenticator.getAuthCookie());
- if (result == null) {
- return null;
- }
return new AccountDocument(result);
}
public AccountDocument getAccountDocument(String username) throws IOException {
XMLElement response = wire.fetchAuthenticatedXML(descriptor.getAccountURI(username), authenticator.getAuthCookie());
- if (response == null) {
- return null;
- }
return new AccountDocument(response);
}
public AuthDocument getAuthDocumentByAuthCookie(String authCookie) throws IOException {
XMLElement response = wire.fetchAuthenticatedXML(descriptor.getMeAuthURI(), authCookie);
- if (response == null) {
- return null;
- }
return new AuthDocument(response);
}
@@ -389,7 +380,6 @@
XMLElement list = wire.fetchAuthenticatedXML(descriptor.getThingsURI(spaceID), authenticator.getAuthCookie());
XMLElement[] children = (XMLElement[]) list.getChildren().toArray(new XMLElement[0]);
- Log.info("CLIENT: Fetched thing document for space "+spaceID+" and found "+children.length+" children");
for (int i = 0; i < children.length; i++) {
results.add(new ThingDocument(children[i]));
}
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-12-13 01:29:24 UTC (rev 628)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2007-12-13 01:29:36 UTC (rev 629)
@@ -383,7 +383,6 @@
}
public synchronized Thing[] getThings() {
- Log.info("SPACE: query of things content:"+ things.values().size()+" of space "+spaceID);
return (Thing[]) things.values().toArray(new Thing[0]);
}
@@ -428,7 +427,6 @@
}
public void addThing(Thing thing) {
- Log.info("Space: adding thing:"+thing.getName()+" to space "+spaceID);
synchronized (this) {
if (thing.getThingID() == -1) {
thing.setThingID(getNewThingID());
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/SenderQueue.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/SenderQueue.java 2007-12-13 01:29:24 UTC (rev 628)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/SenderQueue.java 2007-12-13 01:29:36 UTC (rev 629)
@@ -41,16 +41,13 @@
public void start(String debugInfo) {
senderThread.setName("sender-thread-"+debugInfo+"-"+senderThread.getId());
- //Log.info("Launching thread "+senderThread.getName());
senderThread.start();
}
public void cleanup() {
cleaned = true;
- Log.info("About to shut down the client proto of the sender queue...");
clientProto.shutdown();
if (messageQueue != null) {
- Log.info("About to close the message queue associated with the SenderQueue");
messageQueue.close();
}
}
@@ -83,7 +80,6 @@
Message message = (Message) messageQueue.dequeue();
unsafeSendMessage(message);
} catch (Throwable e) {
- //Log.error("Could not send message [aborting thread:"+Thread.currentThread().getName()+"]:"+ e.getClass().getName()+":"+e.getMessage());
cleaned=true;
}
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/TCPChannel.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/TCPChannel.java 2007-12-13 01:29:24 UTC (rev 628)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/TCPChannel.java 2007-12-13 01:29:36 UTC (rev 629)
@@ -66,7 +66,6 @@
if (needAReaderThread) {
readerThread = new TCPMessageReader(clientProto, message_handler, this);
readerThread.setName("tcp-reader-"+debugInfo+"-"+readerThread.getId());
- //Log.info("Starting reader thread:"+readerThread.getName());
readerThread.start();
}
@@ -74,7 +73,7 @@
}
public void clientReady(AsyncProto newlyConnectedProto) {
- Log.info("Client connected from: "+newlyConnectedProto.getRemoteLocator());
+ Log.debug("Client connected from: "+newlyConnectedProto.getRemoteLocator());
}
public interface Listener {
public void channelClosed(TCPChannel channel);
@@ -91,9 +90,7 @@
public void cleanup() {
//cleaned = true;
try {
- Log.info("Cleaning up the TCP channel "+getLocalLocator());
if (readerThread!=null) {
- Log.info("Reader thread about to be cleaned up...");
readerThread.cleanup();
}
} catch (Exception e) {
@@ -101,13 +98,11 @@
}
try {
if (senderQueue!=null) {
- Log.info("Sender queue about to be cleaned up...");
senderQueue.cleanup();
}
} catch (Exception e) {
Log.error("TCPChannel: Trying to cleanup to senderQueue:"+(e.getClass().getName()),e);
}
- Log.info("About to tell listener that the TCP channel is now closed.");
listener.channelClosed(this);
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometClient.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometClient.java 2007-12-13 01:29:24 UTC (rev 628)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometClient.java 2007-12-13 01:29:36 UTC (rev 629)
@@ -62,7 +62,6 @@
}
private static void sendHTTPStartupInfo(Writer wr, String host, String path) throws IOException {
- Log.debug("About to send POST to "+path+" on "+host);
/*sendLine("POST "+path+" HTTP/1.1", wr);
HACK FOR DEALING WITH MOD_PROXY IN APACHE 2.2*/
sendLine("GET "+path+" HTTP/1.1", wr);
@@ -70,7 +69,6 @@
sendLine("Transfer-encoding: chunked",wr);
sendLine("",wr);
wr.flush();
- Log.debug("GET/POST Sent!");
}
private static String getHTTPResponse(InputStream is) throws IOException {
@@ -97,7 +95,7 @@
public static String pullOutNextMessage(StringBuffer buff) {
//if you have no "$" then you are right at the front
if (buff.indexOf("$")==-1) {
- Log.info("Unusual buffer situation, no $ found yet out of "+buff.length()+" chars...");
+ Log.warn("Unusual buffer situation, no $ found yet out of "+buff.length()+" chars...");
return null;
}
int result = CometClient.pullOutCommandPart(buff);
@@ -105,7 +103,6 @@
return null;
}
if (result== CometClient.CMD_BUFFERED) {
- //Log.info("Buffered partial packet of "+buff.length()+" chars...");
return null;
}
//the result is the size of the substring we want
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java 2007-12-13 01:29:24 UTC (rev 628)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java 2007-12-13 01:29:36 UTC (rev 629)
@@ -98,7 +98,6 @@
}
public void shutdown() {
- Log.info("Shutting down Comet Proto, flushing...");
if (writer != null) {
try {
writer.flush();
@@ -110,7 +109,6 @@
//client side
if (needsChunking) {
try {
- Log.info("Closing client-side connection to server since we are shutting down. ("+(writer==null)+")");
if (writer!=null) {
writer.close();
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java 2007-12-13 01:29:24 UTC (rev 628)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/Log.java 2007-12-13 01:29:36 UTC (rev 629)
@@ -47,7 +47,7 @@
}
static SimpleLogger simple = new SimpleLogger();
- static boolean haveLog4J = false;
+ public static boolean haveLog4J = false;
static Object reallyALogger=null;
static Object reallyTheSpaceLogger=null;
static boolean faultedInAlready=false;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-01-13 23:11:25
|
Revision: 684
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=684&view=rev
Author: trevorolio
Date: 2008-01-13 15:11:30 -0800 (Sun, 13 Jan 2008)
Log Message:
-----------
Fixed a bug in body configuration delete when using admin access.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyDataDocument.java
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-01-13 21:27:58 UTC (rev 683)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2008-01-13 23:11:30 UTC (rev 684)
@@ -26,7 +26,6 @@
import nanoxml.XMLElement;
import com.ogoglio.util.ArgumentUtils;
-import com.ogoglio.util.Log;
import com.ogoglio.util.StreamUtils;
import com.ogoglio.util.UIConstants;
import com.ogoglio.xml.AccountDocument;
@@ -518,6 +517,16 @@
return new ZipInputStream(stream);
}
+ public BodyConfigurationDocument[] getBodyConfigurations(String username) throws IOException {
+ XMLElement result = wire.fetchAuthenticatedXML(descriptor.getBodyConfigurationsURI(username), authenticator.getAuthCookie());
+ Vector docs = new Vector();
+ Vector children = result.getChildren();
+ for (int i = 0; i < children.size(); i++) {
+ docs.add(new BodyConfigurationDocument((XMLElement) children.get(i)));
+ }
+ return (BodyConfigurationDocument[]) docs.toArray(new BodyConfigurationDocument[0]);
+ }
+
public BodyConfigurationDocument createBodyConfiguration(String username, String displayName, long bodyDataID) throws IOException {
BodyConfigurationDocument configDoc = new BodyConfigurationDocument(-1, username, displayName, bodyDataID, null);
return new BodyConfigurationDocument(wire.postAuthenticatedXML(descriptor.getBodyConfigurationsURI(username), configDoc.toString(), authenticator.getAuthCookie()));
@@ -526,6 +535,14 @@
public BodyConfigurationDocument getBodyConfiguration(String username, long bodyConfigurationID) throws IOException {
return new BodyConfigurationDocument(wire.fetchAuthenticatedXML(descriptor.getBodyConfigurationURI(username, bodyConfigurationID), authenticator.getAuthCookie()));
}
+
+ public boolean deleteBodyConfiguration(String username, long bodyConfigurationID) {
+ try {
+ return wire.sendDelete(descriptor.getBodyConfigurationURI(username, bodyConfigurationID), authenticator.getAuthCookie());
+ } catch (IOException e) {
+ return false;
+ }
+ }
public BodyConfigurationDocument updateBodyConfiguration(BodyConfigurationDocument configDoc) throws IOException {
return new BodyConfigurationDocument(wire.postAuthenticatedXML(descriptor.getBodyConfigurationURI(configDoc.getOwnerUsername(), configDoc.getBodyConfigurationID()), configDoc.toString(), authenticator.getAuthCookie()));
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-01-13 21:27:58 UTC (rev 683)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java 2008-01-13 23:11:30 UTC (rev 684)
@@ -78,6 +78,10 @@
return data.getLongAttribute(BODY_DATA_ID);
}
+ public void setBodyDataID(long bodyDataID) {
+ data.setAttribute(BODY_DATA_ID, bodyDataID);
+ }
+
public String getBaseTextureName(){
return data.getStringAttribute(BASE_TEXTURE_NAME);
}
@@ -120,4 +124,5 @@
public String toString(){
return data.toString();
}
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyDataDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyDataDocument.java 2008-01-13 21:27:58 UTC (rev 683)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyDataDocument.java 2008-01-13 23:11:30 UTC (rev 684)
@@ -19,6 +19,8 @@
public class BodyDataDocument {
+ public static final String GUEST_BODY_NAME = "Guest";
+
public static final String NAME = "bodydata";
private static final String BODY_DATA_ID = "bodydataid";
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: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-07 12:20:25
|
Revision: 724
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=724&view=rev
Author: trevorolio
Date: 2008-02-07 04:20:28 -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-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/viewer/j3d/body/Skin.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java
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-07 12:20:21 UTC (rev 723)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2008-02-07 12:20:28 UTC (rev 724)
@@ -313,7 +313,18 @@
public TemplateDocument getTemplateDocument(String ownerUsername, long templateID) throws IOException {
return new TemplateDocument(wire.fetchAuthenticatedXML(descriptor.getTemplateURI(ownerUsername, templateID), authenticator.getAuthCookie()));
}
+
+ public TemplateDocument[] getAttachmentTemplateDocuments() throws IOException {
+ XMLElement list = wire.fetchAuthenticatedXML(descriptor.getAttachmentTemplatesURI(), authenticator.getAuthCookie());
+ Vector result = new Vector();
+ XMLElement[] children = (XMLElement[]) list.getChildren().toArray(new XMLElement[0]);
+ for (int i = 0; i < children.length; i++) {
+ result.add(new TemplateDocument(children[i]));
+ }
+ return (TemplateDocument[]) result.toArray(new TemplateDocument[0]);
+ }
+
public void uploadTemplateGeometryStream(String ownerUsername, long templateID, int lodIndex, InputStream input) throws IOException {
wire.performPOST(descriptor.getTemplateGeometryURI(ownerUsername, templateID, lodIndex), StreamUtils.readInput(input), "application/octet-stream", 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 2008-02-07 12:20:21 UTC (rev 723)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java 2008-02-07 12:20:28 UTC (rev 724)
@@ -89,6 +89,10 @@
return WebAPIUtil.appendToURI(getTemplatesURI(username), templateID + "/");
}
+ public URI getAttachmentTemplatesURI() {
+ return WebAPIUtil.appendToURI(getAccountURI(), "template/attachment/");
+ }
+
public URI getDoorsURI(long spaceID) {
return WebAPIUtil.appendToURI(getSpaceURI(spaceID), "door/");
}
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-07 12:20:21 UTC (rev 723)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java 2008-02-07 12:20:28 UTC (rev 724)
@@ -120,7 +120,7 @@
BufferedImage[] decalBIs = getDecals();
for (int i = 0; i < decalBIs.length; i++) {
- g.drawImage(decalBIs[i], 0, 0, null);
+ g.drawImage(decalBIs[i], 0, 0, imageComp.getWidth(), imageComp.getHeight(), null);
}
}
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-07 12:20:21 UTC (rev 723)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/BodyConfigurationDocument.java 2008-02-07 12:20:28 UTC (rev 724)
@@ -15,6 +15,7 @@
import nanoxml.XMLElement;
+import com.ogoglio.client.model.Attachment;
import com.ogoglio.client.model.BodyConfiguration;
import com.ogoglio.util.ArgumentUtils;
@@ -60,6 +61,10 @@
for (int i = 0; i < settingNames.length; i++) {
addBodySetting(settingNames[i], bodyConfiguration.getSetting(settingNames[i]));
}
+ Attachment[] attachments = bodyConfiguration.getAttachments();
+ for (int i = 0; i < attachments.length; i++) {
+ data.addChild(new AttachmentDocument(attachments[i].getAttachmentID(), attachments[i].getTemplate().getOwnerUsername(), attachments[i].getTemplate().getTemplateID(), bodyConfiguration.getBodyConfigurationID()).toElement());
+ }
}
public long getBodyConfigurationID(){
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-21 00:00:06
|
Revision: 760
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=760&view=rev
Author: trevorolio
Date: 2008-02-20 16:00:09 -0800 (Wed, 20 Feb 2008)
Log Message:
-----------
Attempt to alleviate some of the problems where two avatars appear for one user, though there is still a race condition between addUser and addListener.
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
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 2008-02-20 21:58:37 UTC (rev 759)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2008-02-21 00:00:09 UTC (rev 760)
@@ -59,7 +59,7 @@
private Context spaceContext = null;
private Color3f backgroundColor = null;
-
+
public Space(Context spaceContext, long spaceID, String displayName, String ownerUsername, boolean displaySea, double seaLevel, Color3f backgroundColor) {
ArgumentUtils.assertNotNull(spaceContext);
this.spaceContext = spaceContext;
@@ -78,8 +78,8 @@
ArgumentUtils.assertNotNull(backgroundColor);
this.backgroundColor = backgroundColor;
}
-
- public Color3f getBackgroundColor(){
+
+ public Color3f getBackgroundColor() {
return backgroundColor;
}
@@ -113,24 +113,31 @@
return;
}
+ Template[] templates = null;
+ Thing[] things = null;
+ User[] users = null;
+ Door[] doors = null;
+
+ synchronized (this) {
+ templates = getTemplates();
+ things = getThings();
+ users = getUsers();
+ doors = getDoors();
+ }
+
// This is a little weird.
// We load all the templates and one Thing before any users.
// This allows thing 1 to be a landscape.
- Template[] templates = getTemplates();
for (int i = 0; i < templates.length; i++) {
listener.templateAdded(templates[i]);
}
- 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++) {
if (users[i].getSeat() == null) {
@@ -149,11 +156,9 @@
}
}
- Door[] doors = getDoors();
for (int i = 0; i < doors.length; i++) {
listener.doorAdded(doors[i]);
}
-
}
private class DistanceComparator implements Comparator {
@@ -393,7 +398,7 @@
synchronized (this) {
User[] users = getUsers();
for (int i = 0; i < users.length; i++) {
- if(users[i].getSeat() == thing){
+ if (users[i].getSeat() == thing) {
users[i].setSeat(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-20 21:58:37 UTC (rev 759)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2008-02-21 00:00:09 UTC (rev 760)
@@ -407,7 +407,7 @@
}
public void userAdded(User user) {
- if (rendererStopped) {
+ if (rendererStopped || getUserRenderable(user.getUsername()) != null) {
return;
}
try {
@@ -427,7 +427,9 @@
renderable.playAnimation(BodyConstants.SIT_ANIMATION_NAME, false, false);
return;
}
-
+ if(getUserRenderable(user.getUsername()) != null){
+ return;
+ }
usersGroup.addChild(renderable);
SplinePath path = user.getSplinePath();
if (path != null) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-03-02 14:10:47
|
Revision: 786
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=786&view=rev
Author: trevorolio
Date: 2008-03-02 06:10:50 -0800 (Sun, 02 Mar 2008)
Log Message:
-----------
Tweaks:
Make SpaceDuplicator's empty function available to other code.
Add an argument util function that asserts a parameter is greater than a constant.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/obj/Obj.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java 2008-02-29 19:56:33 UTC (rev 785)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java 2008-03-02 14:10:50 UTC (rev 786)
@@ -103,7 +103,7 @@
docToMove.setScale(placedDoc.getScale());
}
- private void emptySpace(long spaceID, WebAPIClient client) throws IOException {
+ public static void emptySpace(long spaceID, WebAPIClient client) throws IOException {
ThingDocument[] thingDocs = client.getThingDocuments(spaceID);
for (int i = 0; i < thingDocs.length; i++) {
client.removePossessionFromSpace(thingDocs[i].getPossessionID());
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java 2008-02-29 19:56:33 UTC (rev 785)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java 2008-03-02 14:10:50 UTC (rev 786)
@@ -147,4 +147,10 @@
assertNotNegative(id);
}
+ public static void assertGreaterThan(int minValue, int value) {
+ if(value <= minValue){
+ throw new IllegalArgumentException("parameter " + value + " is less than " + minValue + " (and it shouldn't be)");
+ }
+ }
+
}
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-29 19:56:33 UTC (rev 785)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/obj/Obj.java 2008-03-02 14:10:50 UTC (rev 786)
@@ -288,7 +288,7 @@
}
/*
- * @param index vertext indices start at 1, not 0
+ * @param index vertex indices start at 1, not 0
*/
public Point3f getTextureVertex(int index) {
if (index == 0 || index > textureVertexCount()) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|