Make an ARC Skill

Example: Dependencies, Files and Sub Folders

Your plugin may require dependencies, such as images, fonts or other various files.

DLL Files There are two types of DLL files, managed and unmanaged. A managed DLL is the type that can be added as a resource in the .Net project. The unmanaged DLL is a C or C++ library which is used with Interop calls. If you use either of these, you will be aware of which one is being used.

Any managed DLL file that was added as a resource to your project, should be included to be copied as a resource during compile time. Using managed DLL files does not require any path specifications in your code, as the assembly will be loaded when needed. Visual Studio will take care of copying the file, long as it is marked to be copied, during compile, into the root plugin folder. You should not need to worry about managed DLL location, as visual studio will take care of it, but it must be in the same folder as your plugin DLL.

The unmanaged DLL usage is a different story. When your plugin references an unmanaged DLL, it also specifies the path. If the path is not specified in the interop decleration, the default directory of your plugin is assumed. The unmanaged DLL must be added to your project as a content type, and included to be copied when compiled. This is because unmanaged DLL files are not added as resources in .Net Visual Studio projects, and therefore you must take care of specifying the file to be copied yourself, during compile time. This is easy by simply adding the file to the project as content, and selecting Copy Always from it's property settings.

The source code of an Example Project of using both unmanaged and managed DLL files can be found in the Oculus Rift Camera plugin, here: http://www.ez-robot.com/EZ-Builder/Plugins/view/59

Files & Sub Folders If your plugin requires to read files from the plugin folder, here's how you can get the path to the plugin root folder, by combing the guid and windows environment settings for the public path. The location of the plugin folder in the Public Documents is defined by the Windows Operating System. The Public Documents and plugin path is assembled with the method EZ_Builder.Constants.PLUGINS_FOLDER, as seen in code examples below.

This code example combines the user's public ARC plugin folder, that comes from the windows environment settings, the guid and the filename.


using System.IO;

string OculusRift_Fx_File = EZ_Builder.Common.CombinePath(
        EZ_Builder.Constants.PLUGINS_FOLDER,
        _cf._pluginGUID,
        "OculusRift.fx");

if (!File.Exists(OculusRift_Fx_File)) {

    MessageBox.Show("Unable to find the OculusRift.fx file that should have installed with this plugin. Cancelling");

    return;
}

So if you have a fonts sub folder in the plugin folder, or some sub in the plugin folder, you can do this...


      string FontFile = EZ_Builder.Common.CombinePath(
        EZ_Builder.Constants.PLUGINS_FOLDER,
        _cf._pluginGUID,
        "Fonts",
        "SomeFont.ttf");

Or to read the files from a sub folder of the plug directory...


      using System.IO;

      string fontFolder = EZ_Builder.Common.CombinePath(
        EZ_Builder.Constants.PLUGINS_FOLDER,
        _cf._pluginGUID,
        "Fonts");

      foreach (string fontFile in Directory.GetFiles(fontFolder)) {

            Console.WriteLine("File: {0}", fontFile);
      }        


ARC Pro

Upgrade to ARC Pro

ARC Pro is more than a tool; it's a creative playground for robot enthusiasts, where you can turn your wildest ideas into reality.

United Kingdom
#1  

Is this out of date? There doesn't seem to be a GetConfiguration function within EZ_Builder.Config.Sub.PluginV1

PRO
Synthiam
#2  

Look at the tutorial step titled Code: Saving/Loading Configuration

The get and set configuration methods are overrides of the form. There’s a great video on the first step of this tutorial that demonstrates the step by step of building a plugin. I recommend watching that because it helps fill in any steps that were missed.

When you’ve done it once, it makes sense and voila, you can rinse and repeat:)

United Kingdom
#3  

Excellent, thanks - I will do. I really must learn not to just jump ahead in the process:)

PRO
Synthiam
#4  

Hey no problem - I do it all the time, and end up frustrated because I dont know what it was that I missed. Excitement gets the best of me

United Kingdom
#5  

Trying to follow the tutorials but can't find where the plugin page has gone. How do I add a new plugin to the ez-robot / Synthiam site to get the XML?

United Kingdom
#6  

Never mind. Just found the "Create skill control" link:)

#7  

I am trying to follow the instructions for adding my own plugin but I cannot seem to find the place to register the plugin based on the instructions.

Any help is appreciated.

Thanks

PRO
Synthiam
#8   — Edited

The new button to create a plugin skill control is less than an inch below the button you pressed to create this question. :)

User-inserted image