OpenSim Architecture

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
m (added obsolete tag and link to orphaned IClientAPI page)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== OpenSim.Region.Environment ==
+
__NOTOC__
 +
{{Quicklinks}}
 +
{{obsolete}}
 
<br />
 
<br />
  
The Core of OpenSim is the Region.Environment project/dll. For each Region in a OpenSim 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).  
+
== OpenSim.Region.Environment ==
 +
<br />
 +
 
 +
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.
+
[[OpenSim_0.6_IClientAPI|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.]''
 
''[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.]''
Line 11: Line 16:
 
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 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.
+
A module has full public access to the scene class, and can also subscribe to the events of the ICientAPI objects.  
  
 
[[Image:Opensim_Region_class.png]]
 
[[Image:Opensim_Region_class.png]]
  
[[OpenSim_Expanded_Region_Diagram]] (Expanded Class diagram)
+
[[OpenSim Expanded Region Diagram]] (Expanded Class diagram)

Latest revision as of 08:42, 10 September 2020


[edit] 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 Region class.png

OpenSim Expanded Region Diagram (Expanded Class diagram)

General
About This Wiki