BasicTutorial7Source
From PyWiki
Revision as of 20:05, 15 January 2009 by Kurvenschubser (Talk | contribs)
import SampleFramework as sf import ogre.renderer.OGRE as ogre import ogre.io.OIS as OIS import ogre.gui.CEGUI as CEGUI def convertButton(oisID): if oisID == OIS.MB_Left: return CEGUI.LeftButton elif oisID == OIS.MB_Right: return CEGUI.RightButton elif oisID == OIS.MB_Middle: return CEGUI.MiddleButton else: return CEGUI.LeftButton class TutorialListener(sf.FrameListener, OIS.MouseListener, OIS.KeyListener): def __init__(self, renderWindow, camera): sf.FrameListener.__init__(self, renderWindow, camera, True, True) OIS.MouseListener.__init__(self) OIS.KeyListener.__init__(self) self.cont = True self.Mouse.setEventCallback(self) self.Keyboard.setEventCallback(self) windowManager = CEGUI.WindowManager.getSingleton() quitButton = windowManager.getWindow("CEGUIDemo/QuitButton") quitButton.subscribeEvent(CEGUI.PushButton.EventClicked, self, "quit") def frameStarted(self, evt): self.Keyboard.capture() self.Mouse.capture() return self.cont and not self.Keyboard.isKeyDown(OIS.KC_ESCAPE) def quit(self, evt): self.cont = False return True # MouseListener def mouseMoved(self, evt): CEGUI.System.getSingleton().injectMouseMove(evt.get_state().X.rel, evt.get_state().Y.rel) return True def mousePressed(self, evt, id): CEGUI.System.getSingleton().injectMouseButtonDown(convertButton(id)) return True def mouseReleased(self, evt, id): CEGUI.System.getSingleton().injectMouseButtonUp(convertButton(id)) return True # KeyListener def keyPressed(self, evt): ceguiSystem = CEGUI.System.getSingleton() ceguiSystem.injectKeyDown(evt.key) ceguiSystem.injectChar(evt.text) return True def keyReleased(self, evt): CEGUI.System.getSingleton().injectKeyUp(evt.key) return True class TutorialApplication(sf.Application): def __del__(self): if self.system: del self.system if self.renderer: del self.renderer def _createScene(self): self.renderer = CEGUI.OgreCEGUIRenderer(self.renderWindow, ogre.RENDER_QUEUE_OVERLAY, False, 3000, self.sceneManager) self.system = CEGUI.System(self.renderer) CEGUI.SchemeManager.getSingleton().loadScheme("TaharezLookSkin.scheme") self.system.setDefaultMouseCursor("TaharezLook", "MouseArrow") self.system.setDefaultFont("BlueHighway-12") windowManager = CEGUI.WindowManager.getSingleton() sheet = windowManager.createWindow("DefaultGUISheet", "CEGUIDemo/Sheet") quitButton = windowManager.createWindow("TaharezLook/Button", "CEGUIDemo/QuitButton") quitButton.setText("Quit") quitButton.setSize(CEGUI.UVector2(CEGUI.UDim(0.15, 0), CEGUI.UDim(0.05, 0))) sheet.addChildWindow(quitButton) self.system.setGUISheet(sheet) self.sceneManager.setAmbientLight((1.0, 1.0, 1.0)) self.sceneManager.setSkyDome(True, "Examples/CloudySky", 5, 8) ogreHead = self.sceneManager.createEntity("Head", "ogrehead.mesh") headNode = self.sceneManager.getRootSceneNode().createChildSceneNode((0.0, 0.0, -300.0)) headNode.attachObject(ogreHead) texture = ogre.TextureManager.getSingleton().createManual( "RttTex", "General", ogre.TextureType.TEX_TYPE_2D, 512, 512, 0, ogre.PixelFormat.PF_R8G8B8, ogre.TU_RENDERTARGET ).getBuffer().getRenderTarget() rttCamera = self.sceneManager.createCamera("RttCam") rttCamera.setPosition(100.0, -100.0, -400.0) rttCamera.lookAt(0.0, 0.0, -300.0) viewport = texture.addViewport(rttCamera) viewport.setOverlaysEnabled(False) viewport.setClearEveryFrame(True) viewport.setBackgroundColour(ogre.ColourValue().Black) ceguiTexture = self.renderer.createTexture("RttTex") imageSet = CEGUI.ImagesetManager.getSingleton().createImageset("RttImageset", ceguiTexture) imageSet.defineImage("RttImage", CEGUI.Rect(0.0, 0.0, ceguiTexture.getWidth(), ceguiTexture.getHeight()), CEGUI.Vector2(0.0, 0.0)) staticImg = windowManager.createWindow("TaharezLook/StaticImage", "RTTWindow") staticImg.setSize(CEGUI.UVector2(CEGUI.UDim(0.5, 0), CEGUI.UDim(0.4, 0))) staticImg.setPosition(CEGUI.UVector2(CEGUI.UDim(0.5, 0), CEGUI.UDim(0, 0))) staticImg.setProperty("Image", CEGUI.PropertyHelper.imageToString(imageSet.getImage("RttImage"))) sheet.addChildWindow(staticImg) def _createFrameListener(self): self.frameListener = TutorialListener(self.renderWindow, self.camera) self.frameListener.showDebugOverlay(True) self.root.addFrameListener(self.frameListener) if __name__ == '__main__': try: ta = TutorialApplication() ta.go() except ogre.OgreException, e: print e
