Browse Source

Make enableLight persistent through subsequent disable/enables

Mark Mine 22 years ago
parent
commit
d4dd191c05
2 changed files with 14 additions and 24 deletions
  1. 13 23
      direct/src/directtools/DirectSession.py
  2. 1 1
      direct/src/tkpanels/DirectSessionPanel.py

+ 13 - 23
direct/src/directtools/DirectSession.py

@@ -27,6 +27,7 @@ class DirectSession(PandaObject):
         self.group = render.attachNewNode('DIRECT')
         self.font = TextNode.getDefaultFont()
         self.fEnabled = 0
+        self.fEnabledLight = 0
         self.drList = DisplayRegionList()
         self.iRayList = map(lambda x: x.iRay, self.drList)
         self.dr = self.drList[0]
@@ -194,45 +195,34 @@ class DirectSession(PandaObject):
         self.disable()
         # Start all display region context tasks
         self.drList.spawnContextTask()
-        # Turn on mouse Flying
-        self.cameraControl.enableMouseFly()
+        if not self.fEnabledLight:
+            # Turn on mouse Flying
+            self.cameraControl.enableMouseFly()
         # Turn on object manipulation
         self.manipulationControl.enableManipulation()
         # Make sure list of selected items is reset
         self.selected.reset()
         # Accept appropriate hooks
-        self.enableKeyEvents()
-        self.enableModifierEvents()
+        if not self.fEnabledLight:
+            self.enableKeyEvents()
         self.enableMouseEvents()
         self.enableActionEvents()
+        self.enableModifierEvents()
         # Set flag
         self.fEnabled = 1
 
     def enableLight(self):
-        if self.fEnabled:
-            return
-        # Make sure old tasks are shut down
-        self.disable()
-        # Start all display region context tasks
-        self.drList.spawnContextTask()
-        # Turn on object manipulation
-        self.manipulationControl.enableManipulation()
-        # Make sure list of selected items is reset
-        self.deselectAll()
-        self.selected.reset()
-        # Accept appropriate hooks
-        self.enableMouseEvents()
-        self.enableActionEvents()
-        self.enableModifierEvents()
-        # Set flag
-        self.fEnabled = 1
+        self.fEnabledLight = 1
+        self.enable()
 
     def disable(self):
         # Shut down all display region context tasks
         self.drList.removeContextTask()
-        # Turn off camera fly
-        self.cameraControl.disableMouseFly()
+        if not self.fEnabledLight:
+            # Turn off camera fly
+            self.cameraControl.disableMouseFly()
         # Turn off object manipulation
+        self.deselectAll()
         self.manipulationControl.disableManipulation()
         self.disableKeyEvents()
         self.disableModifierEvents()

+ 1 - 1
direct/src/tkpanels/DirectSessionPanel.py

@@ -88,7 +88,7 @@ class DirectSessionPanel(AppShell):
         self.menuBar.addmenu('DIRECT', 'Direct Session Panel Operations')
         
         self.directEnabled = BooleanVar()
-        self.directEnabled.set(direct.isEnabled())
+        self.directEnabled.set(1)
         self.menuBar.addmenuitem('DIRECT', 'checkbutton',
                                  'DIRECT Enabled',
                                  label = 'Enable',