mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-05 03:15:07 -04:00
Added command to make really long street
This commit is contained in:
parent
ae4051cef8
commit
4906263a0e
@ -1123,7 +1123,11 @@ class LevelEditor(NodePath, PandaObject):
|
|||||||
del(self.point2edgeDict[pointOrCell])
|
del(self.point2edgeDict[pointOrCell])
|
||||||
elif (type == 'battleCellMarker'):
|
elif (type == 'battleCellMarker'):
|
||||||
# Get parent vis group
|
# Get parent vis group
|
||||||
visGroupNP, visGroupDNA = self.findParentVisGroup(nodePath)
|
try:
|
||||||
|
visGroupNP, visGroupDNA = self.findParentVisGroup(
|
||||||
|
nodePath)
|
||||||
|
except TypeError:
|
||||||
|
visGroupNP, visGroupDNA = None, None
|
||||||
print 'Battle Cell:', pointOrCell
|
print 'Battle Cell:', pointOrCell
|
||||||
# Remove cell from vis group
|
# Remove cell from vis group
|
||||||
if visGroupNP and visGroupDNA:
|
if visGroupNP and visGroupDNA:
|
||||||
@ -2320,7 +2324,7 @@ class LevelEditor(NodePath, PandaObject):
|
|||||||
else:
|
else:
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def autoPositionGrid(self):
|
def autoPositionGrid(self, fLerp = 1):
|
||||||
taskMgr.remove('autoPositionGrid')
|
taskMgr.remove('autoPositionGrid')
|
||||||
# Move grid to prepare for placement of next object
|
# Move grid to prepare for placement of next object
|
||||||
selectedNode = direct.selected.last
|
selectedNode = direct.selected.last
|
||||||
@ -2347,6 +2351,7 @@ class LevelEditor(NodePath, PandaObject):
|
|||||||
elif objectCode[-2:-1] == 'C':
|
elif objectCode[-2:-1] == 'C':
|
||||||
deltaPos.setX(20.0)
|
deltaPos.setX(20.0)
|
||||||
|
|
||||||
|
if fLerp:
|
||||||
# Position grid for placing next object
|
# Position grid for placing next object
|
||||||
# Eventually we need to setHpr too
|
# Eventually we need to setHpr too
|
||||||
t = direct.grid.lerpPosHpr(
|
t = direct.grid.lerpPosHpr(
|
||||||
@ -2358,6 +2363,8 @@ class LevelEditor(NodePath, PandaObject):
|
|||||||
t.deltaHpr = deltaHpr
|
t.deltaHpr = deltaHpr
|
||||||
t.selectedNode = selectedNode
|
t.selectedNode = selectedNode
|
||||||
t.uponDeath = self.autoPositionCleanup
|
t.uponDeath = self.autoPositionCleanup
|
||||||
|
else:
|
||||||
|
direct.grid.setPosHpr(selectedNode, deltaPos, deltaHpr)
|
||||||
|
|
||||||
# Also move the camera
|
# Also move the camera
|
||||||
taskMgr.remove('autoMoveDelay')
|
taskMgr.remove('autoMoveDelay')
|
||||||
@ -2369,6 +2376,7 @@ class LevelEditor(NodePath, PandaObject):
|
|||||||
direct.cameraControl.centerCamIn(0.5)
|
direct.cameraControl.centerCamIn(0.5)
|
||||||
|
|
||||||
def autoPositionCleanup(self,state):
|
def autoPositionCleanup(self,state):
|
||||||
|
print state.deltaPos
|
||||||
direct.grid.setPosHpr(state.selectedNode, state.deltaPos,
|
direct.grid.setPosHpr(state.selectedNode, state.deltaPos,
|
||||||
state.deltaHpr)
|
state.deltaHpr)
|
||||||
if direct.grid.getHprSnap():
|
if direct.grid.getHprSnap():
|
||||||
@ -3337,6 +3345,54 @@ class LevelEditor(NodePath, PandaObject):
|
|||||||
def pdbBreak(self):
|
def pdbBreak(self):
|
||||||
pdb.set_trace()
|
pdb.set_trace()
|
||||||
|
|
||||||
|
def reparentStreetBuildings(self, nodePath):
|
||||||
|
dnaNode = self.findDNANode(nodePath)
|
||||||
|
if dnaNode:
|
||||||
|
if (DNAClassEqual(dnaNode, DNA_FLAT_BUILDING) or
|
||||||
|
DNAClassEqual(dnaNode, DNA_LANDMARK_BUILDING)):
|
||||||
|
direct.reparent(nodePath, fWrt = 1)
|
||||||
|
children = nodePath.getChildrenAsList()
|
||||||
|
for child in children:
|
||||||
|
self.reparentStreetBuildings(child)
|
||||||
|
|
||||||
|
def consolidateStreetBuildings(self):
|
||||||
|
self.addGroup(self.NPToplevel)
|
||||||
|
newGroup = self.NPParent
|
||||||
|
newGroup.setName('LongStreet')
|
||||||
|
self.setName(newGroup, 'LongStreet')
|
||||||
|
direct.setActiveParent(newGroup)
|
||||||
|
self.reparentStreetBuildings(self.NPToplevel)
|
||||||
|
return newGroup
|
||||||
|
|
||||||
|
def adjustPropChildren(self, nodePath, maxPropOffset = -4):
|
||||||
|
for np in nodePath.getChildrenAsList():
|
||||||
|
dnaNode = self.findDNANode(np)
|
||||||
|
if dnaNode:
|
||||||
|
if DNAClassEqual(dnaNode, DNA_PROP):
|
||||||
|
if np.getY() < maxPropOffset:
|
||||||
|
np.setY(maxPropOffset)
|
||||||
|
self.updateSelectedPose([np])
|
||||||
|
|
||||||
|
def makeLongStreet(self):
|
||||||
|
bldgGroup = self.consolidateStreetBuildings()
|
||||||
|
bldgs = bldgGroup.getChildrenAsList()
|
||||||
|
numBldgs = len(bldgs)
|
||||||
|
ref = None
|
||||||
|
direct.grid.fXyzSnap = 0
|
||||||
|
for i in range(numBldgs):
|
||||||
|
bldg = bldgs[i]
|
||||||
|
if ref == None:
|
||||||
|
bldg.iPosHpr()
|
||||||
|
elif i == (numBldgs/2):
|
||||||
|
bldg.setPosHpr(direct.grid, 0, -40, 0, 180, 0, 0)
|
||||||
|
else:
|
||||||
|
ref.select()
|
||||||
|
self.autoPositionGrid(fLerp = 0)
|
||||||
|
bldg.iPosHpr(direct.grid)
|
||||||
|
ref = bldg
|
||||||
|
self.updateSelectedPose([bldg])
|
||||||
|
self.adjustPropChildren(bldg)
|
||||||
|
|
||||||
|
|
||||||
class LevelStyleManager:
|
class LevelStyleManager:
|
||||||
"""Class which reads in style files and manages class variables"""
|
"""Class which reads in style files and manages class variables"""
|
||||||
@ -4653,6 +4709,10 @@ class LevelEditorPanel(Pmw.MegaToplevel):
|
|||||||
'Reset level',
|
'Reset level',
|
||||||
label = 'Reset level',
|
label = 'Reset level',
|
||||||
command = self.levelEditor.reset)
|
command = self.levelEditor.reset)
|
||||||
|
menuBar.addmenuitem('Level Editor', 'command',
|
||||||
|
'Make Long Street',
|
||||||
|
label = 'Make Long Street',
|
||||||
|
command = self.levelEditor.makeLongStreet)
|
||||||
menuBar.addmenuitem('Level Editor', 'command',
|
menuBar.addmenuitem('Level Editor', 'command',
|
||||||
'Exit Level Editor Panel',
|
'Exit Level Editor Panel',
|
||||||
label = 'Exit',
|
label = 'Exit',
|
||||||
@ -5984,3 +6044,4 @@ class VisGroupsEditor(Pmw.MegaToplevel):
|
|||||||
|
|
||||||
l = LevelEditor()
|
l = LevelEditor()
|
||||||
run()
|
run()
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ class PieMenu(NodePath, PandaObject):
|
|||||||
deltaY = mouseY - self.originY
|
deltaY = mouseY - self.originY
|
||||||
|
|
||||||
# Update the line
|
# Update the line
|
||||||
self.lines.setVertex(1,(deltaX/self.sfx),0.0,(deltaY/self.sfz))
|
#self.lines.setVertex(1,(deltaX/self.sfx),0.0,(deltaY/self.sfz))
|
||||||
|
|
||||||
# How far from starting point has user moved the cursor?
|
# How far from starting point has user moved the cursor?
|
||||||
if ((abs(deltaX) < 0.1) and (abs(deltaY) < 0.1)):
|
if ((abs(deltaX) < 0.1) and (abs(deltaY) < 0.1)):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user