コード例 #1
0
ファイル: testrunner.py プロジェクト: etradewind/Tundra2
    def handle_entity_created(self, ent, changetype):
        # fun fact: since we are called for every entity and
        # self.finished checked only every "update" event,
        # this often cleans up >1 test objects (in case any
        # are left over from failed tests)

        if ent.Id == 2525429102:
            r.logInfo("##### found entity I need")
            self.select_test_ent = ent

        try:
            ec_netp = ent.network
        except AttributeError:
            if 0: print "skip entity without EC_NetworkPosition", dir(ent)
        else:
            netp = ec_netp.Position
            # for some reason z coord ends up as 22.25
            #r.logInfo("found entity with netpos %s %s %s" % (netp.x(), netp.y(), netp.z()))
            if netp.x() == 42.0 and netp.y() == 42.0 and int(netp.z()) == 22:
                r.logInfo(
                    "found created test prim - naming, moving and deleting (finished=%s)"
                    % self.finished)
                ent.prim.Name = "Seppo"
                ent.prim.SendObjectNameUpdate()
                pos = ent.placeable.position
                pos.setX(netp.x() + 1)  #change the x-coordinate
                ent.placeable.position = pos
                r.logInfo("Moving to move to pos: %s" % pos)

                r.getServerConnection().SendObjectDeRezPacket(
                    ent.Id, r.getTrashFolderId())
                self.finished = True
コード例 #2
0
ファイル: testrunner.py プロジェクト: A-K/naali
    def handle_entity_created(self, ent, changetype):
        # fun fact: since we are called for every entity and
        # self.finished checked only every "update" event,
        # this often cleans up >1 test objects (in case any
        # are left over from failed tests)

        if ent.Id==2525429102:
            r.logInfo("##### found entity I need")
            self.select_test_ent = ent

        try:
            ec_netp = ent.network
        except AttributeError:
            if 0: print "skip entity without EC_NetworkPosition", dir(ent)
        else:
            netp = ec_netp.Position
            # for some reason z coord ends up as 22.25
            #r.logInfo("found entity with netpos %s %s %s" % (netp.x(), netp.y(), netp.z()))
            if netp.x() == 42.0 and netp.y() == 42.0 and int(netp.z()) == 22:
                r.logInfo("found created test prim - naming, moving and deleting (finished=%s)" % self.finished)
                ent.prim.Name = "Seppo"
                ent.prim.SendObjectNameUpdate()
                pos = ent.placeable.position
                pos.setX(netp.x() + 1) #change the x-coordinate
                ent.placeable.position = pos
                r.logInfo("Moving to move to pos: %s" % pos)
                
                r.getServerConnection().SendObjectDeRezPacket(
                    ent.Id, r.getTrashFolderId())
                self.finished = True
コード例 #3
0
ファイル: testrunner.py プロジェクト: marijamarkovic/naali
    def run(self):
        self.wait_time = int(self.config.get("wait_time", 60))
        yield "doing login"
        self.timer_start()
        r.startLoginOpensim(user, pwd, server)
        yield "waiting for connection"
        conn = None
        while not self.elapsed(self.wait_time):
            conn = r.getServerConnection()
            if conn and conn.IsConnected():
                break
            else:
                yield None
        else:
            return
        yield "waiting for scene"
        while not self.scene and not self.elapsed(self.wait_time):
            yield None

        yield "creating object"
        r.getServerConnection().SendObjectAddPacket(42, 42, 22)
        yield "waiting for EntityCreated"
        while (not self.finished) and (not self.elapsed(self.wait_time)):
            yield None
        yield "exiting"
        r.exit()
        if self.finished:
            yield "success"
        else:
            yield "failure"
コード例 #4
0
 def loadEstate(self):
     self.worldstream = r.getServerConnection()
     if self.worldstream == None:
         self.queue.put(
             ("displayerror",
              "No worldstream, check if you're connected to server"))
     else:
         self.estatesettings = EstateSettings(self.worldstream, self)
         s = naali.getScene("World")
         ids = s.GetEntityIdsWithComponent("EC_OpenSimPresence")
         self.ents = [r.getEntity(id) for id in ids]
         self.window.setRegionUsers(self.ents)
         #self.worldstream.SendEstateInfoRequestpacket() #!!
         self.worldstream.SendEstateOwnerMessage("getinfo", ())
         self.updateSavedUsers()
         #self.updateSavedUsersTab()
         #test if rights to modify access
         cap = self.worldstream.GetCapability(
             'EstateRegionSettingsModification')
         if cap == None or cap == "":
             self.window.setNoCapInfo()
         else:
             self.estatesettings.fetchEstates()
             self.window.resetCapInfo()
         pass
コード例 #5
0
ファイル: testrunner.py プロジェクト: A-K/naali
    def run(self):
        self.wait_time = int(self.config.get("wait_time", 60))
        yield "doing login"
        self.timer_start()
        r.startLoginOpensim(user, pwd, server)
        yield "waiting for connection"
        conn = None
        while not self.elapsed(self.wait_time):
            conn = r.getServerConnection()
            if conn and conn.IsConnected():
                break
            else:
                yield None
        else:
            return
        yield "waiting for avatar to appear"
        ent = None
        while not self.elapsed(self.wait_time):
            try:
                ent = naali.getUserAvatar()
            except ValueError:
                yield None
            else:
                break
        
        if not ent:
            yield "failure, avatar didn't appear"
            return

        for i in range(100):
            for x in self.do_api_calls():
                yield x
            break
        r.exit()
        yield "success"
コード例 #6
0
ファイル: testrunner.py プロジェクト: etradewind/Tundra2
    def run(self):
        self.wait_time = int(self.config.get("wait_time", 60))
        yield "doing login"
        self.timer_start()
        r.startLoginOpensim(user, pwd, server)
        yield "waiting for connection"
        conn = None
        while not self.elapsed(self.wait_time):
            conn = r.getServerConnection()
            if conn and conn.IsConnected():
                break
            else:
                yield None
        else:
            return
        yield "waiting for avatar to appear"
        ent = None
        while not self.elapsed(self.wait_time):
            try:
                ent = naali.getUserAvatar()
            except ValueError:
                yield None
            else:
                break

        if not ent:
            yield "failure, avatar didn't appear"
            return

        for i in range(100):
            for x in self.do_api_calls():
                yield x
            break
        r.exit()
        yield "success"
コード例 #7
0
ファイル: edit.py プロジェクト: Ilikia/naali
    def __init__(self):
        self.sels = []  
        self.selmasses = {}
        Component.__init__(self)
        self.resetValues()
        self.worldstream = r.getServerConnection()
        self.usingManipulator = False
        self.useLocalTransform = False
        #self.cpp_python_handler = None
        self.left_button_down = False
        self.keypressed = False
        self.editing = False
                
        self.editingKeyTrigger = (Qt.Key_M, Qt.ShiftModifier)
        self.shortcuts = {
            self.editingKeyTrigger : self.toggleEditingKeyTrigger,
            (Qt.Key_R, Qt.NoModifier) : self.rotateObject,
            (Qt.Key_S, Qt.NoModifier) : self.scaleObject,
            (Qt.Key_G, Qt.NoModifier) : self.translateObject,
            (Qt.Key_Tab, Qt.NoModifier) : self.cycleManipulator,
            (Qt.Key_Z, Qt.ControlModifier) : self.undo,
            (Qt.Key_Delete, Qt.NoModifier) : self.deleteObject,
            (Qt.Key_L, Qt.AltModifier) : self.linkObjects,
            (Qt.Key_L, Qt.ControlModifier|Qt.ShiftModifier) : self.unlinkObjects,
        }

        # Connect to key pressed signal from input context
        self.edit_inputcontext = naali.createInputContext("object-edit", 100)
        self.edit_inputcontext.SetTakeMouseEventsOverQt(True)
        #print "connecting to",self.edit_inputcontext
        self.edit_inputcontext.connect('KeyPressed(KeyEvent*)', self.on_keypressed)

        # Connect to mouse events
        self.edit_inputcontext.connect('MouseScroll(MouseEvent*)', self.on_mousescroll)
        self.edit_inputcontext.connect('MouseLeftPressed(MouseEvent*)', self.on_mouseleftpressed)
        self.edit_inputcontext.connect('MouseLeftReleased(MouseEvent*)', self.on_mouseleftreleased)
        self.edit_inputcontext.connect('MouseMove(MouseEvent*)', self.on_mousemove)
        
        self.resetManipulators()
        
        self.selection_rect = QRect()
        self.selection_rect_startpos = None
        
        r.c = self #this is for using objectedit from command.py

        self.selection_box_entity = None
        self.selection_box = None
        self.selection_box_inited = False
        
        self.menuToggleAction = None
        mainWindow = naali.ui.MainWindow()
        print mainWindow
        if mainWindow:
            menuBar = mainWindow.menuBar()
            self.menuToggleAction = menuBar.addAction("Manipulation Toggle")
            self.menuToggleAction.connect("triggered()", self.toggleEditingKeyTrigger)
        self.toggleEditing(False)
        
        """
コード例 #8
0
ファイル: testrunner.py プロジェクト: marijamarkovic/naali
    def handle_entity_created(self, ent, changetype):
        # fun fact: since we are called for every entity and
        # self.finished checked only every "update" event,
        # this often cleans up >1 test objects (in case any
        # are left over from failed tests)

        ent_id = ent.Id
        ent = naali.getEntity(ent.Id)
        try:
            p = ent.netpos.Position
        except AttributeError:
            if 0: print "skip unplaceable entity"
        else:
            if 0: print "placeable entity created: pos", p.x(), p.y(), p.z()

            # for some reason z coord ends up as 22.25
            if p.x() == 42.0 and p.y() == 42.0 and int(p.z()) == 22:
                r.logInfo("found created test prim, deleting (finished=%s)" % self.finished)
                r.getServerConnection().SendObjectDeRezPacket(
                    ent_id, r.getTrashFolderId())
                self.finished = True
コード例 #9
0
ファイル: localscene.py プロジェクト: A-K/naali
 def checkSceneActions(self):
     if(self.sceneActions==None):
         if(self.worldstream==None):
             self.worldstream = r.getServerConnection()
         uploadcap_url = self.worldstream.GetCapability('UploadScene')
         if(uploadcap_url==None or uploadcap_url==""):
             self.queue.put(('No upload capability', 'Check your rights to upload scene'))
             return False
         self.sceneActions = sceneactions.SceneActions(uploadcap_url, self)
         return True
     else:
         return True
コード例 #10
0
    def __init__(self):
        self.sels = []
        Component.__init__(self)
        self.window = window.ObjectEditWindow(self)
        self.resetValues()
        self.worldstream = r.getServerConnection()

        self.mouse_events = {
            #r.LeftMouseClickPressed: self.LeftMousePressed,
            r.InWorldClick: self.LeftMousePressed,
            r.LeftMouseClickReleased: self.LeftMouseReleased,
            r.RightMouseClickPressed: self.RightMousePressed,
            r.RightMouseClickReleased: self.RightMouseReleased
        }

        self.shortcuts = {
            #r.PyObjectEditDeselect: self.deselect,
            r.PyObjectEditToggleMove:
            self.window.manipulator_move,  #"ALT+M", #move
            r.PyObjectEditToggleScale:
            self.window.manipulator_scale,  #"ALT+S" #, #scale
            r.Delete:
            self.deleteObject,
            r.Undo:
            self.undo,
            r.PyDuplicateDrag:
            self.duplicateStart,
            r.ObjectLink:
            self.linkObjects,
            r.ObjectUnlink:
            self.unlinkObjects,
        }

        self.resetManipulators()

        loader = QUiLoader()
        selectionfile = QFile(self.SELECTIONRECT)
        self.selection_rect = loader.load(selectionfile)
        rectprops = r.createUiWidgetProperty(2)
        #~ print type(rectprops), dir(rectprops)
        #print rectprops.WidgetType
        #uiprops.widget_name_ = "Selection Rect"

        #uiprops.my_size_ = QSize(width, height) #not needed anymore, uimodule reads it
        proxy = r.createUiProxyWidget(self.selection_rect, rectprops)
        uism = r.getUiSceneManager()
        uism.AddProxyWidget(proxy)
        proxy.setWindowFlags(0)  #changing it to Qt::Widget

        self.selection_rect.setGeometry(0, 0, 0, 0)
        self.selection_rect_startpos = None

        r.c = self  #this is for using objectedit from command.py
コード例 #11
0
ファイル: localscene.py プロジェクト: etradewind/Tundra2
 def checkSceneActions(self):
     if (self.sceneActions == None):
         if (self.worldstream == None):
             self.worldstream = r.getServerConnection()
         uploadcap_url = self.worldstream.GetCapability('UploadScene')
         if (uploadcap_url == None or uploadcap_url == ""):
             self.queue.put(('No upload capability',
                             'Check your rights to upload scene'))
             return False
         self.sceneActions = sceneactions.SceneActions(uploadcap_url, self)
         return True
     else:
         return True
コード例 #12
0
ファイル: testrunner.py プロジェクト: A-K/naali
    def run(self):
        self.wait_time = int(self.config.get("wait_time", 60))
        yield "doing login"
        self.timer_start()
        r.startLoginOpensim(user, pwd, server)
        yield "waiting for connection"
        conn = None
        while not self.elapsed(self.wait_time):
            conn = r.getServerConnection()
            if conn and conn.IsConnected():
                break
            else:
                yield None
        else:
            return
        yield "waiting for avatar to appear"
        ent = None
        while not self.elapsed(self.wait_time):
            try:
                ent = naali.getUserAvatar()
            except ValueError:
                yield None
            else:
                break
        
        if not ent:
            yield "failure, avatar didn't appear"
            return

        print 'dynamic property stuff:'
        ent.GetOrCreateComponentRaw("EC_DynamicComponent")
        print ent, type(ent)
        d = ent.qent.EC_DynamicComponent
        val = 42.0
        d.CreateAttribute("real", val)
        d.ComponentChanged(0)
        assert val == d.GetAttribute("real")

        val = 8.5
        d.SetAttribute("real", val)
        d.ComponentChanged(0)
        assert val == d.GetAttribute("real")
        d.RemoveAttribute("real")
        d.ComponentChanged(0)

        yield "created, changed and removed attribute"
        r.exit()
        yield "success"
コード例 #13
0
ファイル: testrunner.py プロジェクト: etradewind/Tundra2
    def run(self):
        self.wait_time = int(self.config.get("wait_time", 60))
        yield "doing login"
        self.timer_start()
        r.startLoginOpensim(user, pwd, server)
        yield "waiting for connection"
        conn = None
        while not self.elapsed(self.wait_time):
            conn = r.getServerConnection()
            if conn and conn.IsConnected():
                break
            else:
                yield None
        else:
            return
        yield "waiting for avatar to appear"
        ent = None
        while not self.elapsed(self.wait_time):
            try:
                ent = naali.getUserAvatar()
            except ValueError:
                yield None
            else:
                break

        if not ent:
            yield "failure, avatar didn't appear"
            return

        print 'dynamic property stuff:'
        ent.GetOrCreateComponentRaw("EC_DynamicComponent")
        print ent, type(ent)
        d = ent.qent.EC_DynamicComponent
        val = 42.0
        d.CreateAttribute("real", val)
        d.ComponentChanged(0)
        assert val == d.GetAttribute("real")

        val = 8.5
        d.SetAttribute("real", val)
        d.ComponentChanged(0)
        assert val == d.GetAttribute("real")
        d.RemoveAttribute("real")
        d.ComponentChanged(0)

        yield "created, changed and removed attribute"
        r.exit()
        yield "success"
コード例 #14
0
ファイル: objectedit.py プロジェクト: caocao/naali
    def __init__(self):
        self.sels = []  
        Component.__init__(self)
        self.window = window.ObjectEditWindow(self)
        self.resetValues()
        self.worldstream = r.getServerConnection()
        
        self.mouse_events = {
            #r.LeftMouseClickPressed: self.LeftMousePressed,
            r.InWorldClick: self.LeftMousePressed,
            r.LeftMouseClickReleased: self.LeftMouseReleased,  
            r.RightMouseClickPressed: self.RightMousePressed,
            r.RightMouseClickReleased: self.RightMouseReleased
        }

        self.shortcuts = {
            #r.PyObjectEditDeselect: self.deselect,
            r.PyObjectEditToggleMove: self.window.manipulator_move,#"ALT+M", #move
            r.PyObjectEditToggleScale: self.window.manipulator_scale,#"ALT+S" #, #scale
            r.Delete: self.deleteObject,
            r.Undo: self.undo, 
            r.PyDuplicateDrag: self.duplicateStart, 
            r.ObjectLink: self.linkObjects,
            r.ObjectUnlink: self.unlinkObjects,
        }
        
        self.resetManipulators()
        
        loader = QUiLoader()
        selectionfile = QFile(self.SELECTIONRECT)
        self.selection_rect = loader.load(selectionfile)
        rectprops = r.createUiWidgetProperty(2)
        #~ print type(rectprops), dir(rectprops)
        #print rectprops.WidgetType
        #uiprops.widget_name_ = "Selection Rect"
        
        #uiprops.my_size_ = QSize(width, height) #not needed anymore, uimodule reads it
        proxy = r.createUiProxyWidget(self.selection_rect, rectprops)
        uism = r.getUiSceneManager()
        uism.AddProxyWidget(proxy)
        proxy.setWindowFlags(0) #changing it to Qt::Widget
        
        self.selection_rect.setGeometry(0,0,0,0)
        self.selection_rect_startpos = None
        
        r.c = self #this is for using objectedit from command.py
コード例 #15
0
ファイル: localscene.py プロジェクト: A-K/naali
 def publishScene(self, filename=""):
     print "publishScene"
     if(filename==""):
         filename = self.filename
     #print "publishing scene"
     if(self.worldstream==None):
         self.worldstream = r.getServerConnection()
     # try to get capability UploadScene
     uploadcap_url = self.worldstream.GetCapability('UploadScene')
     if(uploadcap_url==None or uploadcap_url==""):
         self.queue.put(('No upload capability', 'Check your rights to upload scene'))
         return
     if(self.uploader==None):
         self.uploader=SUploader(uploadcap_url, self)
     self.uploader.uploadScene(filename, self.dotScene, self.regionName, self.publishName)
     print "unloading dot scene"
     self.queue.put(('__unload__', '__unload__scene__'))
     self.queue.put(('scene upload', 'upload done'))
コード例 #16
0
ファイル: localscene.py プロジェクト: etradewind/Tundra2
 def publishScene(self, filename=""):
     print "publishScene"
     if (filename == ""):
         filename = self.filename
     #print "publishing scene"
     if (self.worldstream == None):
         self.worldstream = r.getServerConnection()
     # try to get capability UploadScene
     uploadcap_url = self.worldstream.GetCapability('UploadScene')
     if (uploadcap_url == None or uploadcap_url == ""):
         self.queue.put(
             ('No upload capability', 'Check your rights to upload scene'))
         return
     if (self.uploader == None):
         self.uploader = SUploader(uploadcap_url, self)
     self.uploader.uploadScene(filename, self.dotScene, self.regionName,
                               self.publishName)
     print "unloading dot scene"
     self.queue.put(('__unload__', '__unload__scene__'))
     self.queue.put(('scene upload', 'upload done'))
コード例 #17
0
ファイル: estatemanagement.py プロジェクト: A-K/naali
 def loadEstate(self):
     self.worldstream = r.getServerConnection()
     if self.worldstream==None:
         self.queue.put(("displayerror", "No worldstream, check if you're connected to server"))
     else:        
         self.estatesettings = EstateSettings(self.worldstream, self)
         s = naali.getScene("World")
         self.ents = s.GetEntitiesWithComponentRaw("EC_OpenSimPresence")
         self.window.setRegionUsers(self.ents)
         #self.worldstream.SendEstateInfoRequestpacket() #!!
         self.worldstream.SendEstateOwnerMessage("getinfo", ())        
         self.updateSavedUsers()
         #self.updateSavedUsersTab()
         #test if rights to modify access
         cap = self.worldstream.GetCapability('EstateRegionSettingsModification')
         if cap==None or cap=="":
             self.window.setNoCapInfo()
         else:
             self.estatesettings.fetchEstates()
             self.window.resetCapInfo()
         pass
コード例 #18
0
ファイル: edit.py プロジェクト: Ilikia/naali
 def on_worldstreamready(self, id):
     r.logInfo("Worldstream ready")
     self.worldstream = r.getServerConnection()
     return False # return False, we don't want to consume the event and not have it for others available
コード例 #19
0
ファイル: objectedit.py プロジェクト: Chiru/naali
    def __init__(self):
        self.sels = []  
        Component.__init__(self)
        self.window = window.ObjectEditWindow(self)
        self.resetValues()
        self.worldstream = r.getServerConnection()
        self.usingManipulator = False
        self.useLocalTransform = False
        self.cpp_python_handler = None
        self.left_button_down = False
        self.keypressed = False

        self.shortcuts = {
            (Qt.Key_Z, Qt.ControlModifier) : self.undo,
            (Qt.Key_Delete, Qt.NoModifier) : self.deleteObject,
            (Qt.Key_L, Qt.AltModifier) : self.linkObjects,
            (Qt.Key_L, Qt.ControlModifier|Qt.ShiftModifier) : self.unlinkObjects,
        }

        # Connect to key pressed signal from input context
        self.edit_inputcontext = naali.createInputContext("object-edit", 100)
        self.edit_inputcontext.SetTakeMouseEventsOverQt(True)
        self.edit_inputcontext.connect('KeyPressed(KeyEvent*)', self.on_keypressed)

        # Connect to mouse events
        self.edit_inputcontext.connect('MouseScroll(MouseEvent*)', self.on_mousescroll)
        self.edit_inputcontext.connect('MouseLeftPressed(MouseEvent*)', self.on_mouseleftpressed)
        self.edit_inputcontext.connect('MouseLeftReleased(MouseEvent*)', self.on_mouseleftreleased)
        self.edit_inputcontext.connect('MouseMove(MouseEvent*)', self.on_mousemove)
        
        self.resetManipulators()
        
        loader = QUiLoader()
        selectionfile = QFile(self.SELECTIONRECT)
        self.selection_rect = loader.load(selectionfile)
        #rectprops = r.createUiWidgetProperty(2)
        #~ print type(rectprops), dir(rectprops)
        #print rectprops.WidgetType
        #uiprops.widget_name_ = "Selection Rect"
        
        #uiprops.my_size_ = QSize(width, height) #not needed anymore, uimodule reads it
        proxy = r.createUiProxyWidget(self.selection_rect)
        uism = r.getUiSceneManager()
        uism.AddWidgetToScene(proxy)
        proxy.setWindowFlags(0) #changing it to Qt::Widget
        
        self.selection_rect.setGeometry(0,0,0,0)
        self.selection_rect_startpos = None
        
        r.c = self #this is for using objectedit from command.py
        
        # Get world building modules python handler
        self.cpp_python_handler = r.getQWorldBuildingHandler()
        if self.cpp_python_handler == None:
            r.logDebug("Could not aqquire world building service to object edit")
        else:
            # Connect signals
            self.cpp_python_handler.connect('ActivateEditing(bool)', self.on_activate_editing)
            self.cpp_python_handler.connect('ManipulationMode(int)', self.on_manupulation_mode_change)
            self.cpp_python_handler.connect('RemoveHightlight()', self.deselect_all)
            self.cpp_python_handler.connect('RotateValuesToNetwork(int, int, int)', self.changerot_cpp)
            self.cpp_python_handler.connect('ScaleValuesToNetwork(double, double, double)', self.changescale_cpp)
            self.cpp_python_handler.connect('PosValuesToNetwork(double, double, double)', self.changepos_cpp)
            self.cpp_python_handler.connect('CreateObject()', self.createObject)
            self.cpp_python_handler.connect('DuplicateObject()', self.duplicate)
            self.cpp_python_handler.connect('DeleteObject()', self.deleteObject)
            # Pass widgets
            self.cpp_python_handler.PassWidget("Mesh", self.window.mesh_widget)
            self.cpp_python_handler.PassWidget("Animation", self.window.animation_widget)
            self.cpp_python_handler.PassWidget("Sound", self.window.sound_widget)
            self.cpp_python_handler.PassWidget("Materials", self.window.materialTabFormWidget)
            # Check if build mode is active, required on python restarts
            self.on_activate_editing(self.cpp_python_handler.IsBuildingActive())
コード例 #20
0
ファイル: localscene.py プロジェクト: etradewind/Tundra2
 def printOutCurrentCap(self):
     if (self.worldstream == None):
         self.worldstream = r.getServerConnection()
     uploadcap_url = self.worldstream.GetCapability('UploadScene')
     print uploadcap_url
コード例 #21
0
ファイル: localscene.py プロジェクト: A-K/naali
 def printOutCurrentCap(self):
     if(self.worldstream==None):
         self.worldstream = r.getServerConnection()
     uploadcap_url = self.worldstream.GetCapability('UploadScene')
     print uploadcap_url
コード例 #22
0
ファイル: edit.py プロジェクト: bigjun/TundraAddons
    def __init__(self):
        self.sels = []
        self.selmasses = {}
        Component.__init__(self)
        self.resetValues()
        self.worldstream = r.getServerConnection()
        self.usingManipulator = False
        self.useLocalTransform = False
        #self.cpp_python_handler = None
        self.left_button_down = False
        self.keypressed = False
        self.editing = False

        self.editingKeyTrigger = (Qt.Key_M, Qt.ShiftModifier)
        self.shortcuts = {
            self.editingKeyTrigger: self.toggleEditingKeyTrigger,
            (Qt.Key_R, Qt.NoModifier): self.rotateObject,
            (Qt.Key_S, Qt.NoModifier): self.scaleObject,
            (Qt.Key_G, Qt.NoModifier): self.translateObject,
            (Qt.Key_Tab, Qt.NoModifier): self.cycleManipulator,
            (Qt.Key_Z, Qt.ControlModifier): self.undo,
            (Qt.Key_Delete, Qt.NoModifier): self.deleteObject,
            (Qt.Key_L, Qt.AltModifier): self.linkObjects,
            (Qt.Key_L, Qt.ControlModifier | Qt.ShiftModifier):
            self.unlinkObjects,
        }

        # Connect to key pressed signal from input context
        self.edit_inputcontext = naali.createInputContext("object-edit", 100)
        self.edit_inputcontext.SetTakeMouseEventsOverQt(True)
        #print "connecting to",self.edit_inputcontext
        self.edit_inputcontext.connect('KeyPressed(KeyEvent*)',
                                       self.on_keypressed)

        # Connect to mouse events
        self.edit_inputcontext.connect('MouseScroll(MouseEvent*)',
                                       self.on_mousescroll)
        self.edit_inputcontext.connect('MouseLeftPressed(MouseEvent*)',
                                       self.on_mouseleftpressed)
        self.edit_inputcontext.connect('MouseLeftReleased(MouseEvent*)',
                                       self.on_mouseleftreleased)
        self.edit_inputcontext.connect('MouseMove(MouseEvent*)',
                                       self.on_mousemove)

        self.resetManipulators()

        self.selection_rect = QRect()
        self.selection_rect_startpos = None

        r.c = self  #this is for using objectedit from command.py

        self.selection_box_entity = None
        self.selection_box = None
        self.selection_box_inited = False

        self.menuToggleAction = None
        mainWindow = naali.ui.MainWindow()
        print mainWindow
        if mainWindow:
            menuBar = mainWindow.menuBar()
            self.menuToggleAction = menuBar.addAction("Manipulation Toggle")
            self.menuToggleAction.connect("triggered()",
                                          self.toggleEditingKeyTrigger)
        self.toggleEditing(False)
        """
コード例 #23
0
    #~ max_ent = r.createEntity("cruncah1.mesh")
    #~ max_ent.scale = 0.3, 0.3, 0.3
    #~ max_ent.pos = pos[0] + max.x, pos[1] + max.y, pos[2] + max.z

if 0:  #login - for running tests automatically
    print "starting opensim login"
    #user, pwd, server = "Test User", "test", "localhost:9000"
    user, pwd, server = "d d", "d", "world.evocativi.com:8002"
    r.startLoginOpensim(user, pwd, server)

if 0:  #getserver test
    #print dir(r)
    #print "YO", r.getTrashFolderId()
    #r.deleteObject(2351241440)
    worldstream = r.getServerConnection()

    #print worldstream, dir(worldstream), worldstream.SendObjectDeRezPacket
    worldstream.SendObjectDeRezPacket(2891301779, r.getTrashFolderId())
    #ent = r.getEntity(r.getUserAvatarId())
    #worldstream.SendObjectDeletePacket(1278500474, True)
    #~ ent = r.getEntity(2208825114)
    #~ print ent

if 0:  #undo tests
    e = r.getEntity(1752805599)
    print e.prim, e.uuid
    e_uuid = "d81432f2-28f3-4e05-ac8a-abb4b625dbe4-"
    worldstream = r.getServerConnection()
    #print worldstream, dir(worldstream), worldstream.SendObjectDeRezPacket
    worldstream.SendObjectUndoPacket(e.uuid)
コード例 #24
0
ファイル: objectedit.py プロジェクト: etradewind/Tundra2
 def on_worldstreamready(self, id):
     r.logInfo("Worldstream ready")
     self.worldstream = r.getServerConnection()
     return False  # return False, we don't want to consume the event and not have it for others available
コード例 #25
0
ファイル: objectedit.py プロジェクト: etradewind/Tundra2
    def __init__(self):
        self.sels = []
        Component.__init__(self)
        self.window = window.ObjectEditWindow(self)
        self.resetValues()
        self.worldstream = r.getServerConnection()
        self.usingManipulator = False
        self.useLocalTransform = False
        self.cpp_python_handler = None
        self.left_button_down = False
        self.keypressed = False

        self.shortcuts = {
            (Qt.Key_Z, Qt.ControlModifier): self.undo,
            (Qt.Key_Delete, Qt.NoModifier): self.deleteObject,
            (Qt.Key_L, Qt.AltModifier): self.linkObjects,
            (Qt.Key_L, Qt.ControlModifier | Qt.ShiftModifier):
            self.unlinkObjects,
        }

        # Connect to key pressed signal from input context
        self.edit_inputcontext = naali.createInputContext("object-edit", 100)
        self.edit_inputcontext.SetTakeMouseEventsOverQt(True)
        self.edit_inputcontext.connect('KeyPressed(KeyEvent*)',
                                       self.on_keypressed)

        # Connect to mouse events
        self.edit_inputcontext.connect('MouseScroll(MouseEvent*)',
                                       self.on_mousescroll)
        self.edit_inputcontext.connect('MouseLeftPressed(MouseEvent*)',
                                       self.on_mouseleftpressed)
        self.edit_inputcontext.connect('MouseLeftReleased(MouseEvent*)',
                                       self.on_mouseleftreleased)
        self.edit_inputcontext.connect('MouseMove(MouseEvent*)',
                                       self.on_mousemove)

        self.resetManipulators()

        loader = QUiLoader()
        selectionfile = QFile(self.SELECTIONRECT)
        self.selection_rect = loader.load(selectionfile)
        #rectprops = r.createUiWidgetProperty(2)
        #~ print type(rectprops), dir(rectprops)
        #print rectprops.WidgetType
        #uiprops.widget_name_ = "Selection Rect"

        #uiprops.my_size_ = QSize(width, height) #not needed anymore, uimodule reads it
        proxy = r.createUiProxyWidget(self.selection_rect)
        uism = naali.ui
        uism.AddWidgetToScene(proxy)
        proxy.setWindowFlags(0)  #changing it to Qt::Widget

        self.selection_rect.setGeometry(0, 0, 0, 0)
        self.selection_rect_startpos = None

        r.c = self  #this is for using objectedit from command.py

        # Get world building modules python handler
        self.cpp_python_handler = r.getQWorldBuildingHandler()
        if self.cpp_python_handler == None:
            r.logDebug(
                "Could not aqquire world building service to object edit")
        else:
            # Connect signals
            self.cpp_python_handler.connect('ActivateEditing(bool)',
                                            self.on_activate_editing)
            self.cpp_python_handler.connect('ManipulationMode(int)',
                                            self.on_manupulation_mode_change)
            self.cpp_python_handler.connect('RemoveHightlight()',
                                            self.deselect_all)
            self.cpp_python_handler.connect(
                'RotateValuesToNetwork(int, int, int)', self.changerot_cpp)
            self.cpp_python_handler.connect(
                'ScaleValuesToNetwork(double, double, double)',
                self.changescale_cpp)
            self.cpp_python_handler.connect(
                'PosValuesToNetwork(double, double, double)',
                self.changepos_cpp)
            self.cpp_python_handler.connect('CreateObject()',
                                            self.createObject)
            self.cpp_python_handler.connect('DuplicateObject()',
                                            self.duplicate)
            self.cpp_python_handler.connect('DeleteObject()',
                                            self.deleteObject)
            # Pass widgets
            self.cpp_python_handler.PassWidget("Mesh", self.window.mesh_widget)
            self.cpp_python_handler.PassWidget("Animation",
                                               self.window.animation_widget)
            self.cpp_python_handler.PassWidget("Sound",
                                               self.window.sound_widget)
            self.cpp_python_handler.PassWidget(
                "Materials", self.window.materialTabFormWidget)
            # Check if build mode is active, required on python restarts
            self.on_activate_editing(
                self.cpp_python_handler.IsBuildingActive())
コード例 #26
0
ファイル: command.py プロジェクト: Chiru/naali
if 0: #testing the removal of canvases
    canvas = r.c.canvas
    modu = r.getQtModule()
    #print dir(modu)
    bool = modu.RemoveCanvasFromControlBar(canvas)
    print bool
    
if 0:
    print "Testing..."
    e = r.getEntity(8880001)  
    print e
    start_x = e.pos[0]
    start_y = e.pos[1]
    start_z = e.pos[2]
        
    worldstream = r.getServerConnection()
    worldstream.SendObjectAddPacket(start_x, start_y, start_z)

if 0: #getUserAvatar 
    ent = naali.getUserAvatar()
    print "User's avatar_id:", ent.id
    #print "Avatar's mesh_name:", ent.mesh.GetMeshName(0)
    #ent.mesh = "cruncah1.mesh"
    
if 0:
    print r.getCameraUp()
    print r.getCameraRight()

if 0: #test changing the mesh asset a prim is using
    ent_id = 2088826433
    #print arkku_id, type(arkku_id)