CodeUmbrella

0 votes
Version: 
1.01f
Date Updated:: 
01/05/2018

Write your plugin in C++\CLI, combine it with Jscript.net, C# or Visual Basic extensions, and wrap everything in LUA or MAXScript code, while being able to attach/detach and update all of your runtime compiled dll files, without having to restart your 3DS Max/Design application. CodeUmbrella provides an interface for code editing, compiling, and automatic .NET class wrapping in MAXScript, making sure that all Native Windows and 3DS Max wrappers are available to your .NET and C++\CLI plugins and MAXScript out of the box.

• Run any code in safe sandbox environment within 3DSMAX
• Dynamically load and unload .NET plugins (hot plug)
• Integrate with MAXScript editor (Scintilla) and 3DS MAX (SDK)
• Obfuscate, encrypt, compress and pack your code and files
• Customize encryption/compression algorithms or add your own
• Combine JScript.net, VB.net, C#, C++, MAXScript and LUA plugins
• Easily export and wrap your classes and methods into MAXScript
• Configure, compile and deploy your plugins via dedicated GUI
• Communicate via piped channels with external processes

Free version includes just a few of listed features. It does not include GUI and you can only run .NET plugins from hdd. Current build is fully functional, and will be available for download during May 2018. Paid FULL version will be available shortly. Feel free to send any inquiries to: http://codeumbrella.weebly.com/

WHAT IS CODEUMBRELLA?

This product provides set of tools for 3D designers/developers, aimed to ease the process of Autodesk 3DS Max/Design plugin development and distribution. It helps you to develop, debug and deploy plugins written in C#, VB.net, Jscript, C++\CLI, LUA and MAXScript, all within 3DS MAX application. It provides a bridge between unmanaged and managed code, and a thin layer of protection, to make sure that your 3DSMAX keeps on running, no matter if you throw a JScript or C++ exception.

By binding all of this together under one hood, developers can focus on creating more complex plugins without having to worry about managing AppDomains, CLR security permissions, remote objects Lifetime, and how to wire sandbox remote/sandbox .NET methods to MAXScript. All of this is done in few simple steps via CodeUmbrella interface.

MAXSCRIPT EDITOR INTEGRATION

CodeUmbrella GUI provides easy to use SciTE/Scintilla wrapper (custom syntax highlighting, autocomplete, tooltips) tailored for multiple programming languages. Syntax highlighting is provided for C#, C++, Jscript.net, VB.net and Lua), and you can customize it at runtime (edit colors and styles, load lexers, change commands and more) with powerful Scintilla API and Native Win32 wrappers. Integration with MAXScript SciTE editor let you set up multiple unique windows and color combinations for your project, all at runtime. You get full control over all content/look (colors, keywords, content) of Scintilla text editor, in MAXScript legacy editor, MAXScript SciTE (Tabbed) editor, MAXScript listener, MacroRecorder and output pane (tabbed editor) all in realtime. For example, it is very easy to route all content from Listener to Output pane, or to colorize each instance of Scintilla to different style.

RUNTIME DYNAMIC LIBRARY LOADER

All of your code and compiled plugins could be loaded both from hard drive, or project package libraries. This way you can save some space, and make it easy to distribute your plugin. Autoloader is provided, and it will execute your MAXScript source code or .NET libraries, directly from specified CodeUmbrella project package (not external *.ms or *.dll files). This enables you to keep your content organized, safe, and replaceable, as you can add/remove/replace contents of loaded packages at runtime. Project package libraries can contain compiled DLL files (.net or native), encrypted source code, images, icons, html files, or any other file type in one single archive. When your data is required, it is loaded live from archive into memory (no extraction/temp files).

RUNTIME PERFORMANCE

All of your .NET and Native plugins will work as fast as usual, however, due to the fact that they run in sandbox appdomain that doesn't share same memory space with 3DS MAX, you may encounter slowdowns when sending large amount of data to/from MAXScript. However, it is possible to boost it up by using unmanaged code. Here is a test run:

- Pass an integer array with 1.000.000 elements from MXS to .NET
- Convert an array to unmanaged C array
- Load C++/CLI library and pass a pointer to the array
- Iterate through an array and change some values
- Unload C++/CLI library
- Convert unmanaged array to managed .NET array
- Pass the array from .NET to MXS
- Total time: 250ms on Q6600 (2.4GHz quad core)

Other Software Required: 
.NET framework / .NET redistributable
Version Requirement: 
3DS Max / Design 2012, 2013, 2014 (x86) (x64)