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