THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 01/03/2011 at 09:16, xxxxxxxx wrote:
The file/folder structure isn't too difficult once you understand the structure.
You create a folder in which to place your plugin (everything). This will directly contain your compiled plugins and any other non-essential files (readme.html, for instance). This will also contain the 'res' folder. All of your resources go in here (descriptions, plugin headers, .str, .res, icons, images, possibly even your html help or PDF file). Basically:
[Cinema 4D RXX]
-->[Plugins]
---->[MyPlugin]
------>myplugin.cdl
------>myplugin.cdl64
------>myplugin.dylib
------>[res]
The res folder has the plugin headers, string files, and resource files and should be where you put your icons, images, and other static resources needed by the plugin. There are two levels to the resources: one is for general, typically used with Command plugin dialogs, and the other is for other types of plugins (objects, tags, materials, tools, etc). The first is covered by two files:
c4d_symbols.h
c4d_strings.str
The first enumerates general constant name-value pairs. This usually includes the name-value pairs for text going into a dialog and possibly dialog ids and plugin ids.
The second str file associates any of the name-value pairs that represent string constants used in your plugins with text. Note that there can be multiples of these if using more than one language. Typically you might only have a 'strings_us' folder containing the c4d_strings.str but you may have more if you support other languages.
So, the first level structure is:
...
[res]
-->c4d_strings.str
-->[strings_us]
---->c4d_strings.str
<Optional>
-->[strings_de]
---->c4d_strings.str
-->[strings_jp]
---->c4d_strings.str
...etc
Inside this same structure you put your second level plugin resources. These are placed into a 'description' folder in both the 'res' folder and each consequential 'strings_xx' folder. The main description folder contains the header (.h) and the resource (.res). The one in strings_xx contains the .str file. For a plugin type Omyplugin, you would have (as well as the first level files) :
...
[res]
-->[description]
---->Omyplugin.h
---->Omyplugin.res
-->[strings_us]
---->[description]
------>Omyplugin.str
C4D is using something of an MVC (Model-View-Controller) design pattern but not sure if that is the exact pattern being used.