Sepehr Taghdisian avatar Sepehr Taghdisian committed 231dc93

small linux fix, added pymodule build

Comments (0)

Files changed (14)

3rdparty/glfw/src/cocoa_window.m

 
 int _glfwPlatformCreateWindow(_GLFWwindow* window,
                               const _GLFWwndconfig* wndconfig,
-                              const _GLFWfbconfig* fbconfig)
+                              const _GLFWfbconfig* fbconfig,
+                              void* override_wnd)
 {
     if (!initializeAppKit())
         return GL_FALSE;

3rdparty/glfw/src/win32_window.c

                                               NULL, // No window menu
                                               GetModuleHandle(NULL),
                                               window); // Pass object to WM_CREATE
+        window->overrided = GL_FALSE;
     }   else    {
         window->win32.handle = (HWND)override_wnd;
         window->overrided = GL_TRUE;

3rdparty/glfw/src/x11_window.c

 //
 //========================================================================
 
+/**
+ * Edit: Sepehr Taghdisian (sep.tagh@gmail.com)
+ * Added wnd_override
+ */
+
 #include "internal.h"
 
 #include <sys/select.h>
 // Create the X11 window (and its colormap)
 //
 static GLboolean createWindow(_GLFWwindow* window,
-                              const _GLFWwndconfig* wndconfig)
+                              const _GLFWwndconfig* wndconfig,
+                              void* override_wnd)
 {
     unsigned long wamask;
     XSetWindowAttributes wa;
             wamask |= CWBackPixel;
         }
 
-        window->x11.handle = XCreateWindow(_glfw.x11.display,
-                                           _glfw.x11.root,
-                                           0, 0,
-                                           wndconfig->width, wndconfig->height,
-                                           0,              // Border width
-                                           visual->depth,  // Color depth
-                                           InputOutput,
-                                           visual->visual,
-                                           wamask,
-                                           &wa);
+        if (override_wnd == NULL)	{
+			window->x11.handle = XCreateWindow(_glfw.x11.display,
+											   _glfw.x11.root,
+											   0, 0,
+											   wndconfig->width, wndconfig->height,
+											   0,              // Border width
+											   visual->depth,  // Color depth
+											   InputOutput,
+											   visual->visual,
+											   wamask,
+											   &wa);
+			window->overrided = GL_FALSE;
+        }	else	{
+        	window->x11.handle = (Window)override_wnd;
+        	window->overrided = GL_TRUE;
+        }
 
         if (!window->x11.handle)
         {
             return GL_FALSE;
         }
 
-        if (!wndconfig->decorated)
+        if (!wndconfig->decorated && override_wnd == NULL)
         {
             MotifWmHints hints;
             hints.flags = MWM_HINTS_DECORATIONS;
                      (XPointer) window);
     }
 
+    if (override_wnd != NULL)
+    	return GL_TRUE;
+
     if (window->monitor && !_glfw.x11.hasEWMH)
     {
         // This is the butcher's way of removing window decorations
 
 int _glfwPlatformCreateWindow(_GLFWwindow* window,
                               const _GLFWwndconfig* wndconfig,
-                              const _GLFWfbconfig* fbconfig)
+                              const _GLFWfbconfig* fbconfig,
+                              void* override_wnd)
 {
     if (!_glfwCreateContext(window, wndconfig, fbconfig))
         return GL_FALSE;
 
-    if (!createWindow(window, wndconfig))
+    if (!createWindow(window, wndconfig, override_wnd))
         return GL_FALSE;
 
     if (wndconfig->monitor)
 
     _glfwDestroyContext(window);
 
-    if (window->x11.handle)
+    if (window->x11.handle && !window->overrided)
     {
         if (window->x11.handle ==
             XGetSelectionOwner(_glfw.x11.display, _glfw.x11.CLIPBOARD))
 
 #### Debug build
 For debug builds (which output files will have _-dbg_ suffix), just add _\_debug_ to build and 
-install commands :
+install commands:
 
 ```
 python var/waf/waf build_debug  
 python var/waf/waf install_debug  
 ```
 
+#### Python module build
+To build python module, add _\_pymodule_ to build and install commands:
+```
+python var/waf/waf build_pymodule
+python var/waf/waf install_pymodule
+```
+This will build and install platform dependent engine python module files under 
+_[dark-hammer]/src/pymodules_ directory.  
+__Note__ that you must install python development files for your OS, before building python module.
+
 #### Additional Flags
 These arguments can be used with `configure` command:  
 
 _Configuration Properties->VC++ Directories_, Add _DirectX and Physx_ include directory paths to 
 _Include Directories_, and Library directory paths to _Library Directories_.  You should do the same
  for _h3dimport_ project if you want to build the importer tool too.
+ 
+Issues
+------
+Some current known issues (help is very much appreciated):
+- Overriding window management doesn't work for Non-windows versions _(app_init with wnd_override)_,
+ This is (in part) because of _glfw_ design flaw in decoupling window and context management.
 
 Questions?
 ----------

include/engine/pybind/pyalloc.h

 #undef malloc
 #endif
 
-#if defined(_GNUC_)
-#define DEF_ALLOC extern
-#else
-#define DEF_ALLOC INLINE
-#endif
-
 /* fwd declare */
 void* py_alignedalloc(size_t s);
 void py_alignedfree(void* ptr);

src/core/platform/unix/util-lnx.c

 #include <sys/sendfile.h>
 #include <stdio.h>
 
+#include "str.h"
+
 char* util_getexedir(char* outpath)
 {
     char tmp[32];
 /* path/filename helper functions */
 char* path_norm(char* outpath, const char* inpath)
 {
+#if defined(_WIN_)
     char tmp[DH_PATH_MAX];
-#if defined(_WIN_)
     GetFullPathName(inpath, DH_PATH_MAX, tmp, NULL);
     return path_towin(outpath, tmp);
 #else
-    realpath(inpath, tmp);
-    return path_tounix(outpath, tmp);
+    char* tmp = realpath(inpath, NULL);
+    path_tounix(outpath, tmp);
+    free(tmp);
+    return outpath;
 #endif
 }
 
             '/NODEFAULTLIB:"LIBCMTD.LIB"', 
             '/NODEFAULTLIB:"LIBCMT.LIB"'])
         env.append_unique("LIB", ["ws2_32", "Shell32"])
+    
+    if bld.variant == 'pymodule':
+        install_path = '${PYDIR}'
+    else:
+        install_path = '${BINDIR}'
         
     bld.shlib(
         source = files,
         target = "dh_core" + env.SUFFIX,
         name = "dh_core",
-        install_path = "${BINDIR}",
+        install_path = install_path,
         env = env,
         use = [
             "3rdparty_efsw",

src/engine/pybind/dheng.py

+# This file was automatically generated by SWIG (http://www.swig.org).
+# Version 2.0.9
+#
+# 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
+if version_info >= (2,6,0):
+    def swig_import_helper():
+        from os.path import dirname
+        import imp
+        fp = None
+        try:
+            fp, pathname, description = imp.find_module('_dheng', [dirname(__file__)])
+        except ImportError:
+            import _dheng
+            return _dheng
+        if fp is not None:
+            try:
+                _mod = imp.load_module('_dheng', fp, pathname, description)
+            finally:
+                fp.close()
+            return _mod
+    _dheng = swig_import_helper()
+    del swig_import_helper
+else:
+    import _dheng
+del version_info
+try:
+    _swig_property = property
+except NameError:
+    pass # Python < 2.2 doesn't have 'property'.
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "thisown"): return self.this.own(value)
+    if (name == "this"):
+        if type(value).__name__ == 'SwigPyObject':
+            self.__dict__[name] = value
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    if (name == "thisown"): return self.this.own()
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError(name)
+
+def _swig_repr(self):
+    try: strthis = "proxy of " + self.this.__repr__()
+    except: strthis = ""
+    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
+
+try:
+    _object = object
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+
+
+
+def core_init(*args):
+  return _dheng.core_init(*args)
+core_init = _dheng.core_init
+
+def core_release(*args):
+  return _dheng.core_release(*args)
+core_release = _dheng.core_release
+LOG_TEXT = _dheng.LOG_TEXT
+LOG_ERROR = _dheng.LOG_ERROR
+LOG_WARNING = _dheng.LOG_WARNING
+LOG_INFO = _dheng.LOG_INFO
+LOG_LOAD = _dheng.LOG_LOAD
+
+def log_outputconsole(*args):
+  return _dheng.log_outputconsole(*args)
+log_outputconsole = _dheng.log_outputconsole
+
+def log_outputfile(*args):
+  return _dheng.log_outputfile(*args)
+log_outputfile = _dheng.log_outputfile
+
+def log_outputdebugger(*args):
+  return _dheng.log_outputdebugger(*args)
+log_outputdebugger = _dheng.log_outputdebugger
+RET_OK = _dheng.RET_OK
+RET_FAIL = _dheng.RET_FAIL
+
+def err_print(*args):
+  return _dheng.err_print(*args)
+err_print = _dheng.err_print
+
+def err_getcode():
+  return _dheng.err_getcode()
+err_getcode = _dheng.err_getcode
+
+def err_sendtolog(*args):
+  return _dheng.err_sendtolog(*args)
+err_sendtolog = _dheng.err_sendtolog
+
+def err_getstring():
+  return _dheng.err_getstring()
+err_getstring = _dheng.err_getstring
+
+def err_clear():
+  return _dheng.err_clear()
+err_clear = _dheng.err_clear
+
+def err_haserrors():
+  return _dheng.err_haserrors()
+err_haserrors = _dheng.err_haserrors
+
+def math_torad(*args):
+  return _dheng.math_torad(*args)
+math_torad = _dheng.math_torad
+
+def math_todeg(*args):
+  return _dheng.math_todeg(*args)
+math_todeg = _dheng.math_todeg
+
+def math_isequal(*args):
+  return _dheng.math_isequal(*args)
+math_isequal = _dheng.math_isequal
+
+def io_addvdir(*args):
+  return _dheng.io_addvdir(*args)
+io_addvdir = _dheng.io_addvdir
+
+def io_clearvdirs():
+  return _dheng.io_clearvdirs()
+io_clearvdirs = _dheng.io_clearvdirs
+
+def hash_murmur32(*args):
+  return _dheng.hash_murmur32(*args)
+hash_murmur32 = _dheng.hash_murmur32
+
+def str_toptr(*args):
+  return _dheng.str_toptr(*args)
+str_toptr = _dheng.str_toptr
+class vec4f(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, vec4f, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, vec4f, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["x"] = _dheng.vec4f_x_set
+    __swig_getmethods__["x"] = _dheng.vec4f_x_get
+    if _newclass:x = _swig_property(_dheng.vec4f_x_get, _dheng.vec4f_x_set)
+    __swig_setmethods__["y"] = _dheng.vec4f_y_set
+    __swig_getmethods__["y"] = _dheng.vec4f_y_get
+    if _newclass:y = _swig_property(_dheng.vec4f_y_get, _dheng.vec4f_y_set)
+    __swig_setmethods__["z"] = _dheng.vec4f_z_set
+    __swig_getmethods__["z"] = _dheng.vec4f_z_get
+    if _newclass:z = _swig_property(_dheng.vec4f_z_get, _dheng.vec4f_z_set)
+    __swig_setmethods__["w"] = _dheng.vec4f_w_set
+    __swig_getmethods__["w"] = _dheng.vec4f_w_get
+    if _newclass:w = _swig_property(_dheng.vec4f_w_get, _dheng.vec4f_w_set)
+    def __init__(self): 
+        this = _dheng.new_vec4f()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _dheng.delete_vec4f
+    __del__ = lambda self : None;
+vec4f_swigregister = _dheng.vec4f_swigregister
+vec4f_swigregister(vec4f)
+
+
+def vec3_setf(*args):
+  return _dheng.vec3_setf(*args)
+vec3_setf = _dheng.vec3_setf
+MSAA_NONE = _dheng.MSAA_NONE
+MSAA_2X = _dheng.MSAA_2X
+MSAA_4X = _dheng.MSAA_4X
+MSAA_8X = _dheng.MSAA_8X
+TEXTURE_QUALITY_HIGH = _dheng.TEXTURE_QUALITY_HIGH
+TEXTURE_QUALITY_NORMAL = _dheng.TEXTURE_QUALITY_NORMAL
+TEXTURE_QUALITY_LOW = _dheng.TEXTURE_QUALITY_LOW
+TEXTURE_QUALITY_HIGHEST = _dheng.TEXTURE_QUALITY_HIGHEST
+TEXTURE_FILTER_TRILINEAR = _dheng.TEXTURE_FILTER_TRILINEAR
+TEXTURE_FILTER_BILINEAR = _dheng.TEXTURE_FILTER_BILINEAR
+TEXTURE_FILTER_ANISO2X = _dheng.TEXTURE_FILTER_ANISO2X
+TEXTURE_FILTER_ANISO4X = _dheng.TEXTURE_FILTER_ANISO4X
+TEXTURE_FILTER_ANISO8X = _dheng.TEXTURE_FILTER_ANISO8X
+TEXTURE_FILTER_ANISO16X = _dheng.TEXTURE_FILTER_ANISO16X
+SHADING_QUALITY_LOW = _dheng.SHADING_QUALITY_LOW
+SHADING_QUALITY_NORMAL = _dheng.SHADING_QUALITY_NORMAL
+SHADING_QUALITY_HIGH = _dheng.SHADING_QUALITY_HIGH
+GFX_HWVER_UNKNOWN = _dheng.GFX_HWVER_UNKNOWN
+GFX_HWVER_D3D11_0 = _dheng.GFX_HWVER_D3D11_0
+GFX_HWVER_D3D10_1 = _dheng.GFX_HWVER_D3D10_1
+GFX_HWVER_D3D10_0 = _dheng.GFX_HWVER_D3D10_0
+GFX_HWVER_GL4_3 = _dheng.GFX_HWVER_GL4_3
+GFX_HWVER_GL4_2 = _dheng.GFX_HWVER_GL4_2
+GFX_HWVER_GL4_0 = _dheng.GFX_HWVER_GL4_0
+GFX_HWVER_GL3_3 = _dheng.GFX_HWVER_GL3_3
+GFX_HWVER_GL3_2 = _dheng.GFX_HWVER_GL3_2
+GFX_FLAG_FULLSCREEN = _dheng.GFX_FLAG_FULLSCREEN
+GFX_FLAG_VSYNC = _dheng.GFX_FLAG_VSYNC
+GFX_FLAG_DEBUG = _dheng.GFX_FLAG_DEBUG
+GFX_FLAG_FXAA = _dheng.GFX_FLAG_FXAA
+GFX_FLAG_REBUILDSHADERS = _dheng.GFX_FLAG_REBUILDSHADERS
+ENG_FLAG_DEBUG = _dheng.ENG_FLAG_DEBUG
+ENG_FLAG_DEV = _dheng.ENG_FLAG_DEV
+ENG_FLAG_EDITOR = _dheng.ENG_FLAG_EDITOR
+ENG_FLAG_CONSOLE = _dheng.ENG_FLAG_CONSOLE
+class dev_params(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, dev_params, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, dev_params, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["fpsgraph_max"] = _dheng.dev_params_fpsgraph_max_set
+    __swig_getmethods__["fpsgraph_max"] = _dheng.dev_params_fpsgraph_max_get
+    if _newclass:fpsgraph_max = _swig_property(_dheng.dev_params_fpsgraph_max_get, _dheng.dev_params_fpsgraph_max_set)
+    __swig_setmethods__["ftgraph_max"] = _dheng.dev_params_ftgraph_max_set
+    __swig_getmethods__["ftgraph_max"] = _dheng.dev_params_ftgraph_max_get
+    if _newclass:ftgraph_max = _swig_property(_dheng.dev_params_ftgraph_max_get, _dheng.dev_params_ftgraph_max_set)
+    __swig_setmethods__["webserver_port"] = _dheng.dev_params_webserver_port_set
+    __swig_getmethods__["webserver_port"] = _dheng.dev_params_webserver_port_get
+    if _newclass:webserver_port = _swig_property(_dheng.dev_params_webserver_port_get, _dheng.dev_params_webserver_port_set)
+    def __init__(self): 
+        this = _dheng.new_dev_params()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _dheng.delete_dev_params
+    __del__ = lambda self : None;
+dev_params_swigregister = _dheng.dev_params_swigregister
+dev_params_swigregister(dev_params)
+
+class gfx_params(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, gfx_params, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, gfx_params, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["flags"] = _dheng.gfx_params_flags_set
+    __swig_getmethods__["flags"] = _dheng.gfx_params_flags_get
+    if _newclass:flags = _swig_property(_dheng.gfx_params_flags_get, _dheng.gfx_params_flags_set)
+    __swig_setmethods__["msaa"] = _dheng.gfx_params_msaa_set
+    __swig_getmethods__["msaa"] = _dheng.gfx_params_msaa_get
+    if _newclass:msaa = _swig_property(_dheng.gfx_params_msaa_get, _dheng.gfx_params_msaa_set)
+    __swig_setmethods__["tex_quality"] = _dheng.gfx_params_tex_quality_set
+    __swig_getmethods__["tex_quality"] = _dheng.gfx_params_tex_quality_get
+    if _newclass:tex_quality = _swig_property(_dheng.gfx_params_tex_quality_get, _dheng.gfx_params_tex_quality_set)
+    __swig_setmethods__["tex_filter"] = _dheng.gfx_params_tex_filter_set
+    __swig_getmethods__["tex_filter"] = _dheng.gfx_params_tex_filter_get
+    if _newclass:tex_filter = _swig_property(_dheng.gfx_params_tex_filter_get, _dheng.gfx_params_tex_filter_set)
+    __swig_setmethods__["shading_quality"] = _dheng.gfx_params_shading_quality_set
+    __swig_getmethods__["shading_quality"] = _dheng.gfx_params_shading_quality_get
+    if _newclass:shading_quality = _swig_property(_dheng.gfx_params_shading_quality_get, _dheng.gfx_params_shading_quality_set)
+    __swig_setmethods__["hwver"] = _dheng.gfx_params_hwver_set
+    __swig_getmethods__["hwver"] = _dheng.gfx_params_hwver_get
+    if _newclass:hwver = _swig_property(_dheng.gfx_params_hwver_get, _dheng.gfx_params_hwver_set)
+    __swig_setmethods__["adapter_id"] = _dheng.gfx_params_adapter_id_set
+    __swig_getmethods__["adapter_id"] = _dheng.gfx_params_adapter_id_get
+    if _newclass:adapter_id = _swig_property(_dheng.gfx_params_adapter_id_get, _dheng.gfx_params_adapter_id_set)
+    __swig_setmethods__["width"] = _dheng.gfx_params_width_set
+    __swig_getmethods__["width"] = _dheng.gfx_params_width_get
+    if _newclass:width = _swig_property(_dheng.gfx_params_width_get, _dheng.gfx_params_width_set)
+    __swig_setmethods__["height"] = _dheng.gfx_params_height_set
+    __swig_getmethods__["height"] = _dheng.gfx_params_height_get
+    if _newclass:height = _swig_property(_dheng.gfx_params_height_get, _dheng.gfx_params_height_set)
+    def __init__(self): 
+        this = _dheng.new_gfx_params()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _dheng.delete_gfx_params
+    __del__ = lambda self : None;
+gfx_params_swigregister = _dheng.gfx_params_swigregister
+gfx_params_swigregister(gfx_params)
+
+PHX_FLAG_TRACKMEM = _dheng.PHX_FLAG_TRACKMEM
+PHX_FLAG_PROFILE = _dheng.PHX_FLAG_PROFILE
+class phx_params(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, phx_params, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, phx_params, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["flags"] = _dheng.phx_params_flags_set
+    __swig_getmethods__["flags"] = _dheng.phx_params_flags_get
+    if _newclass:flags = _swig_property(_dheng.phx_params_flags_get, _dheng.phx_params_flags_set)
+    __swig_setmethods__["mem_sz"] = _dheng.phx_params_mem_sz_set
+    __swig_getmethods__["mem_sz"] = _dheng.phx_params_mem_sz_get
+    if _newclass:mem_sz = _swig_property(_dheng.phx_params_mem_sz_get, _dheng.phx_params_mem_sz_set)
+    __swig_setmethods__["substeps_max"] = _dheng.phx_params_substeps_max_set
+    __swig_getmethods__["substeps_max"] = _dheng.phx_params_substeps_max_get
+    if _newclass:substeps_max = _swig_property(_dheng.phx_params_substeps_max_get, _dheng.phx_params_substeps_max_set)
+    __swig_setmethods__["scratch_sz"] = _dheng.phx_params_scratch_sz_set
+    __swig_getmethods__["scratch_sz"] = _dheng.phx_params_scratch_sz_get
+    if _newclass:scratch_sz = _swig_property(_dheng.phx_params_scratch_sz_get, _dheng.phx_params_scratch_sz_set)
+    def __init__(self): 
+        this = _dheng.new_phx_params()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _dheng.delete_phx_params
+    __del__ = lambda self : None;
+phx_params_swigregister = _dheng.phx_params_swigregister
+phx_params_swigregister(phx_params)
+
+class sct_params(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, sct_params, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, sct_params, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["mem_sz"] = _dheng.sct_params_mem_sz_set
+    __swig_getmethods__["mem_sz"] = _dheng.sct_params_mem_sz_get
+    if _newclass:mem_sz = _swig_property(_dheng.sct_params_mem_sz_get, _dheng.sct_params_mem_sz_set)
+    def __init__(self): 
+        this = _dheng.new_sct_params()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _dheng.delete_sct_params
+    __del__ = lambda self : None;
+sct_params_swigregister = _dheng.sct_params_swigregister
+sct_params_swigregister(sct_params)
+
+class init_params(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, init_params, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, init_params, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["flags"] = _dheng.init_params_flags_set
+    __swig_getmethods__["flags"] = _dheng.init_params_flags_get
+    if _newclass:flags = _swig_property(_dheng.init_params_flags_get, _dheng.init_params_flags_set)
+    __swig_setmethods__["console_lines_max"] = _dheng.init_params_console_lines_max_set
+    __swig_getmethods__["console_lines_max"] = _dheng.init_params_console_lines_max_get
+    if _newclass:console_lines_max = _swig_property(_dheng.init_params_console_lines_max_get, _dheng.init_params_console_lines_max_set)
+    __swig_setmethods__["gfx"] = _dheng.init_params_gfx_set
+    __swig_getmethods__["gfx"] = _dheng.init_params_gfx_get
+    if _newclass:gfx = _swig_property(_dheng.init_params_gfx_get, _dheng.init_params_gfx_set)
+    __swig_setmethods__["dev"] = _dheng.init_params_dev_set
+    __swig_getmethods__["dev"] = _dheng.init_params_dev_get
+    if _newclass:dev = _swig_property(_dheng.init_params_dev_get, _dheng.init_params_dev_set)
+    __swig_setmethods__["phx"] = _dheng.init_params_phx_set
+    __swig_getmethods__["phx"] = _dheng.init_params_phx_get
+    if _newclass:phx = _swig_property(_dheng.init_params_phx_get, _dheng.init_params_phx_set)
+    __swig_setmethods__["sct"] = _dheng.init_params_sct_set
+    __swig_getmethods__["sct"] = _dheng.init_params_sct_get
+    if _newclass:sct = _swig_property(_dheng.init_params_sct_get, _dheng.init_params_sct_set)
+    __swig_setmethods__["data_dir"] = _dheng.init_params_data_dir_set
+    __swig_getmethods__["data_dir"] = _dheng.init_params_data_dir_get
+    if _newclass:data_dir = _swig_property(_dheng.init_params_data_dir_get, _dheng.init_params_data_dir_set)
+    def __init__(self): 
+        this = _dheng.new_init_params()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _dheng.delete_init_params
+    __del__ = lambda self : None;
+init_params_swigregister = _dheng.init_params_swigregister
+init_params_swigregister(init_params)
+
+
+def app_init(*args):
+  return _dheng.app_init(*args)
+app_init = _dheng.app_init
+
+def app_release():
+  return _dheng.app_release()
+app_release = _dheng.app_release
+
+def app_load_config(*args):
+  return _dheng.app_load_config(*args)
+app_load_config = _dheng.app_load_config
+
+def app_defaultconfig():
+  return _dheng.app_defaultconfig()
+app_defaultconfig = _dheng.app_defaultconfig
+
+def app_query_displaymodes():
+  return _dheng.app_query_displaymodes()
+app_query_displaymodes = _dheng.app_query_displaymodes
+
+def app_free_displaymodes(*args):
+  return _dheng.app_free_displaymodes(*args)
+app_free_displaymodes = _dheng.app_free_displaymodes
+
+def app_swapbuffers():
+  return _dheng.app_swapbuffers()
+app_swapbuffers = _dheng.app_swapbuffers
+
+def app_set_rendertarget(*args):
+  return _dheng.app_set_rendertarget(*args)
+app_set_rendertarget = _dheng.app_set_rendertarget
+
+def eng_init(*args):
+  return _dheng.eng_init(*args)
+eng_init = _dheng.eng_init
+
+def eng_release():
+  return _dheng.eng_release()
+eng_release = _dheng.eng_release
+
+def eng_update():
+  return _dheng.eng_update()
+eng_update = _dheng.eng_update
+
+def app_resize_window(*args):
+  return _dheng.app_resize_window(*args)
+app_resize_window = _dheng.app_resize_window
+
+def eng_get_framealloc():
+  return _dheng.eng_get_framealloc()
+eng_get_framealloc = _dheng.eng_get_framealloc
+
+def eng_get_lsralloc():
+  return _dheng.eng_get_lsralloc()
+eng_get_lsralloc = _dheng.eng_get_lsralloc
+
+def eng_get_dataalloc():
+  return _dheng.eng_get_dataalloc()
+eng_get_dataalloc = _dheng.eng_get_dataalloc
+class camera(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, camera, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, camera, name)
+    __repr__ = _swig_repr
+    __swig_setmethods__["look"] = _dheng.camera_look_set
+    __swig_getmethods__["look"] = _dheng.camera_look_get
+    if _newclass:look = _swig_property(_dheng.camera_look_get, _dheng.camera_look_set)
+    __swig_setmethods__["pos"] = _dheng.camera_pos_set
+    __swig_getmethods__["pos"] = _dheng.camera_pos_get
+    if _newclass:pos = _swig_property(_dheng.camera_pos_get, _dheng.camera_pos_set)
+    __swig_setmethods__["fnear"] = _dheng.camera_fnear_set
+    __swig_getmethods__["fnear"] = _dheng.camera_fnear_get
+    if _newclass:fnear = _swig_property(_dheng.camera_fnear_get, _dheng.camera_fnear_set)
+    __swig_setmethods__["ffar"] = _dheng.camera_ffar_set
+    __swig_getmethods__["ffar"] = _dheng.camera_ffar_get
+    if _newclass:ffar = _swig_property(_dheng.camera_ffar_get, _dheng.camera_ffar_set)
+    __swig_setmethods__["fov"] = _dheng.camera_fov_set
+    __swig_getmethods__["fov"] = _dheng.camera_fov_get
+    if _newclass:fov = _swig_property(_dheng.camera_fov_get, _dheng.camera_fov_set)
+    __swig_setmethods__["aspect"] = _dheng.camera_aspect_set
+    __swig_getmethods__["aspect"] = _dheng.camera_aspect_get
+    if _newclass:aspect = _swig_property(_dheng.camera_aspect_get, _dheng.camera_aspect_set)
+    def __init__(self): 
+        this = _dheng.new_camera()
+        try: self.this.append(this)
+        except: self.this = this
+    __swig_destroy__ = _dheng.delete_camera
+    __del__ = lambda self : None;
+camera_swigregister = _dheng.camera_swigregister
+camera_swigregister(camera)
+
+
+def cam_init(*args):
+  return _dheng.cam_init(*args)
+cam_init = _dheng.cam_init
+
+def cam_set_pitchconst(*args):
+  return _dheng.cam_set_pitchconst(*args)
+cam_set_pitchconst = _dheng.cam_set_pitchconst
+
+def cam_set_viewsize(*args):
+  return _dheng.cam_set_viewsize(*args)
+cam_set_viewsize = _dheng.cam_set_viewsize
+
+def cam_update(*args):
+  return _dheng.cam_update(*args)
+cam_update = _dheng.cam_update
+
+def cam_pitch(*args):
+  return _dheng.cam_pitch(*args)
+cam_pitch = _dheng.cam_pitch
+
+def cam_yaw(*args):
+  return _dheng.cam_yaw(*args)
+cam_yaw = _dheng.cam_yaw
+
+def cam_roll(*args):
+  return _dheng.cam_roll(*args)
+cam_roll = _dheng.cam_roll
+
+def cam_fwd(*args):
+  return _dheng.cam_fwd(*args)
+cam_fwd = _dheng.cam_fwd
+
+def cam_strafe(*args):
+  return _dheng.cam_strafe(*args)
+cam_strafe = _dheng.cam_strafe
+
+def scn_create_scene(*args):
+  return _dheng.scn_create_scene(*args)
+scn_create_scene = _dheng.scn_create_scene
+
+def scn_destroy_scene(*args):
+  return _dheng.scn_destroy_scene(*args)
+scn_destroy_scene = _dheng.scn_destroy_scene
+
+def scn_setactive(*args):
+  return _dheng.scn_setactive(*args)
+scn_setactive = _dheng.scn_setactive
+
+def scn_getactive():
+  return _dheng.scn_getactive()
+scn_getactive = _dheng.scn_getactive
+
+def scn_setcam(*args):
+  return _dheng.scn_setcam(*args)
+scn_setcam = _dheng.scn_setcam
+
+def scn_getcam():
+  return _dheng.scn_getcam()
+scn_getcam = _dheng.scn_getcam
+
+def gfx_resize(*args):
+  return _dheng.gfx_resize(*args)
+gfx_resize = _dheng.gfx_resize
+
+def gfx_set_debug_renderfunc(*args):
+  return _dheng.gfx_set_debug_renderfunc(*args)
+gfx_set_debug_renderfunc = _dheng.gfx_set_debug_renderfunc
+gfx_render_grid = _dheng.gfx_render_grid
+INPUT_MOUSEKEY_NONE = _dheng.INPUT_MOUSEKEY_NONE
+INPUT_MOUSEKEY_LEFT = _dheng.INPUT_MOUSEKEY_LEFT
+INPUT_MOUSEKEY_RIGHT = _dheng.INPUT_MOUSEKEY_RIGHT
+INPUT_MOUSEKEY_MIDDLE = _dheng.INPUT_MOUSEKEY_MIDDLE
+INPUT_MOUSEKEY_WHEELUP = _dheng.INPUT_MOUSEKEY_WHEELUP
+INPUT_MOUSEKEY_WHEELDWN = _dheng.INPUT_MOUSEKEY_WHEELDWN
+INPUT_KEY_ESC = _dheng.INPUT_KEY_ESC
+INPUT_KEY_F1 = _dheng.INPUT_KEY_F1
+INPUT_KEY_F2 = _dheng.INPUT_KEY_F2
+INPUT_KEY_F3 = _dheng.INPUT_KEY_F3
+INPUT_KEY_F4 = _dheng.INPUT_KEY_F4
+INPUT_KEY_F5 = _dheng.INPUT_KEY_F5
+INPUT_KEY_F6 = _dheng.INPUT_KEY_F6
+INPUT_KEY_F7 = _dheng.INPUT_KEY_F7
+INPUT_KEY_F8 = _dheng.INPUT_KEY_F8
+INPUT_KEY_F9 = _dheng.INPUT_KEY_F9
+INPUT_KEY_F10 = _dheng.INPUT_KEY_F10
+INPUT_KEY_F11 = _dheng.INPUT_KEY_F11
+INPUT_KEY_F12 = _dheng.INPUT_KEY_F12
+INPUT_KEY_PRINTSCREEN = _dheng.INPUT_KEY_PRINTSCREEN
+INPUT_KEY_BREAK = _dheng.INPUT_KEY_BREAK
+INPUT_KEY_TILDE = _dheng.INPUT_KEY_TILDE
+INPUT_KEY_1 = _dheng.INPUT_KEY_1
+INPUT_KEY_2 = _dheng.INPUT_KEY_2
+INPUT_KEY_3 = _dheng.INPUT_KEY_3
+INPUT_KEY_4 = _dheng.INPUT_KEY_4
+INPUT_KEY_5 = _dheng.INPUT_KEY_5
+INPUT_KEY_6 = _dheng.INPUT_KEY_6
+INPUT_KEY_7 = _dheng.INPUT_KEY_7
+INPUT_KEY_8 = _dheng.INPUT_KEY_8
+INPUT_KEY_9 = _dheng.INPUT_KEY_9
+INPUT_KEY_0 = _dheng.INPUT_KEY_0
+INPUT_KEY_DASH = _dheng.INPUT_KEY_DASH
+INPUT_KEY_EQUAL = _dheng.INPUT_KEY_EQUAL
+INPUT_KEY_BACKSPACE = _dheng.INPUT_KEY_BACKSPACE
+INPUT_KEY_TAB = _dheng.INPUT_KEY_TAB
+INPUT_KEY_Q = _dheng.INPUT_KEY_Q
+INPUT_KEY_W = _dheng.INPUT_KEY_W
+INPUT_KEY_E = _dheng.INPUT_KEY_E
+INPUT_KEY_R = _dheng.INPUT_KEY_R
+INPUT_KEY_T = _dheng.INPUT_KEY_T
+INPUT_KEY_Y = _dheng.INPUT_KEY_Y
+INPUT_KEY_U = _dheng.INPUT_KEY_U
+INPUT_KEY_I = _dheng.INPUT_KEY_I
+INPUT_KEY_O = _dheng.INPUT_KEY_O
+INPUT_KEY_P = _dheng.INPUT_KEY_P
+INPUT_KEY_BRACKET_OPEN = _dheng.INPUT_KEY_BRACKET_OPEN
+INPUT_KEY_BEACKET_CLOSE = _dheng.INPUT_KEY_BEACKET_CLOSE
+INPUT_KEY_BACKSLASH = _dheng.INPUT_KEY_BACKSLASH
+INPUT_KEY_CAPS = _dheng.INPUT_KEY_CAPS
+INPUT_KEY_A = _dheng.INPUT_KEY_A
+INPUT_KEY_S = _dheng.INPUT_KEY_S
+INPUT_KEY_D = _dheng.INPUT_KEY_D
+INPUT_KEY_F = _dheng.INPUT_KEY_F
+INPUT_KEY_G = _dheng.INPUT_KEY_G
+INPUT_KEY_H = _dheng.INPUT_KEY_H
+INPUT_KEY_J = _dheng.INPUT_KEY_J
+INPUT_KEY_K = _dheng.INPUT_KEY_K
+INPUT_KEY_L = _dheng.INPUT_KEY_L
+INPUT_KEY_SEMICOLON = _dheng.INPUT_KEY_SEMICOLON
+INPUT_KEY_QUOTE = _dheng.INPUT_KEY_QUOTE
+INPUT_KEY_ENTER = _dheng.INPUT_KEY_ENTER
+INPUT_KEY_LSHIFT = _dheng.INPUT_KEY_LSHIFT
+INPUT_KEY_Z = _dheng.INPUT_KEY_Z
+INPUT_KEY_X = _dheng.INPUT_KEY_X
+INPUT_KEY_C = _dheng.INPUT_KEY_C
+INPUT_KEY_V = _dheng.INPUT_KEY_V
+INPUT_KEY_B = _dheng.INPUT_KEY_B
+INPUT_KEY_N = _dheng.INPUT_KEY_N
+INPUT_KEY_M = _dheng.INPUT_KEY_M
+INPUT_KEY_COMMA = _dheng.INPUT_KEY_COMMA
+INPUT_KEY_DOT = _dheng.INPUT_KEY_DOT
+INPUT_KEY_SLASH = _dheng.INPUT_KEY_SLASH
+INPUT_KEY_RSHIFT = _dheng.INPUT_KEY_RSHIFT
+INPUT_KEY_LCTRL = _dheng.INPUT_KEY_LCTRL
+INPUT_KEY_LALT = _dheng.INPUT_KEY_LALT
+INPUT_KEY_SPACE = _dheng.INPUT_KEY_SPACE
+INPUT_KEY_RALT = _dheng.INPUT_KEY_RALT
+INPUT_KEY_RCTRL = _dheng.INPUT_KEY_RCTRL
+INPUT_KEY_DELETE = _dheng.INPUT_KEY_DELETE
+INPUT_KEY_INSERT = _dheng.INPUT_KEY_INSERT
+INPUT_KEY_HOME = _dheng.INPUT_KEY_HOME
+INPUT_KEY_END = _dheng.INPUT_KEY_END
+INPUT_KEY_PGUP = _dheng.INPUT_KEY_PGUP
+INPUT_KEY_PGDWN = _dheng.INPUT_KEY_PGDWN
+INPUT_KEY_UP = _dheng.INPUT_KEY_UP
+INPUT_KEY_DOWN = _dheng.INPUT_KEY_DOWN
+INPUT_KEY_LEFT = _dheng.INPUT_KEY_LEFT
+INPUT_KEY_RIGHT = _dheng.INPUT_KEY_RIGHT
+INPUT_KEY_NUM_SLASH = _dheng.INPUT_KEY_NUM_SLASH
+INPUT_KEY_NUM_MULTIPLY = _dheng.INPUT_KEY_NUM_MULTIPLY
+INPUT_KEY_NUM_MINUS = _dheng.INPUT_KEY_NUM_MINUS
+INPUT_KEY_NUM_PLUS = _dheng.INPUT_KEY_NUM_PLUS
+INPUT_KEY_NUM_ENTER = _dheng.INPUT_KEY_NUM_ENTER
+INPUT_KEY_NUM_DOT = _dheng.INPUT_KEY_NUM_DOT
+INPUT_KEY_NUM_1 = _dheng.INPUT_KEY_NUM_1
+INPUT_KEY_NUM_2 = _dheng.INPUT_KEY_NUM_2
+INPUT_KEY_NUM_3 = _dheng.INPUT_KEY_NUM_3
+INPUT_KEY_NUM_4 = _dheng.INPUT_KEY_NUM_4
+INPUT_KEY_NUM_5 = _dheng.INPUT_KEY_NUM_5
+INPUT_KEY_NUM_6 = _dheng.INPUT_KEY_NUM_6
+INPUT_KEY_NUM_7 = _dheng.INPUT_KEY_NUM_7
+INPUT_KEY_NUM_8 = _dheng.INPUT_KEY_NUM_8
+INPUT_KEY_NUM_9 = _dheng.INPUT_KEY_NUM_9
+INPUT_KEY_NUM_0 = _dheng.INPUT_KEY_NUM_0
+INPUT_KEY_NUM_LOCK = _dheng.INPUT_KEY_NUM_LOCK
+INPUT_KEY_CNT = _dheng.INPUT_KEY_CNT
+
+def input_get_kbhit(*args):
+  return _dheng.input_get_kbhit(*args)
+input_get_kbhit = _dheng.input_get_kbhit
+
+def input_get_mouse():
+  return _dheng.input_get_mouse()
+input_get_mouse = _dheng.input_get_mouse
+
+def input_update(*args):
+  return _dheng.input_update(*args)
+input_update = _dheng.input_update
+
+def sct_runfile(*args):
+  return _dheng.sct_runfile(*args)
+sct_runfile = _dheng.sct_runfile
+# This file is compatible with both classic and new-style classes.
+
+
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.