[Simian] * Fixed a regression with ViewerEffect packet handling * Added undo and redo support * Changed ISceneProvider interfaces to be more consistent and avoid duplicate lookups * Attempting to unify avatar and prim handling by storing agents as both a SimulationObject and an Agent in the scene * Comment out noisy resend logging and catch broken packets in the resend queue * Improved the README * Avoid generating two meshes when a world-transformed mesh is generated (are these even necessary?) git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2456 52acb1d6-8a22-11de-b505-999d5b087335
46 lines
2.2 KiB
Plaintext
46 lines
2.2 KiB
Plaintext
Introduction
|
|
------------
|
|
|
|
Simian is a lightweight simulator built on the libOpenMetaverse framework. Its
|
|
primary uses are protocol translation and new protocol testing, rapid
|
|
prototyping of new designs, a lightweight benchmarking suite, and unit testing
|
|
of client applications.
|
|
|
|
The design of Simian is centered around the one client-facing protocol it
|
|
supports. Where OpenSim defines a generic framework to support many backend
|
|
simulation systems and many frontend clients, Simian works with the concepts
|
|
that the Second Life viewer understands. Avatars, prims, and terrain become the
|
|
basic entities of the metaverse. Concepts of space are converted into 256x256
|
|
meter squares of terrain. Chat and instant messaging are translated into the
|
|
mechanisms used in Second Life. This allows new protocols and behaviors to be
|
|
added without having to modify the Second Life viewer directly, or work with the
|
|
complex (many-to-many) problem of translating concepts between all virtual
|
|
worlds.
|
|
|
|
Extensions
|
|
------------
|
|
|
|
Extensions can be written in one of three ways.
|
|
|
|
1) Add a class that inherits from IExtension directly in the Simian project.
|
|
Typically this is done by adding a new .cs file in the extensions folder.
|
|
|
|
2) Create a new assembly containing one or more extensions. The assembly must
|
|
follow the naming convention of Simian.*.dll.
|
|
|
|
3) Put a source code file alongside the running Simian.exe binary that will be
|
|
compiled at runtime. The code must follow the naming convention Simian.*.cs.
|
|
Look at Simian.ViewerEffectPrinter.cs.example for an example. Remove the
|
|
.example extension and put the file alongside the Simian.exe binary to see it
|
|
working.
|
|
|
|
*NOTE*: Extensions will only be loaded if they are listed in the Simian.ini file
|
|
in the [Extensions] section. You can comment out extensions, but if an extension
|
|
implements an interface and there is no other loaded extension that implements
|
|
that interface the Simian server will stop with an error message.
|
|
|
|
All extensions must inherit from IExtension and have a Start method that
|
|
takes a Simian object as the only parameter, along with an empty Stop method.
|
|
See the http://code.google.com/p/extensionloader/ project for more details on
|
|
writing extensions.
|