org.vrspace.server.object
Class Alice

java.lang.Object
  extended byjava.util.Observable
      extended byorg.vrspace.server.VRObject
          extended byorg.vrspace.server.DBObject
              extended byorg.vrspace.server.PublicDBObject
                  extended byorg.vrspace.server.OwnedDBObject
                      extended byorg.vrspace.server.Client
                          extended byorg.vrspace.server.object.User
                              extended byorg.vrspace.server.object.Alice
All Implemented Interfaces:
java.lang.Cloneable, Daemon, HasTransform, java.util.Observer, Owned, Owner, java.lang.Runnable

public class Alice
extends User
implements Daemon, java.lang.Runnable

AliceBot VRObject. Plugin for CharlieBot AIML interpreter, get one at http://sf.net/projects/charliebot TODO: maintain remote scenes SECURITY: Alice executes AIML on this host while connected to other hosts thru Gates!!!

See Also:
Gate

Field Summary
static int ADMIN
          mode 1: admin bot
 java.lang.String botID
          unique bot id, defaults to "alice"
static int FIRST
          mode 2: bot follows first observer
protected  java.util.Stack gates
           
 java.lang.String installDir
          program D (CharlieBot) installation directory
 int mode
          ADMIN, OWNED or FIRST, default ADMIN
 java.lang.String open
          'open' event: bot should be able open this (single) URL
static int OWNED
          mode 0: owned bot
protected  int sees
           
 boolean shutdown
          shutdown when noone sees it? default = true
protected  boolean talk
           
 
Fields inherited from class org.vrspace.server.object.User
_avgFps, _avgSceneRange, _avgSceneSize, _info, _maxFps, _maxSceneRange, _maxSceneSize, _minFps, _minSceneRange, _minSceneSize, speed, url, x, y, z
 
Fields inherited from class org.vrspace.server.Client
_lastLogin, authInfo, dispatcher, name, online, pos, scene, session, sessions, transform
 
Fields inherited from class org.vrspace.server.DBObject
db
 
Fields inherited from class org.vrspace.server.VRObject
db_id, primitiveMap, primitives
 
Constructor Summary
Alice()
           
 
Method Summary
 void addObject(VRObject obj)
          Add an object to the scene.
 void addObserver(java.util.Observer o)
          Adds observer.
 java.lang.String ask(Request req)
          Utility for subclasses: call this to send to AIML Called from update().
 void deleteObserver(java.util.Observer o)
          Removes observer.
 void finalize()
          Stop alice.
 void initialized()
          This is called on each Damon after dispatcher is initialized (space loaded & all daemons started)
 boolean isOnline()
          Alice is allways online, if not on other hosts
 void removeObject(VRObject obj)
          Remove object obj from the scene if it's not tracked user
 void request(Request req)
          Override Client.request(): process request only if talking.
 void run()
           
 void said(java.lang.String s)
          Speech stuff
 void set_getClosest(Request req, java.lang.String className)
          Get closest object of the specified class.
 void set_getClosestTransform(Request req, java.lang.String className)
          Get closest object of the specified class.
 void set_go(Request req, java.lang.String arg)
          Speed change.
 void set_loadURL(Request req, java.lang.String url)
          Does nothing - should notify all users, or only ones that asked the question?
 void set_state(Request r, java.lang.String state)
           
 void set_talk(Request req, java.lang.String mode)
          Start/stop talking (default: talk).
 void set_turn(Request req, java.lang.String angle)
          Turn
 void shutdown()
           
 void startup()
          Server initialization, called from addObserver()
 void startup(Dispatcher d)
           
 void update(java.util.Observable o, java.lang.Object req)
          Process events from users.
 
Methods inherited from class org.vrspace.server.object.User
ownershipRequired, set__fps, set_gesture, set_isOver, set_say, set_touchTime, set_url, set_xyzgo, set_xyzrotate
 
Methods inherited from class org.vrspace.server.Client
addOwned, destroy, getClassLoader, getDispatcher, getFilter, getName, getPos, getProperties, getProperty, getScene, getSession, getTransform, getTransformID, init, invalidRequest, isOwner, owns, quit, removeAll, removeOwned, sendResponse, set__password, set__sceneRange, set__sceneSize, set_addFilter, set_removeFilter, setProperty, setTransform, setValue, updateAuthInfo, updateAuthInfo, updateOwnership, updateScene, updateScene, updateScene
 
Methods inherited from class org.vrspace.server.OwnedDBObject
addOwner, isOwned, notifyOwners, processEvent, removeOwner, sendEvent
 
Methods inherited from class org.vrspace.server.DBObject
delete, get, put, put
 
Methods inherited from class org.vrspace.server.VRObject
arrayToString, canRead, canWrite, clone, equals, fieldToText, fromString, fromText, getClassName, getField, getFields, getId, getID, getMemebers, hasField, hasMethod, isNew, newInstance, sendResponse, setField, setField, setField, setFields, setFields, stringToArray, toString, toText, toText, toText
 
Methods inherited from class java.util.Observable
clearChanged, countObservers, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

installDir

public java.lang.String installDir
program D (CharlieBot) installation directory


shutdown

public boolean shutdown
shutdown when noone sees it? default = true


botID

public java.lang.String botID
unique bot id, defaults to "alice"


open

public java.lang.String open
'open' event: bot should be able open this (single) URL


mode

public int mode
ADMIN, OWNED or FIRST, default ADMIN


OWNED

public static final int OWNED
mode 0: owned bot

See Also:
Constant Field Values

ADMIN

public static final int ADMIN
mode 1: admin bot

See Also:
Constant Field Values

FIRST

public static final int FIRST
mode 2: bot follows first observer

See Also:
Constant Field Values

gates

protected java.util.Stack gates

sees

protected int sees

talk

protected boolean talk
Constructor Detail

Alice

public Alice()
Method Detail

run

public void run()
Specified by:
run in interface java.lang.Runnable

finalize

public void finalize()
Stop alice. How?


startup

public void startup(Dispatcher d)
Specified by:
startup in interface Daemon

initialized

public void initialized()
Description copied from interface: Daemon
This is called on each Damon after dispatcher is initialized (space loaded & all daemons started)

Specified by:
initialized in interface Daemon

startup

public void startup()
Server initialization, called from addObserver()

See Also:
addObserver(java.util.Observer)

addObserver

public void addObserver(java.util.Observer o)
Adds observer. First observer starts AliceServer.

Overrides:
addObserver in class Client

deleteObserver

public void deleteObserver(java.util.Observer o)
Removes observer. Shuts AliceServer down if no other observers exist.

Overrides:
deleteObserver in class Client
See Also:
shutdown

shutdown

public void shutdown()
Specified by:
shutdown in interface Daemon

ask

public java.lang.String ask(Request req)
Utility for subclasses: call this to send to AIML Called from update().

Returns:
bot's response

update

public void update(java.util.Observable o,
                   java.lang.Object req)
Process events from users. NOTE: this needs to be overriden by subclasses. This sets gesture specific to avatar studio avatars and reacts on say event only.

Specified by:
update in interface java.util.Observer
Overrides:
update in class Client

addObject

public void addObject(VRObject obj)
               throws java.lang.IllegalAccessException
Add an object to the scene. Called from VRObject or Command classes, i.e. Scene.

Overrides:
addObject in class Client
Throws:
java.lang.IllegalAccessException

removeObject

public void removeObject(VRObject obj)
                  throws java.lang.IllegalAccessException
Remove object obj from the scene if it's not tracked user

Overrides:
removeObject in class Client
Throws:
java.lang.IllegalAccessException

set_state

public void set_state(Request r,
                      java.lang.String state)

said

public void said(java.lang.String s)
Speech stuff


request

public void request(Request req)
Override Client.request(): process request only if talking.

Overrides:
request in class Client

isOnline

public boolean isOnline()
Alice is allways online, if not on other hosts

Overrides:
isOnline in class Client

set_loadURL

public void set_loadURL(Request req,
                        java.lang.String url)
Does nothing - should notify all users, or only ones that asked the question?


set_talk

public void set_talk(Request req,
                     java.lang.String mode)
Start/stop talking (default: talk). Alice will still perform all the operations, but silently.

Parameters:
mode - true or false, default true

set_getClosest

public void set_getClosest(Request req,
                           java.lang.String className)
Get closest object of the specified class.


set_getClosestTransform

public void set_getClosestTransform(Request req,
                                    java.lang.String className)
Get closest object of the specified class.


set_turn

public void set_turn(Request req,
                     java.lang.String angle)
Turn

Parameters:
angle - - left, right or angle in radians. Always rotates around 0,1,0.

set_go

public void set_go(Request req,
                   java.lang.String arg)
Description copied from class: User
Speed change. Orientation remains the same.

Overrides:
set_go in class User