pull from pyflakes branch: unravel/mangle imports
This commit is contained in:
parent
a8ad2a5186
commit
fead577efd
37
frustum.py
37
frustum.py
@ -9,9 +9,10 @@ OpenGLContext.scenegraph.boundingvolume module.
|
|||||||
Based on code from:
|
Based on code from:
|
||||||
http://www.markmorley.com/opengl/frustumculling.html
|
http://www.markmorley.com/opengl/frustumculling.html
|
||||||
"""
|
"""
|
||||||
from OpenGL.GL import *
|
|
||||||
from numpy import *
|
import logging
|
||||||
import logging
|
import numpy
|
||||||
|
import OpenGL.GL
|
||||||
context_log = logging.getLogger()
|
context_log = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
@ -30,9 +31,9 @@ def viewingMatrix(projection=None, model=None):
|
|||||||
matrix, the function will raise a RuntimeError
|
matrix, the function will raise a RuntimeError
|
||||||
"""
|
"""
|
||||||
if projection is None:
|
if projection is None:
|
||||||
projection = glGetDoublev(GL_PROJECTION_MATRIX)
|
projection = OpenGL.GL.glGetDoublev(OpenGL.GL.GL_PROJECTION_MATRIX)
|
||||||
if model is None:
|
if model is None:
|
||||||
model = glGetDoublev(GL_MODELVIEW_MATRIX)
|
model = OpenGL.GL.glGetDoublev(OpenGL.GL.GL_MODELVIEW_MATRIX)
|
||||||
# hmm, this will likely fail on 64-bit platforms :(
|
# hmm, this will likely fail on 64-bit platforms :(
|
||||||
if projection is None or model is None:
|
if projection is None or model is None:
|
||||||
context_log.warn(
|
context_log.warn(
|
||||||
@ -44,20 +45,20 @@ def viewingMatrix(projection=None, model=None):
|
|||||||
if model:
|
if model:
|
||||||
return model
|
return model
|
||||||
else:
|
else:
|
||||||
return identity(4, 'd')
|
return numpy.identity(4, 'd')
|
||||||
if allclose(projection, -1.79769313e+308):
|
if numpy.allclose(projection, -1.79769313e+308):
|
||||||
context_log.warn(
|
context_log.warn(
|
||||||
"""Attempt to retrieve projection matrix when uninitialised %s, model=%s""",
|
"""Attempt to retrieve projection matrix when uninitialised %s, model=%s""",
|
||||||
projection, model,
|
projection, model,
|
||||||
)
|
)
|
||||||
return model
|
return model
|
||||||
if allclose(model, -1.79769313e+308):
|
if numpy.allclose(model, -1.79769313e+308):
|
||||||
context_log.warn(
|
context_log.warn(
|
||||||
"""Attempt to retrieve model-view matrix when uninitialised %s, projection=%s""",
|
"""Attempt to retrieve model-view matrix when uninitialised %s, projection=%s""",
|
||||||
model, projection,
|
model, projection,
|
||||||
)
|
)
|
||||||
return projection
|
return projection
|
||||||
return dot(model, projection)
|
return numpy.dot(model, projection)
|
||||||
|
|
||||||
|
|
||||||
class Frustum (object):
|
class Frustum (object):
|
||||||
@ -84,15 +85,15 @@ class Frustum (object):
|
|||||||
frustcullaccel C extension module)
|
frustcullaccel C extension module)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
distances = sum(self.planes[newaxis, :, :] * points[:, newaxis, :], -1)
|
distances = sum(self.planes[OpenGL.GL.newaxis, :, :] * points[:, OpenGL.GL.newaxis, :], -1)
|
||||||
return ~any(distances < -radius, -1)
|
return ~any(distances < -radius, -1)
|
||||||
|
|
||||||
def visible1(self, point, radius):
|
def visible1(self, point, radius):
|
||||||
#return self.visible(array(point[newaxis, :]), radius)
|
#return self.visible(array(point[OpenGL.GL.newaxis, :]), radius)
|
||||||
|
|
||||||
distance = sum(self.planes * point, -1)
|
distance = sum(self.planes * point, -1)
|
||||||
vis = ~any(distance < -radius)
|
vis = ~any(distance < -radius)
|
||||||
#assert vis == self.visible(array(point)[newaxis, :], radius)
|
#assert vis == self.visible(array(point)[OpenGL.GL.newaxis, :], radius)
|
||||||
|
|
||||||
return vis
|
return vis
|
||||||
|
|
||||||
@ -113,8 +114,8 @@ class Frustum (object):
|
|||||||
"""
|
"""
|
||||||
if matrix is None:
|
if matrix is None:
|
||||||
matrix = viewingMatrix()
|
matrix = viewingMatrix()
|
||||||
clip = ravel(matrix)
|
clip = numpy.ravel(matrix)
|
||||||
frustum = zeros((6, 4), 'd')
|
frustum = numpy.zeros((6, 4), 'd')
|
||||||
# right
|
# right
|
||||||
frustum[0][0] = clip[3] - clip[0]
|
frustum[0][0] = clip[3] - clip[0]
|
||||||
frustum[0][1] = clip[7] - clip[4]
|
frustum[0][1] = clip[7] - clip[4]
|
||||||
@ -155,10 +156,10 @@ class Frustum (object):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def normalize(cls, frustum):
|
def normalize(cls, frustum):
|
||||||
"""Normalize clipping plane equations"""
|
"""Normalize clipping plane equations"""
|
||||||
magnitude = sqrt(frustum[:, 0] * frustum[:, 0] + frustum[:, 1] * frustum[:, 1] + frustum[:, 2] * frustum[:, 2])
|
magnitude = numpy.sqrt(frustum[:, 0] * frustum[:, 0] + frustum[:, 1] * frustum[:, 1] + frustum[:, 2] * frustum[:, 2])
|
||||||
# eliminate any planes which have 0-length vectors,
|
# eliminate any planes which have 0-length vectors,
|
||||||
# those planes can't be used for excluding anything anyway...
|
# those planes can't be used for excluding anything anyway...
|
||||||
frustum = compress(magnitude, frustum, 0)
|
frustum = numpy.compress(magnitude, frustum, 0)
|
||||||
magnitude = compress(magnitude, magnitude, 0)
|
magnitude = numpy.compress(magnitude, magnitude, 0)
|
||||||
magnitude = reshape(magnitude.astype('d'), (len(frustum), 1))
|
magnitude = numpy.reshape(magnitude.astype('d'), (len(frustum), 1))
|
||||||
return frustum / magnitude
|
return frustum / magnitude
|
||||||
|
655
leveleditor.py
655
leveleditor.py
File diff suppressed because it is too large
Load Diff
224
mcedit.py
224
mcedit.py
@ -5,55 +5,51 @@ mcedit.py
|
|||||||
|
|
||||||
Startup, main menu, keyboard configuration, automatic updating.
|
Startup, main menu, keyboard configuration, automatic updating.
|
||||||
"""
|
"""
|
||||||
import os
|
|
||||||
import os.path
|
|
||||||
import sys
|
|
||||||
import config
|
|
||||||
import shutil
|
|
||||||
import functools
|
|
||||||
import traceback
|
|
||||||
import logging
|
|
||||||
|
|
||||||
import pygame
|
|
||||||
from pygame.constants import *
|
|
||||||
from pygame import key, display, rect
|
|
||||||
|
|
||||||
|
import albow
|
||||||
|
from albow.dialogs import Dialog
|
||||||
from albow.openglwidgets import GLViewport
|
from albow.openglwidgets import GLViewport
|
||||||
from albow.root import RootWidget
|
from albow.root import RootWidget
|
||||||
from albow.dialogs import Dialog
|
import config
|
||||||
from albow import *
|
import directories
|
||||||
|
import functools
|
||||||
from glbackground import Panel
|
from glbackground import Panel
|
||||||
|
import glutils
|
||||||
from OpenGL import GL
|
|
||||||
from numpy import *
|
|
||||||
|
|
||||||
from pymclevel.mclevel import MCInfdevOldLevel, saveFileDir
|
|
||||||
from pymclevel.materials import *
|
|
||||||
MCInfdevOldLevel.loadedChunkLimit = 0
|
|
||||||
|
|
||||||
from release import release
|
|
||||||
|
|
||||||
import leveleditor
|
import leveleditor
|
||||||
|
from leveleditor import ControlSettings, Settings
|
||||||
|
import logging
|
||||||
|
import mceutils
|
||||||
import mcplatform
|
import mcplatform
|
||||||
from mceutils import *
|
|
||||||
from mcplatform import platform_open
|
from mcplatform import platform_open
|
||||||
from leveleditor import Settings, ControlSettings
|
import numpy
|
||||||
|
from OpenGL import GL
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
import pygame
|
||||||
|
from pygame import display, key, rect
|
||||||
|
import pymclevel
|
||||||
|
import release
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
import traceback
|
||||||
|
|
||||||
|
pymclevel.MCInfdevOldLevel.loadedChunkLimit = 0
|
||||||
|
|
||||||
ESCAPE = '\033'
|
ESCAPE = '\033'
|
||||||
|
|
||||||
|
|
||||||
class FileOpener(Widget):
|
class FileOpener(albow.Widget):
|
||||||
is_gl_container = True
|
is_gl_container = True
|
||||||
|
|
||||||
def __init__(self, mcedit, *args, **kwargs):
|
def __init__(self, mcedit, *args, **kwargs):
|
||||||
kwargs['rect'] = mcedit.rect
|
kwargs['rect'] = mcedit.rect
|
||||||
Widget.__init__(self, *args, **kwargs)
|
albow.Widget.__init__(self, *args, **kwargs)
|
||||||
self.anchor = 'tlbr'
|
self.anchor = 'tlbr'
|
||||||
self.mcedit = mcedit
|
self.mcedit = mcedit
|
||||||
|
|
||||||
helpColumn = []
|
helpColumn = []
|
||||||
|
|
||||||
label = Label("{0} {1} {2} {3} {4} {5}".format(
|
label = albow.Label("{0} {1} {2} {3} {4} {5}".format(
|
||||||
config.config.get('Keys', 'Forward'),
|
config.config.get('Keys', 'Forward'),
|
||||||
config.config.get('Keys', 'Left'),
|
config.config.get('Keys', 'Left'),
|
||||||
config.config.get('Keys', 'Back'),
|
config.config.get('Keys', 'Back'),
|
||||||
@ -66,7 +62,7 @@ class FileOpener(Widget):
|
|||||||
helpColumn.append(label)
|
helpColumn.append(label)
|
||||||
|
|
||||||
def addHelp(text):
|
def addHelp(text):
|
||||||
label = Label(text)
|
label = albow.Label(text)
|
||||||
label.anchor = 'whrt'
|
label.anchor = 'whrt'
|
||||||
label.align = "r"
|
label.align = "r"
|
||||||
helpColumn.append(label)
|
helpColumn.append(label)
|
||||||
@ -77,21 +73,21 @@ class FileOpener(Widget):
|
|||||||
addHelp("Hold SHIFT to move along a major axis")
|
addHelp("Hold SHIFT to move along a major axis")
|
||||||
addHelp("Hold ALT for details")
|
addHelp("Hold ALT for details")
|
||||||
|
|
||||||
helpColumn = Column(helpColumn, align="r")
|
helpColumn = albow.Column(helpColumn, align="r")
|
||||||
helpColumn.topright = self.topright
|
helpColumn.topright = self.topright
|
||||||
helpColumn.anchor = "whrt"
|
helpColumn.anchor = "whrt"
|
||||||
#helpColumn.is_gl_container = True
|
#helpColumn.is_gl_container = True
|
||||||
self.add(helpColumn)
|
self.add(helpColumn)
|
||||||
|
|
||||||
keysColumn = [Label("")]
|
keysColumn = [albow.Label("")]
|
||||||
buttonsColumn = [leveleditor.ControlPanel.getHeader()]
|
buttonsColumn = [leveleditor.ControlPanel.getHeader()]
|
||||||
|
|
||||||
shortnames = []
|
shortnames = []
|
||||||
for world in self.mcedit.recentWorlds():
|
for world in self.mcedit.recentWorlds():
|
||||||
shortname = os.path.basename(world)
|
shortname = os.path.basename(world)
|
||||||
try:
|
try:
|
||||||
if MCInfdevOldLevel.isLevel(world):
|
if pymclevel.MCInfdevOldLevel.isLevel(world):
|
||||||
lev = MCInfdevOldLevel(world)
|
lev = pymclevel.MCInfdevOldLevel(world)
|
||||||
shortname = lev.LevelName
|
shortname = lev.LevelName
|
||||||
if lev.LevelName != lev.displayName:
|
if lev.LevelName != lev.displayName:
|
||||||
shortname = u"{0} ({1})".format(lev.LevelName, lev.displayName)
|
shortname = u"{0} ({1})".format(lev.LevelName, lev.displayName)
|
||||||
@ -112,13 +108,13 @@ class FileOpener(Widget):
|
|||||||
('F{0}'.format(i + 1), shortnames[i], self.createLoadButtonHandler(world))
|
('F{0}'.format(i + 1), shortnames[i], self.createLoadButtonHandler(world))
|
||||||
for i, world in enumerate(self.mcedit.recentWorlds())])
|
for i, world in enumerate(self.mcedit.recentWorlds())])
|
||||||
|
|
||||||
commandRow = HotkeyColumn(hotkeys, keysColumn, buttonsColumn)
|
commandRow = mceutils.HotkeyColumn(hotkeys, keysColumn, buttonsColumn)
|
||||||
commandRow.anchor = 'lrh'
|
commandRow.anchor = 'lrh'
|
||||||
|
|
||||||
sideColumn = mcedit.makeSideColumn()
|
sideColumn = mcedit.makeSideColumn()
|
||||||
sideColumn.anchor = 'wh'
|
sideColumn.anchor = 'wh'
|
||||||
|
|
||||||
contentRow = Row((commandRow, sideColumn))
|
contentRow = albow.Row((commandRow, sideColumn))
|
||||||
contentRow.center = self.center
|
contentRow.center = self.center
|
||||||
contentRow.anchor = "rh"
|
contentRow.anchor = "rh"
|
||||||
self.add(contentRow)
|
self.add(contentRow)
|
||||||
@ -134,7 +130,7 @@ class FileOpener(Widget):
|
|||||||
|
|
||||||
def key_down(self, evt):
|
def key_down(self, evt):
|
||||||
keyname = key.name(evt.key)
|
keyname = key.name(evt.key)
|
||||||
if keyname == 'f4' and (key.get_mods() & (KMOD_ALT | KMOD_LALT | KMOD_RALT)):
|
if keyname == 'f4' and (key.get_mods() & (pygame.KMOD_ALT | pygame.KMOD_LALT | pygame.KMOD_RALT)):
|
||||||
raise SystemExit
|
raise SystemExit
|
||||||
if keyname in ('f1', 'f2', 'f3', 'f4', 'f5'):
|
if keyname in ('f1', 'f2', 'f3', 'f4', 'f5'):
|
||||||
self.mcedit.loadRecentWorldNumber(int(keyname[1]))
|
self.mcedit.loadRecentWorldNumber(int(keyname[1]))
|
||||||
@ -247,32 +243,32 @@ class KeyConfigPanel(Dialog):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Dialog.__init__(self)
|
Dialog.__init__(self)
|
||||||
keyConfigTable = TableView(columns=[TableColumn("Command", 400, "l"), TableColumn("Assigned Key", 150, "r")])
|
keyConfigTable = albow.TableView(columns=[albow.TableColumn("Command", 400, "l"), albow.TableColumn("Assigned Key", 150, "r")])
|
||||||
keyConfigTable.num_rows = lambda: len(self.keyConfigKeys)
|
keyConfigTable.num_rows = lambda: len(self.keyConfigKeys)
|
||||||
keyConfigTable.row_data = self.getRowData
|
keyConfigTable.row_data = self.getRowData
|
||||||
keyConfigTable.row_is_selected = lambda x: x == self.selectedKeyIndex
|
keyConfigTable.row_is_selected = lambda x: x == self.selectedKeyIndex
|
||||||
keyConfigTable.click_row = self.selectTableRow
|
keyConfigTable.click_row = self.selectTableRow
|
||||||
tableWidget = Widget()
|
tableWidget = albow.Widget()
|
||||||
tableWidget.add(keyConfigTable)
|
tableWidget.add(keyConfigTable)
|
||||||
tableWidget.shrink_wrap()
|
tableWidget.shrink_wrap()
|
||||||
|
|
||||||
self.keyConfigTable = keyConfigTable
|
self.keyConfigTable = keyConfigTable
|
||||||
|
|
||||||
buttonRow = (Button("Assign Key...", action=self.askAssignSelectedKey),
|
buttonRow = (albow.Button("Assign Key...", action=self.askAssignSelectedKey),
|
||||||
Button("Done", action=self.dismiss))
|
albow.Button("Done", action=self.dismiss))
|
||||||
|
|
||||||
buttonRow = Row(buttonRow)
|
buttonRow = albow.Row(buttonRow)
|
||||||
|
|
||||||
choiceButton = ChoiceButton(["WASD", "Arrows", "Numpad"], choose=self.choosePreset)
|
choiceButton = mceutils.ChoiceButton(["WASD", "Arrows", "Numpad"], choose=self.choosePreset)
|
||||||
if config.config.get("Keys", "Forward") == "up":
|
if config.config.get("Keys", "Forward") == "up":
|
||||||
choiceButton.selectedChoice = "Arrows"
|
choiceButton.selectedChoice = "Arrows"
|
||||||
if config.config.get("Keys", "Forward") == "[8]":
|
if config.config.get("Keys", "Forward") == "[8]":
|
||||||
choiceButton.selectedChoice = "Numpad"
|
choiceButton.selectedChoice = "Numpad"
|
||||||
|
|
||||||
choiceRow = Row((Label("Presets: "), choiceButton))
|
choiceRow = albow.Row((albow.Label("Presets: "), choiceButton))
|
||||||
self.choiceButton = choiceButton
|
self.choiceButton = choiceButton
|
||||||
|
|
||||||
col = Column((tableWidget, choiceRow, buttonRow))
|
col = albow.Column((tableWidget, choiceRow, buttonRow))
|
||||||
self.add(col)
|
self.add(col)
|
||||||
self.shrink_wrap()
|
self.shrink_wrap()
|
||||||
|
|
||||||
@ -310,7 +306,7 @@ class KeyConfigPanel(Dialog):
|
|||||||
|
|
||||||
if labelString is None:
|
if labelString is None:
|
||||||
labelString = "Press a key to assign to the action \"{0}\"\n\nPress ESC to cancel.".format(configKey)
|
labelString = "Press a key to assign to the action \"{0}\"\n\nPress ESC to cancel.".format(configKey)
|
||||||
label = Label(labelString)
|
label = albow.Label(labelString)
|
||||||
panel.add(label)
|
panel.add(label)
|
||||||
panel.shrink_wrap()
|
panel.shrink_wrap()
|
||||||
|
|
||||||
@ -361,34 +357,34 @@ class GraphicsPanel(Panel):
|
|||||||
self.texturePackChoice.selectedChoice = self.texturePack
|
self.texturePackChoice.selectedChoice = self.texturePack
|
||||||
self.texturePackChoice.choices = packs
|
self.texturePackChoice.choices = packs
|
||||||
|
|
||||||
self.texturePackChoice = texturePackChoice = ChoiceButton(getPacks(), choose=packChanged)
|
self.texturePackChoice = texturePackChoice = mceutils.ChoiceButton(getPacks(), choose=packChanged)
|
||||||
if self.texturePack in self.texturePackChoice.choices:
|
if self.texturePack in self.texturePackChoice.choices:
|
||||||
self.texturePackChoice.selectedChoice = self.texturePack
|
self.texturePackChoice.selectedChoice = self.texturePack
|
||||||
|
|
||||||
texturePackRow = Row((Label("Skin: "), texturePackChoice))
|
texturePackRow = albow.Row((albow.Label("Skin: "), texturePackChoice))
|
||||||
|
|
||||||
fieldOfViewRow = FloatInputRow("Field of View: ",
|
fieldOfViewRow = mceutils.FloatInputRow("Field of View: ",
|
||||||
ref=Settings.fov.propertyRef(), width=100, min=25, max=120)
|
ref=Settings.fov.propertyRef(), width=100, min=25, max=120)
|
||||||
|
|
||||||
targetFPSRow = IntInputRow("Target FPS: ",
|
targetFPSRow = mceutils.IntInputRow("Target FPS: ",
|
||||||
ref=Settings.targetFPS.propertyRef(), width=100, min=1, max=60)
|
ref=Settings.targetFPS.propertyRef(), width=100, min=1, max=60)
|
||||||
|
|
||||||
bufferLimitRow = IntInputRow("Vertex Buffer Limit (MB): ",
|
bufferLimitRow = mceutils.IntInputRow("Vertex Buffer Limit (MB): ",
|
||||||
ref=Settings.vertexBufferLimit.propertyRef(), width=100, min=0)
|
ref=Settings.vertexBufferLimit.propertyRef(), width=100, min=0)
|
||||||
|
|
||||||
fastLeavesRow = CheckBoxLabel("Fast Leaves",
|
fastLeavesRow = mceutils.CheckBoxLabel("Fast Leaves",
|
||||||
ref=Settings.fastLeaves.propertyRef(),
|
ref=Settings.fastLeaves.propertyRef(),
|
||||||
tooltipText="Leaves are solid, like Minecraft's 'Fast' graphics")
|
tooltipText="Leaves are solid, like Minecraft's 'Fast' graphics")
|
||||||
|
|
||||||
roughGraphicsRow = CheckBoxLabel("Rough Graphics",
|
roughGraphicsRow = mceutils.CheckBoxLabel("Rough Graphics",
|
||||||
ref=Settings.roughGraphics.propertyRef(),
|
ref=Settings.roughGraphics.propertyRef(),
|
||||||
tooltipText="All blocks are drawn the same way (overrides 'Fast Leaves')")
|
tooltipText="All blocks are drawn the same way (overrides 'Fast Leaves')")
|
||||||
|
|
||||||
enableMouseLagRow = CheckBoxLabel("Enable Mouse Lag",
|
enableMouseLagRow = mceutils.CheckBoxLabel("Enable Mouse Lag",
|
||||||
ref=Settings.enableMouseLag.propertyRef(),
|
ref=Settings.enableMouseLag.propertyRef(),
|
||||||
tooltipText="Enable choppy mouse movement for faster loading.")
|
tooltipText="Enable choppy mouse movement for faster loading.")
|
||||||
|
|
||||||
settingsColumn = Column((fastLeavesRow,
|
settingsColumn = albow.Column((fastLeavesRow,
|
||||||
roughGraphicsRow,
|
roughGraphicsRow,
|
||||||
enableMouseLagRow,
|
enableMouseLagRow,
|
||||||
texturePackRow,
|
texturePackRow,
|
||||||
@ -397,17 +393,17 @@ class GraphicsPanel(Panel):
|
|||||||
bufferLimitRow,
|
bufferLimitRow,
|
||||||
), align='r')
|
), align='r')
|
||||||
|
|
||||||
settingsColumn = Column((Label("Settings"),
|
settingsColumn = albow.Column((albow.Label("Settings"),
|
||||||
settingsColumn))
|
settingsColumn))
|
||||||
|
|
||||||
settingsRow = Row((settingsColumn,))
|
settingsRow = albow.Row((settingsColumn,))
|
||||||
|
|
||||||
optionsColumn = Column((settingsRow, Button("OK", action=mcedit.removeGraphicOptions)))
|
optionsColumn = albow.Column((settingsRow, albow.Button("OK", action=mcedit.removeGraphicOptions)))
|
||||||
self.add(optionsColumn)
|
self.add(optionsColumn)
|
||||||
self.shrink_wrap()
|
self.shrink_wrap()
|
||||||
|
|
||||||
def _reloadTextures(self, pack):
|
def _reloadTextures(self, pack):
|
||||||
if hasattr(alphaMaterials, "terrainTexture"):
|
if hasattr(pymclevel.alphaMaterials, "terrainTexture"):
|
||||||
self.mcedit.displayContext.loadTextures()
|
self.mcedit.displayContext.loadTextures()
|
||||||
|
|
||||||
texturePack = Settings.skin.configProperty(_reloadTextures)
|
texturePack = Settings.skin.configProperty(_reloadTextures)
|
||||||
@ -421,67 +417,67 @@ class OptionsPanel(Dialog):
|
|||||||
|
|
||||||
self.mcedit = mcedit
|
self.mcedit = mcedit
|
||||||
|
|
||||||
autoBrakeRow = CheckBoxLabel("Autobrake",
|
autoBrakeRow = mceutils.CheckBoxLabel("Autobrake",
|
||||||
ref=ControlSettings.autobrake.propertyRef(),
|
ref=ControlSettings.autobrake.propertyRef(),
|
||||||
tooltipText="Apply brake when not pressing movement keys")
|
tooltipText="Apply brake when not pressing movement keys")
|
||||||
|
|
||||||
swapAxesRow = CheckBoxLabel("Swap Axes Looking Down",
|
swapAxesRow = mceutils.CheckBoxLabel("Swap Axes Looking Down",
|
||||||
ref=ControlSettings.swapAxes.propertyRef(),
|
ref=ControlSettings.swapAxes.propertyRef(),
|
||||||
tooltipText="Change the direction of the Forward and Backward keys when looking down")
|
tooltipText="Change the direction of the Forward and Backward keys when looking down")
|
||||||
|
|
||||||
cameraAccelRow = FloatInputRow("Camera Acceleration: ",
|
cameraAccelRow = mceutils.FloatInputRow("Camera Acceleration: ",
|
||||||
ref=ControlSettings.cameraAccel.propertyRef(), width=100, min=5.0)
|
ref=ControlSettings.cameraAccel.propertyRef(), width=100, min=5.0)
|
||||||
|
|
||||||
cameraDragRow = FloatInputRow("Camera Drag: ",
|
cameraDragRow = mceutils.FloatInputRow("Camera Drag: ",
|
||||||
ref=ControlSettings.cameraDrag.propertyRef(), width=100, min=1.0)
|
ref=ControlSettings.cameraDrag.propertyRef(), width=100, min=1.0)
|
||||||
|
|
||||||
cameraMaxSpeedRow = FloatInputRow("Camera Max Speed: ",
|
cameraMaxSpeedRow = mceutils.FloatInputRow("Camera Max Speed: ",
|
||||||
ref=ControlSettings.cameraMaxSpeed.propertyRef(), width=100, min=1.0)
|
ref=ControlSettings.cameraMaxSpeed.propertyRef(), width=100, min=1.0)
|
||||||
|
|
||||||
cameraBrakeSpeedRow = FloatInputRow("Camera Braking Speed: ",
|
cameraBrakeSpeedRow = mceutils.FloatInputRow("Camera Braking Speed: ",
|
||||||
ref=ControlSettings.cameraBrakingSpeed.propertyRef(), width=100, min=1.0)
|
ref=ControlSettings.cameraBrakingSpeed.propertyRef(), width=100, min=1.0)
|
||||||
|
|
||||||
mouseSpeedRow = FloatInputRow("Mouse Speed: ",
|
mouseSpeedRow = mceutils.FloatInputRow("Mouse Speed: ",
|
||||||
ref=ControlSettings.mouseSpeed.propertyRef(), width=100, min=0.1, max=20.0)
|
ref=ControlSettings.mouseSpeed.propertyRef(), width=100, min=0.1, max=20.0)
|
||||||
|
|
||||||
invertRow = CheckBoxLabel("Invert Mouse",
|
invertRow = mceutils.CheckBoxLabel("Invert Mouse",
|
||||||
ref=ControlSettings.invertMousePitch.propertyRef(),
|
ref=ControlSettings.invertMousePitch.propertyRef(),
|
||||||
tooltipText="Reverse the up and down motion of the mouse.")
|
tooltipText="Reverse the up and down motion of the mouse.")
|
||||||
|
|
||||||
spaceHeightRow = IntInputRow("Low Detail Height",
|
spaceHeightRow = mceutils.IntInputRow("Low Detail Height",
|
||||||
ref=Settings.spaceHeight.propertyRef(),
|
ref=Settings.spaceHeight.propertyRef(),
|
||||||
tooltipText="When you are this far above the top of the world, move fast and use low-detail mode.")
|
tooltipText="When you are this far above the top of the world, move fast and use low-detail mode.")
|
||||||
|
|
||||||
blockBufferRow = IntInputRow("Block Buffer",
|
blockBufferRow = mceutils.IntInputRow("Block Buffer",
|
||||||
ref=Settings.blockBuffer.propertyRef(), min=1,
|
ref=Settings.blockBuffer.propertyRef(), min=1,
|
||||||
tooltipText="Amount of memory used for temporary storage. When more than this is needed, the disk is used instead.")
|
tooltipText="Amount of memory used for temporary storage. When more than this is needed, the disk is used instead.")
|
||||||
|
|
||||||
setWindowPlacementRow = CheckBoxLabel("Set Window Placement",
|
setWindowPlacementRow = mceutils.CheckBoxLabel("Set Window Placement",
|
||||||
ref=Settings.setWindowPlacement.propertyRef(),
|
ref=Settings.setWindowPlacement.propertyRef(),
|
||||||
tooltipText="Try to save and restore the window position.")
|
tooltipText="Try to save and restore the window position.")
|
||||||
|
|
||||||
windowSizeRow = CheckBoxLabel("Window Resize Alert",
|
windowSizeRow = mceutils.CheckBoxLabel("Window Resize Alert",
|
||||||
ref=Settings.shouldResizeAlert.propertyRef(),
|
ref=Settings.shouldResizeAlert.propertyRef(),
|
||||||
tooltipText="Reminds you that the cursor won't work correctly after resizing the window.")
|
tooltipText="Reminds you that the cursor won't work correctly after resizing the window.")
|
||||||
|
|
||||||
visibilityCheckRow = CheckBoxLabel("Visibility Check",
|
visibilityCheckRow = mceutils.CheckBoxLabel("Visibility Check",
|
||||||
ref=Settings.visibilityCheck.propertyRef(),
|
ref=Settings.visibilityCheck.propertyRef(),
|
||||||
tooltipText="Do a visibility check on chunks while loading. May cause a crash.")
|
tooltipText="Do a visibility check on chunks while loading. May cause a crash.")
|
||||||
|
|
||||||
longDistanceRow = CheckBoxLabel("Long-Distance Mode",
|
longDistanceRow = mceutils.CheckBoxLabel("Long-Distance Mode",
|
||||||
ref=Settings.longDistanceMode.propertyRef(),
|
ref=Settings.longDistanceMode.propertyRef(),
|
||||||
tooltipText="Always target the farthest block under the cursor, even in mouselook mode. Shortcut: ALT-Z")
|
tooltipText="Always target the farthest block under the cursor, even in mouselook mode. Shortcut: ALT-Z")
|
||||||
|
|
||||||
flyModeRow = CheckBoxLabel("Fly Mode",
|
flyModeRow = mceutils.CheckBoxLabel("Fly Mode",
|
||||||
ref=Settings.flyMode.propertyRef(),
|
ref=Settings.flyMode.propertyRef(),
|
||||||
tooltipText="Moving forward and backward will not change your altitude in Fly Mode.")
|
tooltipText="Moving forward and backward will not change your altitude in Fly Mode.")
|
||||||
|
|
||||||
self.goPortableButton = goPortableButton = Button("Change", action=self.togglePortable)
|
self.goPortableButton = goPortableButton = albow.Button("Change", action=self.togglePortable)
|
||||||
|
|
||||||
goPortableButton.tooltipText = self.portableButtonTooltip()
|
goPortableButton.tooltipText = self.portableButtonTooltip()
|
||||||
goPortableRow = Row((ValueDisplay(ref=AttrRef(self, 'portableLabelText'), width=250, align='r'), goPortableButton))
|
goPortableRow = albow.Row((albow.ValueDisplay(ref=albow.AttrRef(self, 'portableLabelText'), width=250, align='r'), goPortableButton))
|
||||||
|
|
||||||
reportRow = CheckBoxLabel("Report Crashes",
|
reportRow = mceutils.CheckBoxLabel("Report Crashes",
|
||||||
ref=Settings.reportCrashes.propertyRef(),
|
ref=Settings.reportCrashes.propertyRef(),
|
||||||
tooltipText="Automatically report fatal errors to the author.")
|
tooltipText="Automatically report fatal errors to the author.")
|
||||||
|
|
||||||
@ -512,15 +508,15 @@ class OptionsPanel(Dialog):
|
|||||||
goPortableRow,
|
goPortableRow,
|
||||||
)
|
)
|
||||||
|
|
||||||
rightcol = Column(options, align='r')
|
rightcol = albow.Column(options, align='r')
|
||||||
leftcol = Column(inputs, align='r')
|
leftcol = albow.Column(inputs, align='r')
|
||||||
|
|
||||||
optionsColumn = Column((Label("Options"),
|
optionsColumn = albow.Column((albow.Label("Options"),
|
||||||
Row((leftcol, rightcol), align="t")))
|
albow.Row((leftcol, rightcol), align="t")))
|
||||||
|
|
||||||
settingsRow = Row((optionsColumn,))
|
settingsRow = albow.Row((optionsColumn,))
|
||||||
|
|
||||||
optionsColumn = Column((settingsRow, Button("OK", action=self.dismiss)))
|
optionsColumn = albow.Column((settingsRow, albow.Button("OK", action=self.dismiss)))
|
||||||
|
|
||||||
self.add(optionsColumn)
|
self.add(optionsColumn)
|
||||||
self.shrink_wrap()
|
self.shrink_wrap()
|
||||||
@ -550,12 +546,12 @@ class OptionsPanel(Dialog):
|
|||||||
textChoices[1] = "This will move your schematics to your Documents folder and your settings to your Preferences folder. Continue?"
|
textChoices[1] = "This will move your schematics to your Documents folder and your settings to your Preferences folder. Continue?"
|
||||||
|
|
||||||
alertText = textChoices[mcplatform.portable]
|
alertText = textChoices[mcplatform.portable]
|
||||||
if ask(alertText) == "OK":
|
if albow.ask(alertText) == "OK":
|
||||||
try:
|
try:
|
||||||
[mcplatform.goPortable, mcplatform.goFixed][mcplatform.portable]()
|
[mcplatform.goPortable, mcplatform.goFixed][mcplatform.portable]()
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
alert(u"Error while moving files: {0}".format(repr(e)))
|
albow.alert(u"Error while moving files: {0}".format(repr(e)))
|
||||||
|
|
||||||
self.goPortableButton.tooltipText = self.portableButtonTooltip()
|
self.goPortableButton.tooltipText = self.portableButtonTooltip()
|
||||||
|
|
||||||
@ -592,11 +588,11 @@ class MCEdit(GLViewport):
|
|||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
for arg in sys.argv[1:]:
|
for arg in sys.argv[1:]:
|
||||||
f = arg.decode(sys.getfilesystemencoding())
|
f = arg.decode(sys.getfilesystemencoding())
|
||||||
if isdir(join(saveFileDir, f)):
|
if os.path.isdir(os.path.join(pymclevel.saveFileDir, f)):
|
||||||
f = join(saveFileDir, f)
|
f = os.path.join(pymclevel.saveFileDir, f)
|
||||||
self.droppedLevel = f
|
self.droppedLevel = f
|
||||||
break
|
break
|
||||||
if exists(f):
|
if os.path.exists(f):
|
||||||
self.droppedLevel = f
|
self.droppedLevel = f
|
||||||
break
|
break
|
||||||
|
|
||||||
@ -704,7 +700,7 @@ class MCEdit(GLViewport):
|
|||||||
def makeSideColumn(self):
|
def makeSideColumn(self):
|
||||||
def showhistory():
|
def showhistory():
|
||||||
try:
|
try:
|
||||||
with file(os.path.join(mcplatform.dataDir), 'history.txt') as f:
|
with file(os.path.join(directories.dataDir), 'history.txt') as f:
|
||||||
history = f.read()
|
history = f.read()
|
||||||
|
|
||||||
history = "\n".join(history.split("\n")[:16])
|
history = "\n".join(history.split("\n")[:16])
|
||||||
@ -713,13 +709,13 @@ class MCEdit(GLViewport):
|
|||||||
except Exception, e:
|
except Exception, e:
|
||||||
history = "Exception while reading history.txt: {0}".format(e)
|
history = "Exception while reading history.txt: {0}".format(e)
|
||||||
|
|
||||||
if ask(history, ["Show history.txt", "OK"]) == "Show history.txt":
|
if albow.ask(history, ["Show history.txt", "OK"]) == "Show history.txt":
|
||||||
platform_open(os.path.join(mcplatform.dataDir), "history.txt")
|
platform_open(os.path.join(directories.dataDir), "history.txt")
|
||||||
|
|
||||||
def showLicense():
|
def showLicense():
|
||||||
platform_open(os.path.join(mcplatform.dataDir, "LICENSE.txt"))
|
platform_open(os.path.join(directories.dataDir, "LICENSE.txt"))
|
||||||
|
|
||||||
readmePath = os.path.join(mcplatform.dataDir, "README.html")
|
readmePath = os.path.join(directories.dataDir, "README.html")
|
||||||
|
|
||||||
hotkeys = ([("",
|
hotkeys = ([("",
|
||||||
"Keys",
|
"Keys",
|
||||||
@ -744,7 +740,7 @@ class MCEdit(GLViewport):
|
|||||||
showLicense),
|
showLicense),
|
||||||
])
|
])
|
||||||
|
|
||||||
c = HotkeyColumn(hotkeys)
|
c = mceutils.HotkeyColumn(hotkeys)
|
||||||
|
|
||||||
return c
|
return c
|
||||||
|
|
||||||
@ -778,7 +774,7 @@ class MCEdit(GLViewport):
|
|||||||
if not hasattr(self, 'resizeAlert'):
|
if not hasattr(self, 'resizeAlert'):
|
||||||
self.resizeAlert = self.shouldResizeAlert
|
self.resizeAlert = self.shouldResizeAlert
|
||||||
if self.resizeAlert:
|
if self.resizeAlert:
|
||||||
alert("Window size increased. You may have problems using the cursor until MCEdit is restarted.")
|
albow.alert("Window size increased. You may have problems using the cursor until MCEdit is restarted.")
|
||||||
self.resizeAlert = False
|
self.resizeAlert = False
|
||||||
|
|
||||||
shouldResizeAlert = Settings.shouldResizeAlert.configProperty()
|
shouldResizeAlert = Settings.shouldResizeAlert.configProperty()
|
||||||
@ -809,7 +805,7 @@ class MCEdit(GLViewport):
|
|||||||
self.add(self.editor)
|
self.add(self.editor)
|
||||||
|
|
||||||
self.focus_switch = self.editor
|
self.focus_switch = self.editor
|
||||||
alert("World created. To expand this infinite world, explore the world in Minecraft or use the Chunk Control tool to add or delete chunks.")
|
albow.alert("World created. To expand this infinite world, explore the world in Minecraft or use the Chunk Control tool to add or delete chunks.")
|
||||||
|
|
||||||
def removeEditor(self):
|
def removeEditor(self):
|
||||||
self.remove(self.editor)
|
self.remove(self.editor)
|
||||||
@ -819,7 +815,7 @@ class MCEdit(GLViewport):
|
|||||||
|
|
||||||
def confirm_quit(self):
|
def confirm_quit(self):
|
||||||
if self.editor.unsavedEdits:
|
if self.editor.unsavedEdits:
|
||||||
result = ask("There are {0} unsaved changes.".format(self.editor.unsavedEdits),
|
result = albow.ask("There are {0} unsaved changes.".format(self.editor.unsavedEdits),
|
||||||
responses=["Save and Quit", "Quit", "Cancel"])
|
responses=["Save and Quit", "Quit", "Cancel"])
|
||||||
if result == "Save and Quit":
|
if result == "Save and Quit":
|
||||||
self.saveAndQuit()
|
self.saveAndQuit()
|
||||||
@ -851,14 +847,14 @@ class MCEdit(GLViewport):
|
|||||||
|
|
||||||
rootwidget.add(mcedit)
|
rootwidget.add(mcedit)
|
||||||
rootwidget.focus_switch = mcedit
|
rootwidget.focus_switch = mcedit
|
||||||
if 0 == len(alphaMaterials.yamlDatas):
|
if 0 == len(pymclevel.alphaMaterials.yamlDatas):
|
||||||
alert("Failed to load minecraft.yaml. Check the console window for details.")
|
albow.alert("Failed to load minecraft.yaml. Check the console window for details.")
|
||||||
|
|
||||||
if mcedit.droppedLevel:
|
if mcedit.droppedLevel:
|
||||||
mcedit.loadFile(mcedit.droppedLevel)
|
mcedit.loadFile(mcedit.droppedLevel)
|
||||||
|
|
||||||
if mcedit.closeMinecraftWarning:
|
if mcedit.closeMinecraftWarning:
|
||||||
answer = ask("Warning: You must close Minecraft completely before editing. Save corruption may result. Get Satisfaction to learn more.", ["Get Satisfaction", "Don't remind me again.", "OK"], default=1, cancel=1)
|
answer = albow.ask("Warning: You must close Minecraft completely before editing. Save corruption may result. Get Satisfaction to learn more.", ["Get Satisfaction", "Don't remind me again.", "OK"], default=1, cancel=1)
|
||||||
if answer == "Get Satisfaction":
|
if answer == "Get Satisfaction":
|
||||||
mcplatform.platform_open("http://getsatisfaction.com/mojang/topics/region_file_cache_interferes_with_map_editors_risking_save_corruption")
|
mcplatform.platform_open("http://getsatisfaction.com/mojang/topics/region_file_cache_interferes_with_map_editors_risking_save_corruption")
|
||||||
if answer == "Don't remind me again.":
|
if answer == "Don't remind me again.":
|
||||||
@ -916,7 +912,7 @@ def main(argv):
|
|||||||
try:
|
try:
|
||||||
if not os.path.exists(mcplatform.schematicsDir):
|
if not os.path.exists(mcplatform.schematicsDir):
|
||||||
shutil.copytree(
|
shutil.copytree(
|
||||||
os.path.join(mcplatform.dataDir, u'stock-schematics'),
|
os.path.join(directories.dataDir, u'stock-schematics'),
|
||||||
mcplatform.schematicsDir
|
mcplatform.schematicsDir
|
||||||
)
|
)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
@ -946,16 +942,16 @@ class GLDisplayContext(object):
|
|||||||
return max(20, w), max(20, h)
|
return max(20, w), max(20, h)
|
||||||
|
|
||||||
def displayMode(self):
|
def displayMode(self):
|
||||||
displayMode = OPENGL | RESIZABLE
|
displayMode = pygame.OPENGL | pygame.RESIZABLE
|
||||||
if Settings.doubleBuffer.get():
|
if Settings.doubleBuffer.get():
|
||||||
displayMode |= DOUBLEBUF
|
displayMode |= pygame.DOUBLEBUF
|
||||||
return displayMode
|
return displayMode
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
pygame.key.set_repeat(500, 100)
|
pygame.key.set_repeat(500, 100)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
display.gl_set_attribute(GL_SWAP_CONTROL, Settings.vsync.get())
|
display.gl_set_attribute(pygame.GL_SWAP_CONTROL, Settings.vsync.get())
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logging.warning('Unable to set vertical sync: {0!r}'.format(e))
|
logging.warning('Unable to set vertical sync: {0!r}'.format(e))
|
||||||
|
|
||||||
@ -988,9 +984,9 @@ class GLDisplayContext(object):
|
|||||||
config.saveConfig()
|
config.saveConfig()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
iconpath = os.path.join(mcplatform.dataDir, 'favicon.png')
|
iconpath = os.path.join(directories.dataDir, 'favicon.png')
|
||||||
iconfile = file(iconpath, 'rb')
|
iconfile = file(iconpath, 'rb')
|
||||||
icon = image.load(iconfile, 'favicon.png')
|
icon = pygame.image.load(iconfile, 'favicon.png')
|
||||||
display.set_icon(icon)
|
display.set_icon(icon)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logging.warning('Unable to set icon: {0!r}'.format(e))
|
logging.warning('Unable to set icon: {0!r}'.format(e))
|
||||||
@ -1015,7 +1011,7 @@ class GLDisplayContext(object):
|
|||||||
|
|
||||||
def makeTerrainTexture(mats):
|
def makeTerrainTexture(mats):
|
||||||
w, h = 1, 1
|
w, h = 1, 1
|
||||||
teximage = zeros((w, h, 4), dtype='uint8')
|
teximage = numpy.zeros((w, h, 4), dtype='uint8')
|
||||||
teximage[:] = 127, 127, 127, 255
|
teximage[:] = 127, 127, 127, 255
|
||||||
|
|
||||||
GL.glTexImage2D(
|
GL.glTexImage2D(
|
||||||
@ -1031,25 +1027,25 @@ class GLDisplayContext(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
textures = (
|
textures = (
|
||||||
(classicMaterials, 'terrain-classic.png'),
|
(pymclevel.classicMaterials, 'terrain-classic.png'),
|
||||||
(indevMaterials, 'terrain-classic.png'),
|
(pymclevel.indevMaterials, 'terrain-classic.png'),
|
||||||
(alphaMaterials, 'terrain.png'),
|
(pymclevel.alphaMaterials, 'terrain.png'),
|
||||||
(pocketMaterials, 'terrain-pocket.png')
|
(pymclevel.pocketMaterials, 'terrain-pocket.png')
|
||||||
)
|
)
|
||||||
|
|
||||||
for mats, matFile in textures:
|
for mats, matFile in textures:
|
||||||
try:
|
try:
|
||||||
if mats.name == 'Alpha':
|
if mats.name == 'Alpha':
|
||||||
tex = loadAlphaTerrainTexture()
|
tex = mceutils.loadAlphaTerrainTexture()
|
||||||
else:
|
else:
|
||||||
tex = loadPNGTexture(matFile)
|
tex = mceutils.loadPNGTexture(matFile)
|
||||||
self.terrainTextures[mats.name] = tex
|
self.terrainTextures[mats.name] = tex
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logging.warning(
|
logging.warning(
|
||||||
'Unable to load terrain from {0}, using flat colors.'
|
'Unable to load terrain from {0}, using flat colors.'
|
||||||
'Error was: {1!r}'.format(matFile, e)
|
'Error was: {1!r}'.format(matFile, e)
|
||||||
)
|
)
|
||||||
self.terrainTextures[mats.name] = Texture(
|
self.terrainTextures[mats.name] = glutils.Texture(
|
||||||
functools.partial(makeTerrainTexture, mats)
|
functools.partial(makeTerrainTexture, mats)
|
||||||
)
|
)
|
||||||
mats.terrainTexture = self.terrainTextures[mats.name]
|
mats.terrainTexture = self.terrainTextures[mats.name]
|
||||||
|
55
mceutils.py
55
mceutils.py
@ -18,29 +18,26 @@ mceutils.py
|
|||||||
Exception catching, some basic box drawing, texture pack loading, oddball UI elements
|
Exception catching, some basic box drawing, texture pack loading, oddball UI elements
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from OpenGL import GL, GLU
|
from albow.controls import ValueDisplay
|
||||||
import numpy
|
from albow import alert, ask, Button, Column, Label, root, Row, ValueButton, Widget
|
||||||
import httplib
|
import config
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import platform
|
|
||||||
import traceback
|
|
||||||
import zipfile
|
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
import directories
|
||||||
from pygame import image, display
|
from errorreporting import reportCrash, reportException
|
||||||
import png
|
import httplib
|
||||||
import config
|
|
||||||
import release
|
|
||||||
import mcplatform
|
import mcplatform
|
||||||
from albow import ask, alert, Widget, Button, ValueButton, Column, Row, Label, root
|
import numpy
|
||||||
|
from OpenGL import GL, GLU
|
||||||
|
import os
|
||||||
|
import platform
|
||||||
|
import png
|
||||||
|
from pygame import display, image
|
||||||
import pymclevel
|
import pymclevel
|
||||||
from albow.controls import ValueDisplay
|
import release
|
||||||
from pymclevel import materials
|
import sys
|
||||||
|
import traceback
|
||||||
|
import zipfile
|
||||||
from errorreporting import reportException, reportCrash
|
|
||||||
|
|
||||||
|
|
||||||
def alertException(func):
|
def alertException(func):
|
||||||
@ -55,14 +52,12 @@ def alertException(func):
|
|||||||
|
|
||||||
return _alertException
|
return _alertException
|
||||||
|
|
||||||
from pymclevel.faces import *
|
|
||||||
|
|
||||||
|
|
||||||
def drawFace(box, face, type=GL.GL_QUADS):
|
def drawFace(box, face, type=GL.GL_QUADS):
|
||||||
x, y, z, = box.origin
|
x, y, z, = box.origin
|
||||||
x2, y2, z2 = box.maximum
|
x2, y2, z2 = box.maximum
|
||||||
|
|
||||||
if face == FaceXDecreasing:
|
if face == pymclevel.faces.FaceXDecreasing:
|
||||||
|
|
||||||
faceVertices = numpy.array(
|
faceVertices = numpy.array(
|
||||||
(x, y2, z2,
|
(x, y2, z2,
|
||||||
@ -71,7 +66,7 @@ def drawFace(box, face, type=GL.GL_QUADS):
|
|||||||
x, y, z2,
|
x, y, z2,
|
||||||
), dtype='f4')
|
), dtype='f4')
|
||||||
|
|
||||||
elif face == FaceXIncreasing:
|
elif face == pymclevel.faces.FaceXIncreasing:
|
||||||
|
|
||||||
faceVertices = numpy.array(
|
faceVertices = numpy.array(
|
||||||
(x2, y, z2,
|
(x2, y, z2,
|
||||||
@ -80,7 +75,7 @@ def drawFace(box, face, type=GL.GL_QUADS):
|
|||||||
x2, y2, z2,
|
x2, y2, z2,
|
||||||
), dtype='f4')
|
), dtype='f4')
|
||||||
|
|
||||||
elif face == FaceYDecreasing:
|
elif face == pymclevel.faces.FaceYDecreasing:
|
||||||
faceVertices = numpy.array(
|
faceVertices = numpy.array(
|
||||||
(x2, y, z2,
|
(x2, y, z2,
|
||||||
x, y, z2,
|
x, y, z2,
|
||||||
@ -88,7 +83,7 @@ def drawFace(box, face, type=GL.GL_QUADS):
|
|||||||
x2, y, z,
|
x2, y, z,
|
||||||
), dtype='f4')
|
), dtype='f4')
|
||||||
|
|
||||||
elif face == FaceYIncreasing:
|
elif face == pymclevel.faces.FaceYIncreasing:
|
||||||
faceVertices = numpy.array(
|
faceVertices = numpy.array(
|
||||||
(x2, y2, z,
|
(x2, y2, z,
|
||||||
x, y2, z,
|
x, y2, z,
|
||||||
@ -96,7 +91,7 @@ def drawFace(box, face, type=GL.GL_QUADS):
|
|||||||
x2, y2, z2,
|
x2, y2, z2,
|
||||||
), dtype='f4')
|
), dtype='f4')
|
||||||
|
|
||||||
elif face == FaceZDecreasing:
|
elif face == pymclevel.faces.FaceZDecreasing:
|
||||||
faceVertices = numpy.array(
|
faceVertices = numpy.array(
|
||||||
(x, y, z,
|
(x, y, z,
|
||||||
x, y2, z,
|
x, y2, z,
|
||||||
@ -104,7 +99,7 @@ def drawFace(box, face, type=GL.GL_QUADS):
|
|||||||
x2, y, z,
|
x2, y, z,
|
||||||
), dtype='f4')
|
), dtype='f4')
|
||||||
|
|
||||||
elif face == FaceZIncreasing:
|
elif face == pymclevel.faces.FaceZIncreasing:
|
||||||
faceVertices = numpy.array(
|
faceVertices = numpy.array(
|
||||||
(x2, y, z2,
|
(x2, y, z2,
|
||||||
x2, y2, z2,
|
x2, y2, z2,
|
||||||
@ -356,7 +351,7 @@ def loadAlphaTerrainTexture():
|
|||||||
if foliageColorFile is not None:
|
if foliageColorFile is not None:
|
||||||
w, h, data = loadPNGData(slurpZipExt(foliageColorFile))
|
w, h, data = loadPNGData(slurpZipExt(foliageColorFile))
|
||||||
color = data[77, 55, :3]
|
color = data[77, 55, :3]
|
||||||
materials.alphaMaterials.flatColors[17, 0, :3] = color # xxxxxxx
|
pymclevel.materials.alphaMaterials.flatColors[17, 0, :3] = color # xxxxxxx
|
||||||
|
|
||||||
color = [c / 255.0 for c in color]
|
color = [c / 255.0 for c in color]
|
||||||
LeafBlockRenderer.leafColor = color
|
LeafBlockRenderer.leafColor = color
|
||||||
@ -366,7 +361,7 @@ def loadAlphaTerrainTexture():
|
|||||||
if grassColorFile is not None:
|
if grassColorFile is not None:
|
||||||
w, h, data = loadPNGData(slurpZipExt(grassColorFile))
|
w, h, data = loadPNGData(slurpZipExt(grassColorFile))
|
||||||
color = data[77, 55, :3]
|
color = data[77, 55, :3]
|
||||||
materials.alphaMaterials.flatColors[2, 0, :3] = color # xxxxxxx
|
pymclevel.materials.alphaMaterials.flatColors[2, 0, :3] = color # xxxxxxx
|
||||||
color = [c / 255.0 for c in color]
|
color = [c / 255.0 for c in color]
|
||||||
|
|
||||||
GenericBlockRenderer.grassColor = color
|
GenericBlockRenderer.grassColor = color
|
||||||
@ -384,7 +379,7 @@ def loadAlphaTerrainTexture():
|
|||||||
def loadPNGData(filename_or_data):
|
def loadPNGData(filename_or_data):
|
||||||
# if filename[1:4] != "PNG":
|
# if filename[1:4] != "PNG":
|
||||||
if isinstance(filename_or_data, basestring):
|
if isinstance(filename_or_data, basestring):
|
||||||
filename_or_data = os.path.join(mcplatform.dataDir, filename_or_data)
|
filename_or_data = os.path.join(directories.dataDir, filename_or_data)
|
||||||
filename_or_data = filename_or_data.encode(sys.getfilesystemencoding())
|
filename_or_data = filename_or_data.encode(sys.getfilesystemencoding())
|
||||||
else:
|
else:
|
||||||
# path = numpy.fromstring(filename, 'uint8')
|
# path = numpy.fromstring(filename, 'uint8')
|
||||||
|
@ -18,11 +18,10 @@ mcplatform.py
|
|||||||
Platform-specific functions, folder paths, and the whole fixed/portable nonsense.
|
Platform-specific functions, folder paths, and the whole fixed/portable nonsense.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import directories
|
||||||
import os
|
import os
|
||||||
from os.path import join, exists, dirname
|
from os.path import dirname, exists, join
|
||||||
|
import sys
|
||||||
from directories import *
|
|
||||||
|
|
||||||
enc = sys.getfilesystemencoding()
|
enc = sys.getfilesystemencoding()
|
||||||
|
|
||||||
@ -32,9 +31,9 @@ if sys.platform == "win32":
|
|||||||
plat = "win32"
|
plat = "win32"
|
||||||
if platform.architecture()[0] == "64bit":
|
if platform.architecture()[0] == "64bit":
|
||||||
plat = "win-amd64"
|
plat = "win-amd64"
|
||||||
sys.path.append(join(dataDir, "pymclevel", "build", "lib." + plat + "-2.6").encode(enc))
|
sys.path.append(join(directories.dataDir, "pymclevel", "build", "lib." + plat + "-2.6").encode(enc))
|
||||||
|
|
||||||
os.environ["YAML_ROOT"] = join(dataDir, "pymclevel").encode(enc)
|
os.environ["YAML_ROOT"] = join(directories.dataDir, "pymclevel").encode(enc)
|
||||||
|
|
||||||
from pygame import display
|
from pygame import display
|
||||||
|
|
||||||
@ -336,7 +335,7 @@ def platform_open(path):
|
|||||||
win32_window_size = True
|
win32_window_size = True
|
||||||
|
|
||||||
ini = u"mcedit.ini"
|
ini = u"mcedit.ini"
|
||||||
parentDir = dirname(dataDir)
|
parentDir = dirname(directories.dataDir)
|
||||||
docsFolder = documents_folder()
|
docsFolder = documents_folder()
|
||||||
portableConfigFilePath = os.path.join(parentDir, ini)
|
portableConfigFilePath = os.path.join(parentDir, ini)
|
||||||
portableSchematicsDir = os.path.join(parentDir, u"MCEdit-schematics")
|
portableSchematicsDir = os.path.join(parentDir, u"MCEdit-schematics")
|
||||||
@ -419,7 +418,7 @@ else:
|
|||||||
schematicsDir = fixedSchematicsDir
|
schematicsDir = fixedSchematicsDir
|
||||||
portable = False
|
portable = False
|
||||||
|
|
||||||
filtersDir = os.path.join(dataDir, "filters")
|
filtersDir = os.path.join(directories.dataDir, "filters")
|
||||||
if filtersDir not in [s.decode(sys.getfilesystemencoding())
|
if filtersDir not in [s.decode(sys.getfilesystemencoding())
|
||||||
if isinstance(s, str)
|
if isinstance(s, str)
|
||||||
else s
|
else s
|
||||||
@ -434,4 +433,4 @@ if portable:
|
|||||||
else:
|
else:
|
||||||
jarStorage = ServerJarStorage()
|
jarStorage = ServerJarStorage()
|
||||||
|
|
||||||
items.items = items.Items(join(dataDir, "pymclevel", "items.txt"))
|
items.items = items.Items(join(directories.dataDir, "pymclevel", "items.txt"))
|
||||||
|
699
renderer.py
699
renderer.py
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user