Beispiel #1
0
	def reset(self):
		if not self.AKUReady: return
		self.cleanLuaReferences()
		self.setup()

		signals.emitNow( 'moai.reset' )
		signals.emitNow( 'moai.ready' )
Beispiel #2
0
	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() )
Beispiel #3
0
	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()
Beispiel #4
0
 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()
Beispiel #5
0
	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 )
Beispiel #6
0
 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)
Beispiel #7
0
	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 )
Beispiel #8
0
 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)
Beispiel #9
0
	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 )
Beispiel #10
0
	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 )
Beispiel #11
0
	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
Beispiel #12
0
	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' )
Beispiel #13
0
	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
Beispiel #14
0
	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()
Beispiel #15
0
	def preview(self, objects, options):
		signals.emitNow( 'mesh.assimp_clear' )
		for obj in objects:
			self.convert( obj, options )
		signals.emitNow( 'mesh.assimp_render' )
Beispiel #16
0
	def openWindow(self, title, width, height):
		AKUDetectGfxContext()
		signals.emitNow( 'moai.open_window', title, width, height )
Beispiel #17
0
	def previewRender( self, options = None ):
		signals.emitNow( 'mesh.preview' )
		selection = self.list.getSelection()
		self.assimpConverter.preview(selection, options)
Beispiel #18
0
	def setSimStep(self, step):
		self.simStep = step
		signals.emitNow( 'moai.set_sim_step', step )
Beispiel #19
0
	def openSceneSettings( self ):
		canvas = self.getCanvas()
		if canvas:
			scene = canvas.safeCall( 'getScene' )
			print("get scene:", scene)
			signals.emitNow( 'scene.settings', scene )
Beispiel #20
0
	def onAppReady(self):
		signals.emitNow( 'framework.init' )
Beispiel #21
0
	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 )
Beispiel #22
0
    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)
Beispiel #23
0
	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)
Beispiel #24
0
 def openSceneSettings(self):
     canvas = self.getCanvas()
     if canvas:
         scene = canvas.safeCall('getScene')
         print("get scene:", scene)
         signals.emitNow('scene.settings', scene)