|
From: <tre...@us...> - 2007-12-10 22:50:56
|
Revision: 625
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=625&view=rev
Author: trevorolio
Date: 2007-12-10 14:50:59 -0800 (Mon, 10 Dec 2007)
Log Message:
-----------
Fixed a couple of bugs in CometProto so it no longer throws NullPointerExceptions in routine failure cases seen in tests. Added mutable background colors to spaces.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/resources/populate/space-3
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2007-12-10 22:50:47 UTC (rev 624)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2007-12-10 22:50:59 UTC (rev 625)
@@ -74,6 +74,20 @@
dirty = true;
record.setDisplaySea(spaceDocument.getDisplaySea());
}
+
+ float[] bgColor = spaceDocument.getBackgroundColor();
+ if(record.getBgRed() != bgColor[0]){
+ dirty = true;
+ record.setBgRed(bgColor[0]);
+ }
+ if(record.getBgGreen() != bgColor[1]){
+ dirty = true;
+ record.setBgGreen(bgColor[1]);
+ }
+ if(record.getBgBlue() != bgColor[2]){
+ dirty = true;
+ record.setBgBlue(bgColor[2]);
+ }
if (Math.abs(spaceDocument.getSeaLevel() - record.getSeaLevel()) > 0.0001) {
dirty = true;
@@ -264,40 +278,7 @@
task.setSessionFactory(sessionFactory);
return (SimRecord[]) task.execute();
}
- public static SimRecord findOrAssignSim_OLD_VERSION(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
- HibernateTask task = new HibernateTask() {
- public Object run(Session hibernateSession) {
- SimRecord simRecord = null;
- if (spaceRecord.getSimID() != -1) {
- Query simQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIM_BY_ID);
- simQuery.setLong("simID", spaceRecord.getSimID());
- simRecord = (SimRecord) simQuery.uniqueResult();
- if (simRecord == null || simRecord.isActive() == false) {
- spaceRecord.setSimID(-1);
- updateRecordAndUpdateModifiedTime(spaceRecord, hibernateSession, true);
- simRecord = null;
- } else {
- return simRecord;
- }
- }
-
- Query simsQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIMS_BY_ACTIVE);
- simsQuery.setBoolean("active", true);
- SimRecord[] sims = (SimRecord[]) simsQuery.list().toArray(new SimRecord[0]);
- if (sims.length == 0) { // no active sims!!!
- return null;
- }
- //TODO pick a sim based on load, not at random
- simRecord = (SimRecord) sims[Math.abs(RANDOM.nextInt() % sims.length)];
- spaceRecord.setSimID(simRecord.getSimID());
- updateRecordAndUpdateModifiedTime(spaceRecord, hibernateSession, true);
- return simRecord;
- }
- };
- task.setSessionFactory(sessionFactory);
- return (SimRecord) task.execute();
- }
-
+
public static SpaceRecord createSpace(final String displayName, final String ownerUsername, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceRecord.java 2007-12-10 22:50:47 UTC (rev 624)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceRecord.java 2007-12-10 22:50:59 UTC (rev 625)
@@ -15,6 +15,8 @@
import java.util.Date;
+import com.ogoglio.util.UIConstants;
+import com.ogoglio.xml.SpaceDocument;
import com.ogoglio.xml.TemplateSupportFileDocument;
public class SpaceRecord {
@@ -30,13 +32,19 @@
private int maxGuests = 0;
private boolean displaySea = false;
-
+
private double seaLevel = 0;
-
+
private long simID = -1;
- private long lastModifiedTime=0L;
-
+ private long lastModifiedTime = 0L;
+
+ private float bgRed = UIConstants.LIGHT_BLUE.x;
+
+ private float bgGreen = UIConstants.LIGHT_BLUE.y;
+
+ private float bgBlue = UIConstants.LIGHT_BLUE.z;
+
public SpaceRecord() {
}
@@ -73,7 +81,7 @@
public void setSeaLevel(double seaLevel) {
this.seaLevel = seaLevel;
}
-
+
public double getSeaLevel() {
return seaLevel;
}
@@ -101,11 +109,11 @@
public long getSimID() {
return simID;
}
-
+
public void setSimID(long simID) {
this.simID = simID;
}
-
+
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof SpaceRecord)) {
return false;
@@ -130,9 +138,9 @@
}
public void setLastModifiedTime(long time) {
- this.lastModifiedTime=time;
+ this.lastModifiedTime = time;
}
-
+
public long getLastModifiedTime() {
return this.lastModifiedTime;
}
@@ -141,4 +149,41 @@
return TemplateSupportFileDocument.fmt.format(new Date(lastModifiedTime));
}
+ public void setBackgroundColor(float red, float green, float blue){
+ if (!SpaceDocument.isValidColor(red) || !SpaceDocument.isValidColor(green) || !SpaceDocument.isValidColor(blue)){
+ throw new IllegalArgumentException("Bad rgb value: " + red + "," + green + "," + blue);
+ }
+ this.bgRed = red;
+ this.bgGreen = green;
+ this.bgBlue = blue;
+ }
+
+ public float[] getBackgroundColor(){
+ return new float[]{ bgRed, bgGreen, bgBlue };
+ }
+
+ public float getBgRed() {
+ return bgRed;
+ }
+
+ public void setBgRed(float bgRed) {
+ this.bgRed = bgRed;
+ }
+
+ public float getBgGreen() {
+ return bgGreen;
+ }
+
+ public void setBgGreen(float bgGreen) {
+ this.bgGreen = bgGreen;
+ }
+
+ public float getBgBlue() {
+ return bgBlue;
+ }
+
+ public void setBgBlue(float bgBlue) {
+ this.bgBlue = bgBlue;
+ }
+
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2007-12-10 22:50:47 UTC (rev 624)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2007-12-10 22:50:59 UTC (rev 625)
@@ -290,7 +290,6 @@
}
public SpaceSimulator getOrCreateSpaceSimulator(SpaceRecord record) {
- Log.debug("Sim.getOrCreateSpaceSim:" + record.getDisplayName() + "," + record.getSpaceID());
synchronized (spaceSimulators) {
SpaceSimulator simulator = (SpaceSimulator) spaceSimulators.getForward(new Long(record.getSpaceID()));
if (simulator != null) {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-12-10 22:50:47 UTC (rev 624)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-12-10 22:50:59 UTC (rev 625)
@@ -24,6 +24,7 @@
import java.util.zip.ZipInputStream;
import javax.media.j3d.Transform3D;
+import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
@@ -92,7 +93,9 @@
userCounts = new UserCounts();
- space = new Space(new SimulatorSpaceContext(), spaceDocument.getSpaceID(), spaceDocument.getDisplayName(), spaceDocument.getOwnerUsername(), spaceDocument.getDisplaySea(), spaceDocument.getSeaLevel());
+ float[] bgColor = spaceDocument.getBackgroundColor();
+ Color3f backgroundColor = new Color3f(bgColor[0], bgColor[1], bgColor[2]);
+ space = new Space(new SimulatorSpaceContext(), spaceDocument.getSpaceID(), spaceDocument.getDisplayName(), spaceDocument.getOwnerUsername(), spaceDocument.getDisplaySea(), spaceDocument.getSeaLevel(), backgroundColor);
renderer = new J3DRenderer(space, null, new InSimInputListener(), templateDataProvider, new InSimBodyDataProvider(), true);
renderer.startRenderer();
@@ -924,7 +927,7 @@
}
public SpaceDocument toSpaceDocument() {
- SpaceDocument spaceDoc = new SpaceDocument(space.getSpaceID(), space.getDisplayName(), space.getOwnerUsername(), false, 0, space.shouldDisplaySea(), space.getSeaLevel(), -1, null);
+ SpaceDocument spaceDoc = new SpaceDocument(space.getSpaceID(), space.getDisplayName(), space.getOwnerUsername(), false, 0, space.shouldDisplaySea(), space.getSeaLevel(), -1, null, new float[] {space.getBackgroundColor().x, space.getBackgroundColor().y, space.getBackgroundColor().z });
ThingDocument[] thingDocs = getThingDocuments();
for (int i = 0; i < thingDocs.length; i++) {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-12-10 22:50:47 UTC (rev 624)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-12-10 22:50:59 UTC (rev 625)
@@ -219,11 +219,11 @@
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
- SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
-
SpaceDocument spaceDoc = DocumentFactory.documentFromRecord(spaceRecord);
if ("true".equals(request.getParameter(SpaceServlet.INCLUDE_CHILDREN_PARAM))) {
+ SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
+
HashMap templateDocs = new HashMap();
DoorDocument[] doorDocs = simulator.getDoorDocuments();
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java 2007-12-10 22:50:47 UTC (rev 624)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java 2007-12-10 22:50:59 UTC (rev 625)
@@ -34,8 +34,7 @@
}
public static SpaceDocument documentFromRecord(SpaceRecord requestedRecord) {
- return new SpaceDocument(requestedRecord.getSpaceID(), requestedRecord.getDisplayName(), requestedRecord.getOwnerUsername(), requestedRecord.isPublished(), requestedRecord.getMaxGuests(), requestedRecord.getDisplaySea(), requestedRecord.getSeaLevel(), requestedRecord.getSimID(), requestedRecord.getLastModifiedTimeGMT());
-
+ return new SpaceDocument(requestedRecord.getSpaceID(), requestedRecord.getDisplayName(), requestedRecord.getOwnerUsername(), requestedRecord.isPublished(), requestedRecord.getMaxGuests(), requestedRecord.getDisplaySea(), requestedRecord.getSeaLevel(), requestedRecord.getSimID(), requestedRecord.getLastModifiedTimeGMT(), requestedRecord.getBackgroundColor());
}
public static SpaceMemberDocument documentFromRecord(SpaceMemberRecord record) {
Modified: maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml 2007-12-10 22:50:47 UTC (rev 624)
+++ maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml 2007-12-10 22:50:59 UTC (rev 625)
@@ -53,6 +53,9 @@
<property name="seaLevel" />
<property name="simID" />
<property name="lastModifiedTime" />
+ <property name="bgRed" />
+ <property name="bgGreen" />
+ <property name="bgBlue" />
</class>
<class name="com.ogoglio.persist.SpaceMemberRecord"
Added: maven/trunk/ogoglio-server/src/main/resources/populate/space-3
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/space-3 (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/space-3 2007-12-10 22:50:59 UTC (rev 625)
@@ -0,0 +1 @@
+<space displaysea="false" maxguests="0" displayname="Solar System" simid="1" published="true" spaceid="2" bgred="0.000000" bgblue="0.000000" bggreen="0.000000" sealevel="0.000000" ownerusername="admin"><thing templateid="87" rz="0.000000" ry="0.000000" rx="0.000000" rw="1.000000" scalez="0.010000" displayname="Solar System" scaley="0.010000" templateowner="admin" scalex="0.010000" possessionid="1" thingid="1" z="0.000000" y="-4.000000" x="0.000000" ownerusername="admin"/></space>
\ No newline at end of file
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2007-12-10 22:50:47 UTC (rev 624)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2007-12-10 22:50:59 UTC (rev 625)
@@ -29,7 +29,7 @@
TestSpaceListener listener = new TestSpaceListener();
SpaceSimulator spaceSimulator = null;
try {
- SpaceDocument spaceDocument = new SpaceDocument(1, "Space", "trevor", true, 0, false, 0, 1, null);
+ SpaceDocument spaceDocument = new SpaceDocument(1, "Space", "trevor", true, 0, false, 0, 1, null, UIConstants.SKY_COLOR_ARRAY);
spaceSimulator = new SpaceSimulator(spaceDocument, listener);
spaceSimulator.startSim();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|