CStatus Register_MOM_AddToCluster( PluginRegistrar& in_reg ) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"MOM_AddToCluster",L"MOM_AddToCluster"); CStatus st; st = nodeDef.PutColor(255,188,102); st.AssertSucceeded( ) ; st = nodeDef.PutThreadingModel(XSI::siICENodeSingleThreading); st.AssertSucceeded( ) ; // Add input ports and groups. st = nodeDef.AddPortGroup(ID_G_100); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_base,ID_G_100,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextComponent0D,L"base",L"base",0,0,1000000,ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_id,ID_G_100,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextComponent0D,L"id",L"id",0,0,1000000,ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_cluster,ID_G_100,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextComponent0D,L"cluster",L"cluster",0,0,1000000,ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; // Add output ports. st = nodeDef.AddOutputPort(ID_OUT_base,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextComponent0D,L"outbase",L"outbase",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Custom ICENode"); return CStatus::OK; }
CStatus Register_nest_ArrayNode( PluginRegistrar& in_reg ) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"nest_GetPositionArray"); CStatus st; st = nodeDef.PutThreadingModel(XSI::siICENodeSingleThreading); st.AssertSucceeded( ) ; // Add input ports and groups. st = nodeDef.AddPortGroup(Array_ID_G_100); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(Array_ID_IN_Vector,Array_ID_G_100,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextAny,L"Vector",L"Vector",CVector3f(0,0,0),Array_ID_UNDEF,Array_ID_UNDEF,Array_ID_CTXT_CNS); st.AssertSucceeded( ) ; // Add output ports and groups. st = nodeDef.AddPortGroup(Array_ID_G_300); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(Array_ID_OUT_Result,Array_ID_G_300,siICENodeDataVector3,siICENodeStructureArray,siICENodeContextSingleton,L"Array",L"Array",Array_ID_UNDEF,Array_ID_UNDEF,Array_ID_UNDEF); st.AssertSucceeded( ) ; PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Array"); return CStatus::OK; }
CStatus Register_MOM_GetContactPoints( PluginRegistrar& in_reg ) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"MOM_GetContactPoints",L"MOM_GetContactPoints"); CStatus st; st = nodeDef.PutColor(255,188,102); st.AssertSucceeded( ) ; st = nodeDef.PutThreadingModel(XSI::siICENodeSingleThreading); st.AssertSucceeded( ) ; // Add input ports and groups. st = nodeDef.AddPortGroup(ID_G_100); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_mode,ID_G_100,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextSingleton,L"mode",L"mode",0,0,2,ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_minImpulse_id,ID_G_100,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextSingleton,L"minImpulse",L"minImpulse",1,0,1000,ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; // Add output ports. st = nodeDef.AddOutputPort(ID_OUT_Contacts,siICENodeDataMatrix33,siICENodeStructureArray,siICENodeContextSingleton,L"Contacts",L"Contacts",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Custom ICENode"); return CStatus::OK; }
CStatus RegisterToonixGetData( PluginRegistrar& in_reg ) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"ToonixGetData",L"ToonixGetData"); CStatus st; st = nodeDef.PutColor(ToonixNodeR,ToonixNodeG,ToonixNodeB); st.AssertSucceeded( ) ; st = nodeDef.PutThreadingModel(siICENodeSingleThreading); st.AssertSucceeded( ) ; // Add custom types definition. st = nodeDef.DefineCustomType(L"ToonixData",L"ToonixData",L"ToonixData",ToonixDataR,ToonixDataG,ToonixDataB); st.AssertSucceeded( ) ; // Add input ports and groups. st = nodeDef.AddPortGroup(ID_G_100); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_Geometry,ID_G_100,siICENodeDataGeometry,siICENodeStructureSingle,siICENodeContextSingleton,L"Geometry",L"Geometry"); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_CameraCulling,ID_G_100,siICENodeDataBool,siICENodeStructureSingle,siICENodeContextSingleton,L"CameraCulling",L"CameraCulling",false); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_CameraGlobal,ID_G_100,siICENodeDataMatrix44,siICENodeStructureSingle,siICENodeContextSingleton,L"CameraGlobal",L"CameraGlobal"); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_CameraFov,ID_G_100,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextSingleton,L"CameraFov",L"CameraFov"); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_CameraAspect,ID_G_100,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextSingleton,L"CameraAspect",L"CameraAspect"); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_CameraNear,ID_G_100,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextSingleton,L"CameraNear",L"CameraNear",0.0); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_CameraFar,ID_G_100,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextSingleton,L"CameraFar",L"CameraFar",1000.0); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_UseOctree,ID_G_100,siICENodeDataBool,siICENodeStructureSingle,siICENodeContextSingleton,L"UseOctree",L"UseOctree",false); st.AssertSucceeded( ) ; // Add output ports. CStringArray ToonixDataCustomType(1); ToonixDataCustomType[0] = L"ToonixData"; st = nodeDef.AddOutputPort(ID_OUT_ToonixData,ToonixDataCustomType,siICENodeStructureSingle,siICENodeContextSingleton,L"ToonixData",L"ToonixData",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Toonix"); return CStatus::OK; }
CStatus VDB_Node_VolumeToMesh::Register(PluginRegistrar& reg) { ICENodeDef nodeDef; Factory factory = Application().GetFactory(); nodeDef = factory.CreateICENodeDef(L"VDB_Node_VolumeToMesh", L"Volume To Mesh"); CStatus st; st = nodeDef.PutColor(110, 110, 110); st.AssertSucceeded(); st = nodeDef.PutThreadingModel(siICENodeSingleThreading); st.AssertSucceeded(); // Add custom types definition st = nodeDef.DefineCustomType(L"vdb_prim" ,L"VDB Grid", L"openvdb grid type", 155, 21, 10); st.AssertSucceeded(); // Add input ports and groups. st = nodeDef.AddPortGroup(kGroup1); st.AssertSucceeded(); // Add custom type names. CStringArray customTypes(1); customTypes[0] = L"vdb_prim"; // stupid default arguments wont work have to add ULONG_MAX st = nodeDef.AddInputPort(kVDBGrid, kGroup1, customTypes, siICENodeStructureSingle, siICENodeContextSingleton, L"VDB Grid", L"inVDBGrid",ULONG_MAX,ULONG_MAX,ULONG_MAX); st.AssertSucceeded(); st = nodeDef.AddInputPort(kIsoValue, kGroup1, siICENodeDataFloat, siICENodeStructureSingle, siICENodeContextSingleton, L"Iso Value", L"isoValue", 0.0); st.AssertSucceeded(); st = nodeDef.AddInputPort(kAdaptivity, kGroup1, siICENodeDataFloat, siICENodeStructureSingle, siICENodeContextSingleton, L"Adaptivity", L"adaptivity", 0.0); st.AssertSucceeded(); // Add output ports. st = nodeDef.AddOutputPort(kPointArray, siICENodeDataVector3, siICENodeStructureArray, siICENodeContextSingleton, L"Point Array", L"pointList"); st.AssertSucceeded(); st = nodeDef.AddOutputPort(kPolygonArray, siICENodeDataLong, siICENodeStructureArray, siICENodeContextSingleton, L"Polygon Array", L"polygonPoolList"); st.AssertSucceeded(); PluginItem nodeItem = reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"OpenVDB"); return CStatus::OK; }
CStatus RegisterToonixLighter( PluginRegistrar& in_reg ) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"ToonixLighter",L"ToonixLighter"); CStatus st; st = nodeDef.PutColor(ToonixNodeR,ToonixNodeG,ToonixNodeB); st.AssertSucceeded( ) ; // Add custom types definition. st = nodeDef.DefineCustomType(L"ToonixData",L"ToonixData",L"ToonixData",ToonixLineR,ToonixLineG,ToonixLineB); st.AssertSucceeded( ) ; // Add input ports and groups. st = nodeDef.AddPortGroup(ID_G_100); st.AssertSucceeded( ) ; CStringArray ToonixLineCustomType(1); ToonixLineCustomType[0] = L"ToonixData"; st = nodeDef.AddInputPort(ID_IN_ToonixData,ID_G_100,ToonixLineCustomType,siICENodeStructureSingle,siICENodeContextSingleton,L"ToonixData",L"ToonixData",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_ViewPosition,ID_G_100,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextSingleton,L"ViewPosition",L"ViewPosition"); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_LightPosition,ID_G_100,siICENodeDataVector3,siICENodeStructureAny,siICENodeContextSingleton,L"LightPosition",L"LightPosition"); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_LightBias,ID_G_100,siICENodeDataFloat,siICENodeStructureAny,siICENodeContextSingleton,L"LightBias",L"LightBias",0.0); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_LightDistance,ID_G_100,siICENodeDataFloat,siICENodeStructureAny,siICENodeContextSingleton,L"LightDistance",L"LightDistance",100.0); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_Revert,ID_G_100,siICENodeDataBool,siICENodeStructureSingle,siICENodeContextSingleton,L"Revert",L"Revert",false); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_Push,ID_G_100,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextSingleton,L"Push",L"Push",0.0); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_ByTriangle,ID_G_100,siICENodeDataBool,siICENodeStructureSingle,siICENodeContextSingleton,L"ByTriangle",L"ByTriangle",true); st.AssertSucceeded( ) ; // Add output ports. st = nodeDef.AddOutputPort(ID_OUT_Vertices,siICENodeDataVector3,siICENodeStructureArray,siICENodeContextSingleton,L"Vertices",L"Vertices",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_Polygons,siICENodeDataLong,siICENodeStructureArray,siICENodeContextSingleton,L"Polygons",L"Polygons",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Toonix"); return CStatus::OK; }
CStatus VDB_Node_FBM::Register(PluginRegistrar& reg) { ICENodeDef nodeDef; Factory factory = Application().GetFactory(); nodeDef = factory.CreateICENodeDef(L"VDB_Node_FBM", L"VDB FBM"); CStatus st; st = nodeDef.PutColor(110, 110, 110); st.AssertSucceeded(); st = nodeDef.PutThreadingModel(siICENodeSingleThreading); st.AssertSucceeded(); // Add custom types definition st = nodeDef.DefineCustomType(L"vdb_prim" ,L"VDB Grid", L"openvdb grid type", 155, 21, 10); st.AssertSucceeded(); // Add input ports and groups. st = nodeDef.AddPortGroup(kGroup1); st.AssertSucceeded(); // Add custom type names. CStringArray customTypes(1); customTypes[0] = L"vdb_prim"; st = nodeDef.AddInputPort(kInVDBGrid, kGroup1, customTypes, siICENodeStructureSingle, siICENodeContextSingleton, L"In", L"inVDBGrid",ULONG_MAX,ULONG_MAX,ULONG_MAX); st.AssertSucceeded(); st = nodeDef.AddInputPort(kOctaves, kGroup1, siICENodeDataLong, siICENodeStructureSingle, siICENodeContextSingleton, L"Octaves", L"octaves", CValue(6)); st.AssertSucceeded(); st = nodeDef.AddInputPort(kLacunarity, kGroup1, siICENodeDataFloat, siICENodeStructureSingle, siICENodeContextSingleton, L"Lacunarity", L"lacunarity", CValue(2.0)); st.AssertSucceeded(); st = nodeDef.AddInputPort(kGain, kGroup1, siICENodeDataFloat, siICENodeStructureSingle, siICENodeContextSingleton, L"Gain", L"gain", CValue(0.5)); st.AssertSucceeded(); st = nodeDef.AddOutputPort(kOutVDBGrid, customTypes, siICENodeStructureSingle, siICENodeContextSingleton, L"Out", L"outVDBGrid"); st.AssertSucceeded(); PluginItem nodeItem = reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"OpenVDB"); return CStatus::OK; }
CStatus RegisterToonixCurve(PluginRegistrar& in_reg) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"ToonixCurve", L"ToonixCurve"); CStatus st; st = nodeDef.PutColor(ToonixNodeR, ToonixNodeG, ToonixNodeB); st.AssertSucceeded(); st = nodeDef.PutThreadingModel(siICENodeSingleThreading); st.AssertSucceeded(); // Add custom types definition. st = nodeDef.DefineCustomType(L"ToonixLine", L"ToonixLine", L"ToonixLine", ToonixLineR, ToonixLineG, ToonixLineB); st.AssertSucceeded(); // Add input ports and groups. st = nodeDef.AddPortGroup(ID_G_100); st.AssertSucceeded(); st = nodeDef.AddInputPort(ID_IN_Curves, ID_G_100, siICENodeDataGeometry, siICENodeStructureSingle, siICENodeContextSingleton, L"Curves", L"Curves"); st.AssertSucceeded(); st = nodeDef.AddInputPort(ID_IN_ViewPosition, ID_G_100, siICENodeDataVector3, siICENodeStructureAny, siICENodeContextSingleton, L"ViewPoint", L"ViewPoint"); st.AssertSucceeded(); st = nodeDef.AddInputPort(ID_IN_Width, ID_G_100, siICENodeDataFloat, siICENodeStructureSingle, siICENodeContextSingleton, L"Width", L"Width", 0.1); st.AssertSucceeded(); st = nodeDef.AddInputPort(ID_IN_BreakAngle, ID_G_100, siICENodeDataFloat, siICENodeStructureSingle, siICENodeContextSingleton, L"BreakAngle", L"BreakAngle", 90.0); st.AssertSucceeded(); st = nodeDef.AddInputPort(ID_IN_Extend, ID_G_100, siICENodeDataFloat, siICENodeStructureSingle, siICENodeContextSingleton, L"Extend", L"Extend", 0.0); st.AssertSucceeded(); st = nodeDef.AddInputPort(ID_IN_FilterPoints, ID_G_100, siICENodeDataFloat, siICENodeStructureSingle, siICENodeContextSingleton, L"FilterPoints", L"FilterPoints", 0.0); st.AssertSucceeded(); st = nodeDef.AddInputPort(ID_IN_Smooth, ID_G_100, siICENodeDataBool, siICENodeStructureSingle, siICENodeContextSingleton, L"SmoothSilhouette", L"SmoothSilhouette", true); st.AssertSucceeded(); // Add output ports. CStringArray ToonixLineCustomType(1); ToonixLineCustomType[0] = L"ToonixLine"; st = nodeDef.AddOutputPort(ID_OUT_ToonixLine, ToonixLineCustomType, siICENodeStructureSingle, siICENodeContextSingleton, L"ToonixLine", L"ToonixLine", ID_UNDEF, ID_UNDEF, ID_CTXT_CNS); st.AssertSucceeded(); PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Toonix"); return CStatus::OK; }
CStatus Register_MOM_GetAttributes( PluginRegistrar& in_reg ) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"MOM_GetAttributes",L"MOM_GetAttributes"); CStatus st; st = nodeDef.PutColor(255,188,102); st.AssertSucceeded( ) ; st = nodeDef.PutThreadingModel(XSI::siICENodeSingleThreading); st.AssertSucceeded( ) ; // Add input ports and groups. st = nodeDef.AddPortGroup(ID_G_100); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_base,ID_G_100,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextComponent0D,L"base",L"base",0,0,1000000,ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_id,ID_G_100,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextComponent0D,L"id",L"id",0,0,1000000,ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; // Add output ports. st = nodeDef.AddOutputPort(ID_OUT_position,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextComponent0D,L"position",L"position",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_orientation,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextComponent0D,L"orientation",L"orientation",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_linvelocity,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextComponent0D,L"linvelocity",L"linvelocity",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_angvelocity,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextComponent0D,L"angvelocity",L"angvelocity",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_state,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextComponent0D,L"state",L"state",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_mass,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextComponent0D,L"mass",L"mass",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_bounce,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextComponent0D,L"bounce",L"bounce",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_friction,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextComponent0D,L"friction",L"friction",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_lindamping,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextComponent0D,L"lindamping",L"lindamping",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_angdamping,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextComponent0D,L"angdamping",L"angdamping",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_lintreshold,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextComponent0D,L"lintreshold",L"lintreshold",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_angtreshold,siICENodeDataFloat,siICENodeStructureSingle,siICENodeContextComponent0D,L"angtreshold",L"angtreshold",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Custom ICENode"); return CStatus::OK; }
CStatus RegisterToonixMesher( PluginRegistrar& in_reg ) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"ToonixMesher",L"ToonixMesher"); CStatus st; st = nodeDef.PutColor(ToonixNodeR,ToonixNodeG,ToonixNodeB); st.AssertSucceeded( ) ; st = nodeDef.PutThreadingModel(siICENodeSingleThreading); st.AssertSucceeded( ) ; // Add custom types definition. st = nodeDef.DefineCustomType(L"ToonixLine",L"ToonixLine",L"ToonixLine",ToonixLineR,ToonixLineG,ToonixLineB); st.AssertSucceeded( ) ; // Add input ports and groups. st = nodeDef.AddPortGroup(ID_G_100); st.AssertSucceeded( ) ; CStringArray ToonixLineCustomType(1); ToonixLineCustomType[0] = L"ToonixLine"; st = nodeDef.AddInputPort(ID_IN_ToonixLine,ID_G_100,ToonixLineCustomType,siICENodeStructureSingle,siICENodeContextSingleton,L"ToonixLine",L"ToonixLine",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_Subdiv,ID_G_100,siICENodeDataLong,siICENodeStructureSingle,siICENodeContextSingleton,L"Subdivisions",L"Subdivisions",6); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(ID_IN_ViewPosition,ID_G_100,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextSingleton,L"ViewPosition",L"ViewPosition"); st.AssertSucceeded( ) ; // Add output ports. st = nodeDef.AddOutputPort(ID_OUT_Vertices,siICENodeDataVector3,siICENodeStructureArray,siICENodeContextSingleton,L"Vertices",L"Vertices",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(ID_OUT_Polygons,siICENodeDataLong,siICENodeStructureArray,siICENodeContextSingleton,L"Polygons",L"Polygons",ID_UNDEF,ID_UNDEF,ID_CTXT_CNS); st.AssertSucceeded( ) ; PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Toonix"); return CStatus::OK; }
CStatus Register_nest_LatticeNode( PluginRegistrar& in_reg ) { ICENodeDef nodeDef; nodeDef = Application().GetFactory().CreateICENodeDef(L"nest_LatticeDeform"); CStatus st; st = nodeDef.PutThreadingModel(XSI::siICENodeMultiThreading); st.AssertSucceeded( ) ; // Add input ports and groups. st = nodeDef.AddPortGroup(Lattice_ID_G_100); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(Lattice_ID_IN_Point,Lattice_ID_G_100,siICENodeDataVector3,siICENodeStructureAny,siICENodeContextAny,L"Point",L"Point",CVector3f(0,0,0),Lattice_ID_UNDEF,Lattice_ID_STRUCT_CNS,Lattice_ID_CTXT_CNS); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(Lattice_ID_IN_Subdivision,Lattice_ID_G_100,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextSingleton,L"Subdivision",L"Subdivision",CVector3f(1,1,1),Lattice_ID_UNDEF,Lattice_ID_UNDEF,Lattice_ID_UNDEF); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(Lattice_ID_IN_Step,Lattice_ID_G_100,siICENodeDataVector3,siICENodeStructureSingle,siICENodeContextSingleton,L"Step",L"Step",CVector3f(1,1,1),Lattice_ID_UNDEF,Lattice_ID_UNDEF,Lattice_ID_UNDEF); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(Lattice_ID_IN_Reference,Lattice_ID_G_100,siICENodeDataVector3,siICENodeStructureArray,siICENodeContextSingleton,L"References",L"References",CVector3f(1,1,1),Lattice_ID_UNDEF,Lattice_ID_UNDEF,Lattice_ID_UNDEF); st.AssertSucceeded( ) ; st = nodeDef.AddInputPort(Lattice_ID_IN_Current,Lattice_ID_G_100,siICENodeDataVector3,siICENodeStructureArray,siICENodeContextSingleton,L"Currents",L"Currents",CVector3f(1,1,1),Lattice_ID_UNDEF,Lattice_ID_UNDEF,Lattice_ID_UNDEF); st.AssertSucceeded( ) ; // Add output ports and groups. st = nodeDef.AddPortGroup(Lattice_ID_G_300); st.AssertSucceeded( ) ; st = nodeDef.AddOutputPort(Lattice_ID_OUT_Result,Lattice_ID_G_300,siICENodeDataVector3,siICENodeStructureAny,siICENodeContextAny,L"Deform",L"Deform",Lattice_ID_UNDEF,Lattice_ID_STRUCT_CNS,Lattice_ID_CTXT_CNS); st.AssertSucceeded( ) ; PluginItem nodeItem = in_reg.RegisterICENode(nodeDef); nodeItem.PutCategories(L"Custom ICENode"); return CStatus::OK; }