#!/usr/bin/env python
# This code is Public Domain.
"""Python-Ogre Intermediate Tutorial 02: Initial code """
import ogre.renderer.OGRE as ogre
import ogre.gui.CEGUI as CEGUI
import ogre.io.OIS as OIS
import SampleFramework as sf
class MouseQueryListener(sf.FrameListener, OIS.MouseListener):
"""A FrameListener class that handles basic user input."""
def __init__(self, win, cam, sc, renderer):
# Subclass any Python-Ogre class and you must call its constructor.
sf.FrameListener.__init__(self, win, cam, True, True)
OIS.MouseListener.__init__(self)
self.sceneManager = sc
self.renderer = renderer
self.camera = cam
self.Mouse.setEventCallback(self)
def frameStarted(self, evt):
return sf.FrameListener.frameStarted(self, evt)
def mouseMoved(self, evt):
return True
def mousePressed(self, evt, id):
return True
def mouseReleased(self, evt, id):
return True
def _processUnbufferedMouseInput(self,frameEvent):
pass
class TutorialApplication(sf.Application):
"""Application class."""
def _chooseSceneManager(self):
self.sceneManager = self.root.createSceneManager(ogre.ST_EXTERIOR_CLOSE, 'TerrainSM')
def _createScene(self):
## Set up a simple scene with terrain
self.sceneManager.setAmbientLight((0.5, 0.5, 0.5))
self.sceneManager.setSkyDome(True, "Examples/CloudySky", 5, 8)
self.sceneManager.setWorldGeometry("terrain.cfg")
self.camera.setPosition(40, 100, 580)
self.camera.pitch(ogre.Degree(-30))
self.camera.yaw(ogre.Degree(-45))
if CEGUI.Version__.startswith("0.6"):
CEGUI.SchemeManager.getSingleton().loadScheme("TaharezLookSkin.scheme")
self.ceguiRenderer = CEGUI.OgreCEGUIRenderer(self.renderWindow,
ogre.RENDER_QUEUE_OVERLAY, False, 3000, sceneManager
)
else:
self.ceguiRenderer = CEGUI.OgreRenderer.bootstrapSystem()
self.system = CEGUI.System.getSingleton()
CEGUI.SchemeManager.getSingleton().create("TaharezLookSkin.scheme")
self.system.setDefaultMouseCursor("TaharezLook", "MouseArrow")
# Set up the CEGUI renderer
# self.ceguiRenderer = CEGUI.OgreRenderer.bootstrapSystem()
# self.ceguiSystem = CEGUI.System.getSingleton()
# Show mouse cursor
# CEGUI.SchemeManager.getSingleton().create("TaharezLookSkin.scheme")
# set default mouse image
# CEGUI.System.getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow")
def _createFrameListener(self):
self.frameListener = MouseQueryListener(self.renderWindow, self.camera, self.sceneManager, self.ceguiRenderer)
self.root.addFrameListener(self.frameListener)
self.frameListener.showDebugOverlay(True)
if __name__ == '__main__':
ta = TutorialApplication()
ta.go()