[Python-ogre-commit] SF.net SVN: python-ogre: [470] trunk/python-ogre
Brought to you by:
andy_miller,
roman_yakovenko
|
From: <and...@us...> - 2007-11-13 07:17:33
|
Revision: 470
http://python-ogre.svn.sourceforge.net/python-ogre/?rev=470&view=rev
Author: andy_miller
Date: 2007-11-12 23:17:32 -0800 (Mon, 12 Nov 2007)
Log Message:
-----------
Added Watermesh and Ofusion (testing)\nGeneral merge to my working environment
Added Paths:
-----------
trunk/python-ogre/packages_2.6/
trunk/python-ogre/packages_2.6/ogre/
trunk/python-ogre/packages_2.6/ogre/__init__.py
trunk/python-ogre/packages_2.6/ogre/addons/
trunk/python-ogre/packages_2.6/ogre/addons/__init__.py
trunk/python-ogre/packages_2.6/ogre/addons/ogredshow/
trunk/python-ogre/packages_2.6/ogre/addons/ogredshow/__init__.py
trunk/python-ogre/packages_2.6/ogre/addons/ogrevideoffmpeg/
trunk/python-ogre/packages_2.6/ogre/addons/ogrevideoffmpeg/__init__.py
trunk/python-ogre/packages_2.6/ogre/addons/plib/
trunk/python-ogre/packages_2.6/ogre/addons/plib/__init__.py
trunk/python-ogre/packages_2.6/ogre/addons/theora/
trunk/python-ogre/packages_2.6/ogre/addons/theora/__init__.py
trunk/python-ogre/packages_2.6/ogre/gui/
trunk/python-ogre/packages_2.6/ogre/gui/CEGUI/
trunk/python-ogre/packages_2.6/ogre/gui/CEGUI/__init__.py
trunk/python-ogre/packages_2.6/ogre/gui/QuickGUI/
trunk/python-ogre/packages_2.6/ogre/gui/QuickGUI/__init__.py
trunk/python-ogre/packages_2.6/ogre/gui/__init__.py
trunk/python-ogre/packages_2.6/ogre/gui/betagui/
trunk/python-ogre/packages_2.6/ogre/gui/betagui/__init__.py
trunk/python-ogre/packages_2.6/ogre/gui/navi/
trunk/python-ogre/packages_2.6/ogre/gui/navi/__init__.py
trunk/python-ogre/packages_2.6/ogre/io/
trunk/python-ogre/packages_2.6/ogre/io/OIS/
trunk/python-ogre/packages_2.6/ogre/io/OIS/__init__.py
trunk/python-ogre/packages_2.6/ogre/io/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/
trunk/python-ogre/packages_2.6/ogre/physics/NxOgre/
trunk/python-ogre/packages_2.6/ogre/physics/NxOgre/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/ODE/
trunk/python-ogre/packages_2.6/ogre/physics/ODE/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/OgreNewt/
trunk/python-ogre/packages_2.6/ogre/physics/OgreNewt/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/OgreOde/
trunk/python-ogre/packages_2.6/ogre/physics/OgreOde/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/OgreRefApp/
trunk/python-ogre/packages_2.6/ogre/physics/OgreRefApp/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/Opcode/
trunk/python-ogre/packages_2.6/ogre/physics/Opcode/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/PhysX/
trunk/python-ogre/packages_2.6/ogre/physics/PhysX/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/__init__.py
trunk/python-ogre/packages_2.6/ogre/physics/bullet/
trunk/python-ogre/packages_2.6/ogre/physics/bullet/__init__.py
trunk/python-ogre/packages_2.6/ogre/renderer/
trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/
trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/__init__.py
trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/_ogre_exceptions_.py
trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/named_tuple.py
trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/sf_OIS.py
trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/sf_utils.py
trunk/python-ogre/packages_2.6/ogre/renderer/__init__.py
trunk/python-ogre/packages_2.6/ogre/sound/
trunk/python-ogre/packages_2.6/ogre/sound/OgreAL/
trunk/python-ogre/packages_2.6/ogre/sound/OgreAL/__init__.py
trunk/python-ogre/packages_2.6/ogre/sound/__init__.py
Added: trunk/python-ogre/packages_2.6/ogre/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+#keep me
Added: trunk/python-ogre/packages_2.6/ogre/addons/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/addons/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/addons/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+#keep me
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/addons/ogredshow/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/addons/ogredshow/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/addons/ogredshow/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+from _ogredshow_ import *
Added: trunk/python-ogre/packages_2.6/ogre/addons/ogrevideoffmpeg/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/addons/ogrevideoffmpeg/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/addons/ogrevideoffmpeg/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+from _ogrevideoffmpeg_ import *
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/addons/plib/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/addons/plib/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/addons/plib/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,2 @@
+import sys, os
+from _plib_ import *
Added: trunk/python-ogre/packages_2.6/ogre/addons/theora/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/addons/theora/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/addons/theora/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+from _theora_ import *
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/gui/CEGUI/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/gui/CEGUI/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/gui/CEGUI/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,10 @@
+import sys, os
+import warnings
+warnings.simplefilter('ignore', RuntimeWarning)
+
+## we need the path for additional CEGUI dll's
+if sys.platform == 'win32':
+ os.environ['PATH'] += ';' + __path__[0]
+
+from _cegui_ import *
+warnings.resetwarnings( )
Added: trunk/python-ogre/packages_2.6/ogre/gui/QuickGUI/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/gui/QuickGUI/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/gui/QuickGUI/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,5 @@
+import sys, os
+import warnings
+warnings.simplefilter('ignore', RuntimeWarning)
+from _quickgui_ import *
+warnings.resetwarnings( )
Added: trunk/python-ogre/packages_2.6/ogre/gui/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/gui/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/gui/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+#keep me
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/gui/betagui/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/gui/betagui/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/gui/betagui/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,4 @@
+import warnings
+warnings.simplefilter('ignore', RuntimeWarning)
+from _betagui_ import *
+warnings.resetwarnings( )
Added: trunk/python-ogre/packages_2.6/ogre/gui/navi/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/gui/navi/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/gui/navi/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,2 @@
+import sys, os
+from _navi_ import *
Added: trunk/python-ogre/packages_2.6/ogre/io/OIS/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/io/OIS/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/io/OIS/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,5 @@
+import warnings
+warnings.simplefilter('ignore', RuntimeWarning)
+
+from _ois_ import *
+warnings.resetwarnings( )
Added: trunk/python-ogre/packages_2.6/ogre/io/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/io/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/io/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+#keep me
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/physics/NxOgre/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/NxOgre/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/NxOgre/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,7 @@
+import warnings
+warnings.simplefilter('ignore', RuntimeWarning)
+
+from _nxogre_ import *
+
+warnings.resetwarnings( )
+
Added: trunk/python-ogre/packages_2.6/ogre/physics/ODE/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/ODE/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/ODE/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+from _ode_ import *
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/physics/OgreNewt/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/OgreNewt/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/OgreNewt/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,6 @@
+import warnings
+warnings.simplefilter('ignore', RuntimeWarning)
+
+from _ogrenewt_ import *
+
+warnings.resetwarnings( )
Added: trunk/python-ogre/packages_2.6/ogre/physics/OgreOde/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/OgreOde/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/OgreOde/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+from _ogreode_ import *
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/physics/OgreRefApp/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/OgreRefApp/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/OgreRefApp/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+from _ogrerefapp_ import *
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/physics/Opcode/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/Opcode/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/Opcode/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+from _opcode_ import *
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/physics/PhysX/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/PhysX/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/PhysX/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,21 @@
+import warnings
+warnings.simplefilter('ignore', RuntimeWarning)
+
+from _physx_ import *
+import ogre.renderer.OGRE as ogre
+
+def NxQuat( arg0=None, arg1=None ):
+ if isinstance (arg0, ogre.Quaternion) :
+ ret = _physx_.NxQuat()
+ ret.w = arg0.w
+ ret.x = arg0.x
+ ret.y = arg0.y
+ ret.z = arg0.z
+ return ret
+ elif arg1:
+ return _physx_.NxQuat(arg0,arg1)
+ elif arg0:
+ return _physx_.NxQuat(arg0)
+ return _physx_.NxQuat()
+warnings.resetwarnings( )
+
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/physics/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+#keep me
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/physics/bullet/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/physics/bullet/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/physics/bullet/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+from _bullet_ import *
Added: trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,42 @@
+import sys, os
+import warnings
+warnings.simplefilter('ignore', RuntimeWarning)
+
+# Note that we put the Python-Ogre path first to ensure we don't get strange problems with windows
+# picking up the wrong dlls -- Thanks to Pelle for tracking down this issue..
+if sys.platform == 'win32':
+ os.environ['PATH'] = __path__[0] +';' + os.environ['PATH']
+
+from _ogre_ import *
+from _ogre_exceptions_ import *
+
+
+## Note the work around to ensure the Radians and Degree types work correctly
+## the problem is the constructors are overloaded in each class and passing a real to
+## Radian actually causes boost to try it as a Degree first, and as Degreee has a 'Real' overload
+## it create the Degree and passes it back to Radian --
+##
+## and as it's a lot of work and overly confusing to fix this in generate_code.py we fix it here
+##
+def Radian( r=None, d=None ):
+ if isinstance( r, _ogre_.Degree ):
+ return _ogre_.Radian( r )
+ elif isinstance( r, _ogre_.Radian ):
+ return _ogre_.Radian().assign( r )
+ elif d:
+ return _ogre_.Radian( d=d )
+ else:
+ return _ogre_.Radian( r=r )
+
+def Degree( d=None, r=None ):
+ if isinstance( d, _ogre_.Radian ):
+ return _ogre_.Degree( d )
+ elif isinstance( d, _ogre_.Degree ):
+ return _ogre_.Degree().assign( d )
+ elif r:
+ return _ogre.Degree (r=r)
+ else:
+ return _ogre_.Degree( d=d )
+
+warnings.resetwarnings( )
+
Added: trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/_ogre_exceptions_.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/_ogre_exceptions_.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/_ogre_exceptions_.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,111 @@
+import _ogre_
+
+class OgreException(Exception):
+ def __init__( self, app_error ):
+ Exception.__init__( self )
+ self._pimpl = app_error
+
+ def __str__( self ):
+ return self._pimpl.getFullDescription()
+
+ def __getattribute__(self, attr):
+ my_pimpl = super(OgreException, self).__getattribute__("_pimpl")
+ try:
+ return getattr(my_pimpl, attr)
+ except AttributeError:
+ return super(OgreException,self).__getattribute__(attr)
+
+_ogre_.OgreException = OgreException
+#this one for backward compatability
+_ogre_.Exception = OgreException
+_ogre_._Exception_.py_err_class = OgreException
+
+class OgreFileNotFoundException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreFileNotFoundException,self).__getattribute__(attr)
+
+_ogre_._FileNotFoundException_.py_err_class = OgreFileNotFoundException
+_ogre_.OgreFileNotFoundException = OgreFileNotFoundException
+
+class OgreIOException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreIOException,self).__getattribute__(attr)
+
+_ogre_._IOException_.py_err_class = OgreIOException
+_ogre_.OgreIOException = OgreIOException
+
+class OgreInvalidStateException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreInvalidStateException,self).__getattribute__(attr)
+
+_ogre_._InvalidStateException_.py_err_class = OgreInvalidStateException
+_ogre_.OgreInvalidStateException = OgreInvalidStateException
+
+class OgreInvalidParametersException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreInvalidParametersException,self).__getattribute__(attr)
+
+_ogre_._InvalidParametersException_.py_err_class = OgreInvalidParametersException
+_ogre_.OgreInvalidParametersException = OgreInvalidParametersException
+
+class OgreUnimplementedException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreUnimplementedException,self).__getattribute__(attr)
+
+_ogre_._UnimplementedException_.py_err_class = OgreUnimplementedException
+_ogre_.OgreUnimplementedException = OgreUnimplementedException
+
+class OgreInternalErrorException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreInternalErrorException,self).__getattribute__(attr)
+
+_ogre_._InternalErrorException_.py_err_class = OgreInternalErrorException
+_ogre_.OgreInternalErrorException = OgreInternalErrorException
+
+class OgreItemIdentityException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreItemIdentityException,self).__getattribute__(attr)
+
+_ogre_._ItemIdentityException_.py_err_class = OgreItemIdentityException
+_ogre_.OgreItemIdentityException = OgreItemIdentityException
+
+class OgreRuntimeAssertionException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreRuntimeAssertionException,self).__getattribute__(attr)
+
+_ogre_._RuntimeAssertionException_.py_err_class = OgreRuntimeAssertionException
+_ogre_.OgreRuntimeAssertionException = OgreRuntimeAssertionException
+
+class OgreRenderingAPIException(OgreException):
+ def __init__( self, app_error ):
+ OgreException.__init__( self, app_error )
+
+ def __getattribute__(self, attr):
+ return super(OgreRenderingAPIException,self).__getattribute__(attr)
+
+_ogre_._RenderingAPIException_.py_err_class = OgreRenderingAPIException
+_ogre_.OgreRenderingAPIException = OgreRenderingAPIException
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/named_tuple.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/named_tuple.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/named_tuple.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,46 @@
+# This file has been generated by Py++.
+
+# Copyright 2004 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+class named_tuple(tuple):
+ """Creates tuple, which allows access to stored values by name and\or by index.
+
+ Construction example: named_tuple( ('a',0), ('b',1) )
+ 'a' and 'b' are names, while 0 and 1 are values
+ """
+
+ def __new__(cls, *args):
+ return tuple.__new__( cls, [ val for name, val in args] )
+
+ def __init__(self, *args):
+ tuple.__init__( self )
+ self.__dict__[ '__name2value' ] = dict( args )
+
+ def __getattr__(self, name):
+ try:
+ return self.__dict__['__name2value'][ name ]
+ except KeyError:
+ raise AttributeError( "named_tuple has no attribute '%s'" % name )
+
+ def __setattr__(self, name, value):
+ raise AttributeError( "named_tuple has no attribute '%s'" % name )
+
+ def __getitem__( self, key ):
+ #TODO: it could be nice to support slicing. So the __getitem__ in case of
+ #slicing will return new named_tuple.
+ if isinstance( key, basestring ):
+ return self.__dict__['__name2value'][ key ]
+ else:
+ return super( named_tuple, self ).__getitem__( key )
+
+if __name__ == '__main__':
+ nt = named_tuple( ('a',0), ('b',1) )
+ assert nt.a == 0 and nt.b == 1
+ a,b = nt
+ assert a == 0 and b == 1
+ assert nt[ "a" ] == 0 and nt[ "b" ] == 1
+
+
Added: trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/sf_OIS.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/sf_OIS.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/sf_OIS.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,461 @@
+# This code is in the Public Domain
+# -----------------------------------------------------------------------------
+# This source file is part of Python-Ogre
+# For the latest info, see http://python-ogre.org/
+#
+# It is likely based on original code from OGRE and/or PyOgre
+# For the latest info, see http://www.ogre3d.org/
+#
+# You may use this sample code for anything you like, it is not covered by the
+# LGPL.
+# -----------------------------------------------------------------------------
+import ogre.renderer.OGRE as ogre
+import ogre.io.OIS as OIS
+###import OgreRefApp
+
+def getPluginPath():
+ """Return the absolute path to a valid plugins.cfg file."""
+ import sys
+ import os
+ import os.path
+
+ paths = [os.path.join(os.getcwd(), 'plugins.cfg'),
+ '/etc/OGRE/plugins.cfg',
+ os.path.join(os.path.dirname(os.path.abspath(__file__)),
+ 'plugins.cfg')]
+ for path in paths:
+ if os.path.exists(path):
+ return path
+
+ sys.stderr.write("\n"
+ "** Warning: Unable to locate a suitable plugins.cfg file.\n"
+ "** Warning: Please check your ogre installation and copy a\n"
+ "** Warning: working plugins.cfg file to the current directory.\n\n")
+ raise ogre.Exception(0, "can't locate the 'plugins.cfg' file", "")
+
+class Application(object):
+ "This class is the base for an Ogre application."
+ debugText=""
+
+ def __init__(self):
+ self.frameListener = None
+ self.root = None
+ self.camera = None
+ self.renderWindow = None
+ self.sceneManager = None
+ self.world = None
+
+ def __del__(self):
+ "Clear variables, this should not actually be needed."
+ del self.camera
+ del self.sceneManager
+ del self.frameListener
+ if self.world:
+ del self.world
+ del self.root
+ del self.renderWindow
+
+ def go(self):
+ "Starts the rendering loop."
+ if not self._setUp():
+ return
+ if self._isPsycoEnabled():
+ self._activatePsyco()
+ self.root.startRendering()
+
+ def goOneFrame(self):
+ "Starts the rendering loop. Show how to use the renderOneFrame Method"
+ if not self._setUp():
+ return
+ if self._isPsycoEnabled():
+ self._activatePsyco()
+
+ self.root.getRenderSystem()._initRenderTargets()
+ while True:
+ ogre.WindowEventUtilities().messagePump()
+ if not self.root.renderOneFrame():
+ break
+
+
+
+ def _setUp(self):
+ """This sets up the ogre application, and returns false if the user
+ hits "cancel" in the dialog box."""
+ self.root = ogre.Root(getPluginPath())
+ self.root.setFrameSmoothingPeriod (5.0)
+
+ self._setUpResources()
+ if not self._configure():
+ return False
+
+ self._chooseSceneManager()
+ self._createWorld()
+ self._createCamera()
+ self._createViewports()
+
+ ogre.TextureManager.getSingleton().setDefaultNumMipmaps (5)
+
+ self._createResourceListener()
+ self._loadResources()
+
+ self._createScene()
+ self._createFrameListener()
+ return True
+
+ def _setUpResources(self):
+ """This sets up Ogre's resources, which are required to be in
+ resources.cfg."""
+ config = ogre.ConfigFile()
+ config.load('resources.cfg' )
+ seci = config.getSectionIterator()
+ while seci.hasMoreElements():
+ SectionName = seci.peekNextKey()
+ Section = seci.getNext()
+ for item in Section:
+ ogre.ResourceGroupManager.getSingleton().\
+ addResourceLocation(item.value, item.key, SectionName)
+
+ def _createResourceListener(self):
+ """This method is here if you want to add a resource listener to check
+ the status of resources loading."""
+ pass
+
+ def _createWorld ( self ):
+ """ this should be overridden when supporting the OgreRefApp framework. Also note you
+ will have to override __createCamera"""
+ pass
+
+ def _loadResources(self):
+ """This loads all initial resources. Redefine this if you do not want
+ to load all resources at startup."""
+ ogre.ResourceGroupManager.getSingleton().initialiseAllResourceGroups()
+
+ def _configure(self):
+ """This shows the config dialog and creates the renderWindow."""
+ carryOn = self.root.showConfigDialog()
+ if carryOn:
+ self.renderWindow = self.root.initialise(True, "OGRE Render Window")
+ return carryOn
+
+ def _chooseSceneManager(self):
+ """Chooses a default SceneManager."""
+ #typedef uint16 SceneTypeMask;
+ #md=ogre.SceneManagerMetaData()
+ #md.sceneTypeMask=ogre.ST_GENERIC
+ #print dir(self.root)
+ self.sceneManager = self.root.createSceneManager(ogre.ST_GENERIC,"ExampleSMInstance")
+
+ def _createCamera(self):
+ """Creates the camera."""
+ self.camera = self.sceneManager.createCamera('PlayerCam')
+ self.camera.setPosition(ogre.Vector3(0, 0, 500))
+ self.camera.lookAt(ogre.Vector3(0, 0, -300))
+ self.camera.NearClipDistance = 5
+
+ def _createViewports(self):
+ """Creates the Viewport."""
+ ## We want a single sampleframework so this work around is to support OgreRefApp Framework
+ ## if using the RefApp camera is based upon World etc etc
+ try:
+ self.viewport = self.renderWindow.addViewport(self.camera.getRealCamera())
+ except AttributeError:
+ self.viewport = self.renderWindow.addViewport(self.camera)
+ self.viewport.BackgroundColour = ogre.ColourValue(0,0,0)
+
+ def _createScene(self):
+ """Creates the scene. Override this with initial scene contents."""
+ pass
+
+ def _createFrameListener(self):
+ """Creates the FrameListener."""
+ #,self.frameListener, self.frameListener.Mouse
+ self.frameListener = FrameListener(self.renderWindow, self.camera)
+ self.frameListener.showDebugOverlay(True)
+ self.root.addFrameListener(self.frameListener)
+
+ def _isPsycoEnabled(self):
+ """Override this function and return True to turn on Psyco"""
+ return False
+
+ def _activatePsyco(self):
+ """Import Psyco if available"""
+ try:
+ import psyco
+ psyco.full()
+ except ImportError:
+ pass
+
+
+class FrameListener(ogre.FrameListener, ogre.WindowEventListener):
+ """A default frame listener, which takes care of basic mouse and keyboard
+ input."""
+
+ def __init__(self, renderWindow, camera, bufferedKeys = False, bufferedMouse = True, bufferedJoy = False):
+ ogre.FrameListener.__init__(self)
+ ogre.WindowEventListener.__init__(self)
+ self.camera = camera
+ self.renderWindow = renderWindow
+ self.statisticsOn = True
+ self.numScreenShots = 0
+ self.timeUntilNextToggle = 0
+ self.sceneDetailIndex = 0
+ self.moveScale = 0.0
+ self.rotationScale = 0.0
+ self.translateVector = ogre.Vector3(0.0,0.0,0.0)
+ self.filtering = ogre.TFO_BILINEAR
+ self.showDebugOverlay(True)
+ self.moveSpeed = 100.0
+ self.rotationSpeed = 8.0
+ self.displayCameraDetails = False
+ self.bufferedKeys = bufferedKeys
+ self.bufferedMouse = bufferedMouse
+ self.bufferedJoy = bufferedJoy
+ self.MenuMode = False # lets understand a simple menu function
+ ## we can tell if we are using OgreRefapp based upon the camera class
+
+ if self.camera.__class__ == ogre.Camera:
+ self.RefAppEnable = False
+ else:
+ self.RefAppEnable = True
+ self._setupInput()
+
+ def __del__ (self ):
+ ogre.WindowEventUtilities.removeWindowEventListener(self.renderWindow, self)
+ self.windowClosed(self.renderWindow)
+
+ def _setupInput(self):
+ # ignore buffered input
+
+ windowHnd = self.renderWindow.getCustomAttributeInt("WINDOW")
+ self.InputManager = \
+ OIS.createPythonInputSystem([("WINDOW",str(windowHnd))])
+
+ #pl = OIS.ParamList()
+ #windowHndStr = str ( windowHnd)
+ #pl.insert("WINDOW", windowHndStr)
+ #im = OIS.InputManager.createInputSystem( pl )
+
+ #Create all devices (We only catch joystick exceptions here, as, most people have Key/Mouse)
+ self.Keyboard = self.InputManager.createInputObjectKeyboard( OIS.OISKeyboard, self.bufferedKeys )
+ self.Mouse = self.InputManager.createInputObjectMouse( OIS.OISMouse, self.bufferedMouse )
+ try:
+ self.Joy = self.InputManager.createInputObjectJoyStick( OIS.OISJoyStick, self.bufferedJoy )
+ except:
+ self.Joy = False
+#
+ #Set initial mouse clipping size
+ self.windowResized(self.renderWindow)
+
+ self.showDebugOverlay(True)
+
+ #Register as a Window listener
+ ogre.WindowEventUtilities.addWindowEventListener(self.renderWindow, self);
+
+ def setMenuMode(self, mode):
+ self.MenuMode = mode
+
+ def _UpdateSimulation( self, frameEvent ):
+ # create a real version of this to update the simulation
+ pass
+
+ def windowResized (self, rw):
+ [width, height, depth, left, top] = rw.getMetrics() # Note the wrapped function as default needs unsigned int's
+ ms = self.Mouse.getMouseState()
+ ms.width = width
+ ms.height = height
+
+ def windowClosed(self, rw):
+ #Only close for window that created OIS (mWindow)
+ if( rw == self.renderWindow ):
+ if( self.InputManager ):
+ self.InputManager.destroyInputObjectMouse( self.Mouse )
+ self.InputManager.destroyInputObjectKeyboard( self.Keyboard )
+ if self.Joy:
+ self.InputManager.destroyInputObjectJoyStick( self.Joy )
+ OIS.InputManager.destroyInputSystem(self.InputManager)
+ self.InputManager=None
+
+ def frameStarted(self, frameEvent):
+ if(self.renderWindow.isClosed()):
+ return False
+
+ ##Need to capture/update each device - this will also trigger any listeners
+ self.Keyboard.capture()
+ self.Mouse.capture()
+ if( self.Joy ):
+ self.Joy.capture()
+
+ ##bool buffJ = (mJoy) ? mJoy->buffered() : true;
+
+ if self.timeUntilNextToggle >= 0:
+ self.timeUntilNextToggle -= frameEvent.timeSinceLastFrame
+
+ if frameEvent.timeSinceLastFrame == 0:
+ self.moveScale = 1
+ self.rotationScale = 0.1
+ else:
+ self.moveScale = self.moveSpeed * frameEvent.timeSinceLastFrame
+ self.rotationScale = self.rotationSpeed * frameEvent.timeSinceLastFrame
+
+ self.rotationX = ogre.Degree(0.0)
+ self.rotationY = ogre.Degree(0.0)
+ self.translateVector = ogre.Vector3(0.0, 0.0, 0.0)
+ if not self._processUnbufferedKeyInput(frameEvent):
+ return False
+
+ if not self.MenuMode: # if we are in Menu mode we don't move the camera..
+ self._processUnbufferedMouseInput(frameEvent)
+ self._moveCamera()
+ # Perform simulation step only if using OgreRefApp. For simplicity create a function that simply does
+ ### "OgreRefApp.World.getSingleton().simulationStep(frameEvent.timeSinceLastFrame)"
+
+ if self.RefAppEnable:
+ self._UpdateSimulation( frameEvent )
+ return True
+
+ def frameEnded(self, frameEvent):
+ self._updateStatistics()
+ return True
+
+ def showDebugOverlay(self, show):
+ """Turns the debug overlay (frame statistics) on or off."""
+ overlay = ogre.OverlayManager.getSingleton().getByName('Core/DebugOverlay')
+ if overlay is None:
+ raise ogre.Exception(111, "Could not find overlay Core/DebugOverlay", "SampleFramework.py")
+ if show:
+ overlay.show()
+ else:
+ overlay.hide()
+
+ def _processUnbufferedKeyInput(self, frameEvent):
+ if self.Keyboard.isKeyDown(OIS.KC_A):
+ self.translateVector.x = -self.moveScale
+
+ if self.Keyboard.isKeyDown(OIS.KC_D):
+ self.translateVector.x = self.moveScale
+
+ if self.Keyboard.isKeyDown(OIS.KC_UP) or self.Keyboard.isKeyDown(OIS.KC_W):
+ self.translateVector.z = -self.moveScale
+
+ if self.Keyboard.isKeyDown(OIS.KC_DOWN) or self.Keyboard.isKeyDown(OIS.KC_S):
+ self.translateVector.z = self.moveScale
+
+ if self.Keyboard.isKeyDown(OIS.KC_PGUP):
+ self.translateVector.y = self.moveScale
+
+ if self.Keyboard.isKeyDown(OIS.KC_PGDOWN):
+ self.translateVector.y = - self.moveScale
+
+ if self.Keyboard.isKeyDown(OIS.KC_RIGHT):
+ self.rotationX = - self.rotationScale
+
+ if self.Keyboard.isKeyDown(OIS.KC_LEFT):
+ self.rotationX = self.rotationScale
+
+ if self.Keyboard.isKeyDown(OIS.KC_ESCAPE) or self.Keyboard.isKeyDown(OIS.KC_Q):
+ return False
+
+ if( self.Keyboard.isKeyDown(OIS.KC_F) and self.timeUntilNextToggle <= 0 ):
+ self.statisticsOn = not self.statisticsOn
+ self.showDebugOverlay(self.statisticsOn)
+ self.timeUntilNextToggle = 1
+
+ if self.Keyboard.isKeyDown(OIS.KC_T) and self.timeUntilNextToggle <= 0:
+ if self.filtering == ogre.TFO_BILINEAR:
+ self.filtering = ogre.TFO_TRILINEAR
+ self.Aniso = 1
+ elif self.filtering == ogre.TFO_TRILINEAR:
+ self.filtering = ogre.TFO_ANISOTROPIC
+ self.Aniso = 8
+ else:
+ self.filtering = ogre.TFO_BILINEAR
+ self.Aniso = 1
+
+ ogre.MaterialManager.getSingleton().setDefaultTextureFiltering(self.filtering)
+ ogre.MaterialManager.getSingleton().setDefaultAnisotropy(self.Aniso)
+ self.showDebugOverlay(self.statisticsOn)
+ self.timeUntilNextToggle = 1
+
+ if self.Keyboard.isKeyDown(OIS.KC_SYSRQ) and self.timeUntilNextToggle <= 0:
+ path = 'screenshot_%d.png' % self.numScreenShots
+ self.numScreenShots += 1
+ self.renderWindow.writeContentsToFile(path)
+ Application.debugText = 'screenshot taken: ' + path
+ self.timeUntilNextToggle = 0.5
+
+ if self.Keyboard.isKeyDown(OIS.KC_R) and self.timeUntilNextToggle <= 0:
+ detailsLevel = [ ogre.PM_SOLID,
+ ogre.PM_WIREFRAME,
+ ogre.PM_POINTS ]
+ self.sceneDetailIndex = (self.sceneDetailIndex + 1) % len(detailsLevel)
+ self.camera.polygonMode=detailsLevel[self.sceneDetailIndex]
+ self.timeUntilNextToggle = 0.5
+
+ if self.Keyboard.isKeyDown(OIS.KC_F) and self.timeUntilNextToggle <= 0:
+ self.statisticsOn = not self.statisticsOn
+ self.showDebugOverlay(self.statisticsOn)
+ self.timeUntilNextToggle = 1
+
+ if self.Keyboard.isKeyDown(OIS.KC_P) and self.timeUntilNextToggle <= 0:
+ self.displayCameraDetails = not self.displayCameraDetails
+ if not self.displayCameraDetails:
+ Application.debugText = ""
+
+ if self.displayCameraDetails:
+ # Print camera details
+ pos = self.camera.getDerivedPosition()
+ o = self.camera.getDerivedOrientation()
+ Application.debugText = "P: %.3f %.3f %.3f O: %.3f %.3f %.3f %.3f" \
+ % (pos.x,pos.y,pos.z, o.w,o.x,o.y,o.z)
+ return True
+
+ def _isToggleKeyDown(self, keyCode, toggleTime = 1.0):
+ if self.Keyboard.isKeyDown(keyCode)and self.timeUntilNextToggle <=0:
+ self.timeUntilNextToggle = toggleTime
+ return True
+ return False
+
+ def _isToggleMouseDown(self, Button, toggleTime = 1.0):
+ ms = self.Mouse.getMouseState()
+ if ms.buttonDown( Button ) and self.timeUntilNextToggle <=0:
+ self.timeUntilNextToggle = toggleTime
+ return True
+ return False
+
+ def _processUnbufferedMouseInput(self, frameEvent):
+ ms = self.Mouse.getMouseState()
+ if ms.buttonDown( OIS.MB_Right ):
+ self.translateVector.x += ms.X.rel * 0.13
+ self.translateVector.y -= ms.Y.rel * 0.13
+ else:
+ self.rotationX = ogre.Degree(- ms.X.rel * 0.13)
+ self.rotationY = ogre.Degree(- ms.Y.rel * 0.13)
+
+ def _moveCamera(self):
+ self.camera.yaw(self.rotationX)
+ self.camera.pitch(self.rotationY)
+ try:
+ self.camera.translate(self.translateVector) # for using OgreRefApp
+ except AttributeError:
+ self.camera.moveRelative(self.translateVector)
+
+ def _updateStatistics(self):
+ statistics = self.renderWindow
+ self._setGuiCaption('Core/AverageFps', 'Average FPS: %f' % statistics.getAverageFPS())
+ self._setGuiCaption('Core/CurrFps', 'Current FPS: %f' % statistics.getLastFPS())
+ self._setGuiCaption('Core/BestFps',
+ 'Best FPS: %f %d ms' % (statistics.getBestFPS(), statistics.getBestFrameTime()))
+ self._setGuiCaption('Core/WorstFps',
+ 'Worst FPS: %f %d ms' % (statistics.getWorstFPS(), statistics.getWorstFrameTime()))
+ self._setGuiCaption('Core/NumTris', 'Triangle Count: %d' % statistics.getTriangleCount())
+ self._setGuiCaption('Core/DebugText', Application.debugText)
+
+ def _setGuiCaption(self, elementName, text):
+ element = ogre.OverlayManager.getSingleton().getOverlayElement(elementName, False)
+ ##d=ogre.UTFString("hell0")
+ ##element.setCaption(d)
+
+ #element.caption="hello"
+
+ #element.setCaption("help")
+ element.setCaption(text) # ogre.UTFString(text))
Added: trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/sf_utils.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/sf_utils.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/renderer/OGRE/sf_utils.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,21 @@
+## Common utilities for the sample framework...
+##
+def getPluginPath():
+ """Return the absolute path to a valid plugins.cfg file."""
+ import sys
+ import os
+ import os.path
+
+ paths = [os.path.join(os.getcwd(), 'plugins.cfg'),
+ '/etc/OGRE/plugins.cfg',
+ os.path.join(os.path.dirname(os.path.abspath(__file__)),
+ 'plugins.cfg')]
+ for path in paths:
+ if os.path.exists(path):
+ return path
+
+ sys.stderr.write("\n"
+ "** Warning: Unable to locate a suitable plugins.cfg file.\n"
+ "** Warning: Please check your ogre installation and copy a\n"
+ "** Warning: working plugins.cfg file to the current directory.\n\n")
+ raise ogre.Exception(0, "can't locate the 'plugins.cfg' file", "")
Added: trunk/python-ogre/packages_2.6/ogre/renderer/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/renderer/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/renderer/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+#keep me
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/sound/OgreAL/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/sound/OgreAL/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/sound/OgreAL/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1,6 @@
+import sys, os
+
+if sys.platform == 'win32':
+ os.environ['PATH'] += ';' + __path__[0]
+
+from _ogreal_ import *
\ No newline at end of file
Added: trunk/python-ogre/packages_2.6/ogre/sound/__init__.py
===================================================================
--- trunk/python-ogre/packages_2.6/ogre/sound/__init__.py (rev 0)
+++ trunk/python-ogre/packages_2.6/ogre/sound/__init__.py 2007-11-13 07:17:32 UTC (rev 470)
@@ -0,0 +1 @@
+#keep me
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|