947 Commits

Author SHA1 Message Date
David Vierra
dbbacea7a8 Progress dialog is once again cancelable, and has a minimum time before displaying. 2015-10-06 17:10:48 -10:00
David Vierra
7fd974426e SimplePerformCommand uses showProgress to show commitUndo progress.
Makes Flood Fill tool show progress when committing undo.
2015-10-06 17:09:57 -10:00
David Vierra
95fceb8af5 Add some docstrings to editorsession.py 2015-10-05 18:57:14 -10:00
David Vierra
fba87789f7 Schematics dropped into the editor window have a more sensible initial position 2015-10-05 15:32:00 -10:00
David Vierra
21df3c4b94 Add top toolbar buttons for Save and Fill
Save icon changes to indicate whether there are unsaved changes. The icon does not distinguish between modifying and non-modifying (e.g. selection size) commands.
2015-10-04 17:29:49 -10:00
David Vierra
41a1cbb90f Fix zero division when printing copy stats. 2015-10-04 13:12:59 -10:00
David Vierra
c5e2b121d8 Move tool finally has "Copy Air" option. 2015-10-04 00:32:02 -10:00
David Vierra
a6d754a2c4 Fix rotated objects not moving with their box handle. 2015-10-04 00:31:43 -10:00
David Vierra
1131632260 Add explicit copyAir flag to copyBlocksIter 2015-10-04 00:30:47 -10:00
David Vierra
e24aebd2d0 Fix clone tool not resetting offset when used a second time. 2015-10-04 00:30:30 -10:00
David Vierra
dbc62d5a7f Make imported objects not sunken one block into the ground. 2015-10-04 00:30:14 -10:00
David Vierra
c5718770f5 Set EditorSession.currentDimension earlier to try to fix a weird AttributeError 2015-10-04 00:29:56 -10:00
David Vierra
6dd9e6fedd Allow files to be imported by drag and drop into editor window. 2015-10-04 00:29:31 -10:00
David Vierra
cb88acf905 Rewrite CloneTool to use PendingImportNode's mouse event handling. 2015-10-03 01:17:14 -10:00
David Vierra
23f71061fc Do not emit handleBoundsChangedDone for non-changes. 2015-10-03 01:16:10 -10:00
David Vierra
1167d930ed PendingImportNode now forwards mouse events to its handleNode 2015-10-03 01:15:57 -10:00
David Vierra
63d02760f0 Greatly simplify extractSchematicFromIter 2015-10-03 00:09:22 -10:00
David Vierra
911aa28470 Move tool now imports the transformed form of the moved object
... as you would expect from looking at the live preview of the moved object. Also, intermediate schematics are skipped when the source and destination boxes do not intersect.
2015-10-03 00:08:54 -10:00
David Vierra
9be6563ba2 transform_test now tests selection, rotation, and selection+rotation 2015-10-02 14:03:46 -10:00
David Vierra
16565712d9 Move tool now displays live previews of the rotated blocks 2015-10-02 14:03:30 -10:00
David Vierra
2c531925fb PendingImport now has rotate/scale and transformedDim attributes
transformedDim is recreated whenever the rotate/scale are changed. Its chunks are lazily evaluated.
2015-10-02 14:02:49 -10:00
David Vierra
fc0080015d Fix movable-only BoxHandles not actually being movable. 2015-10-02 14:02:00 -10:00
David Vierra
d6f5b98b95 RotateNode allows degrees and axis to be changed. 2015-10-02 14:01:41 -10:00
David Vierra
986a4fb4fe Refactor RotationTransform, create SelectionTransform 2015-10-02 14:01:08 -10:00
David Vierra
c96a8565bc Use Tool action now has "any" modifiers.
May have undesirable side effects.
2015-10-01 22:34:40 -10:00
David Vierra
37bd7e098a BoxHandle now uses explicit isMoving, isCreating, isResizing flags instead of inferring them from other state 2015-10-01 22:31:20 -10:00
David Vierra
db584cf563 Resizing selection box only triggers immediate chunk loads when mouse button is released. 2015-10-01 22:30:20 -10:00
David Vierra
a5e54c62b5 Refactor drag-to-move out of MoveTool and into BoxHandle.
This is a bit icky - PendingImportNode emits a signal that MoveTool handles by moving the "current import", instead of by moving the PendingImportNode's import.

TODO: Give CloneTool the same treatment.
2015-10-01 22:28:37 -10:00
David Vierra
5deb2f2723 Refactor drag-to-move out of MoveTool and into BoxHandle.
This is a bit icky - PendingImportNode emits a signal that MoveTool handles by moving the "current import", instead of by moving the PendingImportNode's import.

TODO: Give CloneTool the same treatment.
2015-10-01 21:29:25 -10:00
David Vierra
cc569bce1c Refactor PendingImportNode to contain a translate node rather than be one 2015-10-01 17:49:02 -10:00
David Vierra
a91d6b3441 Create rotation input widget in preparation for live rotation. 2015-10-01 17:11:48 -10:00
David Vierra
f5c860f342 Move modifier condition to ViewAction.matchModifiers, handle modifiers==None as "any"
TrackingMouseAction now has "any" modifiers.
2015-10-01 17:11:20 -10:00
David Vierra
dd195c34e8 Refactor BoxHandle in preparation of making it movable. 2015-10-01 17:10:18 -10:00
David Vierra
4015ec033a Add RotationTransform, a proxy dimension that rotates blocks.
Blocks are rotated as their sections are accessed, making this proxy responsive for live editing.
2015-10-01 00:04:37 -10:00
David Vierra
c0e403ed6a TextureAtlas can handle worlds without filenames 2015-10-01 00:03:28 -10:00
David Vierra
257cd3f7fc ChunkUpdate.areaLights returns an appropriately-sized array for lights
... when the level in question has no light arrays.
2015-10-01 00:03:18 -10:00
David Vierra
50c441fa29 displaySchematic updates as chunks are loaded instead of preloading chunks 2015-10-01 00:02:38 -10:00
David Vierra
bc70ff8e67 displaySchematic accepts either a schematic or a dimension 2015-10-01 00:02:21 -10:00
David Vierra
b35e61a670 WorldView.__str__ can handle dimensions without filenames or dimension names. 2015-10-01 00:01:48 -10:00
David Vierra
ee699a1674 WorldEditor.importSchematic[Iter] now accepts either a schematic or a dimension 2015-10-01 00:01:13 -10:00
David Vierra
e814841844 Create a SchematicWorldView and a displaySchematic function
SchematicWorldView is a world view variant with specialized controls for orbiting a world from a fixed distance and center point, and zooming in and out on this world.

displaySchematic can be used, even from non-GUI code, to open a window displaying a single world.
2015-09-29 11:24:53 -10:00
David Vierra
bcbf61f82c Fix logic for deciding if a cell needs a light update.
When a light-emitting block is replaced with one that emits less light, and the light drawn into the block from neighbors is greater than the light emitted by the new block, the drawn light should be considered the new light rather than the block's brightness.
2015-09-28 21:02:54 -10:00
David Vierra
eb6facc20c Collect more stats in relight/with_cython and add some comments 2015-09-28 20:58:57 -10:00
David Vierra
7c58091558 Cache absent sections' coords in RelightCtx and handle ValueError from uncreatable sections. 2015-09-28 20:58:16 -10:00
David Vierra
16d3aa19fa Add more logging info to block_copy relights, and skip empty lists 2015-09-28 20:56:36 -10:00
David Vierra
c162faa262 Skip SkyLight update for Nether and End dimensions 2015-09-28 20:52:24 -10:00
David Vierra
32c1c44465 Kill dead code in relight_test.py 2015-09-28 20:51:44 -10:00
David Vierra
a8169378b1 Better handling of named/unknown BlockTypeSets in SchematicFileAdapter 2015-09-28 10:52:15 -10:00
David Vierra
41d5214bb9 Demote lightmap logger to DEBUG 2015-09-23 01:27:06 -10:00
David Vierra
9ef15e0890 Rework test suite to use pytest fixtures in conftest.py 2015-09-22 16:38:06 -10:00