SetClassParentEx
This call has the same behavior as SetClassParent, however needs to be
used in case classes are exchanged as a successive series of integers.
Syntax
// Visual Studio for Windows public: void __declspec(dllexport) __stdcall SetClassParentEx( __int64 model, __int64 owlClass, __int64 parentOwlClass, __int64 setting ); // Linux, OS-X and non-Visual Studio Windows solutions public: void SetClassParentEx( int64_t model, int64_t owlClass, int64_t parentOwlClass, int64_t setting );
Property model
Size: 64 bit / 8 byte (value)Property owlClass
Size: 64 bit / 8 byte (value)Property parentOwlClass
Size: 64 bit / 8 byte (value)Property setting
Size: 64 bit / 8 byte (value)
Example
Here you can find code snippits that show how the API call SetClassParentEx can be used.
#include "engine/include/engine.h" void main() { int64_t model = CreateModel(); if (model) { int64_t classCnt = 0, propertyCnt = 0, instanceCnt = 0; OrderedHandles(model, &classCnt, &propertyCnt, &instanceCnt, 1 + 2 + 4, 1 + 2 + 4); assert(instanceCnt == 0); // // The following class will be created on-the-fly if the name is not used already // for a class or property (attribute / relation). // // note: calling GetClassByName with a name not yet existing will do the same trick) // int64_t classMyOwnCylinderClass = CreateClass(model, "MyOwnCylinderClass"); assert(classMyOwnCylinderClass == classCnt + 1); // references are never 0, therefore classes, properties and instances start at 1 // // Classes // int64_t classCylinder = GetClassByName(model, "Cylinder"); assert(classCylinder > 0 && classCylinder <= classCnt); // // Datatype Properties (attributes) // int64_t propertyLength = GetPropertyByName(model, "length"), propertyRadius = GetPropertyByName(model, "radius"), propertySegmentationParts = GetPropertyByName(model, "segmentationParts"); assert(propertyLength > 0 && propertyLength <= propertyCnt); assert(propertyRadius > 0 && propertyRadius <= propertyCnt); assert(propertySegmentationParts > 0 && propertySegmentationParts <= propertyCnt); // // Instances // int64_t instanceMyOwnCylinderClass = CreateInstanceEx(model, classMyOwnCylinderClass, nullptr); assert(instanceMyOwnCylinderClass == 1); // // At this moment our new class is unrelated to other classes and instances of it not generating any geometry // assert(GetGeometryClassEx(model, classMyOwnCylinderClass) == 0); SetClassParentEx(model, classMyOwnCylinderClass, classCylinder, 1); // // Now each instance of MyOwnCylinderClass is inheriting the behavior and knowledge of a Cylinder // assert(GetGeometryClassEx(model, classMyOwnCylinderClass) == classCylinder); double length = 1.8, radius = 1.3; int64_t segmentationParts = 36; SetDatatypePropertyEx(model, instanceMyOwnCylinderClass, propertyLength, &length, 1); SetDatatypePropertyEx(model, instanceMyOwnCylinderClass, propertyRadius, &radius, 1); SetDatatypePropertyEx(model, instanceMyOwnCylinderClass, propertySegmentationParts, &segmentationParts, 1); // // The resulting model can be viewed in 3D-Editor.exe // SaveModel(model, "c:\\created\\myFile.bin"); CloseModel(model); } }