OpenSim Architecture

OpenSim.Region.Environment
The Core of OpenSimulator is the Region.Environment project/dll. For each Region in a OpenSimulator process, a instance of Scene is created. So currently Scene is the main management class for the regions. When a client connects to a region, a call is made to Scene.AddNewClient(IClientAPI client, bool child).

IClientAPI, the interface that we use for Region <-> Client communications, contains a number of events and methods. When Scene.AddNewClient is called, various classes will subscribe to the events of the client object, so that they are notified of incoming packets from that client/viewer. In the other direction, the methods of IClientAPI are used to send packets back to the client/viewer.

''[Please note that most of the more general region management functions will be moving to the RegionManager class soon. Leaving just the scene (3d world space) management to the Scene class.]''

A new feature that is currently being worked on, is the concept of region modules. The idea being to split the functions of the region up into individual modules. There are two types of modules: the shared ones which means there is a single instance of that module that is used by all the regions in that opensim process. And then the single region modules, which means that each region has its own instance of that module.

A module has full public access to the scene class, and can also subscribe to the events of the ICientAPI objects.



OpenSim Expanded Region Diagram (Expanded Class diagram)