File: olh_develop.htm

package info (click to toggle)
mm3d 1.3.15-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,404 kB
  • sloc: cpp: 99,351; sh: 4,043; perl: 2,464; makefile: 1,318; ansic: 383; xml: 137
file content (109 lines) | stat: -rw-r--r-- 4,797 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
      <h1>Contents</h1>
      <ul>
         <li> <a href="#contrib">Contributing</a>
         <li> <a href="#plugins">Plugins</a>
      </ul>

      <a name="contrib"></a>
      <h1>Contributing</h1>

      <p>
      Contributions to Maverick Model 3D are encouraged.  There are several
      ways (both coding and non-coding) that you can help this project
      continue.  The easiest thing is simply to send me an encouraging email.
      Bug reports and feature requests are also appreciated.
      </p>

      <p>
      Source code patches for bugs or new features are also welcome.  In the
      case of patches, there are a few guidelines to follow which will
      help expedite the integration process.

      <ul>
         <li> Follow the coding style in the rest of the project.</li>
         <li> Make a patch from the latest version.  If your patch is a bug
         fix for the stable version, your patch should be against the 
         most recent stable version.  If your patch is a new feature or a bug
         fix for the development version, it should be against the SVN
         repository or the most recent development version.</li>
         <li> Contact me before starting a complex feature.  I may be close to
         finishing a similar feature myself, or the feature you wish to add may
         conflict with Maverick Model 3D's design goals.  If you are interested
         in contributing code to Maverick Model 3D, I certainly do not want your
         efforts to be wasted.</li>
      </ul>
      </p>

      <p>
      You can also make contributions in the form of plugins.  You can create new
      tools, commands, texture filters, and model filters through the plugin
      system.  I am willing to host quality plugins on the main
      website, or even consider integration into the core codebase.
      </p>

      <p>
      Non-coding contributions could come in the form of documentation or artwork;
      or possibly even in forms I have not considered.  If you have the desire
      and means to contribute, contact me and I will be happy to help you get
      started.
      </p>

      <a name="plugins"></a>
      <h1>Plugins</h1>

      <p>
      Plugins can be created to add new tools, commands, texture filters and
      model filters.  Maverick Model 3D development is done in C++.  If you
      have a compelling reason to implement a plugin in another language,
      contact me and I may be able to arrange C bindings which can be extended
      to support other languages.
      </p>

      <p>
      The details of the plugin system may change.  The discussion below details
      the plugin system as of 1.4, but the development source code is always
      the most up-to-date source of documentation.  Check the
      <a href="http://misfitcode.com/misfitmodel3d/plugins.html">Misfit Model 3D
      plugins webpage</a> for examples.  The ImLib2 Texture plugin contains a
      documented, non-trivial example.
      </p>

      <p>
      A Maverick Model 3D plugin is a dynamic library which contains three required
      functions and two optional functions, declared as <code>PLUGIN_API</code>
      (defined in src/mm3dcore/pluginapi.h).
      Functions marked with a <b>*</b> are optional.
      </p>

      <ul>
         <li> <b>plugin_init</b> - Initialize the plugin
         <li> <b>plugin_uninit</b> - Uninitialize the plugin
         <li> <b>plugin_mm3d_version</b> - Provide Maverick Model 3D version string the
         plugin was compiled for
         <li> <b>plugin_version *</b> - Provide plugin version string
         <li> <b>plugin_desc *</b> - Provide plugin description string
      </ul>

      <p>
      The contents of the init and uninit functions will depend on what
      the purpose of the plugin is.  In most cases it will register
      a new tool, command, or filter through the appropriate manager singleton.
      The version and description functions are optional, but are useful
      in providing information to the end user about the version
      and purpose of the plugin.  These details can be viewed from the
      <a href="olh_pluginwin.html">Plugins Window</a>.
      </p>

      <p>
      The <code>plugin_mm3d_version</code> function should return 
      the VERSION_STRING constant that is defined in src/mm3dcore/version.h.
      </p>

      <p>
      See the ImLib2 Texture plugin for an introduction to writing a
      plugin.  The example also contains pointers to other files in the codebase
      which contain classes to derive from and documentation on how to use
      the manager singletons.  The source code for the latest stable or
      development release is always the authoritative reference.  I try to
      keep documentation in the relevant header files current.
      </p>