# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.2.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _sgd
else:
    import _sgd

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


TRUE = _sgd.TRUE
FALSE = _sgd.FALSE
PI = _sgd.PI
TWO_PI = _sgd.TWO_PI
HALF_PI = _sgd.HALF_PI
DEGREES_TO_RADIANS = _sgd.DEGREES_TO_RADIANS
RADIANS_TO_DEGREES = _sgd.RADIANS_TO_DEGREES

def Init():
    return _sgd.Init()

def Terminate():
    return _sgd.Terminate()

def SetConfigVar(name, value):
    return _sgd.SetConfigVar(name, value)

def SetErrorHandler(handler, context):
    return _sgd.SetErrorHandler(handler, context)

def Error(error):
    return _sgd.Error(error)

def Alert(message):
    return _sgd.Alert(message)

def Log(line):
    return _sgd.Log(line)

def GetDesktopWidth():
    return _sgd.GetDesktopWidth()

def GetDesktopHeight():
    return _sgd.GetDesktopHeight()
EVENT_MASK_CLOSE_CLICKED = _sgd.EVENT_MASK_CLOSE_CLICKED
EVENT_MASK_SIZE_CHANGED = _sgd.EVENT_MASK_SIZE_CHANGED
EVENT_MASK_LOST_FOCUS = _sgd.EVENT_MASK_LOST_FOCUS
EVENT_MASK_GOT_FOCUS = _sgd.EVENT_MASK_GOT_FOCUS
EVENT_MASK_SUSPENDED = _sgd.EVENT_MASK_SUSPENDED
EVENT_MASK_RESUMED = _sgd.EVENT_MASK_RESUMED

def PollEvents():
    return _sgd.PollEvents()

def DebugMemory():
    return _sgd.DebugMemory()
WINDOW_STATE_CLOSED = _sgd.WINDOW_STATE_CLOSED
WINDOW_STATE_MINIMIZED = _sgd.WINDOW_STATE_MINIMIZED
WINDOW_STATE_NORMAL = _sgd.WINDOW_STATE_NORMAL
WINDOW_STATE_MAXIMIZED = _sgd.WINDOW_STATE_MAXIMIZED
WINDOW_STATE_FULLSCREEN = _sgd.WINDOW_STATE_FULLSCREEN
WINDOW_FLAGS_FULLSCREEN = _sgd.WINDOW_FLAGS_FULLSCREEN
WINDOW_FLAGS_RESIZABLE = _sgd.WINDOW_FLAGS_RESIZABLE
WINDOW_FLAGS_CENTERED = _sgd.WINDOW_FLAGS_CENTERED
WINDOW_FLAGS_FULLSCREEN_60HZ = _sgd.WINDOW_FLAGS_FULLSCREEN_60HZ

def CreateWindow(width, height, title, flags):
    return _sgd.CreateWindow(width, height, title, flags)

def DestroyWindow():
    return _sgd.DestroyWindow()

def SetWindowPosition(x, y):
    return _sgd.SetWindowPosition(x, y)

def GetWindowX():
    return _sgd.GetWindowX()

def GetWindowY():
    return _sgd.GetWindowY()

def SetWindowSize(width, height):
    return _sgd.SetWindowSize(width, height)

def GetWindowWidth():
    return _sgd.GetWindowWidth()

def GetWindowHeight():
    return _sgd.GetWindowHeight()

def SetWindowTitle(title):
    return _sgd.SetWindowTitle(title)

def GetWindowTitle():
    return _sgd.GetWindowTitle()

def SetFullscreenMode(width, height, hertz):
    return _sgd.SetFullscreenMode(width, height, hertz)

def SetWindowState(state):
    return _sgd.SetWindowState(state)

def GetWindowState():
    return _sgd.GetWindowState()

def IsKeyDown(keyCode):
    return _sgd.IsKeyDown(keyCode)

def IsKeyHit(keyCode):
    return _sgd.IsKeyHit(keyCode)

def GetChar():
    return _sgd.GetChar()

def FlushChars():
    return _sgd.FlushChars()

def GetMouseX():
    return _sgd.GetMouseX()

def GetMouseY():
    return _sgd.GetMouseY()

def GetMouseZ():
    return _sgd.GetMouseZ()

def GetMouseVX():
    return _sgd.GetMouseVX()

def GetMouseVY():
    return _sgd.GetMouseVY()

def GetMouseVZ():
    return _sgd.GetMouseVZ()

def SetMouseZ(z):
    return _sgd.SetMouseZ(z)
MOUSE_CURSOR_MODE_NORMAL = _sgd.MOUSE_CURSOR_MODE_NORMAL
MOUSE_CURSOR_MODE_HIDDEN = _sgd.MOUSE_CURSOR_MODE_HIDDEN
MOUSE_CURSOR_MODE_DISABLED = _sgd.MOUSE_CURSOR_MODE_DISABLED
MOUSE_CURSOR_MODE_CAPTURED = _sgd.MOUSE_CURSOR_MODE_CAPTURED

def SetMouseCursorMode(cursorMode):
    return _sgd.SetMouseCursorMode(cursorMode)

def IsMouseButtonDown(button):
    return _sgd.IsMouseButtonDown(button)

def IsMouseButtonHit(button):
    return _sgd.IsMouseButtonHit(button)

def IsGamepadConnected(gamepad):
    return _sgd.IsGamepadConnected(gamepad)

def IsGamepadButtonDown(gamepad, button):
    return _sgd.IsGamepadButtonDown(gamepad, button)

def IsGamepadButtonHit(gamepad, button):
    return _sgd.IsGamepadButtonHit(gamepad, button)

def GetGamepadAxis(gamepad, axis):
    return _sgd.GetGamepadAxis(gamepad, axis)
TEXTURE_FORMAT_R8 = _sgd.TEXTURE_FORMAT_R8
TEXTURE_FORMAT_RG8 = _sgd.TEXTURE_FORMAT_RG8
TEXTURE_FORMAT_RGBA8 = _sgd.TEXTURE_FORMAT_RGBA8
TEXTURE_FORMAT_SRGBA8 = _sgd.TEXTURE_FORMAT_SRGBA8
TEXTURE_FORMAT_RGBA16F = _sgd.TEXTURE_FORMAT_RGBA16F
TEXTURE_FORMAT_DEPTH32F = _sgd.TEXTURE_FORMAT_DEPTH32F
TEXTURE_FLAGS_NONE = _sgd.TEXTURE_FLAGS_NONE
TEXTURE_FLAGS_CLAMP_U = _sgd.TEXTURE_FLAGS_CLAMP_U
TEXTURE_FLAGS_CLAMP_V = _sgd.TEXTURE_FLAGS_CLAMP_V
TEXTURE_FLAGS_CLAMP_W = _sgd.TEXTURE_FLAGS_CLAMP_W
TEXTURE_FLAGS_CLAMP_COORDS = _sgd.TEXTURE_FLAGS_CLAMP_COORDS
TEXTURE_FLAGS_FILTER = _sgd.TEXTURE_FLAGS_FILTER
TEXTURE_FLAGS_MIPMAP = _sgd.TEXTURE_FLAGS_MIPMAP
TEXTURE_FLAGS_CUBE = _sgd.TEXTURE_FLAGS_CUBE
TEXTURE_FLAGS_ENVMAP_DEFAULT = _sgd.TEXTURE_FLAGS_ENVMAP_DEFAULT
TEXTURE_FLAGS_MATERIAL_DEFAULT = _sgd.TEXTURE_FLAGS_MATERIAL_DEFAULT
TEXTURE_FLAGS_IMAGE_DEFAULT = _sgd.TEXTURE_FLAGS_IMAGE_DEFAULT

def LoadTexture(path, format, flags):
    return _sgd.LoadTexture(path, format, flags)
BLEND_MODE_OPAQUE = _sgd.BLEND_MODE_OPAQUE
BLEND_MODE_ALPHA_MASK = _sgd.BLEND_MODE_ALPHA_MASK
BLEND_MODE_ALPHA_BLEND = _sgd.BLEND_MODE_ALPHA_BLEND
DEPTH_FUNC_NEVER = _sgd.DEPTH_FUNC_NEVER
DEPTH_FUNC_LESS = _sgd.DEPTH_FUNC_LESS
DEPTH_FUNC_EQUAL = _sgd.DEPTH_FUNC_EQUAL
DEPTH_FUNC_LESS_EQUAL = _sgd.DEPTH_FUNC_LESS_EQUAL
DEPTH_FUNC_GREATER = _sgd.DEPTH_FUNC_GREATER
DEPTH_FUNC_NOT_EQUAL = _sgd.DEPTH_FUNC_NOT_EQUAL
DEPTH_FUNC_GREATER_EQUAL = _sgd.DEPTH_FUNC_GREATER_EQUAL
DEPTH_FUNC_ALWAYS = _sgd.DEPTH_FUNC_ALWAYS
CULL_MODE_NONE = _sgd.CULL_MODE_NONE
CULL_MODE_FRONT = _sgd.CULL_MODE_FRONT
CULL_MODE_BACK = _sgd.CULL_MODE_BACK

def CreatePBRMaterial():
    return _sgd.CreatePBRMaterial()

def LoadPBRMaterial(path):
    return _sgd.LoadPBRMaterial(path)

def CreatePrelitMaterial():
    return _sgd.CreatePrelitMaterial()

def LoadPrelitMaterial(path):
    return _sgd.LoadPrelitMaterial(path)

def SetMaterialBlendMode(material, blendMode):
    return _sgd.SetMaterialBlendMode(material, blendMode)

def SetMaterialDepthFunc(material, depthFunc):
    return _sgd.SetMaterialDepthFunc(material, depthFunc)

def SetMaterialCullMode(material, cullMode):
    return _sgd.SetMaterialCullMode(material, cullMode)

def SetMaterialVector4f(material, property, x, y, z, w):
    return _sgd.SetMaterialVector4f(material, property, x, y, z, w)

def SetMaterialVector3f(material, property, x, y, z):
    return _sgd.SetMaterialVector3f(material, property, x, y, z)

def SetMaterialVector2f(material, property, x, y):
    return _sgd.SetMaterialVector2f(material, property, x, y)

def SetMaterialFloat(material, property, n):
    return _sgd.SetMaterialFloat(material, property, n)

def SetMaterialTexture(material, property, texture):
    return _sgd.SetMaterialTexture(material, property, texture)

def LoadMesh(path):
    return _sgd.LoadMesh(path)

def CreateBoxMesh(minX, minY, minZ, maxX, maxY, maxZ, material):
    return _sgd.CreateBoxMesh(minX, minY, minZ, maxX, maxY, maxZ, material)

def CreateSphereMesh(radius, xSegs, ySegs, material):
    return _sgd.CreateSphereMesh(radius, xSegs, ySegs, material)

def CreateCylinderMesh(height, radius, segs, material):
    return _sgd.CreateCylinderMesh(height, radius, segs, material)

def CreateConeMesh(height, radius, segs, material):
    return _sgd.CreateConeMesh(height, radius, segs, material)

def CreateTorusMesh(outerRadius, innerRadius, outerSegs, innerSegs, material):
    return _sgd.CreateTorusMesh(outerRadius, innerRadius, outerSegs, innerSegs, material)

def SetMeshShadowsEnabled(mesh, enabled):
    return _sgd.SetMeshShadowsEnabled(mesh, enabled)

def IsMeshShadowsEnabled(mesh):
    return _sgd.IsMeshShadowsEnabled(mesh)

def CopyMesh(mesh):
    return _sgd.CopyMesh(mesh)

def UpdateMeshNormals(mesh):
    return _sgd.UpdateMeshNormals(mesh)

def UpdateMeshTangents(mesh):
    return _sgd.UpdateMeshTangents(mesh)

def FitMesh(mesh, minX, minY, minZ, maxX, maxY, maxZ, uniform):
    return _sgd.FitMesh(mesh, minX, minY, minZ, maxX, maxY, maxZ, uniform)

def TFormMesh(mesh, tx, ty, tz, rx, ry, rz, sx, sy, sz):
    return _sgd.TFormMesh(mesh, tx, ty, tz, rx, ry, rz, sx, sy, sz)

def TFormMeshTexCoords(mesh, scaleX, scaleY, offsetX, offsetY):
    return _sgd.TFormMeshTexCoords(mesh, scaleX, scaleY, offsetX, offsetY)

def FlipMesh(mesh):
    return _sgd.FlipMesh(mesh)

def CreateMesh(vertexCount, flags):
    return _sgd.CreateMesh(vertexCount, flags)

def ResizeVertices(mesh, count):
    return _sgd.ResizeVertices(mesh, count)

def GetVertexCount(mesh):
    return _sgd.GetVertexCount(mesh)

def AddVertex(mesh, x, y, z, nx, ny, nz, s, t):
    return _sgd.AddVertex(mesh, x, y, z, nx, ny, nz, s, t)

def SetVertex(mesh, vertex, x, y, z, nx, ny, nz, s, t):
    return _sgd.SetVertex(mesh, vertex, x, y, z, nx, ny, nz, s, t)

def SetVertexPosition(mesh, vertex, x, y, z):
    return _sgd.SetVertexPosition(mesh, vertex, x, y, z)

def SetVertexNormal(mesh, vertex, nx, ny, nz):
    return _sgd.SetVertexNormal(mesh, vertex, nx, ny, nz)

def SetVertexTangent(mesh, vertex, tx, ty, tz, tw):
    return _sgd.SetVertexTangent(mesh, vertex, tx, ty, tz, tw)

def SetVertexColor(mesh, vertex, r, g, b, a):
    return _sgd.SetVertexColor(mesh, vertex, r, g, b, a)

def SetVertexTexCoord0(mesh, vertex, u0, v0):
    return _sgd.SetVertexTexCoord0(mesh, vertex, u0, v0)

def GetVertexX(mesh, vertex):
    return _sgd.GetVertexX(mesh, vertex)

def GetVertexY(mesh, vertex):
    return _sgd.GetVertexY(mesh, vertex)

def GetVertexZ(mesh, vertex):
    return _sgd.GetVertexZ(mesh, vertex)

def GetVertexNX(mesh, vertex):
    return _sgd.GetVertexNX(mesh, vertex)

def GetVertexNY(mesh, vertex):
    return _sgd.GetVertexNY(mesh, vertex)

def GetVertexNZ(mesh, vertex):
    return _sgd.GetVertexNZ(mesh, vertex)

def GetVertexTX(mesh, vertex):
    return _sgd.GetVertexTX(mesh, vertex)

def GetVertexTY(mesh, vertex):
    return _sgd.GetVertexTY(mesh, vertex)

def GetVertexTZ(mesh, vertex):
    return _sgd.GetVertexTZ(mesh, vertex)

def GetVertexTW(mesh, vertex):
    return _sgd.GetVertexTW(mesh, vertex)

def GetVertexRed(mesh, vertex):
    return _sgd.GetVertexRed(mesh, vertex)

def GetVertexGreen(mesh, vertex):
    return _sgd.GetVertexGreen(mesh, vertex)

def GetVertexBlue(mesh, vertex):
    return _sgd.GetVertexBlue(mesh, vertex)

def GetVertexAlpha(mesh, vertex):
    return _sgd.GetVertexAlpha(mesh, vertex)

def GetVertexU0(mesh, vertex):
    return _sgd.GetVertexU0(mesh, vertex)

def GetVertexV0(mesh, vertex):
    return _sgd.GetVertexV0(mesh, vertex)

def CreateSurface(mesh, material, triangleCount):
    return _sgd.CreateSurface(mesh, material, triangleCount)

def GetSurfaceCount(mesh):
    return _sgd.GetSurfaceCount(mesh)

def GetSurface(mesh, surface):
    return _sgd.GetSurface(mesh, surface)

def GetSurfaceMaterial(surface):
    return _sgd.GetSurfaceMaterial(surface)

def ResizeTriangles(surface, count):
    return _sgd.ResizeTriangles(surface, count)

def GetTriangleCount(surface):
    return _sgd.GetTriangleCount(surface)

def AddTriangle(surface, v0, v1, v2):
    return _sgd.AddTriangle(surface, v0, v1, v2)

def SetTriangle(surface, triangle, v0, v1, v2):
    return _sgd.SetTriangle(surface, triangle, v0, v1, v2)

def GetTriangleVertex(surface, triangle, vertex):
    return _sgd.GetTriangleVertex(surface, triangle, vertex)

def LoadFont(path, height):
    return _sgd.LoadFont(path, height)

def GetTextWidth(font, text):
    return _sgd.GetTextWidth(font, text)

def GetFontHeight(font):
    return _sgd.GetFontHeight(font)

def LoadImage(path, depth):
    return _sgd.LoadImage(path, depth)
IMAGE_VIEW_MODE_FIXED = _sgd.IMAGE_VIEW_MODE_FIXED
IMAGE_VIEW_MODE_FREE = _sgd.IMAGE_VIEW_MODE_FREE
IMAGE_VIEW_MODE_UPRIGHT = _sgd.IMAGE_VIEW_MODE_UPRIGHT

def SetImageViewMode(image, viewMode):
    return _sgd.SetImageViewMode(image, viewMode)

def SetImageRect(image, minX, minY, maxX, maxY):
    return _sgd.SetImageRect(image, minX, minY, maxX, maxY)

def SetImage2DHandle(image, x, y):
    return _sgd.SetImage2DHandle(image, x, y)

def SetImageBlendMode(image, blendMode):
    return _sgd.SetImageBlendMode(image, blendMode)

def GetImageWidth(image):
    return _sgd.GetImageWidth(image)

def GetImageHeight(image):
    return _sgd.GetImageHeight(image)

def GetImageDepth(image):
    return _sgd.GetImageDepth(image)

def Set2DFillColor(red, green, blue, alpha):
    return _sgd.Set2DFillColor(red, green, blue, alpha)

def Set2DFillMaterial(material):
    return _sgd.Set2DFillMaterial(material)

def Set2DFillEnabled(enabled):
    return _sgd.Set2DFillEnabled(enabled)

def Set2DOutlineColor(red, green, blue, alpha):
    return _sgd.Set2DOutlineColor(red, green, blue, alpha)

def Set2DOutlineWidth(width):
    return _sgd.Set2DOutlineWidth(width)

def Set2DOutlineEnabled(enabled):
    return _sgd.Set2DOutlineEnabled(enabled)

def Set2DLineWidth(width):
    return _sgd.Set2DLineWidth(width)

def Set2DPointSize(size):
    return _sgd.Set2DPointSize(size)

def Set2DFont(font):
    return _sgd.Set2DFont(font)

def Set2DTextColor(red, green, blue, alpha):
    return _sgd.Set2DTextColor(red, green, blue, alpha)

def Get2DTextWidth(text):
    return _sgd.Get2DTextWidth(text)

def Get2DFontHeight():
    return _sgd.Get2DFontHeight()

def Clear2D():
    return _sgd.Clear2D()

def Push2DLayer():
    return _sgd.Push2DLayer()

def Pop2DLayer():
    return _sgd.Pop2DLayer()

def Draw2DPoint(x0, y0):
    return _sgd.Draw2DPoint(x0, y0)

def Draw2DLine(x0, y0, x1, y1):
    return _sgd.Draw2DLine(x0, y0, x1, y1)

def Draw2DRect(minX, minY, maxX, maxY):
    return _sgd.Draw2DRect(minX, minY, maxX, maxY)

def Draw2DImage(image, x, y, frame):
    return _sgd.Draw2DImage(image, x, y, frame)

def Draw2DOval(minX, minY, maxX, maxY):
    return _sgd.Draw2DOval(minX, minY, maxX, maxY)

def Draw2DText(text, x, y):
    return _sgd.Draw2DText(text, x, y)

def LoadSound(path):
    return _sgd.LoadSound(path)

def PlaySound(sound):
    return _sgd.PlaySound(sound)

def CueSound(sound):
    return _sgd.CueSound(sound)

def SetAudioVolume(audio, volume):
    return _sgd.SetAudioVolume(audio, volume)

def SetAudioPan(audio, pan):
    return _sgd.SetAudioPan(audio, pan)

def SetAudioPitchScale(audio, scale):
    return _sgd.SetAudioPitchScale(audio, scale)

def SetAudioLooping(audio, looping):
    return _sgd.SetAudioLooping(audio, looping)

def SetAudioPaused(audio, paused):
    return _sgd.SetAudioPaused(audio, paused)

def IsAudioValid(audio):
    return _sgd.IsAudioValid(audio)

def StopAudio(audio):
    return _sgd.StopAudio(audio)

def ClearScene():
    return _sgd.ClearScene()

def SetAmbientLightColor(red, green, blue, alpha):
    return _sgd.SetAmbientLightColor(red, green, blue, alpha)

def SetClearColor(red, green, blue, alpha):
    return _sgd.SetClearColor(red, green, blue, alpha)

def SetClearDepth(depth):
    return _sgd.SetClearDepth(depth)

def SetEnvTexture(texture):
    return _sgd.SetEnvTexture(texture)

def SetCSMTextureSize(textureSize):
    return _sgd.SetCSMTextureSize(textureSize)

def SetMaxCSMLights(maxLights):
    return _sgd.SetMaxCSMLights(maxLights)

def SetCSMSplitDistances(sklit0, split1, split2, split3):
    return _sgd.SetCSMSplitDistances(sklit0, split1, split2, split3)

def SetCSMClipRange(range):
    return _sgd.SetCSMClipRange(range)

def SetCSMDepthBias(bias):
    return _sgd.SetCSMDepthBias(bias)

def SetPSMTextureSize(textureSize):
    return _sgd.SetPSMTextureSize(textureSize)

def SetMaxPSMLights(maxLights):
    return _sgd.SetMaxPSMLights(maxLights)

def SetPSMClipNear(near):
    return _sgd.SetPSMClipNear(near)

def SetPSMDepthBias(bias):
    return _sgd.SetPSMDepthBias(bias)

def SetSSMTextureSize(textureSize):
    return _sgd.SetSSMTextureSize(textureSize)

def SetMaxSSMLights(maxLights):
    return _sgd.SetMaxSSMLights(maxLights)

def SetSSMClipNear(near):
    return _sgd.SetSSMClipNear(near)

def SetSSMDepthBias(bias):
    return _sgd.SetSSMDepthBias(bias)

def RenderScene():
    return _sgd.RenderScene()

def Present():
    return _sgd.Present()

def GetFPS():
    return _sgd.GetFPS()

def GetRPS():
    return _sgd.GetRPS()

def SetEntityEnabled(entity, enabled):
    return _sgd.SetEntityEnabled(entity, enabled)

def IsEntityEnabled(entity):
    return _sgd.IsEntityEnabled(entity)

def SetEntityVisible(entity, visible):
    return _sgd.SetEntityVisible(entity, visible)

def IsEntityVisible(entity):
    return _sgd.IsEntityVisible(entity)

def DestroyEntity(entity):
    return _sgd.DestroyEntity(entity)

def ResetEntity(entity):
    return _sgd.ResetEntity(entity)

def CopyEntity(entity):
    return _sgd.CopyEntity(entity)

def SetEntityName(entity, name):
    return _sgd.SetEntityName(entity, name)

def GetEntityName(entity):
    return _sgd.GetEntityName(entity)

def SetEntityParent(entity, parent):
    return _sgd.SetEntityParent(entity, parent)

def GetEntityParent(entity):
    return _sgd.GetEntityParent(entity)

def GetEntityChildCount(entity):
    return _sgd.GetEntityChildCount(entity)

def GetEntityChild(entity, childIndex):
    return _sgd.GetEntityChild(entity, childIndex)

def FindEntityChild(entity, childName):
    return _sgd.FindEntityChild(entity, childName)

def SetEntityPosition(entity, tx, ty, tz):
    return _sgd.SetEntityPosition(entity, tx, ty, tz)

def SetEntityRotation(entity, rx, ry, rz):
    return _sgd.SetEntityRotation(entity, rx, ry, rz)

def SetEntityScale(entity, sx, sy, sz):
    return _sgd.SetEntityScale(entity, sx, sy, sz)

def TranslateEntity(entity, tx, ty, tz):
    return _sgd.TranslateEntity(entity, tx, ty, tz)

def RotateEntity(entity, rx, ry, rz):
    return _sgd.RotateEntity(entity, rx, ry, rz)

def ScaleEntity(entity, sx, sy, sz):
    return _sgd.ScaleEntity(entity, sx, sy, sz)

def MoveEntity(entity, tx, ty, tz):
    return _sgd.MoveEntity(entity, tx, ty, tz)

def TurnEntity(entity, rx, ry, rz):
    return _sgd.TurnEntity(entity, rx, ry, rz)

def GetEntityX(entity):
    return _sgd.GetEntityX(entity)

def GetEntityY(entity):
    return _sgd.GetEntityY(entity)

def GetEntityZ(entity):
    return _sgd.GetEntityZ(entity)

def GetEntityRX(entity):
    return _sgd.GetEntityRX(entity)

def GetEntityRY(entity):
    return _sgd.GetEntityRY(entity)

def GetEntityRZ(entity):
    return _sgd.GetEntityRZ(entity)

def GetEntitySX(entity):
    return _sgd.GetEntitySX(entity)

def GetEntitySY(entity):
    return _sgd.GetEntitySY(entity)

def GetEntitySZ(entity):
    return _sgd.GetEntitySZ(entity)

def GetEntityIX(entity):
    return _sgd.GetEntityIX(entity)

def GetEntityIY(entity):
    return _sgd.GetEntityIY(entity)

def GetEntityIZ(entity):
    return _sgd.GetEntityIZ(entity)

def GetEntityJX(entity):
    return _sgd.GetEntityJX(entity)

def GetEntityJY(entity):
    return _sgd.GetEntityJY(entity)

def GetEntityJZ(entity):
    return _sgd.GetEntityJZ(entity)

def GetEntityKX(entity):
    return _sgd.GetEntityKX(entity)

def GetEntityKY(entity):
    return _sgd.GetEntityKY(entity)

def GetEntityKZ(entity):
    return _sgd.GetEntityKZ(entity)

def AimEntityAtEntity(entity, target, roll):
    return _sgd.AimEntityAtEntity(entity, target, roll)

def AimEntityAtPoint(entity, x, y, z, roll):
    return _sgd.AimEntityAtPoint(entity, x, y, z, roll)

def TFormPoint(x, y, z, srcEntity, dstEntity):
    return _sgd.TFormPoint(x, y, z, srcEntity, dstEntity)

def TFormVector(x, y, z, srcEntity, dstEntity):
    return _sgd.TFormVector(x, y, z, srcEntity, dstEntity)

def TFormNormal(x, y, z, srcEntity, dstEntity):
    return _sgd.TFormNormal(x, y, z, srcEntity, dstEntity)

def GetTFormedX():
    return _sgd.GetTFormedX()

def GetTFormedY():
    return _sgd.GetTFormedY()

def GetTFormedZ():
    return _sgd.GetTFormedZ()

def CreatePerspectiveCamera():
    return _sgd.CreatePerspectiveCamera()

def CreateOrthographicCamera():
    return _sgd.CreateOrthographicCamera()

def SetCameraFOV(camera, fovY):
    return _sgd.SetCameraFOV(camera, fovY)

def SetCameraNear(camera, near):
    return _sgd.SetCameraNear(camera, near)

def SetCameraFar(camera, far):
    return _sgd.SetCameraFar(camera, far)

def CameraProject(camera, x, y, z):
    return _sgd.CameraProject(camera, x, y, z)

def GetProjectedX():
    return _sgd.GetProjectedX()

def GetProjectedY():
    return _sgd.GetProjectedY()

def CameraUnproject(camera, windowX, windowY, viewZ):
    return _sgd.CameraUnproject(camera, windowX, windowY, viewZ)

def GetUnprojectedX():
    return _sgd.GetUnprojectedX()

def GetUnprojectedY():
    return _sgd.GetUnprojectedY()

def GetUnprojectedZ():
    return _sgd.GetUnprojectedZ()

def CreateDirectionalLight():
    return _sgd.CreateDirectionalLight()

def CreatePointLight():
    return _sgd.CreatePointLight()

def CreateSpotLight():
    return _sgd.CreateSpotLight()

def SetLightColor(light, red, green, blue, alpha):
    return _sgd.SetLightColor(light, red, green, blue, alpha)

def SetLightRange(light, range):
    return _sgd.SetLightRange(light, range)

def SetLightFalloff(light, falloff):
    return _sgd.SetLightFalloff(light, falloff)

def SetLightInnerConeAngle(light, angle):
    return _sgd.SetLightInnerConeAngle(light, angle)

def SetLightOuterConeAngle(light, angle):
    return _sgd.SetLightOuterConeAngle(light, angle)

def SetLightShadowsEnabled(light, enabled):
    return _sgd.SetLightShadowsEnabled(light, enabled)

def IsLightShadowsEnabled(light):
    return _sgd.IsLightShadowsEnabled(light)

def SetLightPriority(light, priority):
    return _sgd.SetLightPriority(light, priority)
ANIMATION_MODE_ONE_SHOT = _sgd.ANIMATION_MODE_ONE_SHOT
ANIMATION_MODE_LOOP = _sgd.ANIMATION_MODE_LOOP
ANIMATION_MODE_PING_PONG = _sgd.ANIMATION_MODE_PING_PONG

def LoadModel(path):
    return _sgd.LoadModel(path)

def LoadBonedModel(path, skinned):
    return _sgd.LoadBonedModel(path, skinned)

def CreateModel(mesh):
    return _sgd.CreateModel(mesh)

def SetModelMesh(model, mesh):
    return _sgd.SetModelMesh(model, mesh)

def GetModelMesh(model):
    return _sgd.GetModelMesh(model)

def SetModelColor(model, red, green, blue, alpha):
    return _sgd.SetModelColor(model, red, green, blue, alpha)

def AnimateModel(model, animation, time, mode, weight):
    return _sgd.AnimateModel(model, animation, time, mode, weight)

def LoadSkybox(path, roughness):
    return _sgd.LoadSkybox(path, roughness)

def CreateSkybox(texture):
    return _sgd.CreateSkybox(texture)

def SetSkyboxTexture(skybox, texture):
    return _sgd.SetSkyboxTexture(skybox, texture)

def SetSkyboxRoughness(skybox, roughness):
    return _sgd.SetSkyboxRoughness(skybox, roughness)

def CreateSprite(image):
    return _sgd.CreateSprite(image)

def SetSpriteImage(sprite, image):
    return _sgd.SetSpriteImage(sprite, image)

def SetSpriteColor(sprite, red, green, blue, alpha):
    return _sgd.SetSpriteColor(sprite, red, green, blue, alpha)

def SetSpriteFrame(sprite, frame):
    return _sgd.SetSpriteFrame(sprite, frame)
COLLISION_RESPONSE_NONE = _sgd.COLLISION_RESPONSE_NONE
COLLISION_RESPONSE_STOP = _sgd.COLLISION_RESPONSE_STOP
COLLISION_RESPONSE_SLIDE = _sgd.COLLISION_RESPONSE_SLIDE
COLLISION_RESPONSE_SLIDEXZ = _sgd.COLLISION_RESPONSE_SLIDEXZ

def CreateSphereCollider(entity, colliderType, radius):
    return _sgd.CreateSphereCollider(entity, colliderType, radius)

def CreateEllipsoidCollider(entity, colliderType, radius, height):
    return _sgd.CreateEllipsoidCollider(entity, colliderType, radius, height)

def CreateMeshCollider(entity, colliderType, mesh):
    return _sgd.CreateMeshCollider(entity, colliderType, mesh)

def GetColliderEntity(collider):
    return _sgd.GetColliderEntity(collider)

def SetColliderRadius(collider, radius):
    return _sgd.SetColliderRadius(collider, radius)

def SetColliderHeight(collider, height):
    return _sgd.SetColliderHeight(collider, height)

def EnableCollisions(srcColliderType, dstColliderType, response):
    return _sgd.EnableCollisions(srcColliderType, dstColliderType, response)

def UpdateColliders():
    return _sgd.UpdateColliders()

def GetCollisionCount(collider):
    return _sgd.GetCollisionCount(collider)

def GetCollisionX(collider, index):
    return _sgd.GetCollisionX(collider, index)

def GetCollisionY(collider, index):
    return _sgd.GetCollisionY(collider, index)

def GetCollisionZ(collider, index):
    return _sgd.GetCollisionZ(collider, index)

def GetCollisionNX(collider, index):
    return _sgd.GetCollisionNX(collider, index)

def GetCollisionNY(collider, index):
    return _sgd.GetCollisionNY(collider, index)

def GetCollisionNZ(collider, index):
    return _sgd.GetCollisionNZ(collider, index)

def CameraPick(camera, windowX, windowY, colliderMask):
    return _sgd.CameraPick(camera, windowX, windowY, colliderMask)

def LinePick(x0, y0, z0, x1, y1, z1, radius, colliderMask):
    return _sgd.LinePick(x0, y0, z0, x1, y1, z1, radius, colliderMask)

def GetPickedX():
    return _sgd.GetPickedX()

def GetPickedY():
    return _sgd.GetPickedY()

def GetPickedZ():
    return _sgd.GetPickedZ()

def GetPickedNX():
    return _sgd.GetPickedNX()

def GetPickedNY():
    return _sgd.GetPickedNY()

def GetPickedNZ():
    return _sgd.GetPickedNZ()

def CreateBloomEffect():
    return _sgd.CreateBloomEffect()

def CreateBlurEffect():
    return _sgd.CreateBlurEffect()

def SetBlurEffectRadius(effect, radius):
    return _sgd.SetBlurEffectRadius(effect, radius)

def CreateFogEffect():
    return _sgd.CreateFogEffect()

def SetFogEffectColor(effect, red, green, blue, alpha):
    return _sgd.SetFogEffectColor(effect, red, green, blue, alpha)

def SetFogEffectRange(effect, near, far):
    return _sgd.SetFogEffectRange(effect, near, far)

def SetFogEffectPower(effect, power):
    return _sgd.SetFogEffectPower(effect, power)

def CreateMonocolorEffect():
    return _sgd.CreateMonocolorEffect()

def SetMonocolorEffectColor(effect, red, green, blue, alpha):
    return _sgd.SetMonocolorEffectColor(effect, red, green, blue, alpha)

def SetRenderEffectEnabled(effect, enabled):
    return _sgd.SetRenderEffectEnabled(effect, enabled)

def IsRenderEffectEnabled(effect):
    return _sgd.IsRenderEffectEnabled(effect)
KEY_SPACE = _sgd.KEY_SPACE
KEY_APOSTROPHE = _sgd.KEY_APOSTROPHE
KEY_COMMA = _sgd.KEY_COMMA
KEY_MINUS = _sgd.KEY_MINUS
KEY_PERIOD = _sgd.KEY_PERIOD
KEY_SLASH = _sgd.KEY_SLASH
KEY_0 = _sgd.KEY_0
KEY_1 = _sgd.KEY_1
KEY_2 = _sgd.KEY_2
KEY_3 = _sgd.KEY_3
KEY_4 = _sgd.KEY_4
KEY_5 = _sgd.KEY_5
KEY_6 = _sgd.KEY_6
KEY_7 = _sgd.KEY_7
KEY_8 = _sgd.KEY_8
KEY_9 = _sgd.KEY_9
KEY_SEMICOLON = _sgd.KEY_SEMICOLON
KEY_EQUAL = _sgd.KEY_EQUAL
KEY_A = _sgd.KEY_A
KEY_B = _sgd.KEY_B
KEY_C = _sgd.KEY_C
KEY_D = _sgd.KEY_D
KEY_E = _sgd.KEY_E
KEY_F = _sgd.KEY_F
KEY_G = _sgd.KEY_G
KEY_H = _sgd.KEY_H
KEY_I = _sgd.KEY_I
KEY_J = _sgd.KEY_J
KEY_K = _sgd.KEY_K
KEY_L = _sgd.KEY_L
KEY_M = _sgd.KEY_M
KEY_N = _sgd.KEY_N
KEY_O = _sgd.KEY_O
KEY_P = _sgd.KEY_P
KEY_Q = _sgd.KEY_Q
KEY_R = _sgd.KEY_R
KEY_S = _sgd.KEY_S
KEY_T = _sgd.KEY_T
KEY_U = _sgd.KEY_U
KEY_V = _sgd.KEY_V
KEY_W = _sgd.KEY_W
KEY_X = _sgd.KEY_X
KEY_Y = _sgd.KEY_Y
KEY_Z = _sgd.KEY_Z
KEY_LEFT_BRACKET = _sgd.KEY_LEFT_BRACKET
KEY_BACKSLASH = _sgd.KEY_BACKSLASH
KEY_RIGHT_BRACKET = _sgd.KEY_RIGHT_BRACKET
KEY_GRAVE_ACCENT = _sgd.KEY_GRAVE_ACCENT
KEY_WORLD_1 = _sgd.KEY_WORLD_1
KEY_WORLD_2 = _sgd.KEY_WORLD_2
KEY_ESCAPE = _sgd.KEY_ESCAPE
KEY_ENTER = _sgd.KEY_ENTER
KEY_TAB = _sgd.KEY_TAB
KEY_BACKSPACE = _sgd.KEY_BACKSPACE
KEY_INSERT = _sgd.KEY_INSERT
KEY_DELETE = _sgd.KEY_DELETE
KEY_RIGHT = _sgd.KEY_RIGHT
KEY_LEFT = _sgd.KEY_LEFT
KEY_DOWN = _sgd.KEY_DOWN
KEY_UP = _sgd.KEY_UP
KEY_PAGE_UP = _sgd.KEY_PAGE_UP
KEY_PAGE_DOWN = _sgd.KEY_PAGE_DOWN
KEY_HOME = _sgd.KEY_HOME
KEY_END = _sgd.KEY_END
KEY_CAPS_LOCK = _sgd.KEY_CAPS_LOCK
KEY_SCROLL_LOCK = _sgd.KEY_SCROLL_LOCK
KEY_NUM_LOCK = _sgd.KEY_NUM_LOCK
KEY_PRINT_SCREEN = _sgd.KEY_PRINT_SCREEN
KEY_PAUSE = _sgd.KEY_PAUSE
KEY_F1 = _sgd.KEY_F1
KEY_F2 = _sgd.KEY_F2
KEY_F3 = _sgd.KEY_F3
KEY_F4 = _sgd.KEY_F4
KEY_F5 = _sgd.KEY_F5
KEY_F6 = _sgd.KEY_F6
KEY_F7 = _sgd.KEY_F7
KEY_F8 = _sgd.KEY_F8
KEY_F9 = _sgd.KEY_F9
KEY_F10 = _sgd.KEY_F10
KEY_F11 = _sgd.KEY_F11
KEY_F12 = _sgd.KEY_F12
KEY_F13 = _sgd.KEY_F13
KEY_F14 = _sgd.KEY_F14
KEY_F15 = _sgd.KEY_F15
KEY_F16 = _sgd.KEY_F16
KEY_F17 = _sgd.KEY_F17
KEY_F18 = _sgd.KEY_F18
KEY_F19 = _sgd.KEY_F19
KEY_F20 = _sgd.KEY_F20
KEY_F21 = _sgd.KEY_F21
KEY_F22 = _sgd.KEY_F22
KEY_F23 = _sgd.KEY_F23
KEY_F24 = _sgd.KEY_F24
KEY_F25 = _sgd.KEY_F25
KEY_KP_0 = _sgd.KEY_KP_0
KEY_KP_1 = _sgd.KEY_KP_1
KEY_KP_2 = _sgd.KEY_KP_2
KEY_KP_3 = _sgd.KEY_KP_3
KEY_KP_4 = _sgd.KEY_KP_4
KEY_KP_5 = _sgd.KEY_KP_5
KEY_KP_6 = _sgd.KEY_KP_6
KEY_KP_7 = _sgd.KEY_KP_7
KEY_KP_8 = _sgd.KEY_KP_8
KEY_KP_9 = _sgd.KEY_KP_9
KEY_KP_DECIMAL = _sgd.KEY_KP_DECIMAL
KEY_KP_DIVIDE = _sgd.KEY_KP_DIVIDE
KEY_KP_MULTIPLY = _sgd.KEY_KP_MULTIPLY
KEY_KP_SUBTRACT = _sgd.KEY_KP_SUBTRACT
KEY_KP_ADD = _sgd.KEY_KP_ADD
KEY_KP_ENTER = _sgd.KEY_KP_ENTER
KEY_KP_EQUAL = _sgd.KEY_KP_EQUAL
KEY_LEFT_SHIFT = _sgd.KEY_LEFT_SHIFT
KEY_LEFT_CONTROL = _sgd.KEY_LEFT_CONTROL
KEY_LEFT_ALT = _sgd.KEY_LEFT_ALT
KEY_LEFT_SUPER = _sgd.KEY_LEFT_SUPER
KEY_RIGHT_SHIFT = _sgd.KEY_RIGHT_SHIFT
KEY_RIGHT_CONTROL = _sgd.KEY_RIGHT_CONTROL
KEY_RIGHT_ALT = _sgd.KEY_RIGHT_ALT
KEY_RIGHT_SUPER = _sgd.KEY_RIGHT_SUPER
KEY_MENU = _sgd.KEY_MENU
KEY_LAST = _sgd.KEY_LAST
KEY_MODIFIER_SHIFT = _sgd.KEY_MODIFIER_SHIFT
KEY_MODIFIER_CONTROL = _sgd.KEY_MODIFIER_CONTROL
KEY_MODIFIER_ALT = _sgd.KEY_MODIFIER_ALT
KEY_MODIFIER_SUPER = _sgd.KEY_MODIFIER_SUPER
KEY_MODIFIER_CAPS_LOCK = _sgd.KEY_MODIFIER_CAPS_LOCK
KEY_MODIFIER_NUM_LOCK = _sgd.KEY_MODIFIER_NUM_LOCK
MOUSE_BUTTON_LEFT = _sgd.MOUSE_BUTTON_LEFT
MOUSE_BUTTON_RIGHT = _sgd.MOUSE_BUTTON_RIGHT
MOUSE_BUTTON_MIDDLE = _sgd.MOUSE_BUTTON_MIDDLE
GAMEPAD_BUTTON_A = _sgd.GAMEPAD_BUTTON_A
GAMEPAD_BUTTON_B = _sgd.GAMEPAD_BUTTON_B
GAMEPAD_BUTTON_X = _sgd.GAMEPAD_BUTTON_X
GAMEPAD_BUTTON_Y = _sgd.GAMEPAD_BUTTON_Y
GAMEPAD_BUTTON_LEFT_BUMPER = _sgd.GAMEPAD_BUTTON_LEFT_BUMPER
GAMEPAD_BUTTON_RIGHT_BUMPER = _sgd.GAMEPAD_BUTTON_RIGHT_BUMPER
GAMEPAD_BUTTON_BACK = _sgd.GAMEPAD_BUTTON_BACK
GAMEPAD_BUTTON_START = _sgd.GAMEPAD_BUTTON_START
GAMEPAD_BUTTON_GUIDE = _sgd.GAMEPAD_BUTTON_GUIDE
GAMEPAD_BUTTON_LEFT_THUMB = _sgd.GAMEPAD_BUTTON_LEFT_THUMB
GAMEPAD_BUTTON_RIGHT_THUMB = _sgd.GAMEPAD_BUTTON_RIGHT_THUMB
GAMEPAD_BUTTON_DPAD_UP = _sgd.GAMEPAD_BUTTON_DPAD_UP
GAMEPAD_BUTTON_DPAD_RIGHT = _sgd.GAMEPAD_BUTTON_DPAD_RIGHT
GAMEPAD_BUTTON_DPAD_DOWN = _sgd.GAMEPAD_BUTTON_DPAD_DOWN
GAMEPAD_BUTTON_DPAD_LEFT = _sgd.GAMEPAD_BUTTON_DPAD_LEFT
GAMEPAD_BUTTON_CROSS = _sgd.GAMEPAD_BUTTON_CROSS
GAMEPAD_BUTTON_CIRCLE = _sgd.GAMEPAD_BUTTON_CIRCLE
GAMEPAD_BUTTON_SQUARE = _sgd.GAMEPAD_BUTTON_SQUARE
GAMEPAD_BUTTON_TRIANGLE = _sgd.GAMEPAD_BUTTON_TRIANGLE
GAMEPAD_AXIS_LEFT_X = _sgd.GAMEPAD_AXIS_LEFT_X
GAMEPAD_AXIS_LEFT_Y = _sgd.GAMEPAD_AXIS_LEFT_Y
GAMEPAD_AXIS_RIGHT_X = _sgd.GAMEPAD_AXIS_RIGHT_X
GAMEPAD_AXIS_RIGHT_Y = _sgd.GAMEPAD_AXIS_RIGHT_Y
GAMEPAD_AXIS_LEFT_TRIGGER = _sgd.GAMEPAD_AXIS_LEFT_TRIGGER
GAMEPAD_AXIS_RIGHT_TRIGGER = _sgd.GAMEPAD_AXIS_RIGHT_TRIGGER

