Documentation
thoughts on V2
some user suggestions:
c-plugin-interface-2.0-suggestions
main
- replace PluginInfo with Attributes to the plugins class that can be parsed via reflection
- also make the AutoEvaluate property an Attribute to the plugins class
- use MEF to load plugins (gets rid of SetPluginHost)
pins
- provide two pin classes
- Input/OutputPin<T> for primitive types including VMath.Vector3D, SlimDX.Vector3D, ...
- based on IInput/IOutputPin (derived from IEnumerable)
- internally routing to ValueInput/Output, StringInput/Ouptput
- using GetValue..Pointer internally to Marshal.Copy the whole spread at once and improve performance of slice accesses
- alternatively only one Spread<T>
- NodeInput/OutputPin<INodeIOBase> for NodePin-types
- Subtypes via Attributes to pin-properties
- note: pins created via reflection, no constructor needed
- provide Input/OutputPinGroups to allow plugins to create pins dynamically
- for GetFunctions: use return values instead of output parameters
- provide GetPointer<T> (if possible)
- adapt all templates to the changes
changes for V1
- make OutputPin.SliceCount readable
- provide GetTransformPointer, GetColorPointer
optionally
- hand over NodeIOInterface as IntPtr (see SlimDX) instead of having the INodeIOBase interface that all interfaces have to derive from?
- make enums real Enums (not strings/ints as is now)
- make empty strings not arrive as null...
alternative (non generics)
- simpler pin creation methods, like:
- IValueIn CreateValuePin(Name, Default, SpreadMode)
- IValueIn CreateBang(Name)
- IValueIn CreateToggle(Name)
registration free com for loading c++ plugins
Missing Pin Types
- Mesh Input
- Texture Input
- VertexBuffer Input, Output
- Layer Input