Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

0.0 stars - 0 reviews range from 0 to 5



A bidirectional linked list class. This is a very essential class for CINEMA 4D. All elements like tags, keys, materials, render settings, documents and so on are derived from BaseList2D, which is a bidirectional linked list. Hence every element is connected with the next and previous element. One can easily navigate within the list using GetNext() or GetPrev() and insert new elements with InsertBefore() or InsertAfter().



funktioniert ab Version 10 nicht mehr wegen umfassender Änderungen in der Timeline




A class that represents a CINEMA 4D document. This structure contains the complete desription of a scene.


funktioniert ab Version 10 nicht mehr wegen umfassender Änderungen in der Timeline



funktioniert ab Version 10 nicht mehr wegen umfassender Änderungen in der Timeline




A hierarchy class This list is derived from Baselist2D. It is not only connected with the next and previous elements but also with up (parent) and down (child) elements. Hence it is a hierarchical list and is called BaseList4D. For an example of such a hierarchy, just have a look at the object manager in CINEMA 4D. Currently BaseList4D is used only by the BaseObject class.

BaseObject, PointObject, PolygonObject, SplineObject



This is the tag base class that all other tags are derived from.





PluginTag, ExpressionPluginTag


(R11) This is the animation curve base class. Belongs to a CTrack track and contains CKey keys. Cannot be allocated.


(R11) This is the animation track base class. Contains CCurve curves that contain CKey keys. Note: Currently it is not possible to allocate tracks, curves or keys in C.O.F.F.E.E.


(R11) This is the animation key base class. Can be inserted into the CCurve curve of a CTrack track. Note: Currently it is not possible to allocate tracks, curves or keys in C.O.F.F.E.E.



This is the class that all plugin classes are derived from, at least logically. It requires you to specify a unique id for the plugin. You can get such ids at for free.


MenuPlugin - C.O.F.F.E.E. SDK R9.5 A class to derive menu plugins from.


FilterPlugin - C.O.F.F.E.E. SDK R9.5 A class to derive filter plugins from.


A special class for creating a message port for a plugin. Any other plugin is then able to send messages to this port using the SendPluginMessage() function. This enables plugins of different types to communicate with each other, for example an animation plugin with a shader plugin.



VolumePlugin - C.O.F.F.E.E. SDK R9.5 A class for volume shader plugins. A registered VolumePlugin will appear under "New 3D Shader" in the Materials Manager. All of the member functions except for GetName(), GetID(), and CalcSurface() are optional No OS calls are allowed for: CalcSurface(), CalcVolumetric(), Displace(), ChangeNormal(), CalcTransparency(), or CalcAlpha() (like file->Open as it is MP executed you risk a crash - besides it makes absolutely no sense...)  


A volume data class.  



A user area class that can be used to create custom GUI components.


A base dialog class This is the base class for dialogs in C.O.F.F.E.E. It has functions for defining the layout of the dialog as well as functions for initializing the gadgets and reading them out. All messages can be caught by overlading the Message() function. For your convenience there are some derived classes as well, called GeDialog and GeModalDialog, which handle the complex messages automatically and give you additional convenience functions for overloading. So whenever possible you should use GeDialog instead of GeBaseDialog because it's much simpler. If you absolutely want to program your own behaviour you can of course use or derive GeBaseDialog directly. Basically there are two different methods for the plugin programmer to define the layout of a dialog. The best one is to use separate resource files since they can be easily changed without the need to recompile the plugin. Also you automatically get multi language support. Just add another string resource file and you can sell your plugin not only in Germany but also in Japan. Normally, translating the handful of strings is done within minutes. If you don't want to fiddle around with extra resource files and never ever want to translate your plugin to other languages you can also define the layout from within the plugin by using the Add*() functions of the GeUserDialog class. Especially when you only need two checkboxes for your plugin this is a bit faster. However, as soon as you have more then just two buttons, MAXON highly recommends that you use resource files. They are much more flexible and elegant to use!  


A user dialog class.




The bitmap class can be used to load, read, draw and save bitmap pictures of various formats. New in V6 is the option to specify the export filter type and additional data (compressor settings) when saving.





A variable changed class. This structure is essential for changing point/polygon counts in objects cause one can allocated or remove multiple elements with a single Message call. It can be used for example when sending MSG_POINTS_CHANGED and MSG_POLYGONS_CHANGED messages to objects, tags and keys. The structure contains the number of elements (points or polygons) before and after the change, and optionally a translation map array. Each element in the map represents an element before the change, and its value decides what element this corresponds to after the change. This is used to keep for example point selections and vertex maps valid. Important: Make sure that you use a BackupTags object as well when changing for example the point size of an object. Otherwise the object might be corrupted in low-memory situations.  



A class that backups tags. One should use this class whenever one is sending a message of the type MSG_POINTS_CHANGED, MSG_POLYGONS_CHANGED or MSG_SEGMENTS_CHANGED, else one is not able to handle low memory conditions in C.O.F.F.E.E. Imagine the following situation: You want to add just 1 point to a polygon object. Hence you allocate and initialize a VariableChanged class properly and send it to the object. Now the tags are reacting on the message and are resizing their data accordingly. But if one of the tags (for example the UVW tag) fails because of low memory conditions, the whole object is corrupted because some tags think the object contains n+1 points but some others (the UVW tag) think it has only n points. This is very likely to crash the editor and raytracer. If one uses the class BackupTags, C4D will make a copy of all tags. Depending of the return value of MultiMessage() one can react and either just continue (if it's TRUE) or restore the tags (if it's FALSE). Of course one could write such a backup routine of one's own, but when restoring the tags one might run into troubles because the marker id of the tags has changed, which might mislead other plugins or functions in C4D. The BackupTags class will handle this correctly, so in case MultiMessage() returns FALSE one can get the original object back.  


An movie saver class.  


Polygon - C.O.F.F.E.E. SDK R9.5A Polygon structure.


A time and date class. This is the class used to represent time and date. All the member variables are integers.  


a filename class Normally one would specify a filename by just using a string. However, in C4D this is not a good idea since the program, and also the plugins, should be platform independent. For example on the PC there is something like "C:\temp\test.txt" and on the mac "-12367:2313:test.txt". For this reason there is a special filename class handling these problems. When using the filename class one doesn't have to deal with different system seperators like "\" or ":" and can also be sure that one's plugins will work on future platforms.  



A browse file class. If one wants to search for a file in a sub folder or just want to write one's own scene filer one can use this class.  


A class used to store custom plugin data. Hyper files are used to store plugin data that cannot be stored in containers. You cannot create a hyper file yourself. C4D will always create it for you, and pass it to dedicated Load() and Save() functions when needed (see the plugin classes).