mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 17:35:34 -04:00
removed some unused code
This commit is contained in:
parent
9824a5411e
commit
82f9cc6130
@ -446,175 +446,6 @@ class ClientRepository(ConnectionRepository.ConnectionRepository):
|
||||
# send the message
|
||||
self.send(datagram)
|
||||
|
||||
def gridZoneCenter(self, x, y, zoneBase=0, resolution=500):
|
||||
"""
|
||||
x is a float in the range 0.0 to 1.0
|
||||
y is a float in the range 0.0 to 1.0
|
||||
resolution is the number of cells on each axsis.
|
||||
"""
|
||||
if x < 0.0 or x > 1.0 or y < 0.0 or y > 1.0:
|
||||
return None
|
||||
resolution=int(resolution)
|
||||
print "resolution", resolution,
|
||||
xCell=min(int(x*resolution), resolution-1)
|
||||
yCell=min(int(y*resolution), resolution-1)
|
||||
cell=yCell*resolution+xCell
|
||||
print "cell", cell,
|
||||
zone=zoneBase+cell
|
||||
print "zone", zone
|
||||
assert zone >= zoneBase and zone < zoneBase+resolution*resolution
|
||||
return zone
|
||||
|
||||
def gridZoneList(self, x, y, zoneBase=0, zoneList=[], resolution=500):
|
||||
"""
|
||||
x is a float in the range 0.0 to 1.0
|
||||
y is a float in the range 0.0 to 1.0
|
||||
resolution is the number of cells on each axsis.
|
||||
returns a list of zone ids.
|
||||
|
||||
Create a box of cell numbers, while clipping
|
||||
to the edges of the set of cells.
|
||||
"""
|
||||
if x < 0.0 or x > 1.0 or y < 0.0 or y > 1.0:
|
||||
return None
|
||||
resolution=int(resolution)
|
||||
print "resolution", resolution,
|
||||
xCell=min(int(x*resolution), resolution-1)
|
||||
yCell=min(int(y*resolution), resolution-1)
|
||||
cell=yCell*resolution+xCell
|
||||
print "cell", cell,
|
||||
zone=zoneBase+cell
|
||||
print "zone", zone
|
||||
|
||||
zone=zone-2*resolution
|
||||
endZone=zone+5*resolution
|
||||
yCell=yCell-2
|
||||
while zone < endZone:
|
||||
if yCell >= 0 and yCell < resolution:
|
||||
if xCell > 1:
|
||||
zoneList.append(zone-2)
|
||||
zoneList.append(zone-1)
|
||||
elif xCell > 0:
|
||||
zoneList.append(zone-1)
|
||||
r.append(zone)
|
||||
if xCell < resolution-2:
|
||||
zoneList.append(zone+1)
|
||||
zoneList.append(zone+2)
|
||||
elif xCell < resolution-1:
|
||||
zoneList.append(zone+1)
|
||||
yCell+=1
|
||||
zone+=resolution
|
||||
return zoneList
|
||||
|
||||
def gridZone(self, zoneId, pos):
|
||||
"""
|
||||
zoneId is an integer.
|
||||
pos is a Vec3 with x,y,z float values.
|
||||
|
||||
Figure out which zones in the multi-zone heirarchy
|
||||
the avatar is currently. Use sendSetZoneMsg() to
|
||||
send the info to the server.
|
||||
|
||||
So, one possibility is to use a 3x3 grid and have
|
||||
each cell be the movement distance in the load time
|
||||
plus the vision distance.
|
||||
|
||||
Another possibility is to use a 5x5 grid and have
|
||||
each cell be the greater of the movement distance
|
||||
or the vision distance.
|
||||
|
||||
Yet another possibility is to use a nxn grid inside
|
||||
of a mxm grid. The nxn grid is used to add cells
|
||||
to the visible set, while the mxm grid is used to
|
||||
retain old cells a little longer. This avoids
|
||||
jitter (i.e. rapid generation and deletion of zones
|
||||
as the avatar runs down the line separating two cells).
|
||||
Also, the mxm grid is not neccessarily
|
||||
full (and is likely not to be full). So, cell in
|
||||
the nxn grid are added and cells outside of the
|
||||
mxm grid are removed.
|
||||
|
||||
When choosing a method, the generation (inlcluding
|
||||
loading and setup) time should be compared to the
|
||||
cost of having extra distributed objects.
|
||||
|
||||
The third option optimizes for expensive generation,
|
||||
while the second option optimizes for epensive
|
||||
maintenance.
|
||||
|
||||
o o o o o o o
|
||||
o o o o o o o
|
||||
o o[k k o]o o
|
||||
o o|k a a|o o
|
||||
o o[o a a]o o
|
||||
o o o o o o o
|
||||
o o o o o o o
|
||||
"""
|
||||
# The teirs are offset from each other to spread the
|
||||
# generates.
|
||||
width=2000.0
|
||||
height=2000.0
|
||||
teirBase=1000
|
||||
# The teirBase is a teir unto itself, all avatars in
|
||||
# in the given teir system are also in the main teir:
|
||||
r=[teirBase]
|
||||
teirBase+=1
|
||||
|
||||
x=pos.getX()/width
|
||||
y=pos.getY()/height
|
||||
getGridZones(x, y, teirBase, r, 500)
|
||||
|
||||
return r
|
||||
|
||||
#*#
|
||||
# The teirs are offset from each other to spread the
|
||||
# generates.
|
||||
width=2000.0
|
||||
height=2000.0
|
||||
teirs=[20, 100, 500]
|
||||
teirOffsets=[0.33, 0.5, 0.0]
|
||||
teirBase=1000
|
||||
# The teirBase is a teir unto itself, all avatars in
|
||||
# in the given teir system are also in the main teir:
|
||||
r=[teirBase]
|
||||
teirBase+=1
|
||||
|
||||
x=pos.getX()
|
||||
y=pos.getY()
|
||||
for i, offset in zip(teirs, teirOffsets):
|
||||
print "teirBase", teirBase,
|
||||
xCell=min(int((x-width/i*offset)/i), i-1)
|
||||
yCell=min(int((y-height/i*offset)/i), i-1)
|
||||
print "xCell", xCell, "yCell", yCell,
|
||||
cell=yCell*i+xCell
|
||||
print "cell", cell,
|
||||
zone=teirBase+cell
|
||||
print "zone", zone
|
||||
#for zone in range(teirBase+cell, teirBase+cell+5*i, i):
|
||||
zone=zone-2*i
|
||||
endZone=teirBase+cell+5*i
|
||||
yCell=yCell-2
|
||||
while zone < endZone:
|
||||
if yCell >= 0 and yCell < i:
|
||||
if xCell > 1:
|
||||
r.append(zone-2)
|
||||
r.append(zone-1)
|
||||
elif xCell > 0:
|
||||
r.append(zone-1)
|
||||
r.append(zone)
|
||||
if xCell < i-2:
|
||||
r.append(zone+1)
|
||||
r.append(zone+2)
|
||||
elif xCell < i-1:
|
||||
r.append(zone+1)
|
||||
yCell+=1
|
||||
zone+=i
|
||||
print ""
|
||||
teirBase+=i*i
|
||||
print "teirBase", teirBase
|
||||
|
||||
return r
|
||||
|
||||
def handleDatagram(self, di):
|
||||
if self.notify.getDebug():
|
||||
print "ClientRepository received datagram:"
|
||||
|
Loading…
x
Reference in New Issue
Block a user