Files
libremetaverse/Programs/Simian
John Hurliman abf0c15384 [Simian]
* Completed a partial port of OpenSim's LSL API. Thank you to everyone on the OpenSim team for their hard work on this incredibly large feature
* Added Agent.GetSimulatorPosition()
* Corrected default PrimFlags for agents and prims
* Stubs for encoding/decoding prim linkset assets
* Route chat through the scene
* Stub for grid messaging (IM and email)
* Add GetTerrainHeightAt(), removed duplicate heightmap storage in Movement.cs
* Added a permissions manager stub
* Store wind speeds, added functions to get wind speed
* Make sure all of the important prim properties are set before creating an object
* Lots of new object manipulation functions in scene
* Properly clean up event queues on agent exit
* Stubbed out a space for a scripting engine
* Stubbed out task inventory
* Added ScriptingConsole, which allows you to run LSL functions from the chat console
* Added new PacketCategory, Messaging, for chat-related packets
* Fixed InventoryObject overrides
* Added a NotecardCache, useful for the scripting engine and may become generally useful later
* Added several helper functions and new members to SimulationObject

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2462 52acb1d6-8a22-11de-b505-999d5b087335
2009-03-02 23:00:28 +00:00
..
2009-03-02 23:00:28 +00:00
2009-03-02 23:00:28 +00:00
2009-03-02 23:00:28 +00:00
2009-03-02 23:00:28 +00:00
2009-03-02 23:00:28 +00:00
2009-03-02 23:00:28 +00:00
2009-03-02 23:00:28 +00:00
2009-03-02 23:00:28 +00:00

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.