This is a demo to show that it is possible to use CAVERNsoft
with the Performer-CAVE library.

There are 4 demos.

To compile:
        make all
 

DEMO 1
------

There are 2 programs:
        "flame" and "thrower".

Thrower - is the server. You can run this on a remote machine.
Thrower will define a local key called A_KEY and assign
data to the A_KEY to simulate a flame ping-ponging on the
left and right wall of the CAVE.

Flame - is the client. It is the Performer CAVE program that
allows you to see the ping-pong behavior generated by the
Thrower program.

To run:

On a remote machine (say doofus) run thrower first with:
        thrower

On another SGI (call this machine booboo) run:

        flame doofus

For a more interesting demo, get on yet another SGI
(call this bambam) and run:
        flame booboo

Here's what's happening:

booboo is listening to the A_KEY in the thrower program
running on doofus. bambam is listening to the A_KEY
in the flame program running on booboo. When booboo gets
new data from doofus, the data is automatically
propagated to bambam. So here you have an example of
the client flame program acting as a server as well.
 
Here's what you will see:

 
Thrower (Machine Name: Turing)
 
 
 
 
Flame Turing (Machine Name: Evans)
 
 
 
 
Flame Evans (Machine Name: catmull)
 

DEMO 2
------

One variation of the flame program is the flame2 program.
Flame2 is the same program as flame except it will try
and re-establish connections to its remote host
in the event that the remote host has exited.

DEMO3
-----

Another variation of the flame2 program is flame2m which
also optionally lets you choose between the default communication
that was used in flame2 or multicast. To use multicast you must
use throwerm rather than thrower.

On one machine you would type:

        throwerm mcast

On another machine you would type:

        flame2m mcast
 

DEMO 4
------

This demo shows how a Performer-CAVERN program can dynamically
load in an Inventor object. The tool, dbdeliver, found in
../../tools is used to deliver the model to the demo program
(called manyload). When manyload receives the data it will
load it in as an object and display it.

To run:

On one machine, say evans.evl.uic.edu, run manyload by typing:
        manyload

On another machine, say jose.evl.uic.edu, run ../tools/dbdeliver on
one of the models in the SAMPLES directory. E.g.:
        ../../tools/dbdeliver evans.evl.uic.edu SAMPLES/logo.iv / MODEL_KEY

You may try any of the other inventor files in the SAMPLES directory.
Note, you may have to wait 10 seconds after each delivery to give the
manyload program a chance to cleanup after each use of the dbdeliver program.
 
Here's what you will see:
 

 
 
 
Manyload (Running on evans)
 
 
 
 
 
DBDeliver (Running on catmull)