Application without SampleFramework

silentpolygon

06-09-2008 15:51:00

Hi everybody,

I go stucked with an application i tried with help from the Wikis Basic tutorial 6.

I tried to do my own Framework and FrameListener but now the Frame Listener starts but the Ogre-Window shuts down after it. I get no error Message, but in my point of view it should stay and receiving Events from the Listener.

Heres the Code so far

TP_FrameListener.py

import ogre.renderer.OGRE as ogre
import ogre.io.OIS as OIS

class FrameListener(ogre.FrameListener, ogre.WindowEventListener):
def __init__(self, renderWindow, camera, keyboard, mouse, bufferedKeys = True, bufferedMouse = True):
ogre.FrameListener.__init__(self)
ogre.WindowEventListener.__init__(self)
self.renderWindow = renderWindow
self.camera = camera
self.keyboard = keyboard
self.mouse = mouse

#self.keepRendering = True

def frameStarted(self, frameEvent):
if (self.renderWindow.isClosed()):
return False

self.keyboard.capture()
self.mouse.capture()


Framework.py

import ogre.renderer.OGRE as ogre
import ogre.io.OIS as OIS
from TP_FrameListener import FrameListener
#from InputListener import BufferedInputHandler
#from ExitListener import ExitListener

class Application(object):
def __init__(self):
'''
self.frameListener = None
self.root = None
self.camera = None
self.renderWindow = None
self.sceneManager = None
self.world = None
#config = None
'''

def go(self):
self.createRoot()
self.defineResources()
self.setupRenderSystem()
self.createRenderWindow()
self.setupScene()
self.setupInputSystem()
self.createFrameListener()
self.startRenderLoop()
self.cleanUp()

def createRoot(self):
self.root = ogre.Root()

def defineResources(self):
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 setupRenderSystem(self):
renderSystem = self.root.getRenderSystemByName('OpenGL Rendering Subsystem')
self.root.setRenderSystem(renderSystem)
renderSystem.setConfigOption('Full Screen','No')
renderSystem.setConfigOption('Video Mode','1024 x 768')

def createRenderWindow(self):
self.root.initialise(True, 'Third Person Camera System')

def initializeResouceGroups(self):
ogre.TextureManager.getSingleton().setDefaultNumMipmaps(5)
ogre.ResourceGroupManager.getSingleton().initialiseAllResourceGroups()

def setupScene(self):
sceneManager = self.root.createSceneManager(ogre.ST_GENERIC, 'Default SceneManager')
self.camera = sceneManager.createCamera('Camera')
viewPort = self.root.getAutoCreatedWindow().addViewport(self.camera)

def setupInputSystem(self):
windowHandle = 0
self.renderWindow = self.root.getAutoCreatedWindow()
windowHandle = self.renderWindow.getCustomAttributeInt('WINDOW')
paramList = [('WINDOW', str(windowHandle))]
self.inputManager = OIS.createPythonInputSystem(paramList)

try:
self.keyboard = self.inputManager.createInputObjectKeyboard(OIS.OISKeyboard, True)
self.mouse = self.inputManager.createInputObjectMouse(OIS.OISMouse, True)
except Exception, e:
raise e

def createFrameListener(self):
try:
self.frameListener = FrameListener(self.renderWindow, self.camera, self.keyboard, self.mouse)
self.root.addFrameListener(self.frameListener)
except Exception, e:
raise e

def startRenderLoop(self):
self.root.startRendering()

def cleanUp(self):
del self.root


Main.py

import ogre.renderer.OGRE as ogre
import Framework as FW

class PeridiaGame(FW.Application):
def __init__(self):
FW.Application.__init__(self)

if __name__ == '__main__':
try:
App = PeridiaGame()
App.go()
except ogre.OgreException, e:
print e


Am I doing something wrong. Please note that this is the first time I'm working with Buffered Input.

Thanks in Advance

silentpolygon

06-09-2008 15:58:19

I am a FOOL

I forgot the ExitListening function because earlier I tried to do that with an own file.

sorry for posting.