- Added YG_MESSAGE_PORT environment variable, to define the UDP port
number that yg will listen to for external messages. This defaults to
1967 (the port that the program sendMessage sends to).
- Eliminated separate bin & dso directories for Linux & SGI.
Now the directories are simply bin and dso,
and it's up to each site to make sure they have the right binaries
- Removed ygCAVEHead class (aka "CAVEHead" in scene files).
Added ygHead class to replace it; the new class is not derived from
ygCAVETracker. To add a CAVE-tracked head to an avatar, one must now
- Corrected ygUser's "message filtering" to not lose the
ygSimpleTransform messages - position, orientation, and updateInterval.
- Corrected ygSpace to not cause a core dump when resetting a scene
with debugging volumes (e.g. on triggers). (The core dumping was caused
by a bug in the Linux version of Performer's pfGeode class.)
- Changed format of commands that are accepted by the main
program (via the command line or UDP socket) to be the same as
node messages. Added optional arguments for 'graph' and 'stats'.
i.e., the commands now look like:
- texcheck - print number and total size of all textures in the scene
- texcheck(node) - print texture info for node and everything under it
- graph - print entire scene graph
- graph(node) - print sub-graph rooted at node
- stats - print timing statistics for entire scene
- stats(node) - print statistics for sub-graph rooted at node
- Added 'createNode' command to main program:
- createNode(type,name) - creates a node of class type, named name
- createNode(type) - creates a node of class type,
assigning it an arbitrary name (the generated name is printed)
- Added 'createNode' message to ygNode. Works the same as the command-line
function 'createNode', except that the new node is made a child of the node
that receives the message.
- Modified ygNode's 'event' message to allow an arbitrary number of arguments -
i.e., the event arguments no longer need to be grouped together in quotation
- Fixed ygEvent to return an empty string for non-existent event arguments.
Previously, non-existent arguments would cause a core dump. Now, for example,
if it receives an event 'foo' with no argument 'a'.
- Moved source for pfTransform, pfBounds, & pfCull programs to separate
- Removed old XP-to-Yg translator program xptrans. The copy from earlier
releases should still be useable.
- Added different ygString::nextToken() function, that returns token in
pass-by-reference argument. Added new function ygString::previousToken();
works the same as nextToken(), but moves backward through the string.
- Added environment variable YG_PF_MULTIPROCESS, which can be used to
select the Performer multiprocessing mode to use. Its value is a list
of PFMP_FORK tokens, similar to the argument for pfMultiprocess(); they
can be separated by spaces or pipes ( | ) (the pipes are not required). e.g.
setenv YG_PF_MULTIPROCESS "PFMP_FORK_CULL | PFMP_FORK_COMPUTE"
If YG_PF_MULTIPROCESS is not set, then Performer's default multiprocessing
mode will be used (single process on single-CPU machines, fork CULL & DRAW
on multi-CPU machines) - the default is no longer to always fork CULL.
The shortcut macros, such as PFMP_APP_CULL_DRAW, are not available.
This option also supersedes the environment variable YG_PF_FORK_COMPUTE, which
is no longer used.
- Removed automatic use of C pre-processor on scene files. By default,
scene files will simply be read as is. To use cpp commands and comments
in a scene, you must now either preprocess the scene file by hand, or
setenv YG_CPP_COMMAND to the appropriate value ("/bin/cc -E" on IRIX,
"/usr/bin/cpp" on Linux (some Linux versions require a different command,
This was done because of recurrent flakiness with popen on
various systems - sometimes EVL's Onyx2 would have difficulty starting the
pre-processor subprocess; other SGI systems (e.g. ICC) don't have the compiler
installed; under Linux, sometimes not all of the pre-processor output is
actually read (this often manifests itself as the user avatar being missing).
It's recommended, therefore, that application developers pre-process their
scene files outside of yg whenever possible.
- Added functions vec2Args(), vec3Args(), and vec4Args() to ygMessage, to
return pfVec arguments more like the other functions (intArg() etc),
rather than through pass-by-reference, as in getVec2Args() etc.
- Made member variables of ygMessage (args, etc) private, and added functions
to return their values. The new functions are numArgs(), stringArg(#),
recipient(), recipientName(), delay(), and message().
The script 'updateClass' can be used to update most node classes that
need to be changed. It replaces msg.args.size() by msg.numArgs()
and msg.args[foo] by msg.stringArg(foo).
- Changed global class variables in ygWorld (World, FrameTime, FrameDeltaTime,
& FrameNumber) to class functions (world(), frameTime(), frameDeltaTime(),
The script 'updateClass' will fix references to these variables in
- Added "flag" message to ygWand.
- Added ygDataPacker class, as a replacement for CAVERN datapack class.
- Added thread-safe ygPrintf and ygFprintf functions.
- Removed ygNodeDB::init() call from main.cxx; this is now called
- Added ygHalt function, which replaces ygNet::halt() in main.cxx.
- Added "head" event argument to userTrigger's enter, exit, and firstenter
- Modified ygMessage::writeString() to put double-quotes around each
message argument. This fixes a bug where single arguments with blank
spaces in them would turn into multiple separate arguments without the
- Added "y" and "yes" as further values that will return 'true' in
- Fixed bug in Environment node - changes to the parameters (clip, skycolor,
fog) of an active Environment will now be properly applied on clients as
well as the master. Previously, the client side would not apply the changed
data, until the viewer exited & re-entered the Environment.