Scene manager now follows place manager example in requesting an unmap
from the scene registry during its shutdown process. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@545 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: SceneManager.java,v 1.6 2001/10/11 04:07:54 mdb Exp $
|
// $Id: SceneManager.java,v 1.7 2001/10/24 00:58:12 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.whirled.server;
|
package com.threerings.whirled.server;
|
||||||
|
|
||||||
@@ -38,7 +38,9 @@ public class SceneManager extends PlaceManager
|
|||||||
protected void didStartup ()
|
protected void didStartup ()
|
||||||
{
|
{
|
||||||
super.didStartup();
|
super.didStartup();
|
||||||
_screg.sceneManagerDidInit(this);
|
|
||||||
|
// let the scene registry know that we're up and running
|
||||||
|
_screg.sceneManagerDidStart(this);
|
||||||
|
|
||||||
// register a chat message handler because we want to support
|
// register a chat message handler because we want to support
|
||||||
// chatting
|
// chatting
|
||||||
@@ -46,6 +48,18 @@ public class SceneManager extends PlaceManager
|
|||||||
registerMessageHandler(ChatService.SPEAK_REQUEST, handler);
|
registerMessageHandler(ChatService.SPEAK_REQUEST, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when we have shutdown.
|
||||||
|
*/
|
||||||
|
protected void didShutdown ()
|
||||||
|
{
|
||||||
|
super.didShutdown();
|
||||||
|
|
||||||
|
// unregister ourselves with the scene registry
|
||||||
|
_screg.unmapSceneManager(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
// documentation inherited
|
||||||
protected void toString (StringBuffer buf)
|
protected void toString (StringBuffer buf)
|
||||||
{
|
{
|
||||||
super.toString(buf);
|
super.toString(buf);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: SceneRegistry.java,v 1.7 2001/10/24 00:38:54 mdb Exp $
|
// $Id: SceneRegistry.java,v 1.8 2001/10/24 00:58:12 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.whirled.server;
|
package com.threerings.whirled.server;
|
||||||
|
|
||||||
@@ -153,6 +153,9 @@ public class SceneRegistry
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the scene resolution has completed successfully.
|
||||||
|
*/
|
||||||
protected void processSuccessfulResolution (Scene scene)
|
protected void processSuccessfulResolution (Scene scene)
|
||||||
{
|
{
|
||||||
// now that the scene is loaded, we can create a scene manager for
|
// now that the scene is loaded, we can create a scene manager for
|
||||||
@@ -180,6 +183,9 @@ public class SceneRegistry
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called if resolving the scene fails for some reason.
|
||||||
|
*/
|
||||||
protected void processFailedResolution (int sceneId, Exception cause)
|
protected void processFailedResolution (int sceneId, Exception cause)
|
||||||
{
|
{
|
||||||
// alas things didn't work out, notify our penders
|
// alas things didn't work out, notify our penders
|
||||||
@@ -197,7 +203,11 @@ public class SceneRegistry
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void sceneManagerDidInit (SceneManager scmgr)
|
/**
|
||||||
|
* Called by the scene manager once it has started up (meaning that it
|
||||||
|
* has its place object and is ready to roll).
|
||||||
|
*/
|
||||||
|
protected void sceneManagerDidStart (SceneManager scmgr)
|
||||||
{
|
{
|
||||||
// register this scene manager in our table
|
// register this scene manager in our table
|
||||||
int sceneId = scmgr.getScene().getId();
|
int sceneId = scmgr.getScene().getId();
|
||||||
@@ -222,17 +232,15 @@ public class SceneRegistry
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a place is destroyed. We clean up our extra scene
|
* Called by the scene manager when it is shut down.
|
||||||
* information here.
|
|
||||||
*/
|
*/
|
||||||
protected void placeWasDestroyed (PlaceManager pmgr)
|
protected void unmapSceneManager (SceneManager scmgr)
|
||||||
{
|
{
|
||||||
super.placeWasDestroyed(pmgr);
|
if (_scenemgrs.remove(scmgr.getScene().getId()) == null) {
|
||||||
|
Log.warning("Requested to unmap unmapped scene manager " +
|
||||||
// if this is a scene manager, remove it from our scene table
|
"[scmgr=" + scmgr + "].");
|
||||||
if (pmgr instanceof SceneManager) {
|
} else {
|
||||||
SceneManager scmgr = (SceneManager)pmgr;
|
Log.info("Unmapped scene manager " + scmgr + ".");
|
||||||
_scenemgrs.remove(scmgr.getScene().getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user