make street more even in length and auto add streets

This commit is contained in:
Mark Mine 2005-07-20 23:27:33 +00:00
parent 5f53420a10
commit 201213e3d5

View File

@ -2376,7 +2376,6 @@ 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():
@ -3373,25 +3372,56 @@ class LevelEditor(NodePath, PandaObject):
np.setY(maxPropOffset) np.setY(maxPropOffset)
self.updateSelectedPose([np]) self.updateSelectedPose([np])
def getBuildingLength(self, dnaNode):
bldgLength = 0
if DNAClassEqual(dnaNode, DNA_FLAT_BUILDING):
bldgLength = dnaNode.getWidth()
elif DNAClassEqual(dnaNode, DNA_LANDMARK_BUILDING):
objectCode = dnaNode.getCode()
if objectCode[-2:-1] == 'A':
bldgLength = 25.0
elif objectCode[-2:-1] == 'B':
bldgLength = 15.0
elif objectCode[-2:-1] == 'C':
bldgLength = 20.0
return bldgLength
def calcLongStreetLength(self, bldgs):
streetLength = 0
for bldg in bldgs:
dnaNode = self.findDNANode(bldg)
streetLength += self.getBuildingLength(dnaNode)
return streetLength
def addStreetUnits(self, streetLength):
direct.grid.setPosHpr(0,-40,0,0,0,0)
currLength = 0
while (currLength < streetLength):
self.addStreet('street_80x40')
currLength += 80
def makeLongStreet(self): def makeLongStreet(self):
bldgGroup = self.consolidateStreetBuildings() bldgGroup = self.consolidateStreetBuildings()
bldgs = bldgGroup.getChildrenAsList() bldgs = bldgGroup.getChildrenAsList()
numBldgs = len(bldgs) numBldgs = len(bldgs)
streetLength = self.calcLongStreetLength(bldgs)/2.0
ref = None ref = None
direct.grid.fXyzSnap = 0 direct.grid.fXyzSnap = 0
currLength = 0
for i in range(numBldgs): for i in range(numBldgs):
bldg = bldgs[i] bldg = bldgs[i]
if ref == None: if ref == None:
bldg.iPosHpr() direct.grid.iPosHpr(bldgGroup)
elif i == (numBldgs/2):
bldg.setPosHpr(direct.grid, 0, -40, 0, 180, 0, 0)
else: else:
ref.select() ref.select()
self.autoPositionGrid(fLerp = 0) self.autoPositionGrid(fLerp = 0)
bldg.iPosHpr(direct.grid) if direct.grid.getX() >= streetLength:
ref = bldg direct.grid.setPosHpr(direct.grid, 0, -40, 0, 180, 0, 0)
bldg.iPosHpr(direct.grid)
self.updateSelectedPose([bldg]) self.updateSelectedPose([bldg])
self.adjustPropChildren(bldg) self.adjustPropChildren(bldg)
ref = bldg
self.addStreetUnits(streetLength)
class LevelStyleManager: class LevelStyleManager: