diff --git a/leveleditor.py b/leveleditor.py index 95f3887..8d5530a 100644 --- a/leveleditor.py +++ b/leveleditor.py @@ -23,8 +23,6 @@ imported from editortools/ """ - - import gc from datetime import datetime, timedelta from OpenGL.GL import * @@ -43,7 +41,6 @@ from glutils import gl, Texture, FramebufferTexture import glutils # Label = GLLabel - import config from pymclevel import * from glbackground import * @@ -62,7 +59,6 @@ from editortools.chunk import GeneratorPanel from os.path import isdir, dirname import renderer - Settings = config.Settings("Settings") Settings.flyMode = Settings("Fly Mode", False) Settings.enableMouseLag = Settings("Enable Mouse Lag", False) @@ -116,8 +112,6 @@ ControlSettings.invertMousePitch = ControlSettings("invert mouse pitch", False) ControlSettings.autobrake = ControlSettings("autobrake", True) ControlSettings.swapAxes = ControlSettings("swap axes looking down", False) - - arch = platform.architecture()[0] def remapMouseButton(button): @@ -144,8 +138,6 @@ class ControlPanel(Panel): keysColumn = [Label("")] buttonsColumn = [header] - - '''def addRow(key, text, action): b = Button(text, action=action, width = 300) l = Label(key,width=100,margin=b.margin) @@ -188,7 +180,6 @@ class ControlPanel(Panel): sideColumn.left = self.centerx sideColumn.anchor = "wh" - self.add(sideColumn) self.shrink_wrap() @@ -230,7 +221,6 @@ class CameraViewport(GLViewport): near = 0.5 far = 4000.0 - self.near = near self.far = far @@ -238,7 +228,6 @@ class CameraViewport(GLViewport): self.lastTick = datetime.now() # self.nearheight = near * tang; - self.cameraPosition = (16., 45., 16.) self.velocity = [0., 0., 0.] @@ -287,7 +276,6 @@ class CameraViewport(GLViewport): def brakeOff(self): self.brake = False - tickInterval = 1000 / 30 oldPosition = (0, 0, 0) @@ -306,7 +294,6 @@ class CameraViewport(GLViewport): drag = ControlSettings.cameraDrag.get() accel_factor = drag + ControlSettings.cameraAccel.get() - # if we're in space, move faster drag_epsilon = 10.0 * timeDelta @@ -324,7 +311,6 @@ class CameraViewport(GLViewport): self.yaw += pi[0] * mouseSpeed self.pitch += pi[1] * mouseSpeed - alignMovementToAxes = key.get_mods() & KMOD_SHIFT if self.flyMode: @@ -351,7 +337,6 @@ class CameraViewport(GLViewport): dy = int(dy * 1.6) dz = int(dz * 1.4) - directedInputs = normalize(( i[0] * cosyaw + i[2] * dx, i[1] + i[2] * dy, @@ -391,7 +376,6 @@ class CameraViewport(GLViewport): self.oldPosition = self.cameraPosition self.updateFloorQuad() - self.cameraPosition = map(lambda p, d:p + d * timeDelta, self.cameraPosition, velocity) if self.cameraPosition[1] > 3800.: self.cameraPosition[1] = 3800. @@ -414,10 +398,8 @@ class CameraViewport(GLViewport): look[0], look[1], look[2], up[0], up[1], up[2]) - from math import isnan - def _cameraVector(self): return self._anglesToVector(self.yaw, self.pitch) @@ -499,7 +481,6 @@ class CameraViewport(GLViewport): mouse3dPoint = self._blockUnderCursor(True) focusPair = self.findBlockFaceUnderCursor(mouse3dPoint) - # otherwise, find the block at a controllable distance in front of the camera if focusPair is None: focusPair = (self.getCameraPoint(), (0, 0, 0)) @@ -581,7 +562,6 @@ class CameraViewport(GLViewport): return intProjectedPoint, d - @property def ratio(self): return self.width / float(self.height) @@ -629,7 +609,6 @@ class CameraViewport(GLViewport): panel = Dialog() - def addMob(id): if id not in mobs: mobs.insert(0, id) @@ -662,7 +641,6 @@ class CameraViewport(GLViewport): def selectedMob(): return mobs[mobTable.selectedIndex] - id = tileEntity["EntityId"].value addMob(id) @@ -677,8 +655,6 @@ class CameraViewport(GLViewport): tileEntity["EntityId"] = TAG_String(selectedMob()) - - @alertException def editSign(self, point): @@ -698,10 +674,8 @@ class CameraViewport(GLViewport): self.editor.level.addTileEntity(tileEntity) - panel = Dialog() - lineFields = [TextField(width=150) for l in linekeys] for l, f in zip(linekeys, lineFields): f.value = tileEntity[l].value @@ -731,8 +705,6 @@ class CameraViewport(GLViewport): currentField.text += c # xxx view hierarchy currentField.insertion_point = len(currentField.text) - - colorMenu = MenuButton("Color Code...", colors, menu_picked = menu_picked) column = [Label("Edit Sign")] + lineFields + [colorMenu, Button("OK", action=panel.dismiss)] @@ -786,7 +758,6 @@ class CameraViewport(GLViewport): return slotNames.get(slot, slot) return slot - chestWidget = ChestWidget() chestItemTable = TableView(columns=[ TableColumn("Slot", 80, "l", fmt=slotFormat), @@ -823,8 +794,6 @@ class CameraViewport(GLViewport): IntInputRow("Count: ", ref=AttrRef(chestWidget, 'Count'), min= -128, max=127), ) - - def deleteFromWorld(): i = chestWidget.selectedItemIndex item = tileEntityTag['Items'][i] @@ -875,7 +844,6 @@ class CameraViewport(GLViewport): chunk.chunkChanged() self.editor.invalidateChunks([chunk.chunkPosition]) - for te in chunk.TileEntities: if "Items" in te: l = len(te['Items']) @@ -897,7 +865,6 @@ class CameraViewport(GLViewport): showProgress(progressInfo, deleteItemsIter(), cancel=True) - self.editor.addUnsavedEdit() chestWidget.selectedItemIndex = min(chestWidget.selectedItemIndex, len(tileEntityTag['Items']) - 1) @@ -953,9 +920,6 @@ class CameraViewport(GLViewport): self.editor.addOperation(op) self.editor.addUnsavedEdit() - - - rightMouseDragStart = None def rightClickDown(self, evt): @@ -974,7 +938,6 @@ class CameraViewport(GLViewport): if td.seconds > 0 or td.microseconds > 280000: self.mouseLookOff() - def leftClickDown(self, evt): self.editor.toolMouseDown(evt, self.blockFaceUnderCursor) @@ -1007,14 +970,9 @@ class CameraViewport(GLViewport): except ChunkNotPresent: pass - - def leftClickUp(self, evt): self.editor.toolMouseUp(evt, self.blockFaceUnderCursor) - - - # --- Event handlers --- def mouse_down(self, evt): @@ -1065,8 +1023,6 @@ class CameraViewport(GLViewport): self.editor.renderer.loadNearbyChunks() self.lastRendererUpdate = datetime.now() - - # adjustLimit = 2; # self.oldMousePosition = (x, y) @@ -1100,7 +1056,6 @@ class CameraViewport(GLViewport): self.floorQuad = floorQuad self.floorQuadList.invalidate() - def drawFloorQuad(self): self.floorQuadList.call(self._drawFloorQuad) @@ -1135,7 +1090,6 @@ class CameraViewport(GLViewport): self.ceilingList.call(self._drawCeiling) glTranslate(-x, -y, -z) - _floorQuadList = None @property def floorQuadList(self): @@ -1167,10 +1121,6 @@ class CameraViewport(GLViewport): with gl.glEnable(GL_BLEND, GL_DEPTH_TEST, GL_POLYGON_OFFSET_FILL): glDrawArrays(GL_QUADS, 0, 4) - - - - @property def drawSky(self): return self._drawSky @@ -1224,7 +1174,6 @@ class CameraViewport(GLViewport): enableMouseLag = Settings.enableMouseLag.configProperty() - @property def drawFog(self): return self._drawFog and not self.editor.renderer.inSpace() @@ -1262,7 +1211,6 @@ class CameraViewport(GLViewport): distance = 8.0 GLU.gluPerspective(max(self.fov, 25.0), self.ratio, self.near * distance, self.far * distance) - def setup_modelview(self): self.setModelview() @@ -1283,7 +1231,6 @@ class CameraViewport(GLViewport): if self.drawFog: self.enableFog() - self.drawFloorQuad() self.editor.renderer.viewingFrustum = self.viewingFrustum @@ -1329,13 +1276,10 @@ class ChunkViewport(CameraViewport): def __init__(self, *a, **kw): CameraViewport.__init__(self, *a, **kw) - - def setup_projection(self): w, h = (0.5 * s / self.defaultScale for s in self.size) - minx, maxx = - w, w miny, maxy = - h, h minz, maxz = -4000, 4000 @@ -1376,9 +1320,6 @@ class ChunkViewport(CameraViewport): else: super(ChunkViewport, self).mouse_down(evt) - - - def rightClickDown(self, evt): pass @@ -1423,7 +1364,6 @@ class LevelEditor(GLViewport): rect = mcedit.rect GLViewport.__init__(self, rect) - self.frames = 0 self.frameStartTime = datetime.now() self.oldFrameStartTime = self.frameStartTime @@ -1452,7 +1392,6 @@ class LevelEditor(GLViewport): print "Generating selection grid texture..." self.sixteenBlockTex = self.genSixteenBlockTexture() - # print "FontRenderer()" # self.Font = Font("Verdana, Arial", 18) @@ -1495,7 +1434,6 @@ class LevelEditor(GLViewport): return sum(size(c) for c in chunks.itervalues()) - mbldReadout = SmallValueDisplay(width=60, get_value=lambda:"MBd: %0.1f" % (dataSize() / 1000000.), tooltipText = "Memory used for saved game data.") @@ -1539,7 +1477,6 @@ class LevelEditor(GLViewport): row = (viewDistanceDown, Label("View Distance:"), viewDistanceReadout, viewDistanceUp, readoutGrid, viewButton, self.viewportButton) - # row += (Button("CR Info", action=self.showChunkRendererInfo), ) row = Row(row) self.add(row) @@ -1621,7 +1558,6 @@ class LevelEditor(GLViewport): else: Settings.viewMode = "Chunk" - maxCopies = 10 def addCopiedSchematic(self, sch): @@ -1669,8 +1605,6 @@ class LevelEditor(GLViewport): del self.thumbCache[k] editor = self - - def createOneCopyPanel(sch): from editortools.toolbasics import ThumbView p = GLBackground() @@ -1756,8 +1690,6 @@ class LevelEditor(GLViewport): c += count counts.append( (b, c) ) - - blockRows = [("({0}:{1})".format(block.ID, block.blockData), block.name, count) for block, count in counts] # blockRows.sort(key=lambda x:alphanum_key(x[2]), reverse=True) @@ -1800,7 +1732,6 @@ class LevelEditor(GLViewport): rows[:] = blockRows extendEntities() - table.num_rows = lambda : len(rows) table.row_data = lambda i: rows[i] table.row_is_selected = lambda x: False @@ -1856,13 +1787,11 @@ class LevelEditor(GLViewport): editortools.ChunkTool(self), ]) - self.toolbar.anchor = 'bwh' self.add(self.toolbar) self.toolbar.bottom = self.viewportContainer.bottom # bottoms are touching self.toolbar.centerx = self.centerx - is_gl_container = True maxDebug = 1 @@ -1883,7 +1812,6 @@ class LevelEditor(GLViewport): maxLevel = 1 mode = GL.GL_LINEAR - def makeSixteenBlockTex(): darkColor = (0x30, 0x30, 0x30, 0xff) lightColor = (0x80, 0x80, 0x80, 0xff) @@ -1919,7 +1847,6 @@ class LevelEditor(GLViewport): GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, teximage[::step, ::step].ravel()) - return Texture(makeSixteenBlockTex, mode) def showProgress(self, *a, **kw): @@ -1959,11 +1886,6 @@ class LevelEditor(GLViewport): glDisable(GL_BLEND) glDisable(GL_DEPTH_TEST) - - - - - def loadFile(self, filename): if self.level and self.unsavedEdits > 0: resp = ask("Save unsaved edits before loading?", ["Cancel", "Don't Save", "Save"], default=2, cancel=0) @@ -2013,7 +1935,6 @@ class LevelEditor(GLViewport): self.renderer.position = self.currentViewport.cameraPosition self.renderer.loadNearbyChunks() - def loadLevel(self, level): self.level = level filename = level.filename @@ -2022,7 +1943,6 @@ class LevelEditor(GLViewport): self.toolbar.removeToolPanels() self.selectedChunks = set() - self.mainViewport.stopMoving() self.renderer.level = level @@ -2074,8 +1994,6 @@ class LevelEditor(GLViewport): self.toolbar.tools[8].createChunks() self.mainViewport.cameraPosition = (x, self.level.Height, z) - - def removeNetherPanel(self): if self.netherPanel: self.remove(self.netherPanel) @@ -2097,7 +2015,6 @@ class LevelEditor(GLViewport): self.mainViewport.cameraPosition = [x / 8, y, z / 8] self.loadLevel(self.level.getDimension(-1)) - def gotoDimension(self, dimNo): if dimNo == self.level.dimNo: return @@ -2124,7 +2041,6 @@ class LevelEditor(GLViewport): title = title.encode('ascii', 'replace') display.set_caption(title) - @alertException def reload(self): filename = self.level.filename @@ -2177,20 +2093,17 @@ class LevelEditor(GLViewport): self.add(saveInfoBackground) self.saveInfoBackground = saveInfoBackground - def clearUnsavedEdits(self): if self.unsavedEdits: self.unsavedEdits = 0 self.remove(self.saveInfoBackground) - @property def saveInfoLabelText(self): if self.unsavedEdits == 0: return "" return "{0} unsaved edits. CTRL-S to save. ".format(self.unsavedEdits) - @property def viewDistanceLabelText(self): return "View Distance ({0})".format(self.renderer.viewDistance) @@ -2214,8 +2127,6 @@ class LevelEditor(GLViewport): if chunkWorker in self.workers: self.workers.remove(chunkWorker) - - def getFrameDuration(self): frameDuration = timedelta(0, 1, 0) / self.renderer.targetFPS return frameDuration @@ -2297,7 +2208,6 @@ class LevelEditor(GLViewport): except Exception, e: return repr(e) - def toolMouseDown(self, evt, f): # xxx f is a tuple if self.level: if None != f: @@ -2352,7 +2262,6 @@ class LevelEditor(GLViewport): def mouseLookOn(self): self.mainViewport.mouseLookOn() - @property def blockFaceUnderCursor(self): return self.currentViewport.blockFaceUnderCursor @@ -2406,7 +2315,6 @@ class LevelEditor(GLViewport): rightVector = normvector(cross(referenceVector, viewVector)) * randsizes[:, newaxis] # vector perpendicular to viewing line upVector = normvector(cross(rightVector, viewVector)) * randsizes[:, newaxis] # vector perpendicular previous vector and viewing line - p = randPoints p1 = p + (- upVector - rightVector) p2 = p + ( upVector - rightVector) @@ -2470,7 +2378,6 @@ class LevelEditor(GLViewport): reach *= 0.95 return reach - def key_up(self, evt): d = self.cameraInputs keyname = getattr(evt, 'keyname', None) or key.name(evt.key) @@ -2478,11 +2385,9 @@ class LevelEditor(GLViewport): if keyname == config.config.get('Keys', 'Brake'): self.mainViewport.brakeOff() - # if keyname == 'left ctrl' or keyname == 'right ctrl': # self.hideControls() - if keyname == config.config.get('Keys', 'Left'): d[0] = 0. if keyname == config.config.get('Keys', 'Right'): @@ -2508,7 +2413,6 @@ class LevelEditor(GLViewport): # if keyname in ("left alt", "right alt"): - def key_down(self, evt): keyname = evt.dict.get('keyname', None) or key.name(evt.key) if keyname == 'enter': @@ -2671,7 +2575,6 @@ class LevelEditor(GLViewport): if keyname == config.config.get('Keys', 'Pan Down'): cp[1] = 1. - if keyname == config.config.get('Keys', 'Confirm Construction'): self.confirmConstruction() @@ -2749,14 +2652,12 @@ class LevelEditor(GLViewport): self.renderer.level = None self.mcedit.removeEditor() - def repairRegions(self): for rf in self.level.regionFiles.itervalues(): rf.repair() alert("Repairs complete. See the console window for details.") - @alertException def showWorldInfo(self): ticksPerDay = 24000 @@ -2966,7 +2867,6 @@ class LevelEditor(GLViewport): except: return datetime.utcfromtimestamp(0.0) - def dateFormat(lp): try: return lp.strftime("%x %X").decode('utf-8') @@ -2996,9 +2896,6 @@ class LevelEditor(GLViewport): if d.present() == "Load": loadWorld() - - - def askOpenFile(self): self.mouseLookOff() try: @@ -3021,7 +2918,6 @@ class LevelEditor(GLViewport): label = Label("Creating a new world.") generatorPanel = GeneratorPanel() - xinput = IntInputRow("X: ", ref=AttrRef(newWorldPanel, "x")) yinput = IntInputRow("Y: ", ref=AttrRef(newWorldPanel, "y")) zinput = IntInputRow("Z: ", ref=AttrRef(newWorldPanel, "z")) @@ -3047,7 +2943,6 @@ class LevelEditor(GLViewport): gametypeButton.gametype = 1 - gametypeButton.gametype gametypeButton.text = gametype(gametypeButton.gametype) - gametypeButton = Button(gametype(0), action=action) gametypeButton.gametype = 0 gametypeRow = Row((Label("Game Type:" ), gametypeButton)) @@ -3102,8 +2997,6 @@ class LevelEditor(GLViewport): return newlevel - - def confirmConstruction(self): self.currentTool.confirm() @@ -3192,7 +3085,6 @@ class LevelEditor(GLViewport): if self.debug: self.debugString += string - averageFPS = 0.0 averageCPS = 0.0 shouldLoadAndRender = True @@ -3219,8 +3111,6 @@ class LevelEditor(GLViewport): self.currentTool.previewRenderer.loadVisibleChunks() self.addWorker(self.currentTool.previewRenderer) - - self.frames += 1 frameDuration = self.getFrameDuration() while frameDuration > (datetime.now() - self.frameStartTime): # if it's less than 0ms until the next frame, go draw. otherwise, go work. @@ -3248,7 +3138,6 @@ class LevelEditor(GLViewport): cps = 1000000. / ((chunkTotal.microseconds + 1000000 * chunkTotal.seconds) / float(len(r.chunkSamples)) + 0.00001) self.averageCPS = cps - self.oldFrameStartTime = self.frameStartTime self.frameStartTime = frameStartTime @@ -3271,7 +3160,6 @@ class LevelEditor(GLViewport): if self.renderer: self.renderer.addDebugInfo(self.addDebugString) - # if self.onscreen: def createWorkInfoPanel(self): @@ -3313,13 +3201,9 @@ class LevelEditor(GLViewport): if hasattr(w, "needsRedraw") and w.needsRedraw: self.invalidate() - else: time.sleep(0.001) - - - def updateInspectionString(self, blockPosition): self.inspectionString += str(blockPosition) + ": " x,y,z = blockPosition @@ -3400,7 +3284,6 @@ class LevelEditor(GLViewport): def drawString(self, x, y, color, string): return - def freezeStatus(self, string): return @@ -3432,7 +3315,6 @@ class LevelEditor(GLViewport): self.currentTool.selectionChanged() - def addOperation(self, op): self.undoStack.append(op) @@ -3493,7 +3375,6 @@ class LevelEditor(GLViewport): infoPanel.click_outside_response = -1 # infoPanel.present() - ## def testGLSL(self): ## print "Hello" ## level = MCLevel.fromFile("mrchunk.schematic") @@ -3625,7 +3506,6 @@ class EditorToolbar(GLOrtho): self.bottom = self.parent.viewportContainer.bottom # xxx resize children when get - def getTooltipText(self): toolNumber = self.toolNumberUnderMouse(mouse.get_pos()) return self.tools[toolNumber].tooltipText @@ -3675,7 +3555,6 @@ class EditorToolbar(GLOrtho): self.parent.currentTool = t self.parent.currentTool.toolSelected() - def removeToolPanels(self): for tool in self.tools: tool.hidePanel() @@ -3710,14 +3589,12 @@ class EditorToolbar(GLOrtho): if hasattr(tool, 'markerList'): tool.markerList.invalidate() - def drawToolbar(self): glEnableClientState(GL_TEXTURE_COORD_ARRAY) glColor(1., 1., 1., 1.) w, h = self.toolbarTextureSize - self.guiTexture.bind() glVertexPointer(3, GL_FLOAT, 0, numpy.array(( @@ -3771,7 +3648,6 @@ class EditorToolbar(GLOrtho): def gl_draw(self): - glEnable(GL_TEXTURE_2D) glEnable(GL_BLEND) self.toolbarDisplayList.call(self.drawToolbar) @@ -3783,7 +3659,6 @@ class EditorToolbar(GLOrtho): # glLoadIdentity() # self.gfont.flatPrint("ADLADLADLADLADL") - try: currentToolNumber = self.tools.index(self.parent.currentTool) except ValueError: