def reset(self): if not self.AKUReady: return self.cleanLuaReferences() self.setup() signals.emitNow( 'moai.reset' ) signals.emitNow( 'moai.ready' )
def playAnimation( self ): self.previewRender() self.exportAnimationSelected() path = self.getFullPath(self.export_path) selection = self.list.getSelection() for obj in selection: signals.emitNow( 'mesh.animation_play', path + obj.GetExportAnimation() )
def onTabChanged( self, window ): getSceneSelectionManager().clearSelection() if window and window in self.windows: self.updateTimer.start() scene = window.canvas.safeCall( 'getScene' ) if scene: signals.emitNow( 'scene.change', scene ) else: self.recreateScene()
def onTabChanged(self, window): getSceneSelectionManager().clearSelection() if window and window in self.windows: self.updateTimer.start() scene = window.canvas.safeCall('getScene') if scene: signals.emitNow('scene.change', scene) else: self.recreateScene()
def recreateScene( self ): window = self.getCurrentWindow() index = self.getWindowIndex( window ) if index >= 0: loaded = self.loaded[index] if not loaded: self.loaded[index] = True canvas = window.canvas scene = canvas.safeCall( 'createScene', self.filePaths[index], self.fileTypes[index] ) signals.emitNow( 'scene.change', scene )
def recreateScene(self): window = self.getCurrentWindow() index = self.getWindowIndex(window) if index >= 0: loaded = self.loaded[index] if not loaded: self.loaded[index] = True canvas = window.canvas scene = canvas.safeCall('createScene', self.filePaths[index], self.fileTypes[index]) signals.emitNow('scene.change', scene)
def closeWindow( self, window ): if window and window in self.windows: index = self.getWindowIndex( window ) if index >= 0: self.windows.pop(index) self.filePaths.pop(index) self.fileTypes.pop(index) self.loaded.pop(index) current = self.getCurrentWindow() if window == current: getSceneSelectionManager().clearSelection() signals.emitNow( 'scene.change', None )
def closeWindow(self, window): if window and window in self.windows: index = self.getWindowIndex(window) if index >= 0: self.windows.pop(index) self.filePaths.pop(index) self.fileTypes.pop(index) self.loaded.pop(index) current = self.getCurrentWindow() if window == current: getSceneSelectionManager().clearSelection() signals.emitNow('scene.change', None)
def newWindow( self, path=None, stype="scene" ): title = 'new.{} *'.format( stype ) self.fileTypes.append(stype) if path: title = os.path.basename( path ) self.filePaths.append( path ) else: self.filePaths.append( None ) window = self.requestDocumentWindow( title = title ) self.windows.append(window) window.tool = tool = self.addToolBar( 'scene_view_config', window.addToolBar() ) window.canvas = canvas = window.addWidget( SceneViewCanvas() ) canvas.loadScript( _getModulePath('SceneView.lua') ) self.loaded.append(True) params = self.getWindowParams(stype) if not params: params = dict() if params.get('settings', True): self.addTool( 'scene_view_config/scene_settings', label ='Scene Settings', icon = 'cog' ) if params.get('grid', True): window.gridsize = gridsize = ToolSizeWidget( None ) gridsize.setValues( 100, 100 ) gridsize.owner = self gridsize.valuesChanged.connect( self.onGridResize ) self.addTool( 'scene_view_config/grid_frame', widget = gridsize ) self.addTool( 'scene_view_config/grid_view', label = 'Grid', icon = 'grid' ) if params.get('frame_size', False): window.framesize = framesize = ToolSizeWidget( None ) framesize.owner = self framesize.valuesChanged.connect( self.onFrameResize ) self.addTool( 'scene_view_config/canvas_frame', widget = framesize ) if params.get('zoom', True): self.addTool( 'scene_view_config/zoom_out', label = 'Zoom Out', icon = 'glass_remove' ) self.addTool( 'scene_view_config/zoom_normal', label = 'Zoom Normal', icon = 'glass' ) self.addTool( 'scene_view_config/zoom_in', label = 'Zoom In', icon = 'glass_add' ) if params.get('run_scene', False): self.addTool( 'scene_view_config/run_scene', label = 'Run Scene', icon = 'run' ) window.show() scene = canvas.safeCall( 'createScene', path, stype ) signals.emitNow( 'scene.change', scene )
def onSceneChange(self, scene): self.tree.hide() if scene: self.sceneType = scene.SCENE_TYPE self.delegate.safeCallMethod( 'editor', 'changeScene', scene ) self.tree.rebuild() # self.restoreWorkspaceState() self.tree.refreshAllContent() self.tree.verticalScrollBar().setValue( 0 ) self.tree.show() signals.emitNow( 'scene.open', scene )
def pausePreview(self): if self.paused: return self.canvas.setInputDevice( None ) self.getApp().resetMainLoopBudget() signals.emitNow( 'preview.pause' ) self.enableMenu( 'main/preview/run_game', True ) self.enableMenu( 'main/preview/pause_game', False ) self.window.setWindowTitle( 'Game Preview[ Paused ]') runtime = self.getRuntime() runtime.pause() self.paused = True
def cleanLuaReferences(self): # clear assetlibrary registered types self.getApp().getAssetLibrary().clearAssets() signals.emitNow( 'moai.prepare_clean' ) for m in self.luaModules: unregisterModule(m) bridge.clearSignalConnections() bridge.clearLuaRegisteredSignals() introspector = self.getModule('introspector') if introspector: instances = introspector.getInstances() for ins in instances: if isinstance(ins.target,(moaipy._LuaTable, moaipy._LuaObject, moaipy._LuaThread, moaipy._LuaFunction)): ins.clear() signals.emitNow( 'moai.clean' )
def stopPreview(self): if self.paused is None: return self.canvas.setInputDevice( None ) # self.canvas.interceptShortcut = False self.getApp().resetMainLoopBudget() signals.emitNow( 'preview.stop' ) self.updateTimer.stop() self.enableMenu( 'main/preview/stop_game', False ) self.enableMenu( 'main/preview/pause_game', False ) self.enableMenu( 'main/preview/run_game', True ) self.window.setWindowTitle( 'Game Preview' ) self.updateTimer = None self.paused = None
def runPreview(self): if self.paused == False: return self.makeCurrent() runtime = self.getRuntime() self.canvas.setInputDevice( runtime.getInputDevice('device') ) self.getApp().setMinimalMainLoopBudget() # self.canvas.startRefreshTimer( self.activeFPS ) # self.canvas.refreshTimer.start() # self.canvas.interceptShortcut = True self.enableMenu( 'main/preview/pause_game', True ) self.enableMenu( 'main/preview/stop_game', True ) self.enableMenu( 'main/preview/run_game', False ) if self.paused: self.updateTimer.start() signals.emitNow( 'preview.resume' ) elif self.paused is None: signals.emitNow( 'preview.start' ) signals.emitNow( 'preview.resume' ) self.updateTimer = self.window.startTimer( runtime.simStep, self.updateView ) self.window.setWindowTitle( 'Game Preview [ RUNNING ]') self.paused = False runtime.resume() self.setFocus()
def preview(self, objects, options): signals.emitNow( 'mesh.assimp_clear' ) for obj in objects: self.convert( obj, options ) signals.emitNow( 'mesh.assimp_render' )
def openWindow(self, title, width, height): AKUDetectGfxContext() signals.emitNow( 'moai.open_window', title, width, height )
def previewRender( self, options = None ): signals.emitNow( 'mesh.preview' ) selection = self.list.getSelection() self.assimpConverter.preview(selection, options)
def setSimStep(self, step): self.simStep = step signals.emitNow( 'moai.set_sim_step', step )
def openSceneSettings( self ): canvas = self.getCanvas() if canvas: scene = canvas.safeCall( 'getScene' ) print("get scene:", scene) signals.emitNow( 'scene.settings', scene )
def onAppReady(self): signals.emitNow( 'framework.init' )
def export(self, objects, path, options): signals.emitNow( 'mesh.assimp_clear' ) for obj in objects: self.convert( obj, options ) signals.emitNow( 'mesh.assimp_save', path )
def newWindow(self, path=None, stype="scene"): title = 'new.{} *'.format(stype) self.fileTypes.append(stype) if path: title = os.path.basename(path) self.filePaths.append(path) else: self.filePaths.append(None) window = self.requestDocumentWindow(title=title) self.windows.append(window) window.tool = tool = self.addToolBar('scene_view_config', window.addToolBar()) window.canvas = canvas = window.addWidget(SceneViewCanvas()) canvas.loadScript(_getModulePath('SceneView.lua')) self.loaded.append(True) params = self.getWindowParams(stype) if not params: params = dict() if params.get('settings', True): self.addTool('scene_view_config/scene_settings', label='Scene Settings', icon='cog') if params.get('grid', True): window.gridsize = gridsize = ToolSizeWidget(None) gridsize.setValues(100, 100) gridsize.owner = self gridsize.valuesChanged.connect(self.onGridResize) self.addTool('scene_view_config/grid_frame', widget=gridsize) self.addTool('scene_view_config/grid_view', label='Grid', icon='grid') if params.get('frame_size', False): window.framesize = framesize = ToolSizeWidget(None) framesize.owner = self framesize.valuesChanged.connect(self.onFrameResize) self.addTool('scene_view_config/canvas_frame', widget=framesize) if params.get('zoom', True): self.addTool('scene_view_config/zoom_out', label='Zoom Out', icon='glass_remove') self.addTool('scene_view_config/zoom_normal', label='Zoom Normal', icon='glass') self.addTool('scene_view_config/zoom_in', label='Zoom In', icon='glass_add') if params.get('run_scene', False): self.addTool('scene_view_config/run_scene', label='Run Scene', icon='run') window.show() scene = canvas.safeCall('createScene', path, stype) signals.emitNow('scene.change', scene)
def convert(self, obj, options): processing = (aiProcess_Triangulate|aiProcessPreset_TargetRealtime_MaxQuality|aiProcess_FlipUVs) if obj.GetStaticBatch(): processing = (aiProcess_Triangulate|aiProcessPreset_TargetRealtime_MaxQuality|aiProcess_FlipUVs|aiProcess_PreTransformVertices) scene = pyassimp.load(obj.GetPath( True ), processing = processing) #the model we load print print("MODEL:" + str(obj)) print #write some statistics print("SCENE:") print(" meshes:" + str(len(scene.meshes))) print(" materials:" + str(len(scene.materials))) print(" textures:" + str(len(scene.textures))) print materials = [] print("MATERIALS:") for index, material in enumerate(scene.materials): print(" MATERIAL (id:" + str(index+1) + ")") path = "" matName = "" for key, value in material.properties.items(): print(" %s: %s" % (key, value)) if key == "file": path = value elif key == "name": matName = value mat = { "id" : index+1, "file" : os.path.basename(path), "path" : path, "name" : matName, } materials.append(mat) print signals.emitNow( 'mesh.assimp_materials', materials ) print("TEXTURES:") for index, texture in enumerate(scene.textures): print(" TEXTURE" + str(index+1)) print(" width:" + str(texture.width)) print(" height:" + str(texture.height)) print(" hint:" + str(texture.achformathint)) print(" data (size):" + str(len(texture.data))) print("MESHES:") meshCount = len(scene.meshes) for index, mesh in enumerate(scene.meshes): if meshCount == 1: mesh.name = obj.GetExportName() else: mesh.name = "{}{}".format(obj.GetExportName(),index+1) print(" MESH id: " + str(index+1) + " (" + str(mesh.name) + ")") print(" material id: " + str(mesh.materialindex+1)) print(" vertices: " + str(len(mesh.vertices))) print(" normals: " + str(len(mesh.normals))) print(" colors: " + str(len(mesh.colors))) print(" uv channels: " + str(len(mesh.texturecoords))) print(" uv-component-count:" + str(len(mesh.numuvcomponents))) print(" faces:" + str(len(mesh.faces))) print(" bones:" + str(len(mesh.bones))) print bonesNames = [] for bone in mesh.bones: bonesNames.append(bone.name) meshDict = { 'name' : mesh.name or index, 'materialID' : mesh.materialindex+1, 'vertices' : mesh.vertices, 'verticesCount' : len(mesh.vertices), 'texturecoords' : mesh.texturecoords, 'uvcounts' : len(mesh.texturecoords), 'faces' : mesh.faces, 'facesCount' : len(mesh.faces), 'bones' : mesh.bones, 'bonesNames' : bonesNames, 'normals' : mesh.normals } signals.emitNow( 'mesh.assimp_mesh', meshDict, obj, options ) print print("NODES:") transforms = [] self.searchNode(scene.rootnode, transforms) size = obj.GetPerPixel() for tr in transforms: pos = tr['pos'] for i, v in enumerate(pos): pos[i] = v * size signals.emitNow( 'mesh.assimp_transforms', obj, transforms ) # Finally release the model pyassimp.release(scene)
def openSceneSettings(self): canvas = self.getCanvas() if canvas: scene = canvas.safeCall('getScene') print("get scene:", scene) signals.emitNow('scene.settings', scene)