mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
make street more even in length and auto add streets
This commit is contained in:
parent
5f53420a10
commit
201213e3d5
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user