552 Commits

Author SHA1 Message Date
David Vierra
54f310a2ac WorldMetaPanel -> WorldInfoPanel 2015-05-22 02:11:36 -10:00
David Vierra
2add2c263e Merge pull request #92 from Rubisk/worldmetadeta
Added World-Metadeta
2015-05-22 02:09:37 -10:00
Rubisk
4a6cc5a013 Fix Translation for World Info Panel 2015-05-17 14:57:22 +02:00
Rubisk
bad40bef77 Updated World Info Panel 2015-05-17 13:35:19 +02:00
Rubisk
914e59ffd3 Added WorldMetaPanel
I need to make it somewhat functional still, but wanted to checkout the
branch for now, I'll stash this commit with the next WorldMetaPanel one.
2015-05-17 00:29:57 +02:00
David Vierra
355346db7b Put a stern warning about imports in main.py
And make sure the shebang line comes first
2015-05-15 21:00:15 -10:00
David Vierra
685031494a Call QCoreApplication.quit instead of raising SystemExit
Not sure it's needed, but it might trigger some cleanup code? Who knows.
2015-05-15 20:58:54 -10:00
David Vierra
3f245f0a48 Revise the introduction to L-systems 2015-05-15 20:58:19 -10:00
David Vierra
5663ad9b71 Add Adrian's City plugin as an example
Could flesh this out and add all kinds of parameters like MINSIZE as options
2015-05-15 00:58:09 -10:00
David Vierra
41ea8634e2 Add LSystemPlugin subclass for Koch Snowflake system 2015-05-15 00:58:09 -10:00
David Vierra
71722a1149 Make plugin rows selectable and not editable 2015-05-15 00:58:08 -10:00
David Vierra
a34957a48b Remove displayName from LSystemPlugin, document displayName in GeneratePlugin
Add class name as fallback for missing displayName
2015-05-15 00:58:08 -10:00
David Vierra
23c274680f LSystemPlugin is now a core component and not a plugin.
Provides a minimal implementation of GeneratePlugin suitable for L-systems.
getOptionsWidget and createInitialSymbol are the only required methods to implement.

Kindly ignore the 'getInputsList' for now, I'm still not sure if it's going to be implemented.
2015-05-15 00:58:07 -10:00
David Vierra
4bb58c1e24 GeneratePlugin: Wrap and adjust docstrings, remove wonky TreeGen 2015-05-15 00:58:07 -10:00
David Vierra
39da111ac9 GenerateTool: Toggling Block or GL Preview no longer updates the other. 2015-05-15 00:58:06 -10:00
David Vierra
65b18f70be Rewrote plugin finding code, added PluginRefs and Plugins dialog
getAllPlugins returns all PluginRefs found so far
detectPlugin tries to find a plugin and returns a PluginRef
findNewPluginsInDir stores a PluginRef for each plugin in the dir

Each PluginRef can be loaded and unloaded, remembers its 'enabled' setting, and provides a displayName and info about loading/unloading errors.

On startup, `findNewPluginsInDir` is called.
Found plugins are retrieved using getAllPlugins and any enabled plugins are loaded.

Plugins dialog lists plugins from getAllPlugins and allows to enable/disable each one.
Reloading is not yet implemented.
2015-05-15 00:58:05 -10:00
David Vierra
ddd6c495c6 Use MCESettings.getNameSpace in camera.py 2015-05-15 00:58:05 -10:00
David Vierra
70a5bd098f Add supporters to About Box as promised in Patreon rewards.
Anyone who donated at least $20 since MCEdit's inception is credited.
2015-05-15 00:58:04 -10:00
Rubisk
eb8e722234 Fixed a bug with the Edit Player button
Fixed a bug causing the Edit Player button to stay looking pressed if
the red X in the top-right got pressed.
2015-05-14 15:21:13 +02:00
David Vierra
ac5e560a1d Keep track of which plugin module is loading plugin classes.
When the plugin module is unloaded, unregister all of its classes.
Plugin modules are also allowed `register()` and `unregister()` functions to use for e.g. monkey-patching MCEdit's internals and other unspeakable things.
2015-05-14 01:30:35 -10:00
David Vierra
c5f1cf49bf Don't pass an itertools.chain to nbt.walk
nbt.walk only accepts TAG_List and TAG_Compound, not arbitrary iterables.
2015-05-14 00:24:35 -10:00
David Vierra
cbd35c1605 Use catchalls to skip over errors while centering views on players
Avoids crashes on badly-formed player data. Should tighten this up to only catch errors in getting the player's position. Should also add a validate function to AnvilPlayerRef (and every other ref, too?)
2015-05-13 22:33:08 -10:00
David Vierra
d10c6440ff Add raw asset for compass overlay 2015-05-13 21:46:25 -10:00
David Vierra
b22bbcb225 GenerateTool handles an empty generatorTypes and a None currentGenerator.
Hopefully this should never happen.
2015-05-13 21:46:00 -10:00
David Vierra
aaefc96f19 Write app version to log file.
Duh.
2015-05-13 21:42:54 -10:00
David Vierra
addfa3eab0 Actually abort creating vertex arrays when models are not cooked. 2015-05-13 21:42:40 -10:00
David Vierra
4c6603371f Encoding pathnames with sys.getfilesystemencoding is always wrong.
On Windows this encodes with the current codepage, which often fails for characters not in the codepage.

On Windows, FS functions accept 'unicode' and encode as UTF-16 for WinAPI
On Mac, FS functions accept 'unicode' and encode as UTF-8 for FS API
On Linux, filenames are byte strings and encoding is only a convention. FS functions encode 'unicode' according to locale. On Linux, it is possible to have files whose names cannot be decoded in any character set!
2015-05-13 21:36:31 -10:00
David Vierra
d330a22453 Line draws GL lines with endpoints at block centers 2015-05-13 04:52:40 -10:00
David Vierra
c285151bcf Line now has a constructor Line(p1, p2) 2015-05-13 04:52:25 -10:00
David Vierra
9a440c92cf Fill now has a constructor Fill(box, blocktype) 2015-05-13 04:52:16 -10:00
David Vierra
60a2a83a7b applyReplacements correctly handles symbols without a 'replace' 2015-05-13 04:51:57 -10:00
David Vierra
d203639bb0 Convenience added to GenerateTool
GL preview is enabled by default
Undoing a Generate returns the bounding box to the tool
generateInSchematic is provided with the original bounding box
clearSchematic does not remove schematicBounds (should be called generateBounds or something)
2015-05-13 04:51:32 -10:00
David Vierra
d67f115a5c Auto-format analyze.py and analyze.py
Increase default size of analyze dialog
Remove dead code
Improve comments
2015-05-13 01:32:17 -10:00
David Vierra
6d0e89f821 Merge pull request #85 from Rubisk/develop
Updated Analyze UI
2015-05-13 01:20:54 -10:00
David Vierra
66f8c17fff Add an experimental plugin to edit items in StorageDrawers via the Block Inspector.
Handles exactly one type of drawer, so not very useful at the moment.
2015-05-13 01:12:40 -10:00
David Vierra
4e9a020f0f Add a somewhat flaky Generate plugin for L-systems that currently only runs the Koch Snowflake system.
This plugin will probably not live for very long as it seems better to make Generate plugins directly for different L-systems.
2015-05-13 01:11:51 -10:00
David Vierra
16460f69d7 Add what appears to be an L-system library for 3D objects
Objects can be rendered either as Minecraft block placement commands or as OpenGL rendering commands in the form of scenegraph Nodes.

The huge block of text at the top probably doesn't do much to explain the value of the system, so examples and tutorials will be coming soon.
2015-05-13 01:08:00 -10:00
David Vierra
793fb44daf Add plugins.py with several registration points for plugin classes to be inserted. 2015-05-13 01:02:11 -10:00
David Vierra
6b83537f3e Skip files in mods dir that are not files. 2015-05-13 00:31:53 -10:00
David Vierra
f9a6dba4b6 Remove same size check in generateNextSchematic
This was stopping generator options from triggering a regen. Come back to this when generated object previews can be moved.
2015-05-12 23:57:18 -10:00
David Vierra
1be1d81fc1 Add TreeGen back in so GenerateTool doesn't crash on zero generator classes.
xxx allow zero generator classes
2015-05-12 23:57:17 -10:00
David Vierra
cd7b75d832 Load plugins from a "plugins" folder when frozen or the src/plugins folder when running from source. 2015-05-12 23:57:17 -10:00
David Vierra
3477b59d46 ItemType.name was changed to displayName previously 2015-05-12 23:29:38 -10:00
David Vierra
fe64ea61a5 Added a whole bunch of variations on Bresenham's algorithm and a few tests.
The tests check if any of the variations change the algorithm's output to see if I broke anything while making the 3D and fixed-point/scaled variants.
2015-05-12 23:27:23 -10:00
David Vierra
01e08a2d9c Fleshed out the Generate tool quite a bit.
Generate plugins may now provide a scene node for OpenGL previewing instead of Minecraft block previewing
Generate plugins may now generate directly into a world instead of via an intermediate schematic
Documented the functions of the GeneratePlugin class
TreeGen is now broken.
Added "Live Preview", "Block Preview" and "GL Preview" checkboxes.
Added an updatePreview method for plugins to call, e.g. when plugin options change.
Exceptions while running a generator are now caught
Exceptions during Live Preview will disable it.
2015-05-12 23:26:18 -10:00
David Vierra
89e01a809e Split QuadVertexArrayBuffer off of VertexArrayBuffer 2015-05-12 15:59:30 -10:00
Rubisk
39c85d74d0 Made analyze file writing support unicode
(and stopped it from crashing)
2015-05-12 17:30:06 +02:00
Rubisk
b35830a73a Added option to export analysation results 2015-05-12 16:34:52 +02:00
Rubisk
74c6db1e75 Fixed some small issues with the Analyze Output Panel 2015-05-12 14:09:13 +02:00
Rubisk
eed2c52b78 Updated analyze UI
Implement all of CW's feedback/change requests, and updated the analyze
UI.

Next up is export buttons.
2015-05-12 13:38:58 +02:00