*** empty log message ***

This commit is contained in:
Mark Mine 2001-05-07 19:52:38 +00:00
parent 5e62418b97
commit 8d25bfaf43
6 changed files with 84 additions and 38 deletions

View File

@ -55,7 +55,7 @@ class DirectJoybox(PandaObject):
self.refCS = direct.cameraControl.coaMarker
self.tempCS = direct.group.attachNewNode('JoyboxTempCS')
# Text object to display current mode
self.readout = OnscreenText.OnscreenText( pos = (-0.9, -0.95) )
self.readout = OnscreenText.OnscreenText( pos = (-0.9, 0.95) )
# List of functions to cycle through
self.modeList = [self.joeMode, self.driveMode, self.orbitMode]
# Pick initial mode

View File

@ -32,7 +32,7 @@ class DirectManipulationControl(PandaObject):
[',', self.objectHandles.multiplyScalingFactorBy, 0.5],
['<', self.objectHandles.multiplyScalingFactorBy, 0.5],
['F', self.objectHandles.growToFit],
['p', self.plantSelectedNodePath],
['P', self.plantSelectedNodePath],
]
def manipulationStart(self):

View File

@ -1,9 +1,10 @@
from PandaObject import *
from DirectGeometry import *
from DirectSelection import *
import __builtin__
UNPICKABLE = ['x-disc-visible', 'y-disc-visible', 'z-disc-visible',
'GridBack']
'gridBack']
# MRM: To do: handle broken node paths in selected and deselected dicts
class DirectNodePath(NodePath):
@ -55,7 +56,7 @@ class SelectedNodePaths(PandaObject):
def reset(self):
self.selectedDict = {}
self.deselectedDict = {}
self.last = None
__builtin__.last = self.last = None
def select(self, nodePath, fMultiSelect = 0):
""" Select the specified node path. Multiselect as required """
@ -89,7 +90,7 @@ class SelectedNodePaths(PandaObject):
# Add it to the selected dictionary
self.selectedDict[dnp.id()] = dnp
# And update last
self.last = dnp
__builtin__.last = self.last = dnp
return dnp
def deselect(self, nodePath):
@ -210,7 +211,7 @@ class SelectedNodePaths(PandaObject):
selected = self.last
if selected:
selected.remove()
self.last = None
__builtin__.last = self.last = None
def removeAll(self):
# Remove all selected nodePaths from the Scene Graph

View File

@ -49,11 +49,19 @@ class DirectSession(PandaObject):
self.ancestryIndex = 0
self.activeParent = None
self.readout = OnscreenText.OnscreenText( pos = (0.1, -0.95), bg=Vec4(1,1,1,1))
self.selectedNPReadout = OnscreenText.OnscreenText(
pos = (-1.0, -0.9), bg=Vec4(1,1,1,1),
scale = 0.05, align = TMALIGNLEFT)
# Make sure readout is never lit or drawn in wireframe
useDirectRenderStyle(self.readout)
# self.readout.textNode.setCardColor(0.5, 0.5, 0.5, 0.5)
self.readout.reparentTo( hidden )
useDirectRenderStyle(self.selectedNPReadout)
self.selectedNPReadout.reparentTo( hidden )
self.activeParentReadout = OnscreenText.OnscreenText(
pos = (-1.0, -0.975), bg=Vec4(1,1,1,1),
scale = 0.05, align = TMALIGNLEFT)
# Make sure readout is never lit or drawn in wireframe
useDirectRenderStyle(self.activeParentReadout)
self.activeParentReadout.reparentTo( hidden )
# Create a vrpn client vrpn-server or default
if base.config.GetBool('want-vrpn', 0):
@ -113,7 +121,7 @@ class DirectSession(PandaObject):
'shift', 'shift-up', 'alt', 'alt-up',
'page_up', 'page_down',
'[', '{', ']', '}',
'A', 'b', 'l', 's', 't', 'v', 'w']
'A', 'b', 'l', 'p', 's', 't', 'v', 'w']
self.mouseEvents = ['mouse1', 'mouse1-up',
'mouse2', 'mouse2-up',
'mouse3', 'mouse3-up']
@ -241,6 +249,9 @@ class DirectSession(PandaObject):
base.toggleBackface()
elif input == 'l':
self.lights.toggle()
elif input == 'p':
if self.selected.last:
self.setActiveParent(self.selected.last)
elif input == 's':
if self.selected.last:
self.select(self.selected.last)
@ -264,9 +275,10 @@ class DirectSession(PandaObject):
self.ancestry = dnp.getAncestry()
self.ancestry.reverse()
self.ancestryIndex = 0
# Update the readout
self.readout.reparentTo(render2d)
self.readout.setText(dnp.name)
# Update the selectedNPReadout
self.selectedNPReadout.reparentTo(aspect2d)
self.selectedNPReadout.setText(
'Selected:' + dnp.name)
# Show the manipulation widget
self.widget.showWidget()
# Update camera controls coa to this point
@ -300,8 +312,8 @@ class DirectSession(PandaObject):
if dnp:
# Hide the manipulation widget
self.widget.hideWidget()
self.readout.reparentTo(hidden)
self.readout.setText(' ')
self.selectedNPReadout.reparentTo(hidden)
self.selectedNPReadout.setText(' ')
taskMgr.removeTasksNamed('followSelectedNodePath')
self.ancestry = []
# Send an message marking the event
@ -311,13 +323,17 @@ class DirectSession(PandaObject):
self.selected.deselectAll()
# Hide the manipulation widget
self.widget.hideWidget()
self.readout.reparentTo(hidden)
self.readout.setText(' ')
self.selectedNPReadout.reparentTo(hidden)
self.selectedNPReadout.setText(' ')
taskMgr.removeTasksNamed('followSelectedNodePath')
def setActiveParent(self, nodePath = None):
# Record new parent
self.activeParent = nodePath
# Update the activeParentReadout
self.activeParentReadout.reparentTo(aspect2d)
self.activeParentReadout.setText(
'Active Parent:' + nodePath.getName())
# Alert everyone else
messenger.send('DIRECT_activeParent', [self.activeParent])
@ -550,8 +566,11 @@ class DirectSession(PandaObject):
self.widget = self.manipulationControl.objectHandles
self.widget.reparentTo(direct.group)
def hideReadout(self):
self.readout.reparentTo(hidden)
def hideSelectedNPReadout(self):
self.selectedNPReadout.reparentTo(hidden)
def hideActiveParentReadout(self):
self.activeParentReadout.reparentTo(hidden)
def toggleWidgetVis(self):
self.widget.toggleWidget()

View File

@ -416,8 +416,6 @@ class LevelEditor(NodePath, PandaObject):
self.pointDict = {}
self.point2edgeDict = {}
self.cellDict = {}
self.visitedPoints = []
self.visitedEdges = []
# Initialize LevelEditor variables DNAData, DNAToplevel, NPToplevel
# DNAParent, NPParent, groupNum, lastAngle
@ -617,6 +615,9 @@ class LevelEditor(NodePath, PandaObject):
self.snapList = []
# Last menu used
self.activeMenu = None
# For highlighting suit paths
self.visitedPoints = []
self.visitedEdges = []
# Update scene graph explorer
if fUpdateExplorer:
self.panel.sceneGraphExplorer.update()
@ -774,17 +775,34 @@ class LevelEditor(NodePath, PandaObject):
print 'Suit Point:', pointOrCell
if DNASTORE.removeSuitPoint(pointOrCell):
print "Removed from DNASTORE"
del(self.pointDict[pointOrCell])
# Update edge dict
for edge in self.point2edgeDict[pointOrCell]:
# Is it still in edge dict?
oldEdgeLine = self.edgeDict.get(edge, None)
if oldEdgeLine:
del self.edgeDict[edge]
oldEdgeLine.reset()
del oldEdgeLine
else:
print "Not found in DNASTORE"
# Remove point from pointDict
del(self.pointDict[pointOrCell])
# Remove point from visitedPoints list
if pointOrCell in self.visitedPoints:
self.visitedPoints.remove(pointOrCell)
# Update edge related dictionaries
for edge in self.point2edgeDict[pointOrCell]:
# Is it still in edge dict?
oldEdgeLine = self.edgeDict.get(edge, None)
if oldEdgeLine:
del self.edgeDict[edge]
oldEdgeLine.reset()
del oldEdgeLine
# Find other endpoints of edge and clear out
# corresponding point2edgeDict entry
startPoint = edge.getStartPoint()
endPoint = edge.getEndPoint()
if pointOrCell == startPoint:
self.point2edgeDict[endPoint].remove(edge)
elif pointOrCell == endPoint:
self.point2edgeDict[startPoint].remove(edge)
# Is it in the visited edges list?
if edge in self.visitedEdges:
self.visitedEdges.remove(edge)
# Now delete point2edgeDict entry for this point
del(self.point2edgeDict[pointOrCell])
elif (type == 'battleCellMarker'):
# Get parent vis group
visGroupNP, visGroupDNA = self.findParentVisGroup(nodePath)
@ -894,13 +912,15 @@ class LevelEditor(NodePath, PandaObject):
print "Found suit point!", pointOrCell
# Ok, now update all the lines into that node
for edge in self.point2edgeDict[pointOrCell]:
oldEdgeLine = self.edgeDict[edge]
del self.edgeDict[edge]
oldEdgeLine.reset()
del oldEdgeLine
newEdgeLine = self.drawSuitEdge(
edge, self.NPParent)
self.edgeDict[edge] = newEdgeLine
# Is it still in edge dict?
oldEdgeLine = self.edgeDict.get(edge, None)
if oldEdgeLine:
del self.edgeDict[edge]
oldEdgeLine.reset()
del oldEdgeLine
newEdgeLine = self.drawSuitEdge(
edge, self.NPParent)
self.edgeDict[edge] = newEdgeLine
elif (type == 'battleCellMarker'):
print "Found battle cell!", pointOrCell

View File

@ -98,6 +98,12 @@ class Messenger:
# If we looked in both dictionaries and made it here
# that object must not be accepting that event.
return 0
def whoAccepts(self, event):
""" whoAccepts(self, event):
Return objects accepting the given event
"""
return self.dict.get(event, None)
def isIgnoring(self, event, object):
""" isIgnorning(self, string, DirectObject)