// Generated by tools/generate_as_predefined.py.
// Edit the API export source or regenerate this file instead of editing by hand.
// AngelScript version: 2.38.0
// Exported symbols: 1410

typedef uint BITMAP_HANDLE;
typedef int CK_CLASSID;
typedef uint CK_ID;
typedef int CKAttributeCategory;
typedef int CKAttributeType;
typedef bool CKBOOL;
typedef uint8 CKBYTE;
typedef int8 CKCHAR;
typedef uint CKDWORD;
typedef int CKMessageType;
typedef int CKOperationType;
typedef int CKParameterType;
typedef uint CKSOUNDHANDLE;
typedef uint CKUINT;
typedef uint16 CKWORD;
typedef uint FONT_HANDLE;
typedef uint FUNC_PTR;
typedef uint GENERIC_HANDLE;
typedef uint INSTANCE_HANDLE;
typedef int intptr_t;
typedef int ptrdiff_t;
typedef uint size_t;
typedef uint uintptr_t;
typedef uint WIN_HANDLE;

enum CK_2DENTITY_FLAGS {
    CK_2DENTITY_BACKGROUND = 64,
    CK_2DENTITY_CLIPTOCAMERAVIEW = 1024,
    CK_2DENTITY_CLIPTOPARENT = 4096,
    CK_2DENTITY_NOTPICKABLE = 128,
    CK_2DENTITY_POSITIONCHANGED = 2,
    CK_2DENTITY_RATIOOFFSET = 256,
    CK_2DENTITY_RESERVED0 = 65536,
    CK_2DENTITY_RESERVED1 = 131072,
    CK_2DENTITY_RESERVED2 = 262144,
    CK_2DENTITY_RESERVED3 = 1,
    CK_2DENTITY_SIZECHANGED = 4,
    CK_2DENTITY_STICKBOTTOM = 4194304,
    CK_2DENTITY_STICKLEFT = 524288,
    CK_2DENTITY_STICKRIGHT = 1048576,
    CK_2DENTITY_STICKTOP = 2097152,
    CK_2DENTITY_UPDATEHOMOGENEOUSCOORD = 2048,
    CK_2DENTITY_USEHOMOGENEOUSCOORD = 512,
    CK_2DENTITY_USESIZE = 8,
    CK_2DENTITY_USESRCRECT = 32,
    CK_2DENTITY_VIRTOOLS = 16
}

enum CK_3DENTITY_FLAGS {
    CK_3DENTITY_CAMERAIGNOREASPECT = 8192,
    CK_3DENTITY_CHARACTERDOPROCESS = -2147483648,
    CK_3DENTITY_DISABLESKINPROCESS = 16384,
    CK_3DENTITY_DUMMY = 1,
    CK_3DENTITY_ENABLESKINOFFSET = 32768,
    CK_3DENTITY_FRAME = 2,
    CK_3DENTITY_HIERARCHICALOBSTACLE = 2048,
    CK_3DENTITY_IGNOREANIMATION = 1024,
    CK_3DENTITY_IKJOINTVALID = 262144,
    CK_3DENTITY_PARENTVALID = 131072,
    CK_3DENTITY_PLACEVALID = 65536,
    CK_3DENTITY_PORTAL = 524288,
    CK_3DENTITY_RESERVED0 = 32,
    CK_3DENTITY_TARGETCAMERA = 512,
    CK_3DENTITY_TARGETLIGHT = 256,
    CK_3DENTITY_UPDATELASTFRAME = 4096,
    CK_3DENTITY_ZORDERVALID = 1048576
}

enum CK_ANIMATION_FLAGS {
    CKANIMATION_ALIGNORIENTATION = 16,
    CKANIMATION_ALLOWTURN = 8,
    CKANIMATION_CANBEBREAK = 4,
    CKANIMATION_LINKTOFRAMERATE = 1,
    CKANIMATION_SECONDARYWARPER = 32,
    CKANIMATION_SECONDARY_DOWARP = 8388608,
    CKANIMATION_SECONDARY_LASTFRAME = 2097152,
    CKANIMATION_SECONDARY_LOOP = 524288,
    CKANIMATION_SECONDARY_LOOPNTIMES = 4194304,
    CKANIMATION_SECONDARY_ONESHOT = 262144,
    CKANIMATION_SECONDARY_PRESET = 33554432,
    CKANIMATION_SUBANIMSSORTED = 64,
    CKANIMATION_TRANSITION_FROMNOW = 64,
    CKANIMATION_TRANSITION_FROMWARPFROMCURRENT = 512,
    CKANIMATION_TRANSITION_LOOPIFEQUAL = 32768,
    CKANIMATION_TRANSITION_PRESET = 16777216,
    CKANIMATION_TRANSITION_TOSTART = 2048,
    CKANIMATION_TRANSITION_USEVELOCITY = 16384,
    CKANIMATION_TRANSITION_WARPTOBEST = 8192,
    CKANIMATION_TRANSITION_WARPTOSAMEPOS = 65536,
    CKANIMATION_TRANSITION_WARPTOSTART = 4096
}

enum CK_ANIMATION_TRANSITION_MODE {
    CK_TRANSITION_FROMANIMATION = 512,
    CK_TRANSITION_FROMNOW = 1,
    CK_TRANSITION_FROMWARPFROMCURRENT = 2,
    CK_TRANSITION_LOOPIFEQUAL = 128,
    CK_TRANSITION_TOSTART = 8,
    CK_TRANSITION_USEVELOCITY = 64,
    CK_TRANSITION_WARPBEST = 34,
    CK_TRANSITION_WARPMASK = 306,
    CK_TRANSITION_WARPSAMEPOS = 258,
    CK_TRANSITION_WARPSTART = 18,
    CK_TRANSITION_WARPTOBEST = 32,
    CK_TRANSITION_WARPTOSAMEPOS = 256,
    CK_TRANSITION_WARPTOSTART = 16
}

enum CK_ARRAYTYPE {
    CKARRAYTYPE_FLOAT = 2,
    CKARRAYTYPE_INT = 1,
    CKARRAYTYPE_OBJECT = 4,
    CKARRAYTYPE_PARAMETER = 5,
    CKARRAYTYPE_STRING = 3
}

enum CK_ATTRIBUT_FLAGS {
    CK_ATTRIBUT_CAN_DELETE = 2,
    CK_ATTRIBUT_CAN_MODIFY = 1,
    CK_ATTRIBUT_DONOTCOPY = 64,
    CK_ATTRIBUT_DONOTSAVE = 8,
    CK_ATTRIBUT_HIDDEN = 4,
    CK_ATTRIBUT_SYSTEM = 32,
    CK_ATTRIBUT_USER = 16
}

enum CK_BEHAVIOR_CALLBACKMASK {
    CKCB_BEHAVIORACTIVATESCRIPT = 16384,
    CKCB_BEHAVIORALL = -1,
    CKCB_BEHAVIORATTACH = 4,
    CKCB_BEHAVIORBASE = 14,
    CKCB_BEHAVIORCREATE = 64,
    CKCB_BEHAVIORDEACTIVATESCRIPT = 32768,
    CKCB_BEHAVIORDELETE = 2,
    CKCB_BEHAVIORDETACH = 8,
    CKCB_BEHAVIOREDITED = 1024,
    CKCB_BEHAVIOREDITIONS = 3072,
    CKCB_BEHAVIORLOAD = 512,
    CKCB_BEHAVIORNEWSCENE = 8192,
    CKCB_BEHAVIORPAUSE = 16,
    CKCB_BEHAVIORPOSTSAVE = 256,
    CKCB_BEHAVIORPPR = 304,
    CKCB_BEHAVIORPRESAVE = 1,
    CKCB_BEHAVIORREADSTATE = 4096,
    CKCB_BEHAVIORRESET = 4096,
    CKCB_BEHAVIORRESETINBREAKPOINT = 65536,
    CKCB_BEHAVIORRESUME = 32,
    CKCB_BEHAVIORSAVELOAD = 769,
    CKCB_BEHAVIORSETTINGSEDITED = 2048
}

enum CK_BEHAVIOR_FLAGS {
    CKBEHAVIOR_ACTIVATENEXTFRAME = 268435456,
    CKBEHAVIOR_ACTIVE = 1,
    CKBEHAVIOR_BUILDINGBLOCK = 32768,
    CKBEHAVIOR_COMPATIBLECLASSID = 16,
    CKBEHAVIOR_CUSTOMEDITDIALOG = 524288,
    CKBEHAVIOR_CUSTOMSETTINGSEDITDIALOG = 32,
    CKBEHAVIOR_DEACTIVATENEXTFRAME = 4194304,
    CKBEHAVIOR_EXECUTEDLASTFRAME = 2097152,
    CKBEHAVIOR_INTERNALLYCREATEDINPUTPARAMS = 67108864,
    CKBEHAVIOR_INTERNALLYCREATEDINPUTS = 16777216,
    CKBEHAVIOR_INTERNALLYCREATEDLOCALPARAMS = 1073741824,
    CKBEHAVIOR_INTERNALLYCREATEDOUTPUTPARAMS = 134217728,
    CKBEHAVIOR_INTERNALLYCREATEDOUTPUTS = 33554432,
    CKBEHAVIOR_LAUNCHEDONCE = -2147483648,
    CKBEHAVIOR_LOCKED = 536870912,
    CKBEHAVIOR_MESSAGERECEIVER = 131072,
    CKBEHAVIOR_MESSAGESENDER = 65536,
    CKBEHAVIOR_NONE = 0,
    CKBEHAVIOR_PRIORITY = 4,
    CKBEHAVIOR_RESERVED0 = 1048576,
    CKBEHAVIOR_RESERVED1 = 4,
    CKBEHAVIOR_RESERVED2 = 16,
    CKBEHAVIOR_RESETNEXTFRAME = 8388608,
    CKBEHAVIOR_SCRIPT = 2,
    CKBEHAVIOR_TARGETABLE = 262144,
    CKBEHAVIOR_TOPMOST = 16384,
    CKBEHAVIOR_USEFUNCTION = 8,
    CKBEHAVIOR_VARIABLEINPUTS = 128,
    CKBEHAVIOR_VARIABLEOUTPUTS = 256,
    CKBEHAVIOR_VARIABLEPARAMETERINPUTS = 512,
    CKBEHAVIOR_VARIABLEPARAMETEROUTPUTS = 1024,
    CKBEHAVIOR_WAITSFORMESSAGE = 64
}

enum CK_BEHAVIOR_RETURN {
    CKBR_ACTIVATENEXTFRAME = 1,
    CKBR_ATTACHFAILED = 2,
    CKBR_BEHAVIORERROR = 40962,
    CKBR_BEHAVIORERROR_RETRY = 40963,
    CKBR_BREAK = 10,
    CKBR_DETACHFAILED = 4,
    CKBR_GENERICERROR = 40960,
    CKBR_GENERICERROR_RETRY = 40961,
    CKBR_INFINITELOOP = 8,
    CKBR_LOCKED = 6,
    CKBR_OK = 0,
    CKBR_OWNERERROR = 40964,
    CKBR_OWNERERROR_RETRY = 40965,
    CKBR_PARAMETERERROR = 40968,
    CKBR_PARAMETERERROR_RETRY = 40969
}

enum CK_BEHAVIOR_TYPE {
    CKBEHAVIORTYPE_BASE = 0,
    CKBEHAVIORTYPE_BEHAVIOR = 4,
    CKBEHAVIORTYPE_SCRIPT = 1
}

enum CK_BEHAVIORPROTOTYPE_FLAGS {
    CK_BEHAVIORPROTOTYPE_HIDDEN = 2,
    CK_BEHAVIORPROTOTYPE_NORMAL = 1,
    CK_BEHAVIORPROTOTYPE_OBSOLETE = 4
}

enum CK_BINARYOPERATOR {
    CKADD = 1,
    CKDIV = 4,
    CKMUL = 3,
    CKSUB = 2
}

enum CK_BITMAP_SYSTEMCACHING {
    CKBITMAP_DISCARD = 2,
    CKBITMAP_PROCEDURAL = 0,
    CKBITMAP_VIDEOSHADOW = 1
}

enum CK_BITMAPREADER_ERROR {
    CKBITMAPERROR_FILECORRUPTED = 4,
    CKBITMAPERROR_GENERIC = 1,
    CKBITMAPERROR_READERROR = 2,
    CKBITMAPERROR_SAVEERROR = 5,
    CKBITMAPERROR_UNSUPPORTEDFILE = 3,
    CKBITMAPERROR_UNSUPPORTEDFUNCTION = 7,
    CKBITMAPERROR_UNSUPPORTEDSAVEFORMAT = 6
}

enum CK_COMPOPERATOR {
    CKEQUAL = 1,
    CKGREATER = 5,
    CKGREATEREQUAL = 6,
    CKLESSER = 3,
    CKLESSEREQUAL = 4,
    CKNOTEQUAL = 2
}

enum CK_CONFIG_FLAGS {
    CK_CONFIG_DISABLEDINPUT = 2,
    CK_CONFIG_DISABLEDSOUND = 1,
    CK_CONFIG_DOWARN = 4
}

enum CK_DATAREADER_FLAGS {
    CK_DATAREADER_FILELOAD = 1,
    CK_DATAREADER_FILESAVE = 2,
    CK_DATAREADER_MEMORYLOAD = 4,
    CK_DATAREADER_MEMORYSAVE = 8,
    CK_DATAREADER_STREAMFILE = 16,
    CK_DATAREADER_STREAMURL = 32,
    CK_DATAREADER_VXSTREAMLOAD = 64
}

enum CK_DEPENDENCIES_FLAGS {
    CK_DEPENDENCIES_CUSTOM = 0,
    CK_DEPENDENCIES_FULL = 2,
    CK_DEPENDENCIES_NONE = 1
}

enum CK_DEPENDENCIES_OPMODE {
    CK_DEPENDENCIES_BUILD = 5,
    CK_DEPENDENCIES_COPY = 1,
    CK_DEPENDENCIES_DELETE = 2,
    CK_DEPENDENCIES_OPERATIONMODE = 15,
    CK_DEPENDENCIES_REPLACE = 3,
    CK_DEPENDENCIES_SAVE = 4
}

enum CK_DESTROY_FLAGS {
    CK_DESTROY_FREEID = 1,
    CK_DESTROY_NONOTIFY = 2,
    CK_DESTROY_TEMPOBJECT = 3
}

enum CK_FILE_WRITEMODE {
    CKFILE_CHUNKCOMPRESSED_OLD = 1,
    CKFILE_EXTERNALTEXTURES_OLD = 2,
    CKFILE_FORVIEWER = 4,
    CKFILE_UNCOMPRESSED = 0,
    CKFILE_WHOLECOMPRESSED = 8
}

enum CK_FLOORGEOMETRY {
    CKFLOOR_BOX = 1,
    CKFLOOR_FACES = 0
}

enum CK_FLOORNEAREST {
    CKFLOOR_DOWN = 1,
    CKFLOOR_NOFLOOR = 0,
    CKFLOOR_UP = 2
}

enum CK_FO_OPTIONS {
    CK_FO_DEFAULT = 0,
    CK_FO_DONTLOADOBJECT = 3,
    CK_FO_RENAMEOBJECT = 1,
    CK_FO_REPLACEOBJECT = 2
}

enum CK_FRAMERATE_LIMITS {
    CK_BEHRATE_LIMIT = 4,
    CK_BEHRATE_MASK = 15,
    CK_BEHRATE_SYNC = 1,
    CK_FRAMERATE_FREE = 32,
    CK_FRAMERATE_LIMIT = 64,
    CK_FRAMERATE_MASK = 240,
    CK_FRAMERATE_SYNC = 16,
    CK_RATE_NOP = 0
}

enum CK_GEOMETRICPRECISION {
    CKCOLLISION_BOX = 1,
    CKCOLLISION_FACE = 2,
    CKCOLLISION_NONE = 0
}

enum CK_GRIDORIENTATION {
    CKGRID_FREE = 0,
    CKGRID_XY = 2,
    CKGRID_XZ = 1,
    CKGRID_YZ = 3
}

enum CK_IKJOINT_FLAGS {
    CK_IKJOINT_ACTIVE = 7,
    CK_IKJOINT_ACTIVE_X = 1,
    CK_IKJOINT_ACTIVE_Y = 2,
    CK_IKJOINT_ACTIVE_Z = 4,
    CK_IKJOINT_EASE = 1792,
    CK_IKJOINT_EASE_X = 256,
    CK_IKJOINT_EASE_Y = 512,
    CK_IKJOINT_EASE_Z = 1024,
    CK_IKJOINT_LIMIT = 112,
    CK_IKJOINT_LIMIT_X = 16,
    CK_IKJOINT_LIMIT_Y = 32,
    CK_IKJOINT_LIMIT_Z = 64
}

enum CK_IMPACTINFO {
    IMPACTNORMAL = 256,
    IMPACTPOINT = 128,
    IMPACTWORLDMATRIX = 64,
    OBSTACLETOUCHED = 1,
    OWNERENTITY = 512,
    SUBOBSTACLETOUCHED = 2,
    TOUCHEDFACE = 4,
    TOUCHEDVERTEX = 16,
    TOUCHINGFACE = 8,
    TOUCHINGVERTEX = 32
}

enum CK_LOAD_FLAGS {
    CK_LOAD_ANIMATION = 1,
    CK_LOAD_ASCHARACTER = 4,
    CK_LOAD_AS_DYNAMIC_OBJECT = 16,
    CK_LOAD_AUTOMATICMODE = 32,
    CK_LOAD_CHECKDEPENDENCIES = 128,
    CK_LOAD_CHECKDUPLICATES = 64,
    CK_LOAD_DEFAULT = 3,
    CK_LOAD_DODIALOG = 8,
    CK_LOAD_GEOMETRY = 2,
    CK_LOAD_ONLYBEHAVIORS = 256
}

enum CK_LOADMODE {
    CKLOAD_INVALID = -1,
    CKLOAD_OK = 0,
    CKLOAD_RENAME = 2,
    CKLOAD_REPLACE = 1,
    CKLOAD_USECURRENT = 3
}

enum CK_MESSAGE_SENDINGTYPE {
    CK_MESSAGE_BROADCAST = 1,
    CK_MESSAGE_GROUP = 3,
    CK_MESSAGE_SINGLE = 2
}

enum CK_MOUSEBUTTON {
    CK_MOUSEBUTTON_4 = 3,
    CK_MOUSEBUTTON_LEFT = 0,
    CK_MOUSEBUTTON_MIDDLE = 2,
    CK_MOUSEBUTTON_RIGHT = 1
}

enum CK_MOVIEREADER_ERROR {
    CKMOVIEERROR_FILECORRUPTED = 4,
    CKMOVIEERROR_GENERIC = 1,
    CKMOVIEERROR_READERROR = 2,
    CKMOVIEERROR_SAVEERROR = 5,
    CKMOVIEERROR_UNSUPPORTEDFILE = 3,
    CKMOVIEERROR_UNSUPPORTEDSAVEFORMAT = 6
}

enum CK_OBJECT_FLAGS {
    CKBEHAVIORLINK_ACTIVATEDLASTFRAME = 536870912,
    CKBEHAVIORLINK_RESERVED = 268435456,
    CK_BEHAVIORIO_ACTIVE = 1073741824,
    CK_BEHAVIORIO_IN = 268435456,
    CK_BEHAVIORIO_OUT = 536870912,
    CK_OBJECT_APPDATA = 16384,
    CK_OBJECT_BEHAVIORLINKMASK = 805306368,
    CK_OBJECT_DYNAMIC = 264,
    CK_OBJECT_FREEID = 8,
    CK_OBJECT_HIERACHICALHIDE = 512,
    CK_OBJECT_INTERFACEMARK = 4,
    CK_OBJECT_INTERFACEOBJ = 1,
    CK_OBJECT_IOMASK = -268435456,
    CK_OBJECT_IOTYPEMASK = 805306368,
    CK_OBJECT_LOADSKIPBEOBJECT = 65536,
    CK_OBJECT_NAMESHARED = 128,
    CK_OBJECT_NOTTOBEDELETED = 8192,
    CK_OBJECT_NOTTOBELISTEDANDSAVED = 35,
    CK_OBJECT_NOTTOBESAVED = 32,
    CK_OBJECT_ONLYFORFILEREFERENCE = 4096,
    CK_OBJECT_PARAMMASK = 264241152,
    CK_OBJECT_PRIVATE = 2,
    CK_OBJECT_SINGLEACTIVITY = 32768,
    CK_OBJECT_TEMPMARKER = 2048,
    CK_OBJECT_TOBEDELETED = 16,
    CK_OBJECT_UPTODATE = 1024,
    CK_OBJECT_VISIBLE = 64,
    CK_PARAMETERIN_DISABLED = 16777216,
    CK_PARAMETERIN_SHARED = 67108864,
    CK_PARAMETERIN_THIS = 33554432,
    CK_PARAMETEROUT_DELETEAFTERUSE = 134217728,
    CK_PARAMETEROUT_PARAMOP = 8388608,
    CK_PARAMETEROUT_SETTINGS = 4194304
}

enum CK_OBJECT_SHOWOPTION {
    CKHIDE = 0,
    CKHIERARCHICALHIDE = 2,
    CKSHOW = 1
}

enum CK_OBJECTANIMATION_FLAGS {
    CK_OBJECTANIMATION_IGNOREMORPH = 32,
    CK_OBJECTANIMATION_IGNOREPOS = 4,
    CK_OBJECTANIMATION_IGNOREROT = 8,
    CK_OBJECTANIMATION_IGNORESCALE = 16,
    CK_OBJECTANIMATION_IGNORESCALEROT = 64,
    CK_OBJECTANIMATION_MERGED = 128,
    CK_OBJECTANIMATION_RESERVED = -2147483648,
    CK_OBJECTANIMATION_WARPER = 1073741824
}

enum CK_OBJECTCREATION_OPTIONS {
    CK_OBJECTCREATION_ACTIVATE = 32,
    CK_OBJECTCREATION_ASK = 4,
    CK_OBJECTCREATION_DYNAMIC = 16,
    CK_OBJECTCREATION_FLAGSMASK = 15,
    CK_OBJECTCREATION_NONAMECHECK = 0,
    CK_OBJECTCREATION_NONAMECOPY = 64,
    CK_OBJECTCREATION_RENAME = 2,
    CK_OBJECTCREATION_REPLACE = 1,
    CK_OBJECTCREATION_USECURRENT = 3
}

enum CK_PARAMETER_FLAGS {
    CKPARAMETER_IN = 1,
    CKPARAMETER_LOCAL = 0,
    CKPARAMETER_OUT = 2,
    CKPARAMETER_SETTING = 3
}

enum CK_PARAMETERTYPE_FLAGS {
    CKPARAMETERTYPE_ENUMS = 32,
    CKPARAMETERTYPE_FLAGS = 8,
    CKPARAMETERTYPE_HIDDEN = 4,
    CKPARAMETERTYPE_NOENDIANCONV = 128,
    CKPARAMETERTYPE_RESERVED = 2,
    CKPARAMETERTYPE_STRUCT = 16,
    CKPARAMETERTYPE_USER = 64,
    CKPARAMETERTYPE_VARIABLESIZE = 1
}

enum CK_PATCH_FLAGS {
    CK_PATCH_QUAD = 4,
    CK_PATCH_TRI = 3
}

enum CK_PATCHMESH_FLAGS {
    CK_PATCHMESH_AUTOSMOOTH = 8,
    CK_PATCHMESH_BUILDNORMALS = 2,
    CK_PATCHMESH_MATERIALSUPTODATE = 4,
    CK_PATCHMESH_UPTODATE = 1
}

enum CK_PATHMANAGER_CATEGORY {
    BITMAP_PATH_IDX = 0,
    DATA_PATH_IDX = 1,
    SOUND_PATH_IDX = 2
}

enum CK_PLUGIN_TYPE {
    CKPLUGIN_BEHAVIOR_DLL = 4,
    CKPLUGIN_BITMAP_READER = 0,
    CKPLUGIN_EXTENSION_DLL = 7,
    CKPLUGIN_MANAGER_DLL = 3,
    CKPLUGIN_MODEL_READER = 2,
    CKPLUGIN_MOVIE_READER = 6,
    CKPLUGIN_RENDERENGINE_DLL = 5,
    CKPLUGIN_SOUND_READER = 1
}

enum CK_PROFILE_CATEGORY {
    CK_PROFILE_ANIMATIONTIME = 6,
    CK_PROFILE_IKTIME = 7,
    CK_PROFILE_RENDERTIME = 3
}

enum CK_RAYINTERSECTION {
    CKRAYINTERSECTION_DEFAULT = 0,
    CKRAYINTERSECTION_FIRSTCONTACT = 4,
    CKRAYINTERSECTION_IGNOREALPHA = 2,
    CKRAYINTERSECTION_SEGMENT = 1
}

enum CK_RENDER_FLAGS {
    CK_RENDER_BACKGROUNDSPRITES = 1,
    CK_RENDER_CLEARBACK = 32,
    CK_RENDER_CLEARSTENCIL = 64,
    CK_RENDER_CLEARVIEWPORT = 256,
    CK_RENDER_CLEARZ = 16,
    CK_RENDER_DEFAULTSETTINGS = 255,
    CK_RENDER_DOBACKTOFRONT = 128,
    CK_RENDER_DONOTUPDATEEXTENTS = 2048,
    CK_RENDER_FOREGROUNDSPRITES = 2,
    CK_RENDER_OPTIONSMASK = 65535,
    CK_RENDER_PLAYERCONTEXT = 65536,
    CK_RENDER_SKIP3D = 4096,
    CK_RENDER_SKIPDRAWSCENE = 1024,
    CK_RENDER_USECAMERARATIO = 8,
    CK_RENDER_USECURRENTSETTINGS = 0,
    CK_RENDER_WAITVBL = 512
}

enum CK_SCENE_FLAGS {
    CK_SCENE_LAUNCHEDONCE = 1,
    CK_SCENE_USEENVIRONMENTSETTINGS = 2
}

enum CK_SCENEOBJECT_FLAGS {
    CK_SCENEOBJECT_ACTIVE = 8,
    CK_SCENEOBJECT_INTERNAL_IC = 128,
    CK_SCENEOBJECT_START_ACTIVATE = 1,
    CK_SCENEOBJECT_START_DEACTIVATE = 16,
    CK_SCENEOBJECT_START_LEAVE = 32,
    CK_SCENEOBJECT_START_RESET = 64
}

enum CK_SCENEOBJECTACTIVITY_FLAGS {
    CK_SCENEOBJECTACTIVITY_ACTIVATE = 1,
    CK_SCENEOBJECTACTIVITY_DEACTIVATE = 2,
    CK_SCENEOBJECTACTIVITY_DONOTHING = 3,
    CK_SCENEOBJECTACTIVITY_SCENEDEFAULT = 0
}

enum CK_SCENEOBJECTRESET_FLAGS {
    CK_SCENEOBJECTRESET_DONOTHING = 2,
    CK_SCENEOBJECTRESET_RESET = 1,
    CK_SCENEOBJECTRESET_SCENEDEFAULT = 0
}

enum CK_SECONDARYANIMATION_FLAGS {
    CKSECONDARYANIMATION_DOWARP = 128,
    CKSECONDARYANIMATION_FROMANIMATION = 256,
    CKSECONDARYANIMATION_LASTFRAME = 32,
    CKSECONDARYANIMATION_LOOP = 8,
    CKSECONDARYANIMATION_LOOPNTIMES = 64,
    CKSECONDARYANIMATION_ONESHOT = 4
}

enum CK_SETOPERATOR {
    CKINTERSECTION = 2,
    CKSUBTRACTION = 3,
    CKUNION = 1
}

enum CK_SOUND_SAVEOPTIONS {
    CKSOUND_EXTERNAL = 0,
    CKSOUND_INCLUDEORIGINALFILE = 1,
    CKSOUND_USEGLOBAL = 2
}

enum CK_SOUNDMANAGER_CAPS {
    CK_LISTENERSETTINGS_ALL = 133169152,
    CK_LISTENERSETTINGS_DISTANCE = 1048576,
    CK_LISTENERSETTINGS_DOPPLER = 2097152,
    CK_LISTENERSETTINGS_EQ = 8388608,
    CK_LISTENERSETTINGS_GAIN = 16777216,
    CK_LISTENERSETTINGS_PRIORITY = 33554432,
    CK_LISTENERSETTINGS_ROLLOFF = 4194304,
    CK_LISTENERSETTINGS_SOFTWARESOURCES = 67108864,
    CK_LISTENERSETTINGS_UNITS = 4194304,
    CK_SOUNDMANAGER_ALL = 7,
    CK_SOUNDMANAGER_OCCLUSION = 2,
    CK_SOUNDMANAGER_ONFLYTYPE = 1,
    CK_SOUNDMANAGER_REFLECTION = 4,
    CK_WAVESOUND_3DSETTINGS_ALL = 1044480,
    CK_WAVESOUND_3DSETTINGS_CONE = 4096,
    CK_WAVESOUND_3DSETTINGS_DISTANCEFACTOR = 16384,
    CK_WAVESOUND_3DSETTINGS_DOPPLERFACTOR = 32768,
    CK_WAVESOUND_3DSETTINGS_HEADRELATIVE = 524288,
    CK_WAVESOUND_3DSETTINGS_MINMAXDISTANCE = 8192,
    CK_WAVESOUND_3DSETTINGS_ORIENTATION = 262144,
    CK_WAVESOUND_3DSETTINGS_POSITION = 65536,
    CK_WAVESOUND_3DSETTINGS_VELOCITY = 131072,
    CK_WAVESOUND_SETTINGS_ALL = 496,
    CK_WAVESOUND_SETTINGS_EQUALIZATION = 32,
    CK_WAVESOUND_SETTINGS_GAIN = 16,
    CK_WAVESOUND_SETTINGS_PAN = 256,
    CK_WAVESOUND_SETTINGS_PITCH = 64,
    CK_WAVESOUND_SETTINGS_PRIORITY = 128
}

enum CK_SOUNDREADER_ERROR {
    CKSOUND_READER_EOF = -2,
    CKSOUND_READER_GENERICERR = -1,
    CKSOUND_READER_NO_DATA_READY = -3,
    CKSOUND_READER_OK = 0
}

enum CK_TEXTURE_SAVEOPTIONS {
    CKTEXTURE_EXTERNAL = 1,
    CKTEXTURE_IMAGEFORMAT = 2,
    CKTEXTURE_INCLUDEORIGINALFILE = 4,
    CKTEXTURE_RAWDATA = 0,
    CKTEXTURE_USEGLOBAL = 3
}

enum CK_UICALLBACK_REASON {
    CKUIM_CHOOSEOBJECT = 7,
    CKUIM_COPYOBJECTS = 10,
    CKUIM_CREATEINTERFACECHUNK = 9,
    CKUIM_DEBUGMESSAGESEND = 2,
    CKUIM_DOMESSAGELOOP = 14,
    CKUIM_EDITOBJECT = 8,
    CKUIM_LOADSAVEPROGRESS = 1,
    CKUIM_OUTTOCONSOLE = 3,
    CKUIM_OUTTOINFOBAR = 4,
    CKUIM_PASTEOBJECTS = 11,
    CKUIM_REFRESHBUILDINGBLOCKS = 13,
    CKUIM_SCENEADDEDTOLEVEL = 12,
    CKUIM_SELECT = 6,
    CKUIM_SHOWSETUP = 5
}

enum CK_VIRTOOLS_VERSION {
    CK_VIRTOOLS_CREATION = 1,
    CK_VIRTOOLS_CREA_EDU = 7,
    CK_VIRTOOLS_CREA_EVAL = 3,
    CK_VIRTOOLS_CREA_NFR = 5,
    CK_VIRTOOLS_CREA_TB = 9,
    CK_VIRTOOLS_DEV = 0,
    CK_VIRTOOLS_DEV_EDU = 6,
    CK_VIRTOOLS_DEV_EVAL = 2,
    CK_VIRTOOLS_DEV_NCV = 10,
    CK_VIRTOOLS_DEV_NFR = 4,
    CK_VIRTOOLS_DEV_SE = 11,
    CK_VIRTOOLS_DEV_TB = 8,
    CK_VIRTOOLS_MAXVERSION = 12
}

enum CK_WAVESOUND_LOCKMODE {
    CK_WAVESOUND_LOCKENTIREBUFFER = 2,
    CK_WAVESOUND_LOCKFROMWRITE = 1
}

enum CK_WAVESOUND_STATE {
    CK_WAVESOUND_ALLTYPE = 7,
    CK_WAVESOUND_COULDBERESTARTED = 128,
    CK_WAVESOUND_FADE = 96,
    CK_WAVESOUND_FADEIN = 32,
    CK_WAVESOUND_FADEOUT = 64,
    CK_WAVESOUND_FILESTREAMED = 8192,
    CK_WAVESOUND_LOOPED = 8,
    CK_WAVESOUND_MONO = 2048,
    CK_WAVESOUND_NODUPLICATE = 256,
    CK_WAVESOUND_OCCLUSIONS = 512
}

enum CK_WAVESOUND_TYPE {
    CK_WAVESOUND_BACKGROUND = 1,
    CK_WAVESOUND_CONE = 3,
    CK_WAVESOUND_POINT = 2
}

enum CKANIMATION_CONTROLLER {
    CKANIMATION_BEZIERPOS_CONTROL = -1843742719,
    CKANIMATION_BEZIERSCL_CONTROL = 413877252,
    CKANIMATION_CONTROLLER_MASK = 255,
    CKANIMATION_CONTROLLER_MORPH = 16,
    CKANIMATION_CONTROLLER_POS = 1,
    CKANIMATION_CONTROLLER_ROT = 2,
    CKANIMATION_CONTROLLER_SCL = 4,
    CKANIMATION_CONTROLLER_SCLAXIS = 8,
    CKANIMATION_LINPOS_CONTROL = 1669088001,
    CKANIMATION_LINROT_CONTROL = 1240285186,
    CKANIMATION_LINSCLAXIS_CONTROL = 790629128,
    CKANIMATION_LINSCL_CONTROL = 1699363332,
    CKANIMATION_MORPH_CONTROL = 1938061328,
    CKANIMATION_TCBPOS_CONTROL = 880691713,
    CKANIMATION_TCBROT_CONTROL = 1169500674,
    CKANIMATION_TCBSCLAXIS_CONTROL = 844716296,
    CKANIMATION_TCBSCL_CONTROL = 458512644
}

enum CKAXIS {
    CKAXIS_X = 0,
    CKAXIS_Y = 1,
    CKAXIS_Z = 2
}

enum CKBEZIERKEY_FLAGS {
    BEZIER_KEY_AUTOSMOOTH = 1,
    BEZIER_KEY_FAST = 8,
    BEZIER_KEY_LINEAR = 2,
    BEZIER_KEY_SLOW = 16,
    BEZIER_KEY_STEP = 4,
    BEZIER_KEY_TANGENTS = 32
}

enum CKDEBUG_STATE {
    CKDEBUG_BEHEXECUTE = 1,
    CKDEBUG_BEHEXECUTEDONE = 2,
    CKDEBUG_NOP = 0,
    CKDEBUG_SCRIPTEXECUTEDONE = 4
}

enum CKERROR {
    CKERR_ALREADYFULLSCREEN = -58,
    CKERR_ALREADYPRESENT = -17,
    CKERR_ALREADYREGISTREDDLL = -30,
    CKERR_BEHAVIORADDDENIEDBYCB = -51,
    CKERR_CANCELLED = -59,
    CKERR_CANCREATERENDERCONTEXT = -14,
    CKERR_CANTWRITETOFILE = -50,
    CKERR_DINPUTDISABLED = -47,
    CKERR_FILECRCERROR = -57,
    CKERR_INCOMPATIBLECLASSID = -52,
    CKERR_INCOMPATIBLEPARAMETERS = -40,
    CKERR_INVALIDANIMATION = -123,
    CKERR_INVALIDCONDSOLEWINDOW = -35,
    CKERR_INVALIDDLL = -31,
    CKERR_INVALIDFILE = -22,
    CKERR_INVALIDGUID = -48,
    CKERR_INVALIDINDEX = -122,
    CKERR_INVALIDKINEMATICCHAIN = -36,
    CKERR_INVALIDMESSAGE = -25,
    CKERR_INVALIDOBJECT = -34,
    CKERR_INVALIDOPERATION = -4,
    CKERR_INVALIDPARAMETER = -1,
    CKERR_INVALIDPARAMETERTYPE = -2,
    CKERR_INVALIDPLUGIN = -23,
    CKERR_INVALIDPROTOTYPE = -28,
    CKERR_INVALIDRENDERCONTEXT = -18,
    CKERR_INVALIDSIZE = -3,
    CKERR_MANAGERALREADYEXISTS = -53,
    CKERR_NOANIMATIONKEY = -121,
    CKERR_NOCURRENTLEVEL = -45,
    CKERR_NODLLFOUND = -29,
    CKERR_NOJOYSTICK = -39,
    CKERR_NOKEYBOARD = -37,
    CKERR_NOLEVEL = -13,
    CKERR_NOLOADPLUGINS = -20,
    CKERR_NOMOUSE = -38,
    CKERR_NORENDERENGINE = -44,
    CKERR_NOSAVEPLUGINS = -21,
    CKERR_NOTENOUGHDISKPLACE = -49,
    CKERR_NOTFOUND = -11,
    CKERR_NOTIFICATIONNOTHANDLED = -16,
    CKERR_NOTIMPLEMENTED = -7,
    CKERR_NOTINITIALIZED = -24,
    CKERR_OBSOLETEVIRTOOLS = -56,
    CKERR_OPERATIONNOTIMPLEMENTED = -5,
    CKERR_OUTOFMEMORY = -6,
    CKERR_PAUSED = -54,
    CKERR_PLUGINSMISSING = -55,
    CKERR_RENDERCONTEXTINACTIVE = -19,
    CKERR_SOUNDDISABLED = -46,
    CK_OK = 0
}

enum CKGRID_LAYER_FORMAT {
    CKGRID_LAYER_FORMAT_NORMAL = 0
}

enum CKJOY {
    CKJOY_1 = 0,
    CKJOY_2 = 1,
    CKJOY_3 = 2,
    CKJOY_4 = 3,
    CKMAX_JOY = 4
}

enum CKKEYBOARD {
    CKKEY_0 = 11,
    CKKEY_1 = 2,
    CKKEY_2 = 3,
    CKKEY_3 = 4,
    CKKEY_4 = 5,
    CKKEY_5 = 6,
    CKKEY_6 = 7,
    CKKEY_7 = 8,
    CKKEY_8 = 9,
    CKKEY_9 = 10,
    CKKEY_A = 30,
    CKKEY_ADD = 78,
    CKKEY_APOSTROPHE = 40,
    CKKEY_APPS = 221,
    CKKEY_AT = 145,
    CKKEY_AX = 150,
    CKKEY_B = 48,
    CKKEY_BACK = 14,
    CKKEY_BACKSLASH = 43,
    CKKEY_C = 46,
    CKKEY_CAPITAL = 58,
    CKKEY_CIRCUMFLEX = 144,
    CKKEY_COLON = 146,
    CKKEY_COMMA = 51,
    CKKEY_CONVERT = 121,
    CKKEY_D = 32,
    CKKEY_DECIMAL = 83,
    CKKEY_DELETE = 211,
    CKKEY_DIVIDE = 181,
    CKKEY_DOWN = 208,
    CKKEY_E = 18,
    CKKEY_END = 207,
    CKKEY_EQUALS = 13,
    CKKEY_ESCAPE = 1,
    CKKEY_F = 33,
    CKKEY_F1 = 59,
    CKKEY_F10 = 68,
    CKKEY_F11 = 87,
    CKKEY_F12 = 88,
    CKKEY_F13 = 100,
    CKKEY_F14 = 101,
    CKKEY_F15 = 102,
    CKKEY_F2 = 60,
    CKKEY_F3 = 61,
    CKKEY_F4 = 62,
    CKKEY_F5 = 63,
    CKKEY_F6 = 64,
    CKKEY_F7 = 65,
    CKKEY_F8 = 66,
    CKKEY_F9 = 67,
    CKKEY_G = 34,
    CKKEY_GRAVE = 41,
    CKKEY_H = 35,
    CKKEY_HOME = 199,
    CKKEY_I = 23,
    CKKEY_INSERT = 210,
    CKKEY_J = 36,
    CKKEY_K = 37,
    CKKEY_KANA = 112,
    CKKEY_KANJI = 148,
    CKKEY_L = 38,
    CKKEY_LBRACKET = 26,
    CKKEY_LCONTROL = 29,
    CKKEY_LEFT = 203,
    CKKEY_LMENU = 56,
    CKKEY_LSHIFT = 42,
    CKKEY_LWIN = 219,
    CKKEY_M = 50,
    CKKEY_MINUS = 12,
    CKKEY_MULTIPLY = 55,
    CKKEY_N = 49,
    CKKEY_NEXT = 209,
    CKKEY_NOCONVERT = 123,
    CKKEY_NUMLOCK = 69,
    CKKEY_NUMPAD0 = 82,
    CKKEY_NUMPAD1 = 79,
    CKKEY_NUMPAD2 = 80,
    CKKEY_NUMPAD3 = 81,
    CKKEY_NUMPAD4 = 75,
    CKKEY_NUMPAD5 = 76,
    CKKEY_NUMPAD6 = 77,
    CKKEY_NUMPAD7 = 71,
    CKKEY_NUMPAD8 = 72,
    CKKEY_NUMPAD9 = 73,
    CKKEY_NUMPADCOMMA = 179,
    CKKEY_NUMPADENTER = 156,
    CKKEY_NUMPADEQUALS = 141,
    CKKEY_O = 24,
    CKKEY_P = 25,
    CKKEY_PERIOD = 52,
    CKKEY_PRIOR = 201,
    CKKEY_Q = 16,
    CKKEY_R = 19,
    CKKEY_RBRACKET = 27,
    CKKEY_RCONTROL = 157,
    CKKEY_RETURN = 28,
    CKKEY_RIGHT = 205,
    CKKEY_RMENU = 184,
    CKKEY_RSHIFT = 54,
    CKKEY_RWIN = 220,
    CKKEY_S = 31,
    CKKEY_SCROLL = 70,
    CKKEY_SEMICOLON = 39,
    CKKEY_SLASH = 53,
    CKKEY_SPACE = 57,
    CKKEY_STOP = 149,
    CKKEY_SUBTRACT = 74,
    CKKEY_SYSRQ = 183,
    CKKEY_T = 20,
    CKKEY_TAB = 15,
    CKKEY_U = 22,
    CKKEY_UNDERLINE = 147,
    CKKEY_UNLABELED = 151,
    CKKEY_UP = 200,
    CKKEY_V = 47,
    CKKEY_W = 17,
    CKKEY_X = 45,
    CKKEY_Y = 21,
    CKKEY_YEN = 125,
    CKKEY_Z = 44
}

enum CKLOCKFLAGS {
    CK_LOCK_DEFAULT = 0,
    CK_LOCK_DISCARD = 2,
    CK_LOCK_NOOVERWRITE = 1
}

enum CKMANAGER_FUNCTIONS {
    CKMANAGER_FUNC_OnCKEnd = 128,
    CKMANAGER_FUNC_OnCKInit = 64,
    CKMANAGER_FUNC_OnCKPause = 512,
    CKMANAGER_FUNC_OnCKPlay = 256,
    CKMANAGER_FUNC_OnCKPostReset = 131072,
    CKMANAGER_FUNC_OnCKReset = 16384,
    CKMANAGER_FUNC_OnPostCopy = 2097152,
    CKMANAGER_FUNC_OnPostRender = 8388608,
    CKMANAGER_FUNC_OnPostSpriteRender = 16777216,
    CKMANAGER_FUNC_OnPreCopy = 1048576,
    CKMANAGER_FUNC_OnPreRender = 4194304,
    CKMANAGER_FUNC_OnSequenceAddedToScene = 262144,
    CKMANAGER_FUNC_OnSequenceDeleted = 2,
    CKMANAGER_FUNC_OnSequenceRemovedFromScene = 524288,
    CKMANAGER_FUNC_OnSequenceToBeDeleted = 1,
    CKMANAGER_FUNC_PostClearAll = 32,
    CKMANAGER_FUNC_PostLaunchScene = 8192,
    CKMANAGER_FUNC_PostLoad = 32768,
    CKMANAGER_FUNC_PostProcess = 8,
    CKMANAGER_FUNC_PostSave = 65536,
    CKMANAGER_FUNC_PreClearAll = 16,
    CKMANAGER_FUNC_PreLaunchScene = 4096,
    CKMANAGER_FUNC_PreLoad = 1024,
    CKMANAGER_FUNC_PreProcess = 4,
    CKMANAGER_FUNC_PreSave = 2048
}

enum CKMANAGER_FUNCTIONS_INDEX {
    CKMANAGER_INDEX_OnCKEnd = 7,
    CKMANAGER_INDEX_OnCKInit = 6,
    CKMANAGER_INDEX_OnCKPause = 9,
    CKMANAGER_INDEX_OnCKPlay = 8,
    CKMANAGER_INDEX_OnCKPostReset = 17,
    CKMANAGER_INDEX_OnCKReset = 14,
    CKMANAGER_INDEX_OnPostCopy = 21,
    CKMANAGER_INDEX_OnPostRender = 23,
    CKMANAGER_INDEX_OnPostSpriteRender = 24,
    CKMANAGER_INDEX_OnPreCopy = 20,
    CKMANAGER_INDEX_OnPreRender = 22,
    CKMANAGER_INDEX_OnSequenceAddedToScene = 18,
    CKMANAGER_INDEX_OnSequenceDeleted = 1,
    CKMANAGER_INDEX_OnSequenceRemovedFromScene = 19,
    CKMANAGER_INDEX_OnSequenceToBeDeleted = 0,
    CKMANAGER_INDEX_PostClearAll = 5,
    CKMANAGER_INDEX_PostLaunchScene = 13,
    CKMANAGER_INDEX_PostLoad = 15,
    CKMANAGER_INDEX_PostProcess = 3,
    CKMANAGER_INDEX_PostSave = 16,
    CKMANAGER_INDEX_PreClearAll = 4,
    CKMANAGER_INDEX_PreLaunchScene = 12,
    CKMANAGER_INDEX_PreLoad = 10,
    CKMANAGER_INDEX_PreProcess = 2,
    CKMANAGER_INDEX_PreSave = 11
}

enum CKRST_2DCAPS {
    CKRST_2DCAPS_3D = 2,
    CKRST_2DCAPS_GDI = 4,
    CKRST_2DCAPS_WINDOWED = 1
}

enum CKRST_BLENDCAPS {
    CKRST_BLENDCAPS_BOTHINVSRCALPHA = 4096,
    CKRST_BLENDCAPS_BOTHSRCALPHA = 2048,
    CKRST_BLENDCAPS_DESTALPHA = 64,
    CKRST_BLENDCAPS_DESTCOLOR = 256,
    CKRST_BLENDCAPS_INVDESTALPHA = 128,
    CKRST_BLENDCAPS_INVDESTCOLOR = 512,
    CKRST_BLENDCAPS_INVSRCALPHA = 32,
    CKRST_BLENDCAPS_INVSRCCOLOR = 8,
    CKRST_BLENDCAPS_ONE = 2,
    CKRST_BLENDCAPS_SRCALPHA = 16,
    CKRST_BLENDCAPS_SRCALPHASAT = 1024,
    CKRST_BLENDCAPS_SRCCOLOR = 4,
    CKRST_BLENDCAPS_ZERO = 1
}

enum CKRST_CMPCAPS {
    CKRST_CMPCAPS_ALWAYS = 128,
    CKRST_CMPCAPS_EQUAL = 4,
    CKRST_CMPCAPS_GREATER = 16,
    CKRST_CMPCAPS_GREATEREQUAL = 64,
    CKRST_CMPCAPS_LESS = 2,
    CKRST_CMPCAPS_LESSEQUAL = 8,
    CKRST_CMPCAPS_NEVER = 1,
    CKRST_CMPCAPS_NOTEQUAL = 32
}

enum CKRST_DPFLAGS {
    CKRST_DP_CL_V = 4,
    CKRST_DP_CL_VC = 20,
    CKRST_DP_CL_VCST = 564,
    CKRST_DP_CL_VCT = 532,
    CKRST_DP_DIFFUSE = 16,
    CKRST_DP_DOCLIP = 4,
    CKRST_DP_LIGHT = 2,
    CKRST_DP_MATRIXPAL = 33554432,
    CKRST_DP_SPECULAR = 32,
    CKRST_DP_STAGES0 = 512,
    CKRST_DP_STAGES1 = 1024,
    CKRST_DP_STAGES2 = 2048,
    CKRST_DP_STAGES3 = 4096,
    CKRST_DP_STAGES4 = 8192,
    CKRST_DP_STAGES5 = 16384,
    CKRST_DP_STAGES6 = 32768,
    CKRST_DP_STAGES7 = 65536,
    CKRST_DP_STAGESMASK = 130560,
    CKRST_DP_TRANSFORM = 1,
    CKRST_DP_TR_CL_V = 5,
    CKRST_DP_TR_CL_VC = 21,
    CKRST_DP_TR_CL_VCS = 53,
    CKRST_DP_TR_CL_VCST = 565,
    CKRST_DP_TR_CL_VCT = 533,
    CKRST_DP_TR_CL_VNT = 519,
    CKRST_DP_TR_V = 1,
    CKRST_DP_TR_VC = 17,
    CKRST_DP_TR_VCS = 49,
    CKRST_DP_TR_VCST = 561,
    CKRST_DP_TR_VCT = 529,
    CKRST_DP_TR_VNT = 515,
    CKRST_DP_V = 0,
    CKRST_DP_VBUFFER = 268435456,
    CKRST_DP_VC = 16,
    CKRST_DP_VCST = 560,
    CKRST_DP_VCT = 528,
    CKRST_DP_WEIGHTMASK = 32505856,
    CKRST_DP_WEIGHTS1 = 1048576,
    CKRST_DP_WEIGHTS2 = 2097152,
    CKRST_DP_WEIGHTS3 = 4194304,
    CKRST_DP_WEIGHTS4 = 8388608,
    CKRST_DP_WEIGHTS5 = 16777216
}

enum CKRST_MISCCAPS {
    CKRST_MISCCAPS_CONFORMANT = 8,
    CKRST_MISCCAPS_CULLCCW = 64,
    CKRST_MISCCAPS_CULLCW = 32,
    CKRST_MISCCAPS_CULLNONE = 16,
    CKRST_MISCCAPS_MASKZ = 2
}

enum CKRST_RASTERCAPS {
    CKRST_RASTERCAPS_ANISOTROPY = 131072,
    CKRST_RASTERCAPS_DITHER = 1,
    CKRST_RASTERCAPS_FOGPIXEL = 256,
    CKRST_RASTERCAPS_FOGRANGE = 65536,
    CKRST_RASTERCAPS_FOGVERTEX = 128,
    CKRST_RASTERCAPS_SUBPIXEL = 96,
    CKRST_RASTERCAPS_WBUFFER = 262144,
    CKRST_RASTERCAPS_WFOG = 1048576,
    CKRST_RASTERCAPS_ZBIAS = 16384,
    CKRST_RASTERCAPS_ZBUFFERLESSHSR = 32768,
    CKRST_RASTERCAPS_ZFOG = 2097152,
    CKRST_RASTERCAPS_ZTEST = 16
}

enum CKRST_RSTFAMILY {
    CKRST_ALCHEMY = 5,
    CKRST_DIRECTX = 0,
    CKRST_OPENGL = 1,
    CKRST_SOFT = 3,
    CKRST_UNKNOWN = 4
}

enum CKRST_SPECIFICCAPS {
    CKRST_SPECIFICCAPS_AUTGENMIPMAP = 262144,
    CKRST_SPECIFICCAPS_BLENDTEXTEFFECT = 32768,
    CKRST_SPECIFICCAPS_CANDOINDEXBUFFER = 65536,
    CKRST_SPECIFICCAPS_CANDOVERTEXBUFFER = 4,
    CKRST_SPECIFICCAPS_CLAMPEDGEALPHA = 2,
    CKRST_SPECIFICCAPS_COPYTEXTURE = 128,
    CKRST_SPECIFICCAPS_DX5 = 256,
    CKRST_SPECIFICCAPS_DX7 = 512,
    CKRST_SPECIFICCAPS_DX8 = 1024,
    CKRST_SPECIFICCAPS_DX9 = 2048,
    CKRST_SPECIFICCAPS_EXPLICITSWAPCHAIN = 524288,
    CKRST_SPECIFICCAPS_GLATTENUATIONMODEL = 8,
    CKRST_SPECIFICCAPS_HARDWARE = 32,
    CKRST_SPECIFICCAPS_HARDWARETL = 64,
    CKRST_SPECIFICCAPS_HW_SKINNING = 131072,
    CKRST_SPECIFICCAPS_POINTSPRITES = 8192,
    CKRST_SPECIFICCAPS_SOFTWARE = 16,
    CKRST_SPECIFICCAPS_SPRITEASTEXTURES = 1,
    CKRST_SPECIFICCAPS_SUPPORTSHADERS = 4096,
    CKRST_SPECIFICCAPS_VERTEXCOLORABGR = 16384
}

enum CKRST_STENCILCAPS {
    CKRST_STENCILCAPS_DECR = 128,
    CKRST_STENCILCAPS_DECRSAT = 16,
    CKRST_STENCILCAPS_INCR = 64,
    CKRST_STENCILCAPS_INCRSAT = 8,
    CKRST_STENCILCAPS_INVERT = 32,
    CKRST_STENCILCAPS_KEEP = 1,
    CKRST_STENCILCAPS_REPLACE = 4,
    CKRST_STENCILCAPS_ZERO = 2
}

enum CKRST_TADDRESSCAPS {
    CKRST_TADDRESSCAPS_BORDER = 8,
    CKRST_TADDRESSCAPS_CLAMP = 4,
    CKRST_TADDRESSCAPS_INDEPENDENTUV = 16,
    CKRST_TADDRESSCAPS_MIRROR = 2,
    CKRST_TADDRESSCAPS_WRAP = 1
}

enum CKRST_TEXTUREARG {
    CKRST_TA_ALPHAREPLICATE = 32,
    CKRST_TA_COMPLEMENT = 16,
    CKRST_TA_CURRENT = 1,
    CKRST_TA_DIFFUSE = 0,
    CKRST_TA_SPECULAR = 4,
    CKRST_TA_TEMP = 5,
    CKRST_TA_TEXTURE = 2,
    CKRST_TA_TFACTOR = 3
}

enum CKRST_TEXTURECAPS {
    CKRST_TEXTURECAPS_ALPHA = 4,
    CKRST_TEXTURECAPS_CONDITIONALNONPOW2 = 256,
    CKRST_TEXTURECAPS_CUBEMAP = 2048,
    CKRST_TEXTURECAPS_NONPOW2 = 16384,
    CKRST_TEXTURECAPS_PERSPECTIVE = 1,
    CKRST_TEXTURECAPS_POW2 = 2,
    CKRST_TEXTURECAPS_PROJECTED = 1024,
    CKRST_TEXTURECAPS_SQUAREONLY = 32,
    CKRST_TEXTURECAPS_VOLUMEMAP = 8192
}

enum CKRST_TEXTUREOP {
    CKRST_TOP_ADD = 7,
    CKRST_TOP_ADDSIGNED = 8,
    CKRST_TOP_ADDSIGNED2X = 9,
    CKRST_TOP_ADDSMOOTH = 11,
    CKRST_TOP_BLENDCURRENTALPHA = 16,
    CKRST_TOP_BLENDDIFFUSEALPHA = 12,
    CKRST_TOP_BLENDFACTORALPHA = 14,
    CKRST_TOP_BLENDTEXTUREALPHA = 13,
    CKRST_TOP_BLENDTEXTUREALPHAPM = 15,
    CKRST_TOP_BUMPENVMAP = 22,
    CKRST_TOP_BUMPENVMAPLUMINANCE = 23,
    CKRST_TOP_DISABLE = 1,
    CKRST_TOP_DOTPRODUCT3 = 24,
    CKRST_TOP_LERP = 26,
    CKRST_TOP_MODULATE = 4,
    CKRST_TOP_MODULATE2X = 5,
    CKRST_TOP_MODULATE4X = 6,
    CKRST_TOP_MODULATEALPHA_ADDCOLOR = 18,
    CKRST_TOP_MODULATECOLOR_ADDALPHA = 19,
    CKRST_TOP_MODULATEINVALPHA_ADDCOLOR = 20,
    CKRST_TOP_MODULATEINVCOLOR_ADDALPHA = 21,
    CKRST_TOP_MULTIPLYADD = 25,
    CKRST_TOP_PREMODULATE = 17,
    CKRST_TOP_SELECTARG1 = 2,
    CKRST_TOP_SELECTARG2 = 3,
    CKRST_TOP_SUBTRACT = 10
}

enum CKRST_TEXTURESTAGESTATETYPE {
    CKRST_TSS_AARG1 = 5,
    CKRST_TSS_AARG2 = 6,
    CKRST_TSS_ADDRESS = 12,
    CKRST_TSS_ADDRESSU = 13,
    CKRST_TSS_ADDRESSV = 14,
    CKRST_TSS_ADDRESW = 25,
    CKRST_TSS_ALPHAARG0 = 27,
    CKRST_TSS_AOP = 4,
    CKRST_TSS_ARG1 = 2,
    CKRST_TSS_ARG2 = 3,
    CKRST_TSS_BORDERCOLOR = 15,
    CKRST_TSS_BUMPENVLOFFSET = 23,
    CKRST_TSS_BUMPENVLSCALE = 22,
    CKRST_TSS_BUMPENVMAT00 = 7,
    CKRST_TSS_BUMPENVMAT01 = 8,
    CKRST_TSS_BUMPENVMAT10 = 9,
    CKRST_TSS_BUMPENVMAT11 = 10,
    CKRST_TSS_COLORARG0 = 26,
    CKRST_TSS_MAGFILTER = 16,
    CKRST_TSS_MAXANISOTROPY = 21,
    CKRST_TSS_MAXMIPMLEVEL = 20,
    CKRST_TSS_MAXSTATE = 41,
    CKRST_TSS_MINFILTER = 17,
    CKRST_TSS_MIPMAPLODBIAS = 19,
    CKRST_TSS_OP = 1,
    CKRST_TSS_RESULTARG0 = 28,
    CKRST_TSS_STAGEBLEND = 40,
    CKRST_TSS_TEXCOORDINDEX = 11,
    CKRST_TSS_TEXTUREMAPBLEND = 39,
    CKRST_TSS_TEXTURETRANSFORMFLAGS = 24
}

enum CKRST_TEXTURETRANSFORMFLAGS {
    CKRST_TTF_COUNT1 = 1,
    CKRST_TTF_COUNT2 = 2,
    CKRST_TTF_COUNT3 = 3,
    CKRST_TTF_COUNT4 = 4,
    CKRST_TTF_NONE = 0,
    CKRST_TTF_PROJECTED = 256
}

enum CKRST_TFILTERCAPS {
    CKRST_TFILTERCAPS_ANISOTROPIC = 1024,
    CKRST_TFILTERCAPS_LINEAR = 2,
    CKRST_TFILTERCAPS_LINEARMIPLINEAR = 32,
    CKRST_TFILTERCAPS_LINEARMIPNEAREST = 16,
    CKRST_TFILTERCAPS_MIPLINEAR = 8,
    CKRST_TFILTERCAPS_MIPNEAREST = 4,
    CKRST_TFILTERCAPS_NEAREST = 1
}

enum CKRST_VTXCAPS {
    CKRST_VTXCAPS_DIRECTIONALLIGHTS = 8,
    CKRST_VTXCAPS_LOCALVIEWER = 32,
    CKRST_VTXCAPS_MATERIALSOURCE = 2,
    CKRST_VTXCAPS_POSITIONALLIGHTS = 16,
    CKRST_VTXCAPS_TEXGEN = 1,
    CKRST_VTXCAPS_VERTEXFOG = 4
}

enum CKSPRITETEXT_ALIGNMENT {
    CKSPRITETEXT_BOTTOM = 16,
    CKSPRITETEXT_CENTER = 1,
    CKSPRITETEXT_HCENTER = 64,
    CKSPRITETEXT_LEFT = 2,
    CKSPRITETEXT_RIGHT = 4,
    CKSPRITETEXT_TOP = 8,
    CKSPRITETEXT_VCENTER = 32
}

enum CKSUPPORT {
    CKSUPPORT_BACK = 2,
    CKSUPPORT_CENTER = 1,
    CKSUPPORT_FRONT = 0
}

enum CKVB_STATE {
    CK_VB_FAILED = 2,
    CK_VB_LOST = 1,
    CK_VB_OK = 0
}

enum DCCallMode {
    DC_CALL_C_ARM64 = 22,
    DC_CALL_C_ARM_ARM = 14,
    DC_CALL_C_ARM_ARMHF = 30,
    DC_CALL_C_ARM_ARM_EABI = 10,
    DC_CALL_C_ARM_THUMB = 15,
    DC_CALL_C_ARM_THUMB_EABI = 11,
    DC_CALL_C_DEFAULT = 0,
    DC_CALL_C_DEFAULT_THIS = 99,
    DC_CALL_C_ELLIPSIS = 100,
    DC_CALL_C_ELLIPSIS_VARARGS = 101,
    DC_CALL_C_MIPS32_EABI = 12,
    DC_CALL_C_MIPS32_O32 = 16,
    DC_CALL_C_MIPS32_PSPSDK = 12,
    DC_CALL_C_MIPS64_N32 = 17,
    DC_CALL_C_MIPS64_N64 = 18,
    DC_CALL_C_PPC32_DARWIN = 9,
    DC_CALL_C_PPC32_LINUX = 13,
    DC_CALL_C_PPC32_OSX = 9,
    DC_CALL_C_PPC32_SYSV = 13,
    DC_CALL_C_PPC64 = 23,
    DC_CALL_C_PPC64_LINUX = 23,
    DC_CALL_C_SPARC32 = 20,
    DC_CALL_C_SPARC64 = 21,
    DC_CALL_C_X64_SYSV = 8,
    DC_CALL_C_X64_SYSV_THIS = 8,
    DC_CALL_C_X64_WIN64 = 7,
    DC_CALL_C_X64_WIN64_THIS = 70,
    DC_CALL_C_X86_CDECL = 1,
    DC_CALL_C_X86_PLAN9 = 19,
    DC_CALL_C_X86_WIN32_FAST_GNU = 4,
    DC_CALL_C_X86_WIN32_FAST_MS = 3,
    DC_CALL_C_X86_WIN32_STD = 2,
    DC_CALL_C_X86_WIN32_THIS_GNU = 1,
    DC_CALL_C_X86_WIN32_THIS_MS = 5,
    DC_CALL_SYS_DEFAULT = 200,
    DC_CALL_SYS_PPC32 = 210,
    DC_CALL_SYS_PPC64 = 211,
    DC_CALL_SYS_X64_SYSCALL_SYSV = 204,
    DC_CALL_SYS_X86_INT80H_BSD = 202,
    DC_CALL_SYS_X86_INT80H_LINUX = 201
}

enum DCError {
    DC_ERROR_NONE = 0,
    DC_ERROR_UNSUPPORTED_MODE = -1
}

enum ParamKind {
    Input = 0,
    Local = 5,
    OperationIn = 6,
    OperationOut = 7,
    Output = 1,
    Pin = 2,
    Pout = 3,
    Setting = 4,
    Standalone = 8
}

enum ProcessorsType {
    PROC_ATHLON = 9,
    PROC_K63DNOW = 3,
    PROC_PENTIUM = 0,
    PROC_PENTIUM2 = 4,
    PROC_PENTIUM2CELERON = 6,
    PROC_PENTIUM2XEON = 5,
    PROC_PENTIUM3 = 7,
    PROC_PENTIUM4 = 10,
    PROC_PENTIUMMMX = 1,
    PROC_PENTIUMPRO = 2,
    PROC_PPC_ARM = 11,
    PROC_PPC_G3 = 13,
    PROC_PPC_G4 = 14,
    PROC_PPC_MIPS = 12,
    PROC_PSX2 = 15,
    PROC_UNKNOWN = -1
}

enum QuatPart {
    Quat_W = 3,
    Quat_X = 0,
    Quat_Y = 1,
    Quat_Z = 2
}

enum VX_EFFECT {
    VXEFFECT_2TEXTURES = 5,
    VXEFFECT_3TEXTURES = 6,
    VXEFFECT_BUMPENV = 3,
    VXEFFECT_DP3 = 4,
    VXEFFECT_MASK = 15,
    VXEFFECT_NONE = 0,
    VXEFFECT_TEXGEN = 1,
    VXEFFECT_TEXGENREF = 2
}

enum VX_EFFECTCALLBACK_RETVAL {
    VXEFFECTRETVAL_SKIPALL = -1,
    VXEFFECTRETVAL_SKIPALLTEX = 2,
    VXEFFECTRETVAL_SKIPNONE = 0,
    VXEFFECTRETVAL_SKIPTEXMAT = 1
}

enum VX_EFFECTTEXGEN {
    VXEFFECT_TGCHROME = 3,
    VXEFFECT_TGCUBEMAP_NORMALS = 33,
    VXEFFECT_TGCUBEMAP_POSITIONS = 34,
    VXEFFECT_TGCUBEMAP_REFLECT = 31,
    VXEFFECT_TGCUBEMAP_SKYMAP = 32,
    VXEFFECT_TGNONE = 0,
    VXEFFECT_TGPLANAR = 4,
    VXEFFECT_TGREFLECT = 2,
    VXEFFECT_TGTRANSFORM = 1
}

enum VX_LOCKFLAGS {
    VX_LOCK_DEFAULT = 0,
    VX_LOCK_DISCARD = 4,
    VX_LOCK_READONLY = 2,
    VX_LOCK_WRITEONLY = 1
}

enum VX_MOVEABLE_FLAGS {
    VX_MOVEABLE_BOXVALID = 16384,
    VX_MOVEABLE_CHARACTERRENDERED = 536870912,
    VX_MOVEABLE_DONTUPDATEFROMPARENT = 8388608,
    VX_MOVEABLE_EXTENTSUPTODATE = 32,
    VX_MOVEABLE_HASMOVED = 131072,
    VX_MOVEABLE_HIERARCHICALHIDE = 268435456,
    VX_MOVEABLE_INDIRECTMATRIX = 16777216,
    VX_MOVEABLE_INVERSEWORLDMATVALID = 4194304,
    VX_MOVEABLE_NOZBUFFERTEST = 2097152,
    VX_MOVEABLE_NOZBUFFERWRITE = 524288,
    VX_MOVEABLE_PICKABLE = 1,
    VX_MOVEABLE_RENDERCHANNELS = 8,
    VX_MOVEABLE_RENDERFIRST = 1048576,
    VX_MOVEABLE_RENDERLAST = 65536,
    VX_MOVEABLE_RESERVED2 = 1073741824,
    VX_MOVEABLE_STENCILONLY = 67108864,
    VX_MOVEABLE_UPTODATE = 4,
    VX_MOVEABLE_USERBOX = 16,
    VX_MOVEABLE_VISIBLE = 2,
    VX_MOVEABLE_WORLDALIGNED = 262144,
    VX_MOVEABLE_ZBUFONLY = 33554432
}

enum VX_OSINFO {
    VXOS_LINUXX86 = 11,
    VXOS_MACOS9 = 8,
    VXOS_MACOSX = 9,
    VXOS_PSX2 = 15,
    VXOS_UNKNOWN = 0,
    VXOS_WIN2K = 6,
    VXOS_WIN31 = 1,
    VXOS_WIN95 = 2,
    VXOS_WIN98 = 3,
    VXOS_WINCE1 = 12,
    VXOS_WINCE2 = 13,
    VXOS_WINCE3 = 14,
    VXOS_WINME = 4,
    VXOS_WINNT4 = 5,
    VXOS_WINXP = 7,
    VXOS_XBOX = 10
}

enum VX_PIXELFORMAT {
    UNKNOWN_PF = 0,
    _16_ABGR1555 = 17,
    _16_ABGR4444 = 18,
    _16_ARGB1555 = 6,
    _16_ARGB4444 = 7,
    _16_BGR555 = 16,
    _16_BGR565 = 15,
    _16_L6V5U5 = 26,
    _16_RGB555 = 5,
    _16_RGB565 = 4,
    _16_V8U8 = 24,
    _24_BGR888 = 14,
    _24_RGB888 = 3,
    _32_ABGR8888 = 10,
    _32_ARGB8888 = 1,
    _32_BGR888 = 13,
    _32_BGRA8888 = 12,
    _32_RGB888 = 2,
    _32_RGBA8888 = 11,
    _32_V16U16 = 25,
    _32_X8L8V8U8 = 27,
    _8_ARGB2222 = 9,
    _8_RGB332 = 8,
    DXT1 = 19,
    DXT2 = 20,
    DXT3 = 21,
    DXT4 = 22,
    DXT5 = 23
}

enum VX_RESIZE_FLAGS {
    VX_RESIZE_NOMOVE = 1,
    VX_RESIZE_NOSIZE = 2
}

enum VXBLEND_MODE {
    VXBLEND_BOTHINVSRCALPHA = 13,
    VXBLEND_BOTHSRCALPHA = 12,
    VXBLEND_DESTALPHA = 7,
    VXBLEND_DESTCOLOR = 9,
    VXBLEND_INVDESTALPHA = 8,
    VXBLEND_INVDESTCOLOR = 10,
    VXBLEND_INVSRCALPHA = 6,
    VXBLEND_INVSRCCOLOR = 4,
    VXBLEND_MASK = 15,
    VXBLEND_ONE = 2,
    VXBLEND_SRCALPHA = 5,
    VXBLEND_SRCALPHASAT = 11,
    VXBLEND_SRCCOLOR = 3,
    VXBLEND_ZERO = 1
}

enum VXBLENDOP {
    VXBLENDOP_ADD = 1,
    VXBLENDOP_MASK = 7,
    VXBLENDOP_MAX = 5,
    VXBLENDOP_MIN = 4,
    VXBLENDOP_REVSUBTRACT = 3,
    VXBLENDOP_SUBTRACT = 2
}

enum VxBpps {
    VX_BPP1 = 16384,
    VX_BPP16 = 1024,
    VX_BPP2 = 8192,
    VX_BPP24 = 512,
    VX_BPP32 = 256,
    VX_BPP4 = 4096,
    VX_BPP8 = 2048
}

enum VXBUFFER_TYPE {
    VXBUFFER_BACKBUFFER = 1,
    VXBUFFER_STENCILBUFFER = 4,
    VXBUFFER_ZBUFFER = 2
}

enum VXCHANNEL_FLAGS {
    VXCHANNEL_ACTIVE = 1,
    VXCHANNEL_LAST = 134217728,
    VXCHANNEL_MONO = 33554432,
    VXCHANNEL_NOTLIT = 16777216,
    VXCHANNEL_RESERVED1 = 67108864,
    VXCHANNEL_SAMEUV = 8388608
}

enum VXCLIP_BOXFLAGS {
    VXCLIP_BOXBACK = 4,
    VXCLIP_BOXBOTTOM = 2,
    VXCLIP_BOXFRONT = 32,
    VXCLIP_BOXLEFT = 1,
    VXCLIP_BOXRIGHT = 8,
    VXCLIP_BOXTOP = 16
}

enum VXCLIP_FLAGS {
    VXCLIP_ALL = 1008,
    VXCLIP_BACK = 512,
    VXCLIP_BACKFRONT = 768,
    VXCLIP_BOTTOM = 128,
    VXCLIP_FRONT = 256,
    VXCLIP_LEFT = 16,
    VXCLIP_RIGHT = 32,
    VXCLIP_TOP = 64
}

enum VXCMPFUNC {
    VXCMP_ALWAYS = 8,
    VXCMP_EQUAL = 3,
    VXCMP_GREATER = 5,
    VXCMP_GREATEREQUAL = 7,
    VXCMP_LESS = 2,
    VXCMP_LESSEQUAL = 4,
    VXCMP_MASK = 15,
    VXCMP_NEVER = 1,
    VXCMP_NOTEQUAL = 6
}

enum VXCULL {
    VXCULL_CCW = 3,
    VXCULL_CW = 2,
    VXCULL_MASK = 3,
    VXCULL_NONE = 1
}

enum VXCURSOR_POINTER {
    VXCURSOR_BUSY = 2,
    VXCURSOR_LINKSELECT = 4,
    VXCURSOR_MOVE = 3,
    VXCURSOR_NORMALSELECT = 1
}

enum VXFILL_MODE {
    VXFILL_MASK = 3,
    VXFILL_POINT = 1,
    VXFILL_SOLID = 3,
    VXFILL_WIREFRAME = 2
}

enum VXFOG_MODE {
    VXFOG_EXP = 1,
    VXFOG_EXP2 = 2,
    VXFOG_LINEAR = 3,
    VXFOG_NONE = 0
}

enum VXLIGHT_TYPE {
    VX_LIGHTDIREC = 3,
    VX_LIGHTPARA = 4,
    VX_LIGHTPOINT = 1,
    VX_LIGHTSPOT = 2
}

enum VXMESH_FLAGS {
    VXMESH_ALLFLAGS = 8385439,
    VXMESH_BOUNDINGUPTODATE = 1,
    VXMESH_BWEIGHTS_CHANGED = 33554432,
    VXMESH_COLOR_CHANGED = 65536,
    VXMESH_FORCETRANSPARENCY = 4096,
    VXMESH_GENNORMALS = 524288,
    VXMESH_HASTRANSPARENCY = 16,
    VXMESH_HINTDYNAMIC = 262144,
    VXMESH_MONOMATERIAL = 8388608,
    VXMESH_NORMAL_CHANGED = 32768,
    VXMESH_OPTIMIZED = 4,
    VXMESH_PM_BUILDNORM = 16777216,
    VXMESH_POS_CHANGED = 131072,
    VXMESH_PRELITMODE = 128,
    VXMESH_PROCEDURALPOS = 2097152,
    VXMESH_PROCEDURALUV = 1048576,
    VXMESH_RENDERCHANNELS = 8,
    VXMESH_STRIPIFY = 4194304,
    VXMESH_TRANSPARENCYUPTODATE = 8192,
    VXMESH_UV_CHANGED = 16384,
    VXMESH_VISIBLE = 2,
    VXMESH_WRAPU = 256,
    VXMESH_WRAPV = 512
}

enum VXMESH_LITMODE {
    VX_LITMESH = 1,
    VX_PRELITMESH = 0
}

enum VxMMF_Error {
    VxMMF_FileMapping = 2,
    VxMMF_FileOpen = 1,
    VxMMF_MapView = 3,
    VxMMF_NoError = 0
}

enum VXPRIMITIVETYPE {
    VX_LINELIST = 2,
    VX_LINESTRIP = 3,
    VX_POINTLIST = 1,
    VX_TRIANGLEFAN = 6,
    VX_TRIANGLELIST = 4,
    VX_TRIANGLESTRIP = 5
}

enum VXRECT_INTERSECTION {
    ALLINSIDE = 1,
    ALLOUTSIDE = 0,
    PARTINSIDE = 2
}

enum VXRENDERSTATETYPE {
    VXRENDERSTATE_ALPHABLENDENABLE = 27,
    VXRENDERSTATE_ALPHAFUNC = 25,
    VXRENDERSTATE_ALPHAREF = 24,
    VXRENDERSTATE_ALPHATESTENABLE = 15,
    VXRENDERSTATE_AMBIENT = 139,
    VXRENDERSTATE_AMBIENTFROMVERTEX = 147,
    VXRENDERSTATE_ANTIALIAS = 2,
    VXRENDERSTATE_ANTIALIASEDLINEENABLE = 176,
    VXRENDERSTATE_BLENDFACTOR = 193,
    VXRENDERSTATE_BLENDOP = 171,
    VXRENDERSTATE_BLENDOPALPHA = 209,
    VXRENDERSTATE_CCW_STENCILFAIL = 186,
    VXRENDERSTATE_CCW_STENCILFUNC = 189,
    VXRENDERSTATE_CCW_STENCILPASS = 188,
    VXRENDERSTATE_CCW_STENCILZFAIL = 187,
    VXRENDERSTATE_CLIPPING = 136,
    VXRENDERSTATE_CLIPPLANEENABLE = 152,
    VXRENDERSTATE_COLORVERTEX = 141,
    VXRENDERSTATE_COLORWRITEENABLE = 168,
    VXRENDERSTATE_COLORWRITEENABLE1 = 190,
    VXRENDERSTATE_COLORWRITEENABLE2 = 191,
    VXRENDERSTATE_COLORWRITEENABLE3 = 192,
    VXRENDERSTATE_CULLMODE = 22,
    VXRENDERSTATE_DEPTHBIAS = 195,
    VXRENDERSTATE_DESTBLEND = 20,
    VXRENDERSTATE_DESTBLENDALPHA = 208,
    VXRENDERSTATE_DIFFUSEFROMVERTEX = 145,
    VXRENDERSTATE_DITHERENABLE = 26,
    VXRENDERSTATE_EDGEANTIALIAS = 40,
    VXRENDERSTATE_EMISSIVEFROMVERTEX = 148,
    VXRENDERSTATE_FILLMODE = 8,
    VXRENDERSTATE_FOGCOLOR = 34,
    VXRENDERSTATE_FOGDENSITY = 38,
    VXRENDERSTATE_FOGENABLE = 28,
    VXRENDERSTATE_FOGEND = 37,
    VXRENDERSTATE_FOGPIXELMODE = 35,
    VXRENDERSTATE_FOGSTART = 36,
    VXRENDERSTATE_FOGVERTEXMODE = 140,
    VXRENDERSTATE_FORCE_DWORD = 2147483647,
    VXRENDERSTATE_INDEXVBLENDENABLE = 167,
    VXRENDERSTATE_INVERSEWINDING = 254,
    VXRENDERSTATE_LIGHTING = 137,
    VXRENDERSTATE_LINEPATTERN = 10,
    VXRENDERSTATE_LOCALVIEWER = 142,
    VXRENDERSTATE_MAXSTATE = 256,
    VXRENDERSTATE_NORMALIZENORMALS = 143,
    VXRENDERSTATE_POINTSCALEENABLE = 157,
    VXRENDERSTATE_POINTSCALE_A = 158,
    VXRENDERSTATE_POINTSCALE_B = 159,
    VXRENDERSTATE_POINTSCALE_C = 160,
    VXRENDERSTATE_POINTSIZE = 154,
    VXRENDERSTATE_POINTSIZE_MAX = 166,
    VXRENDERSTATE_POINTSIZE_MIN = 155,
    VXRENDERSTATE_POINTSPRITEENABLE = 156,
    VXRENDERSTATE_RANGEFOGENABLE = 48,
    VXRENDERSTATE_SCISSORTESTENABLE = 174,
    VXRENDERSTATE_SEPARATEALPHABLENDENABLE = 206,
    VXRENDERSTATE_SHADEMODE = 9,
    VXRENDERSTATE_SLOPESCALEDEPTHBIAS = 175,
    VXRENDERSTATE_SOFTWAREVPROCESSING = 153,
    VXRENDERSTATE_SPECULARENABLE = 29,
    VXRENDERSTATE_SPECULARFROMVERTEX = 146,
    VXRENDERSTATE_SRCBLEND = 19,
    VXRENDERSTATE_SRCBLENDALPHA = 207,
    VXRENDERSTATE_SRGBWRITEENABLE = 194,
    VXRENDERSTATE_STENCILENABLE = 52,
    VXRENDERSTATE_STENCILFAIL = 53,
    VXRENDERSTATE_STENCILFUNC = 56,
    VXRENDERSTATE_STENCILMASK = 58,
    VXRENDERSTATE_STENCILPASS = 55,
    VXRENDERSTATE_STENCILREF = 57,
    VXRENDERSTATE_STENCILWRITEMASK = 59,
    VXRENDERSTATE_STENCILZFAIL = 54,
    VXRENDERSTATE_TEXTUREFACTOR = 60,
    VXRENDERSTATE_TEXTUREPERSPECTIVE = 4,
    VXRENDERSTATE_TEXTURETARGET = 253,
    VXRENDERSTATE_TWOSIDEDSTENCILMODE = 185,
    VXRENDERSTATE_VERTEXBLEND = 151,
    VXRENDERSTATE_WRAP0 = 128,
    VXRENDERSTATE_WRAP1 = 129,
    VXRENDERSTATE_WRAP2 = 130,
    VXRENDERSTATE_WRAP3 = 131,
    VXRENDERSTATE_WRAP4 = 132,
    VXRENDERSTATE_WRAP5 = 133,
    VXRENDERSTATE_WRAP6 = 134,
    VXRENDERSTATE_WRAP7 = 135,
    VXRENDERSTATE_ZBIAS = 47,
    VXRENDERSTATE_ZENABLE = 7,
    VXRENDERSTATE_ZFUNC = 23,
    VXRENDERSTATE_ZWRITEENABLE = 14
}

enum VXSHADE_MODE {
    VXSHADE_FLAT = 1,
    VXSHADE_GOURAUD = 2,
    VXSHADE_MASK = 3,
    VXSHADE_PHONG = 3
}

enum VxShadeType {
    FlatShading = 1,
    GouraudShading = 2,
    MaterialDefault = 4,
    PhongShading = 3,
    WireFrame = 0
}

enum VXSPRITE3D_TYPE {
    VXSPRITE3D_BILLBOARD = 0,
    VXSPRITE3D_ORIENTABLE = 3,
    VXSPRITE3D_XROTATE = 1,
    VXSPRITE3D_YROTATE = 2
}

enum VXSPRITE_RENDEROPTIONS {
    VXSPRITE_ALPHATEST = 1,
    VXSPRITE_BLEND = 2,
    VXSPRITE_FILTER = 8,
    VXSPRITE_MODULATE = 4,
    VXSPRITE_NONE = 0
}

enum VXSPRITE_RENDEROPTIONS2 {
    VXSPRITE2_DISABLE_AA_CORRECTION = 1,
    VXSPRITE2_NONE = 0
}

enum VXSTENCILOP {
    VXSTENCILOP_DECR = 8,
    VXSTENCILOP_DECRSAT = 5,
    VXSTENCILOP_INCR = 7,
    VXSTENCILOP_INCRSAT = 4,
    VXSTENCILOP_INVERT = 6,
    VXSTENCILOP_KEEP = 1,
    VXSTENCILOP_MASK = 15,
    VXSTENCILOP_REPLACE = 3,
    VXSTENCILOP_ZERO = 2
}

enum VXTEXCOORD_GEN {
    VXTEXCOORD_MASK = 3,
    VXTEXCOORD_PROJNORMAL = 1,
    VXTEXCOORD_PROJPOSITION = 2,
    VXTEXCOORD_PROJREFLECT = 3,
    VXTEXCOORD_SKIP = 0
}

enum VXTEXT_ALIGNMENT {
    VXTEXT_BOTTOM = 16,
    VXTEXT_CENTER = 1,
    VXTEXT_HCENTER = 64,
    VXTEXT_LEFT = 2,
    VXTEXT_RIGHT = 4,
    VXTEXT_TOP = 8,
    VXTEXT_VCENTER = 32
}

enum VXTEXTURE_ADDRESSMODE {
    VXTEXTURE_ADDRESSBORDER = 4,
    VXTEXTURE_ADDRESSCLAMP = 3,
    VXTEXTURE_ADDRESSMASK = 7,
    VXTEXTURE_ADDRESSMIRROR = 2,
    VXTEXTURE_ADDRESSMIRRORONCE = 5,
    VXTEXTURE_ADDRESSWRAP = 1
}

enum VXTEXTURE_BLENDMODE {
    VXTEXTUREBLEND_ADD = 8,
    VXTEXTUREBLEND_COPY = 7,
    VXTEXTUREBLEND_DECAL = 1,
    VXTEXTUREBLEND_DECALALPHA = 3,
    VXTEXTUREBLEND_DECALMASK = 5,
    VXTEXTUREBLEND_DOTPRODUCT3 = 9,
    VXTEXTUREBLEND_MASK = 15,
    VXTEXTUREBLEND_MAX = 10,
    VXTEXTUREBLEND_MODULATE = 2,
    VXTEXTUREBLEND_MODULATEALPHA = 4,
    VXTEXTUREBLEND_MODULATEMASK = 6
}

enum VXTEXTURE_FILTERMODE {
    VXTEXTUREFILTER_ANISOTROPIC = 7,
    VXTEXTUREFILTER_LINEAR = 2,
    VXTEXTUREFILTER_LINEARMIPLINEAR = 6,
    VXTEXTUREFILTER_LINEARMIPNEAREST = 5,
    VXTEXTUREFILTER_MASK = 15,
    VXTEXTUREFILTER_MIPLINEAR = 4,
    VXTEXTUREFILTER_MIPNEAREST = 3,
    VXTEXTUREFILTER_NEAREST = 1
}

enum VXTEXTURE_WRAPMODE {
    VXTEXTUREWRAP_NONE = 0,
    VXTEXTUREWRAP_U = 1,
    VXTEXTUREWRAP_UV = 3,
    VXTEXTUREWRAP_V = 2
}

enum VXVERTEXBLENDFLAGS {
    VXVBLEND_0WEIGHTS = 256,
    VXVBLEND_1WEIGHTS = 1,
    VXVBLEND_2WEIGHTS = 2,
    VXVBLEND_3WEIGHTS = 3,
    VXVBLEND_DISABLE = 0,
    VXVBLEND_TWEENING = 255
}

enum VXWRAP_MODE {
    VXWRAP_MASK = 15,
    VXWRAP_S = 4,
    VXWRAP_T = 8,
    VXWRAP_U = 1,
    VXWRAP_V = 2
}


class any {
    any& opAssign(any&in);
    bool retrieve(double&out) const;
    bool retrieve(int64&out) const;
    void store(const double&in);
    void store(const int64&in);
}

class AsyncTask<T> {
    bool Cancel();
    string Error() const;
    bool IsCancelled() const;
    bool IsCompleted() const;
    bool IsDone() const;
    bool IsFailed() const;
    bool IsPending() const;
    bool IsRunning() const;
}

class BBBridge {
    BBPrototype@ At(int index) const;
    int Count() const;
    BBPrototype@ Find(const string&in query, int occurrence = 0) const;
    BBPrototype@[]@ FindAll(const string&in query = "") const;
    BBPrototype@ Prototype(CKGUID guid) const;
    BBPrototype@ Prototype(const string&in name) const;
    BBDecl@ Require(CKGUID guid) const;
    BBDecl@ Require(const string&in query) const;
}

class BBCallBuilder {
    BBCallBuilder@ Operation(BBSlot@ pin, ParamOp@ operation);
    BBCallBuilder@ Owner(CKBeObject@ owner);
    BBResult@ Run(BBSlot@ input);
    BBResult@ Run(int inputIndex = 0);
    BBCallBuilder@ Set(BBSlot@ pin, CKObject@ value);
    BBCallBuilder@ Set(BBSlot@ pin, ParamValue@ value);
    BBCallBuilder@ Set(BBSlot@ pin, bool value);
    BBCallBuilder@ Set(BBSlot@ pin, const string&in value);
    BBCallBuilder@ Set(BBSlot@ pin, float value);
    BBCallBuilder@ Set(BBSlot@ pin, int value);
    BBCallBuilder@ Set(int pinIndex, ParamValue@ value);
    BBCallBuilder@ SetOperation(int pinIndex, ParamOp@ operation);
    BBCallBuilder@ SetSource(int pinIndex, ParamRef@ source);
    BBCallBuilder@ Source(BBSlot@ pin, ParamRef@ source);
    BBCallBuilder@ Target(CKBeObject@ target);
}

class BBConfig {
    BBDecl@ Decl() const;
    string Describe() const;
    bool Destroy();
    BBInstance@ EnsureSpawned(const CKBehaviorContext&in ctx);
    BBInstance@ EnsureStarted(const CKBehaviorContext&in ctx);
    string Error() const;
    string Explain() const;
    BBSlot@ Input(const string&in name, int occurrence = 0);
    BBInstance@ Instance() const;
    bool IsValid() const;
    BBSlot@ Local(const string&in name, int occurrence = 0);
    BBConfig@ Operation(BBSlot@ pin, ParamOp@ operation);
    BBSlot@ Output(const string&in name, int occurrence = 0);
    bool OutputActive(BBSlot@ output);
    BBConfig@ Owner(CKBeObject@ owner);
    BBSlot@ Pin(const string&in name, int occurrence = 0);
    ParamRef@ PinRef(BBSlot@ pin);
    BBSlot@ Pout(const string&in name, int occurrence = 0);
    ParamRef@ PoutRef(BBSlot@ pout);
    bool Raise(const CKBehaviorContext&in ctx) const;
    BBConfig@ Set(BBSlot@ pin, CKObject@ value);
    BBConfig@ Set(BBSlot@ pin, ParamValue@ value);
    BBConfig@ Set(BBSlot@ pin, bool value);
    BBConfig@ Set(BBSlot@ pin, const string&in value);
    BBConfig@ Set(BBSlot@ pin, float value);
    BBConfig@ Set(BBSlot@ pin, int value);
    BBConfig@ SetSetting(BBSlot@ setting, ParamValue@ value);
    BBConfig@ SetSetting(BBSlot@ setting, const string&in value);
    BBSlot@ Setting(const string&in name, int occurrence = 0);
    BBConfig@ Source(BBSlot@ pin, ParamRef@ source);
    BBInstance@ Spawn(const CKBehaviorContext&in ctx);
    BBInstance@ SpawnStarted(const CKBehaviorContext&in ctx);
    BBConfig@ Target(CKBeObject@ target);
    bool Validate(const CKBehaviorContext&in ctx) const;
    bool get_valid() const;
}

class BBDecl {
    uint BehaviorFlags() const;
    string Category() const;
    int CompatibleClassId() const;
    BBConfig@ Configure();
    string Describe() const;
    string Error() const;
    CKGUID Guid() const;
    BBSlot@ Input(const string&in name, int occurrence = 0) const;
    bool IsValid() const;
    BBLayout@ Layout() const;
    BBSlot@ Local(const string&in name, int occurrence = 0) const;
    string Name() const;
    int NeededManagerCount() const;
    CKGUID NeededManagerGuid(int index) const;
    BBSlot@ Output(const string&in name, int occurrence = 0) const;
    BBSlot@ Pin(const string&in name, int occurrence = 0) const;
    BBSlot@ Pout(const string&in name, int occurrence = 0) const;
    uint PrototypeFlags() const;
    string QualifiedName() const;
    BBSlot@ Setting(const string&in name, int occurrence = 0) const;
    bool get_valid() const;
}

class BBInstance {
    BehaviorRef@ Behavior() const;
    BBDecl@ Decl() const;
    bool Destroy();
    string Error() const;
    string Explain() const;
    BBSlot@ Input(const string&in name, int occurrence = 0) const;
    bool IsAlive() const;
    bool IsValid() const;
    BBLayout@ Layout() const;
    BBSlot@ Local(const string&in name, int occurrence = 0) const;
    bool Operation(BBSlot@ pin, ParamOp@ operation);
    BBSlot@ Output(const string&in name, int occurrence = 0) const;
    bool OutputActive(BBSlot@ output) const;
    ParamRef@ Pin(BBSlot@ pin) const;
    BBSlot@ PinSlot(const string&in name, int occurrence = 0) const;
    ParamRef@ Pout(BBSlot@ pout) const;
    BBSlot@ PoutSlot(const string&in name, int occurrence = 0) const;
    bool Raise(const CKBehaviorContext&in ctx) const;
    bool Set(BBSlot@ pin, CKObject@ value);
    bool Set(BBSlot@ pin, ParamValue@ value);
    bool Set(BBSlot@ pin, bool value);
    bool Set(BBSlot@ pin, const string&in value);
    bool Set(BBSlot@ pin, float value);
    bool Set(BBSlot@ pin, int value);
    bool SetSetting(BBSlot@ setting, ParamValue@ value);
    bool SetSetting(BBSlot@ setting, const string&in value);
    BBSlot@ Setting(const string&in name, int occurrence = 0) const;
    bool Source(BBSlot@ pin, ParamRef@ source);
    bool Start();
    bool Start(BBSlot@ input);
    bool Start(const CKBehaviorContext&in ctx);
    bool Start(const CKBehaviorContext&in ctx, BBSlot@ input);
    bool Step(const CKBehaviorContext&in ctx);
    bool StepSet(const CKBehaviorContext&in ctx, BBSlot@ pin, CKObject@ value);
    bool StepSet(const CKBehaviorContext&in ctx, BBSlot@ pin, ParamValue@ value);
    bool StepSet(const CKBehaviorContext&in ctx, BBSlot@ pin, bool value);
    bool StepSet(const CKBehaviorContext&in ctx, BBSlot@ pin, const string&in value);
    bool StepSet(const CKBehaviorContext&in ctx, BBSlot@ pin, float value);
    bool StepSet(const CKBehaviorContext&in ctx, BBSlot@ pin, int value);
    bool Stop();
    bool Stop(const CKBehaviorContext&in ctx);
    bool get_valid() const;
}

class BBLayout {
    string Describe() const;
    int FindInput(const string&in name, int occurrence = 0) const;
    int FindLocal(const string&in name, int occurrence = 0) const;
    int FindOutput(const string&in name, int occurrence = 0) const;
    int FindPin(const string&in name, int occurrence = 0) const;
    int FindPout(const string&in name, int occurrence = 0) const;
    int FindSetting(const string&in name, int occurrence = 0) const;
    int InputCount() const;
    string InputName(int index) const;
    ParamInfo@ Local(int index) const;
    int LocalCount() const;
    int OutputCount() const;
    string OutputName(int index) const;
    ParamInfo@ Pin(int index) const;
    int PinCount() const;
    ParamInfo@ Pout(int index) const;
    int PoutCount() const;
    ParamInfo@ Setting(int index) const;
    int SettingCount() const;
}

class BBPrototype {
    BBCallBuilder@ Call();
    string Describe() const;
    string GetCategory() const;
    CKGUID GetGuid() const;
    string GetName() const;
    string GetQualifiedName() const;
    bool IsValid() const;
    BehaviorLayout@ Layout() const;
    BBTaskBuilder@ Spawn();
}

class BBResult {
    string Error() const;
    bool Ok() const;
    bool OutputActive(BBSlot@ output) const;
    bool OutputActive(int outputIndex) const;
    ParamRef@ Pout(BBSlot@ pout) const;
    ParamRef@ Pout(int index) const;
    bool Raise(const CKBehaviorContext&in ctx) const;
    int ReturnCode() const;
    bool get_ok() const;
}

class BBSlot {
    uint Caps() const;
    int DataSize() const;
    string DefaultText() const;
    string Describe() const;
    string Error() const;
    bool HasDefault() const;
    bool HasValue() const;
    int Index() const;
    bool IsRequired() const;
    bool IsSetting() const;
    bool IsStart() const;
    bool IsStop() const;
    bool IsValid() const;
    ParamKind Kind() const;
    int LayoutGeneration() const;
    string Name() const;
    CKGUID TypeGuid() const;
    string TypeName() const;
    string ValueText() const;
    bool get_valid() const;
}

class BBTask {
    BehaviorRef@ Behavior() const;
    bool Destroy();
    string Error() const;
    bool IsAlive() const;
    bool IsPaused() const;
    bool IsValid() const;
    bool OutputActive(BBSlot@ output) const;
    bool OutputActive(int outputIndex) const;
    ParamRef@ Pout(BBSlot@ pout) const;
    ParamRef@ Pout(int index) const;
    bool Raise(const CKBehaviorContext&in ctx) const;
    bool Reset();
    int ReturnCode() const;
    bool Step(const CKBehaviorContext&in ctx, BBSlot@ input);
    bool Step(const CKBehaviorContext&in ctx, int inputIndex = -1);
}

class BBTaskBuilder {
    BBTaskBuilder@ Operation(BBSlot@ pin, ParamOp@ operation);
    BBTaskBuilder@ Owner(CKBeObject@ owner);
    BBTaskBuilder@ Set(BBSlot@ pin, CKObject@ value);
    BBTaskBuilder@ Set(BBSlot@ pin, ParamValue@ value);
    BBTaskBuilder@ Set(BBSlot@ pin, bool value);
    BBTaskBuilder@ Set(BBSlot@ pin, const string&in value);
    BBTaskBuilder@ Set(BBSlot@ pin, float value);
    BBTaskBuilder@ Set(BBSlot@ pin, int value);
    BBTaskBuilder@ Set(int pinIndex, ParamValue@ value);
    BBTaskBuilder@ SetOperation(int pinIndex, ParamOp@ operation);
    BBTaskBuilder@ SetSource(int pinIndex, ParamRef@ source);
    BBTaskBuilder@ Source(BBSlot@ pin, ParamRef@ source);
    BBTask@ Start(BBSlot@ input);
    BBTask@ Start(int inputIndex = 0);
    BBTaskBuilder@ Target(CKBeObject@ target);
}

class BehaviorBridge {
    BehaviorRef@ Find(const string&in name) const;
    BehaviorRef@ FindByID(uint id) const;
    BehaviorRef@ FindOn(CKBeObject@ owner, const string&in name) const;
    BehaviorGraph@ Graph() const;
    BehaviorRef@ OwnerScript() const;
    BehaviorRef@ Self() const;
}

class BehaviorGraph {
    string Describe() const;
    string DescribeCandidates(BehaviorQuery@ query) const;
    BehaviorGraphEdit@ Edit() const;
    BehaviorNode@ Find(BehaviorQuery@ query) const;
    BehaviorNode@[]@ FindAll(BehaviorQuery@ query) const;
    bool IsValid() const;
    BehaviorNode@ Require(BehaviorQuery@ query) const;
    BehaviorNode@ Root() const;
    bool get_valid() const;
}

class BehaviorGraphEdit {
    GraphEditNode@ Add(BBConfig@ config, const string&in name = "");
    GraphEditNode@ Add(BBDecl@ decl, const string&in name = "");
    GraphEditResult@ Apply(const CKBehaviorContext&in ctx);
    GraphEditNode@ Clone(BehaviorNode@ node, const string&in name = "");
    string Describe() const;
    BehaviorGraphEdit@ EnsureInputCount(GraphEditNode@ node, int count, const string&in prefix = "");
    BehaviorGraphEdit@ EnsureOutputCount(GraphEditNode@ node, int count, const string&in prefix = "");
    string Error() const;
    GraphEditNode@ Import(BehaviorNode@ node);
    bool IsValid() const;
    GraphEditLink@ Link(GraphEditNode@ source, BBSlot@ sourceOutput, GraphEditNode@ target, BBSlot@ targetInput, int delay = 1);
    GraphEditLink@ Link(GraphEditNode@ source, int sourceOutputIndex, GraphEditNode@ target, int targetInputIndex, int delay = 1);
    BehaviorGraphEdit@ Move(BehaviorNode@ node, BehaviorGraph@ targetGraph);
    BehaviorGraphEdit@ Operation(GraphEditNode@ node, BBSlot@ pin, ParamOp@ operation);
    GraphEditLink@ Relink(BehaviorLinkRef@ link, GraphEditNode@ source, int sourceOutputIndex, GraphEditNode@ target, int targetInputIndex, int delay = 1);
    BehaviorGraphEdit@ Remove(BehaviorNode@ node, bool removeIncidentLinks = false);
    BehaviorGraphEdit@ Set(GraphEditNode@ node, BBSlot@ pin, CKObject@ value);
    BehaviorGraphEdit@ Set(GraphEditNode@ node, BBSlot@ pin, ParamValue@ value);
    BehaviorGraphEdit@ Set(GraphEditNode@ node, BBSlot@ pin, bool value);
    BehaviorGraphEdit@ Set(GraphEditNode@ node, BBSlot@ pin, const string&in value);
    BehaviorGraphEdit@ Set(GraphEditNode@ node, BBSlot@ pin, float value);
    BehaviorGraphEdit@ Set(GraphEditNode@ node, BBSlot@ pin, int value);
    BehaviorGraphEdit@ SetSetting(GraphEditNode@ node, BBSlot@ setting, ParamValue@ value);
    BehaviorGraphEdit@ SetSetting(GraphEditNode@ node, BBSlot@ setting, const string&in value);
    BehaviorGraphEdit@ Source(GraphEditNode@ node, BBSlot@ pin, ParamRef@ source);
    BehaviorGraphEdit@ Target(GraphEditNode@ node, CKBeObject@ target);
    BehaviorGraphEdit@ Unlink(BehaviorLinkRef@ link);
    GraphEditResult@ Validate(const CKBehaviorContext&in ctx) const;
    bool get_valid() const;
}

class BehaviorLayout {
    string Describe() const;
    int FindInput(const string&in name, int occurrence = 0) const;
    int FindLocal(const string&in name, int occurrence = 0) const;
    int FindOutput(const string&in name, int occurrence = 0) const;
    int FindPin(const string&in name, int occurrence = 0) const;
    int FindPout(const string&in name, int occurrence = 0) const;
    int FindSetting(const string&in name, int occurrence = 0) const;
    int InputCount() const;
    string InputName(int index) const;
    ParamInfo@ Local(int index) const;
    int LocalCount() const;
    int OutputCount() const;
    string OutputName(int index) const;
    ParamInfo@ Pin(int index) const;
    int PinCount() const;
    ParamInfo@ Pout(int index) const;
    int PoutCount() const;
    ParamInfo@ Setting(int index) const;
    int SettingCount() const;
}

class BehaviorLinkRef {
    int ClassId() const;
    int Delay() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    BehaviorRef@ SourceBehavior() const;
    int SourceOutputIndex() const;
    BehaviorRef@ TargetBehavior() const;
    int TargetInputIndex() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class BehaviorNode {
    BehaviorGraph@ AsGraph() const;
    BehaviorRef@ Behavior() const;
    string Describe() const;
    BehaviorNode@ End(int maxSteps = 256) const;
    string Error() const;
    BehaviorNode@ Input(int index) const;
    bool IsValid() const;
    BehaviorNode@ Next(BehaviorQuery@ query = null) const;
    BehaviorNode@[]@ NextAll(BehaviorQuery@ query = null) const;
    BehaviorLinkRef@ NextLink(BehaviorQuery@ query = null) const;
    BehaviorNode@ Output(int index) const;
    BehaviorNode@ Prev(BehaviorQuery@ query = null) const;
    BehaviorNode@[]@ PrevAll(BehaviorQuery@ query = null) const;
    BehaviorLinkRef@ PrevLink(BehaviorQuery@ query = null) const;
    bool get_valid() const;
}

class BehaviorQuery {
    string Describe() const;
    BehaviorQuery@ IncludeRoot(bool includeRoot);
    BehaviorQuery@ InputCount(int count);
    BehaviorQuery@ MaxDepth(int depth);
    BehaviorQuery@ Name(const string&in name);
    BehaviorQuery@ NameContains(const string&in text);
    BehaviorQuery@ Occurrence(int occurrence);
    BehaviorQuery@ OutputCount(int count);
    BehaviorQuery@ PinCount(int count);
    BehaviorQuery@ PoutCount(int count);
    BehaviorQuery@ PrototypeGuid(CKGUID guid);
    BehaviorQuery@ PrototypeName(const string&in name);
    BehaviorQuery@ PrototypeQuery(const string&in query);
    BehaviorQuery@ Recursive(bool recursive);
    BehaviorQuery@ Target(ObjectRef@ target);
    BehaviorQuery@ TargetId(uint id);
    BehaviorQuery@ TargetName(const string&in name);
}

class BehaviorRef {
    BehaviorGraph@ AsGraph() const;
    int ClassId() const;
    ParamOperationRef@ ConnectOperation(BBSlot@ pin, ParamOp@ op);
    ParamOperationRef@ ConnectOperation(int pinIndex, ParamOp@ op);
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool InputActive(BBSlot@ input) const;
    bool InputActive(int inputIndex) const;
    bool IsDynamic() const;
    bool IsValid() const;
    BehaviorLayout@ Layout() const;
    ParamRef@ Local(BBSlot@ slot) const;
    ParamRef@ Local(int index) const;
    string Name() const;
    bool OutputActive(BBSlot@ output) const;
    bool OutputActive(int outputIndex) const;
    ParamRef@ Pin(BBSlot@ slot) const;
    ParamRef@ Pin(int index) const;
    ParamRef@ Pout(BBSlot@ slot) const;
    ParamRef@ Pout(int index) const;
    GraphTask@ Start(BBSlot@ input, bool reset = false, float timeout = 0.0f);
    GraphTask@ Start(int inputIndex = 0, bool reset = false, float timeout = 0.0f);
    bool Trigger(BBSlot@ input, bool reset = false);
    bool Trigger(int inputIndex = 0, bool reset = false);
    GraphTask@ Watch(float timeout = 0.0f);
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class CK2dCurve {
    void AddControlPoint(const Vx2DVector&in pos);
    bool DeleteControlPoint(int pos);
    CK2dCurvePoint& GetControlPoint(int pos);
    int GetControlPointCount();
    float GetLength();
    CKERROR GetPos(float step, Vx2DVector&out pos);
    float GetY(float x);
    void Update();
    CK2dCurve& opAssign(const CK2dCurve&in other);
}

class CK2dCurvePoint {
    float GetBias() const;
    float GetContinuity() const;
    NativePointer GetCurve() const;
    Vx2DVector& GetInTangent();
    float GetLength() const;
    Vx2DVector& GetOutTangent();
    Vx2DVector& GetPosition();
    float GetTension() const;
    bool IsLinear() const;
    bool IsTCB() const;
    void NotifyUpdate();
    void SetBias(float b);
    void SetContinuity(float c);
    void SetInTangent(const Vx2DVector&in input);
    void SetLinear(bool linear = false);
    void SetOutTangent(const Vx2DVector&in output);
    void SetPosition(const Vx2DVector&in pos);
    void SetTension(float t);
    void UseTCB(bool use = true);
    CK2dCurvePoint& opAssign(const CK2dCurvePoint&in other);
}

class CK2dEntity {
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    int Draw(CKRenderContext@ context);
    void EnableClipToCamera(bool Clip = true);
    void EnableRatioOffset(bool ratio = true);
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    CK2dEntity@ GetChild(int i) const;
    int GetChildrenCount() const;
    int GetClassID();
    void GetExtents(VxRect&out srcRect, VxRect&out rect);
    uint GetFlags();
    CKERROR GetHomogeneousRect(VxRect&out rect);
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    CKMaterial@ GetMaterial();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CK2dEntity@ GetParent() const;
    int GetPosition(Vx2DVector&out vect, bool hom = false, CK2dEntity@ ref = null);
    int GetPriority();
    void GetRect(VxRect&out rect);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    int GetSize(Vx2DVector&out vect, bool hom = false);
    void GetSourceRect(VxRect&out rect);
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK2dEntity@ HierarchyParser(CK2dEntity@ current) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsBackground();
    bool IsClipToParent();
    bool IsClippedToCamera();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsHomogeneousCoordinates();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable();
    bool IsPrivate();
    bool IsRatioOffset();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsUsingSourceRect();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyFlags(uint add, uint remove = 0);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    int Render(CKRenderContext@ context);
    void RestoreInitialSize();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetBackground(bool back = true);
    void SetClipToParent(bool clip = true);
    void SetExtents(const VxRect&in srcRect, const VxRect&in rect);
    void SetFlags(uint flags);
    void SetHomogeneousCoordinates(bool coord = true);
    CKERROR SetHomogeneousRect(const VxRect&in rect, bool keepChildren = false);
    void SetMaterial(CKMaterial@ mat);
    void SetName(const string&in name, bool shared = false);
    bool SetParent(CK2dEntity@ parent);
    void SetPickable(bool pick = true);
    void SetPosition(const Vx2DVector&in vect, bool hom = false, bool keepChildren = false, CK2dEntity@ ref = null);
    void SetPriority(int priority);
    void SetRect(const VxRect&in rect, bool keepChildren = false);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetSize(const Vx2DVector&in vect, bool hom = false, bool keepChildren = false);
    void SetSourceRect(VxRect&in rect);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void UseSourceRect(bool use = true);
    CKSprite@ opCast();
    CKSpriteText@ opCast();
    const CKSprite@ opCast() const;
    const CKSpriteText@ opCast() const;
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CK3dEntity {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFlags(uint flags);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CK3dObject@ opCast();
    CKBodyPart@ opCast();
    CKCamera@ opCast();
    CKCharacter@ opCast();
    CKCurve@ opCast();
    CKCurvePoint@ opCast();
    CKGrid@ opCast();
    CKLight@ opCast();
    CKPlace@ opCast();
    CKSprite3D@ opCast();
    CKTargetCamera@ opCast();
    CKTargetLight@ opCast();
    const CK3dObject@ opCast() const;
    const CKBodyPart@ opCast() const;
    const CKCamera@ opCast() const;
    const CKCharacter@ opCast() const;
    const CKCurve@ opCast() const;
    const CKCurvePoint@ opCast() const;
    const CKGrid@ opCast() const;
    const CKLight@ opCast() const;
    const CKPlace@ opCast() const;
    const CKSprite3D@ opCast() const;
    const CKTargetCamera@ opCast() const;
    const CKTargetLight@ opCast() const;
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CK3dObject {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFlags(uint flags);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CKBodyPart@ opCast();
    const CKBodyPart@ opCast() const;
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKAnimation {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    bool CanBeInterrupt();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKAnimation@ CreateMergedAnimation(CKAnimation@ anim2, bool dynamic = false);
    float CreateTransition(CKAnimation@ input, CKAnimation@ output, uint outTransitionMode, float length = 6.0, float frameTo = 0);
    bool DoesCharacterTakeOrientation();
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    CKCharacter@ GetCharacter();
    int GetClassID();
    uint GetFlags();
    float GetFrame();
    uint GetID();
    float GetLength();
    float GetLinkedFrameRate();
    int GetMemoryOccupation();
    float GetMergeFactor();
    string GetName();
    float GetNextFrame(float delta);
    uint GetObjectFlags();
    CK3dEntity@ GetRootEntity();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CK_SECONDARYANIMATION_FLAGS GetSecondaryAnimationMode();
    float GetStep();
    CK_ANIMATION_TRANSITION_MODE GetTransitionMode();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsLinkedToFrameRate();
    bool IsMerged();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    void LinkToFrameRate(bool link, float fps = 30.0);
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetCanBeInterrupt(bool can = true);
    void SetCharacterOrientation(bool orient = true);
    void SetCurrentStep(float step);
    void SetFlags(uint flags);
    void SetFrame(float frame);
    void SetLength(float nbFrame);
    void SetMergeFactor(float frame);
    void SetName(const string&in name, bool shared = false);
    void SetSecondaryAnimationMode(CK_SECONDARYANIMATION_FLAGS mode);
    void SetStep(float step);
    void SetTransitionMode(CK_ANIMATION_TRANSITION_MODE mode);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKKeyedAnimation@ opCast();
    const CKKeyedAnimation@ opCast() const;
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKAnimController {
    int AddBezierPositionKey(CKBezierPositionKey&in key);
    int AddPositionKey(CKPositionKey&in key);
    int AddRotationKey(CKRotationKey&in key);
    int AddTCBPositionKey(CKTCBPositionKey&in key);
    int AddTCBRotationKey(CKTCBRotationKey&in key);
    bool Clone(CKAnimController@ control);
    bool Compare(CKAnimController@ control, float threshold = 0.0);
    NativeBuffer@ DumpKeys();
    int DumpKeysTo(NativeBuffer@ buffer = null);
    bool EvaluateQuaternion(float timeStep, VxQuaternion&out result);
    bool EvaluateVector(float timeStep, VxVector&out result);
    CKKey& GetKey(int index);
    int GetKeyCount();
    float GetLength();
    uint GetType();
    int ReadKeysFrom(NativeBuffer@ buffer);
    void RemoveKey(int index);
    void SetLength(float l);
    CKMorphController@ opCast();
    const CKMorphController@ opCast() const;
}

class CKAnimKey {
    CKAnimKey& opAssign(const CKAnimKey&in other);
    VxVector m_Pos;
    VxQuaternion m_Rot;
    VxVector m_Scl;
    VxQuaternion m_SclRot;
}

class CKAttributeCategoryDesc {
    string get_Name() const;
    NativePointer get_NamePointer() const;
    CKAttributeCategoryDesc& opAssign(const CKAttributeCategoryDesc&in other);
    void set_Name(const string&in value);
    void set_NamePointer(NativePointer ptr);
    uint Flags;
}

class CKAttributeDesc {
    NativePointer get_CallbackArg() const;
    NativePointer get_CallbackFct() const;
    NativePointer get_CreatorDll() const;
    string get_DefaultValue() const;
    NativePointer get_DefaultValuePointer() const;
    string get_Name() const;
    CKAttributeDesc& opAssign(const CKAttributeDesc&in other);
    void set_CallbackArg(NativePointer ptr);
    void set_CallbackFct(NativePointer ptr);
    void set_CreatorDll(NativePointer ptr);
    void set_DefaultValuePointer(NativePointer ptr);
    void set_Name(const string&in value);
    int AttributeCategory;
    XObjectPointerArray AttributeList;
    int CompatibleCid;
    uint Flags;
    XObjectPointerArray GlobalAttributeList;
    CKGUID ParameterType;
}

class CKAttributeManager {
    int AddCategory(const string&in category, uint flags = 0);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    const XObjectPointerArray& FillListByAttributes(NativeBuffer@ attribList, int count);
    const XObjectPointerArray& FillListByAttributes(NativePointer attribList, int count);
    const XObjectPointerArray& FillListByGlobalAttributes(NativeBuffer@ attribList, int count);
    const XObjectPointerArray& FillListByGlobalAttributes(NativePointer attribList, int count);
    string GetAttributeCategory(int attribType);
    int GetAttributeCategoryIndex(int attribType);
    int GetAttributeCompatibleClassId(int attribType);
    int GetAttributeCount();
    string GetAttributeDefaultValue(int attribType);
    CK_ATTRIBUT_FLAGS GetAttributeFlags(int attribType);
    const XObjectPointerArray& GetAttributeListPtr(int attribType);
    string GetAttributeNameByType(int attribType);
    CKGUID GetAttributeParameterGUID(int attribType);
    int GetAttributeParameterType(int attribType);
    int GetAttributeTypeByName(const string&in attribName);
    int GetCategoriesCount();
    int GetCategoryByName(const string&in name);
    uint GetCategoryFlags(const string&in cat);
    uint GetCategoryFlags(int cat);
    string GetCategoryName(int index);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    const XObjectPointerArray& GetGlobalAttributeListPtr(int attribType);
    CKGUID GetGuid();
    string GetName();
    uint GetValidFunctionsMask();
    bool IsAttributeIndexValid(int index);
    bool IsCategoryIndexValid(int index);
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    int RegisterNewAttributeType(const string&in name, CKGUID type, int compatibleCid = CKCID_BEOBJECT, CK_ATTRIBUT_FLAGS flags = CK_ATTRIBUT_SYSTEM);
    void RemoveCategory(const string&in category);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void SetAttributeCallbackFunction(int attribType, NativePointer callback, NativePointer arg);
    void SetAttributeCategory(int attribType, const string&in category);
    void SetAttributeDefaultValue(int attribType, const string&in defaultVal);
    void SetAttributeNameByType(int attribType, const string&in name);
    void SetCategoryName(int catType, const string&in name);
    void StartProfile();
    void StopProfile();
    void UnRegisterAttribute(const string&in name);
    void UnRegisterAttribute(int attribType);
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKAttributeVal {
    CKAttributeVal& opAssign(const CKAttributeVal&in other);
    int AttribType;
    uint Parameter;
}

class CKBaseManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    string GetName();
    uint GetValidFunctionsMask();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void StartProfile();
    void StopProfile();
    CKAttributeManager@ opCast();
    CKBehaviorManager@ opCast();
    CKCollisionManager@ opCast();
    CKFloorManager@ opCast();
    CKGridManager@ opCast();
    CKInputManager@ opCast();
    CKInterfaceManager@ opCast();
    CKMessageManager@ opCast();
    CKMidiManager@ opCast();
    CKObjectManager@ opCast();
    CKParameterManager@ opCast();
    CKPathManager@ opCast();
    CKRenderManager@ opCast();
    CKSoundManager@ opCast();
    CKTimeManager@ opCast();
    const CKAttributeManager@ opCast() const;
    const CKBehaviorManager@ opCast() const;
    const CKCollisionManager@ opCast() const;
    const CKFloorManager@ opCast() const;
    const CKGridManager@ opCast() const;
    const CKInputManager@ opCast() const;
    const CKInterfaceManager@ opCast() const;
    const CKMessageManager@ opCast() const;
    const CKMidiManager@ opCast() const;
    const CKObjectManager@ opCast() const;
    const CKParameterManager@ opCast() const;
    const CKPathManager@ opCast() const;
    const CKRenderManager@ opCast() const;
    const CKSoundManager@ opCast() const;
    const CKTimeManager@ opCast() const;
}

class CKBehavior {
    void Activate(bool active = true, bool breset = false);
    void ActivateInput(int pos, bool active = true);
    void ActivateOutput(int pos, bool active = true);
    int AddInput(const string&in name);
    void AddInputParameter(CKParameterIn@ input);
    void AddLocalParameter(CKParameterLocal@ param);
    int AddOutput(const string&in name);
    void AddOutputParameter(CKParameterOut@ param);
    CKERROR AddParameterOperation(CKParameterOperation@ op);
    CKERROR AddSubBehavior(CKBehavior@ cbk);
    CKERROR AddSubBehaviorLink(CKBehaviorLink@ cbkl);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallCallbackFunction(uint message);
    int CallSubBehaviorsCallbackFunction(uint message, CKGUID&in behguid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKBehaviorIO@ CreateInput(const string&in name);
    CKParameterIn@ CreateInputParameter(const string&in name, CKGUID guid);
    CKParameterIn@ CreateInputParameter(const string&in name, int type);
    CKParameterLocal@ CreateLocalParameter(const string&in name, CKGUID guid);
    CKParameterLocal@ CreateLocalParameter(const string&in name, int type);
    CKBehaviorIO@ CreateOutput(const string&in name);
    CKParameterOut@ CreateOutputParameter(const string&in name, CKGUID guid);
    CKParameterOut@ CreateOutputParameter(const string&in name, int type);
    CKERROR DeleteInput(int pos);
    CKERROR DeleteOutput(int pos);
    void EnableInputParameter(int pos, bool enable);
    void EnableOutputParameter(int pos, bool enable);
    int Execute(float delta);
    CKERROR ExportInputParameter(CKParameterIn@ p);
    CKERROR ExportOutputParameter(CKParameterOut@ p);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    int GetCompatibleClassID();
    CK_BEHAVIOR_FLAGS GetFlags();
    NativePointer GetFunction();
    uint GetID();
    CKBehaviorIO@ GetInput(int pos);
    int GetInputCount();
    CKParameterIn@ GetInputParameter(int pos);
    int GetInputParameterCount();
    CKObject@ GetInputParameterObject(int pos);
    int GetInputParameterPosition(CKParameterIn@ param);
    NativePointer GetInputParameterReadDataPtr(int pos);
    int GetInputPosition(CKBehaviorIO@ pbio);
    CKStateChunk@ GetInterfaceChunk();
    float GetLastExecutionTime();
    CKParameterLocal@ GetLocalParameter(int pos);
    int GetLocalParameterCount();
    CKObject@ GetLocalParameterObject(int pos);
    int GetLocalParameterPosition(CKParameterLocal@ param);
    NativePointer GetLocalParameterReadDataPtr(int pos);
    NativePointer GetLocalParameterWriteDataPtr(int pos);
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKBehaviorIO@ GetOutput(int pos);
    int GetOutputCount();
    CKParameterOut@ GetOutputParameter(int pos);
    int GetOutputParameterCount();
    CKObject@ GetOutputParameterObject(int pos);
    int GetOutputParameterPosition(CKParameterOut@ param);
    NativePointer GetOutputParameterWriteDataPtr(int pos);
    int GetOutputPosition(CKBehaviorIO@ pbio);
    CKBeObject@ GetOwner();
    CKBehavior@ GetOwnerScript();
    CKParameterOperation@ GetParameterOperation(int pos);
    int GetParameterOperationCount();
    CKBehavior@ GetParent();
    int GetPriority();
    CKBehaviorPrototype@ GetPrototype();
    CKGUID GetPrototypeGuid();
    string GetPrototypeName();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    int GetShortestDelay(CKBehavior@ beh);
    CKBehavior@ GetSubBehavior(int pos);
    int GetSubBehaviorCount();
    CKBehaviorLink@ GetSubBehaviorLink(int pos);
    int GetSubBehaviorLinkCount();
    CKBeObject@ GetTarget();
    CKParameterIn@ GetTargetParameter();
    CK_BEHAVIOR_TYPE GetType();
    uint GetVersion();
    CKERROR InitFctPtrFromGuid(CKGUID guid);
    CKERROR InitFctPtrFromPrototype(CKBehaviorPrototype&in proto);
    CKERROR InitFromGuid(CKGUID guid);
    CKERROR InitFromPrototype(CKBehaviorPrototype&in proto);
    CKParameterIn@ InsertInputParameter(int pos, const string&in name, int type);
    CKParameterOut@ InsertOutputParameter(int pos, const string&in name, int type);
    bool IsActive();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInScene(CKScene@ scene);
    bool IsInputActive(int pos);
    bool IsInputParameterEnabled(int pos);
    bool IsInterfaceObj();
    bool IsLocalParameterSetting(int pos);
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsOutputActive(int pos);
    bool IsOutputParameterEnabled(int pos);
    bool IsParentScriptActiveInScene(CKScene@ scn);
    bool IsPrivate();
    bool IsTargetable();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsUsingFunction();
    bool IsUsingTarget();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    CK_BEHAVIOR_FLAGS ModifyFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void NotifyEdition();
    void NotifySettingsEdition();
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKBehaviorIO@ RemoveInput(int pos);
    CKParameterIn@ RemoveInputParameter(int pos);
    CKParameterLocal@ RemoveLocalParameter(int pos);
    CKBehaviorIO@ RemoveOutput(int pos);
    CKParameterOut@ RemoveOutputParameter(int pos);
    CKParameterOperation@ RemoveParameterOperation(CKParameterOperation@ op);
    CKParameterOperation@ RemoveParameterOperation(int pos);
    CKBehavior@ RemoveSubBehavior(CKBehavior@ cbk);
    CKBehavior@ RemoveSubBehavior(int pos);
    CKBehaviorLink@ RemoveSubBehaviorLink(CKBehaviorLink@ cbkl);
    CKBehaviorLink@ RemoveSubBehaviorLink(int pos);
    CKParameterIn@ RemoveTargetParameter();
    CKBehaviorIO@ ReplaceInput(int pos, CKBehaviorIO@ io);
    CKParameterIn@ ReplaceInputParameter(int pos, CKParameterIn@ param);
    CKBehaviorIO@ ReplaceOutput(int pos, CKBehaviorIO@ io);
    CKParameterOut@ ReplaceOutputParameter(int pos, CKParameterOut@ param);
    CKParameterIn@ ReplaceTargetParameter(CKParameterIn@ targetParam);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsTargetable(bool target = true);
    void SetCallbackFunction(NativePointer fct);
    void SetCompatibleClassID(int cid);
    void SetFlags(CK_BEHAVIOR_FLAGS flags);
    void SetFunction(NativePointer fct);
    void SetInterfaceChunk(CKStateChunk@ state);
    CKERROR SetLocalParameterObject(int pos, CKObject@ obj);
    void SetName(const string&in name, bool shared = false);
    CKERROR SetOutputParameterObject(int pos, CKObject@ obj);
    CKERROR SetOwner(CKBeObject@ beo, bool callback = true);
    void SetPriority(int priority);
    CKERROR SetSubBehaviorOwner(CKBeObject@ beo, bool callback = true);
    void SetType(CK_BEHAVIOR_TYPE type);
    void SetVersion(uint version);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void UseFunction();
    void UseGraph();
    CKERROR UseTarget(bool use = true);
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKBehaviorContext {
    NativePointer get_CallbackArg() const;
    CKBehaviorContext& opAssign(const CKBehaviorContext&in other);
    CKAttributeManager@ AttributeManager;
    CKBehavior@ Behavior;
    uint CallbackMessage;
    CKContext@ Context;
    CKLevel@ CurrentLevel;
    CKRenderContext@ CurrentRenderContext;
    CKScene@ CurrentScene;
    float DeltaTime;
    CKMessageManager@ MessageManager;
    CKParameterManager@ ParameterManager;
    CKScene@ PreviousScene;
    CKTimeManager@ TimeManager;
}

class CKBehaviorIO {
    void Activate(bool active = true);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKBehavior@ GetOwner();
    int GetType();
    bool IsActive();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetName(const string&in name, bool shared = false);
    void SetOwner(CKBehavior@ owner);
    void SetType(int type);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKBEHAVIORIO_DESC {
    uint get_Flags() const;
    string get_Name() const;
    CKBEHAVIORIO_DESC& opAssign(const CKBEHAVIORIO_DESC&in other);
    void set_Flags(uint value);
    void set_Name(const string&in value);
}

class CKBehaviorLink {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    int GetActivationDelay();
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetFlags();
    uint GetID();
    CKBehaviorIO@ GetInBehaviorIO();
    int GetInitialActivationDelay();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKBehaviorIO@ GetOutBehaviorIO();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void ResetActivationDelay();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetActivationDelay(int delay);
    void SetAppData(NativePointer data);
    void SetFlags(uint flags);
    CKERROR SetInBehaviorIO(CKBehaviorIO@ ckbioout);
    void SetInitialActivationDelay(int delay);
    void SetName(const string&in name, bool shared = false);
    CKERROR SetOutBehaviorIO(CKBehaviorIO@ ckbioin);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKBehaviorManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    CKERROR Execute(float delta);
    int GetBehaviorMaxIteration();
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    string GetName();
    CKBeObject@ GetObject(int pos);
    int GetObjectsCount();
    uint GetValidFunctionsMask();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void SetBehaviorMaxIteration(int n);
    void StartProfile();
    void StopProfile();
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKBehaviorPrototype {
    int DeclareInParameter(const string&in name, CKGUID guidType);
    int DeclareInParameter(const string&in name, CKGUID guidType, NativeBuffer@ defaultVal);
    int DeclareInParameter(const string&in name, CKGUID guidType, NativePointer defaultVal, int valSize);
    int DeclareInParameter(const string&in name, CKGUID guidType, const string&in defaultVal);
    int DeclareInput(const string&in name);
    int DeclareLocalParameter(const string&in name, CKGUID guidType);
    int DeclareLocalParameter(const string&in name, CKGUID guidType, NativeBuffer@ defaultVal);
    int DeclareLocalParameter(const string&in name, CKGUID guidType, NativePointer defaultVal, int valSize);
    int DeclareLocalParameter(const string&in name, CKGUID guidType, const string&in defaultVal);
    int DeclareOutParameter(const string&in name, CKGUID guidType);
    int DeclareOutParameter(const string&in name, CKGUID guidType, NativeBuffer@ defaultVal);
    int DeclareOutParameter(const string&in name, CKGUID guidType, NativePointer defaultVal, int valSize);
    int DeclareOutParameter(const string&in name, CKGUID guidType, const string&in defaultVal);
    int DeclareOutput(const string&in name);
    int DeclareSetting(const string&in name, CKGUID guidType);
    int DeclareSetting(const string&in name, CKGUID guidType, NativeBuffer@ defaultVal);
    int DeclareSetting(const string&in name, CKGUID guidType, NativePointer defaultVal, int valSize);
    int DeclareSetting(const string&in name, CKGUID guidType, const string&in defaultVal);
    int GetApplyToClassID();
    NativePointer GetBehaviorCallbackFct();
    CK_BEHAVIOR_FLAGS GetBehaviorFlags();
    CK_BEHAVIORPROTOTYPE_FLAGS GetFlags();
    NativePointer GetFunction();
    CKGUID GetGuid();
    int GetInIOIndex(const string&in name);
    CKBEHAVIORIO_DESC& GetInIOList(int index);
    int GetInParamIndex(const string&in name);
    int GetInParameterCount();
    CKPARAMETER_DESC& GetInParameterList(int index);
    int GetInputCount();
    int GetLocalParamIndex(const string&in name);
    int GetLocalParameterCount();
    CKPARAMETER_DESC& GetLocalParameterList(int index);
    string GetName();
    int GetOutIOIndex(const string&in name);
    CKBEHAVIORIO_DESC& GetOutIOList(int index);
    int GetOutParamIndex(const string&in name);
    int GetOutParameterCount();
    CKPARAMETER_DESC& GetOutParameterList(int index);
    int GetOutputCount();
    CKObjectDeclaration@ GetSourceObjectDeclaration();
    bool IsRunTime();
    void SetApplyToClassID(int cid);
    void SetBehaviorCallbackFct(NativePointer fct, uint callbackMask, NativePointer param);
    void SetBehaviorFlags(CK_BEHAVIOR_FLAGS flags);
    void SetFlags(CK_BEHAVIORPROTOTYPE_FLAGS flags);
    void SetFunction(NativePointer fct);
    void SetGuid(const CKGUID&in guid);
    void SetSourceObjectDeclaration(CKObjectDeclaration@ decl);
}

class CKBeObject {
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    int GetPriority();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    bool HasAttribute(int attribType);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetName(const string&in name, bool shared = false);
    void SetPriority(int priority);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CK2dEntity@ opCast();
    CK3dEntity@ opCast();
    CK3dObject@ opCast();
    CKBodyPart@ opCast();
    CKCamera@ opCast();
    CKCharacter@ opCast();
    CKCurve@ opCast();
    CKCurvePoint@ opCast();
    CKDataArray@ opCast();
    CKGrid@ opCast();
    CKGroup@ opCast();
    CKLevel@ opCast();
    CKLight@ opCast();
    CKMaterial@ opCast();
    CKMesh@ opCast();
    CKMidiSound@ opCast();
    CKPatchMesh@ opCast();
    CKPlace@ opCast();
    CKRenderObject@ opCast();
    CKScene@ opCast();
    CKSound@ opCast();
    CKSprite3D@ opCast();
    CKSprite@ opCast();
    CKSpriteText@ opCast();
    CKTargetCamera@ opCast();
    CKTargetLight@ opCast();
    CKTexture@ opCast();
    CKWaveSound@ opCast();
    const CK2dEntity@ opCast() const;
    const CK3dEntity@ opCast() const;
    const CK3dObject@ opCast() const;
    const CKBodyPart@ opCast() const;
    const CKCamera@ opCast() const;
    const CKCharacter@ opCast() const;
    const CKCurve@ opCast() const;
    const CKCurvePoint@ opCast() const;
    const CKDataArray@ opCast() const;
    const CKGrid@ opCast() const;
    const CKGroup@ opCast() const;
    const CKLevel@ opCast() const;
    const CKLight@ opCast() const;
    const CKMaterial@ opCast() const;
    const CKMesh@ opCast() const;
    const CKMidiSound@ opCast() const;
    const CKPatchMesh@ opCast() const;
    const CKPlace@ opCast() const;
    const CKRenderObject@ opCast() const;
    const CKScene@ opCast() const;
    const CKSound@ opCast() const;
    const CKSprite3D@ opCast() const;
    const CKSprite@ opCast() const;
    const CKSpriteText@ opCast() const;
    const CKTargetCamera@ opCast() const;
    const CKTargetLight@ opCast() const;
    const CKTexture@ opCast() const;
    const CKWaveSound@ opCast() const;
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKBezierKeyFlags {
    CKBEZIERKEY_FLAGS GetInTangentMode();
    CKBEZIERKEY_FLAGS GetOutTangentMode();
    void SetInTangentMode(CKBEZIERKEY_FLAGS f);
    void SetOutTangentMode(CKBEZIERKEY_FLAGS f);
    CKBezierKeyFlags& opAssign(const CKBezierKeyFlags&in other);
    bool opIneq(const CKBezierKeyFlags&in) const;
}

class CKBezierPositionKey {
    bool Compare(CKBezierPositionKey&in key, float threshold);
    CKBezierKeyFlags& GetFlags();
    const VxVector& GetPosition();
    float GetTime();
    void SetPosition(const VxVector&in);
    void SetTime(float t);
    CKBezierPositionKey& opAssign(const CKBezierPositionKey&in);
    CKKey opImplConv() const;
    CKPositionKey opImplConv() const;
    CKBezierKeyFlags Flags;
    VxVector In;
    VxVector Out;
    VxVector Pos;
    float TimeStep;
}

class CKBitmapData {
    bool CreateImage(int width, int height, int bpp = 32, int slot = 0);
    CKMovieInfo@ CreateMovieInfo(XString s, CKMovieProperties@&out mp);
    int GetCurrentSlot();
    bool GetDynamicHint();
    int GetHeight();
    bool GetImageDesc(VxImageDescEx&out desc);
    string GetMovieFileName();
    CKMovieReader@ GetMovieReader();
    int GetPickThreshold();
    uint GetPixel(int x, int y, int slot = -1);
    CKBitmapProperties@ GetSaveFormat();
    CK_TEXTURE_SAVEOPTIONS GetSaveOptions();
    int GetSlotCount();
    string GetSlotFileName(int slot);
    uint GetTransparentColor();
    int GetWidth();
    bool IsCubeMap();
    bool IsTransparent();
    bool LoadMovieFile(XString name);
    bool LoadSlotImage(XString name, int slot = 0);
    NativePointer LockSurfacePtr(int slot = -1);
    bool ReleaseAllSlots();
    bool ReleaseSlot(int slot);
    bool ReleaseSurfacePtr(int slot = -1);
    bool ResizeImages(int width, int height);
    bool SaveImage(const string&in name, int slot = 0, bool useFormat = false);
    bool SaveImageAlpha(const string&in name, int slot = 0);
    void SetAlphaForTransparentColor(const VxImageDescEx&in desc);
    void SetBorderColorForClamp(const VxImageDescEx&in desc);
    void SetCubeMap(bool cubeMap);
    bool SetCurrentSlot(int slot);
    void SetDynamicHint(bool dynamic);
    void SetMovieInfo(CKMovieInfo@ mi);
    void SetPickThreshold(int pt);
    bool SetPixel(int x, int y, uint color, int slot = -1);
    void SetSaveFormat(CKBitmapProperties@ format);
    void SetSaveOptions(CK_TEXTURE_SAVEOPTIONS options);
    bool SetSlotCount(int count);
    bool SetSlotFileName(int slot, const string&in filename);
    bool SetSlotImage(int slot, NativePointer buffer, const VxImageDescEx&in desc);
    void SetTransparent(bool transparency);
    void SetTransparentColor(uint color);
    bool ToRestore();
    CKBitmapData& opAssign(const CKBitmapData&in other);
    uint m_BitmapFlags;
    int m_CurrentSlot;
    int m_Height;
    CKMovieInfo@ m_MovieInfo;
    int m_PickThreshold;
    uint m_TransColor;
    int m_Width;
}

class CKBitmapProperties {
    NativePointer get_m_Data() const;
    void set_m_Data(NativePointer ptr);
    CKFileExtension m_Ext;
    VxImageDescEx m_Format;
    CKGUID m_ReaderGuid;
    int m_Size;
}

class CKBitmapReader {
    void GetBitmapDefaultProperties(CKBitmapProperties@&out bp);
    CK_DATAREADER_FLAGS GetFlags();
    string GetOptionDescription(int i);
    int GetOptionsCount();
    CKPluginInfo GetReaderInfo();
    bool IsAlphaSaved(CKBitmapProperties@ bp);
    int ReadASynchronousFile(const string&in name, CKBitmapProperties@&out bp);
    int ReadFile(const string&in name, CKBitmapProperties@&out bp);
    int ReadMemory(NativeBuffer@ memory, CKBitmapProperties@&out bp);
    int ReadMemory(NativePointer memory, int size, CKBitmapProperties@&out bp);
    void ReleaseMemory(NativePointer memory);
    int SaveFile(const string&in name, CKBitmapProperties@ bp);
    int SaveMemory(NativePointer&out memory, CKBitmapProperties@ bp);
    void SetBitmapDefaultProperties(CKBitmapProperties@ bp);
    CKDataReader@ opImplCast();
    const CKDataReader@ opImplCast() const;
}

class CKBitmapSlot {
    void Allocate(int, int, int);
    void Flush();
    void Free();
    bool HasDataBuffer() const;
    void Resize(VxImageDescEx&inout src, VxImageDescEx&inout dest);
    CKBitmapSlot& opAssign(const CKBitmapSlot&in other);
    XString m_FileName;
}

class CKBodyPart {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    CKERROR FitToJoint();
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CKCharacter@ GetCharacter() const;
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    CKAnimation@ GetExclusiveAnimation() const;
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetRotationJoint(CKIkJoint&out rotJoint) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetExclusiveAnimation(const CKAnimation@ anim);
    void SetFlags(uint flags);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetRotationJoint(const CKIkJoint&in rotJoint);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CK3dEntity@ opImplCast();
    CK3dObject@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CK3dObject@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKCamera {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    void ComputeProjectionMatrix(VxMatrix&out mat);
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    void GetAspectRatio(int&out width, int&out height);
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    float GetBackPlane() const;
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    uint GetFlags() const;
    float GetFov() const;
    float GetFrontPlane() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    float GetOrthographicZoom() const;
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    int GetProjectionType() const;
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    CK3dEntity@ GetTarget();
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void ResetRoll();
    void Roll(float angle);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    void SetAspectRatio(int width, int height);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetBackPlane(float back);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFlags(uint flags);
    void SetFov(float fov);
    void SetFrontPlane(float front);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetOrthographicZoom(float zoom);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetProjectionType(int proj);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetTarget(CK3dEntity@ target);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CKTargetCamera@ opCast();
    const CKTargetCamera@ opCast() const;
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKCharacter {
    CKERROR AddAnimation(CKAnimation@ anim);
    CKERROR AddBodyPart(CKBodyPart@ part);
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    void AlignCharacterWithRootPosition();
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    void FlushSecondaryAnimations();
    CKAnimation@ GetActiveAnimation();
    CKAnimation@ GetAnimation(int index);
    int GetAnimationCount();
    float GetAnimationLevelOfDetail();
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    CKBodyPart@ GetBodyPart(int index);
    int GetBodyPartCount();
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    void GetEstimatedVelocity(float delta, VxVector&out velocity);
    uint GetFlags() const;
    CK3dEntity@ GetFloorReferenceObject();
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKAnimation@ GetNextActiveAnimation();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    CKBodyPart@ GetRootBodyPart();
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKAnimation@ GetSecondaryAnimation(int index);
    int GetSecondaryAnimationsCount();
    CKSkin@ GetSkin() const;
    CKAnimation@ GetWarper();
    void GetWarperParameters(uint&out transitionMode, CKAnimation@&out animSrc, float&out frameSrc, CKAnimation@&out animDest, float&out frameDest);
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsAutomaticProcess();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    CKERROR PlaySecondaryAnimation(CKAnimation@ anim, float startingFrame = 0.0, CK_SECONDARYANIMATION_FLAGS playFlags = CKSECONDARYANIMATION_ONESHOT, float warpLength = 5.0, int loopCount = 0);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    void ProcessAnimation(float delta = 1.0);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    CKERROR RemoveAnimation(CKAnimation@ anim);
    bool RemoveAttribute(int attribType);
    CKERROR RemoveBodyPart(CKBodyPart@ part);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    CKERROR SetActiveAnimation(CKAnimation@ anim);
    void SetAnimationLevelOfDetail(float lod);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetAutomaticProcess(bool process = true);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFlags(uint flags);
    void SetFloorReferenceObject(CK3dEntity@ floorRef);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    CKERROR SetNextActiveAnimation(CKAnimation@ anim, uint transitionMode, float warpLength = 0.0);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    CKERROR SetRootBodyPart(CKBodyPart@ part);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKERROR StopSecondaryAnimation(CKAnimation@ anim, bool warp = false, float warpLength = 5.0);
    CKERROR StopSecondaryAnimation(CKAnimation@ anim, float warpLength);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKClassDesc {
    int GetToNotify(int index) const;
    void SetToNotify(int index, int cid);
    NativePointer get_CreationFct() const;
    NativePointer get_DependsCountFct() const;
    NativePointer get_DependsFct() const;
    NativePointer get_NameFct() const;
    NativePointer get_RegisterFct() const;
    CKClassDesc& opAssign(const CKClassDesc&in other);
    void set_CreationFct(NativePointer ptr);
    void set_DependsCountFct(NativePointer ptr);
    void set_DependsFct(NativePointer ptr);
    void set_NameFct(NativePointer ptr);
    void set_RegisterFct(NativePointer ptr);
    XBitArray Children;
    XBitArray CommonToBeNotify;
    uint DefaultCopyDependencies;
    uint DefaultDeleteDependencies;
    uint DefaultOptions;
    uint DefaultReplaceDependencies;
    uint DefaultSaveDependencies;
    int DerivationLevel;
    int Done;
    CKGUID Parameter;
    int Parent;
    XBitArray Parents;
    XBitArray ToBeNotify;
    XClassIDArray ToNotify;
}

class CKCollisionManager {
    void AddObstacle(CK3dEntity@ ent, bool moving = false, CK_GEOMETRICPRECISION precision = CKCOLLISION_BOX, bool hiera = false);
    int AddObstaclesByName(CKLevel@ level, const string&in name, bool moving = false, CK_GEOMETRICPRECISION precision = CKCOLLISION_BOX, bool hiera = false);
    bool BoxBoxIntersection(CK3dEntity@ ent1, bool hiera1, bool local1, CK3dEntity@ ent2, bool hiera2, bool local2);
    bool BoxFaceIntersection(CK3dEntity@ ent1, bool hiera1, bool local1, CK3dEntity@ ent2);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    bool DetectCollision(CK3dEntity@ ent, CK_GEOMETRICPRECISION precisionLevel, int replacementPrecision, int detectionPrecision, CK_IMPACTINFO impactFlags, ImpactDesc&out imp);
    bool FaceFaceIntersection(CK3dEntity@ ent1, CK3dEntity@ ent2);
    CK3dEntity@ GetFixedObstacle(int pos, bool level = false);
    int GetFixedObstacleCount(bool level = false);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    CK3dEntity@ GetMovingObstacle(int pos, bool level = false);
    int GetMovingObstacleCount(bool level = false);
    string GetName();
    CK3dEntity@ GetObstacle(int pos, bool level = false);
    int GetObstacleCount(bool level = false);
    uint GetValidFunctionsMask();
    bool IsHierarchyInCollisionWithHierarchy(CK3dEntity@ ent1, CK_GEOMETRICPRECISION precisionLevel1, CK3dEntity@ ent2, CK_GEOMETRICPRECISION precisionLevel2, CK3dEntity@&out sub, CK3dEntity@&out subob);
    bool IsInCollision(CK3dEntity@ ent, CK_GEOMETRICPRECISION precisionLevel1, CK3dEntity@ ent2, CK_GEOMETRICPRECISION precisionLevel2);
    CK3dEntity@ IsInCollisionWithHierarchy(CK3dEntity@ ent, CK_GEOMETRICPRECISION precisionLevel1, CK3dEntity@ ent2, CK_GEOMETRICPRECISION precisionLevel2);
    bool IsObstacle(CK3dEntity@ ent, bool moving = false);
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    bool ObstacleBetween(const VxVector&in pos, const VxVector&in endpos, float width, float height);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    void RemoveAllObstacles(bool level = true);
    void RemoveObstacle(CK3dEntity@ ent);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void StartProfile();
    void StopProfile();
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKContext {
    void ActivateManager(CKBaseManager@ manager, bool active);
    void AddProfileTime(CK_PROFILE_CATEGORY category, float time);
    const XObjectPointerArray& CKFillObjectsUnused();
    void ChangeObjectDynamic(CKObject@ obj, bool setDynamic = true);
    CKERROR ClearAll();
    CKObject@ CopyObject(CKObject@ src, CKDependencies&in dependencies = void, const string&in appendName = void, CK_OBJECTCREATION_OPTIONS options = CK_OBJECTCREATION_NONAMECHECK);
    const XObjectArray& CopyObjects(const XObjectArray&in srcObjects, CKDependencies&in dependencies = void, CK_OBJECTCREATION_OPTIONS options = CK_OBJECTCREATION_NONAMECHECK, const string&in appendName = void);
    CKFile@ CreateCKFile();
    CKParameterIn@ CreateCKParameterIn(const string&in name, CKGUID guid, bool dynamic = false);
    CKParameterIn@ CreateCKParameterIn(const string&in name, const string&in typeName, bool dynamic = false);
    CKParameterIn@ CreateCKParameterIn(const string&in name, int type, bool dynamic = false);
    CKParameterLocal@ CreateCKParameterLocal(const string&in name, CKGUID guid, bool dynamic = false);
    CKParameterLocal@ CreateCKParameterLocal(const string&in name, const string&in typeName, bool dynamic = false);
    CKParameterLocal@ CreateCKParameterLocal(const string&in name, int type, bool dynamic = false);
    CKParameterOperation@ CreateCKParameterOperation(const string&in name, CKGUID opguid, CKGUID resGuid, CKGUID p1Guid, CKGUID p2Guid);
    CKParameterOut@ CreateCKParameterOut(const string&in name, CKGUID guid, bool dynamic = false);
    CKParameterOut@ CreateCKParameterOut(const string&in name, const string&in typeName, bool dynamic = false);
    CKParameterOut@ CreateCKParameterOut(const string&in name, int type, bool dynamic = false);
    CKObject@ CreateObject(int cid, const string&in name = void, CK_OBJECTCREATION_OPTIONS options = CK_OBJECTCREATION_NONAMECHECK, CK_LOADMODE&out res = void);
    CKERROR DeleteCKFile(CKFile@ file);
    void DestroyAllDynamicObjects();
    CKERROR DestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR DestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR DestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    void EnableProfiling(bool enable);
    void ExecuteManagersOnPostRender(CKRenderContext@ dev);
    void ExecuteManagersOnPostSpriteRender(CKRenderContext@ dev);
    void ExecuteManagersOnPreRender(CKRenderContext@ dev);
    CKAttributeManager@ GetAttributeManager();
    CKBehaviorManager@ GetBehaviorManager();
    int GetCompressionLevel();
    CKLevel@ GetCurrentLevel();
    CKScene@ GetCurrentScene();
    CKDebugContext@ GetDebugContext();
    CKERROR GetFileInfo(NativeBuffer@ buffer, CKFileInfo&out fileInfo);
    CKERROR GetFileInfo(const string&in fileName, CKFileInfo&out fileInfo);
    CKERROR GetFileInfo(int size, NativePointer buffer, CKFileInfo&out fileInfo);
    CK_FILE_WRITEMODE GetFileWriteMode();
    CKBitmapProperties@ GetGlobalImagesSaveFormat();
    CK_TEXTURE_SAVEOPTIONS GetGlobalImagesSaveOptions();
    CK_SOUND_SAVEOPTIONS GetGlobalSoundsSaveOptions();
    CKBaseManager@ GetInactiveManager(int index);
    int GetInactiveManagerCount();
    string GetLastCmoLoaded();
    string GetLastFileLoaded();
    float GetLastUserProfileTime(uint slot);
    uint GetMainWindow();
    CKBaseManager@ GetManager(int index);
    CKBaseManager@ GetManagerByGuid(const CKGUID&in guid);
    CKBaseManager@ GetManagerByName(const string&in name);
    int GetManagerCount();
    XManagerHashTableIt GetManagers();
    CKMessageManager@ GetMessageManager();
    CKObject@ GetObject(uint id);
    CKObject@ GetObjectByName(const string&in name, CKObject@ previous = null);
    CKObject@ GetObjectByNameAndClass(const string&in name, int cid, CKObject@ previous = null);
    CKObject@ GetObjectByNameAndParentClass(const string&in name, int pcid, CKObject@ previous);
    int GetObjectCount();
    const XObjectPointerArray& GetObjectListByType(int cid, bool derived);
    int GetObjectSize(CKObject@ obj);
    int GetObjectsCountByClassID(int cid);
    int GetPVInformation();
    CKParameterManager@ GetParameterManager();
    CKPathManager@ GetPathManager();
    CKRenderContext@ GetPlayerRenderContext();
    void GetProfileStats(CKStats&out stats);
    CKRenderManager@ GetRenderManager();
    CKGUID GetSecureGuid();
    int GetSelectedRenderEngine();
    uint GetStartOptions();
    CKTimeManager@ GetTimeManager();
    bool HasManagerDuplicates(CKBaseManager@ manager);
    bool IsInClearAll();
    bool IsInDynamicCreationMode();
    bool IsInInterfaceMode();
    bool IsInLoad();
    bool IsInSave();
    bool IsManagerActive(CKBaseManager@ manager);
    bool IsPlaying();
    bool IsProfilingEnable();
    bool IsReseted();
    bool IsRunTime();
    CKERROR Load(NativeBuffer@ buffer, CKObjectArray@ objects, CK_LOAD_FLAGS loadFlags = CK_LOAD_DEFAULT);
    CKERROR Load(const string&in fileName, CKObjectArray@ objects, CK_LOAD_FLAGS loadFlags = CK_LOAD_DEFAULT, CKGUID&in readerGuid = void);
    CKERROR Load(int size, NativePointer buffer, CKObjectArray@ objects, CK_LOAD_FLAGS loadFlags = CK_LOAD_DEFAULT);
    CKERROR LoadAnimationOnCharacter(NativeBuffer@ buffer, CKObjectArray@ objects, CKCharacter@ carac, bool asDynamicObjects = false);
    CKERROR LoadAnimationOnCharacter(const string&in fileName, CKObjectArray@ objects, CKCharacter@ carac, CKGUID&in readerGuid = void, bool asDynamicObjects = false);
    CKERROR LoadAnimationOnCharacter(int size, NativePointer buffer, CKObjectArray@ objects, CKCharacter@ carac, bool asDynamicObjects = false);
    CKERROR OutputToConsole(const string&in str, bool beep = true);
    CKERROR OutputToInfo(const string&in format);
    CKERROR Pause();
    CKERROR Play();
    CKERROR Process();
    CKERROR ProcessDebugEnd();
    CKERROR ProcessDebugStart(float deltaTime = 20.0);
    bool ProcessDebugStep();
    CKERROR RefreshBuildingBlocks(const XGUIDArray&in guids);
    CKERROR RegisterNewManager(CKBaseManager@ manager);
    CKERROR Reset();
    CKERROR Save(const string&in fileName, CKObjectArray@ objects, uint saveFlags, CKDependencies&in dependencies = void, CKGUID&in readerGuid = void);
    CKERROR Select(const XObjectArray&in objects, bool clearSelection = true);
    uint SendInterfaceMessage(uint reason, uint param1, uint param2);
    void SetCompressionLevel(int level);
    void SetCurrentLevel(CKLevel@ level);
    void SetFileWriteMode(CK_FILE_WRITEMODE mode);
    void SetGlobalImagesSaveFormat(CKBitmapProperties@ format);
    void SetGlobalImagesSaveOptions(CK_TEXTURE_SAVEOPTIONS options);
    void SetGlobalSoundsSaveOptions(CK_SOUND_SAVEOPTIONS options);
    void SetLastCmoLoaded(const string&in str);
    void SetVirtoolsVersion(CK_VIRTOOLS_VERSION ver, uint build);
    CKERROR ShowSetup(int);
    CKERROR UICopyObjects(const XObjectArray&in, bool iClearClipboard = true);
    CKERROR UIPasteObjects(const XObjectArray&in);
    float UserProfileEnd(uint slot);
    void UserProfileStart(uint slot);
}

class CKCriticalSectionObject {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    bool EnterCriticalSection(CKBeObject@ asker);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool LeaveCriticalSection(CKBeObject@ asker);
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void Reset();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetName(const string&in name, bool shared = false);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKCurve {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddControlPoint(CKCurvePoint@ pt);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    void Close();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKERROR CreateLineMesh();
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    VxColor GetColor() const;
    CKCurvePoint@ GetControlPoint(int pos) const;
    int GetControlPointCount() const;
    CKMesh@ GetCurrentMesh() const;
    float GetFittingCoeff() const;
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    float GetLength() const;
    const VxMatrix& GetLocalMatrix() const;
    CKERROR GetLocalPos(float step, VxVector&out pos, VxVector&out dir = void) const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    CKERROR GetPos(float step, VxVector&out pos, VxVector&out dir = void) const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    int GetStepCount() const;
    CKERROR GetTangents(CKCurvePoint@ pt, VxVector&out input, VxVector&out output) const;
    CKERROR GetTangents(int index, VxVector&out input, VxVector&out output) const;
    CKERROR GetTangentsByIndex(int index, VxVector&out input, VxVector&out output) const;
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    CKERROR InsertControlPoint(CKCurvePoint@ prev, CKCurvePoint@ pt);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsOpen() const;
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void Open();
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllControlPoints();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveControlPoint(CKCurvePoint@ pt, bool removeAll = false);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    void SetColor(const VxColor&in color);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFittingCoeff(float fit);
    void SetFlags(uint flags);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR SetStepCount(int steps);
    CKERROR SetTangents(CKCurvePoint@ pt, const VxVector&in input, const VxVector&in output);
    CKERROR SetTangents(int index, const VxVector&in input, const VxVector&in output);
    CKERROR SetTangentsByIndex(int index, const VxVector&in input, const VxVector&in output);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void Update();
    void UpdateBox(bool world = true);
    CKERROR UpdateMesh();
    bool UpdateSkin();
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKCurvePoint {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    float GetBias();
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    float GetContinuity();
    CKMesh@ GetCurrentMesh() const;
    CKCurve@ GetCurve();
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    float GetLength();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    void GetTangents(VxVector&out input, VxVector&out output);
    float GetTension();
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsLinear();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsTCB();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void NotifyUpdate();
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetBias(float b);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    void SetContinuity(float c);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFlags(uint flags);
    void SetLinear(bool linear = false);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetTangents(const VxVector&in input, const VxVector&in output);
    void SetTension(float t);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    void UseTCB(bool use = true);
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKDataArray {
    void AddRow();
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    void Clear(bool params = true);
    void ColumnTransform(int c, CK_BINARYOPERATOR op, uint value);
    void ColumnsOperate(int c, CK_BINARYOPERATOR op, int c2, int cr);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void CreateGroup(int mc, CK_COMPOPERATOR op, uint key, int size, CKGroup@ group, int ec = 0);
    void ExecuteBehaviors(float delta);
    CKDataRow& FindRow(int c, CK_COMPOPERATOR op, uint key, int size = 0, int startIndex = 0);
    int FindRowIndex(int c, CK_COMPOPERATOR op, uint key, int size = 0, int startingIndex = 0);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    int GetColumnCount();
    string GetColumnName(int c);
    CKGUID GetColumnParameterGuid(int c);
    CK_ARRAYTYPE GetColumnType(int c);
    int GetCount(int c, CK_COMPOPERATOR op, uint key, int size = 0);
    NativePointer GetElement(int i, int c);
    CKObject@ GetElementObject(int i, int c);
    int GetElementStringValue(int i, int c, string&out value);
    bool GetHighest(int c, int&out row);
    uint GetID();
    int GetKeyColumn();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    bool GetLowest(int c, int&out row);
    int GetMemoryOccupation();
    string GetName();
    bool GetNearest(int c, NativePointer value, int&out row);
    uint GetObjectFlags();
    int GetPriority();
    CKDataRow& GetRow(int n);
    int GetRowCount();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    int GetStringValue(uint key, int c, string&out value);
    bool HasAttribute(int attribType);
    void InsertColumn(int cDest, CK_ARRAYTYPE type, const string&in name, CKGUID paramGuid = CKGUID(0, 0));
    CKDataRow& InsertRow(int n = -1);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    bool LoadElements(const string&in str, bool append, int column);
    void ModifyObjectFlags(uint add, uint remove);
    void MoveColumn(int cSrc, int cDest);
    void MoveRow(int rSrc, int rDest);
    bool PasteShortcut(int i, int c, CKParameter@ pout);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    uint Product(int c);
    void RandomShuffle();
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    void RemoveColumn(int c);
    void RemoveRow(int row);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKParameterOut@ RemoveShortcut(int i, int c);
    void Reverse();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetColumnName(int c, const string&in name);
    void SetColumnType(int c, CK_ARRAYTYPE type, CKGUID paramGuid = CKGUID(0, 0));
    bool SetElementObject(int i, int c, CKObject@ obj);
    bool SetElementStringValue(int i, int c, const string&in value);
    bool SetElementValueFromParameter(int i, int c, CKParameter@ pout);
    void SetKeyColumn(int c);
    void SetName(const string&in name, bool shared = false);
    void SetPriority(int priority);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Sort(int c, bool ascending);
    uint Sum(int c);
    void SwapRows(int i1, int i2);
    bool TestRow(int row, int c, CK_COMPOPERATOR op, uint key, int size = 0);
    void Unique(int c);
    bool WriteElements(const string&in str, int column, int number, bool append = false);
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKDataReader {
    CK_DATAREADER_FLAGS GetFlags();
    string GetOptionDescription(int i);
    int GetOptionsCount();
    CKPluginInfo GetReaderInfo();
    CKBitmapReader@ opCast();
    CKModelReader@ opCast();
    CKMovieReader@ opCast();
    CKSoundReader@ opCast();
    const CKBitmapReader@ opCast() const;
    const CKModelReader@ opCast() const;
    const CKMovieReader@ opCast() const;
    const CKSoundReader@ opCast() const;
}

class CKDataRow {
    CKDataRowIt Begin() const;
    void Clear();
    CKDataRowIt End() const;
    void Fill(const uint&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const uint&in o) const;
    void Insert(int pos, const uint&in o);
    bool IsHere(const uint&in o) const;
    void PopBack();
    void PopFront();
    void PushBack(const uint&in o);
    void PushFront(const uint&in o);
    void Resize(int size);
    int Size() const;
    void Swap(CKDataRow&inout other);
    void Swap(int pos1, int pos2);
    CKDataRow& opAddAssign(const CKDataRow&in other);
    CKDataRow& opAssign(const CKDataRow&in other);
    const uint& opIndex(uint index) const;
    uint& opIndex(uint index);
    CKDataRow& opSubAssign(const CKDataRow&in other);
}

class CKDataRowIt {
    const uint& Get() const;
    uint& Get();
    bool IsValid() const;
    CKDataRowIt& opAssign(const CKDataRowIt&in other);
    bool opEquals(const CKDataRowIt&in other) const;
    bool opNotEquals(const CKDataRowIt&in other) const;
    CKDataRowIt& opPreDec();
    CKDataRowIt& opPreInc();
}

class CKDebugContext {
    CKObjectArray BehaviorStack;
    CKBehavior@ CurrentBehavior;
    CKDEBUG_STATE CurrentBehaviorAction;
    CKBeObject@ CurrentObject;
    CKBehavior@ CurrentScript;
    int InDebug;
    CKObjectArray ObjectsToExecute;
    CKObjectArray ScriptsToExecute;
    CKBehavior@ SubBehavior;
    float delta;
    CKContext@ m_Context;
}

class CKDependencies {
    CKDependenciesIt Begin() const;
    void Clear();
    CKDependenciesIt End() const;
    void Fill(const uint&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const uint&in o) const;
    void Insert(int pos, const uint&in o);
    bool IsHere(const uint&in o) const;
    void ModifyOptions(int cid, uint add, uint remove);
    void PopBack();
    void PopFront();
    void PushBack(const uint&in o);
    void PushFront(const uint&in o);
    void Resize(int size);
    int Size() const;
    void Swap(CKDependencies&inout other);
    void Swap(int pos1, int pos2);
    CKDependencies& opAddAssign(const CKDependencies&in other);
    CKDependencies& opAssign(const CKDependencies&in other);
    const uint& opIndex(uint index) const;
    uint& opIndex(uint index);
    CKDependencies& opSubAssign(const CKDependencies&in other);
    CK_DEPENDENCIES_FLAGS m_Flags;
}

class CKDependenciesContext {
    void AddObjects(NativePointer ids, int count);
    bool ContainClassID(int cid);
    void Copy(const string&in appendString = void);
    XObjectArray FillDependencies();
    XObjectArray FillRemappedDependencies();
    CKERROR FinishPrepareDependencies(CKObject@ self, int cid);
    uint GetClassDependencies(int c);
    const XHashID& GetDependenciesMap() const;
    CKObject@ GetObjects(int i);
    int GetObjectsCount();
    bool IsDependenciesHere(uint id);
    bool IsInMode(CK_DEPENDENCIES_OPMODE m);
    CKObject@ Remap(CKObject@ obj);
    uint RemapID(uint&in id);
    void SetCreationMode(CK_OBJECTCREATION_OPTIONS m);
    void SetOperationMode(CK_DEPENDENCIES_OPMODE m);
    void StartDependencies(CKDependencies&in d);
    void StopDependencies();
}

class CKDependenciesIt {
    const uint& Get() const;
    uint& Get();
    bool IsValid() const;
    CKDependenciesIt& opAssign(const CKDependenciesIt&in other);
    bool opEquals(const CKDependenciesIt&in other) const;
    bool opNotEquals(const CKDependenciesIt&in other) const;
    CKDependenciesIt& opPreDec();
    CKDependenciesIt& opPreInc();
}

class CKDirectoryParser {
    string GetNextFile();
    void Reset();
    void Reset(const string&in dir, const string&in fileMask, bool recursive = false);
}

class CKEnumStruct {
    string GetEnumDescription(int index) const;
    int GetEnumValue(int index) const;
    int GetNumEnums() const;
    CKEnumStruct& opAssign(const CKEnumStruct&in other);
}

class CKFile {
    CKERROR EndSave();
    XFilePluginDependenciesArray& GetMissingPlugins();
    bool IncludeFile(const string&in file, int searchPathCategory = -1);
    bool IsObjectToBeSaved(uint id);
    CKERROR Load(NativePointer buffer, int bufferSize, CKObjectArray@ objArray, CK_LOAD_FLAGS flags = CK_LOAD_DEFAULT);
    CKERROR Load(const string&in filename, CKObjectArray@ objArray, CK_LOAD_FLAGS flags = CK_LOAD_DEFAULT);
    void LoadAndSave(const string&in filename, const string&in newFileName);
    CKERROR LoadFileData(CKObjectArray@ objArray);
    CKERROR OpenFile(const string&in filename, CK_LOAD_FLAGS flags = CK_LOAD_DEFAULT);
    CKERROR OpenMemory(NativePointer buffer, int bufferSize, CK_LOAD_FLAGS flags = CK_LOAD_DEFAULT);
    void RemapManagerInt(CKGUID manager, NativePointer conversionTable, int tableSize);
    void SaveObject(CKObject@ obj, uint flags = CK_STATESAVE_ALL);
    void SaveObjectAsReference(CKObject@ obj);
    void SaveObjects(CKObjectArray@ objArray, uint flags = CK_STATESAVE_ALL);
    void SaveObjects(const XObjectArray&in ids, uint flags = CK_STATESAVE_ALL);
    CKERROR StartSave(const string&in filename, uint flags = CK_STATESAVE_ALL);
    void UpdateAndApplyAnimationsTo(CKCharacter@ character);
}

class CKFileExtension {
    string opImplConv() const;
}

class CKFileInfo {
    CKFileInfo& opAssign(const CKFileInfo&in other);
    uint CKVersion;
    uint Crc;
    uint DataPackSize;
    uint DataUnPackSize;
    uint FileSize;
    uint FileVersion;
    uint FileWriteMode;
    uint Hdr1PackSize;
    uint Hdr1UnPackSize;
    uint ManagerCount;
    uint MaxIDSaved;
    uint ObjectCount;
    uint ProductBuild;
    uint ProductVersion;
}

class CKFileManagerData {
    CKFileManagerData& opAssign(const CKFileManagerData&in other);
    CKGUID Manager;
    CKStateChunk@ data;
}

class CKFileObject {
    bool CanBeLoad();
    void CleanData();
    string get_Name() const;
    CKFileObject& opAssign(const CKFileObject&in other);
    void set_Name(const string&in value);
    uint CreatedObject;
    CKStateChunk@ Data;
    int FileIndex;
    CKObject@ ObjPtr;
    uint Object;
    int ObjectCid;
    CK_FO_OPTIONS Options;
    int PostPackSize;
    int PrePackSize;
    uint SaveFlags;
}

class CKFilePluginDependencies {
    CKFilePluginDependencies& opAssign(const CKFilePluginDependencies&in other);
    XBitArray ValidGuids;
    int m_PluginCategory;
}

class CKFlagsStruct {
    string GetFlagDescription(int index) const;
    int GetFlagValue(int index) const;
    int GetNumFlags() const;
    CKFlagsStruct& opAssign(const CKFlagsStruct&in other);
}

class CKFloorManager {
    void AddFloorObject(CK3dEntity@ ent, CK_FLOORGEOMETRY geo, bool moving, int type, bool hiera, bool first);
    int AddFloorObjectsByName(CKLevel@ level, const string&in floorName, CK_FLOORGEOMETRY geo, bool moving, int type, bool hiera, bool first);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    bool ConstrainToFloor(const VxVector&in oldPos, const VxVector&in position, float radius, VxVector&out oPosition, int excludeAttribute = -1);
    int GetCacheSize();
    float GetCacheThreshold();
    int GetFloorAttribute();
    CK3dEntity@ GetFloorObject(int pos);
    int GetFloorObjectCount();
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    float GetLimitAngle();
    string GetName();
    CK_FLOORNEAREST GetNearestFloor(const VxVector&in position, CK3dEntity@&out floor, int&out faceIndex, VxVector&out normal = void, float&out distance = void, CK3dEntity@ excludeFloor = null);
    CK_FLOORNEAREST GetNearestFloors(const VxVector&in position, CKFloorPoint&out floorPoint, CK3dEntity@ excludeFloor = null);
    uint GetValidFunctionsMask();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    bool ReadAttributeValues(CK3dEntity@ ent, uint&out geo = void, bool&out moving = void, int&out type = void, bool&out hiera = void, bool&out first = void);
    void RemoveFloorObject(CK3dEntity@ ent);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void SetCacheSize(int size);
    void SetCacheThreshold(float t);
    void SetLimitAngle(float angle);
    void StartProfile();
    void StopProfile();
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKFloorPoint {
    void Clear();
    CKFloorPoint& opAssign(const CKFloorPoint&in other);
    float m_DownDistance;
    int m_DownFaceIndex;
    uint m_DownFloor;
    VxVector m_DownNormal;
    float m_UpDistance;
    int m_UpFaceIndex;
    uint m_UpFloor;
    VxVector m_UpNormal;
}

class CKGrid {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddClassification(const string&in name);
    CKERROR AddClassification(int classification);
    CKLayer@ AddDefaultLayer(int format = CKGRID_LAYER_FORMAT_NORMAL);
    CKLayer@ AddLayer(const string&in typeName, int format = CKGRID_LAYER_FORMAT_NORMAL);
    CKLayer@ AddLayer(int type, int format = CKGRID_LAYER_FORMAT_NORMAL);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    void ConstructMeshTexture(float opacity = 0.5);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    void DestroyMeshTexture();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    float Get2dCoordsFrom3dPos(const VxVector&in pos3d, int&out x, int&out y);
    void Get3dPosFrom2dCoords(VxVector&out pos3d, int x, int z);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    uint GetFlags() const;
    int GetGridPriority();
    float GetHeightValidity();
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    CKLayer@ GetLayer(const string&in typeName);
    CKLayer@ GetLayer(int type);
    CKLayer@ GetLayerByIndex(int index);
    int GetLayerCount();
    int GetLength();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK_GRIDORIENTATION GetOrientationMode();
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    int GetWidth();
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    bool HasCompatibleClass(CK3dEntity@ entity);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActive();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllLayers();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveClassification(const string&in name);
    CKERROR RemoveClassification(int classification);
    CKERROR RemoveLayer(const string&in typeName);
    CKERROR RemoveLayer(int type);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetDimensions(int width, int length, float sizeX, float sizeY);
    void SetFlags(uint flags);
    void SetGridPriority(int priority);
    void SetHeightValidity(float heightValidity);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetOrientationMode(CK_GRIDORIENTATION orientation);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKGridManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    void FillGridWithObjectShape(CK3dEntity@ ent, int layerType, const CKSquare&in fillVal);
    void FillGridWithObjectShape(CK3dEntity@ ent, int layerType, float&in fillVal);
    void FillGridWithObjectShape(CK3dEntity@ ent, int layerType, int&in fillVal);
    void FillGridWithObjectShape(CK3dEntity@ ent, int solidLayerType, int shapeLayerType, const CKSquare&in fillVal);
    void FillGridWithObjectShape(CK3dEntity@ ent, int solidLayerType, int shapeLayerType, float&in fillVal);
    void FillGridWithObjectShape(CK3dEntity@ ent, int solidLayerType, int shapeLayerType, int&in fillVal);
    CKERROR GetAssociatedColor(int type, VxColor&out color);
    CKGUID GetAssociatedParam(int type);
    int GetClassificationFromName(const string&in name);
    string GetClassificationName(int classification);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    const XObjectPointerArray& GetGridArray(int flag = 0);
    int GetGridClassificationCategory();
    CKGrid@ GetGridObject(int pos, int flag = 0);
    int GetGridObjectCount(int flag = 0);
    CKGUID GetGuid();
    int GetLayerTypeCount();
    string GetName();
    CKGrid@ GetNearestGrid(VxVector&in pos, CK3dEntity@ ref = null);
    CKGrid@ GetPreferredGrid(VxVector&in pos, CK3dEntity@ ref = null);
    int GetTypeFromName(const string&in name);
    string GetTypeName(int type);
    uint GetValidFunctionsMask();
    void Init();
    bool IsInGrid(CKGrid@ grid, VxVector&in pos, CK3dEntity@ ref = null);
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    int RegisterClassification(const string&in name);
    int RegisterType(const string&in name);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    CKERROR SetAssociatedColor(int type, VxColor&in color);
    CKERROR SetAssociatedParam(int type, CKGUID param);
    CKERROR SetTypeName(int type, const string&in name);
    void StartProfile();
    void StopProfile();
    int UnRegisterType(const string&in name);
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKGroup {
    CKERROR AddObject(CKBeObject@ obj);
    CKERROR AddObjectFront(CKBeObject@ obj);
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    void Clear();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    int GetCommonClassID();
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    int GetMemoryOccupation();
    string GetName();
    CKBeObject@ GetObject(int);
    int GetObjectCount();
    uint GetObjectFlags();
    int GetPriority();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    bool HasAttribute(int attribType);
    CKERROR InsertObjectAt(CKBeObject@ obj, int pos);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void MoveObjectDown(CKBeObject@ obj);
    void MoveObjectUp(CKBeObject@ obj);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    CKBeObject@ RemoveObject(int pos);
    void RemoveObject(CKBeObject@ obj);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetName(const string&in name, bool shared = false);
    void SetPriority(int priority);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKGUID {
    bool IsValid() const;
    CKGUID& opAssign(const CKGUID&in other);
    int opCmp(const CKGUID&in other) const;
    uint d1;
    uint d2;
}

class CKIkJoint {
    VxVector m_Damping;
    uint m_Flags;
    VxVector m_Max;
    VxVector m_Min;
}

class CKInputManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    void EnableKeyboardRepetition(bool enable = true);
    bool GetCursorVisibility();
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    uint GetJoystickButtonsState(int joystick);
    void GetJoystickPointOfViewAngle(int joystick, float&out angle);
    void GetJoystickPosition(int joystick, VxVector&out position);
    void GetJoystickRotation(int joystick, VxVector&out rotation);
    void GetJoystickSliders(int joystick, Vx2DVector&out position);
    int GetKeyFromBuffer(int index, uint&out key, uint&out timeStamp = void);
    uint GetKeyFromName(const string&in keyName);
    int GetKeyName(uint key, string&out keyName);
    NativePointer GetKeyboardState();
    NativeBuffer@ GetKeyboardStateSnapshot();
    void GetMouseButtonsState(uint8&out left, uint8&out right, uint8&out middle, uint8&out extra);
    void GetMousePosition(Vx2DVector&out position, bool absolute = true);
    void GetMouseRelativePosition(VxVector&out position);
    string GetName();
    int GetNumberOfKeyInBuffer();
    VXCURSOR_POINTER GetSystemCursor();
    uint GetValidFunctionsMask();
    bool IsJoystickAttached(int joystick);
    bool IsJoystickButtonDown(int joystick, int button);
    bool IsKeyDown(uint key, uint&out stamp = void);
    bool IsKeyToggled(uint key, uint&out stamp = void);
    bool IsKeyUp(uint key);
    bool IsKeyboardAttached();
    bool IsKeyboardRepetitionEnabled();
    bool IsMouseAttached();
    bool IsMouseButtonDown(CK_MOUSEBUTTON button);
    bool IsMouseClicked(CK_MOUSEBUTTON button);
    bool IsMouseToggled(CK_MOUSEBUTTON button);
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    void Pause(bool pause);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void SetSystemCursor(VXCURSOR_POINTER cursor);
    void ShowCursor(bool show);
    void StartProfile();
    void StopProfile();
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKInterfaceManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorEditionFunction(CKBehavior@ beh, NativePointer arg);
    int CallBehaviorSettingsEditionFunction(CKBehavior@ beh, NativePointer arg);
    int CallEditionFunction(int cid, NativePointer arg);
    int DoRenameDialog(string&inout name, int cid);
    NativePointer GetEditorFunctionForParameterType(CKParameterTypeDesc&in param);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    string GetName();
    uint GetValidFunctionsMask();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void StartProfile();
    void StopProfile();
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKInterfaceObjectManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetName(const string&in name, bool shared = false);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKKey {
    float GetTime();
    void SetTime(float t);
    CKKey& opAssign(const CKKey&in);
    float TimeStep;
}

class CKKeyedAnimation {
    CKERROR AddAnimation(CKObjectAnimation@ anim);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    bool CanBeInterrupt();
    void CheckPostDeletion();
    void CheckPreDeletion();
    void Clear();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKAnimation@ CreateMergedAnimation(CKAnimation@ anim2, bool dynamic = false);
    float CreateTransition(CKAnimation@ input, CKAnimation@ output, uint outTransitionMode, float length = 6.0, float frameTo = 0);
    bool DoesCharacterTakeOrientation();
    CKObjectAnimation@ GetAnimation(CK3dEntity@ ent);
    CKObjectAnimation@ GetAnimation(int index);
    int GetAnimationCount();
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    CKCharacter@ GetCharacter();
    int GetClassID();
    uint GetFlags();
    float GetFrame();
    uint GetID();
    float GetLength();
    float GetLinkedFrameRate();
    int GetMemoryOccupation();
    float GetMergeFactor();
    string GetName();
    float GetNextFrame(float delta);
    uint GetObjectFlags();
    CK3dEntity@ GetRootEntity();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CK_SECONDARYANIMATION_FLAGS GetSecondaryAnimationMode();
    float GetStep();
    CK_ANIMATION_TRANSITION_MODE GetTransitionMode();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsLinkedToFrameRate();
    bool IsMerged();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    void LinkToFrameRate(bool link, float fps = 30.0);
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKERROR RemoveAnimation(CKObjectAnimation@ anim);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetCanBeInterrupt(bool can = true);
    void SetCharacterOrientation(bool orient = true);
    void SetCurrentStep(float step);
    void SetFlags(uint flags);
    void SetFrame(float frame);
    void SetLength(float nbFrame);
    void SetMergeFactor(float frame);
    void SetName(const string&in name, bool shared = false);
    void SetSecondaryAnimationMode(CK_SECONDARYANIMATION_FLAGS mode);
    void SetStep(float step);
    void SetTransitionMode(CK_ANIMATION_TRANSITION_MODE mode);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKAnimation@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKAnimation@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKKinematicChain {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetChainBodyCount(CKBodyPart@ end = null);
    float GetChainLength(CKBodyPart@ end = null);
    int GetClassID();
    CKBodyPart@ GetEffector(int pos);
    CKBodyPart@ GetEndEffector();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKBodyPart@ GetStartEffector();
    CKERROR IKSetEffectorPos(const VxVector&in pos, CK3dEntity@ ref = null, CKBodyPart@ body = null);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    CKERROR SetEndEffector(CKBodyPart@ end);
    void SetName(const string&in name, bool shared = false);
    CKERROR SetStartEffector(CKBodyPart@ start);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKLayer {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    NativeBuffer@ CopySquareArray();
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    int GetFormat();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    uint GetOwner();
    NativePointer GetSquareArray();
    int GetType();
    void GetValue(int x, int y, NativeBuffer@ val);
    void GetValue(int x, int y, NativePointer val);
    bool GetValue2(int x, int y, NativeBuffer@ val);
    bool GetValue2(int x, int y, NativePointer val);
    void InitOwner(uint owner);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetFormat(int format);
    void SetName(const string&in name, bool shared = false);
    void SetOwner(uint owner);
    bool SetSquareArray(NativeBuffer@ sqArray);
    void SetSquareArray(NativePointer sqArray);
    void SetType(int type);
    void SetValue(int x, int y, NativeBuffer@ val);
    void SetValue(int x, int y, NativePointer val);
    bool SetValue2(int x, int y, NativeBuffer@ val);
    bool SetValue2(int x, int y, NativePointer val);
    void SetVisible(bool vis = true);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKLevel {
    CKERROR AddObject(CKObject@ obj);
    CKERROR AddPlace(CKPlace@ place);
    void AddRenderContext(CKRenderContext@ dev, bool main = false);
    CKERROR AddScene(CKScene@ scene);
    CKERROR AddScript(CKBehavior@ ckb);
    void BeginAddSequence(bool begin);
    void BeginRemoveSequence(bool begin);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    const XObjectPointerArray& ComputeObjectList(int cid, bool derived = true);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    CKScene@ GetCurrentScene();
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    CKScene@ GetLevelScene();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKPlace@ GetPlace(int pos);
    int GetPlaceCount();
    int GetPriority();
    CKRenderContext@ GetRenderContext(int count);
    int GetRenderContextCount();
    CKScene@ GetScene(int pos);
    int GetSceneCount();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    bool HasAttribute(int attribType);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR LaunchScene(CKScene@ scene, CK_SCENEOBJECTACTIVITY_FLAGS active = CK_SCENEOBJECTACTIVITY_SCENEDEFAULT, CK_SCENEOBJECTRESET_FLAGS reset = CK_SCENEOBJECTRESET_RESET);
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    CKERROR Merge(CKLevel@ mergedLevel, bool asScene);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    CKERROR RemoveObject(CKObject@ obj);
    CKERROR RemoveObject(uint id);
    CKERROR RemovePlace(CKPlace@ place);
    CKPlace@ RemovePlace(int pos);
    void RemoveRenderContext(CKRenderContext@ dev);
    CKERROR RemoveScene(CKScene@ scene);
    CKScene@ RemoveScene(int pos);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetName(const string&in name, bool shared = false);
    CKERROR SetNextActiveScene(CKScene@ scene, CK_SCENEOBJECTACTIVITY_FLAGS active = CK_SCENEOBJECTACTIVITY_SCENEDEFAULT, CK_SCENEOBJECTRESET_FLAGS reset = CK_SCENEOBJECTRESET_RESET);
    void SetPriority(int priority);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKLight {
    void Active(bool active);
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    bool GetActivity();
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    const VxColor& GetColor();
    float GetConstantAttenuation();
    CKMesh@ GetCurrentMesh() const;
    float GetFallOff();
    float GetFallOffShape();
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    float GetHotSpot();
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    float GetLightPower();
    float GetLinearAttenuation();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    float GetQuadraticAttenuation();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    float GetRange();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    bool GetSpecularFlag();
    VXLIGHT_TYPE GetType();
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    void SetColor(const VxColor&in c);
    void SetConstantAttenuation(float value);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFallOff(float value);
    void SetFallOffShape(float value);
    void SetFlags(uint flags);
    void SetHotSpot(float value);
    void SetLightPower(float power = 1.0);
    void SetLinearAttenuation(float value);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuadraticAttenuation(float value);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRange(float value);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetSpecularFlag(bool specular);
    void SetType(VXLIGHT_TYPE type);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CKTargetLight@ opCast();
    const CKTargetLight@ opCast() const;
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKListenerSettings {
    CKListenerSettings& opAssign(const CKListenerSettings&in other);
    float m_DistanceFactor;
    float m_DopplerFactor;
    float m_GlobalGain;
    float m_PriorityBias;
    float m_RollOff;
    uint m_SoftwareSources;
}

class CKMaterial {
    CKERROR AddScript(CKBehavior@ ckb);
    bool AlphaBlendEnabled() const;
    bool AlphaTestEnabled() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void EnableAlphaBlend(bool blend = true);
    void EnableAlphaTest(bool enable = true);
    void EnablePerspectiveCorrection(bool perspective = true);
    void EnableZWrite(bool zWrite = true);
    void ExecuteBehaviors(float delta);
    VXCMPFUNC GetAlphaFunc() const;
    uint8 GetAlphaRef() const;
    const VxColor& GetAmbient() const;
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    NativePointer GetCallback(NativePointer&out argument = void);
    int GetClassID();
    VXBLEND_MODE GetDestBlend() const;
    const VxColor& GetDiffuse() const;
    VX_EFFECT GetEffect() const;
    CKParameter@ GetEffectParameter() const;
    const VxColor& GetEmissive() const;
    VXFILL_MODE GetFillMode() const;
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    float GetPower() const;
    int GetPriority();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    VXSHADE_MODE GetShadeMode() const;
    VXBLEND_MODE GetSourceBlend() const;
    const VxColor& GetSpecular() const;
    CKTexture@ GetTexture(int texIndex = 0);
    VXTEXTURE_ADDRESSMODE GetTextureAddressMode() const;
    VXTEXTURE_BLENDMODE GetTextureBlendMode() const;
    uint GetTextureBorderColor() const;
    VXTEXTURE_FILTERMODE GetTextureMagMode() const;
    VXTEXTURE_FILTERMODE GetTextureMinMode() const;
    VXCMPFUNC GetZFunc() const;
    bool HasAttribute(int attribType);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAlphaTransparent() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsTwoSided() const;
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    bool PerspectiveCorrectionEnabled() const;
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAlphaFunc(VXCMPFUNC alphaFunc = VXCMP_ALWAYS);
    void SetAlphaRef(uint8 alphaRef = 0);
    void SetAmbient(const VxColor&in color);
    void SetAppData(NativePointer data);
    bool SetAsCurrent(CKRenderContext@ dev, bool lit = true, int textureStage = 0);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetCallback(NativePointer fct, NativePointer argument);
    void SetDestBlend(VXBLEND_MODE blendMode);
    void SetDiffuse(const VxColor&in color);
    void SetEffect(VX_EFFECT effect);
    void SetEmissive(const VxColor&in color);
    void SetFillMode(VXFILL_MODE fillMode);
    void SetName(const string&in name, bool shared = false);
    void SetPower(float value);
    void SetPriority(int priority);
    void SetShadeMode(VXSHADE_MODE shadeMode);
    void SetSourceBlend(VXBLEND_MODE blendMode);
    void SetSpecular(const VxColor&in color);
    void SetTexture(CKTexture@ tex);
    void SetTexture(int texIndex, CKTexture@ tex);
    void SetTextureAddressMode(VXTEXTURE_ADDRESSMODE mode);
    void SetTextureBlendMode(VXTEXTURE_BLENDMODE blendMode);
    void SetTextureBorderColor(uint color);
    void SetTextureMagMode(VXTEXTURE_FILTERMODE filterMode);
    void SetTextureMinMode(VXTEXTURE_FILTERMODE filterMode);
    void SetTwoSided(bool twoSided);
    void SetZFunc(VXCMPFUNC zFunc = VXCMP_LESSEQUAL);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    bool ZWriteEnabled() const;
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKMesh {
    void ActivateAllChannels(bool active = true);
    void ActivateChannel(int index, bool active = true);
    int AddChannel(CKMaterial@ mat, bool copySrcUv = true);
    bool AddPostRenderCallBack(CK_MESHRENDERCALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_MESHRENDERCALLBACK@ callback, bool temporary = false);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AddSubMeshPostRenderCallBack(CK_SUBMESHRENDERCALLBACK@ callback, bool temporary = false);
    bool AddSubMeshPreRenderCallBack(CK_SUBMESHRENDERCALLBACK@ callback, bool temporary = false);
    void ApplyGlobalMaterial(CKMaterial@ mat);
    void BuildFaceNormals();
    void BuildNormals();
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeFaceChannelMask(int faceIndex, uint16 addChannelMask, uint16 removeChannelMask);
    void CheckPostDeletion();
    void CheckPreDeletion();
    void Clean(bool keepVertices = false);
    void ColorChanged();
    void Consolidate();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void CreateLineStrip(int startingLine, int count, int startingVertexIndex);
    CKERROR CreatePM();
    void DestroyPM();
    void DissociateAllFaces();
    void EnablePMGeoMorph(bool enable);
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    void GetBaryCenter(VxVector&out vector) const;
    CKContext@ GetCKContext();
    int GetChannelByMaterial(CKMaterial@ mat) const;
    int GetChannelCount() const;
    VXBLEND_MODE GetChannelDestBlend(int index) const;
    uint GetChannelFlags(int index) const;
    CKMaterial@ GetChannelMaterial(int index) const;
    VXBLEND_MODE GetChannelSourceBlend(int index) const;
    int GetClassID();
    NativePointer GetColorsPtr(NativePointer stride);
    uint16 GetFaceChannelMask(int faceIndex);
    int GetFaceCount() const;
    CKMaterial@ GetFaceMaterial(int index);
    const VxVector& GetFaceNormal(int index);
    NativePointer GetFaceNormalsPtr(NativePointer stride);
    VxVector& GetFaceVertex(int FaceIndex, int vertexIndex);
    void GetFaceVertexIndex(int index, int&out vertex1, int&out vertex2, int&out vertex3);
    NativePointer GetFacesIndices();
    uint GetFlags() const;
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    void GetLine(int lineIndex, int&out vIndex1, int&out vIndex2);
    int GetLineCount();
    NativePointer GetLineIndices();
    VXMESH_LITMODE GetLitMode() const;
    const VxBbox& GetLocalBox() const;
    CKMaterial@ GetMaterial(int index) const;
    int GetMaterialCount() const;
    int GetMemoryOccupation();
    int GetModifierUVCount(int channel = -1) const;
    NativePointer GetModifierUVs(NativePointer stride, int channel = -1);
    int GetModifierVertexCount() const;
    NativePointer GetModifierVertices(NativePointer stride);
    string GetName();
    NativePointer GetNormalsPtr(NativePointer stride);
    uint GetObjectFlags();
    int GetPMGeoMorphStep() const;
    NativePointer GetPositionsPtr(NativePointer stride);
    int GetPriority();
    float GetRadius() const;
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    NativePointer GetSpecularColorsPtr(NativePointer stride);
    NativePointer GetTextureCoordinatesPtr(NativePointer stride, int channel = -1);
    uint GetVertexColor(int index) const;
    int GetVertexCount() const;
    void GetVertexNormal(int index, VxVector&out vector);
    void GetVertexPosition(int index, VxVector&out vector);
    uint GetVertexSpecularColor(int index) const;
    void GetVertexTextureCoordinates(int index, float&out u, float&out v, int channel = -1);
    float GetVertexWeight(int index) const;
    int GetVertexWeightsCount() const;
    NativePointer GetVertexWeightsPtr();
    int GetVerticesRendered() const;
    VXTEXTURE_WRAPMODE GetWrapMode() const;
    bool HasAttribute(int attribType);
    void InverseWinding();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsChannelActive(int index) const;
    bool IsChannelLit(int index) const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPM() const;
    bool IsPMGeoMorphEnabled() const;
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsTransparent() const;
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    void LitChannel(int index, bool lit = true);
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LoadVertices(CKStateChunk@ chunk);
    void ModifierUVMove();
    void ModifierVertexMove(bool rebuildNormals, bool rebuildFaceNormals);
    void ModifyObjectFlags(uint add, uint remove);
    void NormalChanged();
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    void RemoveChannel(CKMaterial@ mat);
    void RemoveChannel(int index);
    bool RemovePostRenderCallBack(CK_MESHRENDERCALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_MESHRENDERCALLBACK@ callback);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool RemoveSubMeshPostRenderCallBack(CK_SUBMESHRENDERCALLBACK@ callback);
    bool RemoveSubMeshPreRenderCallBack(CK_SUBMESHRENDERCALLBACK@ callback);
    CKERROR Render(CKRenderContext@ dev, CK3dEntity@ mov);
    void ReplaceMaterial(CKMaterial@ oldMat, CKMaterial@ newMat);
    void RotateVertices(const VxVector&in vector, float angle);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void ScaleVertices(const VxVector&in vector, const VxVector&in pivot = void);
    void ScaleVertices(float x, float y, float z, const VxVector&in pivot = void);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetChannelDestBlend(int index, VXBLEND_MODE blendMode);
    void SetChannelFlags(int index, uint flags);
    void SetChannelMaterial(int index, CKMaterial@ mat);
    void SetChannelSourceBlend(int index, VXBLEND_MODE blendMode);
    void SetDefaultRenderCallBack();
    void SetFaceChannelMask(int faceIndex, uint16 channelMask);
    bool SetFaceCount(int count);
    void SetFaceMaterial(NativeBuffer@ faceIndices, int faceCount, CKMaterial@ mat);
    void SetFaceMaterial(NativePointer faceIndices, int faceCount, CKMaterial@ mat);
    void SetFaceMaterial(int faceIndex, CKMaterial@ mat);
    void SetFaceVertexIndex(int faceIndex, int vertex1, int vertex2, int vertex3);
    void SetFlags(uint flags);
    void SetLine(int lineIndex, int vIndex1, int vIndex2);
    bool SetLineCount(int count);
    void SetLitMode(VXMESH_LITMODE mode);
    void SetName(const string&in name, bool shared = false);
    void SetPMGeoMorphStep(int gs);
    void SetPriority(int priority);
    void SetRenderCallBack(CK_MESHRENDERCALLBACK@ callback);
    void SetTransparent(bool transparency);
    void SetVertexColor(int index, uint color);
    bool SetVertexCount(int count);
    void SetVertexNormal(int index, const VxVector&in vector);
    void SetVertexPosition(int index, const VxVector&in vector);
    void SetVertexSpecularColor(int index, uint color);
    void SetVertexTextureCoordinates(int index, float u, float v, int channel = -1);
    void SetVertexWeight(int index, float w);
    void SetVertexWeightsCount(int count);
    void SetVerticesRendered(int count);
    void SetWrapMode(VXTEXTURE_WRAPMODE mode);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void TranslateVertices(NativePointer vector);
    void TranslateVertices(const VxVector&in vector);
    void UVChanged();
    void UnOptimize();
    void VertexMove();
    CKPatchMesh@ opCast();
    const CKPatchMesh@ opCast() const;
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKMessage {
    CKERROR AddParameter(CKParameter@ param, bool deleteParameterWithMessage = false);
    int GetMsgType();
    CKParameter@ GetParameter(int pos);
    int GetParameterCount();
    CKObject@ GetRecipient();
    CKBeObject@ GetSender();
    CK_MESSAGE_SENDINGTYPE GetSendingType();
    CKERROR RemoveParameter(CKParameter@ param);
    CKERROR SetBroadcastObjectType(int type = CKCID_BEOBJECT);
    void SetMsgType(int type);
    void SetRecipient(CKObject@ recipient);
    void SetSender(CKBeObject@ obj);
    void SetSendingType(CK_MESSAGE_SENDINGTYPE type);
}

class CKMessageManager {
    int AddMessageType(const string&in msgName);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    int GetMessageTypeCount();
    string GetMessageTypeName(int msgType);
    string GetName();
    uint GetValidFunctionsMask();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKERROR RegisterDefaultMessages();
    CKERROR RegisterWait(const string&in msgName, CKBehavior@ beh, int OutputToActivate, CKBeObject@ obj);
    CKERROR RegisterWait(int msgType, CKBehavior@ beh, int outputToActivate, CKBeObject@ obj);
    void RenameMessageType(const string&in oldName, const string&in newName);
    void RenameMessageType(int msgType, const string&in newName);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SendMessage(CKMessage@ msg);
    CKMessage@ SendMessageBroadcast(int MsgType, int id = 0, CKBeObject@ sender = null);
    CKMessage@ SendMessageGroup(int MsgType, CKGroup@ group, CKBeObject@ sender = null);
    CKMessage@ SendMessageSingle(int MsgType, CKBeObject@ dest, CKBeObject@ sender = null);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void StartProfile();
    void StopProfile();
    CKERROR UnRegisterWait(const string&in msgName, CKBehavior@ beh, int OutputToActivate);
    CKERROR UnRegisterWait(int msgType, CKBehavior@ beh, int OutputToActivate);
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKMidiManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    CKERROR CloseFile(NativePointer source);
    NativePointer Create(NativePointer hwnd);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    string GetName();
    string GetSoundFileName(NativePointer source);
    uint GetValidFunctionsMask();
    bool IsPaused(NativePointer source);
    bool IsPlaying(NativePointer source);
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    uint MillisecsToTicks(NativePointer source, uint msOffset);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR OpenFile(NativePointer source);
    CKERROR Pause(NativePointer source, bool pause = true);
    CKERROR Play(NativePointer source);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKERROR Preroll(NativePointer source);
    void Release(NativePointer source);
    CKERROR Restart(NativePointer source);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    CKERROR SetSoundFileName(NativePointer source, const string&in filename);
    void StartProfile();
    CKERROR Stop(NativePointer source);
    void StopProfile();
    uint TicksToMillisecs(NativePointer source, uint tkOffset);
    CKERROR Time(NativePointer source, uint&out ticks);
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKMidiSound {
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetCurrentPos();
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    int GetPriority();
    CK_SOUND_SAVEOPTIONS GetSaveOptions();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    string GetSoundFileName();
    bool HasAttribute(int attribType);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPaused();
    bool IsPlaying();
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    CKERROR Pause(bool pause = true);
    CKERROR Play();
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetName(const string&in name, bool shared = false);
    void SetPriority(int priority);
    void SetSaveOptions(CK_SOUND_SAVEOPTIONS options);
    CKERROR SetSoundFileName(const string&in filename);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKERROR Stop();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    CKSound@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
    const CKSound@ opImplCast() const;
}

class CKModelReader {
    CK_DATAREADER_FLAGS GetFlags();
    string GetOptionDescription(int i);
    int GetOptionsCount();
    CKPluginInfo GetReaderInfo();
    CKERROR Load(CKContext@ context, const string&in filename, CKObjectArray@ objArray, uint loadFlags, CKCharacter@ carac = null);
    CKERROR Save(CKContext@ context, const string&in filename, CKObjectArray@ objArray, uint saveFlags);
    CKDataReader@ opImplCast();
    const CKDataReader@ opImplCast() const;
}

class CKMorphController {
    int AddKey(float timeStep, bool allocateNormals);
    int AddMorphKey(CKMorphKey&in key, bool allocateNormals = true);
    int AddMorphKey(float timeStep, int vertexCount, NativeBuffer@ positions, NativeBuffer@ normals = null);
    bool Clone(CKAnimController@ control);
    bool Compare(CKAnimController@ control, float threshold = 0.0);
    NativeBuffer@ DumpKeys();
    int DumpKeysTo(NativeBuffer@ buffer = null);
    bool Evaluate(float timeStep, int vertexCount, NativeBuffer@ vertices, uint vertexStride, NativeBuffer@ normals = null);
    int GetKeyCount();
    float GetLength();
    CKMorphKey& GetMorphKey(int index);
    uint GetType();
    int ReadKeysFrom(NativeBuffer@ buffer);
    void RemoveKey(int index);
    void SetLength(float l);
    void SetMorphVertexCount(int count);
    CKAnimController@ opImplCast();
    const CKAnimController@ opImplCast() const;
}

class CKMorphKey {
    bool Compare(CKMorphKey&in key, int nbVertex, float threshold);
    NativePointer GetNormArray() const;
    NativePointer GetPosArray() const;
    float GetTime();
    void SetNormArray(NativePointer pointer);
    void SetPosArray(NativePointer pointer);
    void SetTime(float t);
    CKMorphKey& opAssign(const CKMorphKey&in);
    CKKey opImplConv() const;
    float TimeStep;
}

class CKMovieInfo {
    int m_MovieCurrentSlot;
    XString m_MovieFileName;
    CKMovieReader@ m_MovieReader;
}

class CKMovieProperties {
    NativePointer get_m_Data() const;
    void set_m_Data(NativePointer ptr);
    CKFileExtension m_Ext;
    VxImageDescEx m_Format;
    CKGUID m_ReaderGuid;
    int m_Size;
}

class CKMovieReader {
    CK_DATAREADER_FLAGS GetFlags();
    int GetMovieFrameCount();
    int GetMovieLength();
    string GetOptionDescription(int i);
    int GetOptionsCount();
    CKPluginInfo GetReaderInfo();
    CKERROR OpenAsynchronousFile(const string&in name);
    CKERROR OpenFile(const string&in name);
    CKERROR OpenMemory(const string&in name);
    CKERROR ReadFrame(int f, CKMovieProperties@&out prop);
    CKDataReader@ opImplCast();
    const CKDataReader@ opImplCast() const;
}

class CKObject {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetName(const string&in name, bool shared = false);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CK2dEntity@ opCast();
    CK3dEntity@ opCast();
    CK3dObject@ opCast();
    CKAnimation@ opCast();
    CKBeObject@ opCast();
    CKBehavior@ opCast();
    CKBehaviorIO@ opCast();
    CKBehaviorLink@ opCast();
    CKBodyPart@ opCast();
    CKCamera@ opCast();
    CKCharacter@ opCast();
    CKCriticalSectionObject@ opCast();
    CKCurve@ opCast();
    CKCurvePoint@ opCast();
    CKDataArray@ opCast();
    CKGrid@ opCast();
    CKGroup@ opCast();
    CKInterfaceObjectManager@ opCast();
    CKKeyedAnimation@ opCast();
    CKKinematicChain@ opCast();
    CKLayer@ opCast();
    CKLevel@ opCast();
    CKLight@ opCast();
    CKMaterial@ opCast();
    CKMesh@ opCast();
    CKMidiSound@ opCast();
    CKObjectAnimation@ opCast();
    CKParameter@ opCast();
    CKParameterIn@ opCast();
    CKParameterLocal@ opCast();
    CKParameterOperation@ opCast();
    CKParameterOut@ opCast();
    CKPatchMesh@ opCast();
    CKPlace@ opCast();
    CKRenderContext@ opCast();
    CKRenderObject@ opCast();
    CKScene@ opCast();
    CKSceneObject@ opCast();
    CKSound@ opCast();
    CKSprite3D@ opCast();
    CKSprite@ opCast();
    CKSpriteText@ opCast();
    CKStateObject@ opCast();
    CKSynchroObject@ opCast();
    CKTargetCamera@ opCast();
    CKTargetLight@ opCast();
    CKTexture@ opCast();
    CKWaveSound@ opCast();
    const CK2dEntity@ opCast() const;
    const CK3dEntity@ opCast() const;
    const CK3dObject@ opCast() const;
    const CKAnimation@ opCast() const;
    const CKBeObject@ opCast() const;
    const CKBehavior@ opCast() const;
    const CKBehaviorIO@ opCast() const;
    const CKBehaviorLink@ opCast() const;
    const CKBodyPart@ opCast() const;
    const CKCamera@ opCast() const;
    const CKCharacter@ opCast() const;
    const CKCriticalSectionObject@ opCast() const;
    const CKCurve@ opCast() const;
    const CKCurvePoint@ opCast() const;
    const CKDataArray@ opCast() const;
    const CKGrid@ opCast() const;
    const CKGroup@ opCast() const;
    const CKInterfaceObjectManager@ opCast() const;
    const CKKeyedAnimation@ opCast() const;
    const CKKinematicChain@ opCast() const;
    const CKLayer@ opCast() const;
    const CKLevel@ opCast() const;
    const CKLight@ opCast() const;
    const CKMaterial@ opCast() const;
    const CKMesh@ opCast() const;
    const CKMidiSound@ opCast() const;
    const CKObjectAnimation@ opCast() const;
    const CKParameter@ opCast() const;
    const CKParameterIn@ opCast() const;
    const CKParameterLocal@ opCast() const;
    const CKParameterOperation@ opCast() const;
    const CKParameterOut@ opCast() const;
    const CKPatchMesh@ opCast() const;
    const CKPlace@ opCast() const;
    const CKRenderContext@ opCast() const;
    const CKRenderObject@ opCast() const;
    const CKScene@ opCast() const;
    const CKSceneObject@ opCast() const;
    const CKSound@ opCast() const;
    const CKSprite3D@ opCast() const;
    const CKSprite@ opCast() const;
    const CKSpriteText@ opCast() const;
    const CKStateObject@ opCast() const;
    const CKSynchroObject@ opCast() const;
    const CKTargetCamera@ opCast() const;
    const CKTargetLight@ opCast() const;
    const CKTexture@ opCast() const;
    const CKWaveSound@ opCast() const;
}

class CKObjectAnimation {
    void AddPositionKey(float timeStep, VxVector&in pos);
    void AddRotationKey(float timeStep, VxQuaternion&in rot);
    void AddScaleAxisKey(float timeStep, VxQuaternion&in sclAxis);
    void AddScaleKey(float timeStep, VxVector&in scl);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    void Clear();
    void ClearAll();
    void Clone(CKObjectAnimation@ anim);
    bool Compare(CKObjectAnimation@ anim, float threshold = 0.0);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKAnimController@ CreateController(CKANIMATION_CONTROLLER controlType);
    CKObjectAnimation@ CreateMergedAnimation(CKObjectAnimation@ subAnim2, bool dynamic = false);
    void CreateTransition(float length, CKObjectAnimation@ animIn, float stepFrom, CKObjectAnimation@ animOut, float stepTo, bool veloc, bool dontTurn, CKAnimKey&in startingSet = void);
    bool DeleteController(CKANIMATION_CONTROLLER controlType);
    bool EvaluateKeys(float step, VxQuaternion&out rot, VxVector&out pos, VxVector&out scale, VxQuaternion&out scaleRot = void);
    bool EvaluateMorphTarget(float time, int vertexCount, NativeBuffer@ vertices, uint vStride, NativeBuffer@ normals = null);
    bool EvaluatePosition(float time, VxVector&out pos);
    bool EvaluateRotation(float time, VxQuaternion&out rot);
    bool EvaluateScale(float time, VxVector&out scl);
    bool EvaluateScaleAxis(float time, VxQuaternion&out scaleAxis);
    CK3dEntity@ Get3dEntity();
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    float GetCurrentStep();
    uint GetFlags();
    uint GetID();
    float GetLength();
    int GetMemoryOccupation();
    float GetMergeFactor();
    CKMorphController@ GetMorphController();
    int GetMorphVertexCount();
    string GetName();
    uint GetObjectFlags();
    CKAnimController@ GetPositionController();
    CKAnimController@ GetRotationController();
    CKAnimController@ GetScaleAxisController();
    CKAnimController@ GetScaleController();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    void GetVelocity(float step, VxVector&out vel);
    bool HasMorphInfo();
    bool HasMorphNormalInfo();
    bool HasPositionInfo();
    bool HasRotationInfo();
    bool HasScaleAxisInfo();
    bool HasScaleInfo();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsMerged();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void Set3dEntity(CK3dEntity@ ent);
    void SetAppData(NativePointer data);
    void SetFlags(uint flags);
    CKERROR SetFrame(float step, CKKeyedAnimation@ anim = null);
    void SetLength(float nbFrame);
    void SetMergeFactor(float factor);
    void SetName(const string&in name, bool shared = false);
    CKERROR SetStep(float step, CKKeyedAnimation@ anim = null);
    bool ShareDataFrom(CKObjectAnimation@ anim);
    CKObjectAnimation@ Shared();
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKObjectArray {
    bool AddIfNotHere(CKObject@ obj);
    bool AddIfNotHere(uint id);
    CKERROR Append(CKObjectArray@ objArray);
    bool Check(CKContext@ context);
    void Clear();
    bool EndOfList();
    int GetCount();
    int GetCurrentPos();
    CKObject@ GetData(CKContext@ context);
    uint GetDataId();
    int GetPosition(CKObject@ obj);
    int GetPosition(uint id);
    uint IDFind(uint id);
    bool IDSeek(uint id);
    void InsertAt(CKObject@ obj);
    void InsertAt(uint id);
    void InsertFront(CKObject@ obj);
    void InsertFront(uint id);
    void InsertRear(CKObject@ obj);
    void InsertRear(uint id);
    bool ListEmpty();
    void Next();
    uint PositionFind(int pos);
    bool PositionSeek(int pos);
    void Previous();
    uint PtrFind(CKObject@ obj);
    bool PtrSeek(CKObject@ obj);
    bool Remove(CKObject@ obj);
    bool Remove(uint id);
    uint RemoveAt();
    uint RemoveFront();
    uint RemoveRear();
    void Reset();
    uint Seek(int pos);
    uint SetData(CKObject@ obj);
    uint SetDataId(uint id);
    void SwapCurrentWithNext();
    void SwapCurrentWithPrevious();
}

class CKObjectDeclaration {
    CKGUID GetAuthorGuid();
    string GetAuthorName();
    string GetCategory();
    int GetCompatibleClassId();
    NativePointer GetCreationFunction();
    string GetDescription();
    CKGUID GetGuid();
    CKGUID GetManagerNeeded(int index);
    int GetManagerNeededCount();
    string GetName();
    int GetPluginIndex();
    CKBehaviorPrototype@ GetProto();
    int GetType();
    uint GetVersion();
    void NeedManager(CKGUID manager);
    void SetAuthorGuid(CKGUID guid);
    void SetAuthorName(const string&in name);
    void SetCategory(const string&in category);
    void SetCompatibleClassId(int cid);
    void SetCreationFunction(NativePointer f);
    void SetDescription(const string&in description);
    void SetGuid(CKGUID guid);
    void SetPluginIndex(int);
    void SetType(int type);
    void SetVersion(uint verion);
    CKGUID m_AuthorGuid;
    int m_CompatibleClassID;
    CKGUID m_Guid;
    XGUIDArray m_ManagersGuid;
    XString m_Name;
    int m_PluginIndex;
    int m_Type;
    uint m_Version;
}

class CKObjectManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    string GetName();
    int GetObjectsCount();
    uint GetValidFunctionsMask();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void StartProfile();
    void StopProfile();
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKOperationDesc {
    NativePointer get_Fct() const;
    CKOperationDesc& opAssign(const CKOperationDesc&in other);
    void set_Fct(NativePointer ptr);
    CKGUID OpGuid;
    CKGUID P1Guid;
    CKGUID P2Guid;
    CKGUID ResGuid;
}

class CKParameter {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKERROR CopyValue(CKParameter@ param, bool updateParam = true);
    void Enable(bool act = true);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    int GetDataSize();
    CKGUID GetGUID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKObject@ GetOwner();
    int GetParameterClassID();
    CKParameterTypeDesc& GetParameterType();
    NativeBuffer@ GetReadData(bool update = true);
    int GetStringValue(string&out value, bool update = true);
    int GetType();
    CKObject@ GetValueObject(bool update = true);
    NativeBuffer@ GetWriteData();
    bool IsCompatibleWith(CKParameter@ param);
    bool IsDynamic();
    bool IsEnabled();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetGUID(CKGUID guid);
    void SetName(const string&in name, bool shared = false);
    void SetOwner(CKObject@ obj);
    CKERROR SetStringValue(const string&in value);
    void SetType(int type);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKParameterLocal@ opCast();
    CKParameterOut@ opCast();
    const CKParameterLocal@ opCast() const;
    const CKParameterOut@ opCast() const;
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKPARAMETER_DESC {
    bool SetDefaultValue(NativeBuffer@ data);
    NativePointer get_DefaultValue() const;
    string get_DefaultValueString() const;
    string get_Name() const;
    CKPARAMETER_DESC& opAssign(const CKPARAMETER_DESC&in other);
    void set_DefaultValue(NativePointer ptr);
    void set_DefaultValueString(const string&in value);
    void set_Name(const string&in value);
    int DefaultValueSize;
    CKGUID Guid;
    int Owner;
    int Type;
}

class CKParameterIn {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    CKParameter@ GetDirectSource();
    CKGUID GetGUID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKObject@ GetOwner();
    NativeBuffer@ GetReadData();
    CKParameter@ GetRealSource();
    CKParameterIn@ GetSharedSource();
    int GetType();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    CKERROR SetDirectSource(CKParameter@ param);
    void SetGUID(CKGUID guid, bool updateSource = false);
    void SetGUID(CKGUID guid, bool updateSource, const string&in newName);
    void SetName(const string&in name, bool shared = false);
    void SetOwner(CKObject@ obj);
    void SetType(int type, bool updateSource = false);
    void SetType(int type, bool updateSource, const string&in newName);
    CKERROR ShareSourceWith(CKParameterIn@ pin);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKParameterLocal {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKERROR CopyValue(CKParameter@ param, bool updateParam = true);
    void Enable(bool act = true);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    int GetDataSize();
    CKGUID GetGUID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKObject@ GetOwner();
    int GetParameterClassID();
    CKParameterTypeDesc& GetParameterType();
    NativeBuffer@ GetReadData(bool update = true);
    int GetStringValue(string&out value, bool update = true);
    int GetType();
    CKObject@ GetValueObject(bool update = true);
    NativeBuffer@ GetWriteData();
    bool IsCompatibleWith(CKParameter@ param);
    bool IsDynamic();
    bool IsEnabled();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsMyselfParameter();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsMyselfParameter(bool act);
    void SetGUID(CKGUID guid);
    void SetName(const string&in name, bool shared = false);
    void SetOwner(CKObject@ obj);
    CKERROR SetStringValue(const string&in value);
    void SetType(int type);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    CKParameter@ opImplCast();
    const CKObject@ opImplCast() const;
    const CKParameter@ opImplCast() const;
}

class CKParameterManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    CKERROR ChangeEnumDeclaration(CKGUID enumGuid, const string&in enumData);
    CKERROR ChangeFlagsDeclaration(CKGUID flagsGuid, const string&in flagsData);
    CKGUID ClassIDToGuid(int cid);
    int ClassIDToType(int cid);
    CKOperationDesc[]@ GetAvailableOperationsDesc(const CKGUID&in opGuid, CKParameterOut@ res = null, CKParameterIn@ p1 = null, CKParameterIn@ p2 = null);
    CKEnumStruct& GetEnumDescByType(int type);
    CKFlagsStruct& GetFlagsDescByType(int type);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    string GetName();
    int GetNbEnumDefined();
    int GetNbFlagDefined();
    int GetNbStructDefined();
    NativePointer GetOperationFunction(const CKGUID&in operation, const CKGUID&in paramRes, const CKGUID&in param1, const CKGUID&in param2);
    int GetParameterOperationCount();
    int GetParameterSize(int type);
    CKParameterTypeDesc& GetParameterTypeDescription(CKGUID guid);
    CKParameterTypeDesc& GetParameterTypeDescription(int type);
    int GetParameterTypesCount();
    CKStructStruct& GetStructDescByType(int type);
    uint GetValidFunctionsMask();
    int GuidToClassID(CKGUID guid);
    bool IsDerivedFrom(CKGUID guid1, CKGUID guid2);
    bool IsDerivedFrom(int child, int parent);
    bool IsParameterTypeToBeShown(CKGUID guid);
    bool IsParameterTypeToBeShown(int type);
    bool IsTypeCompatible(CKGUID guid1, CKGUID guid2);
    bool IsTypeCompatible(int type1, int type2);
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKGUID OperationCodeToGuid(int type);
    string OperationCodeToName(int type);
    int OperationGuidToCode(CKGUID guid);
    string OperationGuidToName(CKGUID guid);
    int OperationNameToCode(const string&in name);
    CKGUID OperationNameToGuid(const string&in name);
    string ParameterGuidToName(CKGUID guid);
    int ParameterGuidToType(CKGUID guid);
    CKGUID ParameterNameToGuid(const string&in name);
    int ParameterNameToType(const string&in name);
    CKGUID ParameterTypeToGuid(int type);
    string ParameterTypeToName(int type);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKERROR RegisterNewEnum(CKGUID enumGuid, const string&in enumName, const string&in enumData);
    CKERROR RegisterNewFlags(CKGUID flagsGuid, const string&in flagsName, const string&in flagsData);
    CKERROR RegisterNewStructure(const CKGUID&in, const string&in, const string&in, XGUIDArray&in);
    CKERROR RegisterOperationFunction(const CKGUID&in operation, const CKGUID&in paramRes, const CKGUID&in param1, const CKGUID&in param2, NativePointer op);
    int RegisterOperationType(CKGUID opGuid, const string&in name);
    CKERROR RegisterParameterType(CKParameterTypeDesc&in type);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void StartProfile();
    void StopProfile();
    int TypeToClassID(int type);
    CKERROR UnRegisterOperationFunction(const CKGUID&in operation, const CKGUID&in paramRes, const CKGUID&in param1, const CKGUID&in param2);
    CKERROR UnRegisterOperationType(CKGUID opGuid);
    CKERROR UnRegisterOperationType(int opCode);
    CKERROR UnRegisterParameterType(CKGUID guid);
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKParameterOperation {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKERROR DoOperation();
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    CKParameterIn@ GetInParameter1();
    CKParameterIn@ GetInParameter2();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKGUID GetOperationGuid();
    CKParameterOut@ GetOutParameter();
    CKBehavior@ GetOwner();
    bool HasOperationFunction();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    void Reconstruct(const string&in name, CKGUID opGuid, CKGUID resGuid, CKGUID p1Guid, CKGUID p2Guid);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetName(const string&in name, bool shared = false);
    void SetOwner(CKBehavior@);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKParameterOut {
    CKERROR AddDestination(CKParameter@ param, bool checkType = true);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKERROR CopyValue(CKParameter@ param, bool updateParam = true);
    void DataChanged();
    void Enable(bool act = true);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    int GetDataSize();
    CKParameter@ GetDestination(int pos);
    int GetDestinationCount();
    CKGUID GetGUID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKObject@ GetOwner();
    int GetParameterClassID();
    CKParameterTypeDesc& GetParameterType();
    NativeBuffer@ GetReadData(bool update = true);
    int GetStringValue(string&out value, bool update = true);
    int GetType();
    CKObject@ GetValueObject(bool update = true);
    NativeBuffer@ GetWriteData();
    bool IsCompatibleWith(CKParameter@ param);
    bool IsDynamic();
    bool IsEnabled();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllDestinations();
    void RemoveDestination(CKParameter@ param);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetGUID(CKGUID guid);
    void SetName(const string&in name, bool shared = false);
    void SetOwner(CKObject@ obj);
    CKERROR SetStringValue(const string&in value);
    void SetType(int type);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    CKParameter@ opImplCast();
    const CKObject@ opImplCast() const;
    const CKParameter@ opImplCast() const;
}

class CKParameterTypeDesc {
    NativePointer get_CheckFunction() const;
    NativePointer get_CopyFunction() const;
    NativePointer get_CreateDefaultFunction() const;
    NativePointer get_CreatorDll() const;
    NativePointer get_DeleteFunction() const;
    NativePointer get_SaveLoadFunction() const;
    NativePointer get_StringFunction() const;
    NativePointer get_UICreatorFunction() const;
    CKParameterTypeDesc& opAssign(const CKParameterTypeDesc&in other);
    void set_CheckFunction(NativePointer ptr);
    void set_CopyFunction(NativePointer ptr);
    void set_CreateDefaultFunction(NativePointer ptr);
    void set_CreatorDll(NativePointer ptr);
    void set_DeleteFunction(NativePointer ptr);
    void set_SaveLoadFunction(NativePointer ptr);
    void set_StringFunction(NativePointer ptr);
    void set_UICreatorFunction(NativePointer ptr);
    uint Cid;
    int DefaultSize;
    XBitArray DerivationMask;
    CKGUID DerivedFrom;
    CKGUID Guid;
    int Index;
    CKGUID Saver_Manager;
    XString TypeName;
    int Valid;
    uint dwFlags;
    uint dwParam;
}

class CKPatch {
    int16 GetEdge(int index);
    int16 GetInterior(int index);
    int16 GetV(int index);
    int16 GetVec(int index);
    void SetEdge(int index, int16 value);
    void SetInterior(int index, int16 value);
    void SetV(int index, int16 value);
    void SetVec(int index, int16 value);
    CKPatch& opAssign(const CKPatch&in other);
    uint Material;
    uint SmoothingGroup;
    VxVector& auxs;
    uint type;
}

class CKPatchEdge {
    int16 patch1;
    int16 patch2;
    int16 v1;
    int16 v2;
    int16 vec12;
    int16 vec21;
}

class CKPatchMesh {
    void ActivateAllChannels(bool active = true);
    void ActivateChannel(int index, bool active = true);
    int AddChannel(CKMaterial@ mat, bool copySrcUv = true);
    bool AddPostRenderCallBack(CK_MESHRENDERCALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_MESHRENDERCALLBACK@ callback, bool temporary = false);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AddSubMeshPostRenderCallBack(CK_SUBMESHRENDERCALLBACK@ callback, bool temporary = false);
    bool AddSubMeshPreRenderCallBack(CK_SUBMESHRENDERCALLBACK@ callback, bool temporary = false);
    void ApplyGlobalMaterial(CKMaterial@ mat);
    void BuildFaceNormals();
    void BuildNormals();
    void BuildRenderMesh();
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeFaceChannelMask(int faceIndex, uint16 addChannelMask, uint16 removeChannelMask);
    void CheckPostDeletion();
    void CheckPreDeletion();
    void Clean(bool keepVertices = false);
    void CleanRenderMesh();
    void Clear();
    void ColorChanged();
    void ComputePatchAux(int index);
    void ComputePatchInteriors(int index);
    void Consolidate();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void CreateLineStrip(int startingLine, int count, int startingVertexIndex);
    CKERROR CreatePM();
    void DestroyPM();
    void DissociateAllFaces();
    void EnablePMGeoMorph(bool enable);
    void ExecuteBehaviors(float delta);
    CKERROR FromMesh(CKMesh@ m);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    void GetBaryCenter(VxVector&out vector) const;
    CKContext@ GetCKContext();
    int GetChannelByMaterial(CKMaterial@ mat) const;
    int GetChannelCount() const;
    VXBLEND_MODE GetChannelDestBlend(int index) const;
    uint GetChannelFlags(int index) const;
    CKMaterial@ GetChannelMaterial(int index) const;
    VXBLEND_MODE GetChannelSourceBlend(int index) const;
    int GetClassID();
    NativePointer GetColorsPtr(NativePointer stride);
    void GetEdge(int index, CKPatchEdge&out edge);
    int GetEdgeCount();
    NativePointer GetEdges();
    uint16 GetFaceChannelMask(int faceIndex);
    int GetFaceCount() const;
    CKMaterial@ GetFaceMaterial(int index);
    const VxVector& GetFaceNormal(int index);
    NativePointer GetFaceNormalsPtr(NativePointer stride);
    VxVector& GetFaceVertex(int FaceIndex, int vertexIndex);
    void GetFaceVertexIndex(int index, int&out vertex1, int&out vertex2, int&out vertex3);
    NativePointer GetFacesIndices();
    uint GetFlags() const;
    uint GetID();
    int GetIterationCount();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    void GetLine(int lineIndex, int&out vIndex1, int&out vIndex2);
    int GetLineCount();
    NativePointer GetLineIndices();
    VXMESH_LITMODE GetLitMode() const;
    const VxBbox& GetLocalBox() const;
    CKMaterial@ GetMaterial(int index) const;
    int GetMaterialCount() const;
    int GetMemoryOccupation();
    int GetModifierUVCount(int channel = -1) const;
    NativePointer GetModifierUVs(NativePointer stride, int channel = -1);
    int GetModifierVertexCount() const;
    NativePointer GetModifierVertices(NativePointer stride);
    string GetName();
    NativePointer GetNormalsPtr(NativePointer stride);
    uint GetObjectFlags();
    int GetPMGeoMorphStep() const;
    void GetPatch(int index, CKPatch&out p);
    int GetPatchCount();
    uint GetPatchFlags();
    CKMaterial@ GetPatchMaterial(int index);
    uint GetPatchSM(int index);
    NativePointer GetPatches();
    NativePointer GetPositionsPtr(NativePointer stride);
    int GetPriority();
    float GetRadius() const;
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    NativePointer GetSpecularColorsPtr(NativePointer stride);
    void GetTV(int index, float&out u, float&out v, int channel = -1);
    int GetTVCount(int channel = -1);
    void GetTVPatch(int index, CKTVPatch&out tvPatch, int channel = -1);
    int GetTVPatchCount(int channel = -1);
    NativePointer GetTVPatches(int channel = -1);
    NativePointer GetTVs(int channel = -1);
    NativePointer GetTextureCoordinatesPtr(NativePointer stride, int channel = -1);
    void GetVec(int index, VxVector&out cp);
    int GetVecCount();
    NativePointer GetVecs();
    void GetVert(int index, VxVector&out cp);
    int GetVertCount();
    uint GetVertexColor(int index) const;
    int GetVertexCount() const;
    void GetVertexNormal(int index, VxVector&out vector);
    void GetVertexPosition(int index, VxVector&out vector);
    uint GetVertexSpecularColor(int index) const;
    void GetVertexTextureCoordinates(int index, float&out u, float&out v, int channel = -1);
    float GetVertexWeight(int index) const;
    int GetVertexWeightsCount() const;
    NativePointer GetVertexWeightsPtr();
    int GetVerticesRendered() const;
    NativePointer GetVerts();
    VXTEXTURE_WRAPMODE GetWrapMode() const;
    bool HasAttribute(int attribType);
    void InverseWinding();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsChannelActive(int index) const;
    bool IsChannelLit(int index) const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPM() const;
    bool IsPMGeoMorphEnabled() const;
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsTransparent() const;
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    void LitChannel(int index, bool lit = true);
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LoadVertices(CKStateChunk@ chunk);
    void ModifierUVMove();
    void ModifierVertexMove(bool rebuildNormals, bool rebuildFaceNormals);
    void ModifyObjectFlags(uint add, uint remove);
    void NormalChanged();
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    void RemoveChannel(CKMaterial@ mat);
    void RemoveChannel(int index);
    bool RemovePostRenderCallBack(CK_MESHRENDERCALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_MESHRENDERCALLBACK@ callback);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool RemoveSubMeshPostRenderCallBack(CK_SUBMESHRENDERCALLBACK@ callback);
    bool RemoveSubMeshPreRenderCallBack(CK_SUBMESHRENDERCALLBACK@ callback);
    CKERROR Render(CKRenderContext@ dev, CK3dEntity@ mov);
    void ReplaceMaterial(CKMaterial@ oldMat, CKMaterial@ newMat);
    void RotateVertices(const VxVector&in vector, float angle);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void ScaleVertices(const VxVector&in vector, const VxVector&in pivot = void);
    void ScaleVertices(float x, float y, float z, const VxVector&in pivot = void);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetChannelDestBlend(int index, VXBLEND_MODE blendMode);
    void SetChannelFlags(int index, uint flags);
    void SetChannelMaterial(int index, CKMaterial@ mat);
    void SetChannelSourceBlend(int index, VXBLEND_MODE blendMode);
    void SetDefaultRenderCallBack();
    void SetEdge(int index, CKPatchEdge&in edge);
    void SetEdgeCount(int count);
    void SetFaceChannelMask(int faceIndex, uint16 channelMask);
    bool SetFaceCount(int count);
    void SetFaceMaterial(NativeBuffer@ faceIndices, int faceCount, CKMaterial@ mat);
    void SetFaceMaterial(NativePointer faceIndices, int faceCount, CKMaterial@ mat);
    void SetFaceMaterial(int faceIndex, CKMaterial@ mat);
    void SetFaceVertexIndex(int faceIndex, int vertex1, int vertex2, int vertex3);
    void SetFlags(uint flags);
    void SetIterationCount(int count);
    void SetLine(int lineIndex, int vIndex1, int vIndex2);
    bool SetLineCount(int count);
    void SetLitMode(VXMESH_LITMODE mode);
    void SetName(const string&in name, bool shared = false);
    void SetPMGeoMorphStep(int gs);
    void SetPatch(int index, CKPatch&in p);
    void SetPatchCount(int count);
    void SetPatchFlags(uint flags);
    void SetPatchMaterial(int index, CKMaterial@ mat);
    void SetPatchSM(int index, uint smoothing);
    void SetPriority(int priority);
    void SetRenderCallBack(CK_MESHRENDERCALLBACK@ callback);
    void SetTV(int index, float u, float v, int channel = -1);
    void SetTVCount(int count, int channel = -1);
    void SetTVPatch(int index, CKTVPatch&in tvPatch, int channel = -1);
    void SetTVPatchCount(int count, int channel = -1);
    void SetTransparent(bool transparency);
    void SetVec(int index, VxVector&in cp);
    void SetVert(int index, VxVector&in cp);
    void SetVertVecCount(int vertCount, int vecCount);
    void SetVertexColor(int index, uint color);
    bool SetVertexCount(int count);
    void SetVertexNormal(int index, const VxVector&in vector);
    void SetVertexPosition(int index, const VxVector&in vector);
    void SetVertexSpecularColor(int index, uint color);
    void SetVertexTextureCoordinates(int index, float u, float v, int channel = -1);
    void SetVertexWeight(int index, float w);
    void SetVertexWeightsCount(int count);
    void SetVerticesRendered(int count);
    void SetWrapMode(VXTEXTURE_WRAPMODE mode);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKERROR ToMesh(CKMesh@ m, int stepCount);
    void TranslateVertices(NativePointer vector);
    void TranslateVertices(const VxVector&in vector);
    void UVChanged();
    void UnOptimize();
    void VertexMove();
    CKBeObject@ opImplCast();
    CKMesh@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKMesh@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKPATHCATEGORY {
    CKPATHCATEGORY& opAssign(const CKPATHCATEGORY&in other);
    CKPATHENTRYVECTOR m_Entries;
    XString m_Name;
}

class CKPATHCATEGORYVECTOR {
    int Allocated() const;
    CKPATHCATEGORY& Back();
    const CKPATHCATEGORY& Back() const;
    CKPATHCATEGORYVECTORIt Begin() const;
    void Clear();
    CKPATHCATEGORYVECTORIt End() const;
    void Expand(int e = 1);
    int GetMemoryOccupation(bool addStatic = false) const;
    void Insert(int pos, const CKPATHCATEGORY&in o);
    void PopBack();
    void PopFront();
    void PushBack(const CKPATHCATEGORY&in o);
    void PushFront(const CKPATHCATEGORY&in o);
    bool RemoveAt(int pos, CKPATHCATEGORY&out old);
    void Reserve(int size);
    void Resize(int e = 1);
    int Size() const;
    void Swap(CKPATHCATEGORYVECTOR&inout other);
    void Swap(int pos1, int pos2);
    CKPATHCATEGORYVECTOR& opAssign(const CKPATHCATEGORYVECTOR&in other);
    CKPATHCATEGORY& opIndex(int index);
}

class CKPATHCATEGORYVECTORIt {
    CKPATHCATEGORY& Get();
    const CKPATHCATEGORY& Get() const;
    bool IsValid() const;
    CKPATHCATEGORYVECTORIt& opAssign(const CKPATHCATEGORYVECTORIt&in other);
    bool opEquals(const CKPATHCATEGORYVECTORIt&in other) const;
    bool opNotEquals(const CKPATHCATEGORYVECTORIt&in other) const;
    CKPATHCATEGORYVECTORIt& opPreDec();
    CKPATHCATEGORYVECTORIt& opPreInc();
}

class CKPATHENTRYVECTOR {
    int Allocated() const;
    XString& Back();
    const XString& Back() const;
    CKPATHENTRYVECTORIt Begin() const;
    void Clear();
    CKPATHENTRYVECTORIt End() const;
    void Expand(int e = 1);
    void FastRemove(const XString&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const XString&in o) const;
    void Insert(int pos, const XString&in o);
    void PopBack();
    void PopFront();
    void PushBack(const XString&in o);
    void PushFront(const XString&in o);
    bool RemoveAt(int pos, XString&out old);
    void Reserve(int size);
    void Resize(int e = 1);
    int Size() const;
    void Swap(CKPATHENTRYVECTOR&inout other);
    void Swap(int pos1, int pos2);
    CKPATHENTRYVECTOR& opAssign(const CKPATHENTRYVECTOR&in other);
    XString& opIndex(int index);
}

class CKPATHENTRYVECTORIt {
    XString& Get();
    const XString& Get() const;
    bool IsValid() const;
    CKPATHENTRYVECTORIt& opAssign(const CKPATHENTRYVECTORIt&in other);
    bool opEquals(const CKPATHENTRYVECTORIt&in other) const;
    bool opNotEquals(const CKPATHENTRYVECTORIt&in other) const;
    CKPATHENTRYVECTORIt& opPreDec();
    CKPATHENTRYVECTORIt& opPreInc();
}

class CKPathMaker {
    string GetFileName() const;
}

class CKPathManager {
    int AddCategory(XString&in cat);
    void AddEscapedSpace(const XString&in input, XString&out output);
    int AddPath(int catIdx, XString&in path);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int GetCategoryCount();
    int GetCategoryIndex(XString&in cat);
    CKERROR GetCategoryName(int catIdx, XString&out catName);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    string GetName();
    int GetPathCount(int catIdx);
    int GetPathIndex(int catIdx, XString&in path);
    CKERROR GetPathName(int catIdx, int pathIdx, XString&out path);
    uint GetValidFunctionsMask();
    XString GetVirtoolsTemporaryFolder();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    bool PathIsAbsolute(XString&in file);
    bool PathIsFile(XString&in file);
    bool PathIsUNC(XString&in file);
    bool PathIsURL(XString&in file);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    CKERROR RemoveCategory(int catIdx);
    void RemoveEscapedSpace(const XString&in input, XString&out output);
    CKERROR RemovePath(int catIdx, int pathIdx);
    CKERROR RenameCategory(int catIdx, XString&in newName);
    CKERROR RenamePath(int catIdx, int pathIdx, XString&in path);
    CKERROR ResolveFileName(const XString&in file, XString&out resolvedFile, int catIdx, int startIdx = -1);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void StartProfile();
    void StopProfile();
    CKERROR SwapPaths(int catIdx, int pathIdx1, int pathIdx2);
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKPathSplitter {
    string GetDir() const;
    string GetDrive() const;
    string GetExtension() const;
    string GetName() const;
}

class CKPICKRESULT {
    CKPICKRESULT& opAssign(const CKPICKRESULT&in other);
    float Distance;
    int FaceIndex;
    VxVector IntersectionNormal;
    VxVector IntersectionPoint;
    uint Sprite;
    float TexU;
    float TexV;
}

class CKPlace {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    void AddPortal(CKPlace@ place, CK3dEntity@ portal);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ComputeBestFitBBox(CKPlace@ p2, VxMatrix&out bBoxMatrix);
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    CKCamera@ GetDefaultCamera() const;
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    CKPlace@ GetPortal(int i, CK3dEntity@&out portal);
    int GetPortalCount() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    void RemovePortal(CKPlace@ place, CK3dEntity@ portal);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetDefaultCamera(CKCamera@ cam);
    void SetFlags(uint flags);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    VxRect& ViewportClip();
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKPluginCategory {
    CKPluginCategory& opAssign(const CKPluginCategory&in other);
    XString m_Name;
}

class CKPluginDll {
    NativePointer GetFunctionPtr(const string&in functionName) const;
    CKPluginDll& opAssign(const CKPluginDll&in other);
    XString m_DllFileName;
    uint m_DllInstance;
    int m_PluginInfoCount;
}

class CKPluginEntry {
    bool HasBehaviorsInfo() const;
    bool HasReadersInfo() const;
    const CKPluginEntryBehaviorsData& get_m_BehaviorsInfo() const;
    const CKPluginEntryReadersData& get_m_ReadersInfo() const;
    CKPluginEntry& opAssign(const CKPluginEntry&in other);
    int m_Active;
    int m_IndexInCategory;
    int m_NeededByFile;
    int m_PluginDllIndex;
    CKPluginInfo m_PluginInfo;
    int m_PositionInDll;
}

class CKPluginEntryBehaviorsData {
    CKPluginEntryBehaviorsData& opAssign(const CKPluginEntryBehaviorsData&in other);
    XGUIDArray m_BehaviorsGUID;
}

class CKPluginEntryReadersData {
    NativePointer get_m_GetReaderFct() const;
    CKPluginEntryReadersData& opAssign(const CKPluginEntryReadersData&in other);
    void set_m_GetReaderFct(NativePointer ptr);
    int m_OptionCount;
    CK_DATAREADER_FLAGS m_ReaderFlags;
    CKGUID m_SettingsParameterGuid;
}

class CKPluginInfo {
    NativePointer get_m_ExitInstanceFct() const;
    NativePointer get_m_InitInstanceFct() const;
    CKPluginInfo& opAssign(const CKPluginInfo&in other);
    void set_m_ExitInstanceFct(NativePointer ptr);
    void set_m_InitInstanceFct(NativePointer ptr);
    XString m_Author;
    XString m_Description;
    CKFileExtension m_Extension;
    CKGUID m_GUID;
    XString m_Summary;
    CK_PLUGIN_TYPE m_Type;
    uint m_Version;
}

class CKPluginManager {
    int AddCategory(const string&in category);
    CKPluginEntry FindComponent(CKGUID component, int catIdx = -1);
    int GetCategoryCount();
    int GetCategoryIndex(const string&in category);
    string GetCategoryName(int index);
    int GetPluginCount(int catIdx);
    int GetPluginDllCount();
    CKPluginDll GetPluginDllInfo(const string&in name, int&out idx = void);
    CKPluginDll GetPluginDllInfo(int idx);
    CKPluginEntry GetPluginInfo(int catIdx, int pluginIdx);
    CKERROR Load(CKContext@ context, const string&in fileName, CKObjectArray@ objects, CK_LOAD_FLAGS loadFlags, CKCharacter@ carac = null, CKGUID&out readerGuid = void);
    int ParsePlugins(const string&in directory);
    CKERROR ReLoadPluginDll(int idx);
    CKERROR RegisterPlugin(const string&in plugin);
    CKERROR RemoveCategory(int catIdx);
    CKERROR RenameCategory(int catIdx, const string&in newName);
    CKERROR Save(CKContext@ context, const string&in fileName, CKObjectArray@ objects, uint saveFlags, CKGUID&out readerGuid = void);
    CKERROR UnLoadPluginDll(int idx);
}

class CKPOINT {
    CKPOINT& opAssign(const CKPOINT&in other);
    int x;
    int y;
}

class CKPositionKey {
    bool Compare(CKPositionKey&in key, float threshold);
    const VxVector& GetPosition();
    float GetTime();
    void SetPosition(const VxVector&in);
    void SetTime(float t);
    CKPositionKey& opAssign(const CKPositionKey&in);
    CKKey opImplConv() const;
    VxVector Pos;
    float TimeStep;
}

class CKProgressiveMesh {
}

class CKRECT {
    CKRECT& opAssign(const CKRECT&in other);
    int bottom;
    int left;
    int right;
    int top;
}

class CKRenderContext {
    void Activate(bool active = true);
    void AddDirtyRect(const CKRECT&in rect);
    void AddObject(CKRenderObject@ ojb);
    void AddObjectWithHierarchy(CKRenderObject@ obj);
    void AddPostRenderCallBack(CK_RENDERCALLBACK@ callback, bool temporary = false);
    void AddPostSpriteRenderCallBack(CK_RENDERCALLBACK@ callback, bool temporary = false);
    void AddPreRenderCallBack(CK_RENDERCALLBACK@ callback, bool temporary = false);
    void AddRemoveSequence(bool start);
    void AttachViewpointToCamera(CKCamera@ cam);
    CKERROR BackToFront(CK_RENDER_FLAGS flags = CK_RENDER_USECURRENTSETTINGS);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void ChangeCurrentRenderOptions(uint add, uint remove);
    bool ChangeDriver(int newDriver);
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Clear(CK_RENDER_FLAGS flags = CK_RENDER_USECURRENTSETTINGS, uint = 0);
    void ClientToScreen(Vx2DVector&in iPoint, Vx2DVector&out oPoint);
    const XObjectArray& Compute2dRootObjects();
    const XObjectArray& Compute3dRootObjects();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    int CopyToVideo(const VxRect&in rect, VXBUFFER_TYPE bufferType, VxImageDescEx&out desc);
    void DetachAll();
    void DetachViewpointFromCamera();
    bool DrawPrimitive(VXPRIMITIVETYPE pType, NativeBuffer@ indices, int indexCount, VxDrawPrimitiveData&in data);
    bool DrawPrimitive(VXPRIMITIVETYPE pType, NativePointer indices, int indexCount, VxDrawPrimitiveData&in data);
    CKERROR DrawScene(CK_RENDER_FLAGS flags = CK_RENDER_USECURRENTSETTINGS);
    CKERROR DumpToFile(const string&in filename, const VxRect&in rect, VXBUFFER_TYPE bufferType);
    int DumpToMemory(const VxRect&in rect, VXBUFFER_TYPE bufferType, VxImageDescEx&out desc);
    void ForceCameraSettingsUpdate();
    CK2dEntity@ Get2dRoot(bool background);
    uint GetAmbientLight();
    NativePointer GetAppData();
    CKCamera@ GetAttachedCamera();
    CKMaterial@ GetBackgroundMaterial();
    void GetBoundingBox(VxBbox&out bbox);
    CKContext@ GetCKContext();
    int GetClassID();
    bool GetClearBackground();
    bool GetClearZBuffer();
    void GetCurrentExtents(VxRect&out extents);
    uint GetCurrentRenderOptions();
    bool GetDirectXInfo(VxDirectXData&out data);
    NativeBuffer@ GetDrawPrimitiveIndices(int indicesCount);
    VxDrawPrimitiveData& GetDrawPrimitiveStructure(CKRST_DPFLAGS flags, int vretexCount);
    int GetDriverIndex();
    int GetFirstFreeStencilBits();
    uint GetFogColor();
    float GetFogDensity();
    float GetFogEnd();
    VXFOG_MODE GetFogMode();
    float GetFogStart();
    void GetGlobalRenderMode(VxShadeType&out shading, bool&out texture, bool&out wireframe);
    int GetHeight();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    VX_PIXELFORMAT GetPixelFormat(int&out bpp = void, int&out zbpp = void, int&out stencilBpp = void);
    const VxMatrix& GetProjectionTransformationMatrix();
    uint GetState(VXRENDERSTATETYPE state);
    void GetStats(VxStats&out stats);
    uint GetStencilFreeMask();
    void GetStereoParameters(float&out eyeSeparation, float&out focalLength);
    bool GetUserClipPlane(uint clipPlaneIndex, VxPlane&out planeEquation);
    void GetViewRect(VxRect&out rect);
    const VxMatrix& GetViewTransformationMatrix();
    CK3dEntity@ GetViewpoint();
    int GetWidth();
    uint GetWindowHandle();
    void GetWindowRect(VxRect&out rect, bool screenRelative = false);
    const VxMatrix& GetWorldTransformationMatrix();
    CKERROR GoFullScreen(int width = 640, int height = 480, int bpp = -1, int driver = 0, int refreshRate = 0);
    bool IsDynamic();
    bool IsFullScreen();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectAttached(CKRenderObject@ obj);
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    bool LockCurrentVB(uint vertexCount, VxDrawPrimitiveData&out data);
    void ModifyObjectFlags(uint add, uint remove);
    CKRenderObject@ Pick(CKPOINT pt, CKPICKRESULT&out res, bool ignoreUnpickable = false);
    CKRenderObject@ Pick(int x, int y, CKPICKRESULT&out res, bool ignoreUnpickable = false);
    CK2dEntity@ Pick2D(const Vx2DVector&in v);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    void PrepareCameras(CK_RENDER_FLAGS flags = CK_RENDER_USECURRENTSETTINGS);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RectPick(const VxRect&in rect, XObjectPointerArray&out objects, bool intersect = true);
    bool ReleaseCurrentVB();
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveObject(CKRenderObject@ obj);
    void RemovePostRenderCallBack(CK_RENDERCALLBACK@ callback);
    void RemovePostSpriteRenderCallBack(CK_RENDERCALLBACK@ callback);
    void RemovePreRenderCallBack(CK_RENDERCALLBACK@ callback);
    CKERROR Render(CK_RENDER_FLAGS flags = CK_RENDER_USECURRENTSETTINGS);
    CKERROR Resize(int posX = 0, int poxY = 0, int sizeX = 0, int sizeY = 0, uint flags = 0);
    void RestoreScreenBackup();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void ScreenToClient(Vx2DVector&in iPoint, Vx2DVector&out oPoint);
    void SetAmbientLight(float r, float g, float b);
    void SetAmbientLight(uint color);
    void SetAppData(NativePointer data);
    void SetClearBackground(bool clearBack = true);
    void SetClearZBuffer(bool clearZ = true);
    void SetCurrentExtents(const VxRect&in extents);
    void SetCurrentMaterial(CKMaterial@ mat, bool lit = true);
    void SetCurrentRenderOptions(uint flags);
    void SetFogColor(uint color);
    void SetFogDensity(float density);
    void SetFogEnd(float end);
    void SetFogMode(VXFOG_MODE mode);
    void SetFogStart(float start);
    void SetGlobalRenderMode(VxShadeType shading = GouraudShading, bool texture = true, bool wireframe = false);
    void SetName(const string&in name, bool shared = false);
    void SetProjectionTransformationMatrix(const VxMatrix&in mat);
    bool SetRenderTarget(CKTexture@ texture = null, int cubeMapFace = 0);
    void SetState(VXRENDERSTATETYPE state, uint value);
    void SetStereoParameters(float eyeSeparation, float focalLength);
    bool SetTexture(CKTexture@ tex, bool clamped = false, int stage = 0);
    void SetTextureMatrix(const VxMatrix&in mat, int stage = 0);
    bool SetTextureStageState(CKRST_TEXTURESTAGESTATETYPE state, uint value, int stage = 0);
    void SetTransparentMode(bool trans);
    bool SetUserClipPlane(uint clipPlaneIndex, const VxPlane&in planeEquation);
    void SetViewRect(const VxRect&in rect);
    void SetViewTransformationMatrix(const VxMatrix&in mat);
    CKERROR SetWindowRect(const VxRect&in rect, uint flags = 0);
    void SetWorldTransformationMatrix(const VxMatrix&in mat);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKERROR StopFullScreen();
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null);
    void TransformVertices(int vertexCount, VxTransformData&inout data, CK3dEntity@ ref = null);
    void UsedStencilBits(uint stencilBits);
    void WarnEnterThread();
    void WarnExitThread();
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKRenderManager {
    int AddEffect(const VxEffectDescription&in effect);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    CKRenderContext@ CreateRenderContext(uint window, int driver = 0, CKRECT&in rect = void, bool fullscreen = false, int bpp = -1, int zbpp = -1, int stencilBpp = -1, int refreshRate = 0);
    CKVertexBuffer@ CreateVertexBuffer();
    CKERROR DestroyRenderContext(CKRenderContext@ context);
    void DestroyVertexBuffer(CKVertexBuffer@ vb);
    void FlushTextures();
    void GetDesiredTexturesVideoFormat(VxImageDescEx&out format);
    int GetEffectCount();
    const VxEffectDescription& GetEffectDescription(int effectIndex);
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    string GetName();
    CKRenderContext@ GetRenderContext(int pos);
    int GetRenderContextCount();
    CKRenderContext@ GetRenderContextFromPoint(CKPOINT&in pt);
    int GetRenderDriverCount();
    VxDriverDesc& GetRenderDriverDescription(int driver);
    uint GetValidFunctionsMask();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    void Process();
    void RemoveRenderContext(CKRenderContext@ context);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void SetDesiredTexturesVideoFormat(VxImageDescEx&in format);
    void SetRenderOptions(const string&in option, uint value);
    void StartProfile();
    void StopProfile();
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKRenderObject {
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    int GetPriority();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    int GetZOrder();
    bool HasAttribute(int attribType);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetName(const string&in name, bool shared = false);
    void SetPriority(int priority);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CK2dEntity@ opCast();
    CK3dEntity@ opCast();
    CK3dObject@ opCast();
    CKBodyPart@ opCast();
    CKCamera@ opCast();
    CKCharacter@ opCast();
    CKCurve@ opCast();
    CKCurvePoint@ opCast();
    CKGrid@ opCast();
    CKLight@ opCast();
    CKPlace@ opCast();
    CKSprite3D@ opCast();
    CKSprite@ opCast();
    CKSpriteText@ opCast();
    CKTargetCamera@ opCast();
    CKTargetLight@ opCast();
    const CK2dEntity@ opCast() const;
    const CK3dEntity@ opCast() const;
    const CK3dObject@ opCast() const;
    const CKBodyPart@ opCast() const;
    const CKCamera@ opCast() const;
    const CKCharacter@ opCast() const;
    const CKCurve@ opCast() const;
    const CKCurvePoint@ opCast() const;
    const CKGrid@ opCast() const;
    const CKLight@ opCast() const;
    const CKPlace@ opCast() const;
    const CKSprite3D@ opCast() const;
    const CKSprite@ opCast() const;
    const CKSpriteText@ opCast() const;
    const CKTargetCamera@ opCast() const;
    const CKTargetLight@ opCast() const;
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKRotationKey {
    bool Compare(CKRotationKey&in key, float threshold);
    const VxQuaternion& GetRotation();
    float GetTime();
    void SetRotation(const VxQuaternion&in);
    void SetTime(float t);
    CKRotationKey& opAssign(const CKRotationKey&in);
    CKKey opImplConv() const;
    VxQuaternion Rot;
    float TimeStep;
}

class CKScene {
    void Activate(CKSceneObject@ obj, bool reset);
    void AddObjectToScene(CKSceneObject@ obj, bool dependencies = true);
    CKERROR AddScript(CKBehavior@ ckb);
    void ApplyEnvironmentSettings(XObjectPointerArray&in renderList = void);
    void BeginAddSequence(bool begin);
    void BeginRemoveSequence(bool begin);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    const XObjectPointerArray& ComputeObjectList(int cid, bool derived = true);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void DeActivate(CKSceneObject@ obj);
    bool EnvironmentSettings();
    void ExecuteBehaviors(float delta);
    uint GetAmbientLight();
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    uint GetBackgroundColor();
    CKTexture@ GetBackgroundTexture();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetFogColor();
    float GetFogDensity();
    float GetFogEnd();
    VXFOG_MODE GetFogMode();
    float GetFogStart();
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    CKLevel@ GetLevel();
    int GetMemoryOccupation();
    string GetName();
    int GetObjectCount();
    CK_SCENEOBJECT_FLAGS GetObjectFlags(CKSceneObject@ obj);
    uint GetObjectFlags();
    CKStateChunk@ GetObjectInitialValue(CKSceneObject@ obj);
    CKSODHashIt GetObjectIterator();
    int GetPriority();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKCamera@ GetStartingCamera();
    bool HasAttribute(int attribType);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectActive(CKSceneObject@ obj);
    bool IsObjectHere(CKObject@ obj);
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    CKERROR Merge(CKScene@ mergedScene, CKLevel@ fromLevel = null);
    CK_SCENEOBJECT_FLAGS ModifyObjectFlags(CKSceneObject@ obj, uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    void RemoveObjectFromScene(CKSceneObject@ obj, bool dependencies = true);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAmbientLight(uint color);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetBackgroundColor(uint color);
    void SetBackgroundTexture(CKTexture@ texture);
    void SetFogColor(uint color);
    void SetFogDensity(float density);
    void SetFogEnd(float end);
    void SetFogMode(VXFOG_MODE mode);
    void SetFogStart(float start);
    void SetName(const string&in name, bool shared = false);
    void SetObjectFlags(CKSceneObject@ obj, CK_SCENEOBJECT_FLAGS flags);
    bool SetObjectInitialValue(CKSceneObject@ obj, CKStateChunk@ chunk);
    void SetPriority(int priority);
    void SetStartingCamera(CKCamera@ camera);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void UseEnvironmentSettings(bool use = true);
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKSceneObject {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetName(const string&in name, bool shared = false);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CK2dEntity@ opCast();
    CK3dEntity@ opCast();
    CK3dObject@ opCast();
    CKAnimation@ opCast();
    CKBeObject@ opCast();
    CKBehavior@ opCast();
    CKBodyPart@ opCast();
    CKCamera@ opCast();
    CKCharacter@ opCast();
    CKCurve@ opCast();
    CKCurvePoint@ opCast();
    CKDataArray@ opCast();
    CKGrid@ opCast();
    CKGroup@ opCast();
    CKKeyedAnimation@ opCast();
    CKLevel@ opCast();
    CKLight@ opCast();
    CKMaterial@ opCast();
    CKMesh@ opCast();
    CKMidiSound@ opCast();
    CKObjectAnimation@ opCast();
    CKPatchMesh@ opCast();
    CKPlace@ opCast();
    CKRenderObject@ opCast();
    CKScene@ opCast();
    CKSound@ opCast();
    CKSprite3D@ opCast();
    CKSprite@ opCast();
    CKSpriteText@ opCast();
    CKTargetCamera@ opCast();
    CKTargetLight@ opCast();
    CKTexture@ opCast();
    CKWaveSound@ opCast();
    const CK2dEntity@ opCast() const;
    const CK3dEntity@ opCast() const;
    const CK3dObject@ opCast() const;
    const CKAnimation@ opCast() const;
    const CKBeObject@ opCast() const;
    const CKBehavior@ opCast() const;
    const CKBodyPart@ opCast() const;
    const CKCamera@ opCast() const;
    const CKCharacter@ opCast() const;
    const CKCurve@ opCast() const;
    const CKCurvePoint@ opCast() const;
    const CKDataArray@ opCast() const;
    const CKGrid@ opCast() const;
    const CKGroup@ opCast() const;
    const CKKeyedAnimation@ opCast() const;
    const CKLevel@ opCast() const;
    const CKLight@ opCast() const;
    const CKMaterial@ opCast() const;
    const CKMesh@ opCast() const;
    const CKMidiSound@ opCast() const;
    const CKObjectAnimation@ opCast() const;
    const CKPatchMesh@ opCast() const;
    const CKPlace@ opCast() const;
    const CKRenderObject@ opCast() const;
    const CKScene@ opCast() const;
    const CKSound@ opCast() const;
    const CKSprite3D@ opCast() const;
    const CKSprite@ opCast() const;
    const CKSpriteText@ opCast() const;
    const CKTargetCamera@ opCast() const;
    const CKTargetLight@ opCast() const;
    const CKTexture@ opCast() const;
    const CKWaveSound@ opCast() const;
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKSceneObjectDesc {
    uint ActiveAtStart();
    uint DeActiveAtStart();
    uint IsActive();
    uint NothingAtStart();
    uint ResetAtStart();
    CKSceneObjectDesc& opAssign(const CKSceneObjectDesc&in other);
    bool opEquals(const CKSceneObjectDesc&in other) const;
    uint m_Flags;
    CKStateChunk@ m_InitialValue;
    uint m_Object;
}

class CKSkin {
    bool CalcPoints(int vertexCount, NativePointer vertexPtr, uint vertexStride);
    bool CalcPoints(int vertexCount, NativePointer vertexPtr, uint vertexStride, NativePointer normalPtr, uint normalStride);
    bool CalcPointsEx(int vertexCount, NativePointer vertexPtr, uint vertexStride, NativePointer normalPtr, uint normalStride);
    void ConstructBoneTransfoMatrices(CKContext@ context);
    int GetBoneCount() const;
    CKSkinBoneData@ GetBoneData(int boneIdx) const;
    VxVector& GetNormal(int index);
    int GetNormalCount() const;
    int GetVertexCount() const;
    CKSkinVertexData@ GetVertexData(int vertexIdx) const;
    void RemapVertices(const XIntArray&in permutation);
    void SetBoneCount(int boneCount);
    void SetNormal(int index, const VxVector&in norm);
    void SetNormalCount(int count);
    void SetObjectInitMatrix(const VxMatrix&in mat);
    void SetVertexCount(int count);
}

class CKSkinBoneData {
    CK3dEntity@ GetBone() const;
    void SetBone(CK3dEntity@ ent);
    void SetBoneInitialInverseMatrix(const VxMatrix&in mat);
}

class CKSkinVertexData {
    int GetBone(int n) const;
    int GetBoneCount() const;
    VxVector& GetInitialPos();
    float GetWeight(int n) const;
    void SetBone(int n, int boneIdx);
    void SetBoneCount(int boneCount);
    void SetInitialPos(const VxVector&in pos);
    void SetWeight(int n, float weight);
}

class CKSODHash {
    CKSODHashConstIt Begin() const;
    CKSODHashIt Begin();
    void Clear();
    CKSODHashConstIt End() const;
    CKSODHashIt End();
    CKSODHashConstIt Find(const uint&in) const;
    CKSODHashIt Find(const uint&in);
    int GetMemoryOccupation(bool = false) const;
    int Index(const uint&in) const;
    CKSODHashIt Insert(const uint&in, const CKSceneObjectDesc&in);
    bool Insert(const uint&in, const CKSceneObjectDesc&in, bool override);
    CKSODHashIt InsertUnique(const uint&in, const CKSceneObjectDesc&in);
    bool IsHere(const uint&in) const;
    bool LookUp(const uint&in, CKSceneObjectDesc&out) const;
    CKSODHashIt Remove(const CKSODHashIt&in);
    void Remove(const uint&in);
    void Reserve(int);
    int Size() const;
    CKSODHashPair TestInsert(const uint&in, const CKSceneObjectDesc&in);
    CKSODHash& opAssign(const CKSODHash&in);
    CKSceneObjectDesc& opIndex(const uint&inout);
}

class CKSODHashConstIt {
    const uint& GetKey() const;
    const CKSceneObjectDesc& GetValue() const;
    CKSODHashConstIt& opAssign(const CKSODHashConstIt&in);
    bool opEquals(const CKSODHashConstIt&in) const;
    CKSODHashConstIt opPostInc(int);
    CKSODHashConstIt& opPreInc();
}

class CKSODHashEntry {
    CKSODHashEntry& opAssign(const CKSODHashEntry&in);
    CKSceneObjectDesc m_Data;
    uint m_Key;
    CKSODHashEntry& m_Next;
}

class CKSODHashIt {
    const uint& GetKey() const;
    CKSceneObjectDesc& GetValue();
    const CKSceneObjectDesc& GetValue() const;
    CKSODHashIt& opAssign(const CKSODHashIt&in);
    bool opEquals(const CKSODHashIt&in) const;
    CKSODHashIt opPostInc(int);
    CKSODHashIt& opPreInc();
}

class CKSODHashPair {
    CKSODHashPair& opAssign(const CKSODHashPair&in);
    CKSODHashIt m_Iterator;
    int m_New;
}

class CKSound {
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    int GetPriority();
    CK_SOUND_SAVEOPTIONS GetSaveOptions();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    bool HasAttribute(int attribType);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetName(const string&in name, bool shared = false);
    void SetPriority(int priority);
    void SetSaveOptions(CK_SOUND_SAVEOPTIONS options);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKMidiSound@ opCast();
    CKWaveSound@ opCast();
    const CKMidiSound@ opCast() const;
    const CKWaveSound@ opCast() const;
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKSoundManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    NativePointer CreateSource(CK_WAVESOUND_TYPE flags, CKWaveFormat&in wf, uint bytes, bool streamed);
    NativePointer DuplicateSource(NativePointer source);
    CK_SOUNDMANAGER_CAPS GetCaps();
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    CK3dEntity@ GetListener();
    string GetName();
    int GetPlayPosition(NativePointer source);
    uint GetStreamedBufferSize();
    CK_WAVESOUND_TYPE GetType(NativePointer source);
    uint GetValidFunctionsMask();
    CKERROR GetWaveFormat(NativePointer source, CKWaveFormat&out wf);
    int GetWaveSize(NativePointer source);
    bool IsInitialized();
    bool IsPlaying(NativePointer source);
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR Lock(NativePointer source, uint writeCursor, uint numBytes, NativePointer&out audioPtr1, uint&out audioBytes1, NativePointer&out audioPtr2, uint&out audioBytes2, CK_WAVESOUND_LOCKMODE flags);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    void Pause(CKWaveSound@ sound, NativePointer source);
    void Play(CKWaveSound@ sound, NativePointer source, bool loop);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    void ReleaseSource(NativePointer source);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void SetListener(CK3dEntity@ listener);
    void SetPlayPosition(NativePointer source, int pos);
    void SetStreamedBufferSize(uint size);
    void SetType(NativePointer source, CK_WAVESOUND_TYPE type);
    CKERROR SetWaveFormat(NativePointer source, CKWaveFormat&in wf);
    void StartProfile();
    void Stop(CKWaveSound@ sound, NativePointer source);
    void StopProfile();
    CKERROR Unlock(NativePointer source, NativePointer audioPtr1, uint numBytes1, NativePointer audioPtr2, uint audioBytes2);
    void Update3DSettings(NativePointer source, CK_SOUNDMANAGER_CAPS settingsoptions, CKWaveSound3DSettings&inout settings, bool set = true);
    void UpdateListenerSettings(CK_SOUNDMANAGER_CAPS settingsoptions, CKListenerSettings&inout settings, bool set = true);
    void UpdateSettings(NativePointer source, CK_SOUNDMANAGER_CAPS settingsoptions, CKWaveSoundSettings&inout settings, bool set = true);
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKSoundReader {
    CKERROR Decode();
    CKERROR GetDataBuffer(NativePointer&out buf, int&out size);
    int GetDataSize();
    int GetDuration();
    CK_DATAREADER_FLAGS GetFlags();
    string GetOptionDescription(int i);
    int GetOptionsCount();
    CKPluginInfo GetReaderInfo();
    CKERROR GetWaveFormat(CKWaveFormat&out wfe);
    CKERROR OpenFile(const string&in filename);
    CKERROR Pause();
    CKERROR Play();
    CKERROR ReadMemory(NativeBuffer@ memory);
    CKERROR ReadMemory(NativePointer memory, int size);
    CKERROR Resume();
    CKERROR Seek(int pos);
    CKERROR Stop();
    CKDataReader@ opImplCast();
    const CKDataReader@ opImplCast() const;
}

class CKSprite {
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    bool CopyContext(CKRenderContext@ ctx, VxRect&in src, VxRect&in dest);
    bool Create(int width, int height, int bpp = 32, int slot = 0);
    int Draw(CKRenderContext@ context);
    void EnableClipToCamera(bool Clip = true);
    void EnableRatioOffset(bool ratio = true);
    void ExecuteBehaviors(float delta);
    bool FreeVideoMemory();
    int GetAlphaMask();
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    int GetBitsPerPixel();
    int GetBlueMask();
    int GetBytesPerLine();
    CKContext@ GetCKContext();
    CK2dEntity@ GetChild(int i) const;
    int GetChildrenCount() const;
    int GetClassID();
    int GetCurrentSlot();
    VX_PIXELFORMAT GetDesiredVideoFormat();
    void GetExtents(VxRect&out srcRect, VxRect&out rect);
    uint GetFlags();
    int GetGreenMask();
    int GetHeight();
    CKERROR GetHomogeneousRect(VxRect&out rect);
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    CKMaterial@ GetMaterial();
    int GetMemoryOccupation();
    string GetMovieFileName();
    CKMovieReader@ GetMovieReader();
    string GetName();
    uint GetObjectFlags();
    CK2dEntity@ GetParent() const;
    int GetPickThreshold();
    uint GetPixel(int x, int y, int slot = -1);
    int GetPosition(Vx2DVector&out vect, bool hom = false, CK2dEntity@ ref = null);
    int GetPriority();
    void GetRect(VxRect&out rect);
    int GetRedMask();
    CKBitmapProperties@ GetSaveFormat();
    CK_TEXTURE_SAVEOPTIONS GetSaveOptions();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    int GetSize(Vx2DVector&out vect, bool hom = false);
    int GetSlotCount();
    string GetSlotFileName(int slot);
    void GetSourceRect(VxRect&out rect);
    bool GetSystemTextureDesc(VxImageDescEx&out desc);
    uint GetTransparentColor();
    VX_PIXELFORMAT GetVideoPixelFormat();
    bool GetVideoTextureDesc(VxImageDescEx&out desc);
    int GetWidth();
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK2dEntity@ HierarchyParser(CK2dEntity@ current) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsBackground();
    bool IsClipToParent();
    bool IsClippedToCamera();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsHomogeneousCoordinates();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInVideoMemory();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable();
    bool IsPrivate();
    bool IsRatioOffset();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsTransparent();
    bool IsUpToDate();
    bool IsUsingSourceRect();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    bool LoadImage(const string&in name, int slot = 0);
    bool LoadMovie(const string&in name, int width = 0, int height = 0, int bpp = 16);
    NativePointer LockSurfacePtr(int slot = -1);
    void ModifyFlags(uint add, uint remove = 0);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    bool ReleaseAllSlots();
    bool ReleaseSlot(int slot);
    bool ReleaseSurfacePtr(int slot = -1);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    int Render(CKRenderContext@ context);
    bool Restore(bool clamp = false);
    void RestoreInitialSize();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    bool SaveImage(const string&in name, int slot = 0, bool useFormat = false);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetBackground(bool back = true);
    void SetClipToParent(bool clip = true);
    bool SetCurrentSlot(int slot);
    void SetDesiredVideoFormat(VX_PIXELFORMAT pf);
    void SetExtents(const VxRect&in srcRect, const VxRect&in rect);
    void SetFlags(uint flags);
    void SetHomogeneousCoordinates(bool coord = true);
    CKERROR SetHomogeneousRect(const VxRect&in rect, bool keepChildren = false);
    void SetMaterial(CKMaterial@ mat);
    void SetName(const string&in name, bool shared = false);
    bool SetParent(CK2dEntity@ parent);
    void SetPickThreshold(int pt);
    void SetPickable(bool pick = true);
    bool SetPixel(int x, int y, uint col, int slot = -1);
    void SetPosition(const Vx2DVector&in vect, bool hom = false, bool keepChildren = false, CK2dEntity@ ref = null);
    void SetPriority(int priority);
    void SetRect(const VxRect&in rect, bool keepChildren = false);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetSaveFormat(CKBitmapProperties@ format);
    void SetSaveOptions(CK_TEXTURE_SAVEOPTIONS options);
    void SetSize(const Vx2DVector&in vect, bool hom = false, bool keepChildren = false);
    bool SetSlotCount(int count);
    bool SetSlotFileName(int slot, const string&in filename);
    void SetSourceRect(VxRect&in rect);
    void SetTransparent(bool transparency);
    void SetTransparentColor(uint Color);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    bool SystemToVideoMemory(CKRenderContext@ dev, bool clamping = false);
    bool ToRestore();
    void UseSourceRect(bool use = true);
    CKSpriteText@ opCast();
    const CKSpriteText@ opCast() const;
    CK2dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK2dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKSprite3D {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    const VxMatrix& GetLocalMatrix() const;
    CKMaterial@ GetMaterial();
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    VXSPRITE3D_TYPE GetMode();
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOffset(Vx2DVector&out vect);
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    void GetSize(Vx2DVector&out vect);
    CKSkin@ GetSkin() const;
    void GetUVMapping(VxRect&out rect);
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFlags(uint flags);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMaterial(CKMaterial@ mat);
    void SetMode(VXSPRITE3D_TYPE mode);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOffset(const Vx2DVector&in vect);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetSize(const Vx2DVector&in vect);
    void SetUVMapping(const VxRect&in rect);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKSpriteText {
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    bool CopyContext(CKRenderContext@ ctx, VxRect&in src, VxRect&in dest);
    bool Create(int width, int height, int bpp = 32, int slot = 0);
    int Draw(CKRenderContext@ context);
    void EnableClipToCamera(bool Clip = true);
    void EnableRatioOffset(bool ratio = true);
    void ExecuteBehaviors(float delta);
    bool FreeVideoMemory();
    CKSPRITETEXT_ALIGNMENT GetAlign();
    int GetAlphaMask();
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    uint GetBackgroundTextColor();
    int GetBitsPerPixel();
    int GetBlueMask();
    int GetBytesPerLine();
    CKContext@ GetCKContext();
    CK2dEntity@ GetChild(int i) const;
    int GetChildrenCount() const;
    int GetClassID();
    int GetCurrentSlot();
    VX_PIXELFORMAT GetDesiredVideoFormat();
    void GetExtents(VxRect&out srcRect, VxRect&out rect);
    uint GetFlags();
    int GetGreenMask();
    int GetHeight();
    CKERROR GetHomogeneousRect(VxRect&out rect);
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    CKMaterial@ GetMaterial();
    int GetMemoryOccupation();
    string GetMovieFileName();
    CKMovieReader@ GetMovieReader();
    string GetName();
    uint GetObjectFlags();
    CK2dEntity@ GetParent() const;
    int GetPickThreshold();
    uint GetPixel(int x, int y, int slot = -1);
    int GetPosition(Vx2DVector&out vect, bool hom = false, CK2dEntity@ ref = null);
    int GetPriority();
    void GetRect(VxRect&out rect);
    int GetRedMask();
    CKBitmapProperties@ GetSaveFormat();
    CK_TEXTURE_SAVEOPTIONS GetSaveOptions();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    int GetSize(Vx2DVector&out vect, bool hom = false);
    int GetSlotCount();
    string GetSlotFileName(int slot);
    void GetSourceRect(VxRect&out rect);
    bool GetSystemTextureDesc(VxImageDescEx&out desc);
    string GetText();
    uint GetTextColor();
    uint GetTransparentColor();
    VX_PIXELFORMAT GetVideoPixelFormat();
    bool GetVideoTextureDesc(VxImageDescEx&out desc);
    int GetWidth();
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK2dEntity@ HierarchyParser(CK2dEntity@ current) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsBackground();
    bool IsClipToParent();
    bool IsClippedToCamera();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsHomogeneousCoordinates();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInVideoMemory();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable();
    bool IsPrivate();
    bool IsRatioOffset();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsTransparent();
    bool IsUpToDate();
    bool IsUsingSourceRect();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    bool LoadImage(const string&in name, int slot = 0);
    bool LoadMovie(const string&in name, int width = 0, int height = 0, int bpp = 16);
    NativePointer LockSurfacePtr(int slot = -1);
    void ModifyFlags(uint add, uint remove = 0);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    bool ReleaseAllSlots();
    bool ReleaseSlot(int slot);
    bool ReleaseSurfacePtr(int slot = -1);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    int Render(CKRenderContext@ context);
    bool Restore(bool clamp = false);
    void RestoreInitialSize();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    bool SaveImage(const string&in name, int slot = 0, bool useFormat = false);
    void SetAlign(CKSPRITETEXT_ALIGNMENT align);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetBackground(bool back = true);
    void SetBackgroundColor(uint col);
    void SetClipToParent(bool clip = true);
    bool SetCurrentSlot(int slot);
    void SetDesiredVideoFormat(VX_PIXELFORMAT pf);
    void SetExtents(const VxRect&in srcRect, const VxRect&in rect);
    void SetFlags(uint flags);
    void SetFont(const string&in fontName, int fontSize = 12, int weight = 400, bool italic = false, bool underline = false);
    void SetHomogeneousCoordinates(bool coord = true);
    CKERROR SetHomogeneousRect(const VxRect&in rect, bool keepChildren = false);
    void SetMaterial(CKMaterial@ mat);
    void SetName(const string&in name, bool shared = false);
    bool SetParent(CK2dEntity@ parent);
    void SetPickThreshold(int pt);
    void SetPickable(bool pick = true);
    bool SetPixel(int x, int y, uint col, int slot = -1);
    void SetPosition(const Vx2DVector&in vect, bool hom = false, bool keepChildren = false, CK2dEntity@ ref = null);
    void SetPriority(int priority);
    void SetRect(const VxRect&in rect, bool keepChildren = false);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetSaveFormat(CKBitmapProperties@ format);
    void SetSaveOptions(CK_TEXTURE_SAVEOPTIONS options);
    void SetSize(const Vx2DVector&in vect, bool hom = false, bool keepChildren = false);
    bool SetSlotCount(int count);
    bool SetSlotFileName(int slot, const string&in filename);
    void SetSourceRect(VxRect&in rect);
    void SetText(const string&in text);
    void SetTextColor(uint col);
    void SetTransparent(bool transparency);
    void SetTransparentColor(uint Color);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    bool SystemToVideoMemory(CKRenderContext@ dev, bool clamping = false);
    bool ToRestore();
    void UseSourceRect(bool use = true);
    CK2dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    CKSprite@ opImplCast();
    const CK2dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
    const CKSprite@ opImplCast() const;
}

class CKSquare {
    CKSquare& opAssign(const CKSquare&in other);
    uint val;
}

class CKStateChunk {
    void AddChunk(CKStateChunk@ chunk);
    void Clear();
    void Clone(CKStateChunk@ chunk);
    void CloseChunk();
    uint ComputeCRC(uint adler);
    bool ConvertFromBuffer(NativePointer buffer);
    int ConvertToBuffer(NativePointer buffer);
    int GetChunkClassID();
    int16 GetChunkVersion();
    int GetCurrentPos();
    int GetDataSize();
    int16 GetDataVersion();
    void Goto(int dwordCount);
    NativePointer LockReadBuffer();
    NativePointer LockWriteBuffer(int dwordCount);
    void Pack(int compressionLevel);
    void ReadAndFillBuffer(NativePointer buffer);
    void ReadAndFillBuffer(int size, NativePointer buffer);
    void ReadAndFillBuffer_LEndian(NativePointer buffer);
    void ReadAndFillBuffer_LEndian(int size, NativePointer buffer);
    void ReadAndFillBuffer_LEndian16(NativePointer buffer);
    void ReadAndFillBuffer_LEndian16(int size, NativePointer buffer);
    int ReadArray_LEndian(NativePointer&out array);
    int ReadArray_LEndian16(NativePointer&out array);
    uint ReadBitmap();
    NativePointer ReadBitmap2(VxImageDescEx&out desc);
    int ReadBuffer(NativePointer&out buffer);
    uint8 ReadByte();
    uint ReadDword();
    uint ReadDwordAsWords();
    float ReadFloat();
    CKGUID ReadGuid();
    uint ReadIdentifier();
    int ReadInt();
    int ReadManagerInt(CKGUID&out guid);
    int ReadManagerIntSequence();
    void ReadMatrix(VxMatrix&out mat);
    CKObject@ ReadObject(CKContext@ context);
    CKObjectArray@ ReadObjectArray();
    void ReadObjectArray(CKObjectArray@ objArray);
    uint ReadObjectID();
    NativePointer ReadRawBitmap(VxImageDescEx&out desc);
    bool ReadReaderBitmap(const VxImageDescEx&in desc);
    int ReadString(string&out str);
    CKStateChunk@ ReadSubChunk();
    void ReadVector(VxVector&out v);
    uint16 ReadWord();
    const XObjectArray& ReadXObjectArray();
    const XObjectPointerArray& ReadXObjectArray(CKContext@ context);
    int RemapManagerInt(CKGUID manager, NativePointer conversionTable, int nbEntries);
    int RemapObject(uint oldID, uint newID);
    int RemapObjects(CKContext@ context, CKDependenciesContext@ depContext = null);
    int RemapParameterInt(CKGUID parameterType, NativePointer conversionTable, int nbEntries);
    bool SeekIdentifier(uint identifier);
    int SeekIdentifierAndReturnSize(uint identifier);
    void SetDataVersion(int16 version);
    void SetDynamic(bool dynamic);
    void Skip(int dwordCount);
    int StartManagerReadSequence(CKGUID&out guid);
    void StartManagerSequence(CKGUID man, int count);
    void StartObjectIDSequence(int count);
    void StartRead();
    int StartReadSequence();
    void StartSubChunkSequence(int count);
    void StartWrite();
    bool UnPack(int destSize);
    void UpdateDataSize();
    void WriteArray_LEndian(int elementCount, int elementSize, NativePointer srcData);
    void WriteArray_LEndian16(int elementCount, int elementSize, NativePointer srcData);
    void WriteBitmap(uint bitmap, const string&in ext = void);
    void WriteBuffer(int size, NativePointer buf);
    void WriteBufferNoSize(int size, NativePointer buf);
    void WriteBufferNoSize_LEndian(int size, NativePointer buf);
    void WriteBufferNoSize_LEndian16(int size, NativePointer buf);
    void WriteBuffer_LEndian(int size, NativePointer buf);
    void WriteBuffer_LEndian16(int size, NativePointer buf);
    void WriteByte(uint8 byte);
    void WriteDword(uint data);
    void WriteDwordAsWords(uint data);
    void WriteFloat(float data);
    void WriteGuid(CKGUID data);
    void WriteIdentifier(uint id);
    void WriteInt(int data);
    void WriteManagerInt(CKGUID manager, int val);
    void WriteManagerSequence(int val);
    void WriteMatrix(const VxMatrix&in mat);
    void WriteObject(CKObject@ obj);
    void WriteObjectArray(CKObjectArray@ objArray, CKContext@ context = null);
    void WriteObjectID(uint id);
    void WriteObjectIDSequence(uint id);
    void WriteObjectSequence(CKObject@ obj);
    void WriteRawBitmap(const VxImageDescEx&in desc);
    void WriteReaderBitmap(const VxImageDescEx&in desc, CKBitmapReader@ reader, CKBitmapProperties@ bp);
    void WriteString(const string&in str);
    void WriteSubChunk(CKStateChunk@ sub);
    void WriteSubChunkSequence(CKStateChunk@ sub);
    void WriteVector(const VxVector&in v);
    void WriteWord(uint16 data);
}

class CKStateObject {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    void EnterState();
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsStateActive();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    void LeaveState();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetName(const string&in name, bool shared = false);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKStats {
    float GetUserProfile(int index) const;
    void SetUserProfile(int index, float value);
    CKStats& opAssign(const CKStats&in other);
    int ActiveObjectsExecuted;
    float AnimationManagement;
    float BehaviorCodeExecution;
    int BehaviorDelayedLinks;
    int BehaviorLinksParsed;
    int BehaviorsExecuted;
    int BuildingBlockExecuted;
    float EstimatedInterfaceTime;
    float IKManagement;
    float ParametricOperations;
    float ProcessTime;
    float RenderTime;
    float TotalBehaviorExecution;
    float TotalFrameTime;
}

class CKStructStruct {
    int GetNumSubParam() const;
    string GetSubParamDescription(int index) const;
    CKGUID GetSubParamGuid(int index) const;
    CKStructStruct& opAssign(const CKStructStruct&in other);
}

class CKSynchroObject {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CanBeHide();
    bool CanIPassRendezVous(CKBeObject@ asker);
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    NativePointer GetAppData();
    CKContext@ GetCKContext();
    int GetClassID();
    uint GetID();
    int GetMemoryOccupation();
    string GetName();
    uint GetObjectFlags();
    CKBeObject@ GetRendezVousArrivedObject(int pos);
    int GetRendezVousNumberOfArrivedObjects();
    int GetRendezVousNumberOfWaiters();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void Reset();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetName(const string&in name, bool shared = false);
    void SetRendezVousNumberOfWaiters(int waiters);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    CKObject@ opImplCast();
    const CKObject@ opImplCast() const;
}

class CKTargetCamera {
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    void ComputeProjectionMatrix(VxMatrix&out mat);
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    NativePointer GetAppData();
    void GetAspectRatio(int&out width, int&out height);
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    float GetBackPlane() const;
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    CKMesh@ GetCurrentMesh() const;
    uint GetFlags() const;
    float GetFov() const;
    float GetFrontPlane() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    float GetOrthographicZoom() const;
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    int GetProjectionType() const;
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    CK3dEntity@ GetTarget();
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void ResetRoll();
    void Roll(float angle);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    void SetAspectRatio(int width, int height);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetBackPlane(float back);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFlags(uint flags);
    void SetFov(float fov);
    void SetFrontPlane(float front);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetOrthographicZoom(float zoom);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetProjectionType(int proj);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetTarget(CK3dEntity@ target);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKCamera@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKCamera@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKTargetLight {
    void Active(bool active);
    bool AddChild(CK3dEntity@ child, bool keepWorldPos = true);
    bool AddChildren(const XObjectPointerArray&in children, bool keepWorldPos = true);
    CKERROR AddMesh(CKMesh@ mesh);
    void AddObjectAnimation(CKObjectAnimation@ anim);
    bool AddPostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    bool AddPreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback, bool temporary = false);
    void AddScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void AddScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    CKERROR AddScript(CKBehavior@ ckb);
    bool AreAnimationIgnored() const;
    bool AreRenderChannelsVisible() const;
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void ChangeReferential(CK3dEntity@ ref = null);
    bool CheckIfSameKindOfHierarchy(CK3dEntity@ mov, bool sameOrder = false) const;
    void CheckPostDeletion();
    void CheckPreDeletion();
    bool ConstructLocalMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructLocalMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    bool ConstructWorldMatrix(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat);
    bool ConstructWorldMatrixEx(const VxVector&in pos, const VxVector&in scale, const VxQuaternion&in quat, const VxQuaternion&in shear, float sign);
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKSkin@ CreateSkin();
    bool DestroySkin();
    void ExecuteBehaviors(float delta);
    bool GetActivity();
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    bool GetBaryCenter(VxVector&out Pos);
    const VxBbox& GetBoundingBox(bool local = false);
    CKContext@ GetCKContext();
    CK3dEntity@ GetChild(int pos) const;
    int GetChildrenCount() const;
    int GetClassID();
    const VxColor& GetColor();
    float GetConstantAttenuation();
    CKMesh@ GetCurrentMesh() const;
    float GetFallOff();
    float GetFallOffShape();
    uint GetFlags() const;
    const VxBbox& GetHierarchicalBox(bool local = false);
    float GetHotSpot();
    uint GetID();
    const VxMatrix& GetInverseWorldMatrix() const;
    float GetLastExecutionTime();
    const VxMatrix& GetLastFrameMatrix() const;
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    float GetLightPower();
    float GetLinearAttenuation();
    const VxMatrix& GetLocalMatrix() const;
    int GetMemoryOccupation();
    CKMesh@ GetMesh(int pos) const;
    int GetMeshCount() const;
    uint GetMoveableFlags() const;
    string GetName();
    CKObjectAnimation@ GetObjectAnimation(int index) const;
    int GetObjectAnimationCount() const;
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up, VxVector&out right = void, CK3dEntity@ ref = null);
    CK3dEntity@ GetParent() const;
    void GetPosition(VxVector&out Pos, CK3dEntity@ Ref = null) const;
    int GetPriority();
    float GetQuadraticAttenuation();
    void GetQuaternion(VxQuaternion&out quat, CK3dEntity@ ref = null);
    float GetRadius();
    float GetRange();
    CKPlace@ GetReferencePlace() const;
    void GetRenderExtents(VxRect&out rect) const;
    void GetScale(VxVector&out scale, bool local = true);
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    CKSkin@ GetSkin() const;
    bool GetSpecularFlag();
    CK3dEntity@ GetTarget();
    VXLIGHT_TYPE GetType();
    const VxMatrix& GetWorldMatrix() const;
    int GetZOrder();
    bool HasAttribute(int attribType);
    CK3dEntity@ HierarchyParser(CK3dEntity@ current) const;
    void IgnoreAnimations(bool ignore = true);
    void InverseTransform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void InverseTransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void InverseTransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsAllInsideFrustrum() const;
    bool IsAllOutsideFrustrum() const;
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInRenderContext(CKRenderContext@ context);
    bool IsInScene(CKScene@ scene);
    bool IsInViewFrustrum(CKRenderContext@ dev, uint flags = 0);
    bool IsInViewFrustrumHierarchic(CKRenderContext@ Dev);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPickable() const;
    bool IsPrivate();
    bool IsRootObject();
    bool IsToBeDeleted();
    bool IsToBeRendered();
    bool IsToBeRenderedLast();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    void LookAt(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    uint ModifyMoveableFlags(uint add, uint remove);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    int RayIntersection(const VxVector&in pos1, const VxVector&in pos2, VxIntersectionDesc&out desc, CK3dEntity@ ref, CK_RAYINTERSECTION options = CKRAYINTERSECTION_DEFAULT);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    void RemoveAllCallbacks();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    bool RemoveChild(CK3dEntity@ mov);
    CKERROR RemoveMesh(CKMesh@ mesh);
    void RemoveObjectAnimation(CKObjectAnimation@ anim);
    bool RemovePostRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemovePreRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    bool RemoveRenderCallBack();
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool Render(CKRenderContext@ dev, uint flags = CKRENDER_UPDATEEXTENTS);
    void Rotate(const VxVector&in axis, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    void Rotate(float x, float y, float z, float angle, CK3dEntity@ ref = null, bool keepChildren = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    bool SetBoundingBox(const VxBbox&in bbox, bool local = false);
    void SetColor(const VxColor&in c);
    void SetConstantAttenuation(float value);
    CKMesh@ SetCurrentMesh(CKMesh@ m, bool addIfNotHere = true);
    void SetFallOff(float value);
    void SetFallOffShape(float value);
    void SetFlags(uint flags);
    void SetHotSpot(float value);
    void SetLightPower(float power = 1.0);
    void SetLinearAttenuation(float value);
    void SetLocalMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetMoveableFlags(uint flags);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(const VxVector&in dir, const VxVector&in up, const VxVector&in right = void, CK3dEntity@ ref = null, bool keepChildren = false);
    bool SetParent(CK3dEntity@ parent, bool keepWorldPos = true);
    void SetPickable(bool pick = true);
    void SetPosition(const VxVector&in pos, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPosition(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void SetPriority(int priority);
    void SetQuadraticAttenuation(float value);
    void SetQuaternion(const VxQuaternion&in quat, CK3dEntity@ ref = null, bool keepChildren = false, bool keepScale = false);
    void SetRange(float value);
    void SetRenderAsTransparent(bool trans = true);
    bool SetRenderCallBack(CK_RENDEROBJECT_CALLBACK@ callback);
    void SetRenderChannels(bool renderChannels = true);
    void SetScale(const VxVector&in scale, bool keepChildren = false, bool local = true);
    void SetScale(float x, float y, float z, bool keepChildren = false, bool local = true);
    void SetSpecularFlag(bool specular);
    void SetTarget(CK3dEntity@ target);
    void SetType(VXLIGHT_TYPE type);
    void SetWorldMatrix(const VxMatrix&in Mat, bool KeepChildren = false);
    void SetZOrder(int z);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Transform(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void TransformMany(NativeBuffer@ dest, NativeBuffer@ src, int count, CK3dEntity@ ref = null) const;
    void TransformVector(VxVector&out dest, const VxVector&in src, CK3dEntity@ ref = null) const;
    void Translate(const VxVector&in vect, CK3dEntity@ ref = null, bool keepChildren = false);
    void Translate(float x, float y, float z, CK3dEntity@ ref = null, bool keepChildren = false);
    void UpdateBox(bool world = true);
    bool UpdateSkin();
    CK3dEntity@ opImplCast();
    CKBeObject@ opImplCast();
    CKLight@ opImplCast();
    CKObject@ opImplCast();
    CKRenderObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CK3dEntity@ opImplCast() const;
    const CKBeObject@ opImplCast() const;
    const CKLight@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKRenderObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
}

class CKTCBPositionKey {
    bool Compare(CKTCBPositionKey&in key, float threshold);
    const VxVector& GetPosition();
    float GetTime();
    void SetPosition(const VxVector&in);
    void SetTime(float t);
    CKTCBPositionKey& opAssign(const CKTCBPositionKey&in);
    CKKey opImplConv() const;
    CKPositionKey opImplConv() const;
    VxVector Pos;
    float TimeStep;
    float bias;
    float continuity;
    float easefrom;
    float easeto;
    float tension;
}

class CKTCBRotationKey {
    bool Compare(CKTCBRotationKey&in key, float threshold);
    const VxQuaternion& GetRotation();
    float GetTime();
    void SetRotation(const VxQuaternion&in);
    void SetTime(float t);
    CKTCBRotationKey& opAssign(const CKTCBRotationKey&in);
    CKKey opImplConv() const;
    CKRotationKey opImplConv() const;
    VxQuaternion Rot;
    float TimeStep;
    float bias;
    float continuity;
    float easefrom;
    float easeto;
    float tension;
}

class CKTexture {
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behGuid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    bool CopyContext(CKRenderContext@ dev, const VxRect&in src, const VxRect&in dest, int cubeMapFace = 0);
    bool CreateImage(int width, int height, int bpp = 32, int slot = 0);
    CKMovieInfo@ CreateMovieInfo(XString s, CKMovieProperties@&out mp);
    void ExecuteBehaviors(float delta);
    bool FreeVideoMemory();
    NativePointer GetAppData();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    int GetCurrentSlot();
    VX_PIXELFORMAT GetDesiredVideoFormat() const;
    bool GetDynamicHint();
    int GetHeight();
    uint GetID();
    bool GetImageDesc(VxImageDescEx&out desc);
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    int GetMemoryOccupation();
    int GetMipmapCount() const;
    string GetMovieFileName();
    CKMovieReader@ GetMovieReader();
    string GetName();
    uint GetObjectFlags();
    int GetPickThreshold();
    uint GetPixel(int x, int y, int slot = -1);
    int GetPriority();
    int GetRstTextureIndex() const;
    CKBitmapProperties@ GetSaveFormat();
    CK_TEXTURE_SAVEOPTIONS GetSaveOptions();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    int GetSlotCount();
    string GetSlotFileName(int slot);
    bool GetSystemTextureDesc(VxImageDescEx&out desc);
    uint GetTransparentColor();
    bool GetUserMipMapLevel(int level, VxImageDescEx&out resultImage);
    VX_PIXELFORMAT GetVideoPixelFormat() const;
    bool GetVideoTextureDesc(VxImageDescEx&out desc);
    int GetWidth();
    bool HasAttribute(int attribType);
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsCubeMap();
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInVideoMemory() const;
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsTransparent();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    bool LoadImage(const string&in name, int slot = 0);
    bool LoadMovie(const string&in name);
    bool LoadMovieFile(XString name);
    bool LoadSlotImage(XString name, int slot = 0);
    NativePointer LockSurfacePtr(int slot = -1);
    void ModifyObjectFlags(uint add, uint remove);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    bool ReleaseAllSlots();
    bool ReleaseSlot(int slot);
    bool ReleaseSurfacePtr(int slot = -1);
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    bool ResizeImages(int width, int height);
    bool Restore(bool clamp = false);
    CKStateChunk@ Save(CKFile@ file, uint flags);
    bool SaveImage(const string&in name, int slot = 0, bool useFormat = false);
    bool SaveImageAlpha(const string&in name, int slot = 0);
    void SetAlphaForTransparentColor(const VxImageDescEx&in desc);
    void SetAppData(NativePointer data);
    bool SetAsCurrent(CKRenderContext@ dev, bool clamping = false, int textureStage = 0);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetBorderColorForClamp(const VxImageDescEx&in desc);
    void SetCubeMap(bool cubeMap);
    bool SetCurrentSlot(int slot);
    void SetDesiredVideoFormat(VX_PIXELFORMAT format);
    void SetDynamicHint(bool dynamic);
    void SetMovieInfo(CKMovieInfo@ mi);
    void SetName(const string&in name, bool shared = false);
    void SetPickThreshold(int pt);
    bool SetPixel(int x, int y, uint color, int slot = -1);
    void SetPriority(int priority);
    void SetSaveFormat(CKBitmapProperties@ format);
    void SetSaveOptions(CK_TEXTURE_SAVEOPTIONS options);
    bool SetSlotCount(int count);
    bool SetSlotFileName(int slot, const string&in filename);
    bool SetSlotImage(int slot, NativeBuffer@ buffer, const VxImageDescEx&in desc);
    bool SetSlotImage(int slot, NativePointer buffer, const VxImageDescEx&in desc);
    void SetTransparent(bool transparency);
    void SetTransparentColor(uint color);
    bool SetUserMipMapMode(bool userMipmap);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    bool SystemToVideoMemory(CKRenderContext@ dev, bool clamping = false);
    bool ToRestore();
    bool UseMipmap(bool useMipmap);
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
    uint m_BitmapFlags;
    int m_CurrentSlot;
    int m_Height;
    CKMovieInfo@ m_MovieInfo;
    int m_PickThreshold;
    uint m_TransColor;
    int m_Width;
}

class CKTimeManager {
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(XObjectArray&in, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    void ChangeLimitOptions(CK_FRAMERATE_LIMITS fpsOptions, CK_FRAMERATE_LIMITS behOptions = CK_RATE_NOP);
    float GetAbsoluteTime();
    float GetBehavioralRateLimit();
    float GetFrameRateLimit();
    int GetFunctionPriority(CKMANAGER_FUNCTIONS functions);
    CKGUID GetGuid();
    float GetLastDeltaTime();
    float GetLastDeltaTimeFree();
    uint GetLimitOptions();
    uint GetMainTickCount();
    float GetMaximumDeltaTime();
    float GetMinimumDeltaTime();
    string GetName();
    float GetTime();
    float GetTimeScaleFactor();
    void GetTimeToWaitForLimits(float&out timeBeforeRender, float&out timeBeforeBeh);
    uint GetValidFunctionsMask();
    CKERROR LoadData(CKStateChunk@ chunk, CKFile@ loadedFile);
    CKERROR OnCKEnd();
    CKERROR OnCKInit();
    CKERROR OnCKPause();
    CKERROR OnCKPlay();
    CKERROR OnCKPostReset();
    CKERROR OnCKReset();
    CKERROR OnPostCopy(CKDependenciesContext&in context);
    CKERROR OnPostRender(CKRenderContext@ dev);
    CKERROR OnPostSpriteRender(CKRenderContext@ dev);
    CKERROR OnPreCopy(CKDependenciesContext&in context);
    CKERROR OnPreRender(CKRenderContext@ dev);
    CKERROR PostClearAll();
    CKERROR PostLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PostLoad();
    CKERROR PostProcess();
    CKERROR PostSave();
    CKERROR PreClearAll();
    CKERROR PreLaunchScene(CKScene@ oldScene, CKScene@ newScene);
    CKERROR PreLoad();
    CKERROR PreProcess();
    CKERROR PreSave();
    void ResetChronos(bool renderChrono, bool behavioralChrono);
    CKStateChunk@ SaveData(CKFile@ savedFile);
    CKERROR SequenceAddedToScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceDeleted(XObjectArray&in objects);
    CKERROR SequenceRemovedFromScene(CKScene@ scene, XObjectArray&in objects);
    CKERROR SequenceToBeDeleted(XObjectArray&in objects);
    void SetBehavioralRateLimit(float limit);
    void SetFrameRateLimit(float limit);
    void SetLastDeltaTime(float delta);
    void SetMaximumDeltaTime(float limit);
    void SetMinimumDeltaTime(float limit);
    void SetTimeScaleFactor(float factor);
    void StartProfile();
    void StopProfile();
    CKBaseManager@ opImplCast();
    const CKBaseManager@ opImplCast() const;
}

class CKTimeProfiler {
    void Dump(string&out buffer, const string&in separator = " | ");
    void Reset();
    void opCall(const string&in str);
}

class CKTVPatch {
    int16 GetTV(int index);
    void SetTV(int index, int16 value);
}

class CKUICallbackStruct {
    string get_ConsoleString() const;
    bool get_DoBeep() const;
    int get_NbObjectsLoaded() const;
    int get_NbObjectsToLoad() const;
    uint get_Param1() const;
    uint get_Param2() const;
    CKUICallbackStruct& opAssign(const CKUICallbackStruct&in other);
    void set_ConsoleString(const string&in value);
    void set_DoBeep(bool value);
    void set_NbObjectsLoaded(int value);
    void set_NbObjectsToLoad(int value);
    void set_Param1(uint value);
    void set_Param2(uint value);
    uint Param3;
    uint Reason;
}

class CKVertexBuffer {
    CKVB_STATE Check(CKRenderContext@ ctx, uint maxVertexCount, CKRST_DPFLAGS format, bool dynamic = false);
    void Destroy();
    bool Draw(CKRenderContext@ ctx, VXPRIMITIVETYPE pType, const uint16[]&in indices, uint startVertex, uint vertexCount);
    bool Draw(CKRenderContext@ ctx, VXPRIMITIVETYPE pType, uint startVertex, uint vertexCount);
    bool IsValid() const;
    bool Lock(CKRenderContext@ ctx, uint startVertex, uint vertexCount, VxDrawPrimitiveData&out data, CKLOCKFLAGS lockFlags = CK_LOCK_DEFAULT);
    void Unlock(CKRenderContext@ ctx);
    bool get_valid() const;
}

class CKWaitingObject {
    uint BeObjectId() const;
    uint BehaviorId() const;
    bool HasBeObject() const;
    bool HasBehavior() const;
    bool HasOutput() const;
    uint OutputId() const;
    CKWaitingObject& opAssign(const CKWaitingObject&in other);
}

class CKWaveFormat {
    CKWaveFormat& opAssign(const CKWaveFormat&in other);
    uint16 cbSize;
    uint nAvgBytesPerSec;
    uint16 nBlockAlign;
    uint16 nChannels;
    uint nSamplesPerSec;
    uint16 wBitsPerSample;
    uint16 wFormatTag;
}

class CKWaveSound {
    CKERROR AddScript(CKBehavior@ ckb);
    CKERROR CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObject(uint id, uint flags = 0, CKDependencies&in depoptions = void);
    CKERROR CKDestroyObjects(const XObjectArray&in ids, uint flags = 0, CKDependencies&in depoptions = void);
    CKObject@ CKGetObject(uint id);
    int CallBehaviorCallbackFunction(uint message, CKGUID&in behguid = void);
    int CanBeHide();
    void CheckPostDeletion();
    void CheckPreDeletion();
    CKERROR Copy(CKObject@ obj, CKDependenciesContext&in context);
    CKERROR Create(CK_WAVESOUND_TYPE type, const CKWaveFormat&in format, int size);
    CKERROR Create(bool fileStreaming, const string&in filename);
    void ExecuteBehaviors(float delta);
    void FillWithBlanks(bool incBf = false);
    NativePointer GetAppData();
    CK3dEntity@ GetAttachedEntity();
    int GetAttributeCount();
    CKParameterOut@ GetAttributeParameter(int attribType);
    CKParameterOut@ GetAttributeParameterByIndex(int index);
    int GetAttributeType(int index);
    CKContext@ GetCKContext();
    int GetClassID();
    void GetCone(float&out inAngle, float&out outAngle, float&out outsideGain);
    void GetDirection(VxVector&out dir);
    bool GetFileStreaming();
    float GetGain();
    uint GetID();
    float GetLastExecutionTime();
    CKMessage@ GetLastFrameMessage(int pos);
    int GetLastFrameMessageCount();
    bool GetLoopMode();
    int GetMemoryOccupation();
    void GetMinMaxDistance(float&out minDistance, float&out maxDistance, uint&out maxDistanceBehavior);
    string GetName();
    uint GetObjectFlags();
    void GetOrientation(VxVector&out dir, VxVector&out up);
    float GetPan();
    float GetPitch();
    uint GetPlayPosition();
    int GetPlayedMs();
    void GetPosition(VxVector&out pos);
    float GetPriority();
    CKSoundReader@ GetReader();
    CK_SOUND_SAVEOPTIONS GetSaveOptions();
    CKScene@ GetSceneIn(int index);
    int GetSceneInCount();
    CKBehavior@ GetScript(int pos);
    int GetScriptCount();
    void GetSound3DInformation(VxVector&out pos, VxVector&out dir, float&out distanceFromListener);
    string GetSoundFileName();
    CKERROR GetSoundFormat(CKWaveFormat&out format);
    int GetSoundLength();
    uint GetSource();
    uint GetState();
    CK_WAVESOUND_TYPE GetType();
    void GetVelocity(VxVector&out pos);
    bool HasAttribute(int attribType);
    void InternalStop();
    bool IsActiveInCurrentScene();
    bool IsActiveInScene(CKScene@ scene);
    bool IsDynamic();
    bool IsHiddenByParent();
    bool IsHierarchicallyHide();
    bool IsInGroup(CKGroup@ group);
    bool IsInScene(CKScene@ scene);
    bool IsInterfaceObj();
    bool IsNotToBeSaved();
    bool IsObjectUsed(CKObject@ obj, int cid);
    bool IsPaused();
    bool IsPlaying();
    bool IsPrivate();
    bool IsToBeDeleted();
    bool IsUpToDate();
    bool IsVisible();
    bool IsWaitingForMessages();
    CKERROR Load(CKStateChunk@ chunk, CKFile@ file);
    CKERROR Lock(uint writeCursor, uint numBytes, NativePointer&out ptr1, uint&out bytes1, NativePointer&out ptr2, uint&out bytes2, CK_WAVESOUND_LOCKMODE flags);
    void ModifyObjectFlags(uint add, uint remove);
    void Pause();
    void Play(float fadeIn = 0, float finalGain = 1.0);
    uint PlayMinion(bool background = true, CK3dEntity@ ent = null, VxVector&in position = void, VxVector&in direction = void, float minDelay = 0.0);
    void PositionSound(CK3dEntity@ obj, VxVector&in position = void, VxVector&in direction = void, bool commit = false);
    void PostLoad();
    void PreDelete();
    void PreSave(CKFile@ file, uint flags);
    CKERROR PrepareDependencies(CKDependenciesContext&in context);
    CKERROR Recreate(bool safe = false);
    void Release();
    CKERROR RemapDependencies(CKDependenciesContext&in context);
    void RemoveAllAttributes();
    CKERROR RemoveAllScripts();
    bool RemoveAttribute(int attribType);
    CKBehavior@ RemoveScript(int pos);
    CKBehavior@ RemoveScript(uint id);
    void Resume();
    void Rewind();
    CKStateChunk@ Save(CKFile@ file, uint flags);
    void SetAppData(NativePointer data);
    void SetAsWaitingForMessages(bool wait = true);
    bool SetAttribute(int attribType, uint parameter = 0);
    void SetCone(float inAngle, float outAngle, float outsideGain);
    void SetDataToRead(int size);
    CKERROR SetFileStreaming(bool enabled, bool recreateSound = false);
    void SetGain(float gain);
    void SetLoopMode(bool enabled);
    void SetMinMaxDistance(float minDistance, float maxDistance, uint maxDistanceBehavior = 1);
    void SetName(const string&in name, bool shared = false);
    void SetOrientation(VxVector&in dir, VxVector&in up);
    void SetPan(float pan);
    void SetPitch(float rate);
    void SetPriority(float priority);
    CKERROR SetReader(CKSoundReader@ reader);
    void SetSaveOptions(CK_SOUND_SAVEOPTIONS options);
    CKERROR SetSoundFileName(const string&in filename);
    void SetState(uint state);
    void SetType(CK_WAVESOUND_TYPE type);
    void SetVelocity(VxVector&in pos);
    void Show(CK_OBJECT_SHOWOPTION show = CKSHOW);
    void Stop(float fadeOut = 0);
    CKERROR TryRecreate();
    CKERROR Unlock(NativePointer ptr1, uint bytes1, NativePointer ptr2, uint bytes2);
    void UpdateFade();
    void UpdatePosition(float delta);
    CKERROR WriteData(NativeBuffer@ buffer);
    CKERROR WriteData(NativePointer buffer, int size);
    CKERROR WriteDataFromReader();
    CKBeObject@ opImplCast();
    CKObject@ opImplCast();
    CKSceneObject@ opImplCast();
    CKSound@ opImplCast();
    const CKBeObject@ opImplCast() const;
    const CKObject@ opImplCast() const;
    const CKSceneObject@ opImplCast() const;
    const CKSound@ opImplCast() const;
}

class CKWaveSound3DSettings {
    CKWaveSound3DSettings& opAssign(const CKWaveSound3DSettings&in other);
    uint16 m_HeadRelative;
    float m_InAngle;
    float m_MaxDistance;
    float m_MinDistance;
    uint16 m_MuteAfterMax;
    VxVector m_OrientationDir;
    VxVector m_OrientationUp;
    float m_OutAngle;
    float m_OutsideGain;
    VxVector m_Position;
    VxVector m_Velocity;
}

class CKWaveSoundSettings {
    CKWaveSoundSettings& opAssign(const CKWaveSoundSettings&in other);
    float m_Eq;
    float m_Gain;
    float m_Pan;
    float m_Pitch;
    float m_Priority;
}

class complex {
    float abs() const;
    complex get_ir() const;
    complex get_ri() const;
    complex opAdd(const complex&in) const;
    complex& opAddAssign(const complex&in);
    complex opDiv(const complex&in) const;
    complex& opDivAssign(const complex&in);
    bool opEquals(const complex&in) const;
    complex opMul(const complex&in) const;
    complex& opMulAssign(const complex&in);
    complex opSub(const complex&in) const;
    complex& opSubAssign(const complex&in);
    void set_ir(const complex&in);
    void set_ri(const complex&in);
    float i;
    float r;
}

class const_weakref<T> {
    const T@ get() const;
    const_weakref<T>& opAssign(const const_weakref<T>&in);
    bool opEquals(const T@) const;
    bool opEquals(const const_weakref<T>&in) const;
    bool opEquals(const weakref<T>&in) const;
    const_weakref<T>& opHndlAssign(const T@);
    const_weakref<T>& opHndlAssign(const const_weakref<T>&in);
    const_weakref<T>& opHndlAssign(const weakref<T>&in);
    const T@ opImplCast() const;
}

class datetime {
    uint get_day() const;
    uint get_hour() const;
    uint get_minute() const;
    uint get_month() const;
    uint get_second() const;
    uint get_weekDay() const;
    uint get_year() const;
    datetime opAdd(int64 seconds) const;
    datetime& opAddAssign(int64 seconds);
    datetime opAdd_r(int64 seconds) const;
    datetime& opAssign(const datetime&in);
    int opCmp(const datetime&in) const;
    bool opEquals(const datetime&in) const;
    datetime opSub(int64 seconds) const;
    int64 opSub(const datetime&in) const;
    datetime& opSubAssign(int64 seconds);
    datetime opSub_r(int64 seconds) const;
    bool setDate(uint year, uint month, uint day);
    bool setTime(uint hour, uint minute, uint second);
}

class dictionary {
    bool delete(const string&in);
    void deleteAll();
    bool exists(const string&in) const;
    bool get(const string&in, double&out) const;
    bool get(const string&in, int64&out) const;
    string[]@ getKeys() const;
    uint getSize() const;
    bool isEmpty() const;
    dictionary& opAssign(const dictionary&in);
    dictionaryIter@ opForBegin() const;
    bool opForEnd(dictionaryIter@) const;
    dictionaryIter@ opForNext(dictionaryIter@) const;
    const dictionaryValue& opForValue0(dictionaryIter@) const;
    const string& opForValue1(dictionaryIter@) const;
    const dictionaryValue& opIndex(const string&in) const;
    dictionaryValue& opIndex(const string&in);
    void set(const string&in, const double&in);
    void set(const string&in, const int64&in);
}

class dictionaryIter {
}

class dictionaryValue {
    dictionaryValue& opAssign(const dictionaryValue&in);
    dictionaryValue& opAssign(double);
    dictionaryValue& opAssign(int64);
    double opConv();
    int64 opConv();
    dictionaryValue& opHndlAssign(const dictionaryValue&in);
}

class DynAggregate {
    DynAggregate& AggregateField(const DynAggregate&in aggr, int offset, uint arrayLength = 1);
    void Close();
    DynAggregate& Field(int8 type, int offset, uint arrayLength = 1);
}

class DynArgs {
    NativePointer ArgAggregate(NativePointer target);
    bool ArgBool();
    int8 ArgChar();
    double ArgDouble();
    float ArgFloat();
    int ArgInt();
    int ArgLong();
    int64 ArgLongLong();
    NativePointer ArgPointer();
    int16 ArgShort();
    string ArgString();
    uint8 ArgUChar();
    uint ArgUInt();
    uint ArgULong();
    uint64 ArgULongLong();
    uint16 ArgUShort();
    void ReturnAggregate(DynValue&inout result, NativePointer ret);
}

class DynCall {
    DynCall& ArgAggregate(const DynAggregate&in ag, NativePointer value);
    DynCall& ArgBool(bool value);
    DynCall& ArgChar(int8 value);
    DynCall& ArgDouble(double value);
    DynCall& ArgFloat(float value);
    DynCall& ArgInt(int value);
    DynCall& ArgLong(int value);
    DynCall& ArgLongLong(int64 value);
    DynCall& ArgPointer(NativePointer value);
    DynCall& ArgShort(int16 value);
    DynCall& ArgString(string&in value);
    DynCall& BeginCallAggr(const DynAggregate&in aggr);
    NativePointer CallAggregate(NativePointer funcptr, const DynAggregate&in aggr, NativePointer ret);
    int CallBool(NativePointer funcptr);
    int8 CallChar(NativePointer funcptr);
    double CallDouble(NativePointer funcptr);
    float CallFloat(NativePointer funcptr);
    int CallInt(NativePointer funcptr);
    int CallLong(NativePointer funcptr);
    int64 CallLongLong(NativePointer funcptr);
    NativePointer CallPointer(NativePointer funcptr);
    int16 CallShort(NativePointer funcptr);
    string CallString(NativePointer funcptr);
    void CallVoid(NativePointer funcptr);
    int GetError() const;
    DynCall& Mode(int mode);
    DynCall& Reset();
}

class DynCallback {
    NativePointer GetCallback() const;
    DynCallbackHandler@ GetHandler() const;
    void Init(const string&in signature, DynCallbackHandler@ handler);
    void Init(const string&in signature, DynCallbackHandler@ handler, const DynAggregate&in aggrs);
}

class DynLibrary {
    NativePointer FindSymbol(const string&in symbolName) const;
    string GetLibraryPath() const;
    bool IsLoaded() const;
    bool Load(const string&in libPath);
}

class DynSymbols {
    int GetCount() const;
    string GetName(NativePointer value) const;
    string GetName(int index) const;
    bool Init(const string&in libPath);
    bool IsInited() const;
}

class DynValue {
    bool GetBool() const;
    int8 GetChar() const;
    double GetDouble() const;
    float GetFloat() const;
    int GetInt() const;
    int GetLong() const;
    int64 GetLongLong() const;
    NativePointer GetPointer() const;
    int16 GetShort() const;
    string GetString() const;
    uint8 GetUChar() const;
    uint GetUInt() const;
    uint GetULong() const;
    uint64 GetULongLong() const;
    uint16 GetUShort() const;
    void SetBool(bool value);
    void SetChar(int8 value);
    void SetDouble(double value);
    void SetFloat(float value);
    void SetInt(int value);
    void SetLong(int value);
    void SetLongLong(int64 value);
    void SetPointer(NativePointer value);
    void SetShort(int16 value);
    void SetString(const string&in value);
    void SetUChar(uint8 value);
    void SetUInt(uint value);
    void SetULong(uint value);
    void SetULongLong(uint64 value);
    void SetUShort(uint16 value);
}

class Entity2DRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    SceneObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
    const SceneObjectRef@ opImplCast() const;
}

class Entity3DRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    SceneObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
    const SceneObjectRef@ opImplCast() const;
}

class file {
    int close();
    int getPos() const;
    int getSize() const;
    bool isEndOfFile() const;
    int movePos(int);
    int open(const string&in, const string&in);
    double readDouble();
    float readFloat();
    int64 readInt(uint);
    string readLine();
    string readString(uint);
    uint64 readUInt(uint);
    int setPos(int);
    int writeDouble(double);
    int writeFloat(float);
    int writeInt(int64, uint);
    int writeString(const string&in);
    int writeUInt(uint64, uint);
    bool mostSignificantByteFirst;
}

class filesystem {
    bool changeCurrentPath(const string&in);
    int copyFile(const string&in, const string&in);
    int deleteFile(const string&in);
    datetime getCreateDateTime(const string&in) const;
    string getCurrentPath() const;
    string[]@ getDirs() const;
    string[]@ getFiles() const;
    datetime getModifyDateTime(const string&in) const;
    int64 getSize(const string&in) const;
    bool isDir(const string&in) const;
    bool isLink(const string&in) const;
    int makeDir(const string&in);
    int move(const string&in, const string&in);
    int removeDir(const string&in);
}

class GraphEditLink {
    string Describe() const;
    string Error() const;
    bool IsValid() const;
    BehaviorLinkRef@ Link() const;
    bool get_valid() const;
}

class GraphEditNode {
    BehaviorRef@ Behavior() const;
    string Describe() const;
    string Error() const;
    bool IsValid() const;
    bool get_valid() const;
}

class GraphEditResult {
    BehaviorLinkRef@[]@ CreatedLinks() const;
    BehaviorNode@[]@ CreatedNodes() const;
    string Describe() const;
    string Error() const;
    bool IsOk() const;
    bool Ok() const;
    bool Raise(const CKBehaviorContext&in ctx) const;
    bool get_ok() const;
}

class GraphTask {
    BehaviorRef@ Behavior() const;
    bool Cancel();
    bool Done(BBSlot@ output) const;
    bool Done(int outputIndex = -1) const;
    float Elapsed() const;
    string Error() const;
    bool IsAlive() const;
    bool IsPaused() const;
    bool IsValid() const;
    bool OutputActive(BBSlot@ output) const;
    bool OutputActive(int outputIndex = -1) const;
    ParamRef@ Pout(BBSlot@ pout) const;
    ParamRef@ Pout(int index) const;
    bool Raise(const CKBehaviorContext&in ctx) const;
    bool Reset();
    bool Step(const CKBehaviorContext&in ctx);
    bool TimedOut() const;
    GraphTask@ Timeout(float seconds);
    bool get_valid() const;
}

class grid<T> {
    uint height() const;
    T& opIndex(uint, uint);
    const T& opIndex(uint, uint) const;
    void resize(uint width, uint height);
    uint width() const;
}

class ImpactDesc {
    ImpactDesc& opAssign(const ImpactDesc&in other);
    uint m_Entity;
    VxVector m_ImpactNormal;
    VxVector m_ImpactPoint;
    VxMatrix m_ImpactWorldMatrix;
    uint m_ObstacleTouched;
    uint m_OwnerEntity;
    uint m_SubObstacleTouched;
    int m_TouchedFace;
    int m_TouchedVertex;
    int m_TouchingFace;
    int m_TouchingVertex;
}

class LevelRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class MaterialRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class MeshRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class NativeBuffer {
    int Compare(const NativeBuffer&in other, uint size) const;
    uint CursorPos() const;
    NativeBuffer@ Extract(uint size);
    bool Fill(int value, uint size);
    bool IsEmpty() const;
    bool IsValid() const;
    uint Load(const string&in filename, uint size, int offset = 0);
    uint Merge(const NativeBuffer&in other, bool truncate = false);
    uint ReadChar(int8&out value);
    uint ReadDouble(double&out value);
    uint ReadFloat(float&out value);
    uint ReadInt(int&out value);
    uint ReadLong(int&out value);
    uint ReadShort(int16&out value);
    uint ReadString(string&out value);
    uint ReadUChar(uint8&out value);
    uint ReadUInt(uint&out value);
    uint ReadULong(uint&out value);
    void Reset();
    uint Save(const string&in filename, uint size);
    bool Seek(uint pos);
    uint Size() const;
    bool Skip(uint offset);
    NativePointer ToPointer() const;
    uint WriteChar(int8 value);
    uint WriteDouble(double value);
    uint WriteFloat(float value);
    uint WriteInt(int value);
    uint WriteLong(int value);
    uint WriteShort(int16 value);
    uint WriteString(const string&in value);
    uint WriteUChar(uint8 value);
    uint WriteUInt(uint value);
    uint WriteULong(uint value);
    const uint8& opIndex(uint index) const;
    uint8& opIndex(uint index);
}

class NativePointer {
    bool Fill(int value, uint size);
    bool IsNull() const;
    uint ReadChar(int8&out value);
    uint ReadDouble(double&out value);
    uint ReadFloat(float&out value);
    uint ReadInt(int&out value);
    uint ReadLong(int&out value);
    NativePointer ReadPointer() const;
    uint ReadShort(int16&out value);
    uint ReadString(string&out value);
    uint ReadUChar(uint8&out value);
    uint ReadUInt(uint&out value);
    uint ReadULong(uint&out value);
    int ToInt() const;
    string ToString() const;
    uint ToUInt() const;
    uint WriteChar(int8 value);
    uint WriteDouble(double value);
    uint WriteFloat(float value);
    uint WriteInt(int value);
    uint WriteLong(int value);
    void WritePointer(const NativePointer&in ptr);
    uint WriteShort(int16 value);
    uint WriteString(const string&in value);
    uint WriteUChar(uint8 value);
    uint WriteUInt(uint value);
    uint WriteULong(uint value);
    NativePointer opAdd(int rhs) const;
    NativePointer& opAddAssign(int rhs);
    NativePointer opAnd(int rhs) const;
    NativePointer& opAndAssign(int rhs);
    NativePointer& opAssign(const NativePointer&in other);
    NativePointer& opAssign(int ptr);
    NativePointer& opAssign(uint ptr);
    int opCmp(const NativePointer&in other) const;
    NativePointer opCom() const;
    bool opEquals(const NativePointer&in other) const;
    NativePointer opNeg() const;
    NativePointer opOr(int rhs) const;
    NativePointer& opOrAssign(int rhs);
    NativePointer opShl(int rhs) const;
    NativePointer& opShlAssign(int rhs);
    NativePointer opShr(int rhs) const;
    NativePointer& opShrAssign(int rhs);
    NativePointer opSub(int rhs) const;
    NativePointer& opSubAssign(int rhs);
    NativePointer opXor(int rhs) const;
    NativePointer& opXorAssign(int rhs);
}

class ObjectRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    BehaviorLinkRef@ opCast();
    BehaviorRef@ opCast();
    Entity2DRef@ opCast();
    Entity3DRef@ opCast();
    LevelRef@ opCast();
    MaterialRef@ opCast();
    MeshRef@ opCast();
    ParamInRef@ opCast();
    ParamLocalRef@ opCast();
    ParamOperationRef@ opCast();
    ParamOutRef@ opCast();
    ParamRef@ opCast();
    ParamStructRef@ opCast();
    SceneObjectRef@ opCast();
    SceneRef@ opCast();
    TextureRef@ opCast();
    const BehaviorLinkRef@ opCast() const;
    const BehaviorRef@ opCast() const;
    const Entity2DRef@ opCast() const;
    const Entity3DRef@ opCast() const;
    const LevelRef@ opCast() const;
    const MaterialRef@ opCast() const;
    const MeshRef@ opCast() const;
    const ParamInRef@ opCast() const;
    const ParamLocalRef@ opCast() const;
    const ParamOperationRef@ opCast() const;
    const ParamOutRef@ opCast() const;
    const ParamRef@ opCast() const;
    const ParamStructRef@ opCast() const;
    const SceneObjectRef@ opCast() const;
    const SceneRef@ opCast() const;
    const TextureRef@ opCast() const;
}

class ParamEnumInfo {
    int Count() const;
    string Describe() const;
    int Find(const string&in nameOrValue) const;
    bool IsValid() const;
    string Name(int index) const;
    string NameOf(int value) const;
    int Value(int index) const;
}

class ParamFlagsInfo {
    int Count() const;
    string Describe() const;
    bool Has(uint mask, const string&in flagName) const;
    bool IsValid() const;
    string Name(int index) const;
    uint Parse(const string&in namesOrMask) const;
    string Text(uint value) const;
    uint Value(int index) const;
}

class ParamInfo {
    int DataSize() const;
    string Describe() const;
    CKGUID TypeGuid() const;
    string TypeName() const;
    int get_index() const;
    ParamKind get_kind() const;
    string get_name() const;
}

class ParamInRef {
    int ClassId() const;
    bool CopyFrom(ParamRef@ source);
    int DataSize() const;
    string Describe() const;
    ParamRef@ DirectSource() const;
    string Error() const;
    ParamValue@ Get() const;
    string GetEnumText() const;
    string GetFlagsText() const;
    NativeBuffer@ GetRaw() const;
    string GetText() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    ParamRef@ RealSource() const;
    bool Set(ParamValue@ value);
    bool SetBool(bool value);
    bool SetEnum(const string&in nameOrValue);
    bool SetEnum(int value);
    bool SetFlags(const string&in namesOrMask);
    bool SetFlags(uint mask);
    bool SetFloat(float value);
    bool SetInt(int value);
    bool SetObject(CKObject@ value);
    bool SetRaw(NativeBuffer@ data);
    bool SetSource(ParamRef@ source);
    ParamSourceLinkRef@ SetSourceScoped(ParamRef@ source);
    bool SetString(const string&in value);
    bool SetStruct(ParamStructValue@ value);
    bool SetText(const string&in text);
    ParamStructRef@ Struct();
    CKGUID TypeGuid() const;
    string TypeName() const;
    uint get_id() const;
    int get_index() const;
    ParamKind get_kind() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    ParamRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
    const ParamRef@ opImplCast() const;
}

class ParamLocalRef {
    int ClassId() const;
    bool CopyFrom(ParamRef@ source);
    int DataSize() const;
    string Describe() const;
    ParamRef@ DirectSource() const;
    string Error() const;
    ParamValue@ Get() const;
    string GetEnumText() const;
    string GetFlagsText() const;
    NativeBuffer@ GetRaw() const;
    string GetText() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    ParamRef@ RealSource() const;
    bool Set(ParamValue@ value);
    bool SetBool(bool value);
    bool SetEnum(const string&in nameOrValue);
    bool SetEnum(int value);
    bool SetFlags(const string&in namesOrMask);
    bool SetFlags(uint mask);
    bool SetFloat(float value);
    bool SetInt(int value);
    bool SetObject(CKObject@ value);
    bool SetRaw(NativeBuffer@ data);
    bool SetSource(ParamRef@ source);
    ParamSourceLinkRef@ SetSourceScoped(ParamRef@ source);
    bool SetString(const string&in value);
    bool SetStruct(ParamStructValue@ value);
    bool SetText(const string&in text);
    ParamStructRef@ Struct();
    CKGUID TypeGuid() const;
    string TypeName() const;
    uint get_id() const;
    int get_index() const;
    ParamKind get_kind() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    ParamRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
    const ParamRef@ opImplCast() const;
}

class ParamOp {
    string Describe() const;
    ParamOp@ In(int slot, ParamRef@ source);
    ParamOp@ In(int slot, ParamValue@ value);
    ParamOp@ Result(CKGUID guid);
    ParamOp@ Result(const string&in typeName);
}

class ParamOperationRef {
    int ClassId() const;
    string Describe() const;
    bool Destroy();
    CKERROR Do() const;
    string Error() const;
    uint Id() const;
    ParamRef@ In1() const;
    ParamRef@ In2() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    ParamRef@ Out() const;
    bool Restore();
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class ParamOutRef {
    int ClassId() const;
    bool CopyFrom(ParamRef@ source);
    int DataSize() const;
    string Describe() const;
    ParamRef@ DirectSource() const;
    string Error() const;
    ParamValue@ Get() const;
    string GetEnumText() const;
    string GetFlagsText() const;
    NativeBuffer@ GetRaw() const;
    string GetText() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    ParamRef@ RealSource() const;
    bool Set(ParamValue@ value);
    bool SetBool(bool value);
    bool SetEnum(const string&in nameOrValue);
    bool SetEnum(int value);
    bool SetFlags(const string&in namesOrMask);
    bool SetFlags(uint mask);
    bool SetFloat(float value);
    bool SetInt(int value);
    bool SetObject(CKObject@ value);
    bool SetRaw(NativeBuffer@ data);
    bool SetSource(ParamRef@ source);
    ParamSourceLinkRef@ SetSourceScoped(ParamRef@ source);
    bool SetString(const string&in value);
    bool SetStruct(ParamStructValue@ value);
    bool SetText(const string&in text);
    ParamStructRef@ Struct();
    CKGUID TypeGuid() const;
    string TypeName() const;
    uint get_id() const;
    int get_index() const;
    ParamKind get_kind() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    ParamRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
    const ParamRef@ opImplCast() const;
}

class ParamRef {
    int ClassId() const;
    bool CopyFrom(ParamRef@ source);
    int DataSize() const;
    string Describe() const;
    ParamRef@ DirectSource() const;
    string Error() const;
    ParamValue@ Get() const;
    string GetEnumText() const;
    string GetFlagsText() const;
    NativeBuffer@ GetRaw() const;
    string GetText() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    ParamRef@ RealSource() const;
    bool Set(ParamValue@ value);
    bool SetBool(bool value);
    bool SetEnum(const string&in nameOrValue);
    bool SetEnum(int value);
    bool SetFlags(const string&in namesOrMask);
    bool SetFlags(uint mask);
    bool SetFloat(float value);
    bool SetInt(int value);
    bool SetObject(CKObject@ value);
    bool SetRaw(NativeBuffer@ data);
    bool SetSource(ParamRef@ source);
    ParamSourceLinkRef@ SetSourceScoped(ParamRef@ source);
    bool SetString(const string&in value);
    bool SetStruct(ParamStructValue@ value);
    bool SetText(const string&in text);
    ParamStructRef@ Struct();
    CKGUID TypeGuid() const;
    string TypeName() const;
    uint get_id() const;
    int get_index() const;
    ParamKind get_kind() const;
    string get_name() const;
    bool get_valid() const;
    ParamInRef@ opCast();
    ParamLocalRef@ opCast();
    ParamOutRef@ opCast();
    ParamStructRef@ opCast();
    const ParamInRef@ opCast() const;
    const ParamLocalRef@ opCast() const;
    const ParamOutRef@ opCast() const;
    const ParamStructRef@ opCast() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class ParamSourceLinkRef {
    bool Commit();
    string Describe() const;
    bool IsCommitted() const;
    bool IsRestored() const;
    bool IsValid() const;
    bool Restore();
}

class ParamStructInfo {
    int Count() const;
    string Describe() const;
    int FindMember(const string&in name, int occurrence = 0) const;
    bool IsValid() const;
    CKGUID MemberGuid(int index) const;
    string MemberName(int index) const;
    ParamTypeInfo@ MemberType(int index) const;
}

class ParamStructRef {
    int ClassId() const;
    bool CopyFrom(ParamRef@ source);
    int Count() const;
    int DataSize() const;
    string Describe() const;
    ParamRef@ DirectSource() const;
    string Error() const;
    int FindMember(const string&in name, int occurrence = 0) const;
    ParamValue@ Get() const;
    string GetEnumText() const;
    string GetFlagsText() const;
    NativeBuffer@ GetRaw() const;
    string GetText() const;
    uint Id() const;
    ParamStructInfo@ Info() const;
    bool IsDynamic() const;
    bool IsValid() const;
    ParamRef@ Member(int index) const;
    string Name() const;
    ParamRef@ RealSource() const;
    bool Set(ParamValue@ value);
    bool SetBool(bool value);
    bool SetEnum(const string&in nameOrValue);
    bool SetEnum(int value);
    bool SetFlags(const string&in namesOrMask);
    bool SetFlags(uint mask);
    bool SetFloat(float value);
    bool SetInt(int value);
    bool SetObject(CKObject@ value);
    bool SetRaw(NativeBuffer@ data);
    bool SetSource(ParamRef@ source);
    ParamSourceLinkRef@ SetSourceScoped(ParamRef@ source);
    bool SetString(const string&in value);
    bool SetStruct(ParamStructValue@ value);
    bool SetText(const string&in text);
    ParamStructRef@ Struct();
    CKGUID TypeGuid() const;
    string TypeName() const;
    uint get_id() const;
    int get_index() const;
    ParamKind get_kind() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    ParamRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
    const ParamRef@ opImplCast() const;
}

class ParamStructValue {
    ParamValue@ AsValue() const;
    string Describe() const;
    bool IsValid() const;
    ParamStructValue@ Set(int index, ParamValue@ value);
    CKGUID TypeGuid() const;
    string TypeName() const;
    ParamValue@ Value() const;
}

class ParamTypeInfo {
    int ClassId() const;
    int DefaultSize() const;
    string Describe() const;
    ParamEnumInfo@ Enum() const;
    ParamFlagsInfo@ Flags() const;
    ParamFlagsInfo@ FlagsDesc() const;
    CKGUID Guid() const;
    bool IsCollection() const;
    bool IsEnum() const;
    bool IsFixedSize() const;
    bool IsFlags() const;
    bool IsObject() const;
    bool IsStringable() const;
    bool IsStruct() const;
    bool IsValid() const;
    string Name() const;
    ParamStructInfo@ Struct() const;
    int Type() const;
    int TypeFlags() const;
}

class ParamValue {
    bool AsBool() const;
    VxColor AsColor() const;
    float AsFloat() const;
    CKGUID AsGuid() const;
    int AsInt() const;
    VxMatrix AsMatrix() const;
    VxQuaternion AsQuaternion() const;
    NativeBuffer@ AsRaw() const;
    string AsString() const;
    ParamStructValue@ AsStruct() const;
    string AsText() const;
    VxVector AsVector() const;
    Vx2DVector AsVector2() const;
    bool IsValid() const;
}

class ref {
    bool opEquals(const ref&in) const;
    ref& opHndlAssign(const ref&in);
}

class RuntimeDependencyInfo {
    string ActualVersion() const;
    string Id() const;
    string Operator() const;
    bool Optional() const;
    bool Present() const;
    string Raw() const;
    bool Satisfied() const;
    string Version() const;
    RuntimeDependencyInfo& opAssign(const RuntimeDependencyInfo&in other);
}

class RuntimeScriptInfo {
    string Author() const;
    string Category() const;
    string Description() const;
    bool Enabled() const;
    string Entry() const;
    string Error() const;
    bool Exists() const;
    bool Failed() const;
    int Generation() const;
    string Id() const;
    bool Loaded() const;
    string Manifest() const;
    string Name() const;
    string Phase() const;
    string Root() const;
    string State() const;
    string Tag(int index) const;
    int TagCount() const;
    string Version() const;
    RuntimeScriptInfo& opAssign(const RuntimeScriptInfo&in other);
}

class SceneObjectRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    Entity2DRef@ opCast();
    Entity3DRef@ opCast();
    SceneRef@ opCast();
    const Entity2DRef@ opCast() const;
    const Entity3DRef@ opCast() const;
    const SceneRef@ opCast() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class SceneRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    SceneObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
    const SceneObjectRef@ opImplCast() const;
}

class ScriptContext {
    CKContext@ Context() const;
    float DeltaTime() const;
    string Entry() const;
    uint64 FrameIndex() const;
    int Generation() const;
    string Id() const;
    string Manifest() const;
    string Metadata(const string&in key, const string&in fallback = "") const;
    int MetadataCount() const;
    string MetadataKey(int index) const;
    string MetadataValue(int index) const;
    string Name() const;
    string Phase() const;
    void Raise(const string&in message) const;
    string Root() const;
    string State() const;
    string Target() const;
    float TimeSeconds() const;
    CKBehaviorContext ToBehaviorContext() const;
    string Version() const;
    ScriptContext& opAssign(const ScriptContext&in other);
}

class ScriptMessage {
    uint64 FrameIndex() const;
    uint64 Id() const;
    string Kind() const;
    dictionary@ Payload() const;
    bool RequiresReply() const;
    string Source() const;
    string Target() const;
    string Topic() const;
    ScriptMessage& opAssign(const ScriptMessage&in other);
}

class SoundMinion {
    SoundMinion& opAssign(const SoundMinion&in other);
    VxVector m_Direction;
    uint m_Entity;
    VxVector m_OldPosition;
    uint m_OriginalSound;
    uint m_OriginalSource;
    VxVector m_Position;
    uint m_Source;
    float m_TimeStamp;
}

class string {
    void erase(uint pos, int count = -1);
    int findFirst(const string&in, uint start = 0) const;
    int findFirstNotOf(const string&in, uint start = 0) const;
    int findFirstOf(const string&in, uint start = 0) const;
    int findLast(const string&in, int start = -1) const;
    int findLastNotOf(const string&in, int start = -1) const;
    int findLastOf(const string&in, int start = -1) const;
    void insert(uint pos, const string&in other);
    bool isEmpty() const;
    uint length() const;
    string opAdd(bool) const;
    string opAdd(const string&in) const;
    string opAdd(double) const;
    string opAdd(float) const;
    string opAdd(int64) const;
    string opAdd(uint64) const;
    string& opAddAssign(bool);
    string& opAddAssign(const string&in);
    string& opAddAssign(double);
    string& opAddAssign(float);
    string& opAddAssign(int64);
    string& opAddAssign(uint64);
    string opAdd_r(bool) const;
    string opAdd_r(double) const;
    string opAdd_r(float) const;
    string opAdd_r(int64) const;
    string opAdd_r(uint64) const;
    string& opAssign(bool);
    string& opAssign(const string&in);
    string& opAssign(double);
    string& opAssign(float);
    string& opAssign(int64);
    string& opAssign(uint64);
    int opCmp(const string&in) const;
    bool opEquals(const string&in) const;
    XString opImplConv() const;
    const uint8& opIndex(uint) const;
    uint8& opIndex(uint);
    int regexFind(const string&in regex, uint start = 0, uint&out lengthOfMatch = void) const;
    void resize(uint);
    string[]@ split(const string&in) const;
    string substr(uint start = 0, int count = -1) const;
}

class T[] {
    int find(const T&in value) const;
    int find(uint startAt, const T&in value) const;
    int findByRef(const T&in value) const;
    int findByRef(uint startAt, const T&in value) const;
    void insertAt(uint index, const T&in value);
    void insertAt(uint index, const T[]&inout arr);
    void insertLast(const T&in value);
    bool isEmpty() const;
    uint length() const;
    T[]& opAssign(const T[]&in);
    bool opEquals(const T[]&in) const;
    uint opForBegin() const;
    bool opForEnd(uint) const;
    uint opForNext(uint) const;
    const T& opForValue0(uint index) const;
    uint opForValue1(uint index) const;
    T& opIndex(uint index);
    const T& opIndex(uint index) const;
    void removeAt(uint index);
    void removeLast();
    void removeRange(uint start, uint count);
    void reserve(uint length);
    void resize(uint length);
    void reverse();
    void sort(T[]::less&in, uint startAt = 0, uint count = uint(-1));
    void sortAsc();
    void sortAsc(uint startAt, uint count);
    void sortDesc();
    void sortDesc(uint startAt, uint count);
}

class TextureRef {
    int ClassId() const;
    string Describe() const;
    string Error() const;
    uint Id() const;
    bool IsDynamic() const;
    bool IsValid() const;
    string Name() const;
    uint get_id() const;
    string get_name() const;
    bool get_valid() const;
    ObjectRef@ opImplCast();
    const ObjectRef@ opImplCast() const;
}

class Vx2DCapsDesc {
    Vx2DCapsDesc& opAssign(const Vx2DCapsDesc&in other);
    uint AvailableVideoMemory;
    uint Caps;
    CKRST_RSTFAMILY Family;
    uint MaxVideoMemory;
}

class Vx2DVector {
    Vx2DVector Cross() const;
    float Dot(const Vx2DVector&in v) const;
    float Magnitude() const;
    float Max() const;
    float Min() const;
    Vx2DVector& Normalize();
    float SquareMagnitude() const;
    Vx2DVector opAdd(const Vx2DVector&in v) const;
    Vx2DVector& opAddAssign(const Vx2DVector&in v);
    Vx2DVector& opAssign(const Vx2DVector&in v);
    int opCmp(const Vx2DVector&in v) const;
    Vx2DVector opDiv(const Vx2DVector&in v) const;
    Vx2DVector opDiv(float s) const;
    Vx2DVector& opDivAssign(const Vx2DVector&in v);
    Vx2DVector& opDivAssign(float s);
    bool opEquals(const Vx2DVector&in v) const;
    const float& opIndex(int index) const;
    float& opIndex(int index);
    Vx2DVector opMul(const Vx2DVector&in v) const;
    Vx2DVector opMul(float s) const;
    Vx2DVector& opMulAssign(const Vx2DVector&in v);
    Vx2DVector& opMulAssign(float s);
    Vx2DVector opNeg() const;
    Vx2DVector opSub(const Vx2DVector&in v) const;
    Vx2DVector& opSubAssign(const Vx2DVector&in v);
    float x;
    float y;
}

class Vx3DCapsDesc {
    Vx3DCapsDesc& opAssign(const Vx3DCapsDesc&in other);
    uint AlphaCmpCaps;
    uint CKRasterizerSpecificCaps;
    uint DestBlendCaps;
    uint DevCaps;
    uint MaxActiveLights;
    uint MaxClipPlanes;
    uint MaxNumberBlendStage;
    uint MaxNumberTextureStage;
    uint MaxTextureHeight;
    uint MaxTextureRatio;
    uint MaxTextureWidth;
    uint MinTextureHeight;
    uint MinTextureWidth;
    uint MiscCaps;
    uint RasterCaps;
    uint RenderBpps;
    uint SrcBlendCaps;
    uint StencilBpps;
    uint StencilCaps;
    uint TextureAddressCaps;
    uint TextureCaps;
    uint TextureFilterCaps;
    uint VertexCaps;
    uint ZBufferBpps;
    uint ZCmpCaps;
}

class VxBbox {
    int Classify(const VxBbox&in box, const VxVector&in point) const;
    uint Classify(const VxBbox&in box) const;
    uint Classify(const VxVector&in point) const;
    bool ClassifyVertices(int count, NativeBuffer@ vertices, uint stride, NativeBuffer@ flags) const;
    void ClassifyVertices(int count, NativePointer vertices, uint stride, NativePointer flags) const;
    bool ClassifyVerticesOneAxis(int count, NativeBuffer@ vertices, uint stride, int axis, NativeBuffer@ flags) const;
    void ClassifyVerticesOneAxis(int count, NativePointer vertices, uint stride, int axis, NativePointer flags) const;
    VxVector GetCenter() const;
    VxVector GetHalfSize() const;
    VxVector GetSize() const;
    void Intersect(const VxBbox&in box);
    bool IsBoxInside(const VxBbox&in box) const;
    bool IsValid() const;
    void Merge(const VxBbox&in box);
    void Merge(const VxVector&in v);
    void Reset();
    void SetCenter(const VxVector&in center, const VxVector&in halfSize);
    void SetCorners(const VxVector&in min, const VxVector&in max);
    void SetDimension(const VxVector&in position, const VxVector&in size);
    void TransformFrom(const VxBbox&in box, const VxMatrix&in mat);
    bool TransformTo(NativeBuffer@ pts, const VxMatrix&in mat) const;
    void TransformTo(NativePointer pts, const VxMatrix&in mat) const;
    bool VectorIn(const VxVector&in v) const;
    VxBbox& opAssign(const VxBbox&in box);
    bool opEquals(const VxBbox&in box) const;
    VxVector Max;
    VxVector Min;
}

class VxColor {
    void Check();
    void Clear();
    uint GetRGB() const;
    uint GetRGBA() const;
    float GetSquareDistance(const VxColor&in color) const;
    void Set(float r, float g, float b);
    void Set(float r, float g, float b, float a);
    void Set(int r, int g, int b);
    void Set(int r, int g, int b, int a);
    void Set(uint color);
    VxColor opAdd(const VxColor&in color) const;
    VxColor& opAddAssign(const VxColor&in color);
    VxColor& opAssign(const VxColor&in color);
    VxColor opDiv(const VxColor&in color) const;
    VxColor& opDivAssign(const VxColor&in color);
    VxColor& opDivAssign(float s);
    bool opEquals(const VxColor&in color) const;
    VxColor opMul(const VxColor&in color) const;
    VxColor opMul(float s) const;
    VxColor& opMulAssign(const VxColor&in color);
    VxColor& opMulAssign(float s);
    VxColor opSub(const VxColor&in color) const;
    VxColor& opSubAssign(const VxColor&in color);
    float a;
    float b;
    float g;
    float r;
}

class VxCompressedVector {
    void Set(float x, float y, float z);
    void Slerp(float step, VxCompressedVector&in v1, VxCompressedVector&in v2);
    VxCompressedVector& opAssign(const VxCompressedVector&in v);
    VxCompressedVector& opAssign(const VxCompressedVectorOld&in v);
    VxCompressedVector& opAssign(const VxVector&in v);
    int16 xa;
    int16 ya;
}

class VxCompressedVectorOld {
    void Set(float x, float y, float z);
    void Slerp(float step, VxCompressedVectorOld&in v1, VxCompressedVectorOld&in v2);
    VxCompressedVectorOld& opAssign(const VxCompressedVector&in v);
    VxCompressedVectorOld& opAssign(const VxCompressedVectorOld&in v);
    VxCompressedVectorOld& opAssign(const VxVector&in v);
    int xa;
    int ya;
}

class VxDirectXData {
    NativePointer get_D3DDevice() const;
    NativePointer get_D3DViewport() const;
    NativePointer get_DDBackBuffer() const;
    NativePointer get_DDClipper() const;
    NativePointer get_DDPrimaryBuffer() const;
    NativePointer get_DDZBuffer() const;
    NativePointer get_Direct3D() const;
    NativePointer get_DirectDraw() const;
    VxDirectXData& opAssign(const VxDirectXData&in other);
    uint DxVersion;
}

class VxDisplayMode {
    VxDisplayMode& opAssign(const VxDisplayMode&in other);
    bool opEquals(const VxDisplayMode&in other) const;
    bool opNotEquals(const VxDisplayMode&in other) const;
    int Bpp;
    int Height;
    int RefreshRate;
    int Width;
}

class VxDrawPrimitiveData {
    NativePointer GetTexCoordPtrs(int i) const;
    uint GetTexCoordStrides(int i) const;
    NativePointer get_ColorPtr() const;
    NativePointer get_NormalPtr() const;
    NativePointer get_PositionPtr() const;
    NativePointer get_SpecularColorPtr() const;
    NativePointer get_TexCoordPtr() const;
    VxDrawPrimitiveData& opAssign(const VxDrawPrimitiveData&in other);
    uint ColorStride;
    uint Flags;
    uint NormalStride;
    uint PositionStride;
    uint SpecularColorStride;
    uint TexCoordStride;
    int VertexCount;
}

class VxDriverDesc {
    VxDisplayMode& GetDisplayMode(int index) const;
    string GetDriverDesc() const;
    string GetDriverName() const;
    VxImageDescEx& GetTextureFormat(int index) const;
    void SetDisplayMode(int index, const VxDisplayMode&in mode);
    void SetDriverDesc(const string&in desc);
    void SetDriverName(const string&in name);
    void SetTextureFormat(int index, const VxImageDescEx&in format);
    VxDriverDesc& opAssign(const VxDriverDesc&in other);
    Vx2DCapsDesc Caps2D;
    Vx3DCapsDesc Caps3D;
    int IsHardware;
}

class VxEffectDescription {
    NativePointer get_CallbackArg() const;
    NativePointer get_SetCallback() const;
    VxEffectDescription& opAssign(const VxEffectDescription&in other);
    void set_CallbackArg(NativePointer ptr);
    void set_SetCallback(NativePointer ptr);
    XString DescImage;
    XString Description;
    VX_EFFECT EffectIndex;
    int MaxTextureCount;
    int NeededTextureCoordsCount;
    XString ParameterDefaultValue;
    XString ParameterDescription;
    CKGUID ParameterType;
    XString Summary;
    XString Tex1Description;
    XString Tex2Description;
    XString Tex3Description;
}

class VXFONTINFO {
    VXFONTINFO& opAssign(const VXFONTINFO&in other);
    XString FaceName;
    int Height;
    int Italic;
    int Underline;
    int Weight;
}

class VxFrustum {
    float Classify(const VxBbox&in box) const;
    float Classify(const VxBbox&in box, const VxMatrix&in mat) const;
    uint Classify(const VxVector&in v) const;
    bool ComputeVertices(NativeBuffer@ vertices) const;
    void ComputeVertices(NativePointer vertices) const;
    const VxPlane& GetBottomPlane() const;
    const float& GetDMax() const;
    float& GetDMax();
    const float& GetDMin() const;
    float& GetDMin();
    float GetDRatio() const;
    VxVector& GetDir();
    const VxVector& GetDir() const;
    const VxPlane& GetFarPlane() const;
    const VxPlane& GetLeftPlane() const;
    const VxPlane& GetNearPlane() const;
    VxVector& GetOrigin();
    const VxVector& GetOrigin() const;
    const float& GetRBound() const;
    float& GetRBound();
    float GetRF() const;
    VxVector& GetRight();
    const VxVector& GetRight() const;
    const VxPlane& GetRightPlane() const;
    const float& GetUBound() const;
    float& GetUBound();
    float GetUF() const;
    VxVector& GetUp();
    const VxVector& GetUp() const;
    const VxPlane& GetUpPlane() const;
    bool IsInside(const VxVector&in point) const;
    void Transform(const VxMatrix&in mat);
    void Update();
    VxFrustum& opAssign(const VxFrustum&in f);
    bool opEquals(const VxFrustum&in f) const;
}

class VxImageDescEx {
    NativeBuffer@ GetColorMapBuffer() const;
    NativeBuffer@ GetImageBuffer() const;
    bool HasAlpha() const;
    void Set(const VxImageDescEx&in desc);
    bool SetColorMapBuffer(NativeBuffer@ buffer);
    bool SetImageBuffer(NativeBuffer@ buffer);
    NativePointer get_ColorMap() const;
    NativePointer get_Image() const;
    VxImageDescEx& opAssign(const VxImageDescEx&in desc);
    bool opEquals(const VxImageDescEx&in desc) const;
    void set_ColorMap(NativePointer ptr);
    void set_Image(NativePointer ptr);
    uint AlphaMask;
    int BitsPerPixel;
    uint BlueMask;
    int16 BytesPerColorEntry;
    int BytesPerLine;
    int16 ColorMapEntries;
    uint Flags;
    uint GreenMask;
    int Height;
    uint RedMask;
    int Size;
    int Width;
}

class VxIntersectionDesc {
    VxIntersectionDesc& opAssign(const VxIntersectionDesc&in other);
    float Distance;
    int FaceIndex;
    VxVector IntersectionNormal;
    VxVector IntersectionPoint;
    CKRenderObject@ Object;
    float TexU;
    float TexV;
}

class VxMatrix {
    void Clear();
    void Orthographic(float zoom, float aspect, float nearPlane, float farPlane);
    void OrthographicRect(float left, float right, float top, float bottom, float nearPlane, float farPlane);
    void Perspective(float fov, float aspect, float nearPlane, float farPlane);
    void PerspectiveRect(float left, float right, float top, float bottom, float nearPlane, float farPlane);
    void SetIdentity();
    VxMatrix& opAssign(const VxMatrix&in mat);
    bool opEquals(const VxMatrix&in mat) const;
    VxVector4& opIndex(int index);
    const VxVector4& opIndex(int index) const;
    VxMatrix opMul(const VxMatrix&in mat) const;
    VxVector opMul(const VxVector&in mat) const;
    VxVector4 opMul(const VxVector4&in mat) const;
    VxMatrix& opMulAssign(const VxMatrix&in mat);
}

class VxMemoryMappedFile {
    NativePointer GetBase();
    VxMMF_Error GetErrorType();
    uint GetFileSize();
    bool IsValid();
}

class VxMutex {
    int EnterMutex();
    int LeaveMutex();
    int opPostDec();
    int opPostInc();
}

class VxMutexLock {
}

class VxOBB {
    void Create(const VxBbox&in box, const VxMatrix&in mat);
    VxVector& GetAxis(int i);
    const VxVector& GetAxis(int i) const;
    VxVector& GetCenter();
    const VxVector& GetCenter() const;
    const float& GetExtent(int i) const;
    float& GetExtent(int i);
    bool IsBoxInside(const VxBbox&in box) const;
    bool VectorIn(const VxVector&in v) const;
    VxOBB& opAssign(const VxOBB&in obb);
    bool opEquals(const VxOBB&in obb) const;
    VxVector axisX;
    VxVector axisY;
    VxVector axisZ;
    VxVector center;
    VxVector extents;
}

class VxPlane {
    float Classify(const VxBbox&in box) const;
    float Classify(const VxBbox&in box, const VxMatrix&in mat) const;
    float Classify(const VxVector&in p) const;
    float ClassifyFace(const VxVector&in pt0, const VxVector&in pt1, const VxVector&in pt2) const;
    void Create(const VxVector&in a, const VxVector&in b, const VxVector&in c);
    void Create(const VxVector&in n, const VxVector&in p);
    float Distance(const VxVector&in p) const;
    const VxVector& GetNormal() const;
    VxVector NearestPoint(const VxVector&in p) const;
    float XClassify(const VxVector[]&in boxAxis) const;
    VxPlane& opAssign(const VxPlane&in plane);
    bool opEquals(const VxPlane&in plane) const;
    VxPlane opNeg() const;
    float d;
    VxVector normal;
}

class VxQuaternion {
    float DotProduct(const VxQuaternion&in quat) const;
    void FromEulerAngles(float eax, float eay, float eaz);
    void FromMatrix(const VxMatrix&in mat, bool matIsUnit = true, bool restoreMat = true);
    void FromRotation(const VxVector&in v, float angle);
    float Magnitude() const;
    void Multiply(const VxQuaternion&in quat);
    void Normalize();
    void ToEulerAngles(float&out eax, float&out eay, float&out eaz) const;
    void ToMatrix(VxMatrix&out mat) const;
    VxQuaternion opAdd(const VxQuaternion&in quat) const;
    VxQuaternion& opAssign(const VxQuaternion&in quat);
    VxQuaternion opDiv(const VxQuaternion&in quat) const;
    bool opEquals(const VxQuaternion&in quat) const;
    const float& opIndex(int index) const;
    float& opIndex(int index);
    VxQuaternion opMul(const VxQuaternion&in quat) const;
    VxQuaternion opMul(float s) const;
    VxQuaternion& opMulAssign(float s);
    VxQuaternion opNeg() const;
    VxQuaternion opSub(const VxQuaternion&in quat) const;
    float w;
    float x;
    float y;
    float z;
}

class VxRay {
    float Distance(const VxVector&in p) const;
    VxVector& GetDirection();
    const VxVector& GetDirection() const;
    VxVector& GetOrigin();
    const VxVector& GetOrigin() const;
    void Interpolate(VxVector&out p, float t) const;
    float SquareDistance(const VxVector&in p) const;
    void Transform(VxRay&out dest, const VxMatrix&in mat);
    VxRay& opAssign(const VxRay&in);
    bool opEquals(const VxRay&in ray) const;
    VxVector direction;
    VxVector origin;
}

class VxRect {
    void Bounding(const Vx2DVector&in p1, const Vx2DVector&in p2);
    void Clear();
    bool Clip(const VxRect&in clipRect);
    void Clip(Vx2DVector&inout pt, bool excludeRightBottom = true) const;
    void CopyFrom(const CKRECT&in rect);
    void CopyTo(CKRECT&out rect) const;
    Vx2DVector& GetBottomRight();
    const Vx2DVector& GetBottomRight() const;
    Vx2DVector GetCenter() const;
    float GetHCenter() const;
    Vx2DVector GetHalfSize() const;
    float GetHeight() const;
    Vx2DVector GetSize() const;
    Vx2DVector& GetTopLeft();
    const Vx2DVector& GetTopLeft() const;
    float GetVCenter() const;
    float GetWidth() const;
    void HMove(float h);
    void HTranslate(float h);
    void Inflate(const Vx2DVector&in pt);
    void Interpolate(float value, const VxRect&in a);
    bool IsEmpty() const;
    bool IsInside(const Vx2DVector&in pt) const;
    int IsInside(const VxRect&in a) const;
    bool IsNull() const;
    bool IsOutside(const VxRect&in clipRect) const;
    void Merge(const VxRect&in);
    void Move(const Vx2DVector&in pos);
    void Normalize();
    void Scale(const Vx2DVector&in s);
    void SetBottomRight(const Vx2DVector&in v);
    void SetCenter(const Vx2DVector&in center, const Vx2DVector&in halfSize);
    void SetCenter(const Vx2DVector&in v);
    void SetCenter(float cx, float cy, float hw, float hh);
    void SetCorners(const Vx2DVector&in topLeft, const Vx2DVector&in bottomRight);
    void SetCorners(float left, float top, float right, float bottom);
    void SetDimension(const Vx2DVector&in position, const Vx2DVector&in size);
    void SetDimension(float x, float y, float w, float h);
    void SetHalfSize(const Vx2DVector&in v);
    void SetHeight(float h);
    void SetSize(const Vx2DVector&in v);
    void SetTopLeft(const Vx2DVector&in v);
    void SetWidth(float w);
    void Transform(const Vx2DVector&in destScreenSize, const Vx2DVector&in srcScreenSize);
    void Transform(const VxRect&in destScreen, const VxRect&in srcScreen);
    void TransformFromHomogeneous(Vx2DVector&out dest, const Vx2DVector&in src) const;
    void TransformFromHomogeneous(const VxRect&in screen);
    void TransformToHomogeneous(const VxRect&in screen);
    void Translate(const Vx2DVector&in t);
    void VMove(float v);
    void VTranslate(float v);
    VxRect& opAddAssign(const Vx2DVector&in t);
    VxRect& opAssign(const VxRect&in rect);
    VxRect& opDivAssign(const Vx2DVector&in t);
    bool opEquals(const VxRect&in rect) const;
    VxRect& opMulAssign(const Vx2DVector&in t);
    VxRect& opSubAssign(const Vx2DVector&in t);
    float bottom;
    float left;
    float right;
    float top;
}

class VxSharedLibrary {
    void Attach(uint libraryHandle);
    uint GetFunctionPtr(const string&in functionName);
    uint Load(const string&in libraryName);
    void ReleaseLibrary();
}

class VxSphere {
    VxVector& Center();
    const VxVector& Center() const;
    bool IsBoxTotallyInside(const VxBbox&in point);
    bool IsPointInside(const VxVector&in point);
    bool IsPointOnSurface(const VxVector&in point);
    const float& Radius() const;
    float& Radius();
    VxSphere& opAssign(const VxSphere&in sphere);
    bool opEquals(const VxSphere&in sphere) const;
}

class VxSpriteRenderOptions {
    uint8 get_AlphaRefValue() const;
    VXCMPFUNC get_AlphaTestFunc() const;
    VXBLEND_MODE get_DstBlendMode() const;
    uint get_ModulateColor() const;
    uint get_Options() const;
    uint get_Options2() const;
    VXBLEND_MODE get_SrcBlendMode() const;
    VxSpriteRenderOptions& opAssign(const VxSpriteRenderOptions&in other);
    void set_AlphaRefValue(uint8 value);
    void set_AlphaTestFunc(VXCMPFUNC value);
    void set_DstBlendMode(VXBLEND_MODE value);
    void set_ModulateColor(uint value);
    void set_Options(uint value);
    void set_Options2(uint value);
    void set_SrcBlendMode(VXBLEND_MODE value);
}

class VxStats {
    VxStats& opAssign(const VxStats&in other);
    float BackToFrontTime;
    float DevicePostCallbacks;
    float DevicePreCallbacks;
    int NbLinesDrawn;
    int NbObjectDrawn;
    int NbPointsDrawn;
    int NbTrianglesDrawn;
    int NbVerticesProcessed;
    float ObjectsCallbacksTime;
    float ObjectsRenderTime;
    int RenderStateCacheHit;
    int RenderStateCacheMiss;
    float SceneTraversalTime;
    float SkinTime;
    float SmoothedFps;
    float SpriteCallbacksTime;
    float SpriteTime;
    float TransparentObjectsSortTime;
}

class VxStridedData {
    NativePointer get_Ptr() const;
    VxStridedData& opAssign(const VxStridedData&in other);
    void set_Ptr(NativePointer ptr);
    uint Stride;
}

class VxTimeProfiler {
    float Current();
    void Reset();
    float Split();
    VxTimeProfiler& opAssign(const VxTimeProfiler&in other);
}

class VxTransformData {
    NativePointer get_ClipFlags() const;
    NativePointer get_InVertices() const;
    NativePointer get_OutVertices() const;
    NativePointer get_ScreenVertices() const;
    VxTransformData& opAssign(const VxTransformData&in other);
    void set_ClipFlags(NativePointer ptr);
    void set_InVertices(NativePointer ptr);
    void set_OutVertices(NativePointer ptr);
    void set_ScreenVertices(NativePointer ptr);
    uint InStride;
    uint OutStride;
    uint ScreenStride;
    CKRECT m_2dExtents;
    uint m_Offscreen;
}

class VxUV {
    VxUV opAdd(const VxUV&in uv) const;
    VxUV& opAddAssign(const VxUV&in uv);
    VxUV& opAssign(const VxUV&in uv);
    VxUV opDiv(float s) const;
    VxUV& opDivAssign(float s);
    VxUV opMul(float s) const;
    VxUV& opMulAssign(float s);
    VxUV opMul_r(float s) const;
    VxUV opNeg() const;
    VxUV opSub(const VxUV&in uv) const;
    VxUV& opSubAssign(const VxUV&in uv);
    float u;
    float v;
}

class VxVector {
    void Absolute();
    VxVector Cross(const VxVector&in v) const;
    float Dot(const VxVector&in v) const;
    VxVector Interpolate(const VxVector&in v, float step) const;
    float InvMagnitude() const;
    float InvSquareMagnitude() const;
    float Magnitude() const;
    float Max(const VxVector&in v) const;
    VxVector Maximize(const VxVector&in v) const;
    float Min(const VxVector&in v) const;
    VxVector Minimize(const VxVector&in v) const;
    VxVector Normalize() const;
    VxVector Reflect(const VxVector&in v) const;
    VxVector Rotate(const VxMatrix&in v) const;
    VxVector Rotate(const VxVector&in v, float angle) const;
    void Set(float x, float y, float z);
    float SquareMagnitude() const;
    const VxVector& get_axis0() const;
    const VxVector& get_axis1() const;
    const VxVector& get_axisX() const;
    const VxVector& get_axisY() const;
    const VxVector& get_axisZ() const;
    VxVector opAdd(const VxVector&in v) const;
    VxVector opAdd(float s) const;
    VxVector& opAddAssign(const VxVector&in v);
    VxVector& opAssign(const VxCompressedVector&in v);
    VxVector& opAssign(const VxVector&in v);
    VxVector opDiv(const VxVector&in v) const;
    VxVector opDiv(float s) const;
    VxVector& opDivAssign(const VxVector&in v);
    VxVector& opDivAssign(float s);
    bool opEquals(const VxVector&in v) const;
    const float& opIndex(int index) const;
    float& opIndex(int index);
    VxVector opMul(const VxMatrix&in mat) const;
    VxVector opMul(const VxVector&in v) const;
    VxVector opMul(float s) const;
    VxVector& opMulAssign(const VxVector&in v);
    VxVector& opMulAssign(float s);
    VxVector opNeg() const;
    VxVector opSub(const VxVector&in v) const;
    VxVector opSub(float s) const;
    VxVector& opSubAssign(const VxVector&in v);
    float x;
    float y;
    float z;
}

class VxVector4 {
    void Absolute();
    float Dot(const VxVector4&in v) const;
    float Magnitude() const;
    void Set(float x, float y, float z);
    void Set(float x, float y, float z, float w);
    float SquareMagnitude() const;
    VxVector4 opAdd(const VxVector4&in v) const;
    VxVector4 opAdd(float s) const;
    VxVector4& opAddAssign(const VxVector&in v);
    VxVector4& opAddAssign(const VxVector4&in v);
    VxVector4& opAssign(const VxVector&in v);
    VxVector4& opAssign(const VxVector4&in v);
    int opCmp(const VxVector4&in v) const;
    VxVector4 opDiv(const VxVector4&in v) const;
    VxVector4 opDiv(float s) const;
    VxVector4& opDivAssign(const VxVector&in v);
    VxVector4& opDivAssign(const VxVector4&in v);
    VxVector4& opDivAssign(float s);
    bool opEquals(const VxVector4&in v) const;
    const float& opIndex(int index) const;
    float& opIndex(int index);
    VxVector4 opMul(const VxMatrix&in mat) const;
    VxVector4 opMul(const VxVector4&in v) const;
    VxVector4 opMul(float s) const;
    VxVector4& opMulAssign(const VxVector&in v);
    VxVector4& opMulAssign(const VxVector4&in v);
    VxVector4& opMulAssign(float s);
    VxVector4 opMul_r(float s) const;
    VxVector4 opNeg() const;
    VxVector4 opSub(const VxVector4&in v) const;
    VxVector4 opSub(float s) const;
    VxVector4& opSubAssign(const VxVector&in v);
    VxVector4& opSubAssign(const VxVector4&in v);
    float w;
    float x;
    float y;
    float z;
}

class weakref<T> {
    T@ get() const;
    weakref<T>& opAssign(const weakref<T>&in);
    bool opEquals(const T@) const;
    bool opEquals(const weakref<T>&in) const;
    weakref<T>& opHndlAssign(T@);
    weakref<T>& opHndlAssign(const weakref<T>&in);
    T@ opImplCast();
}

class XAttributeList {
    XAttributeListConstIt Begin() const;
    XAttributeListIt Begin();
    void Clear();
    XAttributeListConstIt End() const;
    XAttributeListIt End();
    XAttributeListConstIt Find(const uint&in) const;
    XAttributeListIt Find(const uint&in);
    int Index(const uint&in) const;
    XAttributeListIt Insert(const uint&in, const CKAttributeVal&in);
    bool Insert(const uint&in, const CKAttributeVal&in, bool override);
    XAttributeListIt InsertUnique(const uint&in, const CKAttributeVal&in);
    bool IsHere(const uint&in) const;
    bool LookUp(const uint&in, CKAttributeVal&out) const;
    XAttributeListIt Remove(const XAttributeListIt&in);
    void Remove(const uint&in);
    int Size() const;
    XAttributeListPair TestInsert(const uint&in, const CKAttributeVal&in);
    XAttributeList& opAssign(const XAttributeList&in);
    CKAttributeVal& opIndex(const uint&inout);
}

class XAttributeListConstIt {
    const uint& GetKey() const;
    const CKAttributeVal& GetValue() const;
    XAttributeListConstIt& opAssign(const XAttributeListConstIt&in);
    bool opEquals(const XAttributeListConstIt&in) const;
    XAttributeListConstIt opPostInc(int);
    XAttributeListConstIt& opPreInc();
}

class XAttributeListEntry {
    XAttributeListEntry& opAssign(const XAttributeListEntry&in);
    CKAttributeVal m_Data;
    uint m_Key;
    XAttributeListEntry& m_Next;
}

class XAttributeListIt {
    const uint& GetKey() const;
    CKAttributeVal& GetValue();
    const CKAttributeVal& GetValue() const;
    XAttributeListIt& opAssign(const XAttributeListIt&in);
    bool opEquals(const XAttributeListIt&in) const;
    XAttributeListIt opPostInc(int);
    XAttributeListIt& opPreInc();
}

class XAttributeListPair {
    XAttributeListPair& opAssign(const XAttributeListPair&in);
    XAttributeListIt m_Iterator;
    int m_New;
}

class XBitArray {
    void And(const XBitArray&in other);
    void AppendBits(int n, int v, int count);
    int BitSet() const;
    bool CheckCommon(const XBitArray&in other) const;
    void CheckSameSize(const XBitArray&in other);
    void CheckSize(int n);
    void Clear();
    string ConvertToString() const;
    void Fill();
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetSetBitPosition(int n) const;
    int GetUnsetBitPosition(int n) const;
    void Invert();
    int IsSet(int n) const;
    void Or(const XBitArray&in other);
    void Set(int n);
    int Size() const;
    int TestSet(int n);
    int TestUnset(int n);
    void Unset(int n);
    void XOr(const XBitArray&in other);
    XBitArray& opAssign(const XBitArray&in other);
    int opIndex(int index) const;
    XBitArray& opSubAssign(const XBitArray&in other);
}

class XClassIDArray {
    XClassIDArrayIt Begin() const;
    void Clear();
    XClassIDArrayIt End() const;
    void Fill(const int&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const int&in o) const;
    void Insert(int pos, const int&in o);
    bool IsHere(const int&in o) const;
    void PopBack();
    void PopFront();
    void PushBack(const int&in o);
    void PushFront(const int&in o);
    void Resize(int size);
    int Size() const;
    void Swap(XClassIDArray&inout other);
    void Swap(int pos1, int pos2);
    XClassIDArray& opAddAssign(const XClassIDArray&in other);
    XClassIDArray& opAssign(const XClassIDArray&in other);
    const int& opIndex(uint index) const;
    int& opIndex(uint index);
    XClassIDArray& opSubAssign(const XClassIDArray&in other);
}

class XClassIDArrayIt {
    const int& Get() const;
    int& Get();
    bool IsValid() const;
    XClassIDArrayIt& opAssign(const XClassIDArrayIt&in other);
    bool opEquals(const XClassIDArrayIt&in other) const;
    bool opNotEquals(const XClassIDArrayIt&in other) const;
    XClassIDArrayIt& opPreDec();
    XClassIDArrayIt& opPreInc();
}

class XClassInfoArray {
    int Allocated() const;
    CKClassDesc& Back();
    const CKClassDesc& Back() const;
    void Clear();
    void Expand(int e = 1);
    void FastRemove(const CKClassDesc&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const CKClassDesc&in o) const;
    void Insert(int pos, const CKClassDesc&in o);
    void PopBack();
    void PopFront();
    void PushBack(const CKClassDesc&in o);
    void PushFront(const CKClassDesc&in o);
    bool RemoveAt(int pos, CKClassDesc&out old);
    void Reserve(int size);
    void Resize(int e = 1);
    int Size() const;
    void Swap(XClassInfoArray&inout other);
    void Swap(int pos1, int pos2);
    XClassInfoArray& opAssign(const XClassInfoArray&in other);
    CKClassDesc& opIndex(int index);
}

class XClassInfoArrayIt {
    CKClassDesc& Get();
    const CKClassDesc& Get() const;
    bool IsValid() const;
    XClassInfoArrayIt& opAssign(const XClassInfoArrayIt&in other);
    bool opEquals(const XClassInfoArrayIt&in other) const;
    bool opNotEquals(const XClassInfoArrayIt&in other) const;
    XClassInfoArrayIt& opPreDec();
    XClassInfoArrayIt& opPreInc();
}

class XDwordArray {
    XDwordArrayIt Begin() const;
    void Clear();
    XDwordArrayIt End() const;
    void Fill(const uint&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const uint&in o) const;
    void Insert(int pos, const uint&in o);
    bool IsHere(const uint&in o) const;
    void PopBack();
    void PopFront();
    void PushBack(const uint&in o);
    void PushFront(const uint&in o);
    void Resize(int size);
    int Size() const;
    void Swap(XDwordArray&inout other);
    void Swap(int pos1, int pos2);
    XDwordArray& opAddAssign(const XDwordArray&in other);
    XDwordArray& opAssign(const XDwordArray&in other);
    const uint& opIndex(uint index) const;
    uint& opIndex(uint index);
    XDwordArray& opSubAssign(const XDwordArray&in other);
}

class XDwordArrayIt {
    const uint& Get() const;
    uint& Get();
    bool IsValid() const;
    XDwordArrayIt& opAssign(const XDwordArrayIt&in other);
    bool opEquals(const XDwordArrayIt&in other) const;
    bool opNotEquals(const XDwordArrayIt&in other) const;
    XDwordArrayIt& opPreDec();
    XDwordArrayIt& opPreInc();
}

class XFileObjectsTable {
    XFileObjectsTableConstIt Begin() const;
    XFileObjectsTableIt Begin();
    void Clear();
    XFileObjectsTableConstIt End() const;
    XFileObjectsTableIt End();
    XFileObjectsTableConstIt Find(const uint&in) const;
    XFileObjectsTableIt Find(const uint&in);
    int GetMemoryOccupation(bool = false) const;
    int Index(const uint&in) const;
    XFileObjectsTableIt Insert(const uint&in, const int&in);
    bool Insert(const uint&in, const int&in, bool override);
    XFileObjectsTableIt InsertUnique(const uint&in, const int&in);
    bool IsHere(const uint&in) const;
    bool LookUp(const uint&in, int&out) const;
    XFileObjectsTableIt Remove(const XFileObjectsTableIt&in);
    void Remove(const uint&in);
    void Reserve(int);
    int Size() const;
    XFileObjectsTablePair TestInsert(const uint&in, const int&in);
    XFileObjectsTable& opAssign(const XFileObjectsTable&in);
    int& opIndex(const uint&inout);
}

class XFileObjectsTableConstIt {
    const uint& GetKey() const;
    const int& GetValue() const;
    XFileObjectsTableConstIt& opAssign(const XFileObjectsTableConstIt&in);
    bool opEquals(const XFileObjectsTableConstIt&in) const;
    XFileObjectsTableConstIt opPostInc(int);
    XFileObjectsTableConstIt& opPreInc();
}

class XFileObjectsTableEntry {
    XFileObjectsTableEntry& opAssign(const XFileObjectsTableEntry&in);
    int m_Data;
    uint m_Key;
    XFileObjectsTableEntry& m_Next;
}

class XFileObjectsTableIt {
    const uint& GetKey() const;
    const int& GetValue() const;
    int& GetValue();
    XFileObjectsTableIt& opAssign(const XFileObjectsTableIt&in);
    bool opEquals(const XFileObjectsTableIt&in) const;
    XFileObjectsTableIt opPostInc(int);
    XFileObjectsTableIt& opPreInc();
}

class XFileObjectsTablePair {
    XFileObjectsTablePair& opAssign(const XFileObjectsTablePair&in);
    XFileObjectsTableIt m_Iterator;
    int m_New;
}

class XFilePluginDependenciesArray {
    int Allocated() const;
    CKFilePluginDependencies& Back();
    const CKFilePluginDependencies& Back() const;
    void Clear();
    void Expand(int e = 1);
    void FastRemove(const CKFilePluginDependencies&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const CKFilePluginDependencies&in o) const;
    void Insert(int pos, const CKFilePluginDependencies&in o);
    void PopBack();
    void PopFront();
    void PushBack(const CKFilePluginDependencies&in o);
    void PushFront(const CKFilePluginDependencies&in o);
    bool RemoveAt(int pos, CKFilePluginDependencies&out old);
    void Reserve(int size);
    void Resize(int e = 1);
    int Size() const;
    void Swap(XFilePluginDependenciesArray&inout other);
    void Swap(int pos1, int pos2);
    XFilePluginDependenciesArray& opAssign(const XFilePluginDependenciesArray&in other);
    CKFilePluginDependencies& opIndex(int index);
}

class XFilePluginDependenciesArrayIt {
    CKFilePluginDependencies& Get();
    const CKFilePluginDependencies& Get() const;
    bool IsValid() const;
    XFilePluginDependenciesArrayIt& opAssign(const XFilePluginDependenciesArrayIt&in other);
    bool opEquals(const XFilePluginDependenciesArrayIt&in other) const;
    bool opNotEquals(const XFilePluginDependenciesArrayIt&in other) const;
    XFilePluginDependenciesArrayIt& opPreDec();
    XFilePluginDependenciesArrayIt& opPreInc();
}

class XGUIDArray {
    CKGUID& Back();
    const CKGUID& Back() const;
    XGUIDArrayIt Begin() const;
    void Clear();
    void Compact();
    void Compress(int e = 1);
    XGUIDArrayIt End() const;
    bool Erase(const CKGUID&in o);
    bool EraseAt(int pos);
    void Expand(int e = 1);
    void FastRemove(const CKGUID&in o);
    void FastRemoveAt(int pos);
    void Fill(const CKGUID&in o);
    CKGUID& Front();
    const CKGUID& Front() const;
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const CKGUID&in o) const;
    void Insert(int pos, const CKGUID&in o);
    void InsertSorted(const CKGUID&in o);
    bool IsEmpty() const;
    bool IsHere(const CKGUID&in o) const;
    void Memset(uint8 val);
    void PopBack();
    void PopFront();
    void PushBack(const CKGUID&in o);
    void PushFront(const CKGUID&in o);
    XGUIDArrayIt RBegin() const;
    XGUIDArrayIt REnd() const;
    bool RemoveAt(uint pos, CKGUID&out old);
    void Reserve(int size);
    void Resize(int size);
    int Size() const;
    void Swap(XGUIDArray&inout other);
    void Swap(int pos1, int pos2);
    XGUIDArray& opAddAssign(const XGUIDArray&in other);
    XGUIDArray& opAssign(const XGUIDArray&in other);
    CKGUID& opIndex(uint index);
    const CKGUID& opIndex(uint index) const;
    XGUIDArray& opSubAssign(const XGUIDArray&in other);
}

class XGUIDArrayIt {
    CKGUID& Get();
    const CKGUID& Get() const;
    bool IsValid() const;
    XGUIDArrayIt& opAssign(const XGUIDArrayIt&in other);
    bool opEquals(const XGUIDArrayIt&in other) const;
    bool opNotEquals(const XGUIDArrayIt&in other) const;
    XGUIDArrayIt& opPreDec();
    XGUIDArrayIt& opPreInc();
}

class XHashGuidToType {
    XHashGuidToTypeConstIt Begin() const;
    XHashGuidToTypeIt Begin();
    void Clear();
    XHashGuidToTypeConstIt End() const;
    XHashGuidToTypeIt End();
    XHashGuidToTypeConstIt Find(const CKGUID&in) const;
    XHashGuidToTypeIt Find(const CKGUID&in);
    int Index(const CKGUID&in) const;
    XHashGuidToTypeIt Insert(const CKGUID&in, const int&in);
    bool Insert(const CKGUID&in, const int&in, bool override);
    XHashGuidToTypeIt InsertUnique(const CKGUID&in, const int&in);
    bool IsHere(const CKGUID&in) const;
    bool LookUp(const CKGUID&in, int&out) const;
    XHashGuidToTypeIt Remove(const XHashGuidToTypeIt&in);
    void Remove(const CKGUID&in);
    int Size() const;
    XHashGuidToTypePair TestInsert(const CKGUID&in, const int&in);
    XHashGuidToType& opAssign(const XHashGuidToType&in);
    int& opIndex(const CKGUID&inout);
}

class XHashGuidToTypeConstIt {
    const CKGUID& GetKey() const;
    const int& GetValue() const;
    XHashGuidToTypeConstIt& opAssign(const XHashGuidToTypeConstIt&in);
    bool opEquals(const XHashGuidToTypeConstIt&in) const;
    XHashGuidToTypeConstIt opPostInc(int);
    XHashGuidToTypeConstIt& opPreInc();
}

class XHashGuidToTypeEntry {
    XHashGuidToTypeEntry& opAssign(const XHashGuidToTypeEntry&in);
    int m_Data;
    CKGUID m_Key;
    XHashGuidToTypeEntry& m_Next;
}

class XHashGuidToTypeIt {
    const CKGUID& GetKey() const;
    const int& GetValue() const;
    int& GetValue();
    XHashGuidToTypeIt& opAssign(const XHashGuidToTypeIt&in);
    bool opEquals(const XHashGuidToTypeIt&in) const;
    XHashGuidToTypeIt opPostInc(int);
    XHashGuidToTypeIt& opPreInc();
}

class XHashGuidToTypePair {
    XHashGuidToTypePair& opAssign(const XHashGuidToTypePair&in);
    XHashGuidToTypeIt m_Iterator;
    int m_New;
}

class XHashID {
    XHashIDConstIt Begin() const;
    XHashIDIt Begin();
    void Clear();
    XHashIDConstIt End() const;
    XHashIDIt End();
    XHashIDConstIt Find(const uint&in) const;
    XHashIDIt Find(const uint&in);
    int Index(const uint&in) const;
    XHashIDIt Insert(const uint&in, const uint&in);
    bool Insert(const uint&in, const uint&in, bool override);
    XHashIDIt InsertUnique(const uint&in, const uint&in);
    bool IsHere(const uint&in) const;
    bool LookUp(const uint&in, uint&out) const;
    XHashIDIt Remove(const XHashIDIt&in);
    void Remove(const uint&in);
    int Size() const;
    XHashIDPair TestInsert(const uint&in, const uint&in);
    XHashID& opAssign(const XHashID&in);
    uint& opIndex(const uint&inout);
}

class XHashIDConstIt {
    const uint& GetKey() const;
    const uint& GetValue() const;
    XHashIDConstIt& opAssign(const XHashIDConstIt&in);
    bool opEquals(const XHashIDConstIt&in) const;
    XHashIDConstIt opPostInc(int);
    XHashIDConstIt& opPreInc();
}

class XHashIDEntry {
    XHashIDEntry& opAssign(const XHashIDEntry&in);
    uint m_Data;
    uint m_Key;
    XHashIDEntry& m_Next;
}

class XHashIDIt {
    const uint& GetKey() const;
    const uint& GetValue() const;
    uint& GetValue();
    XHashIDIt& opAssign(const XHashIDIt&in);
    bool opEquals(const XHashIDIt&in) const;
    XHashIDIt opPostInc(int);
    XHashIDIt& opPreInc();
}

class XHashIDPair {
    XHashIDPair& opAssign(const XHashIDPair&in);
    XHashIDIt m_Iterator;
    int m_New;
}

class XImageArray {
    XImageArrayIt Begin() const;
    void Clear();
    XImageArrayIt End() const;
    void Fill(const VxImageDescEx&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const VxImageDescEx&in o) const;
    void Insert(int pos, const VxImageDescEx&in o);
    bool IsHere(const VxImageDescEx&in o) const;
    void PopBack();
    void PopFront();
    void PushBack(const VxImageDescEx&in o);
    void PushFront(const VxImageDescEx&in o);
    void Resize(int size);
    int Size() const;
    void Swap(XImageArray&inout other);
    void Swap(int pos1, int pos2);
    XImageArray& opAddAssign(const XImageArray&in other);
    XImageArray& opAssign(const XImageArray&in other);
    VxImageDescEx& opIndex(uint index);
    const VxImageDescEx& opIndex(uint index) const;
    XImageArray& opSubAssign(const XImageArray&in other);
}

class XImageArrayIt {
    VxImageDescEx& Get();
    const VxImageDescEx& Get() const;
    bool IsValid() const;
    XImageArrayIt& opAssign(const XImageArrayIt&in other);
    bool opEquals(const XImageArrayIt&in other) const;
    bool opNotEquals(const XImageArrayIt&in other) const;
    XImageArrayIt& opPreDec();
    XImageArrayIt& opPreInc();
}

class XIntArray {
    const int& Back() const;
    int& Back();
    XIntArrayIt Begin() const;
    void Clear();
    void Compact();
    void Compress(int e = 1);
    XIntArrayIt End() const;
    bool Erase(const int&in o);
    bool EraseAt(int pos);
    void Expand(int e = 1);
    void FastRemove(const int&in o);
    void FastRemoveAt(int pos);
    void Fill(const int&in o);
    const int& Front() const;
    int& Front();
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const int&in o) const;
    void Insert(int pos, const int&in o);
    void InsertSorted(const int&in o);
    bool IsEmpty() const;
    bool IsHere(const int&in o) const;
    void Memset(uint8 val);
    void PopBack();
    void PopFront();
    void PushBack(const int&in o);
    void PushFront(const int&in o);
    XIntArrayIt RBegin() const;
    XIntArrayIt REnd() const;
    bool RemoveAt(uint pos, int&out old);
    void Reserve(int size);
    void Resize(int size);
    int Size() const;
    void Swap(XIntArray&inout other);
    void Swap(int pos1, int pos2);
    XIntArray& opAddAssign(const XIntArray&in other);
    XIntArray& opAssign(const XIntArray&in other);
    const int& opIndex(uint index) const;
    int& opIndex(uint index);
    XIntArray& opSubAssign(const XIntArray&in other);
}

class XIntArrayIt {
    const int& Get() const;
    int& Get();
    bool IsValid() const;
    XIntArrayIt& opAssign(const XIntArrayIt&in other);
    bool opEquals(const XIntArrayIt&in other) const;
    bool opNotEquals(const XIntArrayIt&in other) const;
    XIntArrayIt& opPreDec();
    XIntArrayIt& opPreInc();
}

class XManagerArray {
    CKBaseManager@& Back();
    const CKBaseManager@& Back() const;
    XManagerArrayIt Begin() const;
    void Clear();
    void Compact();
    void Compress(int e = 1);
    XManagerArrayIt End() const;
    bool Erase(const CKBaseManager@&in o);
    bool EraseAt(int pos);
    void Expand(int e = 1);
    void FastRemove(const CKBaseManager@&in o);
    void FastRemoveAt(int pos);
    void Fill(const CKBaseManager@&in o);
    CKBaseManager@& Front();
    const CKBaseManager@& Front() const;
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const CKBaseManager@&in o) const;
    void Insert(int pos, const CKBaseManager@&in o);
    void InsertSorted(const CKBaseManager@&in o);
    bool IsEmpty() const;
    bool IsHere(const CKBaseManager@&in o) const;
    void Memset(uint8 val);
    void PopBack();
    void PopFront();
    void PushBack(const CKBaseManager@&in o);
    void PushFront(const CKBaseManager@&in o);
    XManagerArrayIt RBegin() const;
    XManagerArrayIt REnd() const;
    bool RemoveAt(uint pos, CKBaseManager@&out old);
    void Reserve(int size);
    void Resize(int size);
    int Size() const;
    void Swap(XManagerArray&inout other);
    void Swap(int pos1, int pos2);
    XManagerArray& opAddAssign(const XManagerArray&in other);
    XManagerArray& opAssign(const XManagerArray&in other);
    CKBaseManager@& opIndex(uint index);
    const CKBaseManager@& opIndex(uint index) const;
    XManagerArray& opSubAssign(const XManagerArray&in other);
}

class XManagerArrayIt {
    CKBaseManager@& Get();
    const CKBaseManager@& Get() const;
    bool IsValid() const;
    XManagerArrayIt& opAssign(const XManagerArrayIt&in other);
    bool opEquals(const XManagerArrayIt&in other) const;
    bool opNotEquals(const XManagerArrayIt&in other) const;
    XManagerArrayIt& opPreDec();
    XManagerArrayIt& opPreInc();
}

class XManagerHashTable {
    XManagerHashTableConstIt Begin() const;
    XManagerHashTableIt Begin();
    void Clear();
    XManagerHashTableConstIt End() const;
    XManagerHashTableIt End();
    XManagerHashTableConstIt Find(const CKGUID&in) const;
    XManagerHashTableIt Find(const CKGUID&in);
    int GetMemoryOccupation(bool = false) const;
    int Index(const CKGUID&in) const;
    XManagerHashTableIt Insert(const CKGUID&in, const CKBaseManager@&in);
    bool Insert(const CKGUID&in, const CKBaseManager@&in, bool override);
    XManagerHashTableIt InsertUnique(const CKGUID&in, const CKBaseManager@&in);
    bool IsHere(const CKGUID&in) const;
    bool LookUp(const CKGUID&in, CKBaseManager@&out) const;
    XManagerHashTableIt Remove(const XManagerHashTableIt&in);
    void Remove(const CKGUID&in);
    void Reserve(int);
    int Size() const;
    XManagerHashTablePair TestInsert(const CKGUID&in, const CKBaseManager@&in);
    XManagerHashTable& opAssign(const XManagerHashTable&in);
    CKBaseManager@& opIndex(const CKGUID&inout);
}

class XManagerHashTableConstIt {
    const CKGUID& GetKey() const;
    const CKBaseManager@& GetValue() const;
    XManagerHashTableConstIt& opAssign(const XManagerHashTableConstIt&in);
    bool opEquals(const XManagerHashTableConstIt&in) const;
    XManagerHashTableConstIt opPostInc(int);
    XManagerHashTableConstIt& opPreInc();
}

class XManagerHashTableEntry {
    XManagerHashTableEntry& opAssign(const XManagerHashTableEntry&in);
    CKBaseManager@ m_Data;
    CKGUID m_Key;
    XManagerHashTableEntry& m_Next;
}

class XManagerHashTableIt {
    const CKGUID& GetKey() const;
    CKBaseManager@& GetValue();
    const CKBaseManager@& GetValue() const;
    XManagerHashTableIt& opAssign(const XManagerHashTableIt&in);
    bool opEquals(const XManagerHashTableIt&in) const;
    XManagerHashTableIt opPostInc(int);
    XManagerHashTableIt& opPreInc();
}

class XManagerHashTablePair {
    XManagerHashTablePair& opAssign(const XManagerHashTablePair&in);
    XManagerHashTableIt m_Iterator;
    int m_New;
}

class XObjDeclHashTable {
    XObjDeclHashTableConstIt Begin() const;
    XObjDeclHashTableIt Begin();
    void Clear();
    XObjDeclHashTableConstIt End() const;
    XObjDeclHashTableIt End();
    XObjDeclHashTableConstIt Find(const CKGUID&in) const;
    XObjDeclHashTableIt Find(const CKGUID&in);
    int GetMemoryOccupation(bool = false) const;
    int Index(const CKGUID&in) const;
    XObjDeclHashTableIt Insert(const CKGUID&in, const CKObjectDeclaration@&in);
    bool Insert(const CKGUID&in, const CKObjectDeclaration@&in, bool override);
    XObjDeclHashTableIt InsertUnique(const CKGUID&in, const CKObjectDeclaration@&in);
    bool IsHere(const CKGUID&in) const;
    bool LookUp(const CKGUID&in, CKObjectDeclaration@&out) const;
    XObjDeclHashTableIt Remove(const XObjDeclHashTableIt&in);
    void Remove(const CKGUID&in);
    void Reserve(int);
    int Size() const;
    XObjDeclHashTablePair TestInsert(const CKGUID&in, const CKObjectDeclaration@&in);
    XObjDeclHashTable& opAssign(const XObjDeclHashTable&in);
    CKObjectDeclaration@& opIndex(const CKGUID&inout);
}

class XObjDeclHashTableConstIt {
    const CKGUID& GetKey() const;
    const CKObjectDeclaration@& GetValue() const;
    XObjDeclHashTableConstIt& opAssign(const XObjDeclHashTableConstIt&in);
    bool opEquals(const XObjDeclHashTableConstIt&in) const;
    XObjDeclHashTableConstIt opPostInc(int);
    XObjDeclHashTableConstIt& opPreInc();
}

class XObjDeclHashTableEntry {
    XObjDeclHashTableEntry& opAssign(const XObjDeclHashTableEntry&in);
    CKObjectDeclaration@ m_Data;
    CKGUID m_Key;
    XObjDeclHashTableEntry& m_Next;
}

class XObjDeclHashTableIt {
    const CKGUID& GetKey() const;
    CKObjectDeclaration@& GetValue();
    const CKObjectDeclaration@& GetValue() const;
    XObjDeclHashTableIt& opAssign(const XObjDeclHashTableIt&in);
    bool opEquals(const XObjDeclHashTableIt&in) const;
    XObjDeclHashTableIt opPostInc(int);
    XObjDeclHashTableIt& opPreInc();
}

class XObjDeclHashTablePair {
    XObjDeclHashTablePair& opAssign(const XObjDeclHashTablePair&in);
    XObjDeclHashTableIt m_Iterator;
    int m_New;
}

class XObjectArray {
    bool AddIfNotHere(CKObject@ obj);
    bool AddIfNotHere(uint id);
    const uint& Back() const;
    uint& Back();
    XObjectArrayIt Begin() const;
    bool Check(CKContext@ obj);
    void Clear();
    void Compact();
    void Compress(int e = 1);
    void ConvertFromObjects(const XObjectPointerArray&in objArray);
    void ConvertToObjects(CKContext@ context, XObjectPointerArray&out objArray) const;
    XObjectArrayIt End() const;
    bool Erase(const uint&in o);
    bool EraseAt(int pos);
    void Expand(int e = 1);
    void FastRemove(const uint&in o);
    void FastRemoveAt(int pos);
    void Fill(const uint&in o);
    bool FindID(uint id) const;
    bool FindObject(CKObject@ obj) const;
    const uint& Front() const;
    uint& Front();
    int GetMemoryOccupation(bool addStatic = false) const;
    CKObject@ GetObject(CKContext@ context, uint i) const;
    uint GetObjectID(uint i) const;
    int GetPosition(const uint&in o) const;
    void Insert(int pos, const uint&in o);
    void InsertSorted(const uint&in o);
    bool IsEmpty() const;
    bool IsHere(const uint&in o) const;
    void Load(CKStateChunk@ chunk);
    void Memset(uint8 val);
    void PopBack();
    void PopFront();
    void Prepare(CKDependenciesContext&out context) const;
    void PushBack(const uint&in o);
    void PushFront(const uint&in o);
    XObjectArrayIt RBegin() const;
    XObjectArrayIt REnd() const;
    void Remap(CKDependenciesContext&out context);
    bool RemoveAt(uint pos, uint&out old);
    int RemoveObject(CKObject@ obj);
    void Reserve(int size);
    void Resize(int size);
    void Save(CKStateChunk@ chunk, CKContext@ context) const;
    int Size() const;
    void Swap(XObjectArray&inout other);
    void Swap(int pos1, int pos2);
    XObjectArray& opAddAssign(const XObjectArray&in other);
    XObjectArray& opAssign(const XObjectArray&in other);
    const uint& opIndex(uint index) const;
    uint& opIndex(uint index);
    XObjectArray& opSubAssign(const XObjectArray&in other);
}

class XObjectArrayIt {
    const uint& Get() const;
    uint& Get();
    bool IsValid() const;
    XObjectArrayIt& opAssign(const XObjectArrayIt&in other);
    bool opEquals(const XObjectArrayIt&in other) const;
    bool opNotEquals(const XObjectArrayIt&in other) const;
    XObjectArrayIt& opPreDec();
    XObjectArrayIt& opPreInc();
}

class XObjectDeclarationArray {
    CKObjectDeclaration@& Back();
    const CKObjectDeclaration@& Back() const;
    XObjectDeclarationArrayIt Begin() const;
    void Clear();
    void Compact();
    void Compress(int e = 1);
    XObjectDeclarationArrayIt End() const;
    bool Erase(const CKObjectDeclaration@&in o);
    bool EraseAt(int pos);
    void Expand(int e = 1);
    void FastRemove(const CKObjectDeclaration@&in o);
    void FastRemoveAt(int pos);
    void Fill(const CKObjectDeclaration@&in o);
    CKObjectDeclaration@& Front();
    const CKObjectDeclaration@& Front() const;
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const CKObjectDeclaration@&in o) const;
    void Insert(int pos, const CKObjectDeclaration@&in o);
    void InsertSorted(const CKObjectDeclaration@&in o);
    bool IsEmpty() const;
    bool IsHere(const CKObjectDeclaration@&in o) const;
    void Memset(uint8 val);
    void PopBack();
    void PopFront();
    void PushBack(const CKObjectDeclaration@&in o);
    void PushFront(const CKObjectDeclaration@&in o);
    XObjectDeclarationArrayIt RBegin() const;
    XObjectDeclarationArrayIt REnd() const;
    bool RemoveAt(uint pos, CKObjectDeclaration@&out old);
    void Reserve(int size);
    void Resize(int size);
    int Size() const;
    void Swap(XObjectDeclarationArray&inout other);
    void Swap(int pos1, int pos2);
    XObjectDeclarationArray& opAddAssign(const XObjectDeclarationArray&in other);
    XObjectDeclarationArray& opAssign(const XObjectDeclarationArray&in other);
    CKObjectDeclaration@& opIndex(uint index);
    const CKObjectDeclaration@& opIndex(uint index) const;
    XObjectDeclarationArray& opSubAssign(const XObjectDeclarationArray&in other);
}

class XObjectDeclarationArrayIt {
    CKObjectDeclaration@& Get();
    const CKObjectDeclaration@& Get() const;
    bool IsValid() const;
    XObjectDeclarationArrayIt& opAssign(const XObjectDeclarationArrayIt&in other);
    bool opEquals(const XObjectDeclarationArrayIt&in other) const;
    bool opNotEquals(const XObjectDeclarationArrayIt&in other) const;
    XObjectDeclarationArrayIt& opPreDec();
    XObjectDeclarationArrayIt& opPreInc();
}

class XObjectPointerArray {
    bool AddIfNotHere(CKObject@ obj);
    CKObject@& Back();
    const CKObject@& Back() const;
    XObjectPointerArrayIt Begin() const;
    bool Check();
    void Clear();
    void Compact();
    void Compress(int e = 1);
    XObjectPointerArrayIt End() const;
    bool Erase(const CKObject@&in o);
    bool EraseAt(int pos);
    void Expand(int e = 1);
    void FastRemove(const CKObject@&in o);
    void FastRemoveAt(int pos);
    void Fill(const CKObject@&in o);
    bool FindObject(CKObject@ obj) const;
    CKObject@& Front();
    const CKObject@& Front() const;
    int GetMemoryOccupation(bool addStatic = false) const;
    CKObject@ GetObject(uint i) const;
    int GetPosition(const CKObject@&in o) const;
    void Insert(int pos, const CKObject@&in o);
    void InsertSorted(const CKObject@&in o);
    bool IsEmpty() const;
    bool IsHere(const CKObject@&in o) const;
    void Load(CKContext@ context, CKStateChunk@ chunk);
    void Memset(uint8 val);
    void PopBack();
    void PopFront();
    void Prepare(CKDependenciesContext&out context) const;
    void PushBack(const CKObject@&in o);
    void PushFront(const CKObject@&in o);
    XObjectPointerArrayIt RBegin() const;
    XObjectPointerArrayIt REnd() const;
    void Remap(CKDependenciesContext&out context);
    bool RemoveAt(uint pos, CKObject@&out old);
    int RemoveObject(CKObject@ obj);
    void Reserve(int size);
    void Resize(int size);
    void Save(CKStateChunk@ chunk) const;
    int Size() const;
    void Swap(XObjectPointerArray&inout other);
    void Swap(int pos1, int pos2);
    XObjectPointerArray& opAddAssign(const XObjectPointerArray&in other);
    XObjectPointerArray& opAssign(const XObjectPointerArray&in other);
    CKObject@& opIndex(uint index);
    const CKObject@& opIndex(uint index) const;
    XObjectPointerArray& opSubAssign(const XObjectPointerArray&in other);
}

class XObjectPointerArrayIt {
    CKObject@& Get();
    const CKObject@& Get() const;
    bool IsValid() const;
    XObjectPointerArrayIt& opAssign(const XObjectPointerArrayIt&in other);
    bool opEquals(const XObjectPointerArrayIt&in other) const;
    bool opNotEquals(const XObjectPointerArrayIt&in other) const;
    XObjectPointerArrayIt& opPreDec();
    XObjectPointerArrayIt& opPreInc();
}

class XSObjectArray {
    bool AddIfNotHere(CKObject@ obj);
    bool AddIfNotHere(uint id);
    XSObjectArrayIt Begin() const;
    bool Check(CKContext@ context);
    void Clear();
    void ConvertFromObjects(const XSObjectPointerArray&in objArray);
    void ConvertToObjects(CKContext@ context, XSObjectPointerArray&out objArray) const;
    XSObjectArrayIt End() const;
    void Fill(const uint&in o);
    bool FindID(uint id) const;
    bool FindObject(CKObject@ obj) const;
    int GetMemoryOccupation(bool addStatic = false) const;
    CKObject@ GetObject(CKContext@ context, uint i) const;
    uint GetObjectID(uint i) const;
    int GetPosition(const uint&in o) const;
    void Insert(int pos, const uint&in o);
    bool IsHere(const uint&in o) const;
    void Load(CKStateChunk@ chunk);
    void PopBack();
    void PopFront();
    void Prepare(CKDependenciesContext&out context) const;
    void PushBack(const uint&in o);
    void PushFront(const uint&in o);
    void Remap(CKDependenciesContext&out context);
    int RemoveObject(CKObject@ obj);
    void Resize(int size);
    void Save(CKStateChunk@ chunk, CKContext@ context) const;
    int Size() const;
    void Swap(XSObjectArray&inout other);
    void Swap(int pos1, int pos2);
    XSObjectArray& opAddAssign(const XSObjectArray&in other);
    XSObjectArray& opAssign(const XSObjectArray&in other);
    const uint& opIndex(uint index) const;
    uint& opIndex(uint index);
    XSObjectArray& opSubAssign(const XSObjectArray&in other);
}

class XSObjectArrayIt {
    const uint& Get() const;
    uint& Get();
    bool IsValid() const;
    XSObjectArrayIt& opAssign(const XSObjectArrayIt&in other);
    bool opEquals(const XSObjectArrayIt&in other) const;
    bool opNotEquals(const XSObjectArrayIt&in other) const;
    XSObjectArrayIt& opPreDec();
    XSObjectArrayIt& opPreInc();
}

class XSObjectPointerArray {
    bool AddIfNotHere(CKObject@ obj);
    XSObjectPointerArrayIt Begin() const;
    bool Check();
    void Clear();
    XSObjectPointerArrayIt End() const;
    void Fill(const CKObject@&in o);
    bool FindObject(CKObject@ obj) const;
    int GetMemoryOccupation(bool addStatic = false) const;
    CKObject@ GetObject(uint i) const;
    int GetPosition(const CKObject@&in o) const;
    void Insert(int pos, const CKObject@&in o);
    bool IsHere(const CKObject@&in o) const;
    void Load(CKContext@ context, CKStateChunk@ chunk);
    void PopBack();
    void PopFront();
    void Prepare(CKDependenciesContext&out context) const;
    void PushBack(const CKObject@&in o);
    void PushFront(const CKObject@&in o);
    void Remap(CKDependenciesContext&out context);
    int RemoveObject(CKObject@ obj);
    void Resize(int size);
    void Save(CKStateChunk@ chunk) const;
    int Size() const;
    void Swap(XSObjectPointerArray&inout other);
    void Swap(int pos1, int pos2);
    XSObjectPointerArray& opAddAssign(const XSObjectPointerArray&in other);
    XSObjectPointerArray& opAssign(const XSObjectPointerArray&in other);
    CKObject@& opIndex(uint index);
    const CKObject@& opIndex(uint index) const;
    XSObjectPointerArray& opSubAssign(const XSObjectPointerArray&in other);
}

class XSObjectPointerArrayIt {
    CKObject@& Get();
    const CKObject@& Get() const;
    bool IsValid() const;
    XSObjectPointerArrayIt& opAssign(const XSObjectPointerArrayIt&in other);
    bool opEquals(const XSObjectPointerArrayIt&in other) const;
    bool opNotEquals(const XSObjectPointerArrayIt&in other) const;
    XSObjectPointerArrayIt& opPreDec();
    XSObjectPointerArrayIt& opPreInc();
}

class XString {
    uint16 Capacity() const;
    int Compare(const XString&in str) const;
    bool Contains(const XString&in str) const;
    XString& Crop(uint16 start, uint16 length);
    XString& Cut(uint16 start, uint16 length);
    uint16 Find(const XString&in str, uint16 start = 0) const;
    uint16 Find(uint8 c, uint16 start = 0) const;
    int ICompare(const XString&in str) const;
    uint16 Length() const;
    int NCompare(const XString&in str, int n) const;
    uint16 RFind(uint8 c, uint16 start = 65535) const;
    int Replace(const XString&in srt, const XString&in dest);
    int Replace(uint8 src, uint8 dest);
    void Reserve(uint16 length);
    void Resize(uint16 length);
    XString& Strip();
    XString Substring(uint16 start, uint16 length = 0) const;
    XString& ToLower();
    XString& ToUpper();
    XString& Trim();
    XString opAdd(const XString&in str) const;
    XString opAdd(const string&in str) const;
    XString opAdd(float v) const;
    XString opAdd(int v) const;
    XString opAdd(uint8 v) const;
    XString& opAddAssign(const XString&in str);
    XString& opAddAssign(const string&in str);
    XString& opAddAssign(float v);
    XString& opAddAssign(int v);
    XString& opAddAssign(uint8 v);
    XString& opAssign(const XString&in other);
    XString& opAssign(const string&in str);
    int opCmp(const XString&in other) const;
    int opCmp(const string&in str) const;
    bool opEquals(const XString&in other) const;
    bool opEquals(const string&in str) const;
    string opImplConv() const;
    const uint8& opIndex(uint16 index) const;
    uint8& opIndex(uint16 index);
}

class XStringArray {
    int Allocated() const;
    XString& Back();
    const XString& Back() const;
    XStringArrayIt Begin() const;
    void Clear();
    XStringArrayIt End() const;
    void Expand(int e = 1);
    void FastRemove(const XString&in o);
    int GetMemoryOccupation(bool addStatic = false) const;
    int GetPosition(const XString&in o) const;
    void Insert(int pos, const XString&in o);
    void PopBack();
    void PopFront();
    void PushBack(const XString&in o);
    void PushFront(const XString&in o);
    bool RemoveAt(int pos, XString&out old);
    void Reserve(int size);
    void Resize(int e = 1);
    int Size() const;
    void Swap(XStringArray&inout other);
    void Swap(int pos1, int pos2);
    XStringArray& opAssign(const XStringArray&in other);
    XString& opIndex(int index);
}

class XStringArrayIt {
    XString& Get();
    const XString& Get() const;
    bool IsValid() const;
    XStringArrayIt& opAssign(const XStringArrayIt&in other);
    bool opEquals(const XStringArrayIt&in other) const;
    bool opNotEquals(const XStringArrayIt&in other) const;
    XStringArrayIt& opPreDec();
    XStringArrayIt& opPreInc();
}


CKGUID ATTRIBUTE_MANAGER_GUID;
CKGUID BEHAVIOR_MANAGER_GUID;
int CHUNKDATA_BASEVERSION;
int CHUNKDATA_CURRENTVERSION;
int CHUNKDATA_OLDVERSION;
int CHUNK_DEV_2_1;
int CHUNK_MACCHANGE_VERSION;
int CHUNK_MAJORCHANGE_VERSION;
int CHUNK_MATERIAL_VERSION_ZTEST;
int CHUNK_MESHCHANGE_VERSION;
int CHUNK_SCENECHANGE_VERSION;
int CHUNK_WAVESOUND_VERSION2;
int CHUNK_WAVESOUND_VERSION3;
int CHUNK_WAVESOUND_VERSION4;
int CKANIMATION_FORCESETSTEP;
int CKBEHAVIOR_PRIORITYMAX;
int CKBEHAVIOR_PRIORITYMIN;
int CKCID_2DENTITY;
int CKCID_3DENTITY;
int CKCID_3DOBJECT;
int CKCID_ANIMATION;
int CKCID_ATTRIBUTEMANAGER;
int CKCID_BEHAVIOR;
int CKCID_BEHAVIORIO;
int CKCID_BEHAVIORLINK;
int CKCID_BEHAVIORMANAGER;
int CKCID_BEOBJECT;
int CKCID_BODYPART;
int CKCID_CAMERA;
int CKCID_CHARACTER;
int CKCID_COLLISIONMANAGER;
int CKCID_CRITICALSECTION;
int CKCID_CUIKBEHDATA;
int CKCID_CURVE;
int CKCID_CURVEPOINT;
int CKCID_DATAARRAY;
int CKCID_FLOORMANAGER;
int CKCID_GRID;
int CKCID_GRIDMANAGER;
int CKCID_GROUP;
int CKCID_INPUTMANAGER;
int CKCID_INTERFACEOBJECTMANAGER;
int CKCID_KEYEDANIMATION;
int CKCID_KINEMATICCHAIN;
int CKCID_LAYER;
int CKCID_LEVEL;
int CKCID_LIGHT;
int CKCID_MATERIAL;
int CKCID_MAXCLASSID;
int CKCID_MAXMAXCLASSID;
int CKCID_MESH;
int CKCID_MESSAGEMANAGER;
int CKCID_MIDISOUND;
int CKCID_OBJECT;
int CKCID_OBJECTANIMATION;
int CKCID_OBJECTARRAY;
int CKCID_OBJECTMANAGER;
int CKCID_PARAMETER;
int CKCID_PARAMETERIN;
int CKCID_PARAMETERLOCAL;
int CKCID_PARAMETERMANAGER;
int CKCID_PARAMETEROPERATION;
int CKCID_PARAMETEROUT;
int CKCID_PATCHMESH;
int CKCID_PLACE;
int CKCID_RENDERCONTEXT;
int CKCID_RENDERMANAGER;
int CKCID_RENDEROBJECT;
int CKCID_SCENE;
int CKCID_SCENEOBJECT;
int CKCID_SCENEOBJECTDESC;
int CKCID_SOUND;
int CKCID_SOUNDMANAGER;
int CKCID_SPRITE;
int CKCID_SPRITE3D;
int CKCID_SPRITETEXT;
int CKCID_STATE;
int CKCID_SYNCHRO;
int CKCID_TARGETCAMERA;
int CKCID_TARGETLIGHT;
int CKCID_TEXTURE;
int CKCID_TIMEMANAGER;
int CKCID_WAVESOUND;
int CKDLL_BEHAVIORPROTOTYPE;
int CKMAX_MANAGERFUNCTIONS;
int CKMAX_PATH;
int CKMAX_URL;
int CKM_BASE;
int CKM_BEHAVIORACTIVATESCRIPT;
int CKM_BEHAVIORATTACH;
int CKM_BEHAVIORCREATE;
int CKM_BEHAVIORDEACTIVATESCRIPT;
int CKM_BEHAVIORDELETE;
int CKM_BEHAVIORDETACH;
int CKM_BEHAVIOREDITED;
int CKM_BEHAVIORLOAD;
int CKM_BEHAVIORNEWSCENE;
int CKM_BEHAVIORPAUSE;
int CKM_BEHAVIORPOSTSAVE;
int CKM_BEHAVIORPRESAVE;
int CKM_BEHAVIORREADSTATE;
int CKM_BEHAVIORRESET;
int CKM_BEHAVIORRESETINBREAKBPOINT;
int CKM_BEHAVIORRESUME;
int CKM_BEHAVIORSETTINGSEDITED;
int CKM_MAX_BEHAVIOR_CALLBACKS;
int CKOBJECT_PRIORITYDEFAULT;
int CKOBJECT_PRIORITYLEVEL;
int CKOBJECT_PRIORITYMAX;
int CKOBJECT_PRIORITYMIN;
int CKOBJECT_PRIORITYPLACE;
int CKOBJECT_PRIORITYSCENE;
CKGUID CKPGUID_2DCURVE;
CKGUID CKPGUID_2DENTITY;
CKGUID CKPGUID_2DVECTOR;
CKGUID CKPGUID_3DENTITY;
CKGUID CKPGUID_3DSPRITEMODE;
CKGUID CKPGUID_ADDRESSMODE;
CKGUID CKPGUID_ANGLE;
CKGUID CKPGUID_ANIMATION;
CKGUID CKPGUID_ARRAYTYPE;
CKGUID CKPGUID_ATTRIBUTE;
CKGUID CKPGUID_AXIS;
CKGUID CKPGUID_BEHAVIOR;
CKGUID CKPGUID_BEOBJECT;
CKGUID CKPGUID_BINARYOPERATOR;
CKGUID CKPGUID_BITMAP_SYSTEMCACHING;
CKGUID CKPGUID_BLENDFACTOR;
CKGUID CKPGUID_BLENDMODE;
CKGUID CKPGUID_BODYPART;
CKGUID CKPGUID_BOOL;
CKGUID CKPGUID_BOX;
CKGUID CKPGUID_BUMPMAPPARAM;
CKGUID CKPGUID_CAMERA;
CKGUID CKPGUID_CHARACTER;
CKGUID CKPGUID_CLASSID;
CKGUID CKPGUID_COLOR;
CKGUID CKPGUID_COMBINE2TEX;
CKGUID CKPGUID_COMBINE3TEX;
CKGUID CKPGUID_COMPOPERATOR;
CKGUID CKPGUID_COPYDEPENDENCIES;
CKGUID CKPGUID_CRITICALSECTION;
CKGUID CKPGUID_CURVE;
CKGUID CKPGUID_CURVEPOINT;
CKGUID CKPGUID_DATAARRAY;
CKGUID CKPGUID_DELETEDEPENDENCIES;
CKGUID CKPGUID_DIRECTION;
CKGUID CKPGUID_ENUMS;
CKGUID CKPGUID_EULERANGLES;
CKGUID CKPGUID_FILLMODE;
CKGUID CKPGUID_FILTER;
CKGUID CKPGUID_FILTERMODE;
CKGUID CKPGUID_FLAGS;
CKGUID CKPGUID_FLOAT;
CKGUID CKPGUID_FOGMODE;
CKGUID CKPGUID_GLOBALEXMODE;
CKGUID CKPGUID_GROUP;
CKGUID CKPGUID_ID;
CKGUID CKPGUID_INT;
CKGUID CKPGUID_KEY;
CKGUID CKPGUID_KINEMATICCHAIN;
CKGUID CKPGUID_LAYERTYPE;
CKGUID CKPGUID_LEVEL;
CKGUID CKPGUID_LIGHT;
CKGUID CKPGUID_LIGHTTYPE;
CKGUID CKPGUID_LITMODE;
CKGUID CKPGUID_MATERIAL;
CKGUID CKPGUID_MATERIALEFFECT;
CKGUID CKPGUID_MATRIX;
CKGUID CKPGUID_MESH;
CKGUID CKPGUID_MESSAGE;
CKGUID CKPGUID_MIDISOUND;
CKGUID CKPGUID_NONE;
CKGUID CKPGUID_OBJECT;
CKGUID CKPGUID_OBJECT3D;
CKGUID CKPGUID_OBJECTANIMATION;
CKGUID CKPGUID_OBJECTARRAY;
CKGUID CKPGUID_OBSTACLE;
CKGUID CKPGUID_OBSTACLEPRECISION;
CKGUID CKPGUID_OBSTACLEPRECISIONBEH;
CKGUID CKPGUID_OLDATTRIBUTE;
CKGUID CKPGUID_OLDMESSAGE;
CKGUID CKPGUID_OLDTIME;
CKGUID CKPGUID_PARAMETERTYPE;
CKGUID CKPGUID_PATCHMESH;
CKGUID CKPGUID_PERCENTAGE;
CKGUID CKPGUID_PIXELFORMAT;
CKGUID CKPGUID_PLACE;
CKGUID CKPGUID_POINTER;
CKGUID CKPGUID_QUATERNION;
CKGUID CKPGUID_RECT;
CKGUID CKPGUID_RENDEROBJECT;
CKGUID CKPGUID_RENDEROPTIONS;
CKGUID CKPGUID_REPLACEDEPENDENCIES;
CKGUID CKPGUID_SAVEDEPENDENCIES;
CKGUID CKPGUID_SCENE;
CKGUID CKPGUID_SCENEACTIVITYFLAGS;
CKGUID CKPGUID_SCENEOBJECT;
CKGUID CKPGUID_SCENERESETFLAGS;
CKGUID CKPGUID_SCRIPT;
CKGUID CKPGUID_SETOPERATOR;
CKGUID CKPGUID_SHADEMODE;
CKGUID CKPGUID_SOUND;
CKGUID CKPGUID_SPRITE;
CKGUID CKPGUID_SPRITE3D;
CKGUID CKPGUID_SPRITEALIGN;
CKGUID CKPGUID_SPRITETEXT;
CKGUID CKPGUID_SPRITETEXTALIGNMENT;
CKGUID CKPGUID_STATE;
CKGUID CKPGUID_STATECHUNK;
CKGUID CKPGUID_STRING;
CKGUID CKPGUID_STRUCTS;
CKGUID CKPGUID_SUPPORT;
CKGUID CKPGUID_SYNCHRO;
CKGUID CKPGUID_TARGETCAMERA;
CKGUID CKPGUID_TARGETLIGHT;
CKGUID CKPGUID_TEXCOMBINE;
CKGUID CKPGUID_TEXGENEFFECT;
CKGUID CKPGUID_TEXGENREFEFFECT;
CKGUID CKPGUID_TEXTURE;
CKGUID CKPGUID_TIME;
CKGUID CKPGUID_VECTOR;
CKGUID CKPGUID_VOIDBUF;
CKGUID CKPGUID_WAVESOUND;
CKGUID CKPGUID_WRAPMODE;
CKGUID CKPGUID_ZFUNC;
float CKRST_MAX_STAGES;
uint CKVERSION;
int CKWM_BASE;
int CKWM_CANCEL;
int CKWM_CREATEBEHAVIORLOCALS;
int CKWM_ENDPICK;
int CKWM_GETMARGIN;
int CKWM_GETVALUE;
int CKWM_INIT;
int CKWM_OK;
int CKWM_PARAMMODIFIED;
int CKWM_PARAMPICK;
int CKWM_PICK;
int CKWM_SETMARGIN;
int CKWM_SETPARAMTEXT;
int CKWM_SETVALUE;
int CKWM_SIZECHANGED;
int CKWM_STARTPICK;
int CK_GENERALOPTIONS_AUTOMATICUSECURRENT;
int CK_GENERALOPTIONS_CANUSECURRENTOBJECT;
int CK_GENERALOPTIONS_NODUPLICATENAMECHECK;
float CK_ZERO;
CKGUID COLLISION_MANAGER_GUID;
int8 DC_SIGCHAR_AGGREGATE;
int8 DC_SIGCHAR_BOOL;
int8 DC_SIGCHAR_CC_ARM_ARM;
int8 DC_SIGCHAR_CC_ARM_THUMB;
int8 DC_SIGCHAR_CC_CDECL;
int8 DC_SIGCHAR_CC_DEFAULT;
int8 DC_SIGCHAR_CC_ELLIPSIS;
int8 DC_SIGCHAR_CC_ELLIPSIS_VARARGS;
int8 DC_SIGCHAR_CC_FASTCALL_GNU;
int8 DC_SIGCHAR_CC_FASTCALL_MS;
int8 DC_SIGCHAR_CC_PREFIX;
int8 DC_SIGCHAR_CC_STDCALL;
int8 DC_SIGCHAR_CC_SYSCALL;
int8 DC_SIGCHAR_CC_THISCALL;
int8 DC_SIGCHAR_CC_THISCALL_GNU;
int8 DC_SIGCHAR_CC_THISCALL_MS;
int8 DC_SIGCHAR_CHAR;
int8 DC_SIGCHAR_DOUBLE;
int8 DC_SIGCHAR_ENDARG;
int8 DC_SIGCHAR_FLOAT;
int8 DC_SIGCHAR_INT;
int8 DC_SIGCHAR_LONG;
int8 DC_SIGCHAR_LONGLONG;
int8 DC_SIGCHAR_POINTER;
int8 DC_SIGCHAR_SHORT;
int8 DC_SIGCHAR_STRING;
int8 DC_SIGCHAR_UCHAR;
int8 DC_SIGCHAR_UINT;
int8 DC_SIGCHAR_ULONG;
int8 DC_SIGCHAR_ULONGLONG;
int8 DC_SIGCHAR_USHORT;
int8 DC_SIGCHAR_VOID;
uint DEVVERSION;
float EPSILON;
CKGUID FLOOR_MANAGER_GUID;
CKGUID GRID_MANAGER_GUID;
float HALFPI;
CKGUID INPUT_MANAGER_GUID;
CKGUID INTERFACE_MANAGER_GUID;
float MAX_PIXEL_FORMATS;
int MAX_USER_PROFILE;
CKGUID MESSAGE_MANAGER_GUID;
CKGUID MIDI_MANAGER_GUID;
float NB_STDPIXEL_FORMATS;
CKGUID OBJECT_MANAGER_GUID;
CKGUID PARAMETER_MANAGER_GUID;
CKGUID PATH_MANAGER_GUID;
float PI;
CKGUID RENDER_MANAGER_GUID;
CKGUID SOUND_MANAGER_GUID;
CKGUID TIME_MANAGER_GUID;
CKGUID VIRTOOLS_GUID;

void Await(AsyncTask<CKObject@>@ task, CKObject@&out result);
void Await(AsyncTask<float>@ task, float&out result);
void Await(AsyncTask<int>@ task, int&out result);
void Await(AsyncTask<string>@ task, string&out result);
void Await(AsyncTask<void>@ task);
void CKBuildClassHierarchyTable();
string CKClassIDToString(int cid);
CKERROR CKCloseContext(CKContext@ context);
uint CKComputeDataCRC(NativePointer data, int size, uint previousCRC = 0);
uint16 CKConvertEndian16(uint16 w);
uint CKConvertEndian32(uint dw);
void CKConvertEndianArray16(NativePointer buf, int dwordCount);
void CKConvertEndianArray32(NativePointer buf, int dwordCount);
CKERROR CKCopyAllAttributes(CKBeObject@ src, CKBeObject@ dest);
CKBitmapProperties@ CKCopyBitmapProperties(CKBitmapProperties@ bp);
void CKCopyDefaultClassDependencies(CKDependencies&out d, CK_DEPENDENCIES_OPMODE mode);
CKERROR CKCreateContext(CKContext@&out context, uint win, int renderEngine, uint flags);
void CKDeleteBitmapProperties(CKBitmapProperties@ bp);
void CKDeletePointer(NativePointer ptr);
void CKDestroyObject(CKObject@ obj, uint flags = 0, CKDependencies&in dep = void);
string CKErrorToString(CKERROR err);
int CKGetClassCount();
CKClassDesc& CKGetClassDesc(int cid);
int CKGetCommonParent(int cid1, int cid2);
CKDependencies CKGetDefaultClassDependencies(CK_DEPENDENCIES_OPMODE mode);
CKObject@ CKGetObject(CKContext@ context, uint id);
CKObjectDeclaration@ CKGetObjectDeclarationFromGuid(CKGUID guid);
int CKGetParentClassID(CKObject@ obj);
int CKGetParentClassID(int child);
CKPluginManager@ CKGetPluginManager();
string CKGetPluginsPath();
CKObjectDeclaration@ CKGetPrototypeDeclaration(int n);
int CKGetPrototypeDeclarationCount();
XObjDeclHashTableIt CKGetPrototypeDeclarationEndIterator();
XObjDeclHashTableIt CKGetPrototypeDeclarationStartIterator();
CKBehaviorPrototype@ CKGetPrototypeFromGuid(CKGUID guid);
string CKGetStartPath();
uint CKGetVersion();
bool CKIsChildClassOf(CKObject@ obj, int parent);
bool CKIsChildClassOf(int child, int parent);
uint CKLoadBitmap(const string&in filename);
CKERROR CKMoveAllScripts(CKBeObject@ src, CKBeObject@ dest);
CKERROR CKMoveScript(CKBeObject@ src, CKBeObject@ dest, CKBehavior@ beh);
NativePointer CKPackData(NativePointer data, int size, int&out newSize, int compressionLevel);
int CKRST_DP_IWEIGHT(int x);
int CKRST_DP_STAGE(int x);
int CKRST_DP_STAGEFLAGS(int x);
int CKRST_DP_WEIGHT(int x);
CKERROR CKReadObjectState(CKObject@ obj, CKStateChunk@ chunk);
void CKRemapObjectParameterValue(CKContext@ context, uint oldID, uint newID, int cid = CKCID_OBJECT, bool derived = true);
CKERROR CKRemovePrototypeDeclaration(CKObjectDeclaration@ decl);
bool CKSaveBitmap(const string&in filename, VxImageDescEx&in desc);
bool CKSaveBitmap(const string&in filename, uint bm);
CKStateChunk@ CKSaveObjectState(CKObject@ obj, uint flags = CK_STATESAVE_ALL);
CKERROR CKShutdown();
CKERROR CKStartUp();
void CKStoreDeclaration(XObjectDeclarationArray&out reg, CKObjectDeclaration@ a);
NativePointer CKStrdup(NativePointer str);
NativePointer CKStrdup(const string&in str);
int CKStringToClassID(const string&in className);
NativePointer CKStrlwr(NativePointer str);
string CKStrlwr(const string&in str);
NativePointer CKStrupr(NativePointer str);
string CKStrupr(const string&in str);
NativePointer CKUnPackData(int destSize, NativePointer srcBuffer, int srcSize);
uint ColorGetAlpha(uint rgb);
uint ColorGetBlue(uint rgb);
uint ColorGetGreen(uint rgb);
uint ColorGetRed(uint rgb);
uint ColorSetAlpha(uint rgba, uint x);
uint ColorSetBlue(uint rgba, uint x);
uint ColorSetGreen(uint rgba, uint x);
uint ColorSetRed(uint rgba, uint x);
CKBehaviorPrototype@ CreateCKBehaviorPrototype(const string&in name);
CKBehaviorPrototype@ CreateCKBehaviorPrototypeRunTime(const string&in name);
CKObjectArray@ CreateCKObjectArray();
CKObjectDeclaration@ CreateCKObjectDeclaration(const string&in name);
CKStateChunk@ CreateCKStateChunk(CKStateChunk@ chunk);
CKStateChunk@ CreateCKStateChunk(int id, CKFile@ file = null);
void DeleteCKObjectArray(CKObjectArray@ obj);
void DeleteCKStateChunk(CKStateChunk@ chunk);
int DynGetModeFromCCSigChar(int8 sigChar);
VxQuaternion Exp(const VxQuaternion&in quat);
uint GetBitCount(uint mask);
uint GetBitShift(uint mask);
CKContext@ GetCKContext(int pos);
uint GetCurrentFileLoadOption();
uint GetCurrentFileVersion();
string GetProcessorDescription();
uint GetProcessorFeatures();
int GetProcessorFrequency();
ProcessorsType GetProcessorType();
int GetQuantizationSamplingFactor();
bool InterpolateFloatArray(NativeBuffer@ res, NativeBuffer@ array1, NativeBuffer@ array2, float factor, int count);
void InterpolateFloatArray(NativePointer res, NativePointer array1, NativePointer array2, float factor, int count);
bool InterpolateVectorArray(NativeBuffer@ res, NativeBuffer@ array1, NativeBuffer@ array2, float factor, int count, uint strideRes, uint strideIn);
void InterpolateVectorArray(NativePointer res, NativePointer array1, NativePointer array2, float factor, int count, uint strideRes, uint strideIn);
VxQuaternion Ln(const VxQuaternion&in quat);
VxQuaternion LnDif(const VxQuaternion&in p, const VxQuaternion&in q);
void ModifyProcessorFeatures(uint add, uint remove);
uint RGBAFTOCOLOR(const VxColor&in color);
uint RGBAFTOCOLOR(float r, float g, float b, float a);
void SetQuantizationSamplingFactor(int sf);
VxQuaternion Slerp(float theta, const VxQuaternion&in quat1, const VxQuaternion&in quat2);
VxQuaternion Squad(float theta, const VxQuaternion&in quat1, const VxQuaternion&in quat1Out, const VxQuaternion&in quat2In, const VxQuaternion&in quat2);
float Tcos(int angle);
float Tsin(int angle);
void Vx3DDecomposeMatrix(const VxMatrix&in mat, VxQuaternion&out quat, VxVector&out pos, VxVector&out scale);
float Vx3DDecomposeMatrixTotal(const VxMatrix&in mat, VxQuaternion&out quat, VxVector&out pos, VxVector&out scale, VxQuaternion&out uRot);
void Vx3DInterpolateMatrix(float step, VxMatrix&out resultMat, const VxMatrix&in matA, const VxMatrix&in matB);
void Vx3DInterpolateMatrixNoScale(float step, VxMatrix&out resultMat, const VxMatrix&in matA, const VxMatrix&in matB);
void Vx3DInverseMatrix(VxMatrix&out inverseMat, const VxMatrix&in mat);
float Vx3DMatrixDeterminant(const VxMatrix&in mat);
void Vx3DMatrixFromEulerAngles(VxMatrix&out mat, float eax, float eay, float eaz);
void Vx3DMatrixFromRotation(VxMatrix&out resultMat, const VxVector&in vector, float angle);
void Vx3DMatrixFromRotationAndOrigin(VxMatrix&out resultMat, const VxVector&in vector, const VxVector&in origin, float angle);
void Vx3DMatrixIdentity(VxMatrix&out mat);
void Vx3DMatrixToEulerAngles(const VxMatrix&in mat, float&out eax, float&out eay, float&out eaz);
void Vx3DMultiplyMatrix(VxMatrix&out resultMat, const VxMatrix&in matA, const VxMatrix&in matB);
void Vx3DMultiplyMatrix4(VxMatrix&out resultMat, const VxMatrix&in matA, const VxMatrix&in matB);
void Vx3DMultiplyMatrixVector(VxVector&out resultVector, const VxMatrix&in mat, const VxVector&in vector);
void Vx3DMultiplyMatrixVector4(VxVector4&out resultVector, const VxMatrix&in mat, const VxVector&in vector);
void Vx3DMultiplyMatrixVector4(VxVector4&out resultVector, const VxMatrix&in mat, const VxVector4&in vector);
VxQuaternion Vx3DQuaternionConjugate(const VxQuaternion&in quat);
VxQuaternion Vx3DQuaternionDivide(const VxQuaternion&in p, const VxQuaternion&in q);
VxQuaternion Vx3DQuaternionFromMatrix(const VxMatrix&in mat);
VxQuaternion Vx3DQuaternionMultiply(const VxQuaternion&in l, const VxQuaternion&in r);
VxQuaternion Vx3DQuaternionSnuggle(VxQuaternion&inout quat, VxVector&inout scale);
void Vx3DRotateVector(VxVector&out resultVector, const VxMatrix&in mat, const VxVector&in vector);
void Vx3DTransposeMatrix(VxMatrix&out resultMat, const VxMatrix&in mat);
void VxAddLibrarySearchPath(const string&in path);
bool VxClientToScreen(uint win, CKPOINT&inout pt);
uint VxColorConvert(float r, float g, float b, float a = 1.0);
uint VxColorConvert(int r, int g, int b, int a = 255);
bool VxComputeBestFitBBox(NativeBuffer@ points, uint stride, int count, VxMatrix&out bBoxMatrix, float additionalBorder);
bool VxComputeBestFitBBox(NativePointer points, uint stride, int count, VxMatrix&out bBoxMatrix, float additionalBorder);
NativePointer VxConvertBitmap(uint bitmap, VxImageDescEx&out desc);
bool VxConvertToBumpMap(const VxImageDescEx&in image);
bool VxConvertToNormalMap(const VxImageDescEx&in image, uint colorMask);
bool VxCopyBitmap(uint handle, const VxImageDescEx&in);
bool VxCopyStructure(int count, NativeBuffer@ dst, uint outStride, uint sizeSrc, NativeBuffer@ src, uint inStride);
bool VxCopyStructure(int count, NativePointer dst, uint outStride, uint sizeSrc, NativePointer src, uint inStride);
uint VxCreateBitmap(const VxImageDescEx&in);
uint VxCreateFont(const string&in fontName, int fontSize, int weight, bool italic, bool underline);
void VxDeleteBitmap(uint bitmap);
bool VxDeleteDirectory(const string&in path);
void VxDeleteFont(uint font);
bool VxDoAlphaBlit(const VxImageDescEx&in dst, NativeBuffer@ alphaValues);
void VxDoAlphaBlit(const VxImageDescEx&in dst, NativePointer alphaValue);
void VxDoAlphaBlit(const VxImageDescEx&in dst, uint8 alphaValue);
void VxDoBlit(const VxImageDescEx&in src, const VxImageDescEx&in dst);
void VxDoBlitUpsideDown(const VxImageDescEx&in src, const VxImageDescEx&in dst);
bool VxDrawBitmapText(uint bitmap, uint font, string&in str, CKRECT&in rect, uint align, uint bkColor, uint fontColor);
bool VxFillStructure(int count, NativeBuffer@ dst, uint stride, uint sizeSrc, NativeBuffer@ src);
bool VxFillStructure(int count, NativePointer dst, uint stride, uint sizeSrc, NativePointer src);
bool VxGenerateMipMap(const VxImageDescEx&in src, NativeBuffer@ dst);
void VxGenerateMipMap(const VxImageDescEx&in src, NativePointer dst);
void VxGetBitCounts(const VxImageDescEx&in desc, uint&out r, uint&out g, uint&out b, uint&out a);
void VxGetBitShifts(const VxImageDescEx&in desc, uint&out r, uint&out g, uint&out b, uint&out a);
bool VxGetClientRect(uint win, CKRECT&out rect);
bool VxGetCurrentDirectory(string&out path);
bool VxGetEnvironmentVariable(const string&in envName, string&out envValue);
uint16 VxGetFPUControlWord();
bool VxGetFontInfo(uint Font, VXFONTINFO&out desc);
uint VxGetParent(uint win);
bool VxGetWindowRect(uint win, CKRECT&out rect);
VX_PIXELFORMAT VxImageDesc2PixelFormat(const VxImageDescEx&in desc);
bool VxIndexedCopy(NativeBuffer@ dst, uint dstStride, NativeBuffer@ src, uint srcStride, uint sizeSrc, NativeBuffer@ indices, int indexCount);
bool VxIndexedCopy(const VxStridedData&in dst, const VxStridedData&in src, uint sizeSrc, NativePointer indices, int indexCount);
bool VxIntersectAABBAABB(const VxBbox&in box1, const VxBbox&in box2);
bool VxIntersectAABBOBB(const VxBbox&in box1, const VxOBB&in box2);
bool VxIntersectBoxPlane(const VxBbox&in box, const VxMatrix&in mat, const VxPlane&in plane);
bool VxIntersectBoxPlane(const VxBbox&in box, const VxPlane&in plane);
bool VxIntersectFaceFace(const VxVector&in a0, const VxVector&in a1, const VxVector&in a2, const VxVector&in n0, const VxVector&in b0, const VxVector&in b1, const VxVector&in b2, const VxVector&in n1);
bool VxIntersectFrustumAABB(const VxFrustum&in frustum, const VxBbox&in box);
bool VxIntersectFrustumBox(const VxFrustum&in frustum, const VxBbox&in box, const VxMatrix&in mat);
bool VxIntersectFrustumFace(const VxFrustum&in frustum, const VxVector&in pt0, const VxVector&in pt1, const VxVector&in pt2);
bool VxIntersectFrustumOBB(const VxFrustum&in frustum, const VxBbox&in box, const VxMatrix&in mat);
bool VxIntersectLineBox(const VxRay&in, const VxBbox&in);
bool VxIntersectLineBox(const VxRay&in, const VxBbox&in, VxVector&out);
bool VxIntersectLinePlane(const VxRay&in ray, const VxPlane&in plane, VxVector&out point, float&out dist);
bool VxIntersectOBBOBB(const VxOBB&in box1, const VxOBB&in box2);
bool VxIntersectPlanes(const VxPlane&in plane1, const VxPlane&in plane2, const VxPlane&in plane3, VxVector&out p);
bool VxIntersectRayBox(const VxRay&in ray, const VxBbox&in box);
bool VxIntersectRayBox(const VxRay&in ray, const VxBbox&in box, VxVector&out inPoint, VxVector&out outPoint = void, VxVector&out inNormal = void, VxVector&out outNormal = void);
bool VxIntersectRayFace(const VxRay&in ray, const VxVector&in pt0, const VxVector&in pt1, const VxVector&in pt2, const VxVector&in norm, VxVector&out res, float&out dist);
bool VxIntersectRayFaceCulled(const VxRay&in ray, const VxVector&in pt0, const VxVector&in pt1, const VxVector&in pt2, const VxVector&in norm, VxVector&out res, float&out dist, int&out i1, int&out i2);
bool VxIntersectRayPlane(const VxRay&in ray, const VxPlane&in plane, VxVector&out point, float&out dist);
bool VxIntersectRayPlaneCulled(const VxRay&in ray, const VxPlane&in plane, VxVector&out point, float&out dist);
int VxIntersectRaySphere(const VxRay&in ray, const VxSphere&in sphere, VxVector&out inter1, VxVector&out inter2);
bool VxIntersectSegmentBox(const VxRay&in, const VxBbox&in);
bool VxIntersectSegmentBox(const VxRay&in, const VxBbox&in, VxVector&out);
bool VxIntersectSegmentPlane(const VxRay&in ray, const VxPlane&in plane, VxVector&out point, float&out dist);
bool VxIntersectSegmentPlaneCulled(const VxRay&in ray, const VxPlane&in plane, VxVector&out point, float&out dist);
int VxIntersectSphereAABB(const VxSphere&in sphere, const VxBbox&in box);
bool VxIntersectSphereSphere(const VxSphere&in s1, const VxVector&in p1, const VxSphere&in s2, const VxVector&in p2, float&out collisionTime1, float&out collisionTime2);
float VxLineLineDistance(const VxRay&in line0, const VxRay&in line1, float&out t0 = void, float&out t1 = void);
float VxLineLineSquareDistance(const VxRay&in line0, const VxRay&in line1, float&out t0 = void, float&out t1 = void);
float VxLineRayDistance(const VxRay&in line, const VxRay&in ray, float&out t0 = void, float&out t1 = void);
float VxLineRaySquareDistance(const VxRay&in line, const VxRay&in ray, float&out t0 = void, float&out t1 = void);
float VxLineSegmentDistance(const VxRay&in line, const VxRay&in segment, float&out t0 = void, float&out t1 = void);
float VxLineSegmentSquareDistance(const VxRay&in line, const VxRay&in segment, float&out t0 = void, float&out t1 = void);
bool VxMakeDirectory(const string&in path);
bool VxMoveWindow(uint win, int x, int y, int width, int height, bool repaint);
void VxPixelFormat2ImageDesc(VX_PIXELFORMAT pf, VxImageDescEx&out desc);
string VxPixelFormat2String(VX_PIXELFORMAT pf);
float VxPointLineDistance(const VxVector&in point, const VxRay&in line, float&out t0 = void);
float VxPointLineSquareDistance(const VxVector&in point, const VxRay&in line1, float&out t0 = void);
float VxPointRayDistance(const VxVector&in point, const VxRay&in ray, float&out t0 = void);
float VxPointRaySquareDistance(const VxVector&in point, const VxRay&in ray, float&out t0 = void);
float VxPointSegmentDistance(const VxVector&in point, const VxRay&in segment, float&out t0 = void);
float VxPointSegmentSquareDistance(const VxVector&in point, const VxRay&in segment, float&out = void);
void VxProjectBoxZExtents(const VxMatrix&in, const VxBbox&in, float&out, float&out);
bool VxPtInRect(const CKRECT&in rect, const CKPOINT&in pt);
float VxRayRayDistance(const VxRay&in ray0, const VxRay&in ray1, float&out t0 = void, float&out t1 = void);
float VxRayRaySquareDistance(const VxRay&in ray0, const VxRay&in ray1, float&out t0 = void, float&out t1 = void);
float VxRaySegmentDistance(const VxRay&in ray, const VxRay&in segment, float&out t0 = void, float&out t1 = void);
float VxRaySegmentSquareDistance(const VxRay&in ray, const VxRay&in segment, float&out t0 = void, float&out t1 = void);
bool VxRemoveDirectory(const string&in path);
void VxResizeImage32(const VxImageDescEx&in src, const VxImageDescEx&in dst);
int8 VxScanCodeToAscii(uint scancode, NativeBuffer@ keyState);
int8 VxScanCodeToAscii(uint scancode, NativePointer keyState);
int VxScanCodeToName(uint scancode, string&out name);
bool VxScreenToClient(uint win, CKPOINT&inout pt);
float VxSegmentSegmentDistance(const VxRay&in segment0, const VxRay&in segment1, float&out t0 = void, float&out t1 = void);
float VxSegmentSegmentSquareDistance(const VxRay&in segment0, const VxRay&in segment1, float&out t0 = void, float&out t1 = void);
void VxSetBaseFPUControlWord();
bool VxSetCurrentDirectory(const string&in path);
bool VxSetCursor(VXCURSOR_POINTER cursorID);
bool VxSetEnvironmentVariable(const string&in envName, const string&in envValue);
void VxSetFPUControlWord(uint16 fpu);
uint VxSetParent(uint child, uint parent);
int VxShowCursor(bool show);
bool VxTestDiskSpace(const string&in dir, uint size);
bool VxTransformBox2D(const VxMatrix&in, const VxBbox&in, VxRect&out, VxRect&out, VXCLIP_FLAGS&out, VXCLIP_FLAGS&out);
uint VxURLDownloadToCacheFile(const string&in file, const string&in cachedFile, int szCachedFile);
uint VxWindowFromPoint(const CKPOINT&in pt);
float abs(float);
float acos(float);
float asin(float);
float atan(float);
float atan2(float, float);
float ceil(float);
bool closeTo(double, double, double = 0.0000000001);
bool closeTo(float, float, float = 0.00001f);
float cos(float);
float cosh(float);
float floor(float);
string format(const string&in);
string formatFloat(double val, const string&in options = "", uint width = 0, uint precision = 0);
string formatInt(int64 val, const string&in options = "", uint width = 0);
string formatUInt(uint64 val, const string&in options = "", uint width = 0);
double fpFromIEEE(uint64);
float fpFromIEEE(uint);
uint fpToIEEE(float);
uint64 fpToIEEE(double);
float fraction(float);
void free(NativePointer ptr);
string getExceptionInfo();
string join(const string[]&in, const string&in);
float log(float);
float log10(float);
NativePointer malloc(uint size);
double parseFloat(const string&in, uint&out byteCount = 0);
int64 parseInt(const string&in, uint base = 10, uint&out byteCount = 0);
uint64 parseUInt(const string&in, uint base = 10, uint&out byteCount = 0);
float pow(float, float);
void print(const string&in);
int radToAngle(float val);
float sin(float);
float sinh(float);
float sqrt(float);
float tan(float);
float tanh(float);
void throw(const string&in);

namespace Async {
    AsyncTask<void>@ All(AsyncTask<void>@[]@ tasks);
    AsyncTask<void>@ Any(AsyncTask<void>@[]@ tasks);
    AsyncTask<CKObject@>@ Create(AsyncObjectFunc@ fn);
    AsyncTask<float>@ Create(AsyncFloatFunc@ fn);
    AsyncTask<int>@ Create(AsyncIntFunc@ fn);
    AsyncTask<string>@ Create(AsyncStringFunc@ fn);
    AsyncTask<void>@ Create(AsyncVoidFunc@ fn);
    AsyncTask<void>@ Delay(int frames);
    AsyncTask<void>@ Race(AsyncTask<void>@[]@ tasks);
    AsyncTask<CKObject@>@ Spawn(AsyncObjectFunc@ fn);
    AsyncTask<float>@ Spawn(AsyncFloatFunc@ fn);
    AsyncTask<int>@ Spawn(AsyncIntFunc@ fn);
    AsyncTask<string>@ Spawn(AsyncStringFunc@ fn);
    AsyncTask<void>@ Spawn(AsyncVoidFunc@ fn);
    AsyncTask<void>@ Wait(BBTask@ task);
    AsyncTask<void>@ Wait(GraphTask@ task);
    AsyncTask<void>@ Wait(const CKBehaviorContext&in ctx, BBTask@ task, int inputIndex = -1);
    AsyncTask<void>@ Wait(const CKBehaviorContext&in ctx, GraphTask@ task);
}

namespace BB {
    BBPrototype@ At(const CKBehaviorContext&in ctx, int index);
    BBPrototype@ At(const ScriptContext&in ctx, int index);
    BBCallBuilder@ Call(const CKBehaviorContext&in ctx, const string&in name);
    int Count(const CKBehaviorContext&in ctx);
    int Count(const ScriptContext&in ctx);
    BBPrototype@ Find(const CKBehaviorContext&in ctx, const string&in query, int occurrence = 0);
    BBPrototype@ Find(const ScriptContext&in ctx, const string&in query, int occurrence = 0);
    BBPrototype@[]@ FindAll(const CKBehaviorContext&in ctx, const string&in query = "");
    BBPrototype@[]@ FindAll(const ScriptContext&in ctx, const string&in query = "");
    BBBridge@ From(const CKBehaviorContext&in ctx);
    BBBridge@ From(const ScriptContext&in ctx);
    BBPrototype@ Prototype(const CKBehaviorContext&in ctx, CKGUID guid);
    BBPrototype@ Prototype(const CKBehaviorContext&in ctx, const string&in name);
    BBDecl@ Require(const CKBehaviorContext&in ctx, CKGUID guid);
    BBDecl@ Require(const CKBehaviorContext&in ctx, const string&in query);
    BBDecl@ Require(const ScriptContext&in ctx, CKGUID guid);
    BBDecl@ Require(const ScriptContext&in ctx, const string&in query);
    BBTaskBuilder@ Spawn(const CKBehaviorContext&in ctx, const string&in name);
}

namespace Behavior {
    BehaviorRef@ Find(const CKBehaviorContext&in ctx, CKBeObject@ owner, const string&in name);
    BehaviorRef@ Find(const CKBehaviorContext&in ctx, const string&in name);
    BehaviorRef@ Find(const ScriptContext&in ctx, const string&in name);
    BehaviorRef@ FindByID(const CKBehaviorContext&in ctx, uint id);
    BehaviorRef@ FindByID(const ScriptContext&in ctx, uint id);
    BehaviorBridge@ From(const CKBehaviorContext&in ctx);
    BehaviorBridge@ From(const ScriptContext&in ctx);
    BehaviorGraph@ Graph(const CKBehaviorContext&in ctx);
    BehaviorGraph@ Graph(const ScriptContext&in ctx);
    BehaviorGraph@ Graph(const ScriptContext&in ctx, const string&in rootBehaviorName);
    BehaviorQuery@ Query();
    GraphTask@ Start(const CKBehaviorContext&in ctx, const string&in name, int inputIndex = 0, bool reset = false, float timeout = 0.0f);
    GraphTask@ Watch(const CKBehaviorContext&in ctx, const string&in name, float timeout = 0.0f);
}

namespace Message {
    bool Publish(const CKBehaviorContext&in ctx, const string&in topic, dictionary@ payload = null, const string&in target = "");
    bool Publish(const ScriptContext&in ctx, const string&in topic, dictionary@ payload = null, const string&in target = "");
    bool Reject(const CKBehaviorContext&in ctx, const ScriptMessage&in request, const string&in error);
    bool Reject(const ScriptContext&in ctx, const ScriptMessage&in request, const string&in error);
    bool Reply(const CKBehaviorContext&in ctx, const ScriptMessage&in request, dictionary@ payload = null);
    bool Reply(const ScriptContext&in ctx, const ScriptMessage&in request, dictionary@ payload = null);
    AsyncTask<dictionary@>@ Request(const CKBehaviorContext&in ctx, const string&in target, const string&in topic, dictionary@ payload = null, int timeoutFrames = 300);
    AsyncTask<dictionary@>@ Request(const ScriptContext&in ctx, const string&in target, const string&in topic, dictionary@ payload = null, int timeoutFrames = 300);
    bool Send(const CKBehaviorContext&in ctx, const string&in target, const string&in topic, dictionary@ payload = null);
    bool Send(const ScriptContext&in ctx, const string&in target, const string&in topic, dictionary@ payload = null);
    bool Subscribe(const CKBehaviorContext&in ctx, const string&in topic);
    bool Subscribe(const ScriptContext&in ctx, const string&in topic);
    bool Unsubscribe(const CKBehaviorContext&in ctx, const string&in topic);
    bool Unsubscribe(const ScriptContext&in ctx, const string&in topic);
}

namespace Param {
    ParamTypeInfo@ At(CKContext@ context, int index);
    ParamTypeInfo@ At(const CKBehaviorContext&in ctx, int index);
    ParamTypeInfo@ At(const ScriptContext&in ctx, int index);
    ParamValue@ Bool(bool value);
    ParamValue@ Color(const VxColor&in value);
    int Count(CKContext@ context);
    int Count(const CKBehaviorContext&in ctx);
    int Count(const ScriptContext&in ctx);
    string Describe(CKContext@ context, CKGUID guid);
    string Describe(CKContext@ context, const string&in typeName);
    string Describe(const CKBehaviorContext&in ctx, CKGUID guid);
    string Describe(const CKBehaviorContext&in ctx, const string&in typeName);
    ParamValue@ Enum(const CKBehaviorContext&in ctx, CKGUID typeGuid, const string&in nameOrValue);
    ParamValue@ Enum(const CKBehaviorContext&in ctx, CKGUID typeGuid, int value);
    ParamValue@ Enum(const CKBehaviorContext&in ctx, const string&in typeName, const string&in nameOrValue);
    ParamValue@ Enum(const CKBehaviorContext&in ctx, const string&in typeName, int value);
    ParamTypeInfo@ Find(CKContext@ context, const string&in query, int occurrence = 0);
    ParamTypeInfo@ Find(const CKBehaviorContext&in ctx, const string&in query, int occurrence = 0);
    ParamTypeInfo@ Find(const ScriptContext&in ctx, const string&in query, int occurrence = 0);
    uint Flag(CKContext@ context, CKGUID guid, const string&in flagName, uint fallback = 0);
    uint Flag(CKContext@ context, const string&in typeName, const string&in flagName, uint fallback = 0);
    uint Flag(const CKBehaviorContext&in ctx, CKGUID guid, const string&in flagName, uint fallback = 0);
    uint Flag(const CKBehaviorContext&in ctx, const string&in typeName, const string&in flagName, uint fallback = 0);
    ParamValue@ Flags(const CKBehaviorContext&in ctx, CKGUID typeGuid, const string&in namesOrMask);
    ParamValue@ Flags(const CKBehaviorContext&in ctx, CKGUID typeGuid, uint mask);
    ParamValue@ Flags(const CKBehaviorContext&in ctx, const string&in typeName, const string&in namesOrMask);
    ParamValue@ Flags(const CKBehaviorContext&in ctx, const string&in typeName, uint mask);
    uint FlagsMask(CKContext@ context, CKGUID guid, const string&in namesOrMask, uint fallback = 0);
    uint FlagsMask(CKContext@ context, const string&in typeName, const string&in namesOrMask, uint fallback = 0);
    uint FlagsMask(const CKBehaviorContext&in ctx, CKGUID guid, const string&in namesOrMask, uint fallback = 0);
    uint FlagsMask(const CKBehaviorContext&in ctx, const string&in typeName, const string&in namesOrMask, uint fallback = 0);
    ParamValue@ Float(float value);
    CKGUID Guid(CKContext@ context, const string&in typeName);
    CKGUID Guid(const CKBehaviorContext&in ctx, const string&in typeName);
    ParamValue@ Guid(CKGUID value);
    ParamValue@ Int(int value);
    bool IsEnum(CKContext@ context, CKGUID guid);
    bool IsEnum(CKContext@ context, const string&in typeName);
    bool IsEnum(const CKBehaviorContext&in ctx, CKGUID guid);
    bool IsEnum(const CKBehaviorContext&in ctx, const string&in typeName);
    bool IsFlags(CKContext@ context, CKGUID guid);
    bool IsFlags(CKContext@ context, const string&in typeName);
    bool IsFlags(const CKBehaviorContext&in ctx, CKGUID guid);
    bool IsFlags(const CKBehaviorContext&in ctx, const string&in typeName);
    ParamValue@ Matrix(const VxMatrix&in value);
    ParamValue@ Object(CKObject@ value);
    ParamValue@ ObjectArray(const XObjectArray&in value);
    ParamOp@ Operation(const CKBehaviorContext&in ctx, CKGUID guid);
    ParamOp@ Operation(const CKBehaviorContext&in ctx, const string&in name);
    ParamValue@ Quaternion(const VxQuaternion&in value);
    ParamValue@ Raw(const CKBehaviorContext&in ctx, CKGUID typeGuid, NativeBuffer@ data);
    ParamValue@ Raw(const CKBehaviorContext&in ctx, const string&in typeName, NativeBuffer@ data);
    CKERROR RegisterEnum(CKContext@ context, CKGUID guid, const string&in name, const string&in data);
    CKERROR RegisterEnum(const CKBehaviorContext&in ctx, CKGUID guid, const string&in name, const string&in data);
    CKERROR RegisterFlags(CKContext@ context, CKGUID guid, const string&in name, const string&in data);
    CKERROR RegisterFlags(const CKBehaviorContext&in ctx, CKGUID guid, const string&in name, const string&in data);
    CKERROR RegisterStruct(CKContext@ context, CKGUID guid, const string&in name, const string&in members, XGUIDArray&in memberGuids);
    CKERROR RegisterStruct(const CKBehaviorContext&in ctx, CKGUID guid, const string&in name, const string&in members, XGUIDArray&in memberGuids);
    ParamValue@ String(const string&in value);
    ParamStructValue@ Struct(const CKBehaviorContext&in ctx, CKGUID typeGuid);
    ParamStructValue@ Struct(const CKBehaviorContext&in ctx, const string&in typeName);
    ParamValue@ Text(const CKBehaviorContext&in ctx, CKGUID typeGuid, const string&in text);
    ParamValue@ Text(const CKBehaviorContext&in ctx, const string&in typeName, const string&in text);
    string Text(CKContext@ context, CKGUID guid, int value);
    string Text(CKContext@ context, CKGUID guid, uint value);
    string Text(CKContext@ context, const string&in typeName, int value);
    string Text(CKContext@ context, const string&in typeName, uint value);
    string Text(const CKBehaviorContext&in ctx, CKGUID guid, int value);
    string Text(const CKBehaviorContext&in ctx, CKGUID guid, uint value);
    string Text(const CKBehaviorContext&in ctx, const string&in typeName, int value);
    string Text(const CKBehaviorContext&in ctx, const string&in typeName, uint value);
    ParamTypeInfo@ Type(CKContext@ context, CKGUID guid);
    ParamTypeInfo@ Type(CKContext@ context, const string&in typeName);
    ParamTypeInfo@ Type(const CKBehaviorContext&in ctx, CKGUID guid);
    ParamTypeInfo@ Type(const CKBehaviorContext&in ctx, const string&in typeName);
    ParamTypeInfo@ Type(const ScriptContext&in ctx, CKGUID guid);
    ParamTypeInfo@ Type(const ScriptContext&in ctx, const string&in typeName);
    int Value(CKContext@ context, CKGUID guid, const string&in nameOrValue, int fallback = 0);
    int Value(CKContext@ context, const string&in typeName, const string&in nameOrValue, int fallback = 0);
    int Value(const CKBehaviorContext&in ctx, CKGUID guid, const string&in nameOrValue, int fallback = 0);
    int Value(const CKBehaviorContext&in ctx, const string&in typeName, const string&in nameOrValue, int fallback = 0);
    ParamValue@ Vector(const VxVector&in value);
    ParamValue@ Vector2(const Vx2DVector&in value);
}

namespace Runtime {
    string[]@ Dependencies(const ScriptContext&in ctx, const string&in id);
    bool Enable(const ScriptContext&in ctx, const string&in id, bool enabled);
    RuntimeScriptInfo Info(const ScriptContext&in ctx, const string&in id);
    string[]@ List(const ScriptContext&in ctx);
    RuntimeScriptInfo[]@ ListInfo(const ScriptContext&in ctx);
    string Metadata(const ScriptContext&in ctx, const string&in id, const string&in key, const string&in fallback = "");
    RuntimeDependencyInfo[]@ OptionalDependencies(const ScriptContext&in ctx, const string&in id);
    bool Reload(const ScriptContext&in ctx, const string&in id);
    bool ReloadAll(const ScriptContext&in ctx);
    RuntimeDependencyInfo[]@ RequiredDependencies(const ScriptContext&in ctx, const string&in id);
    string Version(const ScriptContext&in ctx, const string&in id);
}

namespace Scene {
    bool AddToCurrentScene(CKContext@ ctx, ObjectRef@ obj, bool dependencies = true);
    bool AddToCurrentScene(const CKBehaviorContext&in ctx, ObjectRef@ obj, bool dependencies = true);
    bool AddToCurrentScene(const ScriptContext&in ctx, ObjectRef@ obj, bool dependencies = true);
    bool AddToScene(CKContext@ ctx, SceneRef@ scene, ObjectRef@ obj, bool dependencies = true);
    bool AddToScene(const CKBehaviorContext&in ctx, SceneRef@ scene, ObjectRef@ obj, bool dependencies = true);
    bool AddToScene(const ScriptContext&in ctx, SceneRef@ scene, ObjectRef@ obj, bool dependencies = true);
    ObjectRef@ ById(CKContext@ ctx, uint id);
    ObjectRef@ ById(const CKBehaviorContext&in ctx, uint id);
    ObjectRef@ ById(const ScriptContext&in ctx, uint id);
    ObjectRef@ Create(CKContext@ ctx, int cid, const string&in name = "", bool dynamic = true);
    ObjectRef@ Create(const CKBehaviorContext&in ctx, int cid, const string&in name = "", bool dynamic = true);
    ObjectRef@ Create(const ScriptContext&in ctx, int cid, const string&in name = "", bool dynamic = true);
    Entity2DRef@ CreateEntity2D(CKContext@ ctx, const string&in name = "", bool dynamic = true);
    Entity2DRef@ CreateEntity2D(const CKBehaviorContext&in ctx, const string&in name = "", bool dynamic = true);
    Entity2DRef@ CreateEntity2D(const ScriptContext&in ctx, const string&in name = "", bool dynamic = true);
    Entity3DRef@ CreateEntity3D(CKContext@ ctx, const string&in name = "", bool dynamic = true);
    Entity3DRef@ CreateEntity3D(const CKBehaviorContext&in ctx, const string&in name = "", bool dynamic = true);
    Entity3DRef@ CreateEntity3D(const ScriptContext&in ctx, const string&in name = "", bool dynamic = true);
    MaterialRef@ CreateMaterial(CKContext@ ctx, const string&in name = "", bool dynamic = true);
    MaterialRef@ CreateMaterial(const CKBehaviorContext&in ctx, const string&in name = "", bool dynamic = true);
    MaterialRef@ CreateMaterial(const ScriptContext&in ctx, const string&in name = "", bool dynamic = true);
    MeshRef@ CreateMesh(CKContext@ ctx, const string&in name = "", bool dynamic = true);
    MeshRef@ CreateMesh(const CKBehaviorContext&in ctx, const string&in name = "", bool dynamic = true);
    MeshRef@ CreateMesh(const ScriptContext&in ctx, const string&in name = "", bool dynamic = true);
    TextureRef@ CreateTexture(CKContext@ ctx, const string&in name = "", bool dynamic = true);
    TextureRef@ CreateTexture(const CKBehaviorContext&in ctx, const string&in name = "", bool dynamic = true);
    TextureRef@ CreateTexture(const ScriptContext&in ctx, const string&in name = "", bool dynamic = true);
    LevelRef@ CurrentLevel(CKContext@ ctx);
    LevelRef@ CurrentLevel(const CKBehaviorContext&in ctx);
    LevelRef@ CurrentLevel(const ScriptContext&in ctx);
    SceneRef@ CurrentScene(CKContext@ ctx);
    SceneRef@ CurrentScene(const CKBehaviorContext&in ctx);
    SceneRef@ CurrentScene(const ScriptContext&in ctx);
    bool Destroy(CKContext@ ctx, ObjectRef@ obj, bool allowPersistent = false, uint flags = 0);
    bool Destroy(const CKBehaviorContext&in ctx, ObjectRef@ obj, bool allowPersistent = false, uint flags = 0);
    bool Destroy(const ScriptContext&in ctx, ObjectRef@ obj, bool allowPersistent = false, uint flags = 0);
    ObjectRef@ Find(CKContext@ ctx, const string&in name, int cid = CKCID_OBJECT, bool derived = true, int occurrence = 0, bool currentSceneOnly = false);
    ObjectRef@ Find(const CKBehaviorContext&in ctx, const string&in name, int cid = CKCID_OBJECT, bool derived = true, int occurrence = 0, bool currentSceneOnly = false);
    ObjectRef@ Find(const ScriptContext&in ctx, const string&in name, int cid = CKCID_OBJECT, bool derived = true, int occurrence = 0, bool currentSceneOnly = false);
    ObjectRef@[]@ FindAll(CKContext@ ctx, const string&in name = "", int cid = CKCID_OBJECT, bool derived = true, bool currentSceneOnly = false);
    ObjectRef@[]@ FindAll(const CKBehaviorContext&in ctx, const string&in name = "", int cid = CKCID_OBJECT, bool derived = true, bool currentSceneOnly = false);
    ObjectRef@[]@ FindAll(const ScriptContext&in ctx, const string&in name = "", int cid = CKCID_OBJECT, bool derived = true, bool currentSceneOnly = false);
    BehaviorRef@[]@ FindAllBehavior(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    BehaviorRef@[]@ FindAllBehavior(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    BehaviorRef@[]@ FindAllBehavior(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity2DRef@[]@ FindAllEntity2D(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity2DRef@[]@ FindAllEntity2D(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity2DRef@[]@ FindAllEntity2D(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity3DRef@[]@ FindAllEntity3D(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity3DRef@[]@ FindAllEntity3D(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity3DRef@[]@ FindAllEntity3D(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    MaterialRef@[]@ FindAllMaterial(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    MaterialRef@[]@ FindAllMaterial(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    MaterialRef@[]@ FindAllMaterial(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    MeshRef@[]@ FindAllMesh(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    MeshRef@[]@ FindAllMesh(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    MeshRef@[]@ FindAllMesh(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    TextureRef@[]@ FindAllTexture(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    TextureRef@[]@ FindAllTexture(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    TextureRef@[]@ FindAllTexture(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    BehaviorRef@ FindBehavior(CKContext@ ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    BehaviorRef@ FindBehavior(const CKBehaviorContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    BehaviorRef@ FindBehavior(const ScriptContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    Entity2DRef@ FindEntity2D(CKContext@ ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    Entity2DRef@ FindEntity2D(const CKBehaviorContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    Entity2DRef@ FindEntity2D(const ScriptContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    Entity3DRef@ FindEntity3D(CKContext@ ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    Entity3DRef@ FindEntity3D(const CKBehaviorContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    Entity3DRef@ FindEntity3D(const ScriptContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    MaterialRef@ FindMaterial(CKContext@ ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    MaterialRef@ FindMaterial(const CKBehaviorContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    MaterialRef@ FindMaterial(const ScriptContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    MeshRef@ FindMesh(CKContext@ ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    MeshRef@ FindMesh(const CKBehaviorContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    MeshRef@ FindMesh(const ScriptContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    ObjectRef@ FindOne(CKContext@ ctx, const string&in name, int cid = CKCID_OBJECT, bool derived = true, bool currentSceneOnly = false);
    ObjectRef@ FindOne(const CKBehaviorContext&in ctx, const string&in name, int cid = CKCID_OBJECT, bool derived = true, bool currentSceneOnly = false);
    ObjectRef@ FindOne(const ScriptContext&in ctx, const string&in name, int cid = CKCID_OBJECT, bool derived = true, bool currentSceneOnly = false);
    BehaviorRef@ FindOneBehavior(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    BehaviorRef@ FindOneBehavior(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    BehaviorRef@ FindOneBehavior(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity2DRef@ FindOneEntity2D(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity2DRef@ FindOneEntity2D(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity2DRef@ FindOneEntity2D(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity3DRef@ FindOneEntity3D(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity3DRef@ FindOneEntity3D(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    Entity3DRef@ FindOneEntity3D(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    MaterialRef@ FindOneMaterial(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    MaterialRef@ FindOneMaterial(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    MaterialRef@ FindOneMaterial(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    MeshRef@ FindOneMesh(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    MeshRef@ FindOneMesh(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    MeshRef@ FindOneMesh(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    TextureRef@ FindOneTexture(CKContext@ ctx, const string&in name = "", bool currentSceneOnly = false);
    TextureRef@ FindOneTexture(const CKBehaviorContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    TextureRef@ FindOneTexture(const ScriptContext&in ctx, const string&in name = "", bool currentSceneOnly = false);
    TextureRef@ FindTexture(CKContext@ ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    TextureRef@ FindTexture(const CKBehaviorContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    TextureRef@ FindTexture(const ScriptContext&in ctx, const string&in name = "", int occurrence = 0, bool currentSceneOnly = false);
    bool IsInCurrentScene(CKContext@ ctx, ObjectRef@ obj);
    bool IsInCurrentScene(const CKBehaviorContext&in ctx, ObjectRef@ obj);
    bool IsInCurrentScene(const ScriptContext&in ctx, ObjectRef@ obj);
    bool IsInScene(CKContext@ ctx, SceneRef@ scene, ObjectRef@ obj);
    bool IsInScene(const CKBehaviorContext&in ctx, SceneRef@ scene, ObjectRef@ obj);
    bool IsInScene(const ScriptContext&in ctx, SceneRef@ scene, ObjectRef@ obj);
    ObjectRef@ Owner(CKContext@ ctx);
    ObjectRef@ Owner(const CKBehaviorContext&in ctx);
    ObjectRef@ Owner(const ScriptContext&in ctx);
    ObjectRef@ Ref(CKContext@ ctx, CKObject@ obj);
    ObjectRef@ Ref(const CKBehaviorContext&in ctx, CKObject@ obj);
    ObjectRef@ Ref(const ScriptContext&in ctx, CKObject@ obj);
    bool RemoveFromCurrentScene(CKContext@ ctx, ObjectRef@ obj, bool dependencies = true);
    bool RemoveFromCurrentScene(const CKBehaviorContext&in ctx, ObjectRef@ obj, bool dependencies = true);
    bool RemoveFromCurrentScene(const ScriptContext&in ctx, ObjectRef@ obj, bool dependencies = true);
    bool RemoveFromScene(CKContext@ ctx, SceneRef@ scene, ObjectRef@ obj, bool dependencies = true);
    bool RemoveFromScene(const CKBehaviorContext&in ctx, SceneRef@ scene, ObjectRef@ obj, bool dependencies = true);
    bool RemoveFromScene(const ScriptContext&in ctx, SceneRef@ scene, ObjectRef@ obj, bool dependencies = true);
    bool Select(CKContext@ ctx, ObjectRef@[]@ objects, bool clearSelection = true);
    bool Select(const CKBehaviorContext&in ctx, ObjectRef@[]@ objects, bool clearSelection = true);
    bool Select(const ScriptContext&in ctx, ObjectRef@[]@ objects, bool clearSelection = true);
    ObjectRef@ Target(CKContext@ ctx);
    ObjectRef@ Target(const CKBehaviorContext&in ctx);
    ObjectRef@ Target(const ScriptContext&in ctx);
}


// Appended from docs/api/bml-script-mod-api.as.
// BML Script Mod API reference stub.
// This file documents the script-facing API implemented by BML.
// It is not loaded by Player and should not be included at runtime.

namespace BML {

enum DirectoryType {
  DIR_WORKING = 0,
  DIR_TEMP = 1,
  DIR_GAME = 2,
  DIR_LOADER = 3,
  DIR_CONFIG = 4
}

enum ModKind {
  MOD_KIND_UNKNOWN = 0,
  MOD_KIND_NATIVE = 1,
  MOD_KIND_SCRIPT = 2
}

enum ModState {
  MOD_STATE_NOT_FOUND = 0,
  MOD_STATE_REGISTERED = 1,
  MOD_STATE_LOADED = 2,
  MOD_STATE_FAILED = 3
}

enum ReloadPhase {
  RELOAD_NONE = 0,
  RELOAD_UNLOAD = 1,
  RELOAD_LOAD = 2,
  RELOAD_ROLLBACK = 3,
  RELOAD_RECOVERY = 4,
  RELOAD_CLEANUP = 5,
  RELOAD_SAVE_STATE = 6,
  RELOAD_MIGRATE_STATE = 7,
  RELOAD_RESTORE_STATE = 8
}

enum StateValueType {
  STATE_VALUE_EMPTY = 0,
  STATE_VALUE_BOOL = 1,
  STATE_VALUE_INT = 2,
  STATE_VALUE_FLOAT = 3,
  STATE_VALUE_STRING = 4
}

enum HudFlag {
  HUD_TITLE = 1,
  HUD_FPS = 2,
  HUD_SR = 4
}

enum InputDevice {
  INPUT_DEVICE_KEYBOARD = 0,
  INPUT_DEVICE_MOUSE = 1,
  INPUT_DEVICE_JOYSTICK = 2,
  INPUT_DEVICE_COUNT = 3
}

enum InputKeyEvent {
  INPUT_KEY_NONE = 0,
  INPUT_KEY_PRESSED = 1,
  INPUT_KEY_RELEASED = 2
}

enum InputButtonState {
  INPUT_BUTTON_IDLE = 0,
  INPUT_BUTTON_PRESSED = 1,
  INPUT_BUTTON_RELEASED = 2
}

enum CursorPointer {
  CURSOR_NORMALSELECT = 1,
  CURSOR_BUSY = 2,
  CURSOR_MOVE = 3,
  CURSOR_LINKSELECT = 4
}

enum GameEvent {
  GAME_EVENT_PRE_START_MENU = 0,
  GAME_EVENT_POST_START_MENU = 1,
  GAME_EVENT_EXIT_GAME = 2,
  GAME_EVENT_PRE_LOAD_LEVEL = 3,
  GAME_EVENT_POST_LOAD_LEVEL = 4,
  GAME_EVENT_START_LEVEL = 5,
  GAME_EVENT_PRE_RESET_LEVEL = 6,
  GAME_EVENT_POST_RESET_LEVEL = 7,
  GAME_EVENT_PAUSE_LEVEL = 8,
  GAME_EVENT_UNPAUSE_LEVEL = 9,
  GAME_EVENT_PRE_EXIT_LEVEL = 10,
  GAME_EVENT_POST_EXIT_LEVEL = 11,
  GAME_EVENT_PRE_NEXT_LEVEL = 12,
  GAME_EVENT_POST_NEXT_LEVEL = 13,
  GAME_EVENT_DEAD = 14,
  GAME_EVENT_PRE_END_LEVEL = 15,
  GAME_EVENT_POST_END_LEVEL = 16,
  GAME_EVENT_COUNTER_ACTIVE = 17,
  GAME_EVENT_COUNTER_INACTIVE = 18,
  GAME_EVENT_BALL_NAV_ACTIVE = 19,
  GAME_EVENT_BALL_NAV_INACTIVE = 20,
  GAME_EVENT_CAM_NAV_ACTIVE = 21,
  GAME_EVENT_CAM_NAV_INACTIVE = 22,
  GAME_EVENT_BALL_OFF = 23,
  GAME_EVENT_PRE_CHECKPOINT_REACHED = 24,
  GAME_EVENT_POST_CHECKPOINT_REACHED = 25,
  GAME_EVENT_LEVEL_FINISH = 26,
  GAME_EVENT_GAME_OVER = 27,
  GAME_EVENT_EXTRA_POINT = 28,
  GAME_EVENT_PRE_SUB_LIFE = 29,
  GAME_EVENT_POST_SUB_LIFE = 30,
  GAME_EVENT_PRE_LIFE_UP = 31,
  GAME_EVENT_POST_LIFE_UP = 32
}

const int ERROR_OK;
const int ERROR_FAIL;
const int ERROR_NOT_FOUND;
const int ERROR_INVALID_PARAMETER;
const int ERROR_IMC_ENDPOINT_NOT_FOUND;
const int ERROR_IMC_HANDLE_STALE;
const int ERROR_IMC_UNSUPPORTED;
const int ERROR_IMC_API_MISMATCH;
const int ERROR_IMC_PROVIDER_UNLOADED;
const int ERROR_UNAVAILABLE;
const int ERROR_OBJECT_INVALID;
const int ERROR_IMC_SCHEMA_MISMATCH;
const int ERROR_IMC_TARGET_EXECUTION_FAILED;

enum CommandEventPhase {
  COMMAND_EVENT_PRE = 0,
  COMMAND_EVENT_POST = 1,
  COMMAND_EVENT_EXECUTE = 2,
  COMMAND_EVENT_COMPLETE = 3
}

enum ConfigPropertyType {
  CONFIG_PROPERTY_STRING = 0,
  CONFIG_PROPERTY_BOOLEAN = 1,
  CONFIG_PROPERTY_INTEGER = 2,
  CONFIG_PROPERTY_KEY = 3,
  CONFIG_PROPERTY_FLOAT = 4,
  CONFIG_PROPERTY_NONE = 5
}

enum TimerState {
  TIMER_IDLE = 0,
  TIMER_RUNNING = 1,
  TIMER_PAUSED = 2,
  TIMER_COMPLETED = 3,
  TIMER_CANCELLED = 4
}

enum TimerType {
  TIMER_ONCE = 0,
  TIMER_LOOP = 1,
  TIMER_REPEAT = 2,
  TIMER_INTERVAL = 3,
  TIMER_DEBOUNCE = 4,
  TIMER_THROTTLE = 5
}

enum TimerTimeBase {
  TIMER_TIMEBASE_TICK = 0,
  TIMER_TIMEBASE_TIME = 1,
  TIMER_TIMEBASE_REALTIME = 2
}

enum DataShareValueType {
  DATASHARE_STRING = 0,
  DATASHARE_BOOL = 1,
  DATASHARE_INT = 2,
  DATASHARE_FLOAT = 3
}

enum FontType {
  FONT_NONE = 0,
  FONT_GAME_NORMAL = 1,
  FONT_GAME_LARGE = 2,
  FONT_GAME_SMALL = 3,
  FONT_GAME_SMALL_GRAY = 4,
  FONT_GAME_HUGE = 5,
  FONT_CREDITS_SMALL = 6,
  FONT_CREDITS_BIG = 7
}

class VxRect {
  float Left;
  float Top;
  float Right;
  float Bottom;
}

class PhysicalizeDefinition {
  bool Fixed;
  float Friction;
  float Elasticity;
  float Mass;
  string CollisionGroup;
  bool StartFrozen;
  bool EnableCollision;
  bool CalcMassCenter;
  float LinearDamp;
  float RotDamp;
  string CollisionSurface;
  VxVector MassCenter;
}

class ObjectLoadOptions {
  string File;
  bool Rename;
  string MasterName;
  int FilterClass;
  bool AddToScene;
  bool ReuseMeshes;
  bool ReuseMaterials;
  bool Dynamic;
}

class ObjectLoadResult {
  bool get_Success() const;
  int get_Count() const;
  CKObject@ BorrowMainObject() const;
  CKObject@ BorrowObject(int index) const;
}

class Text2DDefinition {
  FontType Font;
  string Text;
  int Align;
  VxRect Margin;
  Vx2DVector Offset;
  Vx2DVector ParagraphIndent;
  float CaretSize;
  int Flags;
}

class BallTypeDefinition {
  string BallFile;
  string BallId;
  string BallName;
  string ObjectName;
  float Friction;
  float Elasticity;
  float Mass;
  string CollisionGroup;
  float LinearDamp;
  float RotDamp;
  float Force;
  float Radius;
}

class FloorTypeDefinition {
  string Name;
  float Friction;
  float Elasticity;
  float Mass;
  string CollisionGroup;
  bool EnableCollision;
}

class ModuleBallDefinition {
  string Name;
  bool Fixed;
  float Friction;
  float Elasticity;
  float Mass;
  string CollisionGroup;
  bool StartFrozen;
  bool EnableCollision;
  bool CalcMassCenter;
  float LinearDamp;
  float RotDamp;
  float Radius;
}

class ModuleConvexDefinition {
  string Name;
  bool Fixed;
  float Friction;
  float Elasticity;
  float Mass;
  string CollisionGroup;
  bool StartFrozen;
  bool EnableCollision;
  bool CalcMassCenter;
  float LinearDamp;
  float RotDamp;
}

class TrafoDefinition {
  string Name;
}

class ModuleDefinition {
  string Name;
}

namespace Path {
bool Exists(const string &in path);
bool IsFile(const string &in path);
bool IsDirectory(const string &in path);
bool IsValid(const string &in path);
bool IsAbsolute(const string &in path);
bool IsRelative(const string &in path);
string Combine(const string &in left, const string &in right);
string Normalize(const string &in path);
string FileName(const string &in path);
string Extension(const string &in path);
string RemoveExtension(const string &in path);
}

namespace CK {
bool IsValid(CKObject@ object);
int GetId(CKObject@ object);
string GetName(CKObject@ object);
int GetClassId(CKObject@ object);
bool IsVisible(CKObject@ object);
bool IsDynamic(CKObject@ object);

int GetPriority(CKBeObject@ object);
int GetScriptCount(CKBeObject@ object);
int GetAttributeCount(CKBeObject@ object);
void SetIC(CKBeObject@ object, bool hierarchy = false);
void RestoreIC(CKBeObject@ object, bool hierarchy = false);
void Show(CKBeObject@ object, CK_OBJECT_SHOWOPTION show = CKSHOW, bool hierarchy = false);

VxVector GetPosition(CK3dEntity@ entity);
void SetPosition(CK3dEntity@ entity, const VxVector &in position);
VxVector GetScale(CK3dEntity@ entity, bool local = true);
void SetScale(CK3dEntity@ entity, const VxVector &in scale, bool local = true);
int GetChildCount(CK3dEntity@ entity);
CK3dEntity@ BorrowChild(CK3dEntity@ entity, int index);
CK3dEntity@ BorrowParent(CK3dEntity@ entity);

int GetRowCount(CKDataArray@ array);
int GetColumnCount(CKDataArray@ array);
string GetColumnName(CKDataArray@ array, int column);
int FindColumn(CKDataArray@ array, const string &in name);
string GetString(CKDataArray@ array, int row, int column, const string &in defaultValue = "");
bool GetBool(CKDataArray@ array, int row, int column, bool defaultValue = false);
int GetInt(CKDataArray@ array, int row, int column, int defaultValue = 0);
float GetFloat(CKDataArray@ array, int row, int column, float defaultValue = 0.0f);
bool SetString(CKDataArray@ array, int row, int column, const string &in value);
bool SetBool(CKDataArray@ array, int row, int column, bool value);
bool SetInt(CKDataArray@ array, int row, int column, int value);
bool SetFloat(CKDataArray@ array, int row, int column, float value);
ObjectLoadResult@ LoadObject(const BML::ObjectLoadOptions &in options);
}

namespace Physics {
bool PhysicalizeConvex(CK3dEntity@ target, const BML::PhysicalizeDefinition &in definition, CKMesh@ mesh = null);
bool PhysicalizeBall(CK3dEntity@ target, const BML::PhysicalizeDefinition &in definition, const VxVector &in center, float radius);
bool PhysicalizeConcave(CK3dEntity@ target, const BML::PhysicalizeDefinition &in definition, CKMesh@ mesh = null);
bool Unphysicalize(CK3dEntity@ target);
bool SetForce(CK3dEntity@ target, const VxVector &in position, CK3dEntity@ positionReference, const VxVector &in direction, CK3dEntity@ directionReference, float force);
bool ClearForce(CK3dEntity@ target);
bool Impulse(CK3dEntity@ target, const VxVector &in position, CK3dEntity@ positionReference, const VxVector &in direction, CK3dEntity@ directionReference, float impulse);
bool WakeUp(CK3dEntity@ target);
}

namespace Text {
CKBehavior@ Create2DText(CKBehavior@ ownerScript, CK2dEntity@ target, const BML::Text2DDefinition &in definition);
CKBehavior@ Create2DText(CKBehavior@ ownerScript, CK2dEntity@ target, const BML::Text2DDefinition &in definition, CKMaterial@ backgroundMaterial, CKMaterial@ caretMaterial);
}

namespace Hook {
HookBlockRef@ Create(CKBehavior@ ownerScript, HookBlockCallback@+ callback, const string &in name = "", int inputCount = 1, int outputCount = 1);
HookBlockRef@ InsertAfter(CKBehavior@ ownerScript, CKBehavior@ source, HookBlockCallback@+ callback, const string &in name = "", int sourceOutput = 0, int targetInput = -1);
HookBlockRef@ InsertBefore(CKBehavior@ ownerScript, CKBehavior@ target, HookBlockCallback@+ callback, const string &in name = "", int sourceOutput = -1, int targetInput = 0);
HookBlockRef@ InsertBetween(CKBehavior@ ownerScript, CKBehavior@ source, CKBehavior@ target, HookBlockCallback@+ callback, const string &in name = "", int sourceOutput = 0, int targetInput = 0);
}

namespace UI {
void AddMessage(const string &in message);
void ClearMessages();
void OpenModsMenu();
void CloseModsMenu();
void OpenMapMenu();
void CloseMapMenu();
int GetHUDMode();
void SetHUDMode(int mode);
void ShowTitle(bool show);
void ShowFPS(bool show);
enum ButtonType {
  BUTTON_MAIN = 0,
  BUTTON_BACK = 1,
  BUTTON_OPTION = 2,
  BUTTON_LEVEL = 3,
  BUTTON_KEY = 4,
  BUTTON_SMALL = 5,
  BUTTON_LEFT = 6,
  BUTTON_RIGHT = 7,
  BUTTON_PLUS = 8,
  BUTTON_MINUS = 9
}

void SetCursorCoord(float x, float y);
float CoordToPixelX(float x);
float CoordToPixelY(float y);
float GetMenuPosX();
float GetMenuPosY();
float GetMenuSizeX();
float GetMenuSizeY();
int CalcPageCount(int totalCount, int pageSize);
bool CanPrevPage(int pageIndex);
bool CanNextPage(int pageIndex, int totalCount, int pageSize);

bool MainButton(const string &in label);
bool OkButton(const string &in label);
bool BackButton(const string &in label);
bool OptionButton(const string &in label);
bool LevelButton(const string &in label);
bool LevelButton(const string &in label, bool &inout selected);
bool SmallButton(const string &in label);
bool SmallButton(const string &in label, bool &inout selected);
bool LeftButton(const string &in label);
bool RightButton(const string &in label);
bool PlusButton(const string &in label);
bool MinusButton(const string &in label);
bool KeyButton(const string &in label, bool &inout toggled, int &inout keyChord);

void Title(const string &in text, float y = 0.13f, float scale = 1.5f);
void WrappedText(const string &in text, float width, float baseX = 0.0f, float scale = 1.0f);
bool NavLeft(float x = 0.36f, float y = 0.124f);
bool NavRight(float x = 0.6038f, float y = 0.124f);
bool NavBack(float x = 0.4031f, float y = 0.85f);

bool YesNoButton(const string &in label, bool &inout value);
bool RadioButtonText(const string &in label, int &inout currentItem, const string &in items);
bool InputTextButton(const string &in label, string &inout value, int maxLength = 256);
bool InputIntButton(const string &in label, int &inout value, int step = 1, int stepFast = 100);
bool InputFloatButton(const string &in label, float &inout value, float step = 0.0f, float stepFast = 0.0f);
bool SearchBar(string &inout text, float x = 0.4f, float y = 0.18f, float width = 0.2f);

void PlayMenuClickSound();
int CKKeyToImGuiKey(CKKEYBOARD key);
CKKEYBOARD ImGuiKeyToCKKey(int key);
string KeyChordToString(int keyChord);
bool SetKeyChordFromIO(int &inout keyChord);
float GetButtonSizeX(ButtonType type);
float GetButtonSizeY(ButtonType type);
float GetButtonIndent(ButtonType type);
float GetButtonSizeCoordX(ButtonType type);
float GetButtonSizeCoordY(ButtonType type);
float GetButtonIndentCoord(ButtonType type);
}

namespace Speedrun {
void SetTimerVisible(bool visible);
void StartTimer();
void PauseTimer();
void ResetTimer();
float GetElapsedTime();
}

class RenderEvent {
  int get_Flags() const;
  int GetFlags() const;
}

class CheatEvent {
  bool get_Enabled() const;
  bool IsEnabled() const;
}

class LoadObjectEvent {
  string get_Filename() const;
  bool get_IsMap() const;
  string get_MasterName() const;
  int get_FilterClass() const;
  bool get_AddToScene() const;
  bool get_ReuseMeshes() const;
  bool get_ReuseMaterials() const;
  bool get_IsDynamic() const;
  int get_ObjectCount() const;
  int GetObjectId(int index) const;
  CKObject@ BorrowObject(int index) const;
  CKObject@ BorrowMasterObject() const;
}

class LoadScriptEvent {
  string get_Filename() const;
  int get_ScriptId() const;
  CKBehavior@ BorrowScript() const;
}

class CommandEvent {
  CommandEventPhase get_Phase() const;
  bool get_IsPre() const;
  bool get_IsPost() const;
  bool get_IsExecute() const;
  bool get_IsComplete() const;
  string get_CommandName() const;
  int get_ArgCount() const;
  string GetArg(int index) const;
  string get_ArgsText() const;
  bool get_IsCheat() const;
}

class ConfigEvent {
  string get_ModId() const;
  string get_Category() const;
  string get_Key() const;
  ConfigPropertyType get_Type() const;
  bool get_HasProperty() const;
  ConfigProperty@ BorrowProperty() const;
}

interface Command {
  string get_Name() const;
  void Execute(const BML::ModContext &in, const BML::CommandEvent &in);
}

funcdef void CommandCallback(const BML::ModContext &in ctx, const BML::CommandEvent &in event);
funcdef void CommandCompletionCallback(const BML::ModContext &in ctx, const BML::CommandEvent &in event, BML::CommandCompletion &inout completions);

class CommandDefinition {
  string Name;
  string Alias;
  string Description;
  string Usage;
  string Category;
  bool Cheat;
  bool Hidden;
  bool Enabled;
}

class CommandCompletion {
  void Add(const string &in value) const;
  int get_Count() const;
  string At(int index) const;
}

class CommandRef {
  bool get_IsValid() const;
  string get_Name() const;
  string get_Alias() const;
  bool get_IsCheat() const;
  bool get_IsEnabled() const;
  bool SetEnabled(bool enabled);
  bool Unregister();
}

interface Timer {
  bool Tick(const BML::ModContext &in ctx, const BML::TimerEvent &in event);
}

funcdef void TimerCallback(const BML::ModContext &in ctx, const BML::TimerEvent &in event);
funcdef bool TimerLoopCallback(const BML::ModContext &in ctx, const BML::TimerEvent &in event);

class TimerRef {
  bool get_IsValid() const;
  bool IsValid() const;
  int get_Id() const;
  string get_Name() const;
  int get_State() const;
  int get_CompletedIterations() const;
  int get_RemainingIterations() const;
  float get_Progress() const;
  void Pause();
  void Resume();
  void Cancel();
}

class TimerEvent {
  bool get_IsValid() const;
  int get_Id() const;
  string get_Name() const;
  int get_State() const;
  int get_Type() const;
  int get_TimeBase() const;
  int get_CompletedIterations() const;
  int get_RemainingIterations() const;
  float get_Progress() const;
}

interface DataShareRequest {
  string get_Key() const;
  int get_Type() const;
  void Receive(const BML::ModContext &in ctx, const BML::DataShareEvent &in event);
}

funcdef void DataShareCallback(const BML::ModContext &in ctx, const BML::DataShareEvent &in event);

class DataShareEvent {
  bool get_Exists() const;
  string get_Key() const;
  int get_Type() const;
  string get_StringValue() const;
  bool get_BoolValue() const;
  int get_IntValue() const;
  float get_FloatValue() const;
}

class DataShareRequestRef {
  bool get_IsValid() const;
  string get_Key() const;
  int get_Type() const;
  bool Cancel();
}

class HookBlockEvent {
  bool get_IsValid() const;
  int get_BlockId() const;
  string get_BlockName() const;
  float get_DeltaTime() const;
  int get_InputCount() const;
  int get_OutputCount() const;
  CKBehavior@ BorrowBlock() const;
  CKBehavior@ BorrowOwnerScript() const;
  bool ActivateOutput(int index) const;
  void ActivateAllOutputs() const;
}

funcdef int HookBlockCallback(const BML::ModContext &in ctx, const BML::HookBlockEvent &in event);

class HookBlockRef {
  bool get_IsValid() const;
  bool get_IsInstalled() const;
  bool get_Enabled() const;
  void set_Enabled(bool enabled);
  bool SetEnabled(bool enabled);
  bool get_AutoActivateOutputs() const;
  void set_AutoActivateOutputs(bool enabled);
  bool SetAutoActivateOutputs(bool enabled);
  int get_BlockId() const;
  string get_Name() const;
  CKBehavior@ BorrowBlock() const;
  CKBehavior@ BorrowOwnerScript() const;
  bool Uninstall();
}

class PhysicalizeEvent {
  int get_TargetId() const;
  string get_TargetName() const;
  CK3dEntity@ BorrowTarget() const;
  bool get_Fixed() const;
  float get_Friction() const;
  float get_Elasticity() const;
  float get_Mass() const;
  string get_CollisionGroup() const;
  bool get_StartFrozen() const;
  bool get_EnableCollision() const;
  bool get_AutoCalcMassCenter() const;
  float get_LinearDamp() const;
  float get_RotDamp() const;
  string get_CollisionSurface() const;
  float get_MassCenterX() const;
  float get_MassCenterY() const;
  float get_MassCenterZ() const;
  VxVector get_MassCenter() const;
  int get_ConvexCount() const;
  CKMesh@ BorrowConvexMesh(int index) const;
  int get_BallCount() const;
  VxVector GetBallCenter(int index) const;
  float GetBallRadius(int index) const;
  int get_ConcaveCount() const;
  CKMesh@ BorrowConcaveMesh(int index) const;
}

class ObjectEvent {
  int get_TargetId() const;
  string get_TargetName() const;
  CK3dEntity@ BorrowTarget() const;
}

class InputHook {
  bool get_IsValid() const;
  bool IsValid() const;
  void EnableKeyboardRepetition(bool enable = true) const;
  bool IsKeyboardRepetitionEnabled() const;
  bool IsKeyboardAttached() const;
  bool IsMouseAttached() const;
  bool IsJoystickAttached(int joystick) const;
  bool IsKeyDown(CKKEYBOARD key) const;
  bool IsKeyDown(CKKEYBOARD key, uint &out stamp) const;
  bool IsKeyUp(CKKEYBOARD key) const;
  bool IsKeyPressed(CKKEYBOARD key) const;
  bool IsKeyReleased(CKKEYBOARD key) const;
  bool IsKeyToggled(CKKEYBOARD key) const;
  bool IsKeyToggled(CKKEYBOARD key, uint &out stamp) const;
  string GetKeyName(CKKEYBOARD key) const;
  int GetKeyFromName(const string &in name) const;
  int GetKeyboardState(CKKEYBOARD key) const;
  bool IsKeyboardStateDown(CKKEYBOARD key) const;
  int GetNumberOfKeyInBuffer() const;
  int GetKeyFromBuffer(int index, CKKEYBOARD &out key, uint &out timestamp) const;
  bool IsMouseButtonDown(CK_MOUSEBUTTON button) const;
  bool IsMouseClicked(CK_MOUSEBUTTON button) const;
  bool IsMouseToggled(CK_MOUSEBUTTON button) const;
  int GetMouseButtonState(CK_MOUSEBUTTON button) const;
  Vx2DVector GetMousePosition(bool absolute = true) const;
  Vx2DVector GetLastMousePosition() const;
  VxVector GetMouseRelativePosition() const;
  VxVector GetJoystickPosition(int joystick) const;
  VxVector GetJoystickRotation(int joystick) const;
  Vx2DVector GetJoystickSliders(int joystick) const;
  float GetJoystickPointOfViewAngle(int joystick) const;
  uint GetJoystickButtonsState(int joystick) const;
  bool IsJoystickButtonDown(int joystick, int button) const;
  void Pause(bool pause) const;
  void ShowCursor(bool show) const;
  bool GetCursorVisibility() const;
  int GetSystemCursor() const;
  void SetSystemCursor(int cursor) const;
  bool IsBlock() const;
  void SetBlock(bool block) const;
  int IsBlocked(InputDevice device) const;
  void Block(InputDevice device) const;
  void Unblock(InputDevice device) const;
}

class Logger {
  bool get_IsValid() const;
  bool IsValid() const;
  void Info(const string &in message) const;
  void Warn(const string &in message) const;
  void Error(const string &in message) const;
}

class ConfigProperty {
  bool get_IsValid() const;
  bool IsValid() const;
  ConfigPropertyType get_Type() const;
  ConfigPropertyType GetType() const;
  string GetString(const string &in defaultValue = "") const;
  bool GetBoolean(bool defaultValue = false) const;
  int GetInteger(int defaultValue = 0) const;
  float GetFloat(float defaultValue = 0.0f) const;
  CKKEYBOARD GetKey(CKKEYBOARD defaultValue = 0) const;
  void SetString(const string &in value) const;
  void SetBoolean(bool value) const;
  void SetInteger(int value) const;
  void SetFloat(float value) const;
  void SetKey(CKKEYBOARD value) const;
  void SetComment(const string &in comment) const;
  void SetDefaultString(const string &in value) const;
  void SetDefaultBoolean(bool value) const;
  void SetDefaultInteger(int value) const;
  void SetDefaultFloat(float value) const;
  void SetDefaultKey(CKKEYBOARD value) const;
}

class Config {
  bool get_IsValid() const;
  bool IsValid() const;
  bool HasCategory(const string &in category) const;
  bool HasKey(const string &in category, const string &in key) const;
  ConfigProperty@ GetProperty(const string &in category, const string &in key) const;
  void SetCategoryComment(const string &in category, const string &in comment) const;
}

class ModContext {
  bool get_HasContext() const;
  bool HasContext() const;
  string get_ModId() const;
  string GetModId() const;
  string GetModId(int index) const;
  string get_ModName() const;
  string GetModName() const;
  void LogInfo(const string &in message) const;
  void LogWarn(const string &in message) const;
  void LogError(const string &in message) const;
  bool get_IsReloading() const;
  bool IsReloading() const;
  ReloadPhase get_ReloadPhase() const;
  ReloadPhase GetReloadPhase() const;
  uint get_ReloadAttemptId() const;
  uint GetReloadAttemptId() const;
  uint get_ModGeneration() const;
  uint GetModGeneration() const;
  uint get_RuntimeGeneration() const;
  uint GetRuntimeGeneration() const;

  CKContext@ BorrowCKContext() const;
  CKRenderContext@ BorrowRenderContext() const;
  CKAttributeManager@ BorrowAttributeManager() const;
  CKBehaviorManager@ BorrowBehaviorManager() const;
  CKCollisionManager@ BorrowCollisionManager() const;
  InputHook@ BorrowInputManager() const;
  CKMessageManager@ BorrowMessageManager() const;
  CKPathManager@ BorrowPathManager() const;
  CKParameterManager@ BorrowParameterManager() const;
  CKRenderManager@ BorrowRenderManager() const;
  CKSoundManager@ BorrowSoundManager() const;
  CKTimeManager@ BorrowTimeManager() const;
  CKDataArray@ BorrowDataArrayByName(const string &in name) const;
  CKGroup@ BorrowGroupByName(const string &in name) const;
  CKMaterial@ BorrowMaterialByName(const string &in name) const;
  CKMesh@ BorrowMeshByName(const string &in name) const;
  CK2dEntity@ Borrow2dEntityByName(const string &in name) const;
  CK3dEntity@ Borrow3dEntityByName(const string &in name) const;
  CK3dObject@ Borrow3dObjectByName(const string &in name) const;
  CKCamera@ BorrowCameraByName(const string &in name) const;
  CKTargetCamera@ BorrowTargetCameraByName(const string &in name) const;
  CKLight@ BorrowLightByName(const string &in name) const;
  CKTargetLight@ BorrowTargetLightByName(const string &in name) const;
  CKSound@ BorrowSoundByName(const string &in name) const;
  CKTexture@ BorrowTextureByName(const string &in name) const;
  CKBehavior@ BorrowScriptByName(const string &in name) const;
  Logger@ BorrowLogger() const;
  Config@ BorrowConfig() const;

  bool get_IsInGame() const;
  bool GetIsInGame() const;
  bool get_IsInLevel() const;
  bool GetIsInLevel() const;
  bool get_IsPaused() const;
  bool GetIsPaused() const;
  bool get_IsPlaying() const;
  bool GetIsPlaying() const;
  bool get_IsCheatEnabled() const;
  bool GetIsCheatEnabled() const;
  void EnableCheat(bool enable) const;
  void ExitGame() const;
  void ExecuteCommand(const string &in command) const;
  void SkipRenderForNextTick() const;

  float GetSRScore() const;
  int GetHSScore() const;
  string GetDirectoryUtf8(int type) const;
  float GetTimeMs() const;
  float GetAbsoluteTimeMs() const;
  float GetDeltaTimeMs() const;
  uint GetFrameCount() const;
  string GetModRootUtf8() const;
  string ResolveModPathUtf8(const string &in relativePath) const;
  bool ModFileExistsUtf8(const string &in relativePath) const;
  bool ModDirectoryExistsUtf8(const string &in relativePath) const;
  string ReadModTextFileUtf8(const string &in relativePath, const string &in defaultValue = "") const;

  TimerRef@ AddTimer(Timer@+ timer) const;
  TimerRef@ SetTimeoutTicks(uint delayTicks, TimerCallback@+ callback, const string &in name = "") const;
  TimerRef@ SetTimeout(float delayMs, TimerCallback@+ callback, const string &in name = "") const;
  TimerRef@ SetIntervalTicks(uint delayTicks, TimerLoopCallback@+ callback, const string &in name = "") const;
  TimerRef@ SetInterval(float delayMs, TimerLoopCallback@+ callback, const string &in name = "") const;
  CommandRef@ RegisterCommand(Command@+ command) const;
  CommandRef@ RegisterCommand(const CommandDefinition &in definition, CommandCallback@+ execute, CommandCompletionCallback@+ complete = null) const;
  bool UnregisterCommand(const string &in name) const;
  DataShareRequestRef@ RequestDataShare(DataShareRequest@+ request) const;
  DataShareRequestRef@ RequestDataShare(const string &in key, int type, DataShareCallback@+ callback, const string &in name = "") const;
  HookBlockRef@ CreateHookBlock(CKBehavior@ ownerScript, HookBlockCallback@+ callback, const string &in name = "", int inputCount = 1, int outputCount = 1) const;
  HookBlockRef@ InsertHookBlockAfter(CKBehavior@ ownerScript, CKBehavior@ source, HookBlockCallback@+ callback, const string &in name = "", int sourceOutput = 0, int targetInput = -1) const;
  HookBlockRef@ InsertHookBlockBefore(CKBehavior@ ownerScript, CKBehavior@ target, HookBlockCallback@+ callback, const string &in name = "", int sourceOutput = -1, int targetInput = 0) const;
  HookBlockRef@ InsertHookBlockBetween(CKBehavior@ ownerScript, CKBehavior@ source, CKBehavior@ target, HookBlockCallback@+ callback, const string &in name = "", int sourceOutput = 0, int targetInput = 0) const;
  bool RegisterBallType(const BallTypeDefinition &in definition) const;
  bool RegisterFloorType(const FloorTypeDefinition &in definition) const;
  bool RegisterModule(const ModuleBallDefinition &in definition) const;
  bool RegisterModule(const ModuleConvexDefinition &in definition) const;
  bool RegisterModule(const TrafoDefinition &in definition) const;
  bool RegisterModule(const ModuleDefinition &in definition) const;

  int GetCommandCount() const;
  string GetCommandName(int index) const;
  string GetCommandAlias(int index) const;
  string GetCommandDescription(int index) const;
  bool HasCommand(const string &in name) const;
  bool IsCommandCheat(const string &in name) const;
  ModRef@ FindMod(const string &in id) const;
  int GetModCount() const;
  ModRef@ GetMod(int index) const;
}

class ModRef {
  bool get_IsValid() const;
  bool get_IsScript() const;
  bool get_IsFailed() const;
  string get_Diagnostic() const;
  string GetDiagnostic() const;
  string get_Id() const;
  string GetId() const;
  string get_Name() const;
  string get_Version() const;
  string get_Author() const;
  string get_Description() const;
  string get_BMLVersion() const;
  int get_BMLVersionMajor() const;
  int get_BMLVersionMinor() const;
  int get_BMLVersionPatch() const;
  int get_Kind() const;
  int get_State() const;
  int CheckDependencies() const;
  int GetDependencyCount() const;
  string GetDependencyId(int index) const;
  string GetDependencyVersion(int index) const;
  int GetDependencyVersionMajor(int index) const;
  int GetDependencyVersionMinor(int index) const;
  int GetDependencyVersionPatch(int index) const;
  bool IsDependencyOptional(int index) const;
}

class StateBag {
  bool get_IsReloadState() const;
  bool IsReloadState() const;
  bool Has(const string &in key) const;
  bool Remove(const string &in key);
  void Clear();
  int get_Count() const;
  int GetCount() const;
  string GetKey(int index) const;
  StateValueType GetType(const string &in key) const;
  void SetBool(const string &in key, bool value);
  bool GetBool(const string &in key, bool defaultValue = false) const;
  void SetInt(const string &in key, int value);
  int GetInt(const string &in key, int defaultValue = 0) const;
  void SetFloat(const string &in key, float value);
  float GetFloat(const string &in key, float defaultValue = 0.0f) const;
  void SetString(const string &in key, const string &in value);
  string GetString(const string &in key, const string &in defaultValue = "") const;
}

class Vec2 { float x; float y; }
class Vec3 { float x; float y; float z; }
class Mat4 {
  float m00; float m01; float m02; float m03;
  float m10; float m11; float m12; float m13;
  float m20; float m21; float m22; float m23;
  float m30; float m31; float m32; float m33;
}

string GetVersion();
int GetVersionMajor();
int GetVersionMinor();
int GetVersionPatch();
string GetErrorString(int errorCode);
string GetGameEventName(GameEvent event);
bool BorrowCurrentContext(ModContext &out context);

bool DataShareSetString(const string &in key, const string &in value, const string &in name = "BML");
string DataShareGetString(const string &in key, const string &in defaultValue = "", const string &in name = "BML");
bool DataShareSetBool(const string &in key, bool value, const string &in name = "BML");
bool DataShareGetBool(const string &in key, bool defaultValue = false, const string &in name = "BML");
bool DataShareSetInt(const string &in key, int value, const string &in name = "BML");
int DataShareGetInt(const string &in key, int defaultValue = 0, const string &in name = "BML");
bool DataShareSetFloat(const string &in key, float value, const string &in name = "BML");
float DataShareGetFloat(const string &in key, float defaultValue = 0.0f, const string &in name = "BML");
bool DataShareHas(const string &in key, const string &in name = "BML");
void DataShareRemove(const string &in key, const string &in name = "BML");
int DataShareSizeOf(const string &in key, const string &in name = "BML");

// Typed built-in capability facades. Runtime snapshots are small values returned
// directly. Borrow* methods create a host-owned, non-retained CK handle and are
// valid only while the object still belongs to the current game scene.
namespace Runtime {
class State {
  bool InGame; bool InLevel; bool Paused; bool Playing; bool CheatEnabled;
}
class Clock { float TimeMs; float AbsoluteMs; float DeltaMs; int Frame; }
class Score { float SR; int HS; }
State GetState();
Clock GetClock();
Score GetScore();
} // namespace Runtime

namespace Gameplay {
class LevelState {
  int Id; BML::Mat4 ResetMatrix; int Points;
  CKObject@ BorrowActiveBall() const;
}
class EnergyState {
  int Points; int Lives; int StartPoints; int StartLives; float TimeFactor; int LifeBonus;
}
class CatalogEntry {
  int Bonus; int Music;
  bool FileTruncated; bool StartBallTruncated; bool SkyTruncated;
  string get_File() const; string get_StartBall() const; string get_Sky() const;
}
class Checkpoint { BML::Mat4 Matrix; CKObject@ BorrowObject() const; }
class Resetpoint { CKObject@ BorrowObject() const; }
int ReadLevel(LevelState &out state);
int ReadEnergy(EnergyState &out state);
int ReadCatalog(array<CatalogEntry>@ &out entries);
int ReadCheckpoints(array<Checkpoint>@ &out entries);
int ReadResetpoints(array<Resetpoint>@ &out entries);
} // namespace Gameplay

namespace Events {
// Event is an immutable stream snapshot.  Category-specific fields are
// meaningful only when the corresponding Is* flag is true.
class Event {
  bool get_IsValid() const; int get_Status() const; int get_Kind() const;
  uint64 get_Sequence() const; uint64 get_Timestamp() const;
  bool get_IsLoad() const; bool get_IsPhysics() const; bool get_IsCommand() const;
  bool get_IsConfig() const; bool get_IsCheat() const;
  string get_Filename() const; bool get_IsMap() const; string get_MasterName() const;
  int get_FilterClass() const; bool get_AddToScene() const; bool get_ReuseMeshes() const;
  bool get_ReuseMaterials() const; bool get_Dynamic() const;
  CKObject@ BorrowMasterObject() const; CKObject@ BorrowScript() const;
  int get_ObjectCount() const; CKObject@ BorrowObject(int index) const;
  CKObject@ BorrowTarget() const;
  bool get_Fixed() const; float get_Friction() const; float get_Elasticity() const;
  float get_Mass() const; string get_CollisionGroup() const; bool get_StartFrozen() const;
  bool get_EnableCollision() const; bool get_AutoCalculateMassCenter() const;
  float get_LinearDamp() const; float get_RotDamp() const;
  string get_CollisionSurface() const; BML::Vec3 get_MassCenter() const;
  int get_ConvexMeshCount() const; CKObject@ BorrowConvexMesh(int index) const;
  int get_BallCount() const; BML::Vec3 GetBallCenter(int index) const;
  float GetBallRadius(int index) const; int get_ConcaveMeshCount() const;
  CKObject@ BorrowConcaveMesh(int index) const;
  string get_Command() const; int get_CommandArgumentCount() const;
  string GetCommandArgument(int index) const; string get_ConfigCategory() const;
  string get_ConfigKey() const; int get_ConfigType() const; string get_ConfigValue() const;
  bool get_CheatEnabled() const;
}
class Stream {
  bool get_IsOpen() const; int Close();
  int GetDroppedCount(int &out count) const;
  int Poll(Event@ &out event);
}
int Open(Stream@ &out stream, int capacity = 256);
} // namespace Events

} // namespace BML

// Appended from docs/api/bml-imgui-api.as.
// This file is generated by tools/asgen/asgen.py. Do not edit by hand.
// BML generated ImGui AngelScript API reference stub.
// Frame-scope API: script mods call it during OnProcess while the BML+ ImGui frame is active.

class CKTexture;

class ImVec2 {
  float x;
  float y;
  ImVec2();
  ImVec2(float x, float y);
}

class ImVec3 {
  float x;
  float y;
  float z;
  ImVec3();
  ImVec3(float x, float y, float z);
}

class ImVec4 {
  float x;
  float y;
  float z;
  float w;
  ImVec4();
  ImVec4(float x, float y, float z, float w);
}

class ImGuiInt2 {
  int x;
  int y;
  ImGuiInt2();
  ImGuiInt2(int x, int y);
}

class ImGuiInt3 {
  int x;
  int y;
  int z;
  ImGuiInt3();
  ImGuiInt3(int x, int y, int z);
}

class ImGuiInt4 {
  int x;
  int y;
  int z;
  int w;
  ImGuiInt4();
  ImGuiInt4(int x, int y, int z, int w);
}

enum ImDrawFlags {
  ImDrawFlags_None = 0,
  ImDrawFlags_Closed = 1,
  ImDrawFlags_RoundCornersTopLeft = 16,
  ImDrawFlags_RoundCornersTopRight = 32,
  ImDrawFlags_RoundCornersBottomLeft = 64,
  ImDrawFlags_RoundCornersBottomRight = 128,
  ImDrawFlags_RoundCornersNone = 256,
  ImDrawFlags_RoundCornersTop = 48,
  ImDrawFlags_RoundCornersBottom = 192,
  ImDrawFlags_RoundCornersLeft = 80,
  ImDrawFlags_RoundCornersRight = 160,
  ImDrawFlags_RoundCornersAll = 240,
  ImDrawFlags_RoundCornersDefault_ = 240,
  ImDrawFlags_RoundCornersMask_ = 496
}

enum ImDrawListFlags {
  ImDrawListFlags_None = 0,
  ImDrawListFlags_AntiAliasedLines = 1,
  ImDrawListFlags_AntiAliasedLinesUseTex = 2,
  ImDrawListFlags_AntiAliasedFill = 4,
  ImDrawListFlags_AllowVtxOffset = 8
}

enum ImFontFlags {
  ImFontFlags_None = 0,
  ImFontFlags_NoLoadError = 2,
  ImFontFlags_NoLoadGlyphs = 4,
  ImFontFlags_LockBakedSizes = 8
}

enum ImGuiBackendFlags {
  ImGuiBackendFlags_None = 0,
  ImGuiBackendFlags_HasGamepad = 1,
  ImGuiBackendFlags_HasMouseCursors = 2,
  ImGuiBackendFlags_HasSetMousePos = 4,
  ImGuiBackendFlags_RendererHasVtxOffset = 8,
  ImGuiBackendFlags_RendererHasTextures = 16
}

enum ImGuiButtonFlags {
  ImGuiButtonFlags_None = 0,
  ImGuiButtonFlags_MouseButtonLeft = 1,
  ImGuiButtonFlags_MouseButtonRight = 2,
  ImGuiButtonFlags_MouseButtonMiddle = 4,
  ImGuiButtonFlags_MouseButtonMask_ = 7,
  ImGuiButtonFlags_EnableNav = 8
}

enum ImGuiChildFlags {
  ImGuiChildFlags_None = 0,
  ImGuiChildFlags_Borders = 1,
  ImGuiChildFlags_AlwaysUseWindowPadding = 2,
  ImGuiChildFlags_ResizeX = 4,
  ImGuiChildFlags_ResizeY = 8,
  ImGuiChildFlags_AutoResizeX = 16,
  ImGuiChildFlags_AutoResizeY = 32,
  ImGuiChildFlags_AlwaysAutoResize = 64,
  ImGuiChildFlags_FrameStyle = 128,
  ImGuiChildFlags_NavFlattened = 256
}

enum ImGuiCol {
  ImGuiCol_Text = 0,
  ImGuiCol_TextDisabled = 1,
  ImGuiCol_WindowBg = 2,
  ImGuiCol_ChildBg = 3,
  ImGuiCol_PopupBg = 4,
  ImGuiCol_Border = 5,
  ImGuiCol_BorderShadow = 6,
  ImGuiCol_FrameBg = 7,
  ImGuiCol_FrameBgHovered = 8,
  ImGuiCol_FrameBgActive = 9,
  ImGuiCol_TitleBg = 10,
  ImGuiCol_TitleBgActive = 11,
  ImGuiCol_TitleBgCollapsed = 12,
  ImGuiCol_MenuBarBg = 13,
  ImGuiCol_ScrollbarBg = 14,
  ImGuiCol_ScrollbarGrab = 15,
  ImGuiCol_ScrollbarGrabHovered = 16,
  ImGuiCol_ScrollbarGrabActive = 17,
  ImGuiCol_CheckMark = 18,
  ImGuiCol_SliderGrab = 19,
  ImGuiCol_SliderGrabActive = 20,
  ImGuiCol_Button = 21,
  ImGuiCol_ButtonHovered = 22,
  ImGuiCol_ButtonActive = 23,
  ImGuiCol_Header = 24,
  ImGuiCol_HeaderHovered = 25,
  ImGuiCol_HeaderActive = 26,
  ImGuiCol_Separator = 27,
  ImGuiCol_SeparatorHovered = 28,
  ImGuiCol_SeparatorActive = 29,
  ImGuiCol_ResizeGrip = 30,
  ImGuiCol_ResizeGripHovered = 31,
  ImGuiCol_ResizeGripActive = 32,
  ImGuiCol_InputTextCursor = 33,
  ImGuiCol_TabHovered = 34,
  ImGuiCol_Tab = 35,
  ImGuiCol_TabSelected = 36,
  ImGuiCol_TabSelectedOverline = 37,
  ImGuiCol_TabDimmed = 38,
  ImGuiCol_TabDimmedSelected = 39,
  ImGuiCol_TabDimmedSelectedOverline = 40,
  ImGuiCol_PlotLines = 43,
  ImGuiCol_PlotLinesHovered = 44,
  ImGuiCol_PlotHistogram = 45,
  ImGuiCol_PlotHistogramHovered = 46,
  ImGuiCol_TableHeaderBg = 47,
  ImGuiCol_TableBorderStrong = 48,
  ImGuiCol_TableBorderLight = 49,
  ImGuiCol_TableRowBg = 50,
  ImGuiCol_TableRowBgAlt = 51,
  ImGuiCol_TextLink = 52,
  ImGuiCol_TextSelectedBg = 53,
  ImGuiCol_TreeLines = 54,
  ImGuiCol_DragDropTarget = 55,
  ImGuiCol_DragDropTargetBg = 56,
  ImGuiCol_UnsavedMarker = 57,
  ImGuiCol_NavCursor = 58,
  ImGuiCol_NavWindowingHighlight = 59,
  ImGuiCol_NavWindowingDimBg = 60,
  ImGuiCol_ModalWindowDimBg = 61,
  ImGuiCol_COUNT = 62
}

enum ImGuiColorEditFlags {
  ImGuiColorEditFlags_None = 0,
  ImGuiColorEditFlags_NoAlpha = 2,
  ImGuiColorEditFlags_NoPicker = 4,
  ImGuiColorEditFlags_NoOptions = 8,
  ImGuiColorEditFlags_NoSmallPreview = 16,
  ImGuiColorEditFlags_NoInputs = 32,
  ImGuiColorEditFlags_NoTooltip = 64,
  ImGuiColorEditFlags_NoLabel = 128,
  ImGuiColorEditFlags_NoSidePreview = 256,
  ImGuiColorEditFlags_NoDragDrop = 512,
  ImGuiColorEditFlags_NoBorder = 1024,
  ImGuiColorEditFlags_NoColorMarkers = 2048,
  ImGuiColorEditFlags_AlphaOpaque = 4096,
  ImGuiColorEditFlags_AlphaNoBg = 8192,
  ImGuiColorEditFlags_AlphaPreviewHalf = 16384,
  ImGuiColorEditFlags_AlphaBar = 262144,
  ImGuiColorEditFlags_HDR = 524288,
  ImGuiColorEditFlags_DisplayRGB = 1048576,
  ImGuiColorEditFlags_DisplayHSV = 2097152,
  ImGuiColorEditFlags_DisplayHex = 4194304,
  ImGuiColorEditFlags_Uint8 = 8388608,
  ImGuiColorEditFlags_Float = 16777216,
  ImGuiColorEditFlags_PickerHueBar = 33554432,
  ImGuiColorEditFlags_PickerHueWheel = 67108864,
  ImGuiColorEditFlags_InputRGB = 134217728,
  ImGuiColorEditFlags_InputHSV = 268435456,
  ImGuiColorEditFlags_DefaultOptions_ = 177209344,
  ImGuiColorEditFlags_AlphaMask_ = 28674,
  ImGuiColorEditFlags_DisplayMask_ = 7340032,
  ImGuiColorEditFlags_DataTypeMask_ = 25165824,
  ImGuiColorEditFlags_PickerMask_ = 100663296,
  ImGuiColorEditFlags_InputMask_ = 402653184
}

enum ImGuiComboFlags {
  ImGuiComboFlags_None = 0,
  ImGuiComboFlags_PopupAlignLeft = 1,
  ImGuiComboFlags_HeightSmall = 2,
  ImGuiComboFlags_HeightRegular = 4,
  ImGuiComboFlags_HeightLarge = 8,
  ImGuiComboFlags_HeightLargest = 16,
  ImGuiComboFlags_NoArrowButton = 32,
  ImGuiComboFlags_NoPreview = 64,
  ImGuiComboFlags_WidthFitPreview = 128,
  ImGuiComboFlags_HeightMask_ = 30
}

enum ImGuiCond {
  ImGuiCond_None = 0,
  ImGuiCond_Always = 1,
  ImGuiCond_Once = 2,
  ImGuiCond_FirstUseEver = 4,
  ImGuiCond_Appearing = 8
}

enum ImGuiConfigFlags {
  ImGuiConfigFlags_None = 0,
  ImGuiConfigFlags_NavEnableKeyboard = 1,
  ImGuiConfigFlags_NavEnableGamepad = 2,
  ImGuiConfigFlags_NoMouse = 16,
  ImGuiConfigFlags_NoMouseCursorChange = 32,
  ImGuiConfigFlags_NoKeyboard = 64,
  ImGuiConfigFlags_IsSRGB = 1048576,
  ImGuiConfigFlags_IsTouchScreen = 2097152
}

enum ImGuiDataType {
  ImGuiDataType_S8 = 0,
  ImGuiDataType_U8 = 1,
  ImGuiDataType_S16 = 2,
  ImGuiDataType_U16 = 3,
  ImGuiDataType_S32 = 4,
  ImGuiDataType_U32 = 5,
  ImGuiDataType_S64 = 6,
  ImGuiDataType_U64 = 7,
  ImGuiDataType_Float = 8,
  ImGuiDataType_Double = 9,
  ImGuiDataType_Bool = 10,
  ImGuiDataType_String = 11,
  ImGuiDataType_COUNT = 12
}

enum ImGuiDir {
  ImGuiDir_None = -1,
  ImGuiDir_Left = 0,
  ImGuiDir_Right = 1,
  ImGuiDir_Up = 2,
  ImGuiDir_Down = 3,
  ImGuiDir_COUNT = 4
}

enum ImGuiDragDropFlags {
  ImGuiDragDropFlags_None = 0,
  ImGuiDragDropFlags_SourceNoPreviewTooltip = 1,
  ImGuiDragDropFlags_SourceNoDisableHover = 2,
  ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 4,
  ImGuiDragDropFlags_SourceAllowNullID = 8,
  ImGuiDragDropFlags_SourceExtern = 16,
  ImGuiDragDropFlags_PayloadAutoExpire = 32,
  ImGuiDragDropFlags_PayloadNoCrossContext = 64,
  ImGuiDragDropFlags_PayloadNoCrossProcess = 128,
  ImGuiDragDropFlags_AcceptBeforeDelivery = 1024,
  ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 2048,
  ImGuiDragDropFlags_AcceptNoPreviewTooltip = 4096,
  ImGuiDragDropFlags_AcceptDrawAsHovered = 8192,
  ImGuiDragDropFlags_AcceptPeekOnly = 3072
}

enum ImGuiFocusedFlags {
  ImGuiFocusedFlags_None = 0,
  ImGuiFocusedFlags_ChildWindows = 1,
  ImGuiFocusedFlags_RootWindow = 2,
  ImGuiFocusedFlags_AnyWindow = 4,
  ImGuiFocusedFlags_NoPopupHierarchy = 8,
  ImGuiFocusedFlags_RootAndChildWindows = 3
}

enum ImGuiHoveredFlags {
  ImGuiHoveredFlags_None = 0,
  ImGuiHoveredFlags_ChildWindows = 1,
  ImGuiHoveredFlags_RootWindow = 2,
  ImGuiHoveredFlags_AnyWindow = 4,
  ImGuiHoveredFlags_NoPopupHierarchy = 8,
  ImGuiHoveredFlags_AllowWhenBlockedByPopup = 32,
  ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 128,
  ImGuiHoveredFlags_AllowWhenOverlappedByItem = 256,
  ImGuiHoveredFlags_AllowWhenOverlappedByWindow = 512,
  ImGuiHoveredFlags_AllowWhenDisabled = 1024,
  ImGuiHoveredFlags_NoNavOverride = 2048,
  ImGuiHoveredFlags_AllowWhenOverlapped = 768,
  ImGuiHoveredFlags_RectOnly = 928,
  ImGuiHoveredFlags_RootAndChildWindows = 3,
  ImGuiHoveredFlags_ForTooltip = 4096,
  ImGuiHoveredFlags_Stationary = 8192,
  ImGuiHoveredFlags_DelayNone = 16384,
  ImGuiHoveredFlags_DelayShort = 32768,
  ImGuiHoveredFlags_DelayNormal = 65536,
  ImGuiHoveredFlags_NoSharedDelay = 131072
}

enum ImGuiInputFlags {
  ImGuiInputFlags_None = 0,
  ImGuiInputFlags_Repeat = 1,
  ImGuiInputFlags_RouteActive = 1024,
  ImGuiInputFlags_RouteFocused = 2048,
  ImGuiInputFlags_RouteGlobal = 4096,
  ImGuiInputFlags_RouteAlways = 8192,
  ImGuiInputFlags_RouteOverFocused = 16384,
  ImGuiInputFlags_RouteOverActive = 32768,
  ImGuiInputFlags_RouteUnlessBgFocused = 65536,
  ImGuiInputFlags_RouteFromRootWindow = 131072,
  ImGuiInputFlags_Tooltip = 262144
}

enum ImGuiInputTextFlags {
  ImGuiInputTextFlags_None = 0,
  ImGuiInputTextFlags_CharsDecimal = 1,
  ImGuiInputTextFlags_CharsHexadecimal = 2,
  ImGuiInputTextFlags_CharsScientific = 4,
  ImGuiInputTextFlags_CharsUppercase = 8,
  ImGuiInputTextFlags_CharsNoBlank = 16,
  ImGuiInputTextFlags_AllowTabInput = 32,
  ImGuiInputTextFlags_EnterReturnsTrue = 64,
  ImGuiInputTextFlags_EscapeClearsAll = 128,
  ImGuiInputTextFlags_CtrlEnterForNewLine = 256,
  ImGuiInputTextFlags_ReadOnly = 512,
  ImGuiInputTextFlags_Password = 1024,
  ImGuiInputTextFlags_AlwaysOverwrite = 2048,
  ImGuiInputTextFlags_AutoSelectAll = 4096,
  ImGuiInputTextFlags_ParseEmptyRefVal = 8192,
  ImGuiInputTextFlags_DisplayEmptyRefVal = 16384,
  ImGuiInputTextFlags_NoHorizontalScroll = 32768,
  ImGuiInputTextFlags_NoUndoRedo = 65536,
  ImGuiInputTextFlags_ElideLeft = 131072,
  ImGuiInputTextFlags_CallbackCompletion = 262144,
  ImGuiInputTextFlags_CallbackHistory = 524288,
  ImGuiInputTextFlags_CallbackAlways = 1048576,
  ImGuiInputTextFlags_CallbackCharFilter = 2097152,
  ImGuiInputTextFlags_CallbackResize = 4194304,
  ImGuiInputTextFlags_CallbackEdit = 8388608,
  ImGuiInputTextFlags_WordWrap = 16777216
}

enum ImGuiItemFlags {
  ImGuiItemFlags_None = 0,
  ImGuiItemFlags_NoTabStop = 1,
  ImGuiItemFlags_NoNav = 2,
  ImGuiItemFlags_NoNavDefaultFocus = 4,
  ImGuiItemFlags_ButtonRepeat = 8,
  ImGuiItemFlags_AutoClosePopups = 16,
  ImGuiItemFlags_AllowDuplicateId = 32,
  ImGuiItemFlags_Disabled = 64
}

enum ImGuiKey {
  ImGuiKey_None = 0,
  ImGuiKey_NamedKey_BEGIN = 512,
  ImGuiKey_Tab = 512,
  ImGuiKey_LeftArrow = 513,
  ImGuiKey_RightArrow = 514,
  ImGuiKey_UpArrow = 515,
  ImGuiKey_DownArrow = 516,
  ImGuiKey_PageUp = 517,
  ImGuiKey_PageDown = 518,
  ImGuiKey_Home = 519,
  ImGuiKey_End = 520,
  ImGuiKey_Insert = 521,
  ImGuiKey_Delete = 522,
  ImGuiKey_Backspace = 523,
  ImGuiKey_Space = 524,
  ImGuiKey_Enter = 525,
  ImGuiKey_Escape = 526,
  ImGuiKey_LeftCtrl = 527,
  ImGuiKey_LeftShift = 528,
  ImGuiKey_LeftAlt = 529,
  ImGuiKey_LeftSuper = 530,
  ImGuiKey_RightCtrl = 531,
  ImGuiKey_RightShift = 532,
  ImGuiKey_RightAlt = 533,
  ImGuiKey_RightSuper = 534,
  ImGuiKey_Menu = 535,
  ImGuiKey_0 = 536,
  ImGuiKey_1 = 537,
  ImGuiKey_2 = 538,
  ImGuiKey_3 = 539,
  ImGuiKey_4 = 540,
  ImGuiKey_5 = 541,
  ImGuiKey_6 = 542,
  ImGuiKey_7 = 543,
  ImGuiKey_8 = 544,
  ImGuiKey_9 = 545,
  ImGuiKey_A = 546,
  ImGuiKey_B = 547,
  ImGuiKey_C = 548,
  ImGuiKey_D = 549,
  ImGuiKey_E = 550,
  ImGuiKey_F = 551,
  ImGuiKey_G = 552,
  ImGuiKey_H = 553,
  ImGuiKey_I = 554,
  ImGuiKey_J = 555,
  ImGuiKey_K = 556,
  ImGuiKey_L = 557,
  ImGuiKey_M = 558,
  ImGuiKey_N = 559,
  ImGuiKey_O = 560,
  ImGuiKey_P = 561,
  ImGuiKey_Q = 562,
  ImGuiKey_R = 563,
  ImGuiKey_S = 564,
  ImGuiKey_T = 565,
  ImGuiKey_U = 566,
  ImGuiKey_V = 567,
  ImGuiKey_W = 568,
  ImGuiKey_X = 569,
  ImGuiKey_Y = 570,
  ImGuiKey_Z = 571,
  ImGuiKey_F1 = 572,
  ImGuiKey_F2 = 573,
  ImGuiKey_F3 = 574,
  ImGuiKey_F4 = 575,
  ImGuiKey_F5 = 576,
  ImGuiKey_F6 = 577,
  ImGuiKey_F7 = 578,
  ImGuiKey_F8 = 579,
  ImGuiKey_F9 = 580,
  ImGuiKey_F10 = 581,
  ImGuiKey_F11 = 582,
  ImGuiKey_F12 = 583,
  ImGuiKey_F13 = 584,
  ImGuiKey_F14 = 585,
  ImGuiKey_F15 = 586,
  ImGuiKey_F16 = 587,
  ImGuiKey_F17 = 588,
  ImGuiKey_F18 = 589,
  ImGuiKey_F19 = 590,
  ImGuiKey_F20 = 591,
  ImGuiKey_F21 = 592,
  ImGuiKey_F22 = 593,
  ImGuiKey_F23 = 594,
  ImGuiKey_F24 = 595,
  ImGuiKey_Apostrophe = 596,
  ImGuiKey_Comma = 597,
  ImGuiKey_Minus = 598,
  ImGuiKey_Period = 599,
  ImGuiKey_Slash = 600,
  ImGuiKey_Semicolon = 601,
  ImGuiKey_Equal = 602,
  ImGuiKey_LeftBracket = 603,
  ImGuiKey_Backslash = 604,
  ImGuiKey_RightBracket = 605,
  ImGuiKey_GraveAccent = 606,
  ImGuiKey_CapsLock = 607,
  ImGuiKey_ScrollLock = 608,
  ImGuiKey_NumLock = 609,
  ImGuiKey_PrintScreen = 610,
  ImGuiKey_Pause = 611,
  ImGuiKey_Keypad0 = 612,
  ImGuiKey_Keypad1 = 613,
  ImGuiKey_Keypad2 = 614,
  ImGuiKey_Keypad3 = 615,
  ImGuiKey_Keypad4 = 616,
  ImGuiKey_Keypad5 = 617,
  ImGuiKey_Keypad6 = 618,
  ImGuiKey_Keypad7 = 619,
  ImGuiKey_Keypad8 = 620,
  ImGuiKey_Keypad9 = 621,
  ImGuiKey_KeypadDecimal = 622,
  ImGuiKey_KeypadDivide = 623,
  ImGuiKey_KeypadMultiply = 624,
  ImGuiKey_KeypadSubtract = 625,
  ImGuiKey_KeypadAdd = 626,
  ImGuiKey_KeypadEnter = 627,
  ImGuiKey_KeypadEqual = 628,
  ImGuiKey_AppBack = 629,
  ImGuiKey_AppForward = 630,
  ImGuiKey_Oem102 = 631,
  ImGuiKey_GamepadStart = 632,
  ImGuiKey_GamepadBack = 633,
  ImGuiKey_GamepadFaceLeft = 634,
  ImGuiKey_GamepadFaceRight = 635,
  ImGuiKey_GamepadFaceUp = 636,
  ImGuiKey_GamepadFaceDown = 637,
  ImGuiKey_GamepadDpadLeft = 638,
  ImGuiKey_GamepadDpadRight = 639,
  ImGuiKey_GamepadDpadUp = 640,
  ImGuiKey_GamepadDpadDown = 641,
  ImGuiKey_GamepadL1 = 642,
  ImGuiKey_GamepadR1 = 643,
  ImGuiKey_GamepadL2 = 644,
  ImGuiKey_GamepadR2 = 645,
  ImGuiKey_GamepadL3 = 646,
  ImGuiKey_GamepadR3 = 647,
  ImGuiKey_GamepadLStickLeft = 648,
  ImGuiKey_GamepadLStickRight = 649,
  ImGuiKey_GamepadLStickUp = 650,
  ImGuiKey_GamepadLStickDown = 651,
  ImGuiKey_GamepadRStickLeft = 652,
  ImGuiKey_GamepadRStickRight = 653,
  ImGuiKey_GamepadRStickUp = 654,
  ImGuiKey_GamepadRStickDown = 655,
  ImGuiKey_MouseLeft = 656,
  ImGuiKey_MouseRight = 657,
  ImGuiKey_MouseMiddle = 658,
  ImGuiKey_MouseX1 = 659,
  ImGuiKey_MouseX2 = 660,
  ImGuiKey_MouseWheelX = 661,
  ImGuiKey_MouseWheelY = 662,
  ImGuiKey_ReservedForModCtrl = 663,
  ImGuiKey_ReservedForModShift = 664,
  ImGuiKey_ReservedForModAlt = 665,
  ImGuiKey_ReservedForModSuper = 666,
  ImGuiKey_NamedKey_END = 667,
  ImGuiKey_NamedKey_COUNT = 155,
  ImGuiMod_None = 0,
  ImGuiMod_Ctrl = 4096,
  ImGuiMod_Shift = 8192,
  ImGuiMod_Alt = 16384,
  ImGuiMod_Super = 32768,
  ImGuiMod_Mask_ = 61440
}

enum ImGuiMouseButton {
  ImGuiMouseButton_Left = 0,
  ImGuiMouseButton_Right = 1,
  ImGuiMouseButton_Middle = 2,
  ImGuiMouseButton_COUNT = 5
}

enum ImGuiMouseCursor {
  ImGuiMouseCursor_None = -1,
  ImGuiMouseCursor_Arrow = 0,
  ImGuiMouseCursor_TextInput = 1,
  ImGuiMouseCursor_ResizeAll = 2,
  ImGuiMouseCursor_ResizeNS = 3,
  ImGuiMouseCursor_ResizeEW = 4,
  ImGuiMouseCursor_ResizeNESW = 5,
  ImGuiMouseCursor_ResizeNWSE = 6,
  ImGuiMouseCursor_Hand = 7,
  ImGuiMouseCursor_Wait = 8,
  ImGuiMouseCursor_Progress = 9,
  ImGuiMouseCursor_NotAllowed = 10,
  ImGuiMouseCursor_COUNT = 11
}

enum ImGuiPopupFlags {
  ImGuiPopupFlags_None = 0,
  ImGuiPopupFlags_MouseButtonLeft = 4,
  ImGuiPopupFlags_MouseButtonRight = 8,
  ImGuiPopupFlags_MouseButtonMiddle = 12,
  ImGuiPopupFlags_NoReopen = 32,
  ImGuiPopupFlags_NoOpenOverExistingPopup = 128,
  ImGuiPopupFlags_NoOpenOverItems = 256,
  ImGuiPopupFlags_AnyPopupId = 1024,
  ImGuiPopupFlags_AnyPopupLevel = 2048,
  ImGuiPopupFlags_AnyPopup = 3072,
  ImGuiPopupFlags_MouseButtonShift_ = 2,
  ImGuiPopupFlags_MouseButtonMask_ = 12,
  ImGuiPopupFlags_InvalidMask_ = 3
}

enum ImGuiSelectableFlags {
  ImGuiSelectableFlags_None = 0,
  ImGuiSelectableFlags_NoAutoClosePopups = 1,
  ImGuiSelectableFlags_SpanAllColumns = 2,
  ImGuiSelectableFlags_AllowDoubleClick = 4,
  ImGuiSelectableFlags_Disabled = 8,
  ImGuiSelectableFlags_AllowOverlap = 16,
  ImGuiSelectableFlags_Highlight = 32,
  ImGuiSelectableFlags_SelectOnNav = 64
}

enum ImGuiSliderFlags {
  ImGuiSliderFlags_None = 0,
  ImGuiSliderFlags_Logarithmic = 32,
  ImGuiSliderFlags_NoRoundToFormat = 64,
  ImGuiSliderFlags_NoInput = 128,
  ImGuiSliderFlags_WrapAround = 256,
  ImGuiSliderFlags_ClampOnInput = 512,
  ImGuiSliderFlags_ClampZeroRange = 1024,
  ImGuiSliderFlags_NoSpeedTweaks = 2048,
  ImGuiSliderFlags_ColorMarkers = 4096,
  ImGuiSliderFlags_AlwaysClamp = 1536,
  ImGuiSliderFlags_InvalidMask_ = 1879048207
}

enum ImGuiStyleVar {
  ImGuiStyleVar_Alpha = 0,
  ImGuiStyleVar_DisabledAlpha = 1,
  ImGuiStyleVar_WindowPadding = 2,
  ImGuiStyleVar_WindowRounding = 3,
  ImGuiStyleVar_WindowBorderSize = 4,
  ImGuiStyleVar_WindowMinSize = 5,
  ImGuiStyleVar_WindowTitleAlign = 6,
  ImGuiStyleVar_ChildRounding = 7,
  ImGuiStyleVar_ChildBorderSize = 8,
  ImGuiStyleVar_PopupRounding = 9,
  ImGuiStyleVar_PopupBorderSize = 10,
  ImGuiStyleVar_FramePadding = 11,
  ImGuiStyleVar_FrameRounding = 12,
  ImGuiStyleVar_FrameBorderSize = 13,
  ImGuiStyleVar_ItemSpacing = 14,
  ImGuiStyleVar_ItemInnerSpacing = 15,
  ImGuiStyleVar_IndentSpacing = 16,
  ImGuiStyleVar_CellPadding = 17,
  ImGuiStyleVar_ScrollbarSize = 18,
  ImGuiStyleVar_ScrollbarRounding = 19,
  ImGuiStyleVar_ScrollbarPadding = 20,
  ImGuiStyleVar_GrabMinSize = 21,
  ImGuiStyleVar_GrabRounding = 22,
  ImGuiStyleVar_ImageRounding = 23,
  ImGuiStyleVar_ImageBorderSize = 24,
  ImGuiStyleVar_TabRounding = 25,
  ImGuiStyleVar_TabBorderSize = 26,
  ImGuiStyleVar_TabMinWidthBase = 27,
  ImGuiStyleVar_TabMinWidthShrink = 28,
  ImGuiStyleVar_TabBarBorderSize = 29,
  ImGuiStyleVar_TabBarOverlineSize = 30,
  ImGuiStyleVar_TableAngledHeadersAngle = 31,
  ImGuiStyleVar_TableAngledHeadersTextAlign = 32,
  ImGuiStyleVar_TreeLinesSize = 33,
  ImGuiStyleVar_TreeLinesRounding = 34,
  ImGuiStyleVar_ButtonTextAlign = 35,
  ImGuiStyleVar_SelectableTextAlign = 36,
  ImGuiStyleVar_SeparatorTextBorderSize = 37,
  ImGuiStyleVar_SeparatorTextAlign = 38,
  ImGuiStyleVar_SeparatorTextPadding = 39,
  ImGuiStyleVar_COUNT = 41
}

enum ImGuiTabBarFlags {
  ImGuiTabBarFlags_None = 0,
  ImGuiTabBarFlags_Reorderable = 1,
  ImGuiTabBarFlags_AutoSelectNewTabs = 2,
  ImGuiTabBarFlags_TabListPopupButton = 4,
  ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 8,
  ImGuiTabBarFlags_NoTabListScrollingButtons = 16,
  ImGuiTabBarFlags_NoTooltip = 32,
  ImGuiTabBarFlags_DrawSelectedOverline = 64,
  ImGuiTabBarFlags_FittingPolicyMixed = 128,
  ImGuiTabBarFlags_FittingPolicyShrink = 256,
  ImGuiTabBarFlags_FittingPolicyScroll = 512,
  ImGuiTabBarFlags_FittingPolicyMask_ = 896,
  ImGuiTabBarFlags_FittingPolicyDefault_ = 128
}

enum ImGuiTabItemFlags {
  ImGuiTabItemFlags_None = 0,
  ImGuiTabItemFlags_UnsavedDocument = 1,
  ImGuiTabItemFlags_SetSelected = 2,
  ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = 4,
  ImGuiTabItemFlags_NoPushId = 8,
  ImGuiTabItemFlags_NoTooltip = 16,
  ImGuiTabItemFlags_NoReorder = 32,
  ImGuiTabItemFlags_Leading = 64,
  ImGuiTabItemFlags_Trailing = 128,
  ImGuiTabItemFlags_NoAssumedClosure = 256
}

enum ImGuiTableBgTarget {
  ImGuiTableBgTarget_None = 0,
  ImGuiTableBgTarget_RowBg0 = 1,
  ImGuiTableBgTarget_RowBg1 = 2,
  ImGuiTableBgTarget_CellBg = 3
}

enum ImGuiTableColumnFlags {
  ImGuiTableColumnFlags_None = 0,
  ImGuiTableColumnFlags_Disabled = 1,
  ImGuiTableColumnFlags_DefaultHide = 2,
  ImGuiTableColumnFlags_DefaultSort = 4,
  ImGuiTableColumnFlags_WidthStretch = 8,
  ImGuiTableColumnFlags_WidthFixed = 16,
  ImGuiTableColumnFlags_NoResize = 32,
  ImGuiTableColumnFlags_NoReorder = 64,
  ImGuiTableColumnFlags_NoHide = 128,
  ImGuiTableColumnFlags_NoClip = 256,
  ImGuiTableColumnFlags_NoSort = 512,
  ImGuiTableColumnFlags_NoSortAscending = 1024,
  ImGuiTableColumnFlags_NoSortDescending = 2048,
  ImGuiTableColumnFlags_NoHeaderLabel = 4096,
  ImGuiTableColumnFlags_NoHeaderWidth = 8192,
  ImGuiTableColumnFlags_PreferSortAscending = 16384,
  ImGuiTableColumnFlags_PreferSortDescending = 32768,
  ImGuiTableColumnFlags_IndentEnable = 65536,
  ImGuiTableColumnFlags_IndentDisable = 131072,
  ImGuiTableColumnFlags_AngledHeader = 262144,
  ImGuiTableColumnFlags_IsEnabled = 16777216,
  ImGuiTableColumnFlags_IsVisible = 33554432,
  ImGuiTableColumnFlags_IsSorted = 67108864,
  ImGuiTableColumnFlags_IsHovered = 134217728,
  ImGuiTableColumnFlags_WidthMask_ = 24,
  ImGuiTableColumnFlags_IndentMask_ = 196608,
  ImGuiTableColumnFlags_StatusMask_ = 251658240,
  ImGuiTableColumnFlags_NoDirectResize_ = 1073741824
}

enum ImGuiTableFlags {
  ImGuiTableFlags_None = 0,
  ImGuiTableFlags_Resizable = 1,
  ImGuiTableFlags_Reorderable = 2,
  ImGuiTableFlags_Hideable = 4,
  ImGuiTableFlags_Sortable = 8,
  ImGuiTableFlags_NoSavedSettings = 16,
  ImGuiTableFlags_ContextMenuInBody = 32,
  ImGuiTableFlags_RowBg = 64,
  ImGuiTableFlags_BordersInnerH = 128,
  ImGuiTableFlags_BordersOuterH = 256,
  ImGuiTableFlags_BordersInnerV = 512,
  ImGuiTableFlags_BordersOuterV = 1024,
  ImGuiTableFlags_BordersH = 384,
  ImGuiTableFlags_BordersV = 1536,
  ImGuiTableFlags_BordersInner = 640,
  ImGuiTableFlags_BordersOuter = 1280,
  ImGuiTableFlags_Borders = 1920,
  ImGuiTableFlags_NoBordersInBody = 2048,
  ImGuiTableFlags_NoBordersInBodyUntilResize = 4096,
  ImGuiTableFlags_SizingFixedFit = 8192,
  ImGuiTableFlags_SizingFixedSame = 16384,
  ImGuiTableFlags_SizingStretchProp = 24576,
  ImGuiTableFlags_SizingStretchSame = 32768,
  ImGuiTableFlags_NoHostExtendX = 65536,
  ImGuiTableFlags_NoHostExtendY = 131072,
  ImGuiTableFlags_NoKeepColumnsVisible = 262144,
  ImGuiTableFlags_PreciseWidths = 524288,
  ImGuiTableFlags_NoClip = 1048576,
  ImGuiTableFlags_PadOuterX = 2097152,
  ImGuiTableFlags_NoPadOuterX = 4194304,
  ImGuiTableFlags_NoPadInnerX = 8388608,
  ImGuiTableFlags_ScrollX = 16777216,
  ImGuiTableFlags_ScrollY = 33554432,
  ImGuiTableFlags_SortMulti = 67108864,
  ImGuiTableFlags_SortTristate = 134217728,
  ImGuiTableFlags_HighlightHoveredColumn = 268435456,
  ImGuiTableFlags_SizingMask_ = 57344
}

enum ImGuiTableRowFlags {
  ImGuiTableRowFlags_None = 0,
  ImGuiTableRowFlags_Headers = 1
}

enum ImGuiTreeNodeFlags {
  ImGuiTreeNodeFlags_None = 0,
  ImGuiTreeNodeFlags_Selected = 1,
  ImGuiTreeNodeFlags_Framed = 2,
  ImGuiTreeNodeFlags_AllowOverlap = 4,
  ImGuiTreeNodeFlags_NoTreePushOnOpen = 8,
  ImGuiTreeNodeFlags_NoAutoOpenOnLog = 16,
  ImGuiTreeNodeFlags_DefaultOpen = 32,
  ImGuiTreeNodeFlags_OpenOnDoubleClick = 64,
  ImGuiTreeNodeFlags_OpenOnArrow = 128,
  ImGuiTreeNodeFlags_Leaf = 256,
  ImGuiTreeNodeFlags_Bullet = 512,
  ImGuiTreeNodeFlags_FramePadding = 1024,
  ImGuiTreeNodeFlags_SpanAvailWidth = 2048,
  ImGuiTreeNodeFlags_SpanFullWidth = 4096,
  ImGuiTreeNodeFlags_SpanLabelWidth = 8192,
  ImGuiTreeNodeFlags_SpanAllColumns = 16384,
  ImGuiTreeNodeFlags_LabelSpanAllColumns = 32768,
  ImGuiTreeNodeFlags_NavLeftJumpsToParent = 131072,
  ImGuiTreeNodeFlags_CollapsingHeader = 26,
  ImGuiTreeNodeFlags_DrawLinesNone = 262144,
  ImGuiTreeNodeFlags_DrawLinesFull = 524288,
  ImGuiTreeNodeFlags_DrawLinesToNodes = 1048576
}

enum ImGuiViewportFlags {
  ImGuiViewportFlags_None = 0,
  ImGuiViewportFlags_IsPlatformWindow = 1,
  ImGuiViewportFlags_IsPlatformMonitor = 2,
  ImGuiViewportFlags_OwnedByApp = 4
}

enum ImGuiWindowFlags {
  ImGuiWindowFlags_None = 0,
  ImGuiWindowFlags_NoTitleBar = 1,
  ImGuiWindowFlags_NoResize = 2,
  ImGuiWindowFlags_NoMove = 4,
  ImGuiWindowFlags_NoScrollbar = 8,
  ImGuiWindowFlags_NoScrollWithMouse = 16,
  ImGuiWindowFlags_NoCollapse = 32,
  ImGuiWindowFlags_AlwaysAutoResize = 64,
  ImGuiWindowFlags_NoBackground = 128,
  ImGuiWindowFlags_NoSavedSettings = 256,
  ImGuiWindowFlags_NoMouseInputs = 512,
  ImGuiWindowFlags_MenuBar = 1024,
  ImGuiWindowFlags_HorizontalScrollbar = 2048,
  ImGuiWindowFlags_NoFocusOnAppearing = 4096,
  ImGuiWindowFlags_NoBringToFrontOnFocus = 8192,
  ImGuiWindowFlags_AlwaysVerticalScrollbar = 16384,
  ImGuiWindowFlags_AlwaysHorizontalScrollbar = 32768,
  ImGuiWindowFlags_NoNavInputs = 65536,
  ImGuiWindowFlags_NoNavFocus = 131072,
  ImGuiWindowFlags_UnsavedDocument = 262144,
  ImGuiWindowFlags_NoNav = 196608,
  ImGuiWindowFlags_NoDecoration = 43,
  ImGuiWindowFlags_NoInputs = 197120,
  ImGuiWindowFlags_ChildWindow = 16777216,
  ImGuiWindowFlags_Tooltip = 33554432,
  ImGuiWindowFlags_Popup = 67108864,
  ImGuiWindowFlags_Modal = 134217728,
  ImGuiWindowFlags_ChildMenu = 268435456
}

class ImDrawList {
  ImDrawListFlags get_Flags() property;
  void AddLine(const ImVec2 &in p1, const ImVec2 &in p2, uint col, float thickness = 1.0f);
  void AddRect(const ImVec2 &in p_min, const ImVec2 &in p_max, uint col, float rounding = 0.0f, ImDrawFlags flags = ImDrawFlags_None, float thickness = 1.0f);
  void AddRectFilled(const ImVec2 &in p_min, const ImVec2 &in p_max, uint col, float rounding = 0.0f, ImDrawFlags flags = ImDrawFlags_None);
  void AddCircle(const ImVec2 &in center, float radius, uint col, int num_segments = 0, float thickness = 1.0f);
  void AddCircleFilled(const ImVec2 &in center, float radius, uint col, int num_segments = 0);
  void AddTriangle(const ImVec2 &in p1, const ImVec2 &in p2, const ImVec2 &in p3, uint col, float thickness = 1.0f);
  void AddTriangleFilled(const ImVec2 &in p1, const ImVec2 &in p2, const ImVec2 &in p3, uint col);
  void AddQuad(const ImVec2 &in p1, const ImVec2 &in p2, const ImVec2 &in p3, const ImVec2 &in p4, uint col, float thickness = 1.0f);
  void AddQuadFilled(const ImVec2 &in p1, const ImVec2 &in p2, const ImVec2 &in p3, const ImVec2 &in p4, uint col);
  void AddBezierCubic(const ImVec2 &in p1, const ImVec2 &in p2, const ImVec2 &in p3, const ImVec2 &in p4, uint col, float thickness = 1.0f, int num_segments = 0);
  void AddBezierQuadratic(const ImVec2 &in p1, const ImVec2 &in p2, const ImVec2 &in p3, uint col, float thickness = 1.0f, int num_segments = 0);
  void AddNgon(const ImVec2 &in center, float radius, uint col, int num_segments, float thickness = 1.0f);
  void AddNgonFilled(const ImVec2 &in center, float radius, uint col, int num_segments);
  void AddPolyline4(const ImVec2 &in p1, const ImVec2 &in p2, const ImVec2 &in p3, const ImVec2 &in p4, uint col, ImDrawFlags flags = ImDrawFlags_None, float thickness = 1.0f);
  void AddText(const ImVec2 &in pos, uint col, const string &in text);
  void AddImage(CKTexture@ texture, const ImVec2 &in p_min, const ImVec2 &in p_max, const ImVec2 &in uv_min = ImVec2(0,0), const ImVec2 &in uv_max = ImVec2(1,1), uint col = 0xffffffff);
  void PathClear();
  void PathLineTo(const ImVec2 &in pos);
  void PathArcTo(const ImVec2 &in center, float radius, float a_min, float a_max, int num_segments = 0);
  void PathArcToFast(const ImVec2 &in center, float radius, int a_min_of_12, int a_max_of_12);
  void PathBezierCubicCurveTo(const ImVec2 &in p2, const ImVec2 &in p3, const ImVec2 &in p4, int num_segments = 0);
  void PathBezierQuadraticCurveTo(const ImVec2 &in p2, const ImVec2 &in p3, int num_segments = 0);
  void PathRect(const ImVec2 &in rect_min, const ImVec2 &in rect_max, float rounding = 0.0f, ImDrawFlags flags = ImDrawFlags_None);
  void PathFillConvex(uint col);
  void PathStroke(uint col, ImDrawFlags flags = ImDrawFlags_None, float thickness = 1.0f);
}

class ImFont {
  ImFontFlags get_Flags() property;
  float get_CurrentRasterizerDensity() property;
  uint get_FontId() property;
  float get_LegacySize() property;
  uint get_EllipsisChar() property;
  uint get_FallbackChar() property;
  bool get_EllipsisAutoBake() property;
}

class ImGuiIO {
  ImGuiConfigFlags get_ConfigFlags() property;
  ImGuiBackendFlags get_BackendFlags() property;
  ImVec2 get_DisplaySize() property;
  ImVec2 get_DisplayFramebufferScale() property;
  float get_DeltaTime() property;
  bool get_FontAllowUserScaling() property;
  bool get_MouseDrawCursor() property;
  float get_MouseDoubleClickTime() property;
  float get_MouseDoubleClickMaxDist() property;
  float get_MouseDragThreshold() property;
  float get_KeyRepeatDelay() property;
  float get_KeyRepeatRate() property;
  bool get_WantCaptureMouse() property;
  bool get_WantCaptureKeyboard() property;
  bool get_WantTextInput() property;
  bool get_WantSetMousePos() property;
  bool get_WantSaveIniSettings() property;
  bool get_NavActive() property;
  bool get_NavVisible() property;
  float get_Framerate() property;
  int get_MetricsRenderVertices() property;
  int get_MetricsRenderIndices() property;
  int get_MetricsRenderWindows() property;
  int get_MetricsActiveWindows() property;
  ImVec2 get_MouseDelta() property;
  ImVec2 get_MousePos() property;
  float get_MouseWheel() property;
}

class ImGuiStorage {
}

class ImGuiStyle {
  float get_Alpha() property;
  float get_DisabledAlpha() property;
  ImVec2 get_WindowPadding() property;
  float get_WindowRounding() property;
  float get_WindowBorderSize() property;
  ImVec2 get_WindowMinSize() property;
  ImVec2 get_WindowTitleAlign() property;
  ImGuiDir get_WindowMenuButtonPosition() property;
  float get_ChildRounding() property;
  float get_ChildBorderSize() property;
  float get_PopupRounding() property;
  float get_PopupBorderSize() property;
  ImVec2 get_FramePadding() property;
  float get_FrameRounding() property;
  float get_FrameBorderSize() property;
  ImVec2 get_ItemSpacing() property;
  ImVec2 get_ItemInnerSpacing() property;
  ImVec2 get_CellPadding() property;
  float get_IndentSpacing() property;
  float get_ScrollbarSize() property;
  float get_ScrollbarRounding() property;
  float get_GrabMinSize() property;
  float get_GrabRounding() property;
  float get_LogSliderDeadzone() property;
  float get_ImageRounding() property;
  float get_ImageBorderSize() property;
  float get_TabRounding() property;
  float get_TabBorderSize() property;
  ImGuiDir get_ColorButtonPosition() property;
  ImVec2 get_ButtonTextAlign() property;
  ImVec2 get_SelectableTextAlign() property;
  ImVec2 get_DisplayWindowPadding() property;
  ImVec2 get_DisplaySafeAreaPadding() property;
  float get_MouseCursorScale() property;
  bool get_AntiAliasedLines() property;
  bool get_AntiAliasedLinesUseTex() property;
  bool get_AntiAliasedFill() property;
  float get_CurveTessellationTol() property;
  float get_CircleTessellationMaxError() property;
}

class ImGuiViewport {
  uint get_ID() property;
  ImGuiViewportFlags get_Flags() property;
  ImVec2 get_Pos() property;
  ImVec2 get_Size() property;
  ImVec2 get_FramebufferScale() property;
  ImVec2 get_WorkPos() property;
  ImVec2 get_WorkSize() property;
}

namespace ImGui {
  bool Begin(const string &in name, ImGuiWindowFlags flags = ImGuiWindowFlags_None);
  ImVec2 CalcTextSize(const string &in text, bool hide_text_after_double_hash = false, float wrap_width = -1.0f);
  void TextUnformatted(const string &in text);
  void TextUnformattedRange(const string &in text, uint length);
  ImVec4 GetStyleColorVec4(ImGuiCol idx);
  bool SliderScalarFloat(const string &in label, float &inout v, float v_min, float v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragScalarFloat(const string &in label, float &inout v, float v_speed, float v_min, float v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool InputScalarFloat(const string &in label, float &inout v, float step, float step_fast, const string &in format = "", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool SliderScalarDouble(const string &in label, double &inout v, double v_min, double v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragScalarDouble(const string &in label, double &inout v, float v_speed, double v_min, double v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool InputScalarDouble(const string &in label, double &inout v, double step, double step_fast, const string &in format = "", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool SliderScalarInt(const string &in label, int &inout v, int v_min, int v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragScalarInt(const string &in label, int &inout v, float v_speed, int v_min, int v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool InputScalarInt(const string &in label, int &inout v, int step, int step_fast, const string &in format = "", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool SliderScalarUInt(const string &in label, uint &inout v, uint v_min, uint v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragScalarUInt(const string &in label, uint &inout v, float v_speed, uint v_min, uint v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool InputScalarUInt(const string &in label, uint &inout v, uint step, uint step_fast, const string &in format = "", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool SliderScalarInt64(const string &in label, int64 &inout v, int64 v_min, int64 v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragScalarInt64(const string &in label, int64 &inout v, float v_speed, int64 v_min, int64 v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool InputScalarInt64(const string &in label, int64 &inout v, int64 step, int64 step_fast, const string &in format = "", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool SliderScalarUInt64(const string &in label, uint64 &inout v, uint64 v_min, uint64 v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragScalarUInt64(const string &in label, uint64 &inout v, float v_speed, uint64 v_min, uint64 v_max, const string &in format = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool InputScalarUInt64(const string &in label, uint64 &inout v, uint64 step, uint64 step_fast, const string &in format = "", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool SetDragDropPayloadString(const string &in type, const string &in payload, ImGuiCond cond = ImGuiCond_None);
  bool AcceptDragDropPayloadString(const string &in type, string &out payload, ImGuiDragDropFlags flags = ImGuiDragDropFlags_None);
  bool ComboText(const string &in label, int &inout current_item, const string &in newline_separated_items, int popup_max_height_in_items = -1);
  bool ListBoxText(const string &in label, int &inout current_item, const string &in newline_separated_items, int height_in_items = -1);
  bool ColorPicker4(const string &in label, ImVec4 &inout col, ImGuiColorEditFlags flags = ImGuiColorEditFlags_None);
  void Image(CKTexture@ texture, const ImVec2 &in size, const ImVec2 &in uv0 = ImVec2(0,0), const ImVec2 &in uv1 = ImVec2(1,1));
  void ImageWithBg(CKTexture@ texture, const ImVec2 &in size, const ImVec2 &in uv0 = ImVec2(0,0), const ImVec2 &in uv1 = ImVec2(1,1), const ImVec4 &in bg_col = ImVec4(0,0,0,0), const ImVec4 &in tint_col = ImVec4(1,1,1,1));
  bool ImageButton(const string &in id, CKTexture@ texture, const ImVec2 &in size, const ImVec2 &in uv0 = ImVec2(0,0), const ImVec2 &in uv1 = ImVec2(1,1), const ImVec4 &in bg_col = ImVec4(0,0,0,0), const ImVec4 &in tint_col = ImVec4(1,1,1,1));
  ImDrawList@ GetBackgroundDrawList();
  ImDrawList@ GetForegroundDrawList();
  void AlignTextToFramePadding();
  bool ArrowButton(const string &in str_id, ImGuiDir dir);
  bool Begin(const string &in name, bool &inout p_open, ImGuiWindowFlags flags = ImGuiWindowFlags_None);
  bool BeginChild(const string &in str_id, const ImVec2 &in size = ImVec2(0,0), ImGuiChildFlags child_flags = ImGuiChildFlags_None, ImGuiWindowFlags window_flags = ImGuiWindowFlags_None);
  bool BeginChild(uint id, const ImVec2 &in size = ImVec2(0,0), ImGuiChildFlags child_flags = ImGuiChildFlags_None, ImGuiWindowFlags window_flags = ImGuiWindowFlags_None);
  bool BeginCombo(const string &in label, const string &in preview_value, ImGuiComboFlags flags = ImGuiComboFlags_None);
  void BeginDisabled(bool disabled = true);
  bool BeginDragDropSource(ImGuiDragDropFlags flags = ImGuiDragDropFlags_None);
  bool BeginDragDropTarget();
  void BeginGroup();
  bool BeginItemTooltip();
  bool BeginListBox(const string &in label, const ImVec2 &in size = ImVec2(0,0));
  bool BeginMainMenuBar();
  bool BeginMenu(const string &in label, bool enabled = true);
  bool BeginMenuBar();
  bool BeginPopup(const string &in str_id, ImGuiWindowFlags flags = ImGuiWindowFlags_None);
  bool BeginPopupContextItem(const string &in str_id = "", ImGuiPopupFlags popup_flags = ImGuiPopupFlags_None);
  bool BeginPopupContextVoid(const string &in str_id = "", ImGuiPopupFlags popup_flags = ImGuiPopupFlags_None);
  bool BeginPopupContextWindow(const string &in str_id = "", ImGuiPopupFlags popup_flags = ImGuiPopupFlags_None);
  bool BeginPopupModal(const string &in name, bool &inout p_open, ImGuiWindowFlags flags = ImGuiWindowFlags_None);
  bool BeginTabBar(const string &in str_id, ImGuiTabBarFlags flags = ImGuiTabBarFlags_None);
  bool BeginTabItem(const string &in label, bool &inout p_open, ImGuiTabItemFlags flags = ImGuiTabItemFlags_None);
  bool BeginTable(const string &in str_id, int columns, ImGuiTableFlags flags = ImGuiTableFlags_None, const ImVec2 &in outer_size = ImVec2(0.0f,0.0f), float inner_width = 0.0);
  bool BeginTooltip();
  void Bullet();
  bool Button(const string &in label, const ImVec2 &in size = ImVec2(0,0));
  float CalcItemWidth();
  bool Checkbox(const string &in label, bool &inout v);
  bool CheckboxFlags(const string &in label, int &inout flags, int flags_value);
  bool CheckboxFlags(const string &in label, uint &inout flags, uint flags_value);
  void CloseCurrentPopup();
  bool CollapsingHeader(const string &in label, ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_None);
  bool CollapsingHeader(const string &in label, bool &inout p_visible, ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_None);
  bool ColorButton(const string &in desc_id, const ImVec4 &in col, ImGuiColorEditFlags flags = ImGuiColorEditFlags_None, const ImVec2 &in size = ImVec2(0,0));
  uint ColorConvertFloat4ToU32(const ImVec4 &in in_value);
  void ColorConvertHSVtoRGB(float h, float s, float v, float &inout out_r, float &inout out_g, float &inout out_b);
  void ColorConvertRGBtoHSV(float r, float g, float b, float &inout out_h, float &inout out_s, float &inout out_v);
  ImVec4 ColorConvertU32ToFloat4(uint in_value);
  bool ColorEdit3(const string &in label, ImVec3 &inout col, ImGuiColorEditFlags flags = ImGuiColorEditFlags_None);
  bool ColorEdit4(const string &in label, ImVec4 &inout col, ImGuiColorEditFlags flags = ImGuiColorEditFlags_None);
  bool ColorPicker3(const string &in label, ImVec3 &inout col, ImGuiColorEditFlags flags = ImGuiColorEditFlags_None);
  void Columns(int count = 1, const string &in id = "", bool borders = true);
  bool Combo(const string &in label, int &inout current_item, const string &in items_separated_by_zeros, int popup_max_height_in_items = -1);
  bool DragFloat(const string &in label, float &inout v, float v_speed = 1.0, float v_min = 0.0, float v_max = 0.0, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragFloat2(const string &in label, ImVec2 &inout v, float v_speed = 1.0, float v_min = 0.0, float v_max = 0.0, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragFloat3(const string &in label, ImVec3 &inout v, float v_speed = 1.0, float v_min = 0.0, float v_max = 0.0, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragFloat4(const string &in label, ImVec4 &inout v, float v_speed = 1.0, float v_min = 0.0, float v_max = 0.0, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragFloatRange2(const string &in label, float &inout v_current_min, float &inout v_current_max, float v_speed = 1.0, float v_min = 0.0, float v_max = 0.0, const string &in format = "%.3f", const string &in format_max = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragInt(const string &in label, int &inout v, float v_speed = 1.0, int v_min = 0, int v_max = 0, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragInt2(const string &in label, ImGuiInt2 &inout v, float v_speed = 1.0, int v_min = 0, int v_max = 0, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragInt3(const string &in label, ImGuiInt3 &inout v, float v_speed = 1.0, int v_min = 0, int v_max = 0, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragInt4(const string &in label, ImGuiInt4 &inout v, float v_speed = 1.0, int v_min = 0, int v_max = 0, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool DragIntRange2(const string &in label, int &inout v_current_min, int &inout v_current_max, float v_speed = 1.0, int v_min = 0, int v_max = 0, const string &in format = "%d", const string &in format_max = "", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  void Dummy(const ImVec2 &in size);
  void End();
  void EndChild();
  void EndCombo();
  void EndDisabled();
  void EndDragDropSource();
  void EndDragDropTarget();
  void EndGroup();
  void EndListBox();
  void EndMainMenuBar();
  void EndMenu();
  void EndMenuBar();
  void EndPopup();
  void EndTabBar();
  void EndTabItem();
  void EndTable();
  void EndTooltip();
  string GetClipboardText();
  uint GetColorU32(ImGuiCol idx, float alpha_mul = 1.0);
  uint GetColorU32(const ImVec4 &in col);
  uint GetColorU32(uint col, float alpha_mul = 1.0);
  int GetColumnIndex();
  float GetColumnOffset(int column_index = -1);
  float GetColumnWidth(int column_index = -1);
  int GetColumnsCount();
  ImVec2 GetContentRegionAvail();
  ImVec2 GetCursorPos();
  float GetCursorPosX();
  float GetCursorPosY();
  ImVec2 GetCursorScreenPos();
  ImVec2 GetCursorStartPos();
  ImFont@ GetFont();
  float GetFontSize();
  ImVec2 GetFontTexUvWhitePixel();
  int GetFrameCount();
  float GetFrameHeight();
  float GetFrameHeightWithSpacing();
  uint GetID(const string &in str_id);
  uint GetID(const string &in str_id_begin, const string &in str_id_end);
  uint GetID(int int_id);
  ImGuiIO@ GetIO();
  ImGuiItemFlags GetItemFlags();
  uint GetItemID();
  ImVec2 GetItemRectMax();
  ImVec2 GetItemRectMin();
  ImVec2 GetItemRectSize();
  string GetKeyName(ImGuiKey key);
  int GetKeyPressedAmount(ImGuiKey key, float repeat_delay, float rate);
  ImGuiViewport@ GetMainViewport();
  int GetMouseClickedCount(ImGuiMouseButton button);
  ImGuiMouseCursor GetMouseCursor();
  ImVec2 GetMouseDragDelta(ImGuiMouseButton button = ImGuiMouseButton_Left, float lock_threshold = -1.0);
  ImVec2 GetMousePos();
  ImVec2 GetMousePosOnOpeningCurrentPopup();
  float GetScrollMaxX();
  float GetScrollMaxY();
  float GetScrollX();
  float GetScrollY();
  ImGuiStorage@ GetStateStorage();
  ImGuiStyle@ GetStyle();
  string GetStyleColorName(ImGuiCol idx);
  float GetTextLineHeight();
  float GetTextLineHeightWithSpacing();
  double GetTime();
  float GetTreeNodeToLabelSpacing();
  string GetVersion();
  ImDrawList@ GetWindowDrawList();
  float GetWindowHeight();
  ImVec2 GetWindowPos();
  ImVec2 GetWindowSize();
  float GetWindowWidth();
  void Indent(float indent_w = 0.0);
  bool InputDouble(const string &in label, double &inout v, double step = 0.0, double step_fast = 0.0, const string &in format = "%.6f", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputFloat(const string &in label, float &inout v, float step = 0.0, float step_fast = 0.0, const string &in format = "%.3f", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputFloat2(const string &in label, ImVec2 &inout v, const string &in format = "%.3f", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputFloat3(const string &in label, ImVec3 &inout v, const string &in format = "%.3f", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputFloat4(const string &in label, ImVec4 &inout v, const string &in format = "%.3f", ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputInt(const string &in label, int &inout v, int step = 1, int step_fast = 100, ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputInt2(const string &in label, ImGuiInt2 &inout v, ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputInt3(const string &in label, ImGuiInt3 &inout v, ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputInt4(const string &in label, ImGuiInt4 &inout v, ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputText(const string &in label, string &inout buf, uint buf_size = 256, ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputTextMultiline(const string &in label, string &inout buf, uint buf_size = 256, const ImVec2 &in size = ImVec2(0,0), ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InputTextWithHint(const string &in label, const string &in hint, string &inout buf, uint buf_size = 256, ImGuiInputTextFlags flags = ImGuiInputTextFlags_None);
  bool InvisibleButton(const string &in str_id, const ImVec2 &in size, ImGuiButtonFlags flags = ImGuiButtonFlags_None);
  bool IsAnyItemActive();
  bool IsAnyItemFocused();
  bool IsAnyItemHovered();
  bool IsAnyMouseDown();
  bool IsItemActivated();
  bool IsItemActive();
  bool IsItemClicked(ImGuiMouseButton mouse_button = ImGuiMouseButton_Left);
  bool IsItemDeactivated();
  bool IsItemDeactivatedAfterEdit();
  bool IsItemEdited();
  bool IsItemFocused();
  bool IsItemHovered(ImGuiHoveredFlags flags = ImGuiHoveredFlags_None);
  bool IsItemToggledOpen();
  bool IsItemToggledSelection();
  bool IsItemVisible();
  bool IsKeyChordPressed(int key_chord);
  bool IsKeyDown(ImGuiKey key);
  bool IsKeyPressed(ImGuiKey key, bool repeat = true);
  bool IsKeyReleased(ImGuiKey key);
  bool IsMouseClicked(ImGuiMouseButton button, bool repeat = false);
  bool IsMouseDoubleClicked(ImGuiMouseButton button);
  bool IsMouseDown(ImGuiMouseButton button);
  bool IsMouseDragging(ImGuiMouseButton button, float lock_threshold = -1.0);
  bool IsMouseHoveringRect(const ImVec2 &in r_min, const ImVec2 &in r_max, bool clip = true);
  bool IsMousePosValid();
  bool IsMouseReleased(ImGuiMouseButton button);
  bool IsMouseReleasedWithDelay(ImGuiMouseButton button, float delay);
  bool IsPopupOpen(const string &in str_id, ImGuiPopupFlags flags = ImGuiPopupFlags_None);
  bool IsRectVisible(const ImVec2 &in size);
  bool IsRectVisible(const ImVec2 &in rect_min, const ImVec2 &in rect_max);
  bool IsWindowAppearing();
  bool IsWindowCollapsed();
  bool IsWindowFocused(ImGuiFocusedFlags flags = ImGuiFocusedFlags_None);
  bool IsWindowHovered(ImGuiHoveredFlags flags = ImGuiHoveredFlags_None);
  void LoadIniSettingsFromDisk(const string &in ini_filename);
  void LoadIniSettingsFromMemory(const string &in ini_data, uint ini_size = 0);
  void LogButtons();
  void LogFinish();
  void LogToClipboard(int auto_open_depth = -1);
  void LogToFile(int auto_open_depth = -1, const string &in filename = "");
  void LogToTTY(int auto_open_depth = -1);
  bool MenuItem(const string &in label, const string &in shortcut = "", bool selected = false, bool enabled = true);
  bool MenuItem(const string &in label, const string &in shortcut, bool &inout p_selected, bool enabled = true);
  void NewLine();
  void NextColumn();
  void OpenPopup(const string &in str_id, ImGuiPopupFlags popup_flags = ImGuiPopupFlags_None);
  void OpenPopup(uint id, ImGuiPopupFlags popup_flags = ImGuiPopupFlags_None);
  void OpenPopupOnItemClick(const string &in str_id = "", ImGuiPopupFlags popup_flags = ImGuiPopupFlags_None);
  void PlotHistogram(const string &in label, float &inout values, int values_count, int values_offset, const string &in overlay_text, float scale_min, float scale_max, const ImVec2 &in graph_size, int stride);
  void PlotLines(const string &in label, float &inout values, int values_count, int values_offset, const string &in overlay_text, float scale_min, float scale_max, const ImVec2 &in graph_size, int stride);
  void PopClipRect();
  void PopFont();
  void PopID();
  void PopItemFlag();
  void PopItemWidth();
  void PopStyleColor(int count = 1);
  void PopStyleVar(int count = 1);
  void PopTextWrapPos();
  void ProgressBar(float fraction, const ImVec2 &in size_arg = ImVec2(-3.402823466e38f,0), const string &in overlay = "");
  void PushClipRect(const ImVec2 &in clip_rect_min, const ImVec2 &in clip_rect_max, bool intersect_with_current_clip_rect);
  void PushFont(ImFont@ font, float font_size_base_unscaled);
  void PushID(const string &in str_id);
  void PushID(const string &in str_id_begin, const string &in str_id_end);
  void PushID(int int_id);
  void PushItemFlag(ImGuiItemFlags option, bool enabled);
  void PushItemWidth(float item_width);
  void PushStyleColor(ImGuiCol idx, uint col);
  void PushStyleColor(ImGuiCol idx, const ImVec4 &in col);
  void PushStyleVar(ImGuiStyleVar idx, float val);
  void PushStyleVar(ImGuiStyleVar idx, const ImVec2 &in val);
  void PushStyleVarX(ImGuiStyleVar idx, float val_x);
  void PushStyleVarY(ImGuiStyleVar idx, float val_y);
  void PushTextWrapPos(float wrap_local_pos_x = 0.0);
  bool RadioButton(const string &in label, bool active);
  bool RadioButton(const string &in label, int &inout v, int v_button);
  void ResetMouseDragDelta(ImGuiMouseButton button = ImGuiMouseButton_Left);
  void SameLine(float offset_from_start_x = 0.0, float spacing = -1.0);
  void SaveIniSettingsToDisk(const string &in ini_filename);
  bool Selectable(const string &in label, bool selected = false, ImGuiSelectableFlags flags = ImGuiSelectableFlags_None, const ImVec2 &in size = ImVec2(0,0));
  bool Selectable(const string &in label, bool &inout p_selected, ImGuiSelectableFlags flags = ImGuiSelectableFlags_None, const ImVec2 &in size = ImVec2(0,0));
  void Separator();
  void SeparatorText(const string &in label);
  void SetClipboardText(const string &in text);
  void SetColorEditOptions(ImGuiColorEditFlags flags);
  void SetColumnOffset(int column_index, float offset_x);
  void SetColumnWidth(int column_index, float width);
  void SetCursorPos(const ImVec2 &in local_pos);
  void SetCursorPosX(float local_x);
  void SetCursorPosY(float local_y);
  void SetCursorScreenPos(const ImVec2 &in pos);
  void SetItemDefaultFocus();
  void SetItemKeyOwner(ImGuiKey key);
  void SetKeyboardFocusHere(int offset = 0);
  void SetMouseCursor(ImGuiMouseCursor cursor_type);
  void SetNavCursorVisible(bool visible);
  void SetNextFrameWantCaptureKeyboard(bool want_capture_keyboard);
  void SetNextFrameWantCaptureMouse(bool want_capture_mouse);
  void SetNextItemAllowOverlap();
  void SetNextItemOpen(bool is_open, ImGuiCond cond = ImGuiCond_None);
  void SetNextItemSelectionUserData(int64 selection_user_data);
  void SetNextItemShortcut(int key_chord, ImGuiInputFlags flags = ImGuiInputFlags_None);
  void SetNextItemStorageID(uint storage_id);
  void SetNextItemWidth(float item_width);
  void SetNextWindowBgAlpha(float alpha);
  void SetNextWindowCollapsed(bool collapsed, ImGuiCond cond = ImGuiCond_None);
  void SetNextWindowContentSize(const ImVec2 &in size);
  void SetNextWindowFocus();
  void SetNextWindowPos(const ImVec2 &in pos, ImGuiCond cond = ImGuiCond_None, const ImVec2 &in pivot = ImVec2(0,0));
  void SetNextWindowScroll(const ImVec2 &in scroll);
  void SetNextWindowSize(const ImVec2 &in size, ImGuiCond cond = ImGuiCond_None);
  void SetNextWindowSizeConstraints(const ImVec2 &in size_min, const ImVec2 &in size_max);
  void SetScrollFromPosX(float local_x, float center_x_ratio = 0.5);
  void SetScrollFromPosY(float local_y, float center_y_ratio = 0.5);
  void SetScrollHereX(float center_x_ratio = 0.5);
  void SetScrollHereY(float center_y_ratio = 0.5);
  void SetScrollX(float scroll_x);
  void SetScrollY(float scroll_y);
  void SetStateStorage(ImGuiStorage@ storage);
  void SetTabItemClosed(const string &in tab_or_docked_window_label);
  void SetWindowCollapsed(bool collapsed, ImGuiCond cond = ImGuiCond_None);
  void SetWindowCollapsed(const string &in name, bool collapsed, ImGuiCond cond = ImGuiCond_None);
  void SetWindowFocus();
  void SetWindowFocus(const string &in name);
  void SetWindowPos(const ImVec2 &in pos, ImGuiCond cond = ImGuiCond_None);
  void SetWindowPos(const string &in name, const ImVec2 &in pos, ImGuiCond cond = ImGuiCond_None);
  void SetWindowSize(const ImVec2 &in size, ImGuiCond cond = ImGuiCond_None);
  void SetWindowSize(const string &in name, const ImVec2 &in size, ImGuiCond cond = ImGuiCond_None);
  bool Shortcut(int key_chord, ImGuiInputFlags flags = ImGuiInputFlags_None);
  void ShowAboutWindow(bool &inout p_open);
  void ShowDemoWindow(bool &inout p_open);
  void ShowFontSelector(const string &in label);
  void ShowIDStackToolWindow(bool &inout p_open);
  void ShowMetricsWindow(bool &inout p_open);
  void ShowStyleEditor(ImGuiStyle@ ref = null);
  bool ShowStyleSelector(const string &in label);
  void ShowUserGuide();
  bool SliderAngle(const string &in label, float &inout v_rad, float v_degrees_min = -360.0, float v_degrees_max = +360.0, const string &in format = "%.0f deg", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SliderFloat(const string &in label, float &inout v, float v_min, float v_max, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SliderFloat2(const string &in label, ImVec2 &inout v, float v_min, float v_max, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SliderFloat3(const string &in label, ImVec3 &inout v, float v_min, float v_max, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SliderFloat4(const string &in label, ImVec4 &inout v, float v_min, float v_max, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SliderInt(const string &in label, int &inout v, int v_min, int v_max, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SliderInt2(const string &in label, ImGuiInt2 &inout v, int v_min, int v_max, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SliderInt3(const string &in label, ImGuiInt3 &inout v, int v_min, int v_max, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SliderInt4(const string &in label, ImGuiInt4 &inout v, int v_min, int v_max, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool SmallButton(const string &in label);
  void Spacing();
  void StyleColorsClassic(ImGuiStyle@ dst = null);
  void StyleColorsDark(ImGuiStyle@ dst = null);
  void StyleColorsLight(ImGuiStyle@ dst = null);
  bool TabItemButton(const string &in label, ImGuiTabItemFlags flags = ImGuiTabItemFlags_None);
  void TableAngledHeadersRow();
  int TableGetColumnCount();
  ImGuiTableColumnFlags TableGetColumnFlags(int column_n = -1);
  int TableGetColumnIndex();
  string TableGetColumnName(int column_n = -1);
  int TableGetHoveredColumn();
  int TableGetRowIndex();
  void TableHeader(const string &in label);
  void TableHeadersRow();
  bool TableNextColumn();
  void TableNextRow(ImGuiTableRowFlags row_flags = ImGuiTableRowFlags_None, float min_row_height = 0.0);
  void TableSetBgColor(ImGuiTableBgTarget target, uint color, int column_n = -1);
  void TableSetColumnEnabled(int column_n, bool v);
  bool TableSetColumnIndex(int column_n);
  void TableSetupColumn(const string &in label, ImGuiTableColumnFlags flags = ImGuiTableColumnFlags_None, float init_width_or_weight = 0.0, uint user_id = 0);
  void TableSetupScrollFreeze(int cols, int rows);
  bool TextLink(const string &in label);
  bool TextLinkOpenURL(const string &in label, const string &in url = "");
  bool TreeNode(const string &in label);
  bool TreeNodeEx(const string &in label, ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_None);
  void TreePop();
  void TreePush(const string &in str_id);
  void Unindent(float indent_w = 0.0);
  bool VSliderFloat(const string &in label, const ImVec2 &in size, float &inout v, float v_min, float v_max, const string &in format = "%.3f", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  bool VSliderInt(const string &in label, const ImVec2 &in size, int &inout v, int v_min, int v_max, const string &in format = "%d", ImGuiSliderFlags flags = ImGuiSliderFlags_None);
  void Value(const string &in prefix, bool b);
  void Value(const string &in prefix, int v);
  void Value(const string &in prefix, uint v);
  void Value(const string &in prefix, float v, const string &in float_format = "");
}
