├── .editorconfig ├── .gitignore ├── LICENSE ├── README.md └── plugins ├── example.assets ├── README.md ├── asset_api_examples_readme.png ├── dots_preset_asset_type.gif ├── project │ └── projectdefinition.txt ├── res │ ├── c4d_symbols.h │ ├── dialogs │ │ └── dlg_assetapi_examples.res │ └── strings_en-US │ │ ├── c4d_strings.str │ │ └── dialogs │ │ └── dlg_assetapi_examples.str └── source │ ├── asset_api_examples │ ├── README.md │ ├── asset_api_examples_plugin.cpp │ ├── asset_api_examples_plugin.h │ ├── asset_api_examples_readme.png │ ├── examples_assets.cpp │ ├── examples_assets.h │ ├── examples_contexts.cpp │ ├── examples_contexts.h │ ├── examples_databases.cpp │ ├── examples_databases.h │ ├── examples_metadata.cpp │ └── examples_metadata.h │ ├── dots_preset_asset_impl │ ├── README.md │ ├── dots_datatype.cpp │ ├── dots_datatype.h │ ├── dots_preset_asset.cpp │ ├── dots_preset_asset.h │ ├── dots_preset_asset_type.gif │ ├── examples_dots.cpp │ └── examples_dots.h │ └── main.cpp ├── example.hello_world ├── README.md ├── project │ └── projectdefinition.txt └── source │ └── main.cpp ├── example.image ├── README.md ├── project │ └── projectdefinition.txt ├── res │ ├── c4d_symbols.h │ ├── description │ │ ├── oocionode2025.h │ │ ├── oocionode2025.res │ │ ├── vpocioawarerenderer.h │ │ └── vpocioawarerenderer.res │ └── strings_en-US │ │ ├── c4d_strings.str │ │ └── description │ │ ├── oocionode2025.str │ │ └── vpocioawarerenderer.str └── source │ ├── D65_XYZ.icc │ ├── example_image_layers_area.cpp │ ├── examples_color_management.cpp │ ├── examples_color_management.h │ ├── examples_ocio.cpp │ ├── examples_ocio.h │ ├── main.cpp │ ├── plugin_image_api_examples.cpp │ ├── plugin_image_api_examples.h │ └── sRGB2014.icc ├── example.main ├── project │ └── projectdefinition.txt ├── res │ ├── atom.tif │ ├── c4d_symbols.h │ ├── circle.tif │ ├── description │ │ ├── blw_pluginlicensedialog_res.h │ │ ├── bmexample.h │ │ ├── bmexample.res │ │ ├── ckblinker.h │ │ ├── ckblinker.res │ │ ├── ctblinker.h │ │ ├── ctblinker.res │ │ ├── dexample.h │ │ ├── dexample.res │ │ ├── fsdkstlexport.h │ │ ├── fsdkstlexport.res │ │ ├── fsdkstlimport.h │ │ ├── fsdkstlimport.res │ │ ├── mparticlevolume.h │ │ ├── mparticlevolume.res │ │ ├── msimplematerial.h │ │ ├── msimplematerial.res │ │ ├── oassetcontainer.h │ │ ├── oassetcontainer.res │ │ ├── oatom.h │ │ ├── oatom.res │ │ ├── odescription.h │ │ ├── odescription.res │ │ ├── odoublecircle.h │ │ ├── odoublecircle.res │ │ ├── oedrop.h │ │ ├── oedrop.res │ │ ├── oenoise.h │ │ ├── oenoise.res │ │ ├── ofalloff_random.h │ │ ├── ofalloff_random.res │ │ ├── ogetsetdparameterexample.h │ │ ├── ogetsetdparameterexample.res │ │ ├── ogreektemple.h │ │ ├── ogreektemple.res │ │ ├── ohairsdkcollider.h │ │ ├── ohairsdkcollider.res │ │ ├── ohairsdkconstraint.h │ │ ├── ohairsdkconstraint.res │ │ ├── ohairsdkdeformer.h │ │ ├── ohairsdkdeformer.res │ │ ├── ohairsdkforce.h │ │ ├── ohairsdkforce.res │ │ ├── ohairsdkgen.h │ │ ├── ohairsdkgen.res │ │ ├── ohairsdkgrass.h │ │ ├── ohairsdkgrass.res │ │ ├── oheartshape.h │ │ ├── oheartshape.res │ │ ├── ohyperfile.h │ │ ├── ohyperfile.res │ │ ├── olatticeplanemodifier.h │ │ ├── olatticeplanemodifier.res │ │ ├── oloftedmesh.h │ │ ├── oloftedmesh.res │ │ ├── omorphmixer.h │ │ ├── omorphmixer.res │ │ ├── oplanebypolygons.h │ │ ├── oplanebypolygons.res │ │ ├── oporcupinemodifier.h │ │ ├── oporcupinemodifier.res │ │ ├── orevolvedmesh.h │ │ ├── orevolvedmesh.res │ │ ├── oroundedtube.h │ │ ├── oroundedtube.res │ │ ├── oruledmesh.h │ │ ├── oruledmesh.res │ │ ├── osculptdeformer.h │ │ ├── osculptdeformer.res │ │ ├── oshufflingparticles.h │ │ ├── oshufflingparticles.res │ │ ├── ospherifydeformer.h │ │ ├── ospherifydeformer.res │ │ ├── overtexhandle.h │ │ ├── overtexhandle.res │ │ ├── tfloat.h │ │ ├── tfloat.res │ │ ├── thairsdkrendering.h │ │ ├── thairsdkrendering.res │ │ ├── thairsdkstyling.h │ │ ├── thairsdkstyling.res │ │ ├── tlookatcameraexp.h │ │ ├── tlookatcameraexp.res │ │ ├── tooledgecutsdk.h │ │ ├── tooledgecutsdk.res │ │ ├── toolpaintbrushbase.h │ │ ├── toolpaintbrushbase.res │ │ ├── toolpaintbrushsculpt.h │ │ ├── toolpaintbrushsculpt.res │ │ ├── toolpickobjectsdk.h │ │ ├── toolpickobjectsdk.res │ │ ├── toolsculptbrushmultistamp.h │ │ ├── toolsculptbrushmultistamp.res │ │ ├── toolsculptbrushtwist.h │ │ ├── toolsculptbrushtwist.res │ │ ├── toolsculptcubesbrush.h │ │ ├── toolsculptcubesbrush.res │ │ ├── toolsculptdrawpoly.h │ │ ├── toolsculptdrawpoly.res │ │ ├── toolsculptdrawpolybrush.h │ │ ├── toolsculptdrawpolybrush.res │ │ ├── toolsculptgrabbrush.h │ │ ├── toolsculptgrabbrush.res │ │ ├── toolsculpting.h │ │ ├── toolsculpting.res │ │ ├── toolsculptpullbrush.h │ │ ├── toolsculptpullbrush.res │ │ ├── toolsculptselectionbrush.h │ │ ├── toolsculptselectionbrush.res │ │ ├── toolsculptsplinebrush.h │ │ ├── toolsculptsplinebrush.res │ │ ├── toolsnap.h │ │ ├── toolsnap.res │ │ ├── vpcolorize.h │ │ ├── vpcolorize.res │ │ ├── vphairsdkpost.h │ │ ├── vphairsdkpost.res │ │ ├── xbitmapdistortion.h │ │ ├── xbitmapdistortion.res │ │ ├── xhairsdkshader.h │ │ ├── xhairsdkshader.res │ │ ├── xmandelbrot.h │ │ ├── xmandelbrot.res │ │ ├── xsdkgradient.h │ │ └── xsdkgradient.res │ ├── dialogs │ │ ├── IDD_SHADER_BROWSER.res │ │ ├── dlg_listview.res │ │ ├── dlg_register.res │ │ ├── dlg_smpl_matrix.res │ │ ├── dlg_subdialog.res │ │ └── dlg_threshold.res │ ├── dropeffector.tif │ ├── gradienttypes.tif │ ├── gravitation.tif │ ├── greektemple.tif │ ├── haircollider.tif │ ├── hairconstraint.tif │ ├── hairdeformer.tif │ ├── hairforce.tif │ ├── hairgen.tif │ ├── hairgrass.tif │ ├── hairrendering.tif │ ├── hairstyling.tif │ ├── heartshape.tif │ ├── icon.tif │ ├── latticeplanemodifier.tif │ ├── liquid.tif │ ├── loftedmesh.tif │ ├── lookatcamera.tif │ ├── morphmixer.tif │ ├── nodes │ │ ├── net.maxonexample.databases.customgui.db.en-US.json │ │ ├── net.maxonexample.databases.customgui.db.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.ar-AR.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.cs-CZ.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.de-DE.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.en-US.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.es-ES.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.fr-FR.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.it-IT.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.ja-JP.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.ko-KR.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.pl-PL.json │ │ ├── net.maxonexample.nodes_corenodes.module.db.ru-RU.json │ │ └── net.maxonexample.nodes_corenodes.module.db.zh-CN.json │ ├── noiseeffector.tif │ ├── particlesshuffling.tif │ ├── planebypolygons.tif │ ├── porcupinemodifier.tif │ ├── revolvedmesh.tif │ ├── roundedtube.tif │ ├── ruledmesh.tif │ ├── scene │ │ ├── sky.tif │ │ └── stairs.c4d │ ├── spherify.tif │ ├── strings_en-US │ │ ├── c4d_strings.str │ │ ├── description │ │ │ ├── bmexample.str │ │ │ ├── ckblinker.str │ │ │ ├── ctblinker.str │ │ │ ├── dexample.str │ │ │ ├── fsdkstlexport.str │ │ │ ├── fsdkstlimport.str │ │ │ ├── mparticlevolume.str │ │ │ ├── msimplematerial.str │ │ │ ├── oassetcontainer.str │ │ │ ├── oatom.str │ │ │ ├── odescription.str │ │ │ ├── odoublecircle.str │ │ │ ├── oedrop.str │ │ │ ├── oenoise.str │ │ │ ├── ofalloff_random.str │ │ │ ├── ogetsetdparameterexample.str │ │ │ ├── ogreektemple.str │ │ │ ├── ohairsdkcollider.str │ │ │ ├── ohairsdkconstraint.str │ │ │ ├── ohairsdkdeformer.str │ │ │ ├── ohairsdkforce.str │ │ │ ├── ohairsdkgen.str │ │ │ ├── ohairsdkgrass.str │ │ │ ├── oheartshape.str │ │ │ ├── ohyperfile.str │ │ │ ├── olatticeplanemodifier.str │ │ │ ├── oloftedmesh.str │ │ │ ├── omorphmixer.str │ │ │ ├── oplanebypolygons.str │ │ │ ├── oporcupinemodifier.str │ │ │ ├── orevolvedmesh.str │ │ │ ├── oroundedtube.str │ │ │ ├── oruledmesh.str │ │ │ ├── osculptdeformer.str │ │ │ ├── oshufflingparticles.str │ │ │ ├── ospherifydeformer.str │ │ │ ├── overtexhandle.str │ │ │ ├── tfloat.str │ │ │ ├── thairsdkrendering.str │ │ │ ├── thairsdkstyling.str │ │ │ ├── tlookatcameraexp.str │ │ │ ├── tooledgecutsdk.str │ │ │ ├── toolpaintbrushbase.str │ │ │ ├── toolpaintbrushsculpt.str │ │ │ ├── toolpickobjectsdk.str │ │ │ ├── toolsculptbrushmultistamp.str │ │ │ ├── toolsculptbrushtwist.str │ │ │ ├── toolsculptcubesbrush.str │ │ │ ├── toolsculptdrawpoly.str │ │ │ ├── toolsculptdrawpolybrush.str │ │ │ ├── toolsculptgrabbrush.str │ │ │ ├── toolsculpting.str │ │ │ ├── toolsculptpullbrush.str │ │ │ ├── toolsculptselectionbrush.str │ │ │ ├── toolsculptsplinebrush.str │ │ │ ├── toolsnap.str │ │ │ ├── vpcolorize.str │ │ │ ├── vphairsdkpost.str │ │ │ ├── xbitmapdistortion.str │ │ │ ├── xhairsdkshader.str │ │ │ ├── xmandelbrot.str │ │ │ └── xsdkgradient.str │ │ └── dialogs │ │ │ ├── IDD_SHADER_BROWSER.str │ │ │ ├── dlg_listview.str │ │ │ ├── dlg_register.str │ │ │ ├── dlg_smpl_matrix.str │ │ │ ├── dlg_subdialog.str │ │ │ └── dlg_threshold.str │ ├── triangulate.tif │ └── vertexhandle.tif └── source │ ├── animation │ └── blinker.cpp │ ├── bitmapfilter │ └── paint_saver_test.cpp │ ├── customerror │ ├── customerror_impl.cpp │ ├── customerror_interface.h │ └── customerror_use.cpp │ ├── datatype │ └── datatype.cpp │ ├── falloff │ └── randomfalloff.cpp │ ├── filter │ └── stl.cpp │ ├── gui │ ├── activeobject.cpp │ ├── activeobject.h │ ├── activeobject_variabletag.cpp │ ├── asynctest.cpp │ ├── customdata_customgui.cpp │ ├── customdata_customgui.h │ ├── customdata_customgui_in_node.cpp │ ├── customdata_customgui_in_node.h │ ├── customgui_string.cpp │ ├── gedialog_gadgets.cpp │ ├── gradientuserarea.cpp │ ├── gradientuserarea.h │ ├── layershaderbrowser.cpp │ ├── layershaderbrowser.h │ ├── listview.cpp │ ├── memstat.cpp │ ├── menutest.cpp │ ├── objectdata_descriptions.cpp │ ├── objectdata_getsetdparameter.cpp │ ├── progressjobs.cpp │ ├── serial.cpp │ └── subdialog.cpp │ ├── licensing │ ├── blw_checklicense.cpp │ ├── blw_checklicense.h │ ├── blw_crypt.cpp │ ├── blw_crypt.h │ ├── blw_pluginlicensedialog.cpp │ ├── blw_pluginlicensedialog.h │ ├── blw_simplegenerator.cpp │ ├── blw_simplegenerator.h │ └── get_md5.py │ ├── main.cpp │ ├── main.h │ ├── maxonsdk │ ├── application │ │ ├── mediainput_impl.cpp │ │ ├── mediainput_use.cpp │ │ ├── mediaoutput_declarations.h │ │ ├── mediaoutput_impl.cpp │ │ └── mediaoutput_use.cpp │ ├── data_algorithms │ │ ├── blendfunction_declarations.h │ │ ├── blendfunction_impl.cpp │ │ ├── blendfunction_use.cpp │ │ ├── streamconversion_declarations.h │ │ ├── streamconversion_impl.cpp │ │ └── streamconversion_use.cpp │ ├── foundations │ │ ├── command_declaration.h │ │ ├── command_impl.cpp │ │ ├── command_use.cpp │ │ ├── interfaces_declarations.h │ │ ├── interfaces_impl.cpp │ │ └── interfaces_use.cpp │ ├── nodes │ │ ├── corenode_descriptions.h │ │ └── corenode_impl.cpp │ └── unittests │ │ ├── blendfunction_unittests.cpp │ │ ├── command_unittests.cpp │ │ ├── interfaces_unittests.cpp │ │ ├── mediainput_unittests.cpp │ │ ├── mediaoutput_unittests.cpp │ │ └── streamconversion_unittests.cpp │ ├── microsdk │ ├── business_logic.cpp │ ├── business_logic.h │ ├── user_interface.cpp │ └── user_interface.h │ ├── object │ ├── atom.cpp │ ├── circle.cpp │ ├── dropeffector.cpp │ ├── gravitation.cpp │ ├── hair_collision.cpp │ ├── hair_constraint.cpp │ ├── hair_deformer.cpp │ ├── hair_force.cpp │ ├── hair_generator.cpp │ ├── hair_grass.cpp │ ├── morphmixer.cpp │ ├── noiseeffector.cpp │ ├── objectdata_assetcontainer.cpp │ ├── objectdata_greektemple.cpp │ ├── objectdata_heartshape.cpp │ ├── objectdata_hyperfile.cpp │ ├── objectdata_latticeplanemodifier.cpp │ ├── objectdata_loftedmesh.cpp │ ├── objectdata_planebypolygons.cpp │ ├── objectdata_porcupinemodifier.cpp │ ├── objectdata_revolvedmesh.cpp │ ├── objectdata_ruledmesh.cpp │ ├── objectdata_shufflingparticles.cpp │ ├── objectdata_vertexhandle.cpp │ ├── roundedtube.cpp │ ├── spherify.cpp │ └── triangulate.cpp │ ├── other │ ├── arraytutorial.cpp │ ├── command_test.cpp │ ├── command_test.h │ ├── commandlinerender.cpp │ ├── misc_delegate_test.cpp │ ├── misctest.cpp │ ├── movecopyconstructors.cpp │ ├── polygonreduction.cpp │ ├── python.cpp │ ├── snapdata_nullsnap.cpp │ └── takeTest.cpp │ ├── painting │ └── advanced │ │ ├── paintbrushbase.cpp │ │ ├── paintbrushbase.h │ │ ├── paintbrushids.h │ │ ├── paintbrushsculpt.cpp │ │ ├── paintchannels.cpp │ │ ├── paintchannels.h │ │ ├── paintundo.cpp │ │ ├── paintundo.h │ │ ├── rasterize_bary.h │ │ ├── registeradvancedpaint.cpp │ │ └── registeradvancedpaint.h │ ├── pgp │ └── pgp.cpp │ ├── sculpting │ ├── cubesbrush.cpp │ ├── drawpoly.cpp │ ├── drawpolybrush.cpp │ ├── grabbrush.cpp │ ├── loadsave.cpp │ ├── pullbrush.cpp │ ├── sculptbrushmultistamp.cpp │ ├── sculptbrushtwist.cpp │ ├── sculptdeformer.cpp │ ├── sculptmodifier.cpp │ ├── selectionbrush.cpp │ └── splinebrush.cpp │ ├── shader │ ├── bitmapdistortionshader.cpp │ ├── gradientshader.cpp │ ├── hair_shader.cpp │ ├── illumination.cpp │ ├── mandelbrotshader.cpp │ ├── particlevolume.cpp │ └── simplematerial.cpp │ ├── tag │ ├── customdatatags.cpp │ ├── customdatatags.h │ ├── hair_render.cpp │ ├── hair_styling.cpp │ └── lookatcamera.cpp │ ├── tool │ ├── edgecuttool.cpp │ ├── liquidtool.cpp │ ├── pickobject.cpp │ ├── reversenormals.cpp │ ├── sculpting.cpp │ └── snaptool.cpp │ └── videopost │ ├── hair_videopost.cpp │ ├── vpcolorize.cpp │ ├── vpinvertimage.cpp │ ├── vpreconstructimage.cpp │ └── vpvisualizenormals.cpp ├── example.migration_2024 ├── README.md ├── example.migration_2024_splash.png ├── project │ └── projectdefinition.txt ├── res │ ├── c4d_symbols.h │ ├── description │ │ ├── oboundingbox.h │ │ └── oboundingbox.res │ └── strings_en-US │ │ ├── c4d_strings.str │ │ └── description │ │ └── oboundingbox.str └── source │ ├── _migration_example_plugin.cpp │ ├── _migration_example_plugin.h │ ├── change_examples.cpp │ ├── change_examples.h │ ├── main.cpp │ ├── oboundingbox.cpp │ └── obundingbox_legacy.cpp ├── example.nodes ├── project │ └── projectdefinition.txt ├── res │ └── nodes │ │ ├── net.maxonexample.nodes.module.db.ar-AR.json │ │ ├── net.maxonexample.nodes.module.db.cs-CZ.json │ │ ├── net.maxonexample.nodes.module.db.de-DE.json │ │ ├── net.maxonexample.nodes.module.db.en-US.json │ │ ├── net.maxonexample.nodes.module.db.es-ES.json │ │ ├── net.maxonexample.nodes.module.db.fr-FR.json │ │ ├── net.maxonexample.nodes.module.db.it-IT.json │ │ ├── net.maxonexample.nodes.module.db.ja-JP.json │ │ ├── net.maxonexample.nodes.module.db.json │ │ ├── net.maxonexample.nodes.module.db.ko-KR.json │ │ ├── net.maxonexample.nodes.module.db.pl-PL.json │ │ ├── net.maxonexample.nodes.module.db.ru-RU.json │ │ └── net.maxonexample.nodes.module.db.zh-CN.json └── source │ ├── command │ ├── create_node_material.cpp │ ├── customnode-command.cpp │ └── customnode-command.h │ ├── exchange │ ├── materialexport_command.cpp │ ├── materialexport_command.h │ ├── materialimport_command.cpp │ ├── materialimport_command.h │ ├── simplematerialexport.cpp │ ├── simplematerialexport.h │ ├── simplematerialimport.cpp │ └── simplematerialimport.h │ ├── gui │ ├── customgui_bundle.cpp │ ├── customgui_bundle.h │ ├── customgui_helpers.cpp │ ├── customgui_helpers.h │ ├── customgui_hybriddatatype.cpp │ ├── customgui_hybriddatatype.h │ ├── customgui_string.cpp │ ├── customgui_string.h │ ├── hybriddatatype.cpp │ └── hybriddatatype.h │ ├── main.cpp │ ├── plugin_strings.h │ └── space │ ├── compile_time_evaluation.cpp │ ├── customnode-customnodespace.cpp │ ├── customnode-customnodespace_descriptions.h │ ├── dynamic_node_impl.cpp │ ├── gradientpreviewprovider.cpp │ ├── gradientpreviewprovider.h │ ├── nodematerialexport_impl.cpp │ ├── nodematerialexport_impl.h │ ├── nodematerialimport_impl.cpp │ ├── nodematerialimport_impl.h │ ├── nodespace_impl.cpp │ ├── nodespace_impl.h │ ├── nodespaceviewportmaterial_impl.cpp │ ├── nodespaceviewportmaterial_impl.h │ ├── nodesystem_observer.cpp │ ├── nodesystem_observer.h │ ├── nodesystem_presethandler.cpp │ ├── nodesystem_presethandler.h │ ├── nodesystemclass_impl.cpp │ ├── nodesystemclass_impl.h │ ├── previewimageprovider_impl.cpp │ ├── previewimageprovider_impl.h │ ├── thumbnailgenerator_impl.cpp │ ├── thumbnailgenerator_impl.h │ ├── viewporttextureprovider_impl.cpp │ └── viewporttextureprovider_impl.h └── project └── projectdefinition.txt /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | indent_style = tab 3 | indent_size = 2 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.props 2 | *.vcxproj 3 | *.pbxproj 4 | *.filters 5 | *.sln 6 | *.vcxproj.user -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cinema 4D C++ API Examples 2 | 3 | Contains the official code examples for the Cinema 4D C++ API. 4 | 5 | The provided code examples are identical to the ones shipped with the [Cinema 4D C++ SDK](https://developers.maxon.net/downloads/). See our [Cinema 4D C++ API Documentation](https://developers.maxon.net/docs/cpp) for written manuals and an API index. 6 | 7 | To get started with the Cinema 4D C++ API, we recommend reading the [Getting Started: First Steps](https://developers.maxon.net/docs/cpp/2025_0_1/page_maxonapi_getting_started_introduction.html) manual. We also recommend visiting and registering at [developers.maxon.net](https://developers.maxon.net/) to be able to generate plugin identifiers and to participate in our [developer forum](https://developers.maxon.net/forum/). 8 | 9 | ## Content 10 | 11 | > :warning: This repository does neither contain the frameworks nor the build tools required to build the code examples. Please use our [Cinema 4D C++ SDK](https://developers.maxon.net/downloads/) for acquiring a complete build environment. 12 | 13 | | Directory | Description | 14 | | :- | :- | 15 | | plugins/example.main | Provides the majority of examples using the Cinema API. This will be for most users the most important and only relevant example pool. | 16 | | plugins/example.nodes | Provides examples for interacting with and implementing node systems of the Nodes API as represented by the Nodes Editor in Cinema 4D. Relevant for developers who want to support the Nodes API in their plugins. | 17 | | plugins/example.assets | Provides examples for reading, creating, and implementing assets for the Asset Browser of Cinema 4D. | 18 | | plugins/example.image | Provides examples for reading and writing image data with the Maxon Image API. Currently mostly focused on OCIO and color management. | 19 | | plugins/example.migration_2024 | Provides examples for migrating plugins using legacy APIs to the Cinema 4D 2024.0.0 API. | 20 | -------------------------------------------------------------------------------- /plugins/example.assets/README.md: -------------------------------------------------------------------------------- 1 | # examples.assets 2 | 3 | Contains the examples for the Asset API Handbook. 4 | 5 | ## Asset API Examples 6 | Showcases basic interactions with the Asset API to modify asset databases and their content. The example is delivered as a `GeDialog` plugin with which various code snippets of the Asset API Handbook can be executed. This plugin requires the SDK asset database to function correctly, you must either provide an internet connection on the machine where the plugin is being executed on or download and mount the database manually from [developers.maxon.net](https://developers.maxon.net). 7 | 8 | See `source\asset_api_examples` for details. 9 | 10 | ![Asset API Examples Dialog](asset_api_examples_readme.png) 11 | 12 | *Fig I - The Asset API Examples plugin opened in the 'Asset Databases' category, containing the asset database related examples.* 13 | 14 | ## Dots Preset Asset Type Example 15 | Implements a custom datatype with a custom GUI that can be saved as a preset asset. 16 | 17 | Preset assets can wrap wide range of content that can be written as parameters into scene entities. Native examples for preset assets are gradient and spline preset assets. 18 | 19 | See `source\dots_preset_asset_impl` for details. 20 | 21 | ![Dots Preset Asset](dots_preset_asset_type.gif) 22 | 23 | *Fig II - A null object with a parameter that is of type `DotsData` and the Asset Browser side by side. Dots preset assets can be created and loaded with the buttons in the `DotsGui` custom GUI that complements the `DotsData` type. Assets of type `DotsPresetAsset` in the Asset Browser can be dragged into a `DotsGui` to load such asset.* 24 | 25 | 26 | -------------------------------------------------------------------------------- /plugins/example.assets/asset_api_examples_readme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.assets/asset_api_examples_readme.png -------------------------------------------------------------------------------- /plugins/example.assets/dots_preset_asset_type.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.assets/dots_preset_asset_type.gif -------------------------------------------------------------------------------- /plugins/example.assets/project/projectdefinition.txt: -------------------------------------------------------------------------------- 1 | // The platforms this project is targeting - can be [Win64;OSX;Linux]. 2 | Platform=Win64;OSX;Linux 3 | 4 | // Type of project - can be [Lib;DLL;App]. 5 | Type=DLL 6 | 7 | // The frameworks dependencies of this project as shipped in the frameworks folder of an SDK. You can only include 8 | // header files from frameworks that are listed here. 9 | APIS=\ 10 | asset.framework;\ 11 | cinema.framework;\ 12 | cinema_hybrid.framework;\ 13 | core.framework;\ 14 | corenodes.framework;\ 15 | crypt.framework;\ 16 | graph.framework;\ 17 | image.framework;\ 18 | neutron.framework;\ 19 | nodes.framework;\ 20 | nodespace.framework 21 | 22 | // If this is a Cinema API plugin, enabling some Cinema API features and disabling automatic style checks. 23 | C4D=true 24 | 25 | stylecheck.level=3 26 | 27 | // The ID of the module/plugin which is being compiled. You should use here the "net.mycompany.myplugin" format. 28 | // You cannot use a module ID of the format "net.maxon.myplugin" as this domain is reserved for Maxon and plugins 29 | // ignoring this will not be loaded. 30 | ModuleId=net.maxonexample.assets 31 | -------------------------------------------------------------------------------- /plugins/example.assets/res/dialogs/dlg_assetapi_examples.res: -------------------------------------------------------------------------------- 1 | DIALOG DLG_ASSETAPI_EXAMPLES { NAME IDS_ASSETAPI_EXAMPLES; SCALE_H; SCALE_V; GROUP { COLUMNS 1; SPACE 5,5; BORDERSIZE 5,5,5,5; SCALE_H; SCALE_V; GROUP { COLUMNS 1; SCALE_H; SCALE_V; ALLOW_WEIGHTS; COMBOBOX ID_CMB_CATEGORIES { SCALE_H; CHILDS { ID_CATEGORY_DATABASES, IDS_CATEGORY_DATABASES; ID_CATEGORY_ASSET_TYPES, IDS_CATEGORY_ASSET_TYPES; ID_CATEGORY_METADATA, IDS_CATEGORY_METADATA; ID_CATEGORY_IMPL_PRESET_ASSET, IDS_CATEGORY_IMPL_PRESET_ASSET; } } LISTVIEW ID_LV_CONTENT { SCALE_H; SCALE_V; } MULTILINEEDIT ID_MLE_HELP { SCALE_H; SCALE_V; WORDWRAP; READONLY; SIZE 0, 50; } } GROUP { COLUMNS 2; SCALE_H; SPACE 5,5; BUTTON ID_BTN_LOAD_SCENE { NAME IDS_BTN_LOAD_SCENE; } BUTTON ID_BTN_RUN { NAME IDS_BTN_RUN; SCALE_H; } } } } -------------------------------------------------------------------------------- /plugins/example.assets/res/strings_en-US/dialogs/dlg_assetapi_examples.str: -------------------------------------------------------------------------------- 1 | DIALOGSTRINGS DLG_ASSETAPI_EXAMPLES 2 | { 3 | IDS_ASSETAPI_EXAMPLES "Asset API Examples"; 4 | IDS_CATEGORY_DATABASES "Asset Databases"; 5 | IDS_CATEGORY_METADATA "Asset Metadata"; 6 | IDS_CATEGORY_ASSET_TYPES "Asset Types"; 7 | IDS_CATEGORY_IMPL_PRESET_ASSET "Dots Preset Asset Type"; 8 | IDS_BTN_LOAD_SCENE "Load Example Scene"; 9 | IDS_BTN_RUN "Run Example"; 10 | } -------------------------------------------------------------------------------- /plugins/example.assets/source/asset_api_examples/README.md: -------------------------------------------------------------------------------- 1 | # Asset API Examples 2 | Showcases basic interactions with the Asset API to modify asset databases and their content. The example is delivered as a `GeDialog` plugin with which various code snippets of the Asset API Handbook can be executed. This plugin requires the SDK asset database to function correctly, you must either provide an internet connection on the machine where the plugin is being executed on or download and mount the database manually from [developers.maxon.net](https://developers.maxon.net). 3 | 4 | ![Asset API Examples Dialog](asset_api_examples_readme.png) 5 | 6 | *Fig I - The Asset API Examples plugin opened in the 'Asset Databases' category, containing the asset database related examples.* 7 | 8 | | File | Description | 9 | | :- | :- | 10 | | asset_api_examples_plugin.h | Contains the plugin layer used to invoke the provided examples. | 11 | | examples_databases.h | Contains the Asset API examples related to the topic of databases. | 12 | | examples_assets.h | Contains the Asset API examples related to the topic of asset types. | 13 | | examples_metadata.h | Contains the Asset API examples related to the topic of metadata. | 14 | | examples_contexts.h | Contains execution contexts showcasing how to use the examples shown in the manuals. | -------------------------------------------------------------------------------- /plugins/example.assets/source/asset_api_examples/asset_api_examples_readme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.assets/source/asset_api_examples/asset_api_examples_readme.png -------------------------------------------------------------------------------- /plugins/example.assets/source/dots_preset_asset_impl/README.md: -------------------------------------------------------------------------------- 1 | # Dots Preset Asset Type Example 2 | Implements a custom datatype with a custom GUI that can be saved as a preset asset. 3 | 4 | Preset assets can wrap wide range of content that can be written as parameters into scene entities. Native examples for preset assets are gradient and spline preset assets. 5 | 6 | ![Dots Preset Asset](dots_preset_asset_type.gif) 7 | 8 | *Fig I - A null object with a parameter that is of type `DotsData` and the Asset Browser side by side. Dots preset assets can be created and loaded with the buttons in the `DotsGui` custom GUI that complements the `DotsData` type. Assets of type `DotsPresetAsset` in the Asset Browser can be dragged into a `DotsGui` to load such asset.* 9 | 10 | | File | Description | 11 | | :- | :- | 12 | | dots_datatype.h | Implements a custom datatype with a custom GUI that can be saved as a preset asset. | 13 | | dots_preset_asset.h | Implements the Dots preset asset type that is targeted by the dots data type and GUI. | 14 | | examples_dots.h | Contains the Asset API examples related to Dots preset asset implementation. | -------------------------------------------------------------------------------- /plugins/example.assets/source/dots_preset_asset_impl/dots_preset_asset_type.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.assets/source/dots_preset_asset_impl/dots_preset_asset_type.gif -------------------------------------------------------------------------------- /plugins/example.assets/source/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Asset API Basics Example Plugin 3 | (C) MAXON Computer GmbH, 2021 4 | 5 | Author: Ferdinand Hoppe 6 | Date: 12/08/2021 7 | 8 | Provides examples for accessing Asset API databases and assets contained in them, as well as 9 | creating new assets and modifying their metadata. 10 | 11 | The examples are structured as static functions which can be found at the top of this file. The 12 | parts below only contain a CommandData implementation which is required to run this example, but 13 | not for understanding the Asset API. When being run, all examples will print output to the 14 | Cinema 4D console. Most of the documentation can be found in the definitions, i.e., 15 | asset_api_basics.cpp. 16 | */ 17 | #include "c4d_plugin.h" 18 | #include "c4d_resource.h" 19 | 20 | // Forward declaration 21 | cinema::Bool RegisterAssetApiBasics(); 22 | cinema::Bool RegisterDotsDataAndGui(); 23 | 24 | namespace cinema 25 | { 26 | 27 | Bool PluginStart() 28 | { 29 | if (!RegisterAssetApiBasics()) 30 | return false; 31 | if (!RegisterDotsDataAndGui()) 32 | return false; 33 | return true; 34 | } 35 | 36 | void PluginEnd() 37 | { 38 | 39 | } 40 | 41 | Bool PluginMessage(Int32 id, void* data) 42 | { 43 | switch (id) 44 | { 45 | case C4DPL_INIT_SYS: 46 | { 47 | // don't start plugin without resource 48 | if (!g_resource.Init()) 49 | return false; 50 | return true; 51 | } 52 | } 53 | return false; 54 | } 55 | 56 | } // namespace cinema 57 | -------------------------------------------------------------------------------- /plugins/example.hello_world/README.md: -------------------------------------------------------------------------------- 1 | # example.hello_world 2 | 3 | Contains a bare-bones example of a Cinema 4D module with a singular command plugin that opens a "Hello World" dialog when invoked. 4 | 5 | | Filename | Description | 6 | |---|---| 7 | | `project\projectdefinition.txt` | Contains the build configuration of the module. | 8 | | `source\main.cpp` | Contains all the source code of the module. | 9 | 10 | 11 | -------------------------------------------------------------------------------- /plugins/example.hello_world/project/projectdefinition.txt: -------------------------------------------------------------------------------- 1 | // The platforms this project is targeting - can be [Win64;OSX;Linux]. 2 | Platform=Win64;OSX;Linux 3 | 4 | // Type of project - can be [Lib;DLL;App], DLL is for (plugin) modules, lib for static libraries, 5 | // effectively frameworks, and App for standalone applications (not possible for plugins). 6 | Type=DLL 7 | 8 | // The frameworks dependencies of this module. One can only include header files from frameworks 9 | // which are listed here. The selection here is a good starting point for most projects. 10 | APIS=\ 11 | asset.framework;\ 12 | cinema.framework;\ 13 | cinema_hybrid.framework;\ 14 | core.framework 15 | 16 | // Enable Cinema API features for this module, and then reenable style checks again (because 17 | // C4D=true disables them). 18 | C4D=true 19 | stylecheck.level=3 20 | 21 | // The ID of the module which is being compiled. One should use the reversed domain notation, derived 22 | // from a domain name you own, followed by plugin qualifiers, e.g, "net.mycompany.mymodule" or 23 | // "net.mycompany.mysuite.mymodule". It is important that this ID is unique, as Cinema 4D will 24 | // not load two modules with the same ID. Please note that Cinema 4D will also not load modules 25 | // with a "net.maxon" domain, as this domain is reserved for Maxon modules. 26 | ModuleId=net.maxonexample.hello_world -------------------------------------------------------------------------------- /plugins/example.image/project/projectdefinition.txt: -------------------------------------------------------------------------------- 1 | // The platforms this project is targeting - can be [Win64;OSX;Linux]. 2 | Platform=Win64;OSX;Linux 3 | 4 | // Type of project - can be [Lib;DLL;App]. 5 | Type=DLL 6 | 7 | // The frameworks dependencies of this project as shipped in the frameworks folder of an SDK. You can only include 8 | // header files from frameworks that are listed here. 9 | // API dependencies 10 | APIS=\ 11 | asset.framework;\ 12 | cinema.framework;\ 13 | cinema_hybrid.framework;\ 14 | core.framework;\ 15 | corenodes.framework;\ 16 | crypt.framework;\ 17 | graph.framework;\ 18 | image.framework;\ 19 | neutron.framework;\ 20 | nodes.framework;\ 21 | nodespace.framework 22 | 23 | // If this is a Cinema API plugin, enabling some Cinema API features and disabling automatic style checks. 24 | C4D=true 25 | 26 | stylecheck.level=3 27 | 28 | // The ID of the module/plugin which is being compiled. You should use here the "net.mycompany.myplugin" format. 29 | // You cannot use a module ID of the format "net.maxon.myplugin" as this domain is reserved for Maxon and plugins 30 | // ignoring this will not be loaded. 31 | ModuleId=net.maxonexample.image 32 | -------------------------------------------------------------------------------- /plugins/example.image/res/c4d_symbols.h: -------------------------------------------------------------------------------- 1 | #ifndef C4D_SYMBOLS_H__ 2 | #define C4D_SYMBOLS_H__ 3 | 4 | enum 5 | { 6 | // Plugin IDs 7 | PID_COLOR_MANAGEMENT_EXAMPLES = 1059947, 8 | PID_OCIO_EXAMPLES = 1060231, 9 | PID_OCIO_AWARE_VIDEOPOST = 1060770, 10 | PID_OCIO_NODE_2025 = 1064223, 11 | 12 | // Command IDs 13 | CID_CLEAR_CONSOLE = 13957, 14 | CID_OPEN_CONSOLE = 12305, 15 | 16 | // String IDs 17 | IDS_NME_COLOR_MANAGEMENT_EXAMPLES = 10000, 18 | IDS_HLP_COLOR_MANAGEMENT_EXAMPLES, 19 | IDS_NME_OCIO_EXAMPLES, 20 | IDS_HLP_OCIO_EXAMPLES, 21 | IDS_NME_OCIO_AWARE_VIDEOPOST, 22 | IDS_NME_OCIO_NODE_2025, 23 | 24 | // End of symbol definition 25 | _DUMMY_ELEMENT_ 26 | }; 27 | 28 | #endif //C4D_SYMBOLS_H__ 29 | -------------------------------------------------------------------------------- /plugins/example.image/res/description/oocionode2025.h: -------------------------------------------------------------------------------- 1 | #ifndef OOCIONODE2025_H__ 2 | #define OOCIONODE2025_H__ 3 | 4 | enum 5 | { 6 | OCIO_NODE_2025_COLOR = 1000, 7 | }; 8 | 9 | #endif // OOCIONODE2025_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.image/res/description/oocionode2025.res: -------------------------------------------------------------------------------- 1 | CONTAINER Oocionode2025 2 | { 3 | NAME Oocionode2025; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | COLOR OCIO_NODE_2025_COLOR {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.image/res/description/vpocioawarerenderer.h: -------------------------------------------------------------------------------- 1 | #ifndef VPOCIOAWARERENDERER_H__ 2 | #define VPOCIOAWARERENDERER_H__ 3 | 4 | enum 5 | { 6 | ID_RENDER_COLOR = 1000, 7 | ID_PRETRANSFORM_OCIO_OUTPUT, 8 | ID_OVERWRITE_OCIO_DISPLAY_SPACE, 9 | ID_OVERWRITE_OCIO_VIEW_TRANSFORM 10 | }; 11 | 12 | #endif // VPOCIOAWARERENDERER_H__ 13 | -------------------------------------------------------------------------------- /plugins/example.image/res/description/vpocioawarerenderer.res: -------------------------------------------------------------------------------- 1 | CONTAINER VPocioawarerenderer 2 | { 3 | NAME VPocioawarerenderer; 4 | INCLUDE VPbase; 5 | 6 | GROUP ID_VIDEOPOSTPROPERTIES 7 | { 8 | COLOR ID_RENDER_COLOR { OPEN; } 9 | BOOL ID_PRETRANSFORM_OCIO_OUTPUT { ANIM OFF; } 10 | BOOL ID_OVERWRITE_OCIO_DISPLAY_SPACE { ANIM OFF; } 11 | BOOL ID_OVERWRITE_OCIO_VIEW_TRANSFORM { ANIM OFF; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/example.image/res/strings_en-US/c4d_strings.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE 2 | { 3 | IDS_NME_COLOR_MANAGEMENT_EXAMPLES "C++ SDK: Color Management Examples"; 4 | IDS_HLP_COLOR_MANAGEMENT_EXAMPLES "Demonstrates how to handle color spaces, profiles, and formats in the Image API."; 5 | IDS_NME_OCIO_EXAMPLES "C++ SDK: OCIO Examples"; 6 | IDS_HLP_OCIO_EXAMPLES "Demonstrates how interact with the OCIO settings and color spaces of a scene."; 7 | IDS_NME_OCIO_AWARE_VIDEOPOST "C++ SDK: Ocio Aware Renderer"; 8 | IDS_NME_OCIO_NODE_2025 "C++ SDK: Ocio Node 2025"; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/example.image/res/strings_en-US/description/oocionode2025.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Oocionode2025 2 | { 3 | Oocionode2025 "Ocio Node 2025"; 4 | OCIO_NODE_2025_COLOR "Color"; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.image/res/strings_en-US/description/vpocioawarerenderer.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE VPocioawarerenderer 2 | { 3 | VPocioawarerenderer "Ocio Aware Renderer"; 4 | ID_RENDER_COLOR "Input Color"; 5 | ID_PRETRANSFORM_OCIO_OUTPUT "Transfrom OCIO Outputs from sRGB"; 6 | ID_OVERWRITE_OCIO_DISPLAY_SPACE "Overwrite OCIO Display Sapce"; 7 | ID_OVERWRITE_OCIO_VIEW_TRANSFORM "Overwrite OCIO View Transform"; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.image/source/D65_XYZ.icc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.image/source/D65_XYZ.icc -------------------------------------------------------------------------------- /plugins/example.image/source/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Image API Example Plugin 3 | (C) MAXON Computer GmbH, 2022 4 | 5 | Author: Ferdinand Hoppe 6 | Date: 12/08/2022 7 | 8 | Provides examples for the image.framework. 9 | */ 10 | #include "c4d_plugin.h" 11 | #include "c4d_resource.h" 12 | 13 | // Forward declaration for image_api_examples_plugin.h 14 | cinema::Bool RegisterImageApiExamples(); 15 | cinema::Bool RegisterImageLayersAreaExample(); 16 | 17 | namespace cinema 18 | { 19 | 20 | Bool PluginStart() 21 | { 22 | Bool result = true; 23 | result &= RegisterImageApiExamples(); 24 | result &= RegisterImageLayersAreaExample(); 25 | 26 | return result; 27 | } 28 | 29 | void PluginEnd() 30 | { 31 | 32 | } 33 | 34 | Bool PluginMessage(Int32 id, void* data) 35 | { 36 | switch (id) 37 | { 38 | case C4DPL_INIT_SYS: 39 | { 40 | // don't start plugin without resource 41 | if (!g_resource.Init()) 42 | return false; 43 | return true; 44 | } 45 | } 46 | return false; 47 | } 48 | 49 | } // namespace cinema 50 | -------------------------------------------------------------------------------- /plugins/example.image/source/plugin_image_api_examples.h: -------------------------------------------------------------------------------- 1 | /* 2 | Image API Examples 3 | 2022, (C) MAXON Computer GmbH 4 | 5 | Author: Ferdinand Hoppe 6 | Date: 02/11/2022 7 | SDK: 2023.100 8 | 9 | Provides the command plugins to run the Image API examples. 10 | */ 11 | #ifndef IMAGE_API_EXAMPLES_PLUGIN_H__ 12 | #define IMAGE_API_EXAMPLES_PLUGIN_H__ 13 | 14 | #include "c4d_commandplugin.h" 15 | #include "c4d_general.h" 16 | 17 | #include "maxon/apibase.h" 18 | 19 | /// @brief Opens the Cinema 4D when not already open and flushes it. 20 | static void OpenFlushConsole(); 21 | 22 | /// @brief Provides the command to run the Image API color management examples. 23 | class ColorManagementExamplesCommand : public cinema::CommandData 24 | { 25 | INSTANCEOF(ColorManagementExamplesCommand, cinema::CommandData) 26 | 27 | public: 28 | static ColorManagementExamplesCommand* Alloc() { return NewObjClear(ColorManagementExamplesCommand); } 29 | 30 | /// @brief Runs all code examples declared in examples_color_management.h. 31 | virtual cinema::Bool Execute(cinema::BaseDocument* doc, cinema::GeDialog* parentManager); 32 | }; 33 | 34 | /// @brief Provides the command to run the Image API OpenColorIO examples. 35 | class OcioExamplesCommand : public cinema::CommandData 36 | { 37 | INSTANCEOF(OcioExamplesCommand, cinema::CommandData) 38 | 39 | public: 40 | static OcioExamplesCommand* Alloc() { return NewObjClear(OcioExamplesCommand); } 41 | 42 | /// @brief Runs all code examples declared in examples_ocio.h. 43 | virtual cinema::Bool Execute(cinema::BaseDocument* doc, cinema::GeDialog* parentManager); 44 | }; 45 | 46 | /// Called to register the Image API example plugin. 47 | cinema::Bool RegisterImageApiExamples(); 48 | 49 | #endif // IMAGE_API_EXAMPLES_PLUGIN_H__ 50 | -------------------------------------------------------------------------------- /plugins/example.image/source/sRGB2014.icc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.image/source/sRGB2014.icc -------------------------------------------------------------------------------- /plugins/example.main/project/projectdefinition.txt: -------------------------------------------------------------------------------- 1 | // The platforms this project is targeting - can be [Win64;OSX;Linux]. 2 | Platform=Win64;OSX;Linux 3 | 4 | // Type of project - can be [Lib;DLL;App]. 5 | Type=DLL 6 | 7 | // The frameworks dependencies of this project as shipped in the frameworks folder of an SDK. You can only include 8 | // header files from frameworks that are listed here. 9 | APIS=\ 10 | asset.framework;\ 11 | cinema.framework;\ 12 | cinema_hybrid.framework;\ 13 | crypt.framework; \ 14 | core.framework; \ 15 | corenodes.framework; \ 16 | command.framework; \ 17 | image.framework; \ 18 | math.framework; \ 19 | misc.framework; \ 20 | mesh_misc.framework; \ 21 | python.framework 22 | 23 | // If this is a Cinema API plugin, enabling some Cinema API features and disabling automatic style checks. 24 | C4D=true 25 | 26 | stylecheck.level=3 // must be set after c4d=true 27 | stylecheck.enum-registration=false 28 | stylecheck.enum-class=false 29 | 30 | // The ID of the module/plugin which is being compiled. You should use here the "net.mycompany.myplugin" format. 31 | // You cannot use a module ID of the format "net.maxon.myplugin" as this domain is reserved for Maxon and plugins 32 | // ignoring this will not be loaded. 33 | ModuleId=net.maxonexample.main -------------------------------------------------------------------------------- /plugins/example.main/res/atom.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/atom.tif -------------------------------------------------------------------------------- /plugins/example.main/res/circle.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/circle.tif -------------------------------------------------------------------------------- /plugins/example.main/res/description/blw_pluginlicensedialog_res.h: -------------------------------------------------------------------------------- 1 | #ifndef BLW_PLUGINLICENSEDIALOG_RES_H__ 2 | #define BLW_PLUGINLICENSEDIALOG_RES_H__ 3 | 4 | enum 5 | { 6 | ID_BLW_IMPORTC4DLICS_BUTTON = 1101, 7 | ID_BLW_EXPORTPLGLICS_BUTTON = 1102, 8 | ID_BLW_USERID_STEXT = 1103, 9 | ID_BLW_USERID_TEXT = 1104, 10 | ID_BLW_USERNAME_STEXT = 1105, 11 | ID_BLW_USERNAME_TEXT = 1106, 12 | ID_BLW_USERSURNAME_STEXT = 1107, 13 | ID_BLW_USERSURNAME_TEXT = 1108, 14 | ID_BLW_SYSIDS_STEXT = 1109, 15 | ID_BLW_SYSIDS_TEXT = 1110, 16 | ID_BLW_PRODIDS_STEXT = 1111, 17 | ID_BLW_PRODIDS_TEXT = 1112, 18 | ID_BLW_AVAILPRODIDS_STEXT = 1113, 19 | ID_BLW_AVAILPRODIDS_TEXT = 1114, 20 | ID_BLW_C4DVERS_STEXT = 1115, 21 | ID_BLW_C4DVERS_TEXT = 1116, 22 | 23 | ID_BLW_LICMODE_USEUSERID = 2000, 24 | ID_BLW_LICMODE_USESYSIDS = 2001, 25 | ID_BLW_LICMODE_USEPRODIDS = 2002, 26 | ID_BLW_LICMODE_MODE_STEXT = 2003, 27 | ID_BLW_LICMODE_SYSID_STEXT = 2004, 28 | ID_BLW_LICMODE_ALLOWEDSYSID = 2005, 29 | ID_BLW_LICMODE_PRDID_STEXT = 2006, 30 | ID_BLW_LICMODE_PRDIDS = 2007, 31 | 32 | ID_BLW_USEINCINEMA = 3000, 33 | ID_BLW_USEINTR = 3001, 34 | ID_BLW_PRODTYPE_STEXT = 3002, 35 | 36 | ID_BLW_USEINCOMMANDLINE = 5000, 37 | ID_BLW_USEINCOMMERCIAL = 5001, 38 | ID_BLW_USEINEDUCATION = 5002, 39 | ID_BLW_USEINLITE = 5003, 40 | ID_BLW_USEINNFR = 5004, 41 | ID_BLW_USEINTRIAL = 5005, 42 | ID_BLW_PRODCAT_STEXT = 5006, 43 | 44 | ID_BLW_USEINFLOATING = 6000, 45 | ID_BLW_USEINNODELOCKED = 6001, 46 | ID_BLW_PRODENV_STEXT = 6002, 47 | 48 | ID_BLW_ALLOWDEMO_STEXT = 7000, 49 | ID_BLW_ALLOWDEMO_DAYS = 7001, 50 | 51 | ID_BLW_ALLOWVER_STEXT = 8000, 52 | ID_BLW_ALLOWVER_MIN = 8001, 53 | ID_BLW_ALLOWVER_MAX = 8002 54 | }; 55 | 56 | #endif /* BLW_PLUGINLICENSEDIALOG_RES_H__ */ 57 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/bmexample.h: -------------------------------------------------------------------------------- 1 | #ifndef BMEXAMPLE_H__ 2 | #define BMEXAMPLE_H__ 3 | 4 | enum 5 | { 6 | }; 7 | 8 | #endif // BMEXAMPLE_H__ 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/bmexample.res: -------------------------------------------------------------------------------- 1 | CONTAINER BMexample 2 | { 3 | NAME BMexample; 4 | INCLUDE BMbase; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ckblinker.h: -------------------------------------------------------------------------------- 1 | #ifndef CKBLINKER_H__ 2 | #define CKBLINKER_H__ 3 | 4 | enum 5 | { 6 | BLINKERKEY_NUMBER = 1000 7 | }; 8 | 9 | #endif // CKBLINKER_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ckblinker.res: -------------------------------------------------------------------------------- 1 | CONTAINER CKblinker 2 | { 3 | NAME CKblinker; 4 | INCLUDE CKbase; 5 | 6 | GROUP ID_CKEY_PROPERTIES 7 | { 8 | REAL BLINKERKEY_NUMBER { MIN 0.0; STEP 0.01; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ctblinker.h: -------------------------------------------------------------------------------- 1 | #ifndef CTBLINKER_H__ 2 | #define CTBLINKER_H__ 3 | 4 | enum 5 | { 6 | BLINKERTRACK_TEST = 1000 7 | }; 8 | 9 | #endif // CTBLINKER_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ctblinker.res: -------------------------------------------------------------------------------- 1 | CONTAINER CTblinker 2 | { 3 | NAME CTblinker; 4 | INCLUDE CTbase; 5 | 6 | GROUP ID_CTRACK_PROPERTIES 7 | { 8 | HIDE ID_CTRACK_EVALUATION_MODE; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/dexample.h: -------------------------------------------------------------------------------- 1 | #ifndef DEXAMPLE_H__ 2 | #define DEXAMPLE_H__ 3 | 4 | enum 5 | { 6 | EXAMPLE_LONG = 1000, 7 | EXAMPLE_STRING = 1001, 8 | EXAMPLE_VECTOR = 1002 9 | }; 10 | 11 | #endif // DEXAMPLE_H__ 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/dexample.res: -------------------------------------------------------------------------------- 1 | CONTAINER Dexample 2 | { 3 | NAME Dexample; 4 | 5 | LONG EXAMPLE_LONG { } 6 | STRING EXAMPLE_STRING { } 7 | VECTOR EXAMPLE_VECTOR { UNIT METER; } 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/fsdkstlexport.h: -------------------------------------------------------------------------------- 1 | #ifndef FSDKSTLEXPORT_H__ 2 | #define FSDKSTLEXPORT_H__ 3 | 4 | enum 5 | { 6 | SDKSTLEXPORTFILTER_SCALE = 2000 7 | }; 8 | 9 | #endif // FSDKSTLEXPORT_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/fsdkstlexport.res: -------------------------------------------------------------------------------- 1 | CONTAINER Fsdkstlexport 2 | { 3 | NAME Fsdkstlexport; 4 | INCLUDE Fbase; 5 | 6 | GROUP ID_FILTERPROPERTIES 7 | { 8 | UNITSCALE SDKSTLEXPORTFILTER_SCALE { } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/fsdkstlimport.h: -------------------------------------------------------------------------------- 1 | #ifndef FSDKSTLIMPORT_H__ 2 | #define FSDKSTLIMPORT_H__ 3 | 4 | enum 5 | { 6 | SDKSTLIMPORTFILTER_SCALE = 2000 7 | }; 8 | 9 | #endif // FSDKSTLIMPORT_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/fsdkstlimport.res: -------------------------------------------------------------------------------- 1 | CONTAINER Fsdkstlimport 2 | { 3 | NAME Fsdkstlimport; 4 | INCLUDE Fbase; 5 | 6 | GROUP ID_FILTERPROPERTIES 7 | { 8 | UNITSCALE SDKSTLIMPORTFILTER_SCALE { } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/mparticlevolume.h: -------------------------------------------------------------------------------- 1 | #ifndef MPARTICLEVOLUME_H__ 2 | #define MPARTICLEVOLUME_H__ 3 | 4 | enum 5 | { 6 | MParticleVolume = 1000 7 | }; 8 | 9 | #endif // MPARTICLEVOLUME_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/mparticlevolume.res: -------------------------------------------------------------------------------- 1 | CONTAINER MParticleVolume 2 | { 3 | NAME MParticleVolume; 4 | INCLUDE Mpreview; 5 | INCLUDE Mbase; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/msimplematerial.h: -------------------------------------------------------------------------------- 1 | #ifndef MSIMPLEMATERIAL_H__ 2 | #define MSIMPLEMATERIAL_H__ 3 | 4 | enum 5 | { 6 | SIMPLEMATERIAL_COLOR = 1000, 7 | SIMPLEMATERIAL_MAT_PREVIEW = 1001 8 | }; 9 | 10 | #endif // MSIMPLEMATERIAL_H__ 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/msimplematerial.res: -------------------------------------------------------------------------------- 1 | CONTAINER Msimplematerial 2 | { 3 | NAME Msimplematerial; 4 | 5 | GROUP 6 | { 7 | MATPREVIEW SIMPLEMATERIAL_MAT_PREVIEW { OPEN; MIN_WIDTH 100; MIN_HEIGHT 100; NO_SIZE_POPUP; } 8 | } 9 | 10 | INCLUDE Mbase; 11 | 12 | GROUP Obaselist 13 | { 14 | BOOL MATERIAL_PAGE_PROPERTIES { HIDDEN; PAGE; PARENTMSG ID_MATERIALPROPERTIES; } 15 | } 16 | 17 | GROUP ID_MATERIALPROPERTIES 18 | { 19 | DEFAULT 1; 20 | COLOR SIMPLEMATERIAL_COLOR {} 21 | } 22 | 23 | INCLUDE Millum; 24 | INCLUDE Massign; 25 | } 26 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oassetcontainer.h: -------------------------------------------------------------------------------- 1 | #ifndef OASSETCONTAINER_H__ 2 | #define OASSETCONTAINER_H__ 3 | 4 | enum 5 | { 6 | ASSETCONTAINER_SELECTION = 1000, 7 | ASSETCONTAINER_SELECTION_NONE = 0, 8 | ASSETCONTAINER_SOURCE = 1001, 9 | ASSETCONTAINER_ADD = 1002 10 | }; 11 | 12 | #endif // OASSETCONTAINER_H__ 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oassetcontainer.res: -------------------------------------------------------------------------------- 1 | CONTAINER Oassetcontainer 2 | { 3 | NAME Oassetcontainer; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | // The selection for the asset the asset container will return as its cache - i.e., the output 9 | // of the asset container visible in the scene. 10 | LONG ASSETCONTAINER_SELECTION 11 | { 12 | CYCLE 13 | { 14 | ASSETCONTAINER_SELECTION_NONE; 15 | } 16 | } 17 | 18 | // A link and a button to add new assets to the asset container which can then be selected by 19 | // the user with the ASSETCONTAINER_ASSET parameter. 20 | GROUP 21 | { 22 | COLUMNS 2; 23 | LINK ASSETCONTAINER_SOURCE { ACCEPT { Obase; } } 24 | BUTTON ASSETCONTAINER_ADD {} 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/oatom.h: -------------------------------------------------------------------------------- 1 | #ifndef OATOM_H__ 2 | #define OATOM_H__ 3 | 4 | enum 5 | { 6 | ATOMOBJECT_CRAD = 1000, 7 | ATOMOBJECT_SRAD = 1001, 8 | ATOMOBJECT_SUB = 1002, 9 | ATOMOBJECT_SINGLE = 1003 10 | }; 11 | 12 | #endif // OATOM_H__ 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oatom.res: -------------------------------------------------------------------------------- 1 | CONTAINER Oatom 2 | { 3 | NAME Oatom; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL ATOMOBJECT_CRAD { UNIT METER; MIN 0.01; STEP 0.01; } 9 | REAL ATOMOBJECT_SRAD { UNIT METER; MIN 0.01; STEP 0.01; } 10 | LONG ATOMOBJECT_SUB { MIN 3; MAX 1000; } 11 | BOOL ATOMOBJECT_SINGLE { } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/odescription.h: -------------------------------------------------------------------------------- 1 | #ifndef ODESCRIPTION_H__ 2 | #define ODESCRIPTION_H__ 3 | 4 | enum 5 | { 6 | ID_GROUP_CONTROL = 1000, 7 | ID_SELECT_DESCRIPTION, 8 | ID_SET_PARAMETER, 9 | ID_GET_PARAMETER, 10 | ID_GROUP_DYNAMIC, 11 | ID_DYNAMIC_ELEMENT = 2000, 12 | 13 | ID_GROUP_RESULT = 5000, 14 | ID_RESULT_TEXT 15 | 16 | }; 17 | 18 | #endif // ODESCRIPTION_H__ 19 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/odescription.res: -------------------------------------------------------------------------------- 1 | CONTAINER Odescription 2 | { 3 | NAME Odescription; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | 9 | 10 | GROUP ID_GROUP_CONTROL 11 | { 12 | LAYOUTGROUP; COLUMNS 3; DEFAULT 1; 13 | 14 | GROUP 15 | { 16 | LONG ID_SELECT_DESCRIPTION { SCALE_H; CYCLE { }; } 17 | } 18 | 19 | GROUP 20 | { 21 | BUTTON ID_SET_PARAMETER {} 22 | } 23 | 24 | GROUP 25 | { 26 | BUTTON ID_GET_PARAMETER {} 27 | } 28 | 29 | 30 | } 31 | 32 | GROUP ID_GROUP_DYNAMIC 33 | { 34 | DEFAULT 1; SCALE_H; 35 | } 36 | 37 | GROUP ID_GROUP_RESULT 38 | { 39 | DEFAULT 1; SCALE_H; 40 | 41 | STRING ID_RESULT_TEXT { CUSTOMGUI MULTISTRING; ANIM OFF; } 42 | } 43 | } 44 | 45 | 46 | } 47 | 48 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/odoublecircle.h: -------------------------------------------------------------------------------- 1 | #ifndef ODOUBLECIRCLE_H__ 2 | #define ODOUBLECIRCLE_H__ 3 | 4 | enum 5 | { 6 | CIRCLEOBJECT_RAD = 10000 // values 1000.3000 already reserved from includes 7 | }; 8 | 9 | #endif // ODOUBLECIRCLE_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/odoublecircle.res: -------------------------------------------------------------------------------- 1 | CONTAINER Odoublecircle 2 | { 3 | NAME Odoublecircle; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL CIRCLEOBJECT_RAD { UNIT METER; MIN 0.0; } 9 | } 10 | INCLUDE Osplineprimitive; 11 | } 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oedrop.h: -------------------------------------------------------------------------------- 1 | #ifndef OEDROP_H__ 2 | #define OEDROP_H__ 3 | 4 | enum 5 | { 6 | //groups 7 | DROPEFFECTOR_GROUPEFFECTOR = 991, 8 | 9 | //------------------------------ 10 | //Effector controls 11 | //Generally keep strength at ID 1000 12 | DROPEFFECTOR_STRENGTH = 1000, 13 | 14 | //------------------------------- 15 | //Parameter controls 16 | //Generally keep these from id 1100 onwards 17 | DROPEFFECTOR_TARGET = 1100, 18 | DROPEFFECTOR_MODE = 1101, 19 | DROPEFFECTOR_MODE_AXIS = 0, 20 | DROPEFFECTOR_MODE_SELFAXIS = 1, 21 | DROPEFFECTOR_MODE_PNORMAL = 2, 22 | DROPEFFECTOR_MODE_NNORMAL = 3, 23 | DROPEFFECTOR_MODE_PX = 4, 24 | DROPEFFECTOR_MODE_PY = 5, 25 | DROPEFFECTOR_MODE_PZ = 6, 26 | DROPEFFECTOR_MODE_NX = 7, 27 | DROPEFFECTOR_MODE_NY = 8, 28 | DROPEFFECTOR_MODE_NZ = 9, 29 | DROPEFFECTOR_DISTANCE = 1102 30 | }; 31 | #endif // OEDROP_H__ 32 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oedrop.res: -------------------------------------------------------------------------------- 1 | CONTAINER Oedrop 2 | { 3 | NAME Oedrop; 4 | 5 | INCLUDE Obase; 6 | 7 | GROUP DROPEFFECTOR_GROUPEFFECTOR 8 | { 9 | DEFAULT 1; 10 | 11 | REAL DROPEFFECTOR_STRENGTH 12 | { 13 | MINSLIDER 0.0; 14 | MAXSLIDER 100.0; 15 | UNIT PERCENT; 16 | CUSTOMGUI REALSLIDER; 17 | } 18 | SEPARATOR 19 | { 20 | LINE; 21 | } 22 | LINK DROPEFFECTOR_TARGET 23 | { 24 | ACCEPT 25 | { 26 | Obase; 27 | } 28 | REFUSE 29 | { 30 | Osky; 31 | Oforeground; 32 | } 33 | } 34 | LONG DROPEFFECTOR_MODE 35 | { 36 | CYCLE 37 | { 38 | DROPEFFECTOR_MODE_AXIS; 39 | DROPEFFECTOR_MODE_SELFAXIS; 40 | DROPEFFECTOR_MODE_PNORMAL; 41 | DROPEFFECTOR_MODE_NNORMAL; 42 | DROPEFFECTOR_MODE_PX; 43 | DROPEFFECTOR_MODE_PY; 44 | DROPEFFECTOR_MODE_PZ; 45 | DROPEFFECTOR_MODE_NX; 46 | DROPEFFECTOR_MODE_NY; 47 | DROPEFFECTOR_MODE_NZ; 48 | } 49 | } 50 | REAL DROPEFFECTOR_DISTANCE { MIN 1.0; UNIT METER; } 51 | } 52 | INCLUDE Oedeformer_panel; 53 | } 54 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oenoise.h: -------------------------------------------------------------------------------- 1 | #ifndef OENOISE_H__ 2 | #define OENOISE_H__ 3 | 4 | enum 5 | { 6 | NOISEEFFECTOR_SCALE = 1100 7 | }; 8 | #endif // OENOISE_H__ 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oenoise.res: -------------------------------------------------------------------------------- 1 | CONTAINER Oenoise 2 | { 3 | NAME Oenoise; 4 | 5 | INCLUDE Obaseeffector; 6 | 7 | GROUP ID_MG_BASEEFFECTOR_GROUPEFFECTOR 8 | { 9 | REAL NOISEEFFECTOR_SCALE { UNIT PERCENT; MIN 0.0; MAXSLIDER 100.0; CUSTOMGUI REALSLIDER; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ofalloff_random.h: -------------------------------------------------------------------------------- 1 | #ifndef OFALLOFF_RANDOM_H__ 2 | #define OFALLOFF_RANDOM_H__ 3 | 4 | enum 5 | { 6 | //Falloff controls 7 | RANDOMFALLOFF_SEED = 5200 8 | }; 9 | #endif // OFALLOFF_RANDOM_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ofalloff_random.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ofalloff_random 2 | { 3 | NAME Ofalloff_random; 4 | INCLUDE Ofalloff_standard; 5 | 6 | HIDE FALLOFF_SIZE; 7 | 8 | GROUP FALLOFF_GROUPFALLOFF 9 | { 10 | GROUP FALLOFF_SETTINGS 11 | { 12 | LONG RANDOMFALLOFF_SEED { MIN 0; } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ogetsetdparameterexample.h: -------------------------------------------------------------------------------- 1 | #ifndef OGETSETDPARAMETEREXAMPLE_H__ 2 | #define OGETSETDPARAMETEREXAMPLE_H__ 3 | 4 | #endif // OGETSETDPARAMETEREXAMPLE_H__ 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ogetsetdparameterexample.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ogetsetdparameterexample 2 | { 3 | NAME Ogetsetdparameterexample; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ogreektemple.h: -------------------------------------------------------------------------------- 1 | #ifndef OGREEKTEMPLE_H__ 2 | #define OGREEKTEMPLE_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_GREEKTEMPLE_WIDTH = 1000, 7 | SDK_EXAMPLE_GREEKTEMPLE_HEIGHT = 1001, 8 | SDK_EXAMPLE_GREEKTEMPLE_LENGTH = 1002, 9 | SDK_EXAMPLE_GREEKTEMPLE_X_SEGMENTS = 1003, 10 | SDK_EXAMPLE_GREEKTEMPLE_Y_SEGMENTS = 1004, 11 | SDK_EXAMPLE_GREEKTEMPLE_Z_SEGMENTS = 1005, 12 | SDK_EXAMPLE_GREEKTEMPLE_STAIRS = 1006, 13 | SDK_EXAMPLE_GREEKTEMPLE_COLS_SPACEX = 1007, 14 | SDK_EXAMPLE_GREEKTEMPLE_COLS_SPACEZ = 1008, 15 | 16 | 17 | SDK_EXAMPLE_GREEKTEMPLE = 2000 18 | }; 19 | 20 | #endif // OGREEKTEMPLE_H__ 21 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ogreektemple.res: -------------------------------------------------------------------------------- 1 | CONTAINER ogreektemple 2 | { 3 | NAME ogreektemple; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL SDK_EXAMPLE_GREEKTEMPLE_WIDTH { UNIT METER; MIN 0.0; } 9 | REAL SDK_EXAMPLE_GREEKTEMPLE_HEIGHT { UNIT METER; MIN 0.0; } 10 | REAL SDK_EXAMPLE_GREEKTEMPLE_LENGTH { UNIT METER; MIN 0.0; } 11 | LONG SDK_EXAMPLE_GREEKTEMPLE_X_SEGMENTS { MIN 0; MAX 100; } 12 | LONG SDK_EXAMPLE_GREEKTEMPLE_Y_SEGMENTS { MIN 0; MAX 100; } 13 | LONG SDK_EXAMPLE_GREEKTEMPLE_Z_SEGMENTS { MIN 0; MAX 100; } 14 | LONG SDK_EXAMPLE_GREEKTEMPLE_STAIRS { MIN 3; MAX 12; } 15 | REAL SDK_EXAMPLE_GREEKTEMPLE_COLS_SPACEX { UNIT METER; MIN 0.0; } 16 | REAL SDK_EXAMPLE_GREEKTEMPLE_COLS_SPACEZ { UNIT METER; MIN 0.0; } 17 | } 18 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkcollider.h: -------------------------------------------------------------------------------- 1 | #ifndef OHAIRSDKCOLLIDER_H__ 2 | #define OHAIRSDKCOLLIDER_H__ 3 | 4 | enum 5 | { 6 | HAIRSDK_COLLIDER_BOUNCE = 2000, 7 | HAIRSDK_COLLIDER_FRICTION = 2001, 8 | HAIRSDK_COLLIDER_WIDTH = 2002, 9 | HAIRSDK_COLLIDER_HEIGHT = 2003, 10 | 11 | ////////////////////////////////////////////////////////////////////////// 12 | 13 | _HAIRSDK_COLLIDER_END_ 14 | }; 15 | 16 | #endif // OHAIRSDKCOLLIDER_H__ 17 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkcollider.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ohairsdkcollider 2 | { 3 | NAME Ohairsdkcollider; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL HAIRSDK_COLLIDER_BOUNCE { UNIT PERCENT; } 9 | REAL HAIRSDK_COLLIDER_FRICTION { UNIT PERCENT; } 10 | 11 | REAL HAIRSDK_COLLIDER_WIDTH { UNIT METER; MIN 0.0; } 12 | REAL HAIRSDK_COLLIDER_HEIGHT { UNIT METER; MIN 0.0; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkconstraint.h: -------------------------------------------------------------------------------- 1 | #ifndef OHAIRSDKCONSTRAINT_H__ 2 | #define OHAIRSDKCONSTRAINT_H__ 3 | 4 | enum 5 | { 6 | HAIR_CONSTRAINT_STRENGTH = 2000, 7 | 8 | ////////////////////////////////////////////////////////////////////////// 9 | 10 | _HAIR_CONSTRAINT_END_ 11 | }; 12 | 13 | #endif // OHAIRSDKCONSTRAINT_H__ 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkconstraint.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ohairsdkconstraint 2 | { 3 | NAME Ohairsdkconstraint; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL HAIR_CONSTRAINT_STRENGTH { UNIT PERCENT; MIN 0.0; MAX 100.0; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkdeformer.h: -------------------------------------------------------------------------------- 1 | #ifndef OHAIRSDKDEFORMER_H__ 2 | #define OHAIRSDKDEFORMER_H__ 3 | 4 | enum 5 | { 6 | HAIR_DEFORMER_STRENGTH = 2000, 7 | HAIR_DEFORMER_COMB_X = 2001, 8 | HAIR_DEFORMER_COMB_Y = 2002, 9 | HAIR_DEFORMER_COMB_Z = 2003, 10 | 11 | ////////////////////////////////////////////////////////////////////////// 12 | 13 | _HAIR_DEFORMER_END_ 14 | }; 15 | 16 | #endif // OHAIRSDKDEFORMER_H__ 17 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkdeformer.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ohairsdkdeformer 2 | { 3 | NAME Ohairsdkdeformer; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL HAIR_DEFORMER_STRENGTH { UNIT PERCENT; } 9 | 10 | LINK HAIR_DEFORMER_COMB_X { ACCEPT { 5682; } } 11 | LINK HAIR_DEFORMER_COMB_Y { ACCEPT { 5682; } } 12 | LINK HAIR_DEFORMER_COMB_Z { ACCEPT { 5682; } } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkforce.h: -------------------------------------------------------------------------------- 1 | #ifndef OHAIRSDKFORCE_H__ 2 | #define OHAIRSDKFORCE_H__ 3 | 4 | enum 5 | { 6 | HAIR_FORCE_STRENGTH = 2000, 7 | HAIR_FORCE_LINK = 2001, 8 | 9 | ////////////////////////////////////////////////////////////////////////// 10 | 11 | _HAIR_FORCE_END_ 12 | }; 13 | 14 | #endif // OHAIRSDKFORCE_H__ 15 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkforce.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ohairsdkforce 2 | { 3 | NAME Ohairsdkforce; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL HAIR_FORCE_STRENGTH { UNIT PERCENT; } 9 | LINK HAIR_FORCE_LINK { ACCEPT { Obase; } } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkgen.h: -------------------------------------------------------------------------------- 1 | #ifndef OHAIRSDKGEN_H__ 2 | #define OHAIRSDKGEN_H__ 3 | 4 | enum 5 | { 6 | HAIR_GEN_LINK = 2000, 7 | HAIR_GEN_COUNT = 2001, 8 | HAIR_GEN_SEGMENTS = 2002, 9 | HAIR_GEN_LENGTH = 2003, 10 | HAIR_GEN_LENGTH_VAR = 2004, 11 | HAIR_GEN_NOISE = 2005, 12 | HAIR_GEN_GENERATE = 2006, 13 | 14 | ////////////////////////////////////////////////////////////////////////// 15 | 16 | _HAIR_GEN_END_ 17 | }; 18 | 19 | #endif // OHAIRSDKGEN_H__ 20 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkgen.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ohairsdkgen 2 | { 3 | NAME Ohairsdkgen; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | BOOL HAIR_GEN_GENERATE { } 9 | 10 | LINK HAIR_GEN_LINK { ACCEPT { 5100; Tpolygonselection; 5682; } } 11 | 12 | GROUP 13 | { 14 | COLUMNS 2; 15 | 16 | LONG HAIR_GEN_COUNT { MIN 1; } 17 | LONG HAIR_GEN_SEGMENTS { MIN 1; MAX 4096; } 18 | 19 | REAL HAIR_GEN_LENGTH { UNIT METER; MIN 0.0; } 20 | REAL HAIR_GEN_LENGTH_VAR { UNIT METER; MIN 0.0; } 21 | 22 | REAL HAIR_GEN_NOISE { UNIT PERCENT; MIN 0.0; } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkgrass.h: -------------------------------------------------------------------------------- 1 | #ifndef OHAIRSDKGRASS_H__ 2 | #define OHAIRSDKGRASS_H__ 3 | 4 | enum 5 | { 6 | HAIR_GRASS_LINK = 2000, 7 | HAIR_GRASS_COUNT = 2001, 8 | HAIR_GRASS_SEGMENTS = 2002, 9 | HAIR_GRASS_LENGTH = 2003, 10 | HAIR_GRASS_LENGTH_VAR = 2004, 11 | HAIR_GRASS_NOISE = 2005, 12 | HAIR_GRASS_GENERATE = 2006, 13 | 14 | ////////////////////////////////////////////////////////////////////////// 15 | 16 | _HAIR_GRASS_END_ 17 | }; 18 | 19 | #endif // OHAIRSDKGRASS_H__ 20 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohairsdkgrass.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ohairsdkgrass 2 | { 3 | NAME Ohairsdkgrass; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | BOOL HAIR_GRASS_GENERATE { } 9 | 10 | LINK HAIR_GRASS_LINK { ACCEPT { 5100; Tpolygonselection; 5682; } } 11 | 12 | GROUP 13 | { 14 | COLUMNS 2; 15 | 16 | LONG HAIR_GRASS_COUNT { MIN 1; } 17 | LONG HAIR_GRASS_SEGMENTS { MIN 1; MAX 4096; } 18 | 19 | REAL HAIR_GRASS_LENGTH { UNIT METER; MIN 0.0; } 20 | REAL HAIR_GRASS_LENGTH_VAR { UNIT METER; MIN 0.0; } 21 | 22 | REAL HAIR_GRASS_NOISE { UNIT PERCENT; MIN 0.0; } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oheartshape.h: -------------------------------------------------------------------------------- 1 | #ifndef OHEARTSHAPE_H__ 2 | #define OHEARTSHAPE_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_HEARTSHAPE_RADIUS = 1000, 7 | SDK_EXAMPLE_HEARTSHAPE = 2000 8 | }; 9 | 10 | #endif // OHEARTSHAPE_H__ 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oheartshape.res: -------------------------------------------------------------------------------- 1 | CONTAINER oheartshape 2 | { 3 | NAME oheartshape; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL SDK_EXAMPLE_HEARTSHAPE_RADIUS { UNIT METER; MIN 0.0; } 9 | } 10 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohyperfile.h: -------------------------------------------------------------------------------- 1 | #ifndef OHYPERFILE_H_ 2 | #define OHYPERFILE_H_ 3 | 4 | enum 5 | { 6 | ID_BUTTON_ADD_IMAGE = 1000, 7 | ID_BUTTON_SHOW_IMAGES = 1001, 8 | _DUMMY 9 | }; 10 | 11 | #endif // OHYPERFILE_H__ 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ohyperfile.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ohyperfile 2 | { 3 | NAME Ohyperfile; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | GROUP 9 | { 10 | LAYOUTGROUP; COLUMNS 2; 11 | 12 | // content of layout group needs to be encapsulated in separate groups 13 | GROUP 14 | { 15 | BUTTON ID_BUTTON_ADD_IMAGE {} 16 | } 17 | GROUP 18 | { 19 | BUTTON ID_BUTTON_SHOW_IMAGES {} 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/olatticeplanemodifier.h: -------------------------------------------------------------------------------- 1 | #ifndef OLATTICEPLANEMODIFIER_H__ 2 | #define OLATTICEPLANEMODIFIER_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_SSIZE = 1000, 7 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_TSIZE = 1001, 8 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_SSEGS = 1002, 9 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_TSEGS = 1003, 10 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE = 1004, 11 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_UNLIMITED = 0, 12 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_WITHINBOX = 1, 13 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_RESETCAGE = 1005, 14 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_ENABLENORMALCHK = 1006, 15 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_NORMALTHR = 1007, 16 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_GROUP = 1008, 17 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_CAGE_GROUP = 1009, 18 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_NORMAL_GROUP = 1010 19 | }; 20 | 21 | #endif // OLATTICEPLANEMODIFIER_H__ 22 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/olatticeplanemodifier.res: -------------------------------------------------------------------------------- 1 | CONTAINER olatticeplanemodifier 2 | { 3 | NAME olatticeplanemodifier; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | GROUP SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_GROUP 9 | { 10 | LONG SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE 11 | { 12 | CYCLE 13 | { 14 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_UNLIMITED; 15 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_WITHINBOX; 16 | } 17 | } 18 | } 19 | GROUP SDK_EXAMPLE_LATTICEPLANEMODIFIER_CAGE_GROUP 20 | { 21 | REAL SDK_EXAMPLE_LATTICEPLANEMODIFIER_SSIZE { MIN 0; UNIT METER; } 22 | REAL SDK_EXAMPLE_LATTICEPLANEMODIFIER_TSIZE { MIN 0; UNIT METER; } 23 | 24 | LONG SDK_EXAMPLE_LATTICEPLANEMODIFIER_SSEGS { MIN 1; MAX 128;} 25 | LONG SDK_EXAMPLE_LATTICEPLANEMODIFIER_TSEGS { MIN 1; MAX 128;} 26 | } 27 | GROUP SDK_EXAMPLE_LATTICEPLANEMODIFIER_NORMAL_GROUP 28 | { 29 | BOOL SDK_EXAMPLE_LATTICEPLANEMODIFIER_ENABLENORMALCHK {} 30 | REAL SDK_EXAMPLE_LATTICEPLANEMODIFIER_NORMALTHR {MIN 0; MAX 180; UNIT DEGREE;} 31 | } 32 | BUTTON SDK_EXAMPLE_LATTICEPLANEMODIFIER_RESETCAGE {} 33 | } 34 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/oloftedmesh.h: -------------------------------------------------------------------------------- 1 | #ifndef OLOFTEDMESH_H__ 2 | #define OLOFTEDMESH_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_LOFTEDMESH_S_STEPS = 1000, 7 | SDK_EXAMPLE_LOFTEDMESH_T_STEPS = 1001, 8 | SDK_EXAMPLE_LOFTEDMESH_INTERPOLATION = 1002, 9 | SDK_EXAMPLE_SPLINETYPE_LINEAR = 0, 10 | SDK_EXAMPLE_SPLINETYPE_CUBIC = 1, 11 | SDK_EXAMPLE_SPLINETYPE_AKIMA = 2, 12 | SDK_EXAMPLE_SPLINETYPE_BSPLINE = 3, 13 | SDK_EXAMPLE_SPLINETYPE_BEZIER = 4 14 | }; 15 | 16 | #endif // OOBJECTDATA_LOFTEDMESH_H__ 17 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oloftedmesh.res: -------------------------------------------------------------------------------- 1 | CONTAINER oloftedmesh 2 | { 3 | NAME oloftedmesh; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | LONG SDK_EXAMPLE_LOFTEDMESH_S_STEPS { MIN 1; } 9 | LONG SDK_EXAMPLE_LOFTEDMESH_T_STEPS { MIN 1; } 10 | LONG SDK_EXAMPLE_LOFTEDMESH_INTERPOLATION 11 | { 12 | CYCLE 13 | { 14 | SDK_EXAMPLE_SPLINETYPE_LINEAR; 15 | SDK_EXAMPLE_SPLINETYPE_CUBIC; 16 | SDK_EXAMPLE_SPLINETYPE_AKIMA; 17 | SDK_EXAMPLE_SPLINETYPE_BSPLINE; 18 | SDK_EXAMPLE_SPLINETYPE_BEZIER; 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/omorphmixer.h: -------------------------------------------------------------------------------- 1 | #ifndef OMORPHMIXER_H__ 2 | #define OMORPHMIXER_H__ 3 | 4 | enum 5 | { 6 | MORPHMIXER_RECORD = 1000, 7 | MORPHMIXER_IMPORT = 1001, 8 | 9 | MORPHMIXER_POSEOFFSET = 2000 10 | }; 11 | 12 | #endif // OMORPHMIXER_H__ 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/omorphmixer.res: -------------------------------------------------------------------------------- 1 | CONTAINER Omorphmixer 2 | { 3 | NAME Omorphmixer; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | GROUP 9 | { 10 | COLUMNS 2; 11 | BUTTON MORPHMIXER_RECORD { } 12 | BUTTON MORPHMIXER_IMPORT { } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oplanebypolygons.h: -------------------------------------------------------------------------------- 1 | #ifndef OPLANEBYPOLYGONS_H__ 2 | #define OPLANEBYPOLYGONS_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_PLANEBYPOLYGONS_WIDTH = 1000, 7 | SDK_EXAMPLE_PLANEBYPOLYGONS_HEIGHT = 1001, 8 | SDK_EXAMPLE_PLANEBYPOLYGONS_W_SUBD = 1002, 9 | SDK_EXAMPLE_PLANEBYPOLYGONS_H_SUBD = 1003, 10 | SDK_EXAMPLE_PLANEBYPOLYGONS_USE_TRIS = 1004 11 | }; 12 | 13 | #endif // OPLANEBYPOLYGONS_H__ 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oplanebypolygons.res: -------------------------------------------------------------------------------- 1 | CONTAINER oplanebypolygons 2 | { 3 | NAME oplanebypolygons; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL SDK_EXAMPLE_PLANEBYPOLYGONS_WIDTH { UNIT METER; MIN 0.0; } 9 | REAL SDK_EXAMPLE_PLANEBYPOLYGONS_HEIGHT { UNIT METER; MIN 0.0; } 10 | LONG SDK_EXAMPLE_PLANEBYPOLYGONS_W_SUBD { MIN 1; MAX 256; } 11 | LONG SDK_EXAMPLE_PLANEBYPOLYGONS_H_SUBD { MIN 1; MAX 256; } 12 | BOOL SDK_EXAMPLE_PLANEBYPOLYGONS_USE_TRIS { } 13 | } 14 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/oporcupinemodifier.h: -------------------------------------------------------------------------------- 1 | #ifndef OPORCUPINEMODIFIER_H__ 2 | #define OPORCUPINEMODIFIER_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_PORCUPINEMODIFIER_PERCENTAGE = 1000, 7 | SDK_EXAMPLE_PORCUPINEMODIFIER_LEVEL = 1001 8 | }; 9 | 10 | #endif // OPORCUPINEMODIFIER_H__ 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oporcupinemodifier.res: -------------------------------------------------------------------------------- 1 | CONTAINER oporcupinemodifier 2 | { 3 | NAME oporcupinemodifier; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL SDK_EXAMPLE_PORCUPINEMODIFIER_PERCENTAGE { MIN 0.0; MAX 100.0; UNIT PERCENT;} 9 | REAL SDK_EXAMPLE_PORCUPINEMODIFIER_LEVEL { MIN 0.0; MAX 100.0;} 10 | } 11 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/orevolvedmesh.h: -------------------------------------------------------------------------------- 1 | #ifndef OREVOLVEDMESH_H__ 2 | #define OREVOLVEDMESH_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_REVOLVEDMESH_S_STEPS = 1000, 7 | SDK_EXAMPLE_REVOLVEDMESH_T_STEPS = 1001, 8 | SDK_EXAMPLE_REVOLVEDMESH_STARTANGLE = 1002, 9 | SDK_EXAMPLE_REVOLVEDMESH_ENDANGLE = 1003, 10 | SDK_EXAMPLE_REVOLVEDMESH_SPINNINGAXIS = 1004 11 | }; 12 | 13 | #endif // OREVOLVEDMESH_H__ 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/orevolvedmesh.res: -------------------------------------------------------------------------------- 1 | CONTAINER orevolvedmesh 2 | { 3 | NAME orevolvedmesh; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | VECTOR SDK_EXAMPLE_REVOLVEDMESH_SPINNINGAXIS { MIN -1; MAX 1;} 9 | LONG SDK_EXAMPLE_REVOLVEDMESH_S_STEPS { MIN 16; } 10 | LONG SDK_EXAMPLE_REVOLVEDMESH_T_STEPS { MIN 16; } 11 | REAL SDK_EXAMPLE_REVOLVEDMESH_STARTANGLE { MIN -360.0; MAX 360.0; UNIT DEGREE;} 12 | REAL SDK_EXAMPLE_REVOLVEDMESH_ENDANGLE { MIN -360.0; MAX 360.0; UNIT DEGREE;} 13 | } 14 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/oroundedtube.h: -------------------------------------------------------------------------------- 1 | #ifndef OROUNDEDTUBE_H__ 2 | #define OROUNDEDTUBE_H__ 3 | 4 | enum 5 | { 6 | TUBEOBJECT_RAD = 1000, 7 | TUBEOBJECT_IRADX = 1001, 8 | TUBEOBJECT_IRADY = 1002, 9 | TUBEOBJECT_SUB = 1003, 10 | TUBEOBJECT_ROUNDSUB = 1004, 11 | TUBEOBJECT_ROUNDRAD = 1005, 12 | TUBEOBJECT_SEG = 1006 13 | }; 14 | 15 | #endif // OROUNDEDTUBE_H__ 16 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oroundedtube.res: -------------------------------------------------------------------------------- 1 | CONTAINER Oroundedtube 2 | { 3 | NAME Oroundedtube; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL TUBEOBJECT_RAD { UNIT METER; MIN 0.0; } 9 | REAL TUBEOBJECT_IRADX { UNIT METER; MIN 0.0; } 10 | REAL TUBEOBJECT_IRADY { UNIT METER; MIN 0.0; } 11 | LONG TUBEOBJECT_SUB { MIN 1; MAX 1000; } 12 | LONG TUBEOBJECT_ROUNDSUB { MIN 1; MAX 1000; } 13 | REAL TUBEOBJECT_ROUNDRAD { UNIT METER; MIN 0.0; } 14 | LONG TUBEOBJECT_SEG { MIN 3; MAX 1000; } 15 | } 16 | 17 | INCLUDE Oprimitiveaxis; 18 | } 19 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oruledmesh.h: -------------------------------------------------------------------------------- 1 | #ifndef ORULEDMESH_H__ 2 | #define ORULEDMESH_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_RULEDMESH_S_STEPS = 1000, 7 | SDK_EXAMPLE_RULEDMESH_T_STEPS = 1001, 8 | SDK_EXAMPLE_RULEDMESH_FLIP_FIRST = 1002, 9 | SDK_EXAMPLE_RULEDMESH_FLIP_SECOND = 1003, 10 | SDK_EXAMPLE_RULEDMESH_PARAM_FIRST = 1004, 11 | SDK_EXAMPLE_RULEDMESH_PARAM_SECOND = 1005, 12 | SDK_EXAMPLE_RULEDMESH_PARAM_NATURAL = 0, 13 | SDK_EXAMPLE_RULEDMESH_PARAM_UNIFORM = 1, 14 | }; 15 | 16 | #endif // ORULEDMESH_H__ 17 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oruledmesh.res: -------------------------------------------------------------------------------- 1 | CONTAINER oruledmesh 2 | { 3 | NAME oruledmesh; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | LONG SDK_EXAMPLE_RULEDMESH_S_STEPS { MIN 1; } 9 | LONG SDK_EXAMPLE_RULEDMESH_T_STEPS { MIN 1; } 10 | BOOL SDK_EXAMPLE_RULEDMESH_FLIP_FIRST {} 11 | BOOL SDK_EXAMPLE_RULEDMESH_FLIP_SECOND {} 12 | LONG SDK_EXAMPLE_RULEDMESH_PARAM_FIRST 13 | { 14 | CYCLE 15 | { 16 | SDK_EXAMPLE_RULEDMESH_PARAM_NATURAL; 17 | SDK_EXAMPLE_RULEDMESH_PARAM_UNIFORM; 18 | } 19 | } 20 | LONG SDK_EXAMPLE_RULEDMESH_PARAM_SECOND 21 | { 22 | CYCLE 23 | { 24 | SDK_EXAMPLE_RULEDMESH_PARAM_NATURAL; 25 | SDK_EXAMPLE_RULEDMESH_PARAM_UNIFORM; 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/osculptdeformer.h: -------------------------------------------------------------------------------- 1 | #ifndef OSCULPTDEFORMER_H__ 2 | #define OSCULPTDEFORMER_H__ 3 | 4 | enum 5 | { 6 | SCULPTDEFORMER_RADIUS = 1000, 7 | SCULPTDEFORMER_PRESSURE = 1001, 8 | SCULPTDEFORMER_STAMP_TEXTURE = 1002, 9 | SCULPTDEFORMER_STAMP_ACTIVE = 1003, 10 | SCULPTDEFORMER_MODIFIER = 1004, 11 | SCULPTDEFORMER_NUMSTAMPS = 1005, 12 | SCULPTDEFORMER_FALLOFF_SPLINE = 1006, 13 | SCULPTDEFORMER_STAMP_USEFALLOFF = 1007, 14 | SCULPTDEFORMER_SEED = 1008, 15 | SCULPTDEFORMER_STAMP_ROTATION = 1009, 16 | }; 17 | 18 | #endif // OSCULPTDEFORMER_H__ 19 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/osculptdeformer.res: -------------------------------------------------------------------------------- 1 | CONTAINER Osculptdeformer 2 | { 3 | NAME Osculptdeformer; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL SCULPTDEFORMER_RADIUS { MIN 0.1; MINSLIDER 1; MAXSLIDER 100; CUSTOMGUI REALSLIDER; SCALE_H; } 9 | REAL SCULPTDEFORMER_PRESSURE { MIN 0.01; STEP 0.1; MINSLIDER 0.1; MAXSLIDER 100; CUSTOMGUI REALSLIDER; UNIT PERCENT; SCALE_H; } 10 | BOOL SCULPTDEFORMER_STAMP_ACTIVE { } 11 | FILENAME SCULPTDEFORMER_STAMP_TEXTURE { FIT_H; SCALE_H; } 12 | REAL SCULPTDEFORMER_STAMP_ROTATION { UNIT DEGREE; MIN 0; MAX 360; CUSTOMGUI REALSLIDER; SCALE_H; FIT_H;} 13 | LONG SCULPTDEFORMER_SEED { } 14 | LONG SCULPTDEFORMER_NUMSTAMPS { MIN 1; STEP 1; MINSLIDER 1; MAXSLIDER 100; SCALE_H; } 15 | 16 | LONG SCULPTDEFORMER_MODIFIER 17 | { 18 | CYCLE 19 | { 20 | } 21 | } 22 | 23 | BOOL SCULPTDEFORMER_STAMP_USEFALLOFF { } 24 | SPLINE SCULPTDEFORMER_FALLOFF_SPLINE 25 | { 26 | SHOWGRID_H; SHOWGRID_V; EDIT_H; EDIT_V; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oshufflingparticles.h: -------------------------------------------------------------------------------- 1 | #ifndef OSHUFFLINGPARTICLES_H__ 2 | #define OSHUFFLINGPARTICLES_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_SHUFFLINGPARTICLES_SEED = 1000, 7 | SDK_EXAMPLE_SHUFFLINGPARTICLES_STRENGTH = 1001, 8 | SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_X = 1002, 9 | SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_Y = 1003, 10 | SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_Z = 1004 11 | }; 12 | 13 | #endif // OSHUFFLINGPARTICLES_H__ 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/oshufflingparticles.res: -------------------------------------------------------------------------------- 1 | CONTAINER oshufflingparticles 2 | { 3 | NAME oshufflingparticles; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | GROUP 9 | { 10 | LAYOUTGROUP; COLUMNS 3; 11 | 12 | GROUP 13 | { 14 | REAL SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_X {UNIT METER; MIN 1.0;} 15 | } 16 | GROUP 17 | { 18 | REAL SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_Y {UNIT METER; MIN 1.0;} 19 | } 20 | GROUP 21 | { 22 | REAL SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_Z {UNIT METER; MIN 1.0;} 23 | } 24 | } 25 | LONG SDK_EXAMPLE_SHUFFLINGPARTICLES_SEED { MIN 0; } 26 | LONG SDK_EXAMPLE_SHUFFLINGPARTICLES_STRENGTH { MIN 1; MAX 100;} 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ospherifydeformer.h: -------------------------------------------------------------------------------- 1 | #ifndef OSPHERIFYDEFORMER_H__ 2 | #define OSPHERIFYDEFORMER_H__ 3 | 4 | enum 5 | { 6 | SPHERIFYDEFORMER_RADIUS = 1000, 7 | SPHERIFYDEFORMER_STRENGTH = 1001 8 | }; 9 | 10 | #endif // OSPHERIFYDEFORMER_H__ 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/ospherifydeformer.res: -------------------------------------------------------------------------------- 1 | CONTAINER Ospherifydeformer 2 | { 3 | NAME Ospherifydeformer; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL SPHERIFYDEFORMER_RADIUS { UNIT METER; MIN 0.0; } 9 | REAL SPHERIFYDEFORMER_STRENGTH { UNIT PERCENT; MIN 0.0; MAX 100.0; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/overtexhandle.h: -------------------------------------------------------------------------------- 1 | #ifndef OVERTEXHANDLE_H__ 2 | #define OVERTEXHANDLE_H__ 3 | 4 | enum 5 | { 6 | SDK_EXAMPLE_VERTEXHANDLE_POINT_A_DIST = 1000, 7 | SDK_EXAMPLE_VERTEXHANDLE_POINT_B_DIST = 1001, 8 | SDK_EXAMPLE_VERTEXHANDLE_POINT_C_DIST = 1002 9 | }; 10 | 11 | #endif // OVERTEXHANDLE_H__ 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/overtexhandle.res: -------------------------------------------------------------------------------- 1 | CONTAINER overtexhandle 2 | { 3 | NAME overtexhandle; 4 | INCLUDE Obase; 5 | 6 | GROUP ID_OBJECTPROPERTIES 7 | { 8 | REAL SDK_EXAMPLE_VERTEXHANDLE_POINT_A_DIST { UNIT METER; } 9 | REAL SDK_EXAMPLE_VERTEXHANDLE_POINT_B_DIST { UNIT METER; } 10 | REAL SDK_EXAMPLE_VERTEXHANDLE_POINT_C_DIST { UNIT METER; } 11 | } 12 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/tfloat.h: -------------------------------------------------------------------------------- 1 | #ifndef TCUSTOMDATA_H__ 2 | #define TCUSTOMDATA_H__ 3 | 4 | enum 5 | { 6 | ID_CUSTOM_PARAMETER = 2000, 7 | }; 8 | 9 | #endif // TCUSTOMDATA_H__ 10 | 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/tfloat.res: -------------------------------------------------------------------------------- 1 | CONTAINER Tfloat 2 | { 3 | NAME Tfloat; 4 | INCLUDE Tcustomdatabase; 5 | 6 | GROUP ID_TAGPROPERTIES 7 | { 8 | BOOL ID_CUSTOM_PARAMETER { } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/thairsdkrendering.h: -------------------------------------------------------------------------------- 1 | #ifndef THAIRSDKRENDERING_H__ 2 | #define THAIRSDKRENDERING_H__ 3 | 4 | enum 5 | { 6 | HAIR_RENDERING_SHADOW = 2000, 7 | HAIR_RENDERING_TRANSPARENCY = 2001, 8 | HAIR_RENDERING_DEPTH = 2002, 9 | 10 | ////////////////////////////////////////////////////////////////////////// 11 | 12 | _HAIR_RENDERING_END_ 13 | }; 14 | 15 | #endif // THAIRSDKRENDERING_H__ 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/thairsdkrendering.res: -------------------------------------------------------------------------------- 1 | CONTAINER Thairsdkrendering 2 | { 3 | NAME Thairsdkrendering; 4 | INCLUDE Texpression; 5 | 6 | GROUP ID_TAGPROPERTIES 7 | { 8 | REAL HAIR_RENDERING_SHADOW { UNIT PERCENT; MIN 0.0; MAX 1000.0; MAXSLIDER 100.0; } 9 | REAL HAIR_RENDERING_TRANSPARENCY { UNIT PERCENT; MIN 0.0; MAX 1000.0; MAXSLIDER 100.0; } 10 | 11 | LONG HAIR_RENDERING_DEPTH { MIN 1; MAX 100; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/thairsdkstyling.h: -------------------------------------------------------------------------------- 1 | #ifndef THAIRSDKSTYLING_H__ 2 | #define THAIRSDKSTYLING_H__ 3 | 4 | enum 5 | { 6 | HAIR_STYLING_DISPLACE = 2000, 7 | HAIR_STYLING_SPLINE_X = 2001, 8 | HAIR_STYLING_SPLINE_Y = 2002, 9 | 10 | ////////////////////////////////////////////////////////////////////////// 11 | 12 | _HAIR_STYLING_END_ 13 | }; 14 | 15 | #endif // THAIRSDKSTYLING_H__ 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/thairsdkstyling.res: -------------------------------------------------------------------------------- 1 | CONTAINER Thairsdkstyling 2 | { 3 | NAME Thairsdkstyling; 4 | INCLUDE Texpression; 5 | 6 | GROUP ID_TAGPROPERTIES 7 | { 8 | REAL HAIR_STYLING_DISPLACE { UNIT METER; MIN 0.0; } 9 | 10 | SPLINE HAIR_STYLING_SPLINE_X 11 | { 12 | SHOWGRID_H; 13 | SHOWGRID_V; 14 | 15 | MINSIZE_H 120; 16 | MINSIZE_V 90; 17 | 18 | EDIT_H; 19 | EDIT_V; 20 | 21 | X_MIN 0; 22 | X_MAX 1; 23 | 24 | Y_MIN 0; 25 | Y_MAX 1; 26 | 27 | X_STEPS 1; 28 | Y_STEPS 1; 29 | } 30 | 31 | SPLINE HAIR_STYLING_SPLINE_Y 32 | { 33 | SHOWGRID_H; 34 | SHOWGRID_V; 35 | 36 | MINSIZE_H 120; 37 | MINSIZE_V 90; 38 | 39 | EDIT_H; 40 | EDIT_V; 41 | 42 | X_MIN 0; 43 | X_MAX 1; 44 | 45 | Y_MIN 0; 46 | Y_MAX 1; 47 | 48 | X_STEPS 1; 49 | Y_STEPS 1; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/tlookatcameraexp.h: -------------------------------------------------------------------------------- 1 | #ifndef TLOOKATCAMERAEXP_H__ 2 | #define TLOOKATCAMERAEXP_H__ 3 | 4 | enum 5 | { 6 | LOOKATCAMERAEXP_PITCH = 1000 7 | }; 8 | 9 | #endif // TLOOKATCAMERAEXP_H__ 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/tlookatcameraexp.res: -------------------------------------------------------------------------------- 1 | CONTAINER Tlookatcameraexp 2 | { 3 | NAME Tlookatcameraexp; 4 | INCLUDE Texpression; 5 | 6 | GROUP ID_TAGPROPERTIES 7 | { 8 | BOOL LOOKATCAMERAEXP_PITCH { } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/tooledgecutsdk.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLEDGECUTSDK_H__ 2 | #define TOOLEDGECUTSDK_H__ 3 | 4 | enum 5 | { 6 | MDATA_EDGECUTSDK_SUBDIV = 2133, 7 | MDATA_EDGECUTSDK_OFFSET = 2166, 8 | MDATA_EDGECUTSDK_SCALE = 2165, 9 | MDATA_EDGECUTSDK_CREATENGONS = 2167 10 | }; 11 | 12 | #endif // TOOLEDGECUTSDK_H__ 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/tooledgecutsdk.res: -------------------------------------------------------------------------------- 1 | CONTAINER ToolEdgeCutSDK 2 | { 3 | NAME ToolEdgeCutSDK; 4 | INCLUDE ToolBase; 5 | 6 | GROUP MDATA_MAINGROUP 7 | { 8 | GROUP 9 | { 10 | COLUMNS 2; 11 | 12 | REAL MDATA_EDGECUTSDK_OFFSET { UNIT PERCENT; MIN 0; MAX 100; } 13 | STATICTEXT { JOINEND; } 14 | 15 | REAL MDATA_EDGECUTSDK_SCALE { UNIT PERCENT; MIN 0.01; } 16 | STATICTEXT { JOINEND; } 17 | 18 | LONG MDATA_EDGECUTSDK_SUBDIV { MIN 1; } 19 | BOOL MDATA_EDGECUTSDK_CREATENGONS { } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolpaintbrushbase.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLPAINTBRUSHBASE_H__ 2 | #define TOOLPAINTBRUSHBASE_H__ 3 | 4 | enum 5 | { 6 | ToolPaintBrushBase_Start = 20000, 7 | }; 8 | 9 | #endif // TOOLPAINTBRUSHBASE_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolpaintbrushbase.res: -------------------------------------------------------------------------------- 1 | CONTAINER ToolPaintBrushBase 2 | { 3 | NAME ToolPaintBrushBase; 4 | INCLUDE toolsculptbrushbase; 5 | HIDE MDATA_SCULPTBRUSH_STAMP_MIDVALUE; 6 | HIDE MDATA_SCULPTBRUSH_STAMP_SHOWDEPTH; 7 | HIDE MDATA_SCULPTBRUSH_STAMP_INTERPOLATE; 8 | HIDE MDATA_SCULPTBRUSH_STENCIL_MIDVALUE; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolpaintbrushsculpt.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLPAINTBRUSHSCULPT_H__ 2 | #define TOOLPAINTBRUSHSCULPT_H__ 3 | 4 | enum 5 | { 6 | ToolPaintBrushSculpt_Start = 20000, 7 | }; 8 | 9 | #endif // TOOLPAINTBRUSHSCULPT_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolpaintbrushsculpt.res: -------------------------------------------------------------------------------- 1 | CONTAINER ToolPaintBrushSculpt 2 | { 3 | NAME ToolPaintBrushSculpt; 4 | INCLUDE ToolPaintBrushBase; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolpickobjectsdk.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLPICKOBJECTSDK_H__ 2 | #define TOOLPICKOBJECTSDK_H__ 3 | 4 | enum 5 | { 6 | MDATA_PICKOBJECT_MODE = 2000, 7 | MDATA_PICKOBJECT_MODE_CIRCLE = 0, 8 | MDATA_PICKOBJECT_MODE_RECTANGLE = 1, 9 | MDATA_PICKOBJECT_ONLY_VISIBLE = 2001, 10 | MDATA_PICKOBJECT_CIRCLE_RAD = 2002, 11 | MDATA_PICKOBJECT_RECT_W = 2003, 12 | MDATA_PICKOBJECT_RECT_H = 2004 13 | }; 14 | 15 | #endif // TOOLPICKOBJECTSDK_H__ 16 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolpickobjectsdk.res: -------------------------------------------------------------------------------- 1 | CONTAINER ToolPickObjectSDK 2 | { 3 | NAME ToolPickObjectSDK; 4 | INCLUDE ToolBase; 5 | 6 | GROUP MDATA_MAINGROUP 7 | { 8 | GROUP 9 | { 10 | COLUMNS 2; 11 | 12 | LONG MDATA_PICKOBJECT_MODE 13 | { 14 | ANIM OFF; 15 | CYCLE 16 | { 17 | MDATA_PICKOBJECT_MODE_CIRCLE; 18 | MDATA_PICKOBJECT_MODE_RECTANGLE; 19 | } 20 | } 21 | STATICTEXT { JOINEND; } 22 | 23 | BOOL MDATA_PICKOBJECT_ONLY_VISIBLE { } 24 | STATICTEXT { JOINEND; } 25 | 26 | LONG MDATA_PICKOBJECT_CIRCLE_RAD { MIN 0; } 27 | STATICTEXT { JOINEND; } 28 | 29 | LONG MDATA_PICKOBJECT_RECT_W { MIN 0; }; 30 | LONG MDATA_PICKOBJECT_RECT_H { MIN 0; }; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptbrushmultistamp.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTBRUSHMULTISTAMP_H__ 2 | #define TOOLSCULPTBRUSHMULTISTAMP_H__ 3 | 4 | enum 5 | { 6 | ToolSculptBrushMultiStamp_Start = 20000 7 | }; 8 | 9 | #endif // TOOLSCULPTBRUSHMULTISTAMP_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptbrushmultistamp.res: -------------------------------------------------------------------------------- 1 | CONTAINER toolsculptbrushmultistamp 2 | { 3 | NAME toolsculptbrushmultistamp; 4 | INCLUDE toolsculptbrushbase; 5 | 6 | GROUP MDATA_SCULPTBRUSH_SETTINGS_GROUP 7 | { 8 | COLUMNS 3; 9 | 10 | REAL MDATA_SCULPTBRUSH_SETTINGS_BUILDUP { MIN 1; MAX 100; MINSLIDER 1; MAXSLIDER 100; CUSTOMGUI REALSLIDER; FIT_H; SCALE_H; } 11 | STATICTEXT { JOINENDSCALE; } 12 | STATICTEXT { JOINEND; } 13 | 14 | BOOL MDATA_SCULPTBRUSH_SETTINGS_INVERT { } 15 | STATICTEXT { DUMMY; } 16 | STATICTEXT { DUMMY; } 17 | 18 | GROUP 19 | { 20 | COLUMNS 3; 21 | LONG MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE 22 | { 23 | CYCLE 24 | { 25 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_FREEHAND; 26 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_DRAGRECT; 27 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_DRAGDAB; 28 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_LINE; 29 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_LASSO_FILL; 30 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_POLY_FILL; 31 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_RECTANGLE_FILL; 32 | } 33 | } 34 | BOOL MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_FILL_SYMMETRY { } 35 | BOOL MDATA_SCULPTBRUSH_SETTINGS_FILL_BACKFACES { } 36 | } 37 | STATICTEXT { JOINENDSCALE; } 38 | STATICTEXT { JOINEND; } 39 | 40 | SEPARATOR { LINE; } 41 | STATICTEXT { JOINENDSCALE; } 42 | STATICTEXT { JOINEND; } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptbrushtwist.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTBRUSHTWIST_H__ 2 | #define TOOLSCULPTBRUSHTWIST_H__ 3 | 4 | enum 5 | { 6 | ToolSculptBrushTwist_Start = 20000, 7 | }; 8 | 9 | #endif // TOOLSCULPTBRUSHTWIST_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptbrushtwist.res: -------------------------------------------------------------------------------- 1 | CONTAINER toolsculptbrushtwist 2 | { 3 | NAME toolsculptbrushtwist; 4 | INCLUDE toolsculptbrushbase; 5 | HIDE MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE; 6 | HIDE MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_FILL_SYMMETRY; 7 | HIDE MDATA_SCULPTBRUSH_SETTINGS_FILL_BACKFACES; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptcubesbrush.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTCUBESBRUSH_H__ 2 | #define TOOLSCULPTCUBESBRUSH_H__ 3 | 4 | enum 5 | { 6 | ToolSculptCubesBrush_Start = 20000 7 | }; 8 | 9 | #endif // TOOLSCULPTCUBESBRUSH_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptcubesbrush.res: -------------------------------------------------------------------------------- 1 | CONTAINER toolsculptcubesbrush 2 | { 3 | NAME toolsculptcubesbrush; 4 | INCLUDE toolsculptbrushbase; 5 | HIDE MDATA_SCULPTBRUSH_STAMP_GROUP; 6 | HIDE MDATA_SCULPTBRUSH_STENCIL_GROUP; 7 | 8 | GROUP MDATA_SCULPTBRUSH_SETTINGS_GROUP 9 | { 10 | COLUMNS 3; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptdrawpoly.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTDRAWPOLY_H__ 2 | #define TOOLSCULPTDRAWPOLY_H__ 3 | 4 | enum 5 | { 6 | SCULPTDRAWPOLY_POLYGONSIZE = 1000, 7 | }; 8 | 9 | #endif // TOOLSCULPTDRAWPOLY_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptdrawpoly.res: -------------------------------------------------------------------------------- 1 | CONTAINER ToolSculptDrawPoly 2 | { 3 | NAME ToolSculptDrawPoly; 4 | 5 | GROUP 6 | { 7 | GROUP 8 | { 9 | REAL SCULPTDRAWPOLY_POLYGONSIZE { MIN 1; } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptdrawpolybrush.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTDRAWPOLYBRUSH_H__ 2 | #define TOOLSCULPTDRAWPOLYBRUSH_H__ 3 | 4 | enum 5 | { 6 | ToolSculptDrawPolyBrush_Start = 20000 7 | }; 8 | 9 | #endif // TOOLSCULPTDRAWPOLYBRUSH_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptdrawpolybrush.res: -------------------------------------------------------------------------------- 1 | CONTAINER toolsculptdrawpolybrush 2 | { 3 | NAME toolsculptdrawpolybrush; 4 | INCLUDE toolsculptbrushbase; 5 | 6 | GROUP MDATA_SCULPTBRUSH_SETTINGS_GROUP 7 | { 8 | COLUMNS 3; 9 | 10 | //Add all the drawmodes 11 | GROUP 12 | { 13 | COLUMNS 3; 14 | LONG MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE 15 | { 16 | CYCLE 17 | { 18 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_FREEHAND; 19 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_LINE; 20 | } 21 | } 22 | } 23 | STATICTEXT { JOINENDSCALE; } 24 | STATICTEXT { JOINEND; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptgrabbrush.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTGRABBRUSH_H__ 2 | #define TOOLSCULPTGRABBRUSH_H__ 3 | 4 | enum 5 | { 6 | ToolSculptGrabBrush_Start = 20000, 7 | 8 | MDATA_TOOLSCULPTGRABBRUSH_DIRMODE, 9 | MDATA_TOOLSCULPTGRABBRUSH_DIRMODE_MOUSEDIR, 10 | MDATA_TOOLSCULPTGRABBRUSH_DIRMODE_NORMAL, 11 | }; 12 | 13 | #endif // TOOLSCULPTGRABBRUSH_H__ 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptgrabbrush.res: -------------------------------------------------------------------------------- 1 | CONTAINER toolsculptgrabbrush 2 | { 3 | NAME toolsculptgrabbrush; 4 | INCLUDE toolsculptbrushbase; 5 | 6 | HIDE MDATA_SCULPTBRUSH_SETTINGS_STAMPSPACING; 7 | HIDE MDATA_SCULPTBRUSH_SETTINGS_STAMPSPACING_VALUE; 8 | HIDE MDATA_SCULPTBRUSH_SETTINGS_STRENGTH_MOD; 9 | HIDE MDATA_SCULPTBRUSH_SETTINGS_STRENGTH; 10 | HIDE MDATA_SCULPTBRUSH_SETTINGS_STEADYSTROKE; 11 | HIDE MDATA_SCULPTBRUSH_SETTINGS_STEADYSTROKE_VALUE; 12 | HIDE MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE; 13 | HIDE MDATA_SCULPTBRUSH_STAMP_FOLLOW; 14 | HIDE MDATA_SCULPTBRUSH_STENCIL_GROUP; 15 | HIDE MDATA_SCULPTBRUSH_SETTINGS_FILL_BACKFACES; 16 | HIDE MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_FILL_SYMMETRY; 17 | 18 | GROUP MDATA_SCULPTBRUSH_SETTINGS_GROUP 19 | { 20 | COLUMNS 3; 21 | 22 | LONG MDATA_TOOLSCULPTGRABBRUSH_DIRMODE 23 | { 24 | FIT_H; SCALE_H; 25 | CYCLE 26 | { 27 | MDATA_TOOLSCULPTGRABBRUSH_DIRMODE_MOUSEDIR; 28 | MDATA_TOOLSCULPTGRABBRUSH_DIRMODE_NORMAL; 29 | } 30 | } 31 | STATICTEXT { DUMMY; } 32 | STATICTEXT { DUMMY; } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculpting.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTING_H__ 2 | #define TOOLSCULPTING_H__ 3 | 4 | enum 5 | { 6 | SCULPTING_RADIUS = 2000, 7 | SCULPTING_VECTOR = 2001, 8 | SCULPTING_DO_VBO_UPDATE = 2002 9 | }; 10 | 11 | #endif // TOOLSCULPTING_H__ 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculpting.res: -------------------------------------------------------------------------------- 1 | CONTAINER ToolSculpting 2 | { 3 | NAME ToolSculpting; 4 | INCLUDE ToolBase; 5 | 6 | GROUP MDATA_MAINGROUP 7 | { 8 | GROUP 9 | { 10 | REAL SCULPTING_RADIUS { MIN 1; } 11 | VECTOR SCULPTING_VECTOR { UNIT METER; } 12 | BOOL SCULPTING_DO_VBO_UPDATE { } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptpullbrush.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTPULLBRUSH_H__ 2 | #define TOOLSCULPTPULLBRUSH_H__ 3 | 4 | enum 5 | { 6 | ToolSculptPullBrush_Start = 20000 7 | }; 8 | 9 | #endif // TOOLSCULPTPULLBRUSH_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptpullbrush.res: -------------------------------------------------------------------------------- 1 | CONTAINER toolsculptpullbrush 2 | { 3 | NAME toolsculptpullbrush; 4 | INCLUDE toolsculptbrushbase; 5 | 6 | GROUP MDATA_SCULPTBRUSH_SETTINGS_GROUP 7 | { 8 | COLUMNS 3; 9 | 10 | //Add the Buildup Slider 11 | REAL MDATA_SCULPTBRUSH_SETTINGS_BUILDUP { MIN 1; MAX 100; MINSLIDER 1; MAXSLIDER 100; CUSTOMGUI REALSLIDER; FIT_H; SCALE_H; } 12 | STATICTEXT { JOINENDSCALE; } 13 | STATICTEXT { JOINEND; } 14 | 15 | //Add the Invert Checkbox 16 | BOOL MDATA_SCULPTBRUSH_SETTINGS_INVERT { } 17 | STATICTEXT { DUMMY; } 18 | STATICTEXT { DUMMY; } 19 | 20 | //Add all the drawmodes 21 | GROUP 22 | { 23 | COLUMNS 3; 24 | LONG MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE 25 | { 26 | CYCLE 27 | { 28 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_FREEHAND; 29 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_DRAGRECT; 30 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_DRAGDAB; 31 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_LINE; 32 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_LASSO_FILL; 33 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_POLY_FILL; 34 | MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_RECTANGLE_FILL; 35 | } 36 | } 37 | BOOL MDATA_SCULPTBRUSH_SETTINGS_DRAWMODE_FILL_SYMMETRY { } 38 | BOOL MDATA_SCULPTBRUSH_SETTINGS_FILL_BACKFACES { } 39 | } 40 | STATICTEXT { JOINENDSCALE; } 41 | STATICTEXT { JOINEND; } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptselectionbrush.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTSELECTIONBRUSH_H__ 2 | #define TOOLSCULPTSELECTIONBRUSH_H__ 3 | 4 | enum 5 | { 6 | ToolSculptSelectionBrush_Start = 20000 7 | }; 8 | 9 | #endif // TOOLSCULPTSELECTIONBRUSH_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptselectionbrush.res: -------------------------------------------------------------------------------- 1 | CONTAINER toolsculptselectionbrush 2 | { 3 | NAME toolsculptselectionbrush; 4 | INCLUDE toolsculptbrushbase; 5 | HIDE MDATA_SCULPTBRUSH_STAMP_GROUP; 6 | HIDE MDATA_SCULPTBRUSH_STENCIL_GROUP; 7 | 8 | GROUP MDATA_SCULPTBRUSH_SETTINGS_GROUP 9 | { 10 | COLUMNS 3; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptsplinebrush.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSCULPTSPLINEBRUSH_H__ 2 | #define TOOLSCULPTSPLINEBRUSH_H__ 3 | 4 | enum 5 | { 6 | ToolSculptSplineBrush_Start = 20000 7 | }; 8 | 9 | #endif // TOOLSCULPTSPLINEBRUSH_H__ 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsculptsplinebrush.res: -------------------------------------------------------------------------------- 1 | CONTAINER toolsculptsplinebrush 2 | { 3 | NAME toolsculptsplinebrush; 4 | INCLUDE toolsculptbrushbase; 5 | HIDE MDATA_SCULPTBRUSH_FALLOFF_GROUP; 6 | 7 | GROUP MDATA_SCULPTBRUSH_SETTINGS_GROUP 8 | { 9 | COLUMNS 3; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsnap.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLSNAP_H__ 2 | #define TOOLSNAP_H__ 3 | 4 | enum 5 | { 6 | }; 7 | 8 | #endif // TOOLSNAP_H__ 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/toolsnap.res: -------------------------------------------------------------------------------- 1 | CONTAINER ToolSnap 2 | { 3 | NAME ToolSnap; 4 | 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/vpcolorize.h: -------------------------------------------------------------------------------- 1 | #ifndef VPCOLORIZE_H__ 2 | #define VPCOLORIZE_H__ 3 | 4 | enum 5 | { 6 | VP_COLORIZE_DELTA_R = 1000, 7 | VP_COLORIZE_DELTA_G = 1001, 8 | VP_COLORIZE_DELTA_B = 1002, 9 | VP_COLORIZE_MODE = 1003, 10 | VP_COLORIZE_MODE_COMPLETE = 0, 11 | VP_COLORIZE_MODE_ALPHA = 1, 12 | VP_COLORIZE_MODE_OBJECTBUFFER = 2, 13 | VP_COLORIZE_OBJECTID = 1004, 14 | VP_COLORIZE_LENSGLOW = 1005 15 | }; 16 | 17 | #endif // VPCOLORIZE_H__ 18 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/vpcolorize.res: -------------------------------------------------------------------------------- 1 | CONTAINER VPcolorize 2 | { 3 | NAME VPcolorize; 4 | INCLUDE VPbase; 5 | 6 | GROUP ID_VIDEOPOSTPROPERTIES 7 | { 8 | REAL VP_COLORIZE_DELTA_R { UNIT PERCENT; MIN -100.0; MAX 100.0; } 9 | REAL VP_COLORIZE_DELTA_G { UNIT PERCENT; MIN -100.0; MAX 100.0; } 10 | REAL VP_COLORIZE_DELTA_B { UNIT PERCENT; MIN -100.0; MAX 100.0; } 11 | LONG VP_COLORIZE_MODE { CYCLE { VP_COLORIZE_MODE_COMPLETE; VP_COLORIZE_MODE_ALPHA; VP_COLORIZE_MODE_OBJECTBUFFER; } } 12 | LONG VP_COLORIZE_OBJECTID { PARENTID VP_COLORIZE_MODE; MIN 1; MAX 1000; } 13 | LENSGLOW VP_COLORIZE_LENSGLOW { } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/vphairsdkpost.h: -------------------------------------------------------------------------------- 1 | #ifndef VPHAIRSDKPOST_H__ 2 | #define VPHAIRSDKPOST_H__ 3 | 4 | enum 5 | { 6 | ////////////////////////////////////////////////////////////////////////// 7 | 8 | _HAIR_POST_END_ 9 | }; 10 | 11 | #endif // VPHAIRSDKPOST_H__ 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/vphairsdkpost.res: -------------------------------------------------------------------------------- 1 | CONTAINER Vphairsdkpost 2 | { 3 | NAME Vphairsdkpost; 4 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/xbitmapdistortion.h: -------------------------------------------------------------------------------- 1 | #ifndef XBITMAPDISTORTION_H__ 2 | #define XBITMAPDISTORTION_H__ 3 | 4 | enum 5 | { 6 | BITMAPDISTORTIONSHADER_NOISE = 1000, 7 | BITMAPDISTORTIONSHADER_OCTAVES = 1001, 8 | BITMAPDISTORTIONSHADER_SCALE = 1002, 9 | BITMAPDISTORTIONSHADER_TEXTURE = 1003 10 | }; 11 | 12 | #endif // XBITMAPDISTORTION_H__ 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/xbitmapdistortion.res: -------------------------------------------------------------------------------- 1 | CONTAINER Xbitmapdistortion 2 | { 3 | NAME Xbitmapdistortion; 4 | 5 | INCLUDE Mpreview; 6 | INCLUDE Xbase; 7 | 8 | GROUP ID_SHADERPROPERTIES 9 | { 10 | REAL BITMAPDISTORTIONSHADER_NOISE { UNIT PERCENT; MIN 0.0; MAX 100.0; } 11 | REAL BITMAPDISTORTIONSHADER_OCTAVES { MIN 0.0; MAX 10.0; STEP 0.01; } 12 | REAL BITMAPDISTORTIONSHADER_SCALE { UNIT PERCENT; MIN 0.0; MAX 1000.0; STEP 0.1; } 13 | SHADERLINK BITMAPDISTORTIONSHADER_TEXTURE { } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/xhairsdkshader.h: -------------------------------------------------------------------------------- 1 | #ifndef XHAIRSDKSHADER_H__ 2 | #define XHAIRSDKSHADER_H__ 3 | 4 | enum 5 | { 6 | ////////////////////////////////////////////////////////////////////////// 7 | 8 | _HAIR_SHADER_END_ 9 | }; 10 | 11 | #endif // XHAIRSDKSHADER_H__ 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/xhairsdkshader.res: -------------------------------------------------------------------------------- 1 | CONTAINER Xhairsdkshader 2 | { 3 | NAME Xhairsdkshader; 4 | 5 | INCLUDE Xbase; 6 | 7 | GROUP ID_SHADERPROPERTIES 8 | { 9 | 10 | } 11 | } -------------------------------------------------------------------------------- /plugins/example.main/res/description/xmandelbrot.h: -------------------------------------------------------------------------------- 1 | #ifndef XMANDELBROT_H__ 2 | #define XMANDELBROT_H__ 3 | 4 | enum 5 | { 6 | MANDELBROTSHADER_COLOROFFSET = 1000, 7 | MANDELBROTSHADER_OBJECTACCESS = 1001 8 | }; 9 | 10 | #endif // XMANDELBROT_H__ 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/xmandelbrot.res: -------------------------------------------------------------------------------- 1 | CONTAINER Xmandelbrot 2 | { 3 | NAME Xmandelbrot; 4 | 5 | INCLUDE Mpreview; 6 | INCLUDE Xbase; 7 | 8 | GROUP ID_SHADERPROPERTIES 9 | { 10 | LONG MANDELBROTSHADER_COLOROFFSET { MIN 0; MAX 100; } 11 | BOOL MANDELBROTSHADER_OBJECTACCESS { } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/xsdkgradient.h: -------------------------------------------------------------------------------- 1 | #ifndef XSDKGRADIENT_H__ 2 | #define XSDKGRADIENT_H__ 3 | 4 | enum 5 | { 6 | SDKGRADIENTSHADER_ANGLE = 1003, // REAL 7 | SDKGRADIENTSHADER_COLOR = 1004, // GRADIENT 8 | SDKGRADIENTSHADER_MODE = 1005, // LONG 9 | SDKGRADIENTSHADER_MODE_U = 0, 10 | SDKGRADIENTSHADER_MODE_V = 1, 11 | SDKGRADIENTSHADER_MODE_DIAGONAL = 2, 12 | SDKGRADIENTSHADER_MODE_RADIAL = 3, 13 | SDKGRADIENTSHADER_MODE_CIRCULAR = 4, 14 | SDKGRADIENTSHADER_MODE_BOX = 5, 15 | SDKGRADIENTSHADER_MODE_STAR = 6, 16 | SDKGRADIENTSHADER_MODE_CORNER = 7, 17 | SDKGRADIENTSHADER_CYCLE = 1006, // BOOL 18 | 19 | SDKGRADIENTSHADER_TURBULENCE = 1007, 20 | SDKGRADIENTSHADER_OCTAVES = 1008, 21 | SDKGRADIENTSHADER_SCALE = 1009, 22 | SDKGRADIENTSHADER_FREQ = 1010, 23 | SDKGRADIENTSHADER_ABSOLUTE = 1011 24 | }; 25 | 26 | #endif // XSDKGRADIENT_H__ 27 | -------------------------------------------------------------------------------- /plugins/example.main/res/description/xsdkgradient.res: -------------------------------------------------------------------------------- 1 | CONTAINER Xsdkgradient 2 | { 3 | NAME Xsdkgradient; 4 | 5 | INCLUDE Mpreview; 6 | INCLUDE Xbase; 7 | 8 | GROUP ID_SHADERPROPERTIES 9 | { 10 | GRADIENT SDKGRADIENTSHADER_COLOR { COLOR; ICC_BASEDOCUMENT; } 11 | LONG SDKGRADIENTSHADER_MODE 12 | { 13 | CYCLE 14 | { 15 | SDKGRADIENTSHADER_MODE_U~200000135; 16 | SDKGRADIENTSHADER_MODE_V~200000136; 17 | SDKGRADIENTSHADER_MODE_DIAGONAL~200000137; 18 | SDKGRADIENTSHADER_MODE_RADIAL~200000138; 19 | SDKGRADIENTSHADER_MODE_CIRCULAR~200000139; 20 | SDKGRADIENTSHADER_MODE_BOX~200000140; 21 | SDKGRADIENTSHADER_MODE_STAR~200000141; 22 | SDKGRADIENTSHADER_MODE_CORNER~200000142; 23 | } 24 | } 25 | REAL SDKGRADIENTSHADER_ANGLE { UNIT DEGREE; } 26 | BOOL SDKGRADIENTSHADER_CYCLE { } 27 | SEPARATOR { LINE; } 28 | REAL SDKGRADIENTSHADER_TURBULENCE { UNIT PERCENT; MIN 0.0; MAX 100.0; } 29 | REAL SDKGRADIENTSHADER_OCTAVES { MIN 0.0; MAX 10.0; STEP 0.1; } 30 | REAL SDKGRADIENTSHADER_SCALE { UNIT PERCENT; MIN 0.0; MAX 1000.0; } 31 | REAL SDKGRADIENTSHADER_FREQ { MIN 0.0; MAX 1000.0; STEP 0.1; } 32 | BOOL SDKGRADIENTSHADER_ABSOLUTE { } 33 | } 34 | } -------------------------------------------------------------------------------- /plugins/example.main/res/dialogs/IDD_SHADER_BROWSER.res: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | DIALOG IDD_SHADER_BROWSER 3 | { 4 | NAME IDS_DIALOG; SCALE_V; SCALE_H; 5 | 6 | GROUP IDC_STATIC 7 | { 8 | NAME IDS_STATIC1; ALIGN_TOP; SCALE_H; 9 | BORDERSIZE 0, 0, 0, 0; 10 | ROWS 1; 11 | SPACE 4, 4; 12 | 13 | STATICTEXT IDC_STATIC { NAME IDS_STATIC; CENTER_V; ALIGN_LEFT; } 14 | LINK IDC_LAYER_BROWSER_LINK 15 | { 16 | ALIGN_TOP; SCALE_H; 17 | } 18 | } 19 | GROUP IDC_STATIC 20 | { 21 | NAME IDS_STATIC2; SCALE_V; SCALE_H; 22 | BORDERSIZE 0, 0, 0, 0; 23 | ROWS 2; 24 | ALLOW_WEIGHTS; 25 | SPACE 4, 4; 26 | 27 | STATICTEXT IDC_STATIC { NAME IDS_STATIC3; CENTER_V; ALIGN_LEFT; } 28 | TREEVIEW IDC_LAYER_BROWSER_TREE 29 | { 30 | SCALE_V; SCALE_H; 31 | BORDER; 32 | NO_MULTISELECT; 33 | } 34 | STATICTEXT IDC_STATIC { NAME IDS_STATIC4; CENTER_V; ALIGN_LEFT; } 35 | MULTILINEEDIT IDC_LAYER_BROWSER_PROPS 36 | { SCALE_V; SCALE_H; SIZE 70, 0; } 37 | } 38 | } -------------------------------------------------------------------------------- /plugins/example.main/res/dialogs/dlg_listview.res: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource DIALOG DLG_LISTVIEW { NAME TDLG; SCALE_H;SCALE_V; GROUP { COLUMNS 2; SCALE_H;SCALE_V; GROUP { STATICTEXT { NAME T1; }; BUTTON GADGET_INSERT { NAME T2; } } GROUP { STATICTEXT { NAME T3; }; BUTTON GADGET_REMOVE { NAME T4; } } LISTVIEW GADGET_LISTVIEW1 { SCALE_H;SCALE_V; SIZE 150,100; }; LISTVIEW GADGET_LISTVIEW2 { SIZE 34,120; }; } } -------------------------------------------------------------------------------- /plugins/example.main/res/dialogs/dlg_register.res: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | 3 | DIALOG DLG_REGISTER 4 | { 5 | NAME T1; 6 | GROUP 7 | { 8 | COLUMNS 2; 9 | 10 | STATICTEXT { NAME T2; } 11 | EDITTEXT IDC_SERIALNUMBER { SIZE 300,0; } 12 | } 13 | DLGGROUP { OK;CANCEL;HELP; } 14 | } 15 | -------------------------------------------------------------------------------- /plugins/example.main/res/dialogs/dlg_smpl_matrix.res: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | 3 | DIALOG DLG_SMPL_MATRIX 4 | { 5 | NAME STR_TITLE; 6 | 7 | GROUP 8 | { 9 | COLUMNS 1; 10 | BORDERSIZE 8,8,8,8; 11 | 12 | STATICTEXT { SIZE -256, -1; } 13 | GROUP GADGET_SMPL_MATRIX_PREVIEWGROUP 14 | { 15 | CENTER_H; 16 | } 17 | 18 | GROUP 19 | { 20 | COLUMNS 2; 21 | FIT_H; 22 | 23 | STATICTEXT { ALIGN_RIGHT; NAME STR_FILTERTYP; } 24 | COMBOBOX GADGET_SMPL_MATRIX_TYPE_POPUP 25 | { 26 | CHILDS 27 | { 28 | 0, STR_POPUP_ID0; 29 | 1, STR_POPUP_ID1; 30 | } 31 | } 32 | 33 | STATICTEXT { ALIGN_RIGHT; NAME STR_ANGLE; } 34 | EDITSLIDER GADGET_SMPL_MATRIX_SLIDER_ANGLE { SCALE_H; } 35 | 36 | STATICTEXT { ALIGN_RIGHT; NAME STR_MIX; } 37 | EDITSLIDER GADGET_SMPL_MATRIX_SLIDER_MIX { SCALE_H; } 38 | } 39 | 40 | STATICTEXT { NAME STR_EMPTY; } 41 | CHECKBOX GADGET_SMPL_MATRIX_TEXTURE_MODE { NAME STR_TEXTURE_MODE; } 42 | CHECKBOX GADGET_SMPL_MATRIX_DOCUMENT_PREVIEW { NAME STR_PREVIEW; } 43 | STATICTEXT { NAME STR_EMPTY; } 44 | } 45 | 46 | DLGGROUP { OK;CANCEL; } 47 | } -------------------------------------------------------------------------------- /plugins/example.main/res/dialogs/dlg_subdialog.res: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource DIALOG DLG_SUBDIALOG { NAME TDLG; SCALE_H;SCALE_V; GROUP { COLUMNS 1; BORDERSIZE 4,4,4,4; SCALE_H;SCALE_V; GROUP { COLUMNS 2; BUTTON GADGET_SUB1 { NAME T1; } BUTTON GADGET_SUB2 { NAME T2; } } SEPARATOR { SCALE_H; } SUBDIALOG GADGET_SUBDIALOG { SIZE -200,-100; } } } -------------------------------------------------------------------------------- /plugins/example.main/res/dialogs/dlg_threshold.res: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | 3 | DIALOG DLG_THRESHOLD 4 | { 5 | NAME STR_TITLE; 6 | 7 | GROUP 8 | { 9 | COLUMNS 1; 10 | BORDERSIZE 8,8,8,8; 11 | 12 | STATICTEXT { SIZE -256, -1; } 13 | GROUP GADGET_THRESHOLD_PREVIEWGROUP 14 | { 15 | CENTER_H; 16 | } 17 | 18 | GROUP 19 | { 20 | COLUMNS 2; 21 | FIT_H; 22 | 23 | STATICTEXT { ALIGN_RIGHT; NAME STR_LEVELS; } 24 | EDITSLIDER GADGET_THRESHOLD_SLIDER_LEVELS { SCALE_H; } 25 | } 26 | 27 | STATICTEXT { NAME STR_EMPTY; } 28 | CHECKBOX GADGET_THRESHOLD_DOCUMENT_PREVIEW { NAME STR_PREVIEW; } 29 | STATICTEXT { NAME STR_EMPTY; } 30 | } 31 | 32 | DLGGROUP { OK;CANCEL; } 33 | } -------------------------------------------------------------------------------- /plugins/example.main/res/dropeffector.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/dropeffector.tif -------------------------------------------------------------------------------- /plugins/example.main/res/gradienttypes.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/gradienttypes.tif -------------------------------------------------------------------------------- /plugins/example.main/res/gravitation.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/gravitation.tif -------------------------------------------------------------------------------- /plugins/example.main/res/greektemple.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/greektemple.tif -------------------------------------------------------------------------------- /plugins/example.main/res/haircollider.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/haircollider.tif -------------------------------------------------------------------------------- /plugins/example.main/res/hairconstraint.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/hairconstraint.tif -------------------------------------------------------------------------------- /plugins/example.main/res/hairdeformer.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/hairdeformer.tif -------------------------------------------------------------------------------- /plugins/example.main/res/hairforce.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/hairforce.tif -------------------------------------------------------------------------------- /plugins/example.main/res/hairgen.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/hairgen.tif -------------------------------------------------------------------------------- /plugins/example.main/res/hairgrass.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/hairgrass.tif -------------------------------------------------------------------------------- /plugins/example.main/res/hairrendering.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/hairrendering.tif -------------------------------------------------------------------------------- /plugins/example.main/res/hairstyling.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/hairstyling.tif -------------------------------------------------------------------------------- /plugins/example.main/res/heartshape.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/heartshape.tif -------------------------------------------------------------------------------- /plugins/example.main/res/icon.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/icon.tif -------------------------------------------------------------------------------- /plugins/example.main/res/latticeplanemodifier.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/latticeplanemodifier.tif -------------------------------------------------------------------------------- /plugins/example.main/res/liquid.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/liquid.tif -------------------------------------------------------------------------------- /plugins/example.main/res/loftedmesh.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/loftedmesh.tif -------------------------------------------------------------------------------- /plugins/example.main/res/lookatcamera.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/lookatcamera.tif -------------------------------------------------------------------------------- /plugins/example.main/res/morphmixer.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/morphmixer.tif -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.ar-AR.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.cs-CZ.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.de-DE.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.es-ES.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.fr-FR.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.it-IT.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.ja-JP.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.ko-KR.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.pl-PL.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.ru-RU.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/nodes/net.maxonexample.nodes_corenodes.module.db.zh-CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/noiseeffector.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/noiseeffector.tif -------------------------------------------------------------------------------- /plugins/example.main/res/particlesshuffling.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/particlesshuffling.tif -------------------------------------------------------------------------------- /plugins/example.main/res/planebypolygons.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/planebypolygons.tif -------------------------------------------------------------------------------- /plugins/example.main/res/porcupinemodifier.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/porcupinemodifier.tif -------------------------------------------------------------------------------- /plugins/example.main/res/revolvedmesh.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/revolvedmesh.tif -------------------------------------------------------------------------------- /plugins/example.main/res/roundedtube.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/roundedtube.tif -------------------------------------------------------------------------------- /plugins/example.main/res/ruledmesh.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/ruledmesh.tif -------------------------------------------------------------------------------- /plugins/example.main/res/scene/sky.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/scene/sky.tif -------------------------------------------------------------------------------- /plugins/example.main/res/scene/stairs.c4d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/scene/stairs.c4d -------------------------------------------------------------------------------- /plugins/example.main/res/spherify.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/spherify.tif -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/bmexample.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE BMexample 2 | { 3 | BMexample "Example SDK Modifier"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ckblinker.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE CKblinker 2 | { 3 | CKblinker "Blinker Key"; 4 | BLINKERKEY_NUMBER "Number"; 5 | 6 | ID_CKEY_TIME "Time"; 7 | ID_CKEY_MUTE "Mute"; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ctblinker.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE CTblinker 2 | { 3 | CTblinker "Blinker Track"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/dexample.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Dexample 2 | { 3 | Dexample "Example Datatype"; 4 | 5 | EXAMPLE_LONG "Long"; 6 | EXAMPLE_STRING "String"; 7 | EXAMPLE_VECTOR "Vector"; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/fsdkstlexport.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Fsdkstlexport 2 | { 3 | Fsdkstlexport "STL Export"; 4 | SDKSTLEXPORTFILTER_SCALE "Scale"; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/fsdkstlimport.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Fsdkstlimport 2 | { 3 | Fsdkstlimport "STL Import"; 4 | SDKSTLIMPORTFILTER_SCALE "Scale"; 5 | } -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/mparticlevolume.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE MParticleVolume 2 | { 3 | MParticleVolume "Particle Volume"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/msimplematerial.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Msimplematerial 2 | { 3 | Msimplematerial "Simple Material"; 4 | 5 | SIMPLEMATERIAL_COLOR "Color"; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oassetcontainer.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Oassetcontainer 2 | { 3 | Oassetcontainer "Asset Container Object"; 4 | 5 | ASSETCONTAINER_SELECTION "Selection"; 6 | ASSETCONTAINER_SELECTION_NONE "None"; 7 | ASSETCONTAINER_SOURCE "Source"; 8 | ASSETCONTAINER_ADD "Add"; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oatom.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Oatom 2 | { 3 | Oatom "Atom Object"; 4 | 5 | ATOMOBJECT_CRAD "Cylinder Radius"; 6 | ATOMOBJECT_SRAD "Sphere Radius"; 7 | ATOMOBJECT_SUB "Subdivisions"; 8 | ATOMOBJECT_SINGLE "Single Elements"; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/odescription.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Odescription 2 | { 3 | Odescription "Description Example Object"; 4 | 5 | ID_GROUP_CONTROL "Controls"; 6 | 7 | ID_SELECT_DESCRIPTION "Description"; 8 | ID_SET_PARAMETER "Set Paramter"; 9 | ID_GET_PARAMETER "Get Parameter"; 10 | 11 | ID_GROUP_DYNAMIC "Dynamic Group"; 12 | 13 | 14 | ID_GROUP_RESULT "Result"; 15 | ID_RESULT_TEXT "Result"; 16 | } 17 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/odoublecircle.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Odoublecircle 2 | { 3 | Odoublecircle "Double Circle"; 4 | 5 | CIRCLEOBJECT_RAD "Radius"; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oedrop.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Oedrop 2 | { 3 | Oedrop "C++ SDK - Drop to Surface Effector"; 4 | 5 | DROPEFFECTOR_GROUPEFFECTOR "Effector"; 6 | 7 | DROPEFFECTOR_STRENGTH "Strength"; 8 | 9 | DROPEFFECTOR_TARGET "Target Object"; 10 | DROPEFFECTOR_MODE "Projection Mode"; 11 | DROPEFFECTOR_MODE_PNORMAL "Along +Normal"; 12 | DROPEFFECTOR_MODE_NNORMAL "Along -Normal"; 13 | DROPEFFECTOR_MODE_AXIS "Towards Target Axis"; 14 | DROPEFFECTOR_MODE_SELFAXIS "Toward Own Axis"; 15 | DROPEFFECTOR_MODE_PX "Along +X"; 16 | DROPEFFECTOR_MODE_PY "Along +Y"; 17 | DROPEFFECTOR_MODE_PZ "Along +Z"; 18 | DROPEFFECTOR_MODE_NX "Along -X"; 19 | DROPEFFECTOR_MODE_NY "Along -Y"; 20 | DROPEFFECTOR_MODE_NZ "Along -Z"; 21 | DROPEFFECTOR_DISTANCE "Max Distance"; 22 | } 23 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oenoise.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Oenoise 2 | { 3 | Oenoise "C++ SDK - Noise Effector"; 4 | 5 | NOISEEFFECTOR_SCALE "Scale"; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ofalloff_random.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ofalloff_random 2 | { 3 | Ofalloff_random "Falloff Random"; 4 | 5 | RANDOMFALLOFF_SEED "Seed"; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ogetsetdparameterexample.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ogetsetdparameterexample 2 | { 3 | Ogetsetdparameterexample "Get-/SetDParameter Example"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ogreektemple.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ogreektemple 2 | { 3 | ogreektemple "Greek Temple"; 4 | 5 | SDK_EXAMPLE_GREEKTEMPLE_WIDTH "Width"; 6 | SDK_EXAMPLE_GREEKTEMPLE_HEIGHT "Height"; 7 | SDK_EXAMPLE_GREEKTEMPLE_LENGTH "Length"; 8 | 9 | SDK_EXAMPLE_GREEKTEMPLE_X_SEGMENTS "Segments along X"; 10 | SDK_EXAMPLE_GREEKTEMPLE_Y_SEGMENTS "Segments along Y"; 11 | SDK_EXAMPLE_GREEKTEMPLE_Z_SEGMENTS "Segments along Z"; 12 | 13 | SDK_EXAMPLE_GREEKTEMPLE_STAIRS "Number of stairs"; 14 | SDK_EXAMPLE_GREEKTEMPLE_COLS_SPACEX "Columns distance along X"; 15 | SDK_EXAMPLE_GREEKTEMPLE_COLS_SPACEZ "Columns distance along Y"; 16 | 17 | SDK_EXAMPLE_GREEKTEMPLE "SDK Example - Greek Temple"; 18 | } 19 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ohairsdkcollider.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ohairsdkcollider 2 | { 3 | Ohairsdkcollider "Hair SDK - Object Collider"; 4 | 5 | HAIRSDK_COLLIDER_BOUNCE "Bounce"; 6 | HAIRSDK_COLLIDER_FRICTION "Friction"; 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ohairsdkconstraint.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ohairsdkconstraint 2 | { 3 | Ohairsdkconstraint "Hair SDK - Constraint"; 4 | 5 | HAIR_CONSTRAINT_STRENGTH "Strength"; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ohairsdkdeformer.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ohairsdkdeformer 2 | { 3 | Ohairsdkdeformer "Hair SDK - Comb Deformer"; 4 | 5 | HAIR_DEFORMER_STRENGTH "Strength"; 6 | 7 | HAIR_DEFORMER_COMB_X "Comb X"; 8 | HAIR_DEFORMER_COMB_Y "Comb Y"; 9 | HAIR_DEFORMER_COMB_Z "Comb Z"; 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ohairsdkforce.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ohairsdkforce 2 | { 3 | Ohairsdkforce "Hair SDK - Object Force"; 4 | 5 | HAIR_FORCE_STRENGTH "Strength"; 6 | HAIR_FORCE_LINK "Object"; 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ohairsdkgen.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ohairsdkgen 2 | { 3 | Ohairsdkgen "Hair SDK - Generator Object"; 4 | 5 | HAIR_GEN_LINK "Link"; 6 | HAIR_GEN_COUNT "Count"; 7 | HAIR_GEN_SEGMENTS "Segments"; 8 | HAIR_GEN_LENGTH "Length"; 9 | HAIR_GEN_LENGTH_VAR "Variation"; 10 | HAIR_GEN_NOISE "Noise"; 11 | HAIR_GEN_GENERATE "Cache Grass"; 12 | } 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ohairsdkgrass.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ohairsdkgrass 2 | { 3 | Ohairsdkgrass "Hair SDK - Grass Object"; 4 | 5 | HAIR_GRASS_LINK "Link"; 6 | HAIR_GRASS_COUNT "Count"; 7 | HAIR_GRASS_SEGMENTS "Segments"; 8 | HAIR_GRASS_LENGTH "Length"; 9 | HAIR_GRASS_LENGTH_VAR "Variation"; 10 | HAIR_GRASS_NOISE "Noise"; 11 | HAIR_GRASS_GENERATE "Cache Grass"; 12 | } 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oheartshape.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE oheartshape 2 | { 3 | oheartshape "Heart Shape"; 4 | 5 | SDK_EXAMPLE_HEARTSHAPE_RADIUS "Heart radius"; 6 | SDK_EXAMPLE_HEARTSHAPE "SDK Example - Heart Shape"; 7 | } -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ohyperfile.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ohyperfile 2 | { 3 | Ohyperfile "HyperFile Example Object"; 4 | ID_BUTTON_ADD_IMAGE "Add Image"; 5 | ID_BUTTON_SHOW_IMAGES "Show Images"; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/olatticeplanemodifier.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE olatticeplanemodifier 2 | { 3 | olatticeplanemodifier "Lattice Plane Modifier"; 4 | 5 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_SSIZE "S Size"; 6 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_TSIZE "T Size"; 7 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_SSEGS "S Segments"; 8 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_TSEGS "T Segments"; 9 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE "Active Area"; 10 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_UNLIMITED "Unlimited"; 11 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_WITHINBOX "Within Cage"; 12 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_RESETCAGE "Reset Points"; 13 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_ENABLENORMALCHK "Enable Normals Check"; 14 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_NORMALTHR "Normals Threshold"; 15 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_MODE_GROUP "Mode"; 16 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_CAGE_GROUP "Cage Definition"; 17 | SDK_EXAMPLE_LATTICEPLANEMODIFIER_NORMAL_GROUP "Normals Filter"; 18 | } 19 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oloftedmesh.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE oloftedmesh 2 | { 3 | oloftedmesh "Lofted Mesh"; 4 | 5 | SDK_EXAMPLE_LOFTEDMESH_S_STEPS "S-steps"; 6 | SDK_EXAMPLE_LOFTEDMESH_T_STEPS "T-steps"; 7 | SDK_EXAMPLE_LOFTEDMESH_INTERPOLATION "Sections interpolation"; 8 | SDK_EXAMPLE_SPLINETYPE_LINEAR "Linear"; 9 | SDK_EXAMPLE_SPLINETYPE_CUBIC "Cubic"; 10 | SDK_EXAMPLE_SPLINETYPE_AKIMA "Akima"; 11 | SDK_EXAMPLE_SPLINETYPE_BSPLINE "B-Spline"; 12 | SDK_EXAMPLE_SPLINETYPE_BEZIER "Bezier"; 13 | } -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/omorphmixer.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Omorphmixer 2 | { 3 | Omorphmixer "Morphmixer Object"; 4 | 5 | MORPHMIXER_RECORD "Record"; 6 | MORPHMIXER_IMPORT "Magpie Pro Import..."; 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oplanebypolygons.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE oplanebypolygons 2 | { 3 | oplanebypolygons "Plane by polygons"; 4 | SDK_EXAMPLE_PLANEBYPOLYGONS_WIDTH "Width"; 5 | SDK_EXAMPLE_PLANEBYPOLYGONS_HEIGHT "Height"; 6 | SDK_EXAMPLE_PLANEBYPOLYGONS_W_SUBD "Width Subdivisions"; 7 | SDK_EXAMPLE_PLANEBYPOLYGONS_H_SUBD "Height Subdivisions"; 8 | SDK_EXAMPLE_PLANEBYPOLYGONS_USE_TRIS "Use Triangles"; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oporcupinemodifier.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE oporcupinemodifier 2 | { 3 | oporcupinemodifier "Porcupine Modifier"; 4 | 5 | SDK_EXAMPLE_PORCUPINEMODIFIER_PERCENTAGE "Percentage"; 6 | SDK_EXAMPLE_PORCUPINEMODIFIER_LEVEL "Level"; 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/orevolvedmesh.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE orevolvedmesh 2 | { 3 | orevolvedmesh "Revolved Mesh"; 4 | 5 | SDK_EXAMPLE_REVOLVEDMESH_S_STEPS "S-steps"; 6 | SDK_EXAMPLE_REVOLVEDMESH_T_STEPS "T-steps"; 7 | SDK_EXAMPLE_REVOLVEDMESH_SPINNINGAXIS "Spinning Axis"; 8 | SDK_EXAMPLE_REVOLVEDMESH_STARTANGLE "Start Angle"; 9 | SDK_EXAMPLE_REVOLVEDMESH_ENDANGLE "End Angle"; 10 | } -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oroundedtube.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Oroundedtube 2 | { 3 | Oroundedtube "Rounded Tube Object"; 4 | 5 | TUBEOBJECT_RAD "Main Radius"; 6 | TUBEOBJECT_IRADX "X Radius"; 7 | TUBEOBJECT_IRADY "Y Radius"; 8 | TUBEOBJECT_SUB "Segments"; 9 | TUBEOBJECT_ROUNDSUB "Fillet Segments"; 10 | TUBEOBJECT_ROUNDRAD "Fillet Radius"; 11 | TUBEOBJECT_SEG "Rotation Segments"; 12 | } 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oruledmesh.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE oruledmesh 2 | { 3 | oruledmesh "Ruled Mesh"; 4 | 5 | SDK_EXAMPLE_RULEDMESH_S_STEPS "S-steps"; 6 | SDK_EXAMPLE_RULEDMESH_T_STEPS "T-steps"; 7 | SDK_EXAMPLE_RULEDMESH_FLIP_FIRST "Flip 1st. Curve"; 8 | SDK_EXAMPLE_RULEDMESH_FLIP_SECOND "Flip 2nd. Curve"; 9 | SDK_EXAMPLE_RULEDMESH_PARAM_FIRST "1st. Curve Parametrization"; 10 | SDK_EXAMPLE_RULEDMESH_PARAM_SECOND "2nd. Curve Parametrization"; 11 | SDK_EXAMPLE_RULEDMESH_PARAM_UNIFORM "Uniform"; 12 | SDK_EXAMPLE_RULEDMESH_PARAM_NATURAL "Natural"; 13 | } -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/osculptdeformer.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Osculptdeformer 2 | { 3 | Osculptdeformer "Sculpt Deformer"; 4 | 5 | SCULPTDEFORMER_RADIUS "Radius"; 6 | SCULPTDEFORMER_PRESSURE "Pressure"; 7 | SCULPTDEFORMER_STAMP_TEXTURE "Stamp Texture"; 8 | SCULPTDEFORMER_STAMP_ACTIVE "Stamp"; 9 | SCULPTDEFORMER_STAMP_ROTATION "Stamp Rotation"; 10 | SCULPTDEFORMER_MODIFIER "Modifier"; 11 | SCULPTDEFORMER_NUMSTAMPS "Num Stamps"; 12 | SCULPTDEFORMER_STAMP_USEFALLOFF "Use Falloff on Stamp"; 13 | SCULPTDEFORMER_FALLOFF_SPLINE "Falloff"; 14 | SCULPTDEFORMER_SEED "Seed"; 15 | } 16 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/oshufflingparticles.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE oshufflingparticles 2 | { 3 | oshufflingparticles "Particles Shuffling"; 4 | 5 | SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_X "Sizes"; 6 | SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_Y ""; 7 | SDK_EXAMPLE_SHUFFLINGPARTICLES_SIZE_Z ""; 8 | SDK_EXAMPLE_SHUFFLINGPARTICLES_SEED "Random Seed"; 9 | SDK_EXAMPLE_SHUFFLINGPARTICLES_STRENGTH "Strength"; 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/ospherifydeformer.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Ospherifydeformer 2 | { 3 | Ospherifydeformer "Spherify"; 4 | 5 | SPHERIFYDEFORMER_RADIUS "Radius"; 6 | SPHERIFYDEFORMER_STRENGTH "Strength"; 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/overtexhandle.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE overtexhandle 2 | { 3 | overtexhandle "Vertex Handle"; 4 | 5 | SDK_EXAMPLE_VERTEXHANDLE_POINT_A_DIST "Vertex A Distance"; 6 | SDK_EXAMPLE_VERTEXHANDLE_POINT_B_DIST "Vertex B Distance"; 7 | SDK_EXAMPLE_VERTEXHANDLE_POINT_C_DIST "Vertex C Distance"; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/tfloat.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Tfloat 2 | { 3 | Tfloat "Float Data Tag"; 4 | 5 | ID_CUSTOM_PARAMETER "Custom Tag Additional Parameter"; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/thairsdkrendering.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Thairsdkrendering 2 | { 3 | Thairsdkrendering "Hair SDK - Render Modifier"; 4 | 5 | HAIR_RENDERING_SHADOW "Shadow"; 6 | HAIR_RENDERING_TRANSPARENCY "Transparency"; 7 | HAIR_RENDERING_DEPTH "Depth"; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/thairsdkstyling.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Thairsdkstyling 2 | { 3 | Thairsdkstyling "Hair SDK - Styling"; 4 | 5 | HAIR_STYLING_DISPLACE "Displace"; 6 | HAIR_STYLING_SPLINE_X "Shape X"; 7 | HAIR_STYLING_SPLINE_Y "Shape Y"; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/tlookatcameraexp.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Tlookatcameraexp 2 | { 3 | Tlookatcameraexp "Look At Camera Expression"; 4 | LOOKATCAMERAEXP_PITCH "Change Pitch Rotation"; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/tooledgecutsdk.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolEdgeCutSDK 2 | { 3 | ToolEdgeCutSDK "C++ Edge Cut SDK"; 4 | 5 | MDATA_EDGECUTSDK_SUBDIV "Subdivision"; 6 | MDATA_EDGECUTSDK_OFFSET "Offset"; 7 | MDATA_EDGECUTSDK_SCALE "Scale"; 8 | MDATA_EDGECUTSDK_CREATENGONS "Create N-gons"; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolpaintbrushbase.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolPaintBrushBase 2 | { 3 | ToolPaintBrushBase "Paint Brush"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolpaintbrushsculpt.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolPaintBrushSculpt 2 | { 3 | ToolPaintBrushSculpt "Paint and Sculpt"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolpickobjectsdk.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolPickObjectSDK 2 | { 3 | ToolPickObjectSDK "C++ PickObject SDK"; 4 | 5 | MDATA_PICKOBJECT_MODE "Mode"; 6 | MDATA_PICKOBJECT_ONLY_VISIBLE "Only visible"; 7 | MDATA_PICKOBJECT_MODE_CIRCLE "Circle"; 8 | MDATA_PICKOBJECT_MODE_RECTANGLE "Rectangle"; 9 | MDATA_PICKOBJECT_CIRCLE_RAD "Radius"; 10 | MDATA_PICKOBJECT_RECT_W "Width"; 11 | MDATA_PICKOBJECT_RECT_H "Height"; 12 | } 13 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptbrushmultistamp.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptBrushMultiStamp 2 | { 3 | ToolSculptBrushMultiStamp "SculptBrush MultiStamp Tool"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptbrushtwist.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptBrushTwist 2 | { 3 | ToolSculptBrushTwist "SculptBrush Twist Tool"; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptcubesbrush.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptCubesBrush 2 | { 3 | ToolSculptCubesBrush "Sculpt Cubes Brush"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptdrawpoly.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptDrawPoly 2 | { 3 | ToolSculptDrawPoly "C++ SDK - Simple Sculpt Draw Poly Tool"; 4 | SCULPTDRAWPOLY_POLYGONSIZE "Polygon Size"; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptdrawpolybrush.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptDrawPolyBrush 2 | { 3 | ToolSculptDrawPolyBrush "Sculpt Example Draw Poly Brush Tool"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptgrabbrush.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptGrabBrush 2 | { 3 | ToolSculptGrabBrush "Sculpt Example Grab Brush Tool"; 4 | MDATA_TOOLSCULPTGRABBRUSH_DIRMODE "Direction"; 5 | MDATA_TOOLSCULPTGRABBRUSH_DIRMODE_MOUSEDIR "Mouse"; 6 | MDATA_TOOLSCULPTGRABBRUSH_DIRMODE_NORMAL "Normal"; 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculpting.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculpting 2 | { 3 | ToolSculpting "C++ SDK - Simple Sculpting Tool"; 4 | 5 | SCULPTING_RADIUS "Radius"; 6 | SCULPTING_VECTOR "Direction"; 7 | SCULPTING_DO_VBO_UPDATE "Do VBO Update"; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptpullbrush.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptPullBrush 2 | { 3 | ToolSculptPullBrush "Sculpt Example Pull Brush Tool"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptselectionbrush.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptSelectionBrush 2 | { 3 | ToolSculptSelectionBrush "Sculpt Example Selection Brush"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsculptsplinebrush.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSculptSplineBrush 2 | { 3 | ToolSculptSplineBrush "Sculpt Example Spline Brush"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/toolsnap.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE ToolSnap 2 | { 3 | ToolSnap "C++ Snap Move Tool"; 4 | 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/vpcolorize.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE VPcolorize 2 | { 3 | VPcolorize "Selective Colorize"; 4 | VP_COLORIZE_DELTA_R "Red"; 5 | VP_COLORIZE_DELTA_G "Green"; 6 | VP_COLORIZE_DELTA_B "Blue"; 7 | VP_COLORIZE_MODE "Mode"; 8 | VP_COLORIZE_MODE_COMPLETE "Complete Image"; 9 | VP_COLORIZE_MODE_ALPHA "Use Alpha"; 10 | VP_COLORIZE_MODE_OBJECTBUFFER "Use Object Buffer"; 11 | VP_COLORIZE_OBJECTID "Object ID"; 12 | VP_COLORIZE_LENSGLOW "Glow Test"; 13 | } 14 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/vphairsdkpost.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Vphairsdkpost 2 | { 3 | Vphairsdkpost "Hair SDK - Videopost"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/xbitmapdistortion.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Xbitmapdistortion 2 | { 3 | Xbitmapdistortion "Bitmap Distortion Shader"; 4 | 5 | BITMAPDISTORTIONSHADER_NOISE "Noise"; 6 | BITMAPDISTORTIONSHADER_OCTAVES "Octaves"; 7 | BITMAPDISTORTIONSHADER_SCALE "Scale"; 8 | BITMAPDISTORTIONSHADER_TEXTURE "Texture"; 9 | } 10 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/xhairsdkshader.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Xhairsdkshader 2 | { 3 | Xhairsdkshader "Hair SDK - Shader"; 4 | } 5 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/xmandelbrot.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Xmandelbrot 2 | { 3 | Xmandelbrot "Mandelbrot Shader"; 4 | 5 | MANDELBROTSHADER_COLOROFFSET "Color Offset"; 6 | MANDELBROTSHADER_OBJECTACCESS "Object Access Example"; 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/description/xsdkgradient.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Xsdkgradient 2 | { 3 | Xsdkgradient "Gradient Shader"; 4 | 5 | SDKGRADIENTSHADER_COLOR "Color"; 6 | SDKGRADIENTSHADER_MODE "Mode"; 7 | SDKGRADIENTSHADER_MODE_U "2D - U"; 8 | SDKGRADIENTSHADER_MODE_V "2D - V"; 9 | SDKGRADIENTSHADER_MODE_DIAGONAL "2D - Diagonal"; 10 | SDKGRADIENTSHADER_MODE_RADIAL "2D - Radial"; 11 | SDKGRADIENTSHADER_MODE_CIRCULAR "2D - Circular"; 12 | SDKGRADIENTSHADER_MODE_BOX "2D - Box"; 13 | SDKGRADIENTSHADER_MODE_STAR "2D - Star"; 14 | SDKGRADIENTSHADER_MODE_CORNER "2D - Four Corner"; 15 | SDKGRADIENTSHADER_ANGLE "Angle"; 16 | SDKGRADIENTSHADER_CYCLE "Cycle"; 17 | SDKGRADIENTSHADER_TURBULENCE "Turbulence"; 18 | SDKGRADIENTSHADER_OCTAVES "Octaves"; 19 | SDKGRADIENTSHADER_SCALE "Scale"; 20 | SDKGRADIENTSHADER_FREQ "Frequency"; 21 | SDKGRADIENTSHADER_ABSOLUTE "Absolute"; 22 | } 23 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/dialogs/IDD_SHADER_BROWSER.str: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | 3 | DIALOGSTRINGS IDD_SHADER_BROWSER 4 | { 5 | IDS_DIALOG "Layer Shader Browser"; 6 | IDS_STATIC "Layer Shader"; 7 | IDS_STATIC1 "Group"; 8 | IDS_STATIC2 "Group"; 9 | IDS_STATIC3 "Layers"; 10 | IDS_STATIC4 "Properties"; 11 | } 12 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/dialogs/dlg_listview.str: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | 3 | DIALOGSTRINGS DLG_LISTVIEW 4 | { 5 | TDLG "Listview Example"; 6 | T1 "Available"; 7 | T2 "->"; 8 | T3 "Selected"; 9 | T4 "<-"; 10 | } 11 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/dialogs/dlg_register.str: -------------------------------------------------------------------------------- 1 | DIALOGSTRINGS DLG_REGISTER 2 | { 3 | T1 "Register Plugin"; 4 | T2 "Serial Number"; 5 | } 6 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/dialogs/dlg_smpl_matrix.str: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | 3 | DIALOGSTRINGS DLG_SMPL_MATRIX 4 | { 5 | STR_TITLE "SDK Matrix"; 6 | STR_ANGLE "Angle:"; 7 | STR_MIX "Blend:"; 8 | STR_FILTERTYP "Operator:"; 9 | STR_TEXTURE_MODE "Wrap Texture"; 10 | STR_PREVIEW "Document Preview"; 11 | STR_EMPTY ""; 12 | 13 | STR_POPUP_ID0 "Triangle A"; 14 | STR_POPUP_ID1 "Triangle B"; 15 | 16 | } -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/dialogs/dlg_subdialog.str: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | 3 | DIALOGSTRINGS DLG_SUBDIALOG 4 | { 5 | TDLG "Sub-Dialog Example"; 6 | T1 "Show Sub-Dialog 1"; 7 | T2 "Show Sub-Dialog 2"; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/example.main/res/strings_en-US/dialogs/dlg_threshold.str: -------------------------------------------------------------------------------- 1 | // C4D-DialogResource 2 | 3 | DIALOGSTRINGS DLG_THRESHOLD 4 | { 5 | STR_TITLE "Threshold"; 6 | STR_LEVELS "Levels:"; 7 | STR_PREVIEW "Document Preview"; 8 | STR_EMPTY ""; 9 | } -------------------------------------------------------------------------------- /plugins/example.main/res/triangulate.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/triangulate.tif -------------------------------------------------------------------------------- /plugins/example.main/res/vertexhandle.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.main/res/vertexhandle.tif -------------------------------------------------------------------------------- /plugins/example.main/source/customerror/customerror_impl.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "customerror_interface.h" 3 | 4 | // This example shows the implementation of a custom error type. 5 | 6 | class CustomErrorImpl : public maxon::Component 7 | { 8 | // use ErrorObjectClass to implement basic error functionality 9 | MAXON_COMPONENT(NORMAL, maxon::ErrorObjectClass); 10 | 11 | public: 12 | maxon::Result CopyFrom(const CustomErrorImpl& src) 13 | { 14 | _errorCode = src._errorCode; 15 | return maxon::OK; 16 | } 17 | 18 | public: 19 | 20 | MAXON_METHOD maxon::String GetMessage() const 21 | { 22 | return FormatString("Custom error code is @", _errorCode); 23 | } 24 | 25 | // custom methods 26 | 27 | MAXON_METHOD void SetCustomErrorCode(maxon::Int errorCode) 28 | { 29 | _errorCode = errorCode; 30 | } 31 | 32 | MAXON_METHOD maxon::Int GetCustomErrorCode() const 33 | { 34 | return _errorCode; 35 | } 36 | 37 | private: 38 | maxon::Int _errorCode; ///< error code value 39 | }; 40 | 41 | // register implementation 42 | MAXON_COMPONENT_OBJECT_REGISTER(CustomErrorImpl, CustomErrorObject); 43 | -------------------------------------------------------------------------------- /plugins/example.main/source/customerror/customerror_interface.h: -------------------------------------------------------------------------------- 1 | #ifndef CUSTOMERROR_INTERFACE_H__ 2 | #define CUSTOMERROR_INTERFACE_H__ 3 | 4 | #include "maxon/object.h" 5 | 6 | // This example shows the declaration of a custom error type. 7 | // The custom error is able to store a custom error code. 8 | 9 | // --------------------------------------------------------------------- 10 | // Custom error class that stores an error code. 11 | // --------------------------------------------------------------------- 12 | class CustomErrorInterface : MAXON_INTERFACE_BASES(maxon::ErrorInterface) 13 | { 14 | MAXON_INTERFACE(CustomErrorInterface, MAXON_REFERENCE_COPY_ON_WRITE, "net.maxonexample.example.customerror.interface"); 15 | 16 | public: 17 | MAXON_ADD_TO_COPY_ON_WRITE_REFERENCE_CLASS( 18 | void Create(MAXON_SOURCE_LOCATION_DECLARATION, maxon::Int errorCode) 19 | { 20 | #if API_VERSION >= 20000 && API_VERSION < 21000 21 | * static_cast(this) = S::DirectlyReferencedType::ReferenceClassHelper::object::GetInstance() (); 22 | #elif API_VERSION >= 21000 23 | *static_cast(this) = S::DirectlyReferencedType::Hxx1::ErrObj::GetInstance()(); 24 | #endif 25 | typename S::DirectlyReferencedType::Ptr e = this->MakeWritable(false).GetPointer(); 26 | e.SetLocation(MAXON_SOURCE_LOCATION_FORWARD); 27 | e.SetCustomErrorCode(errorCode); 28 | } 29 | ); 30 | 31 | // custom methods 32 | 33 | // --------------------------------------------------------------------- 34 | // Stores an custom error code. 35 | // --------------------------------------------------------------------- 36 | MAXON_METHOD void SetCustomErrorCode(maxon::Int errorCode); 37 | 38 | // --------------------------------------------------------------------- 39 | // Returns the stored custom error code. 40 | // --------------------------------------------------------------------- 41 | MAXON_METHOD maxon::Int GetCustomErrorCode() const; 42 | }; 43 | 44 | #include "customerror_interface1.hxx" 45 | #include "customerror_interface2.hxx" 46 | 47 | 48 | #endif /* CUSTOMERROR_INTERFACE_H__ */ 49 | 50 | 51 | -------------------------------------------------------------------------------- /plugins/example.main/source/customerror/customerror_use.cpp: -------------------------------------------------------------------------------- 1 | #include "c4d.h" 2 | 3 | using namespace cinema; 4 | 5 | static const Int32 PluginID = 99990000; 6 | 7 | #include "customerror_interface.h" 8 | 9 | // Dummy test function 10 | maxon::Result TestFunction(maxon::Int * val); 11 | maxon::Result TestFunction(maxon::Int * val) 12 | { 13 | iferr_scope; 14 | 15 | if (!val) 16 | return CustomError(MAXON_SOURCE_LOCATION, 4242); 17 | 18 | ApplicationOutput("Value is @", *val); 19 | 20 | return maxon::OK; 21 | } 22 | 23 | // Command to test the custom error 24 | class CustomErrorExample : public CommandData 25 | { 26 | public: 27 | 28 | #if API_VERSION >= 20000 && API_VERSION < 21000 29 | Bool Execute(BaseDocument* doc) 30 | #elif API_VERSION >= 21000 31 | Bool Execute(BaseDocument* doc, GeDialog* parentManager) 32 | #endif 33 | { 34 | iferr_scope_handler 35 | { 36 | return false; 37 | }; 38 | 39 | if (!doc) 40 | return false; 41 | 42 | iferr (TestFunction(nullptr)) 43 | ApplicationOutput("Error: @", err); 44 | 45 | maxon::Int a = 100; 46 | 47 | iferr (TestFunction(&a)) 48 | ApplicationOutput("Error: @", err); 49 | 50 | return true; 51 | } 52 | 53 | static CommandData* Alloc() { return NewObj(CustomErrorExample) iferr_ignore("Unexpected failure on allocating CustomErrorExample plugin."_s); } 54 | }; 55 | 56 | Bool RegisterCustomErrorExample(); 57 | Bool RegisterCustomErrorExample() 58 | { 59 | return RegisterCommandPlugin(PluginID, "C++ SDK - Custom Error Test"_s, PLUGINFLAG_COMMAND_OPTION_DIALOG, nullptr, ""_s, CustomErrorExample::Alloc()); 60 | } 61 | 62 | -------------------------------------------------------------------------------- /plugins/example.main/source/falloff/randomfalloff.cpp: -------------------------------------------------------------------------------- 1 | #include "c4d.h" 2 | #include "c4d_symbols.h" 3 | #include "c4d_falloffplugin.h" 4 | #include "ofalloff_random.h" 5 | #include "main.h" 6 | #include "c4d_accessedobjects.h" 7 | 8 | using namespace cinema; 9 | 10 | class RandomFalloff : public FalloffData 11 | { 12 | public: 13 | virtual Bool Init(BaseContainer* bc); 14 | virtual Bool InitFalloff(const BaseDocument* doc, const BaseContainer* bc, FalloffDataData& falldata) const; 15 | virtual void Sample(const Vector& p, const FalloffDataData& data, Float* res) const; 16 | 17 | virtual maxon::Result GetAccessedObjects(const BaseList2D* op, METHOD_ID method, AccessedObjectsCallback& access) const; 18 | 19 | static FalloffData* Alloc() { return NewObjClear(RandomFalloff); } 20 | }; 21 | 22 | Bool RandomFalloff::Init(BaseContainer* bc) 23 | { 24 | if (!bc) 25 | return false; 26 | 27 | if (bc->GetData(RANDOMFALLOFF_SEED).GetType() == DA_NIL) 28 | bc->SetInt32(RANDOMFALLOFF_SEED, 1234567); 29 | 30 | return true; 31 | } 32 | 33 | Bool RandomFalloff::InitFalloff(const BaseDocument* doc, const BaseContainer* bc, FalloffDataData& falldata) const 34 | { 35 | iferr_scope_handler 36 | { 37 | return false; 38 | }; 39 | 40 | if (!bc) 41 | return false; 42 | 43 | Random& rnd = falldata._userData.Create() iferr_return; 44 | rnd.Init(bc->GetInt32(RANDOMFALLOFF_SEED)); 45 | 46 | return true; 47 | } 48 | 49 | void RandomFalloff::Sample(const Vector& p, const FalloffDataData& data, Float* res) const 50 | { 51 | if (data._userData.IsPopulated()) 52 | { 53 | (*res) = const_cast(data._userData.Get()).Get01(); 54 | } 55 | } 56 | 57 | maxon::Result RandomFalloff::GetAccessedObjects(const BaseList2D* op, METHOD_ID method, AccessedObjectsCallback& access) const 58 | { 59 | return access.MayAccess(op, ACCESSED_OBJECTS_MASK::DATA, ACCESSED_OBJECTS_MASK::NONE); 60 | } 61 | 62 | 63 | // be sure to use a unique ID obtained from www.plugincafe.com 64 | #define ID_RANDOMFALLOFF 1019569 65 | 66 | Bool RegisterRandomFalloff() 67 | { 68 | return RegisterFalloffPlugin(ID_RANDOMFALLOFF, GeLoadString(IDS_RANDOMFALLOFF), 0, RandomFalloff::Alloc, "ofalloff_random"_s); 69 | } 70 | -------------------------------------------------------------------------------- /plugins/example.main/source/gui/activeobject.h: -------------------------------------------------------------------------------- 1 | #ifndef ACTIVEOBJECT_H__ 2 | #define ACTIVEOBJECT_H__ 3 | 4 | #include "c4d.h" 5 | #include "c4d_symbols.h" 6 | #include "main.h" 7 | 8 | void ShowVariableTagDataDialog(const cinema::VariableTag* tag); 9 | 10 | #endif // ACTIVEOBJECT_H__ -------------------------------------------------------------------------------- /plugins/example.main/source/gui/customdata_customgui_in_node.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _CUSTOMDATA_CUSTOMGUI_IN_NODE_H__ 3 | #define _CUSTOMDATA_CUSTOMGUI_IN_NODE_H__ 4 | 5 | 6 | 7 | #include "customdata_customgui.h" 8 | #include "maxon/uiconversions.h" 9 | 10 | 11 | namespace maxon 12 | { 13 | 14 | namespace UiConversions 15 | { 16 | 17 | // Declare the id where the UIconversion implementation will be registered. 18 | MAXON_DECLARATION(maxon::UiConversions::EntryType, UiDotData, "net.maxonsdk.ui.dotdataconversion"); 19 | } // namespace UiConversions 20 | } // namespace maxon 21 | 22 | 23 | 24 | #endif -------------------------------------------------------------------------------- /plugins/example.main/source/gui/gradientuserarea.h: -------------------------------------------------------------------------------- 1 | #ifndef GRADIENTUSERAREA_H__ 2 | #define GRADIENTUSERAREA_H__ 3 | 4 | #include "ge_math.h" 5 | 6 | #define MAXGRADIENT 20 7 | 8 | namespace cinema 9 | { 10 | 11 | class BaseBitmap; 12 | class GeUserArea; 13 | 14 | } // namespace cinema 15 | 16 | struct SDKGradient 17 | { 18 | cinema::Vector col; 19 | cinema::Float pos; 20 | cinema::Int32 id; 21 | }; 22 | 23 | class SDKGradientGadget 24 | { 25 | private: 26 | cinema::Int32 iw, ih, xmin, active, *count, *interpol, maxgrad; 27 | cinema::Int32 dragx, dragy, dragid; 28 | cinema::Vector dragcol; 29 | SDKGradient* g; 30 | cinema::GeUserArea* ua; 31 | 32 | cinema::Float YtoP(cinema::Int32 y); 33 | cinema::Int32 PtoY(cinema::Float pos); 34 | void GetBoxPosition(cinema::Int32 num, cinema::Int32* x, cinema::Int32* y); 35 | cinema::Int32 InsertBox(cinema::Vector col, cinema::Float per, cinema::Int32 id); 36 | cinema::Int32 FindID(); 37 | void RemoveBox(cinema::Int32 num); 38 | 39 | public: 40 | cinema::BaseBitmap* col; 41 | 42 | SDKGradientGadget(); 43 | ~SDKGradientGadget(); 44 | 45 | void Init(cinema::GeUserArea* a_ua, SDKGradient* a_g, cinema::Int32* a_count, cinema::Int32* a_interpol, cinema::Int32 a_maxgrad); 46 | cinema::Bool InitDim(cinema::Int32 x, cinema::Int32 y); 47 | 48 | cinema::Bool MouseDown(cinema::Int32 x, cinema::Int32 y, cinema::Bool dbl); 49 | void MouseDrag(cinema::Int32 x, cinema::Int32 y); 50 | 51 | void SetPosition(cinema::Float per); 52 | cinema::Bool GetPosition(cinema::Float* per); 53 | 54 | void CalcImage(); 55 | }; 56 | 57 | cinema::Vector CalcGradientMix(const cinema::Vector& g1, const cinema::Vector& g2, cinema::Float per, cinema::Int32 interpol); 58 | 59 | #endif // GRADIENTUSERAREA_H__ 60 | -------------------------------------------------------------------------------- /plugins/example.main/source/gui/layershaderbrowser.h: -------------------------------------------------------------------------------- 1 | // LayerShaderBrowser.h 2 | ////////////////////////////////////////////////////////////////////// 3 | 4 | #ifndef LAYERSHADERBROWSER_H__ 5 | #define LAYERSHADERBROWSER_H__ 6 | 7 | #include "c4d_gui.h" 8 | 9 | class LayerShaderBrowser : public cinema::GeDialog 10 | { 11 | public: 12 | LayerShaderBrowser(); 13 | virtual ~LayerShaderBrowser(); 14 | 15 | virtual cinema::Bool CreateLayout(); 16 | virtual cinema::Bool InitValues(); 17 | virtual cinema::Bool Command(cinema::Int32 id, const cinema::BaseContainer& msg); 18 | virtual cinema::Int32 Message(const cinema::BaseContainer& msg, cinema::BaseContainer& result); 19 | virtual cinema::Bool CoreMessage (cinema::Int32 id, const cinema::BaseContainer& msg); 20 | 21 | void UpdateAll(cinema::Bool msg); 22 | void ShowInfo(cinema::LayerShaderLayer* l); 23 | 24 | void* lastselected; 25 | 26 | private: 27 | cinema::LinkBoxGui* linkbox; 28 | cinema::TreeViewCustomGui* tree; 29 | cinema::Int32 lastdirty; 30 | }; 31 | 32 | #endif // LAYERSHADERBROWSER_H__ 33 | -------------------------------------------------------------------------------- /plugins/example.main/source/licensing/blw_simplegenerator.h: -------------------------------------------------------------------------------- 1 | // 2 | // blw_simplegenerator.h 3 | // blw_simplegenerator 4 | // 5 | // Created by Riccardo Gigante on 23/07/2019. 6 | // Copyright © 2019 MAXON Computer GmbH. All rights reserved. 7 | // 8 | 9 | #ifndef BLW_SIMPLEGENERATOR_H__ 10 | #define BLW_SIMPLEGENERATOR_H__ 11 | 12 | //------------------------------------------------------------------------------------------------ 13 | /// Basic ObjectData implementation responsible for generating a simple plane centered in the 14 | /// origin and sized 200 x 200. 15 | //------------------------------------------------------------------------------------------------ 16 | class BLW_SimpleGenerator : public cinema::ObjectData 17 | { 18 | INSTANCEOF(BLW_SimpleGenerator, cinema::ObjectData) 19 | 20 | public: 21 | static cinema::NodeData* Alloc() 22 | { 23 | iferr (cinema::NodeData * nodeData = NewObj(BLW_SimpleGenerator)) 24 | { 25 | err.DiagOutput(); 26 | err.DbgStop(); 27 | return nullptr; 28 | } 29 | 30 | return nodeData; 31 | }; 32 | virtual cinema::Bool Init(cinema::GeListNode* node, cinema::Bool isCloneInit); 33 | virtual void GetDimension(const cinema::BaseObject* op, cinema::Vector* mp, cinema::Vector* rad) const; 34 | virtual cinema::BaseObject* GetVirtualObjects(cinema::BaseObject* op, const cinema::HierarchyHelp* hh); 35 | }; 36 | 37 | #endif /* BLW_SIMPLEGENERATOR_H__ */ 38 | -------------------------------------------------------------------------------- /plugins/example.main/source/licensing/get_md5.py: -------------------------------------------------------------------------------- 1 | import hashlib 2 | import sys 3 | 4 | def calculateMD5(fileName): 5 | print(fileName) 6 | return hashlib.md5(open(fileName,'rb').read()).hexdigest() 7 | 8 | if __name__ == "__main__": 9 | arg = sys.argv[1]; 10 | hash = calculateMD5(arg) 11 | print(hash) 12 | 13 | -------------------------------------------------------------------------------- /plugins/example.main/source/maxonsdk/application/mediaoutput_declarations.h: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------ 2 | /// This file contains the declaration of a published object. 3 | /// This published object is used to access a specific implementation of 4 | /// MediaOutputUrlInterface. 5 | // ------------------------------------------------------------------------ 6 | 7 | #ifndef MEDIAOUTPUT_DECLARATIONS_H__ 8 | #define MEDIAOUTPUT_DECLARATIONS_H__ 9 | 10 | // Maxon API header file 11 | #include "maxon/mediasession_image_export.h" 12 | 13 | namespace maxon 14 | { 15 | namespace ImageSaverClasses 16 | { 17 | // ------------------------------------------------------------------------ 18 | /// The published object "MaxonSDKImage" gives access to an implementation of MediaOutputUrlInterface 19 | // ------------------------------------------------------------------------ 20 | MAXON_DECLARATION(ImageSaverClasses::EntryType, MaxonSDKImage, "net.maxonexample.mediasession.image.export"); 21 | } 22 | } 23 | 24 | #endif // MEDIAOUTPUT_DECLARATIONS_H__ 25 | -------------------------------------------------------------------------------- /plugins/example.main/source/maxonsdk/data_algorithms/blendfunction_declarations.h: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------ 2 | /// This file contains the declaration of a published object. 3 | /// This published object is used to access a specific implementation of 4 | /// BlendFunctionInterface. 5 | // ------------------------------------------------------------------------ 6 | 7 | #ifndef BLENDFUNCTION_DECLARATIONS_H__ 8 | #define BLENDFUNCTION_DECLARATIONS_H__ 9 | 10 | // Maxon API header file 11 | #include "maxon/blend_function.h" 12 | 13 | namespace maxon 14 | { 15 | namespace BlendFunctions 16 | { 17 | // ------------------------------------------------------------------------ 18 | /// The published object "MaxonSDKStep" gives access to an implementation 19 | /// of BlendFunctionInterface. 20 | // ------------------------------------------------------------------------ 21 | MAXON_DECLARATION(BlendFunctionRef, MaxonSDKStep, "net.maxonexample.blendfunction.step"); 22 | } 23 | } 24 | 25 | #endif // BLENDFUNCTION_DECLARATIONS_H__ 26 | -------------------------------------------------------------------------------- /plugins/example.main/source/maxonsdk/data_algorithms/streamconversion_declarations.h: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------ 2 | /// This file contains the declaration of a published object and an attribute. 3 | /// The published object is used to access a specific implementation of 4 | /// StreamConversionInterface. The attribute is used to configure an instance 5 | /// of that interface. 6 | // ------------------------------------------------------------------------ 7 | 8 | #ifndef STREAMCONVERSION_DECLARATIONS_H__ 9 | #define STREAMCONVERSION_DECLARATIONS_H__ 10 | 11 | // Maxon API header file 12 | #include "maxon/streamconversion.h" 13 | 14 | namespace maxon 15 | { 16 | namespace MAXONSDK_CAESAR_CIPHER_OPTIONS 17 | { 18 | // ------------------------------------------------------------------------ 19 | /// Shift value for Caesar cipher 20 | // ------------------------------------------------------------------------ 21 | MAXON_ATTRIBUTE(Int32, SHIFT, "net.maxonexample.streamconversion.caesar.shift"); 22 | } 23 | 24 | namespace StreamConversions 25 | { 26 | // ------------------------------------------------------------------------ 27 | /// The published object "MaxonSDKCaesar" gives access to an implementation 28 | /// of StreamConversionInterface. 29 | // ------------------------------------------------------------------------ 30 | MAXON_DECLARATION(StreamConversionFactory, MaxonSDKCaesarCipher, "net.maxonexample.streamconversion.caesar"); 31 | } 32 | 33 | // includes needed for MAXON_ATTRIBUTE 34 | #include "streamconversion_declarations1.hxx" 35 | #include "streamconversion_declarations2.hxx" 36 | } 37 | #endif // STREAMCONVERSION_DECLARATIONS_H__ 38 | 39 | -------------------------------------------------------------------------------- /plugins/example.main/source/maxonsdk/foundations/command_declaration.h: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------ 2 | /// This file contains the declaration of several published objects. 3 | /// These objects declare settings, a default context and two command implementations. 4 | // ------------------------------------------------------------------------ 5 | 6 | #ifndef COMMAND_DECLARATION_H__ 7 | #define COMMAND_DECLARATION_H__ 8 | 9 | // Maxon API header file 10 | #include "maxon/commandbase.h" 11 | 12 | 13 | namespace MEANSETTINGS 14 | { 15 | // ------------------------------------------------------------------------ 16 | /// An array of maxon::Float values. 17 | // ------------------------------------------------------------------------ 18 | MAXON_ATTRIBUTE(maxon::BaseArray, VALUES, "net.maxonexample.mean.values"); 19 | // ------------------------------------------------------------------------ 20 | /// The result mean value. 21 | // ------------------------------------------------------------------------ 22 | MAXON_ATTRIBUTE(maxon::Float, RESULT, "net.maxonexample.mean.result"); 23 | } 24 | 25 | namespace maxon 26 | { 27 | namespace CommandDataClasses 28 | { 29 | // ------------------------------------------------------------------------ 30 | /// An example data object. 31 | // ------------------------------------------------------------------------ 32 | MAXON_DECLARATION(maxon::CommandDataClasses::EntryType, MAXONSDKDATA, "net.maxonexample.commanddata.example"); 33 | } 34 | 35 | namespace CommandClasses 36 | { 37 | // ------------------------------------------------------------------------ 38 | /// Command to calculate the average of the given values. 39 | // ------------------------------------------------------------------------ 40 | MAXON_DECLARATION(maxon::CommandClasses::EntryType, MAXONSDKMEAN_AVERAGE, "net.maxonexample.command.mean.average"); 41 | // ------------------------------------------------------------------------ 42 | /// Command to calculate the median of the given values. 43 | // ------------------------------------------------------------------------ 44 | MAXON_DECLARATION(maxon::CommandClasses::EntryType, MAXONSDKMEAN_MEDIAN, "net.maxonexample.command.mean.median"); 45 | } 46 | } 47 | 48 | #include "command_declaration1.hxx" 49 | #include "command_declaration2.hxx" 50 | 51 | #endif // COMMAND_DECLARATION_H__ 52 | 53 | 54 | -------------------------------------------------------------------------------- /plugins/example.main/source/maxonsdk/nodes/corenode_descriptions.h: -------------------------------------------------------------------------------- 1 | #ifndef CORENODE_DESCRIPTIONS_H__ 2 | #define CORENODE_DESCRIPTIONS_H__ 3 | 4 | #include "maxon/fid.h" 5 | #include "maxon/url.h" 6 | #include "maxon/uuid.h" 7 | #include "maxon/vector.h" 8 | #include "maxon/vector2d.h" 9 | #include "maxon/vector4d.h" 10 | 11 | //---------------------------------------------------------------------------------------- 12 | // BEGIN - auto generated code, do not edit 13 | //---------------------------------------------------------------------------------------- 14 | namespace maxonexample 15 | { 16 | namespace NODE_CORENODE 17 | { 18 | namespace SIMPLECORENODE 19 | { 20 | MAXON_RESOURCE_DATABASE_SCOPE("net.maxonexample.node_corenode.simplecorenode"); 21 | 22 | // supports MAXON::NODE::BASE::FILTERTAGS 23 | // supports MAXON::NODE::BASE::NODEPREVIEWIMAGE 24 | // supports MAXON::NODE::BASE::NAME 25 | // supports MAXON::NODE::BASE::ASSETVERSION 26 | // supports MAXON::NODE::BASE::COLOR 27 | // supports MAXON::NODE::BASE::PORTDISPLAY 28 | // supports MAXON::NODE::BASE::DISPLAYPREVIEW 29 | // supports MAXON::NODE::BASE::DISPLAYCOMMENT 30 | // supports MAXON::NODE::BASE::COMMENT 31 | // supports MAXON::NODE::BASE::CATEGORY 32 | // supports MAXON::NODE::BASE::ICON 33 | // supports MAXON::NODE::BASE::UPDATEPOLICY 34 | // supports MAXON::ASSET::BASE::PROTECTED 35 | 36 | MAXON_ATTRIBUTE(maxon::ColorA, COLORA, "colora"); 37 | 38 | MAXON_ATTRIBUTE(maxon::ColorA, RESULT, "result"); 39 | } 40 | } 41 | } 42 | //---------------------------------------------------------------------------------------- 43 | // END - auto generated code, do not edit 44 | //---------------------------------------------------------------------------------------- 45 | 46 | 47 | #include "corenode_descriptions1.hxx" 48 | #include "corenode_descriptions2.hxx" 49 | 50 | 51 | #endif // CORENODE_DESCRIPTIONS_H__ 52 | -------------------------------------------------------------------------------- /plugins/example.main/source/microsdk/business_logic.h: -------------------------------------------------------------------------------- 1 | #ifndef BUSINESS_LOGIC_H__ 2 | #define BUSINESS_LOGIC_H__ 3 | 4 | // Maxon API header files 5 | #include "maxon/errorbase.h" 6 | 7 | namespace cinema 8 | { 9 | 10 | // forward declaration to avoid including the actual header file 11 | class BaseObject; 12 | 13 | } // namespace cinema 14 | 15 | namespace microsdk 16 | { 17 | //------------------------------------------------------------------------------------- 18 | /// Checks if the configuration variable "g_executeMicroExample" is set to true. If so, 19 | /// a new cube object is created and inserted into the currently active BaseDocument. 20 | //------------------------------------------------------------------------------------- 21 | void ExecuteMicroExampleCode(); 22 | 23 | //---------------------------------------------------------------------------------------- 24 | /// Static function that creates a cube object. 25 | /// @return The created cube object or an error. 26 | //---------------------------------------------------------------------------------------- 27 | maxon::Result MakeCube(); 28 | } 29 | 30 | #endif // BUSINESS_LOGIC_H__ 31 | -------------------------------------------------------------------------------- /plugins/example.main/source/microsdk/user_interface.h: -------------------------------------------------------------------------------- 1 | #ifndef USER_INTERFACE_H__ 2 | #define USER_INTERFACE_H__ 3 | 4 | namespace microsdk 5 | { 6 | //------------------------------------------------------------------------------------- 7 | /// Registers the "Make Cube" GUI command. 8 | /// Must be used in PluginStart(). 9 | //------------------------------------------------------------------------------------- 10 | void RegisterCubeCommand(); 11 | } 12 | 13 | #endif // USER_INTERFACE_H__ 14 | 15 | -------------------------------------------------------------------------------- /plugins/example.main/source/other/command_test.h: -------------------------------------------------------------------------------- 1 | #ifndef COMMAND_TEST_H__ 2 | #define COMMAND_TEST_H__ 3 | 4 | #include "maxon/apibase.h" 5 | #include "maxon/commandbase.h" 6 | 7 | namespace maxon 8 | { 9 | 10 | enum class POLYLINE_DRAW 11 | { 12 | LINE = 0, 13 | BOX, 14 | } MAXON_ENUM_LIST(POLYLINE_DRAW); 15 | 16 | namespace CommandClasses 17 | { 18 | MAXON_DECLARATION(CommandClasses::EntryType, PAINT, "net.maxonexample.command.paint"); 19 | } 20 | 21 | namespace COMMAND 22 | { 23 | namespace POLYLINE 24 | { 25 | MAXON_ATTRIBUTE(BaseArray, POSITIONS, "net.maxonexample.command.paint.positions"); 26 | MAXON_ATTRIBUTE(cinema::Vector, START, "net.maxonexample.command.paint.start", RESOURCE_DEFAULT(cinema::Vector())); 27 | MAXON_ATTRIBUTE(cinema::Vector, END, "net.maxonexample.command.paint.end", RESOURCE_DEFAULT(cinema::Vector(200.0, 200.0, 0.0))); 28 | MAXON_ATTRIBUTE(POLYLINE_DRAW, DRAW, "net.maxonexample.command.paint.draw"); 29 | } 30 | } 31 | 32 | #include "command_test1.hxx" 33 | #include "command_test2.hxx" 34 | 35 | } // namespace maxon 36 | 37 | #endif // COMMAND_TEST_H__ 38 | -------------------------------------------------------------------------------- /plugins/example.main/source/other/python.cpp: -------------------------------------------------------------------------------- 1 | #include "maxon/vm.h" 2 | #include "maxon/cpython.h" 3 | #include "maxon/blockarray.h" 4 | #include "maxon/logger.h" 5 | 6 | #include "c4d.h" 7 | #include "main.h" 8 | 9 | using namespace cinema; 10 | 11 | class PythonRegexCommand : public CommandData 12 | { 13 | public: 14 | 15 | virtual Bool Execute(BaseDocument* doc, GeDialog* parentManager) 16 | { 17 | iferr_scope_handler 18 | { 19 | err.CritStop(); 20 | return false; 21 | }; 22 | 23 | auto executeVm = [](const maxon::VirtualMachineRef& vm, const maxon::LoggerRef& logger) -> maxon::Result 24 | { 25 | iferr_scope; 26 | 27 | auto scope = vm.CreateScope() iferr_return; 28 | 29 | maxon::String code = "import re\n" 30 | "def main(str):\n" 31 | " return bool(re.match('[\\w\\.-]+@[\\w\\.-]+', str))\n"_s; 32 | 33 | scope.Init("regextest"_s, code, maxon::ERRORHANDLING::PRINT, nullptr) iferr_return; 34 | 35 | // unused because the scope itself already prints and handles exceptions 36 | scope.Execute() iferr_return; 37 | 38 | auto arg0 = maxon::Data("email@example.com"_s); 39 | 40 | maxon::BaseArray args; 41 | args.Append(&arg0) iferr_return; 42 | 43 | maxon::BlockArray helperStack; 44 | auto* res = scope.PrivateInvoke("main"_s, helperStack, maxon::GetDataType(), &args.ToBlock()) iferr_return; 45 | if (res && res->Get().GetValue() == true) 46 | logger.Write(maxon::TARGETAUDIENCE::ALL, FormatString("@: The entered email address is valid"_s, vm.GetVersion()), MAXON_SOURCE_LOCATION, maxon::WRITEMETA::DEFAULT) iferr_ignore("just logging"); 47 | else 48 | logger.Write(maxon::TARGETAUDIENCE::ALL, FormatString("@: The entered email address failed to verify"_s, vm.GetVersion()), MAXON_SOURCE_LOCATION, maxon::WRITEMETA::DEFAULT) iferr_ignore("just logging"); 49 | 50 | return maxon::OK; 51 | }; 52 | 53 | executeVm(MAXON_CPYTHON3VM(), maxon::Loggers::Get(maxon::ID_LOGGER_PYTHON)) iferr_ignore("continue no matter what"); 54 | 55 | return true; 56 | } 57 | }; 58 | 59 | Bool RegisterPythonRegexCommand() 60 | { 61 | if (!RegisterCommandPlugin(8436385, "Python Execution Example"_s, 0, nullptr, "Sends a string to Python and executes a regex operation on it"_s, NewObjClear(PythonRegexCommand))) 62 | return false; 63 | 64 | return true; 65 | } 66 | 67 | 68 | -------------------------------------------------------------------------------- /plugins/example.main/source/painting/advanced/paintbrushbase.h: -------------------------------------------------------------------------------- 1 | #ifndef PAINTBRUSHBASE_H__ 2 | #define PAINTBRUSHBASE_H__ 3 | 4 | #include "lib_sculpt.h" 5 | #include "lib_sculptbrush.h" 6 | #include "c4d_symbols.h" 7 | #include "c4d_resource.h" 8 | #include "paintbrushids.h" 9 | #include "toolpaintbrushbase.h" 10 | 11 | class PaintBrushBase : public cinema::SculptBrushToolData 12 | { 13 | public: 14 | explicit PaintBrushBase(cinema::SculptBrushParams *pParams) : cinema::SculptBrushToolData(pParams) { } 15 | virtual ~PaintBrushBase() { } 16 | 17 | virtual cinema::Int32 GetToolPluginId() const; 18 | virtual const cinema::String GetResourceSymbol() const; 19 | 20 | void StartStroke(cinema::Int32 strokeCount, const cinema::BaseContainer &data); 21 | void EndStroke(); 22 | 23 | static cinema::Bool MovePointsFunc(cinema::BrushDabData *dab); 24 | }; 25 | 26 | #endif // PAINTBRUSHBASE_H__ 27 | -------------------------------------------------------------------------------- /plugins/example.main/source/painting/advanced/paintbrushids.h: -------------------------------------------------------------------------------- 1 | #ifndef PAINTBRUSHIDS_H__ 2 | #define PAINTBRUSHIDS_H__ 3 | 4 | #define ID_PAINT_BRUSH_BASE 1030170 5 | #define ID_PAINT_BRUSH_SCULPT 1031241 6 | 7 | #endif // PAINTBRUSHIDS_H__ 8 | -------------------------------------------------------------------------------- /plugins/example.main/source/painting/advanced/registeradvancedpaint.cpp: -------------------------------------------------------------------------------- 1 | #include "registeradvancedpaint.h" 2 | 3 | cinema::Bool RegisterPaintAdvanced() 4 | { 5 | RegisterPaintUndoSystem(); 6 | RegisterPaintBrushBase(); 7 | RegisterPaintBrushSculpt(); 8 | return true; 9 | } 10 | 11 | cinema::Bool FreePaintAdvanced() 12 | { 13 | FreePaintUndoSystem(); 14 | return true; 15 | } 16 | -------------------------------------------------------------------------------- /plugins/example.main/source/painting/advanced/registeradvancedpaint.h: -------------------------------------------------------------------------------- 1 | #ifndef REGISTERADVANCEDPAINT_H__ 2 | #define REGISTERADVANCEDPAINT_H__ 3 | 4 | #include "c4d.h" 5 | 6 | cinema::Bool RegisterPaintBrushBase(); 7 | cinema::Bool RegisterPaintBrushSculpt(); 8 | cinema::Bool RegisterPaintUndoSystem(); 9 | cinema::Bool FreePaintUndoSystem(); 10 | 11 | cinema::Bool RegisterPaintAdvanced(); 12 | cinema::Bool FreePaintAdvanced(); 13 | 14 | #endif // REGISTERADVANCEDPAINT_H__ 15 | -------------------------------------------------------------------------------- /plugins/example.main/source/sculpting/sculptmodifier.cpp: -------------------------------------------------------------------------------- 1 | #include "c4d.h" 2 | #include "lib_sculptbrush.h" 3 | #include "c4d_symbols.h" 4 | #include "main.h" 5 | 6 | #define ID_SCULPT_BRUSH_EXAMPLE_MODIFIER 1030975 7 | 8 | using namespace cinema; 9 | 10 | class ExampleSculptModifier : public SculptBrushModifierData 11 | { 12 | public: 13 | INSTANCEOF(ExampleSculptModifier, SculptBrushModifierData) 14 | public: 15 | 16 | static NodeData *Alloc() 17 | { 18 | return NewObjClear(ExampleSculptModifier); 19 | } 20 | 21 | virtual Bool ApplyModifier(BrushDabData *dab, const BaseContainer &modifierData) 22 | { 23 | if (dab->GetBrushStrength() == 0) 24 | return true; 25 | 26 | Int32 a; 27 | 28 | Bool usePreview = dab->IsPreviewDab(); 29 | 30 | Float brushRadius = dab->GetBrushRadius(); 31 | if (brushRadius <= 0) 32 | return false; 33 | 34 | PolygonObject *polyObj = dab->GetPolygonObject(); 35 | if (!polyObj) 36 | return false; 37 | 38 | // Start Gravity Code 39 | Float val = dab->GetBrushStrength(); 40 | Vector gravity = Vector(0, -1, 0) * val; 41 | 42 | Int32 count = dab->GetPointCount(); 43 | const BrushPointData *pPointData = dab->GetPointData(); 44 | for (a = 0; a < count; ++a) 45 | { 46 | Int32 pointIndex = pPointData[a].pointIndex; 47 | Float fallOff = dab->GetBrushFalloff(a); 48 | if (fallOff == 0) 49 | continue; 50 | Vector res = fallOff * gravity; 51 | if (!usePreview) 52 | dab->OffsetPoint(pointIndex, res, nullptr); 53 | else 54 | dab->OffsetPreviewPoint(pointIndex, res); 55 | } 56 | return true; 57 | } 58 | }; 59 | 60 | Bool RegisterSculptModifiers() 61 | { 62 | iferr_scope_handler 63 | { 64 | return false; 65 | }; 66 | 67 | // This modifier is not useful for the pull brush or the grab brush. So we will filter them out so they do not show up on these brushes. 68 | maxon::BaseArray filters; 69 | filters.Append((Int32)SCULPTBRUSHID::PULL) iferr_return; 70 | filters.Append((Int32)SCULPTBRUSHID::GRAB) iferr_return; 71 | if (!RegisterBrushModifier(ID_SCULPT_BRUSH_EXAMPLE_MODIFIER, GeLoadString(IDS_SCULPT_BRUSH_EXAMPLE_MODIFIER), ExampleSculptModifier::Alloc, SCULPTBRUSHMODE::NORMAL, SCULPTBRUSHDATATYPE::POINT, "bmexample", false, &filters)) 72 | return false; 73 | return true; 74 | } 75 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/README.md: -------------------------------------------------------------------------------- 1 | # example.migration_2024 2 | 3 | Provides an overview of the fundamental API changes introduced with Cinema 4D 2024.0 API. 4 | 5 | The examples can be run from the menu entry `Extensions/example.migration_2024` inside Cinema 4D 6 | once the SDK has been compiled and loaded. 7 | 8 | ## Files 9 | | File | Description | 10 | | :- | :- | 11 | | oboundingbox.cpp | Demonstrates the common changes of a #NodeData derived plugin that has been migrated to the 2024 API. | 12 | | oboundingbox_legacy.cpp | Exemplifies a #NodeData derived plugin that is in a pre-2024.0 API state which should be converted. | 13 | | change_examples.cpp | Contains examples for the not directly `NodeData` related 2024.0 API changes. | 14 | | _migration_example_plugin.cpp | Contains boilerplate code to register and run the 2024 migration examples. | 15 | 16 | ## Examples in `change_examples.cpp` 17 | 18 | | Function | Description | 19 | | :- | :- | 20 | | InstantiateDescID | Demonstrates how to construct compile-time and runtime constant `DescID` identifiers. | 21 | | AccessNodeDataContainer | Demonstrates how to access the data container of scene elements. | 22 | | AccessNodeBranches | Demonstrates the slightly changed syntax of accessing node branches. | 23 | | CopyOnWriteSceneData | Demonstrates the copy-on-write changes made to `VariableTag` and `BaseSelect`. | 24 | | AvoidingDictionaries | Demonstrates the new and performant type `maxon::AttributeTuple` to store and index data with `MAXON_ATTRIBUTE` keys which are known at compile-time. | 25 | | CustomDataTypeAccess | Demonstrates how to access custom data type fields in `BaseContainer` and `GeData` instances. | 26 | | GradientSampling | Demonstrates the changes made to `Gradient` sampling. | 27 | | FieldSampling | Demonstrates the changes made to `FieldObject` sampling. | 28 | | CastingStyles | Outlines the slightly changed style recommendations for casting between data types. | -------------------------------------------------------------------------------- /plugins/example.migration_2024/example.migration_2024_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Maxon-Computer/Cinema-4D-Cpp-API-Examples/37451cdd3c5a2bf27b9bfcee38070bb6993997f2/plugins/example.migration_2024/example.migration_2024_splash.png -------------------------------------------------------------------------------- /plugins/example.migration_2024/project/projectdefinition.txt: -------------------------------------------------------------------------------- 1 | // The platforms this project is targeting - can be [Win64;OSX;Linux]. 2 | Platform=Win64;OSX;Linux 3 | 4 | // Type of project - can be [Lib;DLL;App]. 5 | Type=DLL 6 | 7 | // The frameworks dependencies of this project as shipped in the frameworks folder of an SDK. You can only include 8 | // header files from frameworks that are listed here. 9 | APIS=\ 10 | cinema.framework;\ 11 | cinema_hybrid.framework;\ 12 | core.framework 13 | 14 | // If this is a Cinema API plugin, enabling some Cinema API features and disabling automatic style checks. 15 | C4D=true 16 | 17 | stylecheck.level=3 18 | 19 | // The ID of the module/plugin which is being compiled. You should use here the "net.mycompany.myplugin" format. 20 | // You cannot use a module ID of the format "net.maxon.myplugin" as this domain is reserved for Maxon and plugins 21 | // ignoring this will not be loaded. 22 | ModuleId=net.maxonexample.migration_2024 23 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/res/c4d_symbols.h: -------------------------------------------------------------------------------- 1 | #ifndef C4D_SYMBOLS_H__ 2 | #define C4D_SYMBOLS_H__ 3 | 4 | enum 5 | { 6 | // Plugin IDs 7 | PID_OBOUNDINGBOX = 1061105, 8 | PID_CMD_CHANGEEXAMPLES = 1061206, 9 | 10 | // End of symbol definition 11 | _DUMMY_ELEMENT_ 12 | }; 13 | 14 | #endif //C4D_SYMBOLS_H__ 15 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/res/description/oboundingbox.h: -------------------------------------------------------------------------------- 1 | #ifndef OBOUNDINGBOX_H__ 2 | #define OBOUNDINGBOX_H__ 3 | 4 | // The parameter ID enumeration for Oboudingbox.res, the Oboudingbox object. 5 | enum 6 | { 7 | ID_OBOUNDBOX_DISPLAY_MODE = 1000, 8 | ID_OBOUNDBOX_DISPLAY_MODE_GOURAUD = 0, 9 | ID_OBOUNDBOX_DISPLAY_MODE_GOURAUD_WIRE = 1, 10 | ID_OBOUNDBOX_DISPLAY_MODE_QUICK = 2, 11 | ID_OBOUNDBOX_DISPLAY_MODE_QUICK_WIRE = 3, 12 | ID_OBOUNDBOX_DISPLAY_MODE_FLAT = 4, 13 | ID_OBOUNDBOX_DISPLAY_MODE_FLAT_WIRE = 5, 14 | ID_OBOUNDBOX_DISPLAY_MODE_HIDDENLINE = 6, 15 | ID_OBOUNDBOX_DISPLAY_MODE_NOSHADING = 7, 16 | ID_OBOUNDBOX_DISPLAY_MODE_GET_COUNT = 1001, 17 | }; 18 | 19 | #endif // OBOUNDINGBOX_H__ 20 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/res/description/oboundingbox.res: -------------------------------------------------------------------------------- 1 | // The description of the #Oboundingbox node. 2 | CONTAINER Oboundingbox 3 | { 4 | NAME Oboundingbox; 5 | INCLUDE Obase; 6 | 7 | GROUP ID_OBJECTPROPERTIES 8 | { 9 | GROUP 10 | { 11 | COLUMNS 2; 12 | 13 | // The display mode parameter of the object, the cycle values reflect the Tdisplay tag values 14 | // of matching name. 15 | LONG ID_OBOUNDBOX_DISPLAY_MODE 16 | { 17 | CYCLE 18 | { 19 | ID_OBOUNDBOX_DISPLAY_MODE_GOURAUD; 20 | ID_OBOUNDBOX_DISPLAY_MODE_GOURAUD_WIRE; 21 | ID_OBOUNDBOX_DISPLAY_MODE_QUICK; 22 | ID_OBOUNDBOX_DISPLAY_MODE_QUICK_WIRE; 23 | ID_OBOUNDBOX_DISPLAY_MODE_FLAT; 24 | ID_OBOUNDBOX_DISPLAY_MODE_FLAT_WIRE; 25 | ID_OBOUNDBOX_DISPLAY_MODE_HIDDENLINE; 26 | ID_OBOUNDBOX_DISPLAY_MODE_NOSHADING; 27 | } 28 | } 29 | 30 | // The button to show the get access count for #ID_OBOUNDBOX_DISPLAY_MODE. 31 | BUTTON ID_OBOUNDBOX_DISPLAY_MODE_GET_COUNT {} 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/res/strings_en-US/c4d_strings.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE 2 | { 3 | } 4 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/res/strings_en-US/description/oboundingbox.str: -------------------------------------------------------------------------------- 1 | STRINGTABLE Oboundingbox 2 | { 3 | Oboundingbox "BoundingBox"; 4 | 5 | ID_OBOUNDBOX_DISPLAY_MODE "Display Mode"; 6 | ID_OBOUNDBOX_DISPLAY_MODE_GOURAUD "Gouraud Shading"; 7 | ID_OBOUNDBOX_DISPLAY_MODE_GOURAUD_WIRE "Gouraud Shading (Wire)"; 8 | ID_OBOUNDBOX_DISPLAY_MODE_QUICK "Quick Shading"; 9 | ID_OBOUNDBOX_DISPLAY_MODE_QUICK_WIRE "Quick Shading (Wire)"; 10 | ID_OBOUNDBOX_DISPLAY_MODE_FLAT "Flat Shading"; 11 | ID_OBOUNDBOX_DISPLAY_MODE_FLAT_WIRE "Flat Shading (Wire)"; 12 | ID_OBOUNDBOX_DISPLAY_MODE_HIDDENLINE "Hidden Lines"; 13 | ID_OBOUNDBOX_DISPLAY_MODE_NOSHADING "Lines"; 14 | ID_OBOUNDBOX_DISPLAY_MODE_GET_COUNT "Get Count"; 15 | } 16 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/source/_migration_example_plugin.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | example.2024_migration 3 | (C) MAXON Computer GmbH, 2023 4 | 5 | Author: Ferdinand Hoppe 6 | Date: 22/05/2023 7 | 8 | Contains boilerplate code to register and run the 2024 migration examples. 9 | 10 | Does not have to be read or understood when seeking information about 2024 API changes. 11 | */ 12 | 13 | #include "c4d_commandplugin.h" 14 | #include "c4d_general.h" 15 | #include "c4d_symbols.h" 16 | 17 | #include "maxon/apibase.h" 18 | 19 | #include "_migration_example_plugin.h" 20 | #include "change_examples.h" 21 | 22 | using namespace cinema; 23 | 24 | Bool ChangeExamplesCommand::Execute(BaseDocument* doc, GeDialog* parentManager) 25 | { 26 | iferr_scope_handler 27 | { 28 | ApplicationOutput("Error: @", err); 29 | return false; 30 | }; 31 | 32 | InstantiateDescID(doc) iferr_return; 33 | AccessNodeDataContainer(doc) iferr_return; 34 | AccessNodeBranches(doc) iferr_return; 35 | AvoidingDictionaries(doc) iferr_return; 36 | CustomDataTypeAccess(doc) iferr_return; 37 | GradientSampling(doc) iferr_return; 38 | FieldSampling(doc) iferr_return; 39 | CopyOnWriteSceneData(doc) iferr_return; 40 | CastingStyles(doc) iferr_return; 41 | 42 | return true; 43 | } 44 | 45 | Bool RegisterChangeExamplesCommand() 46 | { 47 | if (!RegisterCommandPlugin( 48 | PID_CMD_CHANGEEXAMPLES, 49 | "Run Change Examples"_s, 50 | PLUGINFLAG_SMALLNODE, nullptr, 51 | "Runs all the minor 2024 API change examples"_s, 52 | ChangeExamplesCommand::Alloc())) 53 | { 54 | ApplicationOutput("Failed to register @", "ChangeExamplesCommand"_s); 55 | return false; 56 | } 57 | return true; 58 | } 59 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/source/_migration_example_plugin.h: -------------------------------------------------------------------------------- 1 | /* 2 | example.2024_migration 3 | (C) MAXON Computer GmbH, 2023 4 | 5 | Author: Ferdinand Hoppe 6 | Date: 22/05/2023 7 | 8 | Contains boilerplate code to register and run the 2024 migration examples. 9 | 10 | Does not have to be read or understood when seeking information about 2024 API changes. 11 | */ 12 | #ifndef MIGRATION_EXAMPLE_PLUGIN_H__ 13 | #define MIGRATION_EXAMPLE_PLUGIN_H__ 14 | 15 | #include "c4d_commandplugin.h" 16 | #include "c4d_general.h" 17 | 18 | #include "maxon/apibase.h" 19 | 20 | /// @brief Provides the command to run the minor 2024 migration examples. 21 | class ChangeExamplesCommand : public cinema::CommandData 22 | { 23 | INSTANCEOF(ChangeExamplesCommand, cinema::CommandData) 24 | 25 | public: 26 | static ChangeExamplesCommand* Alloc() { return NewObjClear(ChangeExamplesCommand); } 27 | 28 | /// @brief Runs all code examples defined in minor_examples.cpp. 29 | virtual cinema::Bool Execute(cinema::BaseDocument* doc, cinema::GeDialog* parentManager); 30 | }; 31 | 32 | /// Called to register the minor examples command plugin and the Oboundingbox object. 33 | cinema::Bool RegisterChangeExamplesCommand(); 34 | cinema::Bool RegisterBoundingBoxObject(); 35 | 36 | #endif // MIGRATION_EXAMPLE_PLUGIN_H__ 37 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/source/change_examples.h: -------------------------------------------------------------------------------- 1 | /* 2 | example.2024_migration 3 | (C) MAXON Computer GmbH, 2023 4 | 5 | Author: Ferdinand Hoppe 6 | Date: 22/05/2023 7 | 8 | Contains examples for the not directly `NodeData` related 2024.0 API changes. 9 | */ 10 | #ifndef CHANGE_EXAMPLES_H__ 11 | #define CHANGE_EXAMPLES_H__ 12 | 13 | #include "c4d_general.h" 14 | 15 | #include "maxon/apibase.h" 16 | 17 | /// @brief Demonstrates how to construct compile-time and runtime constant `DescID` identifiers. 18 | maxon::ResultInstantiateDescID(cinema::BaseDocument* doc); 19 | 20 | /// @brief Demonstrates how to access the data container of scene elements. 21 | maxon::ResultAccessNodeDataContainer(cinema::BaseDocument* doc); 22 | 23 | /// @brief Demonstrates the slightly changed syntax of accessing node branches. 24 | maxon::ResultAccessNodeBranches(cinema::BaseDocument* doc); 25 | 26 | /// @brief Demonstrates the copy-on-write changes made to `VariableTag` and `BaseSelect`. 27 | maxon::ResultCopyOnWriteSceneData(cinema::BaseDocument* doc); 28 | 29 | /// @brief Demonstrates the new and performant type `maxon::AttributeTuple` to store and index data with `MAXON_ATTRIBUTE` keys which are known at compile-time. 30 | maxon::ResultAvoidingDictionaries(cinema::BaseDocument* doc); 31 | 32 | /// @brief Demonstrates how to access custom data type fields in `BaseContainer` and `GeData` instances. 33 | maxon::ResultCustomDataTypeAccess(cinema::BaseDocument* doc); 34 | 35 | /// @brief Demonstrates the changes made to `Gradient` sampling. 36 | maxon::ResultGradientSampling(cinema::BaseDocument* doc); 37 | 38 | /// @brief Demonstrates the changes made to `FieldObject` sampling. 39 | maxon::ResultFieldSampling(cinema::BaseDocument* doc); 40 | 41 | /// @brief Outlines the slightly changed style recommendations for casting between data types. 42 | maxon::ResultCastingStyles(cinema::BaseDocument* doc); 43 | 44 | 45 | #endif // CHANGE_EXAMPLES_H__ 46 | -------------------------------------------------------------------------------- /plugins/example.migration_2024/source/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | example.2024_migration 3 | (C) MAXON Computer GmbH, 2023 4 | 5 | Author: Ferdinand Hoppe 6 | Date: 22/05/2023 7 | */ 8 | #include "c4d_plugin.h" 9 | #include "c4d_resource.h" 10 | 11 | #include "_migration_example_plugin.h" 12 | 13 | namespace cinema 14 | { 15 | 16 | Bool PluginStart() 17 | { 18 | if (!RegisterBoundingBoxObject()) 19 | return false; 20 | if (!RegisterChangeExamplesCommand()) 21 | return false; 22 | return true; 23 | } 24 | 25 | void PluginEnd() { } 26 | 27 | Bool PluginMessage(Int32 id, void* data) 28 | { 29 | switch (id) 30 | { 31 | case C4DPL_INIT_SYS: 32 | { 33 | if (!g_resource.Init()) 34 | return false; 35 | return true; 36 | } 37 | } 38 | return false; 39 | } 40 | 41 | } // namespace cinema 42 | 43 | -------------------------------------------------------------------------------- /plugins/example.nodes/project/projectdefinition.txt: -------------------------------------------------------------------------------- 1 | // The platforms this project is targeting - can be [Win64;OSX;Linux]. 2 | Platform=Win64;OSX;Linux 3 | 4 | // Type of project - can be [Lib;DLL;App]. 5 | Type=DLL 6 | 7 | // The frameworks dependencies of this project as shipped in the frameworks folder of an SDK. You can only include 8 | // header files from frameworks that are listed here. 9 | APIS=\ 10 | cinema.framework;\ 11 | cinema_hybrid.framework;\ 12 | image.framework;\ 13 | misc.framework;\ 14 | core.framework;\ 15 | crypt.framework;\ 16 | math.framework;\ 17 | command.framework;\ 18 | corenodes.framework;\ 19 | nodes.framework;\ 20 | nodespace.framework;\ 21 | exchange.framework 22 | 23 | // If this is a Cinema API plugin, enabling some Cinema API features and disabling automatic style checks. 24 | C4D=true 25 | 26 | stylecheck.level=3 27 | 28 | // The ID of the module/plugin which is being compiled. You should use here the "net.mycompany.myplugin" format. 29 | // You cannot use a module ID of the format "net.maxon.myplugin" as this domain is reserved for Maxon and plugins 30 | // ignoring this will not be loaded. 31 | ModuleId=net.maxonexample.nodes 32 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.ar-AR.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.cs-CZ.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.de-DE.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.es-ES.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.fr-FR.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.it-IT.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.ja-JP.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.ko-KR.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.pl-PL.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.ru-RU.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/res/nodes/net.maxonexample.nodes.module.db.zh-CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "identification": "net.maxon.fileid.descriptiondefinition", 3 | "content": { 4 | "_dbVersion": 6, 5 | "_db": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/command/customnode-command.h: -------------------------------------------------------------------------------- 1 | #ifndef CUSTOMNODE_COMMAND_H__ 2 | #define CUSTOMNODE_COMMAND_H__ 3 | 4 | #include "maxon/apibase.h" 5 | #include "maxon/datadictionary.h" 6 | #include "maxon/datadescriptiondefinitiondatabase.h" 7 | 8 | namespace maxonsdk 9 | { 10 | 11 | // This class encapsulates functionality to create a connection between a GUI button inside a node with a callback. 12 | // As an example, we simulate a time-taking process that should not block the main thread, but still express a state 13 | // to the user in the GUI. The aim is to provide a starting point to realize real world use cases, such as asynchronous 14 | // file loading, or baking functionality. 15 | class CustomNodeCommand 16 | { 17 | public: 18 | 19 | // This method handles the enabling state of the button in the Attribute Manager. 20 | static maxon::Result CommandCheck(const maxon::DataDictionary& userData); 21 | 22 | // This method handles the click on the button in the Attribute Manager. 23 | static maxon::Result CommandExecute(const maxon::DataDictionary& userData, maxon::DataDictionary& multiSelectionStorage); 24 | 25 | // We initialize our static processing data structures. 26 | static maxon::Result InitializeProcessing(); 27 | 28 | // We gracefully free the static data structures. 29 | static void ShutdownProcessing(); 30 | }; 31 | 32 | } // namespace maxonsdk 33 | 34 | #endif // CUSTOMNODE_COMMAND_H__ -------------------------------------------------------------------------------- /plugins/example.nodes/source/exchange/materialexport_command.h: -------------------------------------------------------------------------------- 1 | #ifndef MATERIALEXPORT_COMMAND_H__ 2 | #define MATERIALEXPORT_COMMAND_H__ 3 | 4 | #include "c4d_commanddata.h" 5 | #include "gui.h" 6 | #include "maxon/material/materialexport.h" 7 | 8 | namespace cinema 9 | { 10 | 11 | class BaseMaterial; 12 | 13 | } // namespace cinema 14 | 15 | namespace maxonsdk 16 | { 17 | 18 | class MaterialExportCommand : public cinema::CommandData 19 | { 20 | public: 21 | virtual cinema::Bool Execute(cinema::BaseDocument* doc, cinema::GeDialog* parentManager) override; 22 | 23 | virtual cinema::Int32 GetState(cinema::BaseDocument* doc, cinema::GeDialog* parentManager) override; 24 | 25 | static maxon::Result Register(); 26 | 27 | private: 28 | static cinema::BaseMaterial* GetSelectedMaterial(cinema::BaseDocument* baseDocument); 29 | 30 | static maxon::Result ExportMaterial(const cinema::BaseMaterial& baseMaterial); 31 | 32 | static void PrintMaterialData(const maxon::material::MaterialExchangeData& materialData); 33 | 34 | }; 35 | 36 | } // namespace maxonsdk 37 | 38 | #endif // MATERIALEXPORT_COMMAND_H__ 39 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/exchange/materialimport_command.h: -------------------------------------------------------------------------------- 1 | #ifndef MATERIALIMPORT_COMMAND_H__ 2 | #define MATERIALIMPORT_COMMAND_H__ 3 | 4 | #include "c4d_commanddata.h" 5 | #include "gui.h" 6 | #include "maxon/material/materialimport.h" 7 | 8 | namespace cinema 9 | { 10 | 11 | class BaseDocument; 12 | 13 | } // namespace cinema 14 | 15 | namespace maxonsdk 16 | { 17 | 18 | class MaterialImportCommand : public cinema::CommandData 19 | { 20 | public: 21 | virtual cinema::Bool Execute(cinema::BaseDocument* doc, cinema::GeDialog* parentManager) override; 22 | 23 | virtual cinema::Int32 GetState(cinema::BaseDocument* doc, cinema::GeDialog* parentManager) override; 24 | 25 | static maxon::Result Register(); 26 | 27 | private: 28 | static maxon::Result ImportMaterial(const maxon::Class& importerClass, cinema::BaseDocument& baseDocument); 29 | 30 | }; 31 | 32 | } // namespace maxonsdk 33 | 34 | #endif // MATERIALIMPORT_COMMAND_H__ 35 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/exchange/simplematerialexport.h: -------------------------------------------------------------------------------- 1 | #ifndef SIMPLEMATERIALEXPORT_H__ 2 | #define SIMPLEMATERIALEXPORT_H__ 3 | 4 | #include "maxon/material/materialexport.h" 5 | #include "c4d_basematerial.h" 6 | 7 | namespace maxonsdk 8 | { 9 | 10 | class SimpleMaterialExport : public maxon::Component 11 | { 12 | MAXON_COMPONENT(NORMAL); 13 | 14 | public: 15 | MAXON_METHOD maxon::Result Initialize(const cinema::BaseMaterial& baseMaterial, const maxon::DataDictionary& config); 16 | 17 | MAXON_METHOD maxon::Result> GetParameters(); 18 | 19 | MAXON_METHOD maxon::Result> GetTextures(const maxon::HashSet& texturedChannels); 20 | 21 | static maxon::Result Register(); 22 | 23 | static void Free(); 24 | 25 | private: 26 | const cinema::BaseMaterial* _baseMaterial = nullptr; 27 | }; 28 | 29 | } // namespace maxonsdk 30 | 31 | #endif // SIMPLEMATERIALEXPORT_H__ -------------------------------------------------------------------------------- /plugins/example.nodes/source/exchange/simplematerialimport.h: -------------------------------------------------------------------------------- 1 | #ifndef SIMPLEMATERIALIMPORT_H__ 2 | #define SIMPLEMATERIALIMPORT_H__ 3 | 4 | #include "maxon/material/materialimport.h" 5 | 6 | namespace maxonsdk 7 | { 8 | 9 | class SimpleMaterialImport : public maxon::Component 10 | { 11 | MAXON_COMPONENT(NORMAL); 12 | 13 | public: 14 | MAXON_METHOD maxon::Result CreateMaterial(const maxon::material::MaterialExchangeData& materialData, cinema::BaseDocument& baseDocument, const maxon::DataDictionary& config); 15 | 16 | static maxon::Result Register(); 17 | 18 | static void Free(); 19 | }; 20 | 21 | } // namespace maxonsdk 22 | 23 | #endif // SIMPLEMATERIALIMPORT_H__ -------------------------------------------------------------------------------- /plugins/example.nodes/source/gui/customgui_helpers.h: -------------------------------------------------------------------------------- 1 | #ifndef CUSTOMGUI_HELPERS_H__ 2 | #define CUSTOMGUI_HELPERS_H__ 3 | 4 | #include "maxon/datadictionary.h" 5 | #include "lib_description.h" 6 | #include "maxon/desctranslation.h" 7 | #include "maxon/datadescription_data.h" 8 | 9 | namespace maxonsdk 10 | { 11 | 12 | // We encapsulate some static helpers for the 'glue' between new data types defined for nodes and the Cinema API GUI descriptions. 13 | class CustomGuiHelpers 14 | { 15 | public: 16 | 17 | static maxon::Result> GetIdArray(const maxon::DataDictionary& guiEntry, const maxon::BaseArray& parentIds); 18 | 19 | static const cinema::DescID& GetRealGroupId(const cinema::DescID& groupIdA, const maxon::DataDictionary& guiEntry, maxon::DescTranslation& translateIds); 20 | 21 | static maxon::Result SetPDescription(cinema::Description& c4dDescription, maxon::DescTranslation& translateIds, const cinema::DescID& descId, const cinema::BaseContainer& param, 22 | const cinema::DescID& groupIdA, const maxon::DataDictionary& dataEntry, const maxon::DataDictionary& guiEntry, const maxon::BaseArray& parentIds); 23 | 24 | }; 25 | 26 | } // namespace maxonsdk 27 | 28 | #endif // CUSTOMGUI_HELPERS_H__ -------------------------------------------------------------------------------- /plugins/example.nodes/source/gui/customgui_string.h: -------------------------------------------------------------------------------- 1 | #ifndef CUSTOMGUI_STRING_H__ 2 | #define CUSTOMGUI_STRING_H__ 3 | 4 | #include "customgui_helpers.h" 5 | #include "maxon/uiconversions.h" 6 | 7 | namespace maxonsdk 8 | { 9 | 10 | class UiConversionCustomGuiString : public maxon::Component 11 | { 12 | MAXON_COMPONENT(); 13 | 14 | public: 15 | 16 | static maxon::Result Initialize(); 17 | 18 | MAXON_METHOD maxon::Result QuerySupportedDataTypes(maxon::BaseArray& dataTypes) const; 19 | 20 | MAXON_METHOD maxon::Result CreateC4DDescription(const maxon::DataType& dataType, cinema::Description& c4dDescription, const maxon::LanguageRef& language, 21 | const maxon::DataDictionary& dataEntry, const maxon::DataDictionary& guiEntry, const maxon::DataDescription& mainDataDescription, const maxon::DataDescription& stringDescription, const cinema::DescID& mainId, 22 | const cinema::DescID& groupId, const maxon::PatchC4DDescriptionEntryDelegate& patchEntryFunc, maxon::DescTranslation& translateIds, 23 | const maxon::BaseArray& parentIds, const cinema::DescID& parentFoldId, const maxon::GetDataCallbackType& getDataCallback, 24 | const maxon::GetExtraDataCallbackType& getExtraDataDelegate, const cinema::BaseDocument* doc) const; 25 | 26 | MAXON_METHOD maxon::Result ConvertToC4D(cinema::GeData& output, const maxon::DataType& dataType, const maxon::Data& data, const cinema::DescID& descIdSuffix, 27 | const maxon::DataDictionary& dataEntry, const maxon::DataDictionary& guiEntry, const maxon::GetExtraDataCallbackType& extraDataDelegate, const cinema::BaseDocument* doc) const; 28 | 29 | MAXON_METHOD maxon::Result> ConvertToCore(const maxon::DataType& dataType, const cinema::GeData& data, const cinema::DescID& descIdSuffix, 30 | const maxon::DataDictionary& dataEntry, const maxon::DataDictionary& guiEntry, const maxon::Data& oldData, 31 | const maxon::GetExtraDataCallbackType& extraDataDelegate, const cinema::BaseDocument* doc) const; 32 | 33 | private: 34 | }; 35 | 36 | } // namespace maxonsdk 37 | #endif // CUSTOMGUI_STRING_H__ 38 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/plugin_strings.h: -------------------------------------------------------------------------------- 1 | #ifndef PLUGIN_STRINGS_H__ 2 | #define PLUGIN_STRINGS_H__ 3 | 4 | #include "maxon/fid.h" 5 | //---------------------------------------------------------------------------------------- 6 | // BEGIN - auto generated code, do not edit 7 | //---------------------------------------------------------------------------------------- 8 | namespace maxonexample 9 | { 10 | namespace GLOBALSTRINGS 11 | { 12 | MAXON_RESOURCE_DATABASE_SCOPE("net.maxonexample.globalstrings"); 13 | MAXON_ATTRIBUTE(maxon::String, SIMPLEMATERIALIMPORT, "net.maxonexample.globalstrings.simplematerialimport"); 14 | 15 | MAXON_ATTRIBUTE(maxon::String, MATERIALIMPORTCOMMAND, "net.maxonexample.globalstrings.materialimportcommand"); 16 | 17 | MAXON_ATTRIBUTE(maxon::String, MATERIALEXPORTCOMMAND, "net.maxonexample.globalstrings.materialexportcommand"); 18 | } 19 | } 20 | //---------------------------------------------------------------------------------------- 21 | // END - auto generated code, do not edit 22 | //---------------------------------------------------------------------------------------- 23 | 24 | namespace maxonexample 25 | { 26 | 27 | #include "plugin_strings1.hxx" 28 | #include "plugin_strings2.hxx" 29 | 30 | } // namespace maxonexample 31 | 32 | #endif // PLUGIN_STRINGS_H__ 33 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/gradientpreviewprovider.h: -------------------------------------------------------------------------------- 1 | #ifndef GRADIENTPREVIEWPROVIDER_H__ 2 | #define GRADIENTPREVIEWPROVIDER_H__ 3 | 4 | #include "maxon/previewimageprovider.h" 5 | #include "maxon/gradientmath.h" 6 | 7 | namespace maxonsdk 8 | { 9 | 10 | struct GradientBakingData 11 | { 12 | struct KnotData 13 | { 14 | maxon::ColorA32 _value; 15 | maxon::Float32 _bias = 0.0; 16 | maxon::UInt _interpolationMode = 0; 17 | }; 18 | 19 | maxon::BaseArray _knotsData; 20 | maxon::SortedGradientKnots _sortedKnots; 21 | }; 22 | 23 | class GradientPreviewProvider : public maxon::Component 24 | { 25 | MAXON_COMPONENT(NORMAL); 26 | public: 27 | 28 | GradientPreviewProvider(); 29 | 30 | MAXON_METHOD maxon::Result TakeOutput(); 31 | 32 | MAXON_METHOD maxon::Result Initialize(maxon::DataDictionaryObjectRef request, maxon::Int numThreads); 33 | 34 | MAXON_METHOD maxon::Result ComputeIteration(const maxon::JobRef parentThread); 35 | 36 | private: 37 | 38 | maxon::IntVector2d _gradientPreviewSize; 39 | maxon::Range _gradientURange; 40 | maxon::GraphNode _clonedGradientBundle; 41 | 42 | static maxon::Result InitializeGradientData(const maxon::GraphNode& gradientBundle); 43 | 44 | static maxon::Result BakeGradient(const GradientBakingData& gradientData, const maxon::IntVector2d& gradientPreviewSize, const maxon::Range& gradientURange); 45 | 46 | maxon::nodes::SamplesFloat32Ref _gradientBufferRef; 47 | }; 48 | 49 | } // namespace maxonsdk 50 | 51 | #endif // GRADIENTPREVIEWPROVIDER_H__ -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/nodematerialexport_impl.cpp: -------------------------------------------------------------------------------- 1 | #include "nodematerialexport_impl.h" 2 | 3 | #include "maxon/material/materialexport.h" 4 | #include "maxon/material/datadescription_material_standard_surface.h" 5 | 6 | namespace maxonsdk 7 | { 8 | 9 | maxon::Result ExampleNodeMaterialExport::Initialize(maxon::nodes::NodesGraphModelRef& graph, cinema::BaseDocument& baseDocument, const maxon::DataDictionary& config) 10 | { 11 | iferr_scope; 12 | 13 | maxon::material::MaterialTypesMap materialTypes = config.Get(maxon::material::EXPORT::CONFIG::MATERIALTYPESWITHSUPPORT) iferr_return; 14 | 15 | // We only support Standard Surface in this example. 16 | CheckArgument(materialTypes.Contains(maxon::MATERIAL::PORTBUNDLE::STANDARDSURFACE::GetId()) == true); 17 | 18 | return maxon::OK; 19 | } 20 | 21 | maxon::Result> ExampleNodeMaterialExport::GetParameters() 22 | { 23 | iferr_scope; 24 | 25 | maxon::Tuple result; 26 | result.first = maxon::MATERIAL::PORTBUNDLE::STANDARDSURFACE::GetId(); 27 | result.second = maxon::material::ParameterStorageInterface::LoadDefaults(maxon::MATERIAL::PORTBUNDLE::STANDARDSURFACE::GetId()) iferr_return; 28 | 29 | return result; 30 | } 31 | 32 | maxon::Result> ExampleNodeMaterialExport::GetTextures(const maxon::HashSet& texturedChannels) 33 | { 34 | maxon::HashMap textures; 35 | return textures; 36 | } 37 | 38 | } // namespace maxonsdk 39 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/nodematerialexport_impl.h: -------------------------------------------------------------------------------- 1 | #ifndef NODEMATERIALEXPORT_IMPL_H__ 2 | #define NODEMATERIALEXPORT_IMPL_H__ 3 | 4 | #include "maxon/nodematerialimport.h" 5 | #include "maxon/nodematerialexchange.h" 6 | #include "maxon/material/materialparameter.h" 7 | #include "lib_substance.h" 8 | 9 | namespace maxonsdk 10 | { 11 | class ExampleNodeMaterialExport : public maxon::Component 12 | { 13 | MAXON_COMPONENT(NORMAL); 14 | public: 15 | 16 | MAXON_METHOD maxon::Result Initialize(maxon::nodes::NodesGraphModelRef& graph, cinema::BaseDocument& baseDocument, const maxon::DataDictionary& config); 17 | 18 | MAXON_METHOD maxon::Result> GetParameters(); 19 | 20 | MAXON_METHOD maxon::Result> GetTextures(const maxon::HashSet& texturedChannels); 21 | }; 22 | 23 | } // namespace maxonsdk 24 | 25 | #endif // NODEMATERIALEXPORT_IMPL_H__ 26 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/nodematerialimport_impl.h: -------------------------------------------------------------------------------- 1 | #ifndef NODEMATERIALIMPORT_IMPL_H__ 2 | #define NODEMATERIALIMPORT_IMPL_H__ 3 | 4 | #include "maxon/nodematerialimport.h" 5 | #include "maxon/nodematerialexchange.h" 6 | #include "maxon/material/materialparameter.h" 7 | #include "lib_substance.h" 8 | 9 | namespace maxonsdk 10 | { 11 | class ExampleNodeMaterialImport : public maxon::Component 12 | { 13 | MAXON_COMPONENT(NORMAL); 14 | public: 15 | 16 | MAXON_METHOD maxon::Result Import(maxon::nodes::NodesGraphModelRef& graph, const maxon::material::MaterialExchangeData& materialData, cinema::BaseDocument& baseDocument); 17 | 18 | private: 19 | static cinema::BaseList2D* FindSubstanceAsset(cinema::BaseDocument& baseDocument, const cinema::String& assetName); 20 | }; 21 | 22 | } // namespace maxonsdk 23 | 24 | #endif // NODEMATERIALIMPORT_IMPL_H__ -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/nodespace_impl.h: -------------------------------------------------------------------------------- 1 | #ifndef NODESPACE_IMPL_H__ 2 | #define NODESPACE_IMPL_H__ 3 | 4 | #include "customnode-customnodespace_descriptions.h" 5 | #include "maxon/node_spaces.h" 6 | #include "maxon/nodesystem_class.h" 7 | 8 | namespace maxonsdk 9 | { 10 | 11 | MAXON_DEPENDENCY(customnode_main); 12 | 13 | class NodeSpaceExample : public maxon::Component 14 | { 15 | MAXON_COMPONENT(NORMAL, maxon::nodes::NodeSpaceBaseClass); 16 | 17 | public: 18 | 19 | static maxon::Result CreateMaterialGraph(const maxon::nodes::NodesGraphModelRef& graph); 20 | 21 | static maxon::Result ConfigurePreviewImageRequest(maxon::DataDictionaryObjectRef request); 22 | 23 | static maxon::Result NodeMaterialMessageHandler(const maxon::nodes::NodesGraphModelRef& graph, maxon::Int32 messageId, void* messageData, void* nodeMaterial); 24 | 25 | MAXON_METHOD maxon::Result Init(maxon::DataDictionary spaceData); 26 | 27 | private: 28 | maxon::nodes::NodeSystemClass _class; 29 | }; 30 | 31 | } // namespace maxonsdk 32 | #endif // NODESPACE_IMPL_H__ 33 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/nodespaceviewportmaterial_impl.h: -------------------------------------------------------------------------------- 1 | #ifndef NODESPACEVIEWPORTMATERIAL_IMPL_H__ 2 | #define NODESPACEVIEWPORTMATERIAL_IMPL_H__ 3 | 4 | #include "maxon/node_spaces.h" 5 | 6 | namespace maxonsdk 7 | { 8 | 9 | class NodeSpaceViewportMaterialExample : public maxon::Component 10 | { 11 | MAXON_COMPONENT(NORMAL); 12 | public: 13 | 14 | NodeSpaceViewportMaterialExample(); 15 | 16 | virtual ~NodeSpaceViewportMaterialExample(); 17 | 18 | MAXON_METHOD maxon::Result Initialize(const maxon::Id& intent, const maxon::Id& materialType, const maxon::nodes::NodesGraphModelRef& graph, const maxon::NodePath& endNodePath, const maxon::NodePath& soloNodePath); 19 | 20 | MAXON_METHOD maxon::Result GetMaterialParameters(); 21 | 22 | MAXON_METHOD maxon::Result ConfigureTextureProviderRequest(maxon::DataDictionaryObjectRef request); 23 | 24 | private: 25 | 26 | maxon::Result GetEndNodeParameters(const maxon::GraphNode& endNode); 27 | 28 | maxon::Result GetSoloParameters(const maxon::GraphNode & endNode); 29 | 30 | maxon::DataDictionary _bakeColors; 31 | maxon::nodes::NodesGraphModelRef _graph; 32 | 33 | maxon::Id _materialType; 34 | maxon::NodePath _endNodePath; 35 | maxon::NodePath _soloNodePath; 36 | maxon::Bool _isValueDynamic = false; // This is a rather random toggle to test dynamic values in Solo mode. 37 | 38 | maxon::GenericData _presetChangedRegistration; 39 | }; 40 | 41 | } // namespace maxonsdk 42 | #endif // NODESPACEVIEWPORTMATERIAL_IMPL_H__ 43 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/nodesystem_presethandler.h: -------------------------------------------------------------------------------- 1 | #ifndef NODESYSTEM_PRESETHANDLER_H__ 2 | #define NODESYSTEM_PRESETHANDLER_H__ 3 | 4 | #include "nodesystem_observer.h" 5 | 6 | namespace maxonsdk 7 | { 8 | 9 | class NodeSystemPresetChangedHandler : public NodeSystemChangedHandler 10 | { 11 | public: 12 | 13 | NodeSystemPresetChangedHandler(); 14 | 15 | virtual ~NodeSystemPresetChangedHandler() override; 16 | 17 | virtual maxon::Result HandleGraphChanged(const maxon::nodes::NodesGraphModelRef& graph) override; 18 | 19 | private: 20 | 21 | static maxon::Result ApplyMaterialPreset(maxon::GraphNode& endNode); 22 | 23 | static maxon::Result ApplyPlasticPreset(maxon::GraphNode& inputs); 24 | 25 | static maxon::Result ApplyGlassPreset(maxon::GraphNode& inputs); 26 | 27 | static maxon::Result ApplyMetalPreset(maxon::GraphNode& inputs); 28 | 29 | static maxon::Result ApplyLavaPreset(maxon::GraphNode& inputs); 30 | 31 | maxon::TimeStamp _lastTimeStamp = 0; 32 | }; 33 | 34 | } // namespace maxonsdk 35 | 36 | #endif // NODESYSTEM_PRESETHANDLER_H__ 37 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/nodesystemclass_impl.cpp: -------------------------------------------------------------------------------- 1 | #include "nodesystemclass_impl.h" 2 | 3 | #include "maxon/nodetemplate.h" 4 | 5 | namespace maxonsdk 6 | { 7 | 8 | MAXON_METHOD maxon::Result NodeSystemClassExample::SupportsImpl(const maxon::nodes::NodeTemplate& templ) const 9 | { 10 | const maxon::Id& id = templ.GetId(); 11 | if (id == maxon::Id("net.maxon.node.arithmetic") || id == maxon::Id("net.maxon.node.scale")) 12 | { 13 | return true; 14 | } 15 | return super.SupportsImpl(templ); 16 | } 17 | 18 | MAXON_METHOD maxon::Result NodeSystemClassExample::InstantiateImpl(const maxon::nodes::InstantiationTrace& parent, const maxon::nodes::NodeTemplate& templ, const maxon::nodes::TemplateArguments& args) const 19 | { 20 | iferr_scope; 21 | using namespace maxon; 22 | using namespace maxon::nodes; 23 | NodeSystem sys = super.InstantiateImpl(parent, templ, args) iferr_return; 24 | const Id& id = templ.GetId(); 25 | if (id == Id("net.maxon.node.arithmetic")) 26 | { 27 | MutableRoot root = sys.BeginModification(parent.GetLookupRepository()) iferr_return; 28 | root.SetTemplate(templ, args) iferr_return; 29 | Tuple enumerators[2]; 30 | enumerators[0].first = Id("float"); 31 | enumerators[0].second.Set(enumerators[0].first) iferr_return; 32 | enumerators[1].first = Id("int"); 33 | enumerators[1].second.Set(enumerators[1].first) iferr_return; 34 | DataType enumType = DataTypeLib::GetEnumType(GetDataType(), enumerators) iferr_return; 35 | root.GetInputs().FindPort(Id("datatype")).SetType(enumType) iferr_return; 36 | sys = root.EndModification() iferr_return; 37 | } 38 | return sys; 39 | } 40 | 41 | 42 | MAXON_METHOD maxon::Result NodeSystemClassExample::SupportsVariant(const maxon::nodes::NodeTemplate& templ, const maxon::Block& variant) const 43 | { 44 | return *variant.GetLast() != maxon::Id("net.maxon.parametrictype.col<4,float>"); 45 | } 46 | 47 | MAXON_METHOD maxon::Result NodeSystemClassExample::SubstituteVariant(const maxon::nodes::NodeTemplate& templ, const maxon::Block& variant, const maxon::Block& options) const 48 | { 49 | if (*variant.GetLast() == maxon::Id("net.maxon.parametrictype.col<4,float>")) 50 | { 51 | return maxon::Id("net.maxon.parametrictype.col<3,float>"); 52 | } 53 | return {}; 54 | } 55 | 56 | } // namespace maxonsdk 57 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/nodesystemclass_impl.h: -------------------------------------------------------------------------------- 1 | #ifndef NODESYSTEMCLASS_IMPL_H__ 2 | #define NODESYSTEMCLASS_IMPL_H__ 3 | 4 | #include "maxon/nodes_corenodes_base.h" 5 | 6 | namespace maxonsdk 7 | { 8 | 9 | class NodeSystemClassExample : public maxon::Component 10 | { 11 | MAXON_COMPONENT(FINAL, maxon::nodes::BaseCoreNodesNodeSystemClass().GetClass()); 12 | 13 | public: 14 | MAXON_METHOD maxon::Result SupportsImpl(const maxon::nodes::NodeTemplate& templ) const; 15 | 16 | MAXON_METHOD maxon::Result InstantiateImpl(const maxon::nodes::InstantiationTrace& parent, const maxon::nodes::NodeTemplate& templ, const maxon::nodes::TemplateArguments& args) const; 17 | 18 | MAXON_METHOD maxon::Result SupportsVariant(const maxon::nodes::NodeTemplate& templ, const maxon::Block& variant) const; 19 | 20 | MAXON_METHOD maxon::Result SubstituteVariant(const maxon::nodes::NodeTemplate& templ, const maxon::Block& variant, const maxon::Block& options) const; 21 | }; 22 | 23 | } // namespace maxonsdk 24 | #endif // NODESYSTEMCLASS_IMPL_H__ 25 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/previewimageprovider_impl.h: -------------------------------------------------------------------------------- 1 | #ifndef PREVIEWIMAGEPROVIDER_IMPL_H__ 2 | #define PREVIEWIMAGEPROVIDER_IMPL_H__ 3 | 4 | #include "maxon/previewimageprovider.h" 5 | #include "thumbnailgenerator_impl.h" 6 | 7 | namespace maxonsdk 8 | { 9 | 10 | class PreviewImageProviderExample : public maxon::Component 11 | { 12 | MAXON_COMPONENT(NORMAL); 13 | public: 14 | 15 | PreviewImageProviderExample(); 16 | 17 | void SimulateWorkload(maxon::TimeValue duration); 18 | 19 | MAXON_METHOD maxon::Result TakeOutput(); 20 | 21 | MAXON_METHOD maxon::Result Initialize(maxon::DataDictionaryObjectRef request, maxon::Int numThreads); 22 | 23 | MAXON_METHOD maxon::Result ComputeIteration(const maxon::JobRef parentThread); 24 | 25 | private: 26 | maxon::Int _numIterations = 1; 27 | maxon::Milliseconds _iterationWorkload = maxon::Milliseconds(100.0); 28 | maxon::Int _currentIteration = -1; 29 | maxon::IntVector2d _imageSize; 30 | maxon::nodes::SamplesFloat32Ref _currentResult; 31 | 32 | renderer::CircleBarTextureSampler _circleTextureSampler; 33 | maxon::Color32 _finishedColor; 34 | maxon::Color32 _unfinishedColor; 35 | }; 36 | 37 | } // namespace maxonsdk 38 | #endif // PREVIEWIMAGEPROVIDER_IMPL_H__ 39 | -------------------------------------------------------------------------------- /plugins/example.nodes/source/space/viewporttextureprovider_impl.h: -------------------------------------------------------------------------------- 1 | #ifndef VIEWPORTTEXTUREPROVIDER_IMPL_H__ 2 | #define VIEWPORTTEXTUREPROVIDER_IMPL_H__ 3 | 4 | #include "maxon/previewimageprovider.h" 5 | #include "thumbnailgenerator_impl.h" 6 | 7 | namespace maxonsdk 8 | { 9 | 10 | class ViewportTextureProviderExample : public maxon::Component 11 | { 12 | struct IterationResult 13 | { 14 | maxon::nodes::SamplesFloat32ConstRef _texture; 15 | maxon::IntVector2d _textureSize; 16 | maxon::Id _id; 17 | }; 18 | 19 | MAXON_COMPONENT(NORMAL); 20 | public: 21 | 22 | MAXON_METHOD maxon::Result TakeOutput(); 23 | 24 | MAXON_METHOD maxon::Result Initialize(maxon::DataDictionaryObjectRef request, maxon::Int numThreads); 25 | 26 | MAXON_METHOD maxon::Result ComputeIteration(const maxon::JobRef parentThread); 27 | 28 | private: 29 | 30 | maxon::BaseArray _textureResolutions; 31 | maxon::Int _lastFinishedIndex = -1; 32 | 33 | maxon::Array _requestedIds; 34 | 35 | maxon::DataDictionary _bakeColors; 36 | 37 | maxon::BaseArray _pendingResults; 38 | }; 39 | 40 | } // namespace maxonsdk 41 | #endif // VIEWPORTTEXTUREPROVIDER_IMPL_H__ 42 | 43 | -------------------------------------------------------------------------------- /plugins/project/projectdefinition.txt: -------------------------------------------------------------------------------- 1 | // The platforms this solution is targeting - can be [Win64;OSX;Linux]. 2 | Platform=Win64;OSX;Linux 3 | 4 | // The type of this definition. 5 | Type=Solution 6 | 7 | // The /projects/plugins/ projects that are part of this solution. Each of them will be compiled into its own 8 | // binary and corresponds to a folder in /plugins/, each with its own projectdefinition.txt file. 9 | Solution=\ 10 | plugins/example.main;\ 11 | plugins/example.migration_2024;\ 12 | plugins/example.assets;\ 13 | plugins/example.nodes;\ 14 | plugins/example.image 15 | --------------------------------------------------------------------------------