[Python-ogre-commit] SF.net SVN: python-ogre:[760] trunk/python-ogre
Brought to you by:
andy_miller,
roman_yakovenko
|
From: <and...@us...> - 2008-10-19 12:06:40
|
Revision: 760
http://python-ogre.svn.sourceforge.net/python-ogre/?rev=760&view=rev
Author: andy_miller
Date: 2008-10-19 12:06:32 +0000 (Sun, 19 Oct 2008)
Log Message:
-----------
Added unit test support to sampleframework
Fixing demos due ot recent APi changes
Modified Paths:
--------------
trunk/python-ogre/demos/ogre/Demo_BSP.py
trunk/python-ogre/demos/ogre/Demo_BspCollision.py
trunk/python-ogre/demos/ogre/Demo_Lighting.py
trunk/python-ogre/demos/ogre/Demo_Shadows.py
trunk/python-ogre/packages_2.5/ogre/renderer/OGRE/sf_OIS.py
Modified: trunk/python-ogre/demos/ogre/Demo_BSP.py
===================================================================
--- trunk/python-ogre/demos/ogre/Demo_BSP.py 2008-10-16 08:44:11 UTC (rev 759)
+++ trunk/python-ogre/demos/ogre/Demo_BSP.py 2008-10-19 12:06:32 UTC (rev 760)
@@ -82,7 +82,7 @@
self.camera.pitch(ogre.Degree(90)) # Quake uses X/Y horizon, Z up
self.camera.rotate(vp.orientation)
# Don't yaw along variable axis, causes leaning
- self.camera.setFixedYawAxis(True, ogre.Vector3.UNIT_Z)
+ self.camera.setFixedYawAxis(True, ogre.Vector3().UNIT_Z)
## Look at a nice place :)
self.camera.lookAt(-150,40,30)
Modified: trunk/python-ogre/demos/ogre/Demo_BspCollision.py
===================================================================
--- trunk/python-ogre/demos/ogre/Demo_BspCollision.py 2008-10-16 08:44:11 UTC (rev 759)
+++ trunk/python-ogre/demos/ogre/Demo_BspCollision.py 2008-10-19 12:06:32 UTC (rev 760)
@@ -69,14 +69,19 @@
gBall.setPosition(self.camera.getPosition() +
self.camera.getDirection() * self.camera.getNearClipDistance() * 2)
gBall.setLinearVelocity(self.camera.getDirection() * 200)
- gBall.setAngularVelocity(ogre.Vector3.ZERO)
+ gBall.setAngularVelocity(ogre.Vector3().ZERO)
## Move the targeter
gRsq.setRay(self.camera.getRealCamera().getCameraToViewportRay(0.5, 0.5))
for queryResult in gRsq.execute():
gTargetNode.setPosition(gRsq.getRay().getPoint(queryResult.distance))
return ret
-
+
+ def _moveCamera(self):
+ self.camera.yaw(self.rotationX)
+ self.camera.pitch(self.rotationY)
+ self.camera.translate(self.translateVector) # for using OgreRefApp
+
class BspCollisionApplication (sf.Application):
def __init__(self):
"Init Render Application"
@@ -133,7 +138,7 @@
self.camera.pitch(ogre.Degree(d=90)) ## Quake uses X/Y horizon, Z up
self.camera.rotate(vp.orientation)
## Don't yaw along variable axis, causes leaning
- self.camera.setFixedYawAxis(True, ogre.Vector3.UNIT_Z)
+ self.camera.setFixedYawAxis(True, ogre.Vector3().UNIT_Z)
## Look at the boxes
self.camera.lookAt(-150,40,30)
@@ -168,7 +173,7 @@
Pass = mat.getTechnique(0).getPass(0)
tex = Pass.createTextureUnitState()
tex.setColourOperationEx(ogre.LBX_SOURCE1, ogre.LBS_MANUAL, ogre.LBS_CURRENT,
- ogre.ColourValue.Red)
+ ogre.ColourValue().Red)
Pass.setLightingEnabled(False)
Pass.setSceneBlending(ogre.SBT_ADD)
Pass.setDepthWriteEnabled(False)
Modified: trunk/python-ogre/demos/ogre/Demo_Lighting.py
===================================================================
--- trunk/python-ogre/demos/ogre/Demo_Lighting.py 2008-10-16 08:44:11 UTC (rev 759)
+++ trunk/python-ogre/demos/ogre/Demo_Lighting.py 2008-10-19 12:06:32 UTC (rev 760)
@@ -91,7 +91,7 @@
#Add billboard
bbs = sceneManager.createBillboardSet("bb", 1)
- bbs.createBillboard(ogre.Vector3.ZERO, trail.getInitialColour(0))
+ bbs.createBillboard(ogre.Vector3().ZERO, trail.getInitialColour(0))
bbs.MaterialName="Examples/Flare"
animNode.attachObject(bbs)
@@ -148,7 +148,7 @@
#Add billboard
bbs1 = sceneManager.createBillboardSet("bb2", 1)
- bbs1.createBillboard(ogre.Vector3.ZERO, trail.getInitialColour(1))
+ bbs1.createBillboard(ogre.Vector3().ZERO, trail.getInitialColour(1))
bbs1.MaterialName="Examples/Flare"
animNode.attachObject(bbs1)
Modified: trunk/python-ogre/demos/ogre/Demo_Shadows.py
===================================================================
--- trunk/python-ogre/demos/ogre/Demo_Shadows.py 2008-10-16 08:44:11 UTC (rev 759)
+++ trunk/python-ogre/demos/ogre/Demo_Shadows.py 2008-10-19 12:06:32 UTC (rev 760)
@@ -16,11 +16,17 @@
import ogre.renderer.OGRE as Ogre
import ogre.gui.CEGUI as CEGUI
import ogre.io.OIS as OIS
-import ctypes
+import ctypes,os
import SampleFramework
import exceptions, random
+# Another fix for CEGUI to ensure we get a working parser..
+if os.name == 'nt':
+ CEGUI.System.setDefaultXMLParserName("ExpatParser")
+else:
+ CEGUI.System.setDefaultXMLParserName("TinyXMLParser")
+
def convertOISButtonToCegui( buttonID):
if buttonID ==0:
return CEGUI.LeftButton
@@ -192,7 +198,7 @@
self.mLastMousePositionSet=False
self.mAvgFrameTime =0.1
self.mWriteToFile = False
- self.mTranslateVector = Ogre.Vector3.ZERO
+ self.mTranslateVector = Ogre.Vector3().ZERO
self.mQuit = False
self.mSkipCount = 0
self.mUpdateFreq=10
@@ -284,7 +290,7 @@
self.mUpdateMovement = False
self.mRotX = 0
self.mRotY = 0
- self.mTranslateVector = Ogre.Vector3.ZERO
+ self.mTranslateVector = Ogre.Vector3().ZERO
if(self.mWriteToFile):
self.mNumScreenShots +=1
@@ -359,12 +365,12 @@
self.mTranslateVector.x += e.moveDelta.d_x * self.mAvgFrameTime * MOVESPEED
self.mTranslateVector.y += -e.moveDelta.d_y * self.mAvgFrameTime * MOVESPEED
##self.mTranslateVector.z = 0
- MouseCursor.getSingleton().setPosition( self.mLastMousePosition )
+ CEGUI.MouseCursor.getSingleton().setPosition( self.mLastMousePosition )
self.mUpdateMovement = True
else:
if( self.mRMBDown and self.mLMBDown):
self.mTranslateVector.z += (e.moveDelta.d_x + e.moveDelta.d_y) * self.mAvgFrameTime * MOVESPEED
- MouseCursor.getSingleton().setPosition( self.mLastMousePosition )
+ CEGUI.MouseCursor.getSingleton().setPosition( self.mLastMousePosition )
self.mUpdateMovement = True
return True
@@ -383,7 +389,7 @@
if self.mLastMousePositionSet:
CEGUI.MouseCursor.getSingleton().setPosition( self.mLastMousePosition )
self.mLastMousePositionSet = False
- self.root.releaseInput()
+ self.rootGuiPanel.releaseInput()
return True
@@ -402,7 +408,7 @@
if (not self.mLastMousePositionSet):
self.mLastMousePosition = CEGUI.MouseCursor.getSingleton().getPosition()
self.mLastMousePositionSet = True
- self.root.captureInput()
+ self.rootGuiPanel.captureInput()
return True
@@ -433,7 +439,8 @@
##--------------------------------------------------------------------------
def handleKeyDownEvent( self, e):
- CheckMovementKeys( e.scancode , True)
+ print "Key Down", e
+ self.CheckMovementKeys( e.scancode , True)
return True
@@ -614,11 +621,11 @@
## Floor plane (use POSM plane def)
self.mPlane = Ogre.MovablePlane("mPlane")
- self.mPlane.normal = Ogre.Vector3.UNIT_Y
+ self.mPlane.normal = Ogre.Vector3().UNIT_Y
self.mPlane.d = 107
Ogre.MeshManager.getSingleton().createPlane("Myplane",
Ogre.ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME, self.mPlane,
- 1500,1500,50,50,True,1,5,5,Ogre.Vector3.UNIT_Z)
+ 1500,1500,50,50,True,1,5,5,Ogre.Vector3().UNIT_Z)
self.pPlaneEnt = self.sceneManager.createEntity( "plane", "Myplane" )
self.pPlaneEnt.setMaterialName(BASIC_ROCKWALL_MATERIAL)
self.pPlaneEnt.setCastShadows=False
@@ -654,6 +661,9 @@
##/ Change basic shadow technique
def changeShadowTechnique(self, newTech):
+ newTech = Ogre.ShadowTechnique( newTech )
+ print "CHANGE SHADOW TECH", newTech
+
self.sceneManager.setShadowTechnique(newTech)
@@ -674,11 +684,11 @@
if newTech == Ogre.SHADOWTYPE_STENCIL_ADDITIVE:
## Fixed light, dim
- self.mSunLight.setCastShadows(True)
+ self.mSunLight.setCastShadows =True
## Point light, movable, reddish
self.mLight.setType(Ogre.Light.LT_POINT)
- self.mLight.setCastShadows(True)
+ self.mLight.setCastShadows=True
self.mLight.setDiffuseColour(self.mMinLightColour)
self.mLight.setSpecularColour(1, 1, 1)
self.mLight.setAttenuation(8000,1,0.0005,0)
@@ -689,24 +699,24 @@
self.mSunLight.setCastShadows=False
## Point light, movable, reddish
- self.mLight.setType(Light.LT_POINT)
- self.mLight.setCastShadows(True)
+ self.mLight.setType(Ogre.Light.LT_POINT)
+ self.mLight.setCastShadows=True
self.mLight.setDiffuseColour(self.mMinLightColour)
self.mLight.setSpecularColour(1, 1, 1)
self.mLight.setAttenuation(8000,1,0.0005,0)
elif newTech == Ogre.SHADOWTYPE_TEXTURE_MODULATIVE or newTech == Ogre.SHADOWTYPE_TEXTURE_ADDITIVE:
## Fixed light, dim
- self.mSunLight.setCastShadows(True)
+ self.mSunLight.setCastShadows=True
## Change moving light to spotlight
## Point light, movable, reddish
- self.mLight.setType(Light.LT_SPOTLIGHT)
- self.mLight.setDirection(Ogre.Vector3.NEGATIVE_UNIT_Z)
- self.mLight.setCastShadows(True)
+ self.mLight.setType(Ogre.Light.LT_SPOTLIGHT)
+ self.mLight.setDirection(Ogre.Vector3().NEGATIVE_UNIT_Z)
+ self.mLight.setCastShadows=True
self.mLight.setDiffuseColour(self.mMinLightColour)
self.mLight.setSpecularColour(1, 1, 1)
self.mLight.setAttenuation(8000,1,0.0005,0)
- self.mLight.setSpotlightRange(Degree(80),Degree(90))
+ self.mLight.setSpotlightRange(Ogre.Degree(80),Ogre.Degree(90))
def setupGUI( self ):
## setup GUI system
@@ -896,7 +906,8 @@
self.mGradientClampText = wmgr.getWindow("Shadows/DepthShadowTweakGroup/SlopeClampText")
self.updateGUI(self.mCurrentShadowTechnique)
-
+ self.resetMaterials()
+
def updateGUI(self, newTech):
isTextureBased=True
if newTech & Ogre.SHADOWDETAILTYPE_TEXTURE:
@@ -945,17 +956,17 @@
radio = we.window
if (radio.isSelected()):
newTech = self.mCurrentShadowTechnique
- if radio.getID == 1:
+ if radio.getID() == 1:
## stencil
newTech = ((newTech & ~Ogre.SHADOWDETAILTYPE_TEXTURE) | Ogre.SHADOWDETAILTYPE_STENCIL)
self.resetMaterials()
- elif radio.getID == 2:
+ elif radio.getID() == 2:
## texture
newTech = ((newTech & ~Ogre.SHADOWDETAILTYPE_STENCIL) | Ogre.SHADOWDETAILTYPE_TEXTURE)
- elif radio.getID == 3:
+ elif radio.getID() == 3:
## additive
newTech = ((newTech & ~Ogre.SHADOWDETAILTYPE_MODULATIVE) | Ogre.SHADOWDETAILTYPE_ADDITIVE)
- elif radio.getID == 4:
+ elif radio.getID() == 4:
## modulative
newTech = ((newTech & ~Ogre.SHADOWDETAILTYPE_ADDITIVE) | Ogre.SHADOWDETAILTYPE_MODULATIVE)
@@ -963,35 +974,29 @@
return True
def handleProjectionChanged( self, e):
-
winargs = e
cbo = winargs.window
-
if (cbo.getSelectedItem()):
proj = cbo.getSelectedItem().getID()
if (proj != self.mCurrentProjection):
## AJM WARNING
if proj == self.UNIFORM:
- self.mCurrentShadowCameraSetup = Ogre.ShadowCameraSetupPtr(Ogre.DefaultShadowCameraSetup())
+ self.mCurrentShadowCameraSetup = Ogre.DefaultShadowCameraSetup() #Ogre.ShadowCameraSetupPtr(Ogre.DefaultShadowCameraSetup())
elif proj == self.UNIFORM_FOCUSED:
- self.focused = Ogre.FocusedShadowCameraSetup()
- self.mCurrentShadowCameraSetup =\
- Ogre.ShadowCameraSetup(self.focused)
+ self.mCurrentShadowCameraSetup =Ogre.FocusedShadowCameraSetup()
elif proj == self.LISPSM:
self.mLiSPSMSetup = Ogre.LiSPSMShadowCameraSetup()
##self.mLiSPSMSetup.setUseAggressiveFocusRegion=False
- self.mCurrentShadowCameraSetup = Ogre.ShadowCameraSetupPtr(self.mLiSPSMSetup)
+ self.mCurrentShadowCameraSetup = self.mLiSPSMSetup
elif proj == self.PLANE_OPTIMAL:
- self.mCurrentShadowCameraSetup =\
- Ogre.ShadowCameraSetupPtr(Ogre.PlaneOptimalShadowCameraSetup(self.mPlane))
-
+ self.mCurrentShadowCameraSetup = Ogre.PlaneOptimalShadowCameraSetup(self.mPlane)
self.mCurrentProjection = proj
self.sceneManager.setShadowCameraSetup(self.mCurrentShadowCameraSetup)
self.updateTipForCombo(cbo)
- if (not self.mCustomRockwallVparams.isNull() and not self.mCustomRockwallFparams.isNull()):
+# if (not self.mCustomRockwallVparams.isNull() and not self.mCustomRockwallFparams.isNull()):
+ if (self.mCustomRockwallVparams and self.mCustomRockwallFparams):
## set
self.setDefaultDepthShadowParams()
-
return True
@@ -1004,11 +1009,11 @@
self.mCustomRockwallFparams.setNamedConstant("gradientClamp",
self.mGradientClamp.getScrollPosition())
- self.mCustoself.mAtheneFparams.setNamedConstant("fixedDepthBias",
+ self.mCustomAtheneFparams.setNamedConstant("fixedDepthBias",
self.mFixedBias.getScrollPosition())
- self.mCustoself.mAtheneFparams.setNamedConstant("gradientScaleBias",
+ self.mCustomAtheneFparams.setNamedConstant("gradientScaleBias",
self.mGradientBias.getScrollPosition())
- self.mCustoself.mAtheneFparams.setNamedConstant("gradientClamp",
+ self.mCustomAtheneFparams.setNamedConstant("gradientClamp",
self.mGradientClamp.getScrollPosition())
@@ -1031,7 +1036,7 @@
self.updateDepthShadowParams()
def handleParamsChanged( self,e):
- if ( notself.mCustomRockwallVparams.isNull() and not self.mCustomRockwallFparams.isNull()):
+ if self.mCustomRockwallVparams and self.mCustomRockwallFparams :
self.updateDepthShadowParams()
return True
@@ -1051,10 +1056,10 @@
self.mAthene.setMaterialName(BASIC_ATHENE_MATERIAL)
for i in self.pColumns:
i.setMaterialName(BASIC_ROCKWALL_MATERIAL)
- self.mCustomRockwallVparams.setNull()
- self.mCustomRockwallFparams.setNull()
- self.mCustoself.mAtheneVparams.setNull()
- self.mCustoself.mAtheneFparams.setNull()
+ self.mCustomRockwallVparams = None
+ self.mCustomRockwallFparams = None
+ self.mCustomAtheneVparams = None
+ self.mCustomAtheneFparams = None
def handleMaterialChanged( self, e):
@@ -1065,7 +1070,7 @@
mat = cbo.getSelectedItem().getID()
if (mat != self.mCurrentMaterial):
if mat == self.MAT_STANDARD:
- self.sceneManager.setShadowTexturePixelFormat(Ogre.PF_L8)
+ self.sceneManager.setShadowTexturePixelFormat(Ogre.PixelFormat.PF_L8)
self.sceneManager.setShadowTextureCasterMaterial(Ogre.StringUtil.BLANK)
self.sceneManager.setShadowTextureReceiverMaterial(Ogre.StringUtil.BLANK)
self.sceneManager.setShadowTextureSelfShadow=False
@@ -1093,9 +1098,9 @@
self.mCustomRockwallVparams = themat.getTechnique(0).getPass(1).getShadowReceiverVertexProgramParameters()
self.mCustomRockwallFparams = themat.getTechnique(0).getPass(1).getShadowReceiverFragmentProgramParameters()
themat = Ogre.MaterialManager.getSingleton().getByName(CUSTOM_ATHENE_MATERIAL)
- self.mCustoself.mAtheneVparams = themat.getTechnique(0).getPass(1).getShadowReceiverVertexProgramParameters()
- self.mCustoself.mAtheneFparams = themat.getTechnique(0).getPass(1).getShadowReceiverFragmentProgramParameters()
- self.mDepthShadowTweak.setVisible(True)
+ self.mCustomAtheneVparams = themat.getTechnique(0).getPass(1).getShadowReceiverVertexProgramParameters()
+ self.mCustomAtheneFparams = themat.getTechnique(0).getPass(1).getShadowReceiverFragmentProgramParameters()
+ self.mDepthShadowTweak.setVisible = True
## set the current params
self.setDefaultDepthShadowParams()
elif mat == self.MAT_DEPTH_FLOAT_PCF:
@@ -1120,9 +1125,9 @@
self.mCustomRockwallVparams = themat.getTechnique(0).getPass(1).getShadowReceiverVertexProgramParameters()
self.mCustomRockwallFparams = themat.getTechnique(0).getPass(1).getShadowReceiverFragmentProgramParameters()
themat = Ogre.MaterialManager.getSingleton().getByName(CUSTOM_ATHENE_MATERIAL + "/PCF")
- self.mCustoself.mAtheneVparams = themat.getTechnique(0).getPass(1).getShadowReceiverVertexProgramParameters()
- self.mCustoself.mAtheneFparams = themat.getTechnique(0).getPass(1).getShadowReceiverFragmentProgramParameters()
- self.mDepthShadowTweak.setVisible(True)
+ self.mCustomAtheneVparams = themat.getTechnique(0).getPass(1).getShadowReceiverVertexProgramParameters()
+ self.mCustomAtheneFparams = themat.getTechnique(0).getPass(1).getShadowReceiverFragmentProgramParameters()
+ self.mDepthShadowTweak.setVisible =True
## set the current params
self.setDefaultDepthShadowParams()
Modified: trunk/python-ogre/packages_2.5/ogre/renderer/OGRE/sf_OIS.py
===================================================================
--- trunk/python-ogre/packages_2.5/ogre/renderer/OGRE/sf_OIS.py 2008-10-16 08:44:11 UTC (rev 759)
+++ trunk/python-ogre/packages_2.5/ogre/renderer/OGRE/sf_OIS.py 2008-10-19 12:06:32 UTC (rev 760)
@@ -13,6 +13,9 @@
#
# 29 July 2008: Ensured that resources.cfg and plugins.cfg can exist in the parent directory
#
+import sys
+import os
+import os.path
import ogre.renderer.OGRE as ogre
import ogre.io.OIS as OIS
@@ -20,9 +23,6 @@
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'),
os.path.join(os.getcwd(), '..','plugins.cfg'),
@@ -38,7 +38,16 @@
"** 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", "")
-
+
+def isUnitTest():
+ """Looks for a magic file to determine if we want to do a unittest"""
+ paths = [os.path.join(os.getcwd(), 'unittest.now'),
+ os.path.join(os.getcwd(), '..','unittest.now')]
+ for path in paths:
+ if os.path.exists(path):
+ return True
+ return False
+
class Application(object):
"This class is the base for an Ogre application."
debugText=""
@@ -50,6 +59,7 @@
self.renderWindow = None
self.sceneManager = None
self.world = None
+ self.unittest = isUnitTest()
def __del__(self):
"Clear variables, this should not actually be needed."
@@ -147,7 +157,10 @@
def _configure(self):
"""This shows the config dialog and creates the renderWindow."""
- carryOn = self.root.showConfigDialog()
+ if not self.unittest: # we show this if not doing a unittest
+ carryOn = self.root.showConfigDialog()
+ else:
+ carryOn = self.root.restoreConfig()
if carryOn:
self.renderWindow = self.root.initialise(True, "OGRE Render Window")
return carryOn
@@ -185,6 +198,7 @@
"""Creates the FrameListener."""
#,self.frameListener, self.frameListener.Mouse
self.frameListener = FrameListener(self.renderWindow, self.camera)
+ self.frameListener.unittest = self.unittest
self.frameListener.showDebugOverlay(True)
self.root.addFrameListener(self.frameListener)
@@ -230,6 +244,10 @@
self.bufferedJoy = bufferedJoy
self.shouldQuit = False # set to True to exit..
self.MenuMode = False # lets understand a simple menu function
+ self.unittest = isUnitTest()
+ self.unittest_duration = 5.0 # seconds before screen shot a exit
+ self.unittest_screenshot = sys.modules['__main__'].__file__.split('.')[0] # file name for unittest screenshot
+
## we can tell if we are using OgreRefapp based upon the camera class
if self.camera.__class__ == ogre.Camera:
@@ -320,6 +338,11 @@
def frameRenderingQueued ( self, evt ):
if(self.renderWindow.isClosed() or self.shouldQuit ):
return False
+ if self.unittest:
+ self.unittest_duration -= evt.timeSinceLastFrame
+ if self.unittest_duration < 0:
+ self.renderWindow.writeContentsToTimestampedFile(self.unittest_screenshot, '.jpg')
+ return False
##Need to capture/update each device - this will also trigger any listeners
self.Keyboard.capture()
self.Mouse.capture()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|