[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. |