浏览代码

Fixed crash in Pirates

Gyedo Jeon 16 年之前
父节点
当前提交
8370d2be12
共有 1 个文件被更改,包括 11 次插入3 次删除
  1. 11 3
      direct/src/directtools/DirectSelection.py

+ 11 - 3
direct/src/directtools/DirectSelection.py

@@ -516,13 +516,18 @@ class SelectionQueue(CollisionHandlerQueue):
             # Well, no way to tell.  Assume we're not backfacing.
             return 0
 
+        if direct:
+            cam = base.direct.cam
+        else:
+            cam = base.cam
+
         fromNodePath = entry.getFromNodePath()
         v = Vec3(entry.getSurfacePoint(fromNodePath))
         n = entry.getSurfaceNormal(fromNodePath)
         # Convert to camera space for backfacing test
-        if self.collisionNodePath.getParent() != base.direct.cam:
+        if self.collisionNodePath.getParent() != cam:
             # Problem: assumes base.cam is the camera in question
-            p2cam = self.collisionNodePath.getParent().getMat(base.direct.cam)
+            p2cam = self.collisionNodePath.getParent().getMat(cam)
             v = Vec3(p2cam.xformPoint(v))
             n = p2cam.xformVec(n)
         # Normalize and check angle between to vectors
@@ -583,7 +588,10 @@ class SelectionRay(SelectionQueue):
             mx = base.mouseWatcherNode.getMouseX()
             my = base.mouseWatcherNode.getMouseY()
 
-        self.collider.setFromLens(base.direct.camNode, mx, my)
+        if direct:
+            self.collider.setFromLens(base.direct.camNode, mx, my)
+        else:
+            self.collider.setFromLens(base.camNode, mx, my)            
         self.ct.traverse(targetNodePath)
         self.sortEntries()