Developing OpenSim Addins
From OpenSimulator
Line 31: | Line 31: | ||
[assembly: '''ImportAddinFile'''("AddinExample.ini")] | [assembly: '''ImportAddinFile'''("AddinExample.ini")] | ||
[assembly: '''ImportAddinFile'''("AddinExample.html")] | [assembly: '''ImportAddinFile'''("AddinExample.html")] | ||
+ | |||
+ | The first directive [assembly: '''Addin'''("Diva.AddinExample", OpenSim.VersionInfo.VersionNumber + ".1")] establishes the public name of your addin: this is what users will see. Pay special attention to the version number. While you can use any version number you want, it is strongly advised that you tie your addin's version number with the OpenSim version against which you are compiling your code. The reason for this is simple: .NET is very picky about binary compatibility, therefore you should inform your users about which version of OpenSim this addin is compatible with. The most direct way of passing that information along is to add it to your addin's version number. In this case, we're using the first few digits to denote OpenSim's version number and the last digit to denote this addin's own version. If we were to evolve this addin in between OpenSim releases, that last digit would increase to 2, while the first few digits would remain the same. | ||
+ | |||
+ | The second directive [assembly: '''AddinDependency'''("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)] establishes the dependency with the concrete OpenSim dll that this addin extends. All region module addins extend OpenSim.Region.Framework. Again, the version number there should be the current OpenSim version number, because that is the dll that you are compiling your code against. |
Revision as of 12:16, 31 December 2014
This page explains how to develop, package and distribute OpenSimulator region module addins. It is written for developers who wish to provide additional functionality beyond what comes in the core distribution of OpenSim. These instructions pertain to region modules that run at the simulators. It is assumed that you are already familiar with the basics of developing region modules.
If you are looking for using and installing 3rd-party addins, please see this other page.
The Final Package
An addin example can be found at https://github.com/diva/diva-distribution/tree/master/addon-modules/02AddinExample. This is a very simple example that extends the simulator with the capability of presenting a web form to a user asking for first and last name, and storing the form data in a Comma Separated Value (CSV) file. The final addin package contains:
- the region module dll (Diva.AddinExample.dll)
- an external dll (CsvHelper.dll)
- an .ini file (AddinExample.ini)
- an html file (AddinExample.html)
These are all the files we need for OpenSim users to run the addin in their installations.
Addin Directives
As usual, the region module should be annotated as an OpenSim Region Module:
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AddinsExampleModule")] public class AddinExampleModule : ISharedRegionModule { ... }
Additionally, the assembly that contains the region module should contain the following directives:
[assembly: Addin("Diva.AddinExample", OpenSim.VersionInfo.VersionNumber + ".1")] [assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)] [assembly: AddinDescription("Example of how to create OpenSim Addins")] [assembly: AddinAuthor("Diva Canto")] [assembly: ImportAddinAssembly("CsvHelper.dll")] [assembly: ImportAddinFile("AddinExample.ini")] [assembly: ImportAddinFile("AddinExample.html")]
The first directive [assembly: Addin("Diva.AddinExample", OpenSim.VersionInfo.VersionNumber + ".1")] establishes the public name of your addin: this is what users will see. Pay special attention to the version number. While you can use any version number you want, it is strongly advised that you tie your addin's version number with the OpenSim version against which you are compiling your code. The reason for this is simple: .NET is very picky about binary compatibility, therefore you should inform your users about which version of OpenSim this addin is compatible with. The most direct way of passing that information along is to add it to your addin's version number. In this case, we're using the first few digits to denote OpenSim's version number and the last digit to denote this addin's own version. If we were to evolve this addin in between OpenSim releases, that last digit would increase to 2, while the first few digits would remain the same.
The second directive [assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)] establishes the dependency with the concrete OpenSim dll that this addin extends. All region module addins extend OpenSim.Region.Framework. Again, the version number there should be the current OpenSim version number, because that is the dll that you are compiling your code against.