[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548] Looking good so far. A few comments:
- It seems to have very hard coded ideas about what values are allowed for what attributes. It's fine to display things in red but it should at least allow you to enter whatever you want - at the moment, it just reverts to whatever value you had before. Specific examples: text attributes for new text I've defined in text.xml. Rectangle attribute tag "sticky" should be allowed.
All valid references are loaded on start up, and updated dynamically for those you can create with the editor (goo, level images...). Since it is not possible to edit text at the current time you must restart the editor. Guess a reload text button should be added in the mean-time.
To my knowledge, 'sticky' is not a valid tag value (it is a material). Correct me if I'm wrong. Valid tag values were extracted from existing levels.
I guess with the new warning system, it should be possible to allow invalid value to be input. Though, this can make things tricky: where to display an item at position 'abc' ?
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Geometry with embedded images don't display at all - not even the rectangle itself is shown. Example: YouHaveToExplodeTheHead, killWheel contains the robot head image but neither the image nor the rectangle display.
Hmm, it's trying to display the image: Warning: invalid image reference: "('IMAGE_SCENE_YOUHAVETOEXPLODETHEHEAD_HEAD',)"
Seems there is a bug in the reference resolution for this one. Strange that this bug only trigger in this case.
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Signposts are hard to position and rotate with no feedback, plus the SIGNPOST_BLAH text obscures half the level. Could you not just display the image in the <signpost> image attribute instead?
Makes sense. It was nice for visualization but it is not for edition.
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Likewise, particle emitter text is huge and doesn't indicate the actual location. Perhaps a circle or X or something at that point.
Hmm, I don't find it that big. Even on "Going up" it is reasonnable. Actual position is top-left corner of the text, unless there is no position. In that case it is placed at an hard-coded position, which cause text to be overlapped if the level as multiple global particles.
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- No way to add new elements if you don't have an existing instance to copy and paste - I assume you are already working on this.
??? This is supported since 0.3: just right click an element in the tree view to add a child element. Only valid child elements are proposed, hence when adding a Goo Ball for example, you need to right-click on the root node.
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Can you make it able to work with unencrypted XML files? Or at least have a simple built-in textbox as a simple XML editor? At the moment you have to close down wogeditor, decrypt, edit XML, encrypt, and open it again, if you want to make changes that wogeditor doesn't support.
Just use copy and paste. Clipboard format is XML.
It was documented in 0.4 NEWS. I recommend that you read NEWS.txt. It's not very long, but contains interesting trick like this one.
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- It doesn't seem to pick up changes in the level file on disk if I close and reopen the level; I have to close down the program and restart it.
Added to the todo list, level are kept in memory regardless of what is displayed.
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Multiple-selection would be extremely useful, e.g. when I have to move a whole structure by a certain amount.
But also very complex to implement. There are plenty of corner cases to handle: selection could mix elements from different tree view, top-level element and element nested in composite... Very complex to handle all this correctly, and I'm not even talking about implementing the move tool ;-)
You should try using compositegeom it you have a pack of element that you move often.
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Would it be possible to make the mouse wheel zoom in to the location where the mouse is? Currently it zooms to the centre of the image. Not a big priority.
Hmm, I though I added the flag in Qt GraphicsView to do that... Guess I messed up. Added to todo...
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- It should definitely NOT automatically save when you close the window. At least ask the user. Since there's no undo, and since it saves automatically on close, the only way to revert a huge mistake right now is to restore from backup.
At the current time, save occurs only when testing a levelor clicking the save button or pressing Ctrl+S.
I would have one hell of troubleshooting the rotate/scale tool if I couldn't get the same initial level for each test!
What is your sceneario to have save occurs automatically?
Thanks for you feedback !
|
Hey Zark,
First off apologies for not reading the NEWS file. As a developer I am ashamed :-)
[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688] All valid references are loaded on start up, and updated dynamically for those you can create with the editor (goo, level images...). Since it is not possible to edit text at the current time you must restart the editor. Guess a reload text button should be added in the mean-time.
To my knowledge, 'sticky' is not a valid tag value (it is a material). Correct me if I'm wrong. Valid tag values were extracted from existing levels.
OK makes sense, I just rechecked and it is showing the text it as a valid value now.
You're right about sticky, I can't remember what it was that I was trying to set now, it was something I'd seen on a compositegeom but wasn't on any existing game rectangle I think. In general though for "tag" you should allow any value, since you can combine them with commas.
[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688] I guess with the new warning system, it should be possible to allow invalid value to be input. Though, this can make things tricky: where to display an item at position 'abc' ?
I think it's OK to still prevent invalid values for things that are known to absolutely have a certain type, e.g. points, colours, booleans, doubles.
The rest should be free-form.
But for all attributes (including points etc) it should be possible to enter an empty value. For example I can't currently delete the "pos" attribute from a "particles" element.
[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688] Hmm, I don't find it that big. Even on "Going up" it is reasonnable. Actual position is top-left corner of the text, unless there is no position. In that case it is placed at an hard-coded position, which cause text to be overlapped if the level as multiple global particles.
Maybe just my level design then, but still I think better to show the actual position, perhaps with a circle with an X inside it, so you can see the actual point. Top left is a bit hard to judge sometimes.
[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688] ??? This is supported since 0.3: just right click an element in the tree view to add a child element. Only valid child elements are proposed, hence when adding a Goo Ball for example, you need to right-click on the root node.
OK yes I'm an idiot, sorry. I was right clicking on the elements in case it was on the context menu there, but I didn't think to right click on the root itself.
Along these lines, it's really important to be able to re-order elements. Or even, as 2dboy did, just have all the elements in a fixed order. e.g. balls before strands. In early design I found myself copying and pasting large numbers of elements just to order them as I wanted.
[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688] [quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- It doesn't seem to pick up changes in the level file on disk if I close and reopen the level; I have to close down the program and restart it.
Added to the todo list, level are kept in memory regardless of what is displayed.
---snip---
At the current time, save occurs only when testing a levelor clicking the save button or pressing Ctrl+S.
I would have one hell of troubleshooting the rotate/scale tool if I couldn't get the same initial level for each test!
I think this is the same problem, keeping it in memory after the window is closed. I'll let you know if I reproduce the problem.
[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688] [quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Multiple-selection would be extremely useful, e.g. when I have to move a whole structure by a certain amount.
But also very complex to implement. There are plenty of corner cases to handle: selection could mix elements from different tree view, top-level element and element nested in composite... Very complex to handle all this correctly, and I'm not even talking about implementing the move tool ;-)
You should try using compositegeom it you have a pack of element that you move often.
In this particular instance it was a set of balls. I have a bunch of balls in a pre-built structure that I had to move by hand. Eventually I just centred my ball structure around (0,0) and moved everything else instead :-) but I still think it would be very useful.
One more:
New reproducable bug: I open my JingleBalls level, press T, move an element, close the level, then Ctrl+L and open it again. Here is the console output:
<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br /> File "levelview.pyc", line 1004, in timerEvent<br /> File "metaworld.pyc", line 172, in set_native<br /> File "metaworld.pyc", line 90, in set<br /> File "metaworld.pyc", line 1798, in set<br /> File "louie\dispatcher.pyc", line 352, in send<br /> File "louie\robustapply.pyc", line 56, in robust_apply<br /> File "levelview.pyc", line 1144, in __on_element_updated<br /> File "levelview.pyc", line 1182, in refreshFromModel<br /> File "levelview.pyc", line 1135, in _on_selection_change<br /> File "levelview.pyc", line 988, in _update_tools_handle<br /> File "levelview.pyc", line 681, in create_tools<br /> File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br /> File "levelview.pyc", line 1004, in timerEvent<br /> File "metaworld.pyc", line 172, in set_native<br /> File "metaworld.pyc", line 90, in set<br /> File "metaworld.pyc", line 1798, in set<br /> File "louie\dispatcher.pyc", line 352, in send<br /> File "louie\robustapply.pyc", line 56, in robust_apply<br /> File "levelview.pyc", line 1144, in __on_element_updated<br /> File "levelview.pyc", line 1182, in refreshFromModel<br /> File "levelview.pyc", line 1135, in _on_selection_change<br /> File "levelview.pyc", line 988, in _update_tools_handle<br /> File "levelview.pyc", line 681, in create_tools<br /> File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br /> File "levelview.pyc", line 1004, in timerEvent<br /> File "metaworld.pyc", line 172, in set_native<br /> File "metaworld.pyc", line 90, in set<br /> File "metaworld.pyc", line 1798, in set<br /> File "louie\dispatcher.pyc", line 352, in send<br /> File "louie\robustapply.pyc", line 56, in robust_apply<br /> File "levelview.pyc", line 1144, in __on_element_updated<br /> File "levelview.pyc", line 1182, in refreshFromModel<br /> File "levelview.pyc", line 1135, in _on_selection_change<br /> File "levelview.pyc", line 988, in _update_tools_handle<br /> File "levelview.pyc", line 681, in create_tools<br /> File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br /> File "levelview.pyc", line 1004, in timerEvent<br /> File "metaworld.pyc", line 172, in set_native<br /> File "metaworld.pyc", line 90, in set<br /> File "metaworld.pyc", line 1798, in set<br /> File "louie\dispatcher.pyc", line 352, in send<br /> File "louie\robustapply.pyc", line 56, in robust_apply<br /> File "levelview.pyc", line 1144, in __on_element_updated<br /> File "levelview.pyc", line 1182, in refreshFromModel<br /> File "levelview.pyc", line 1135, in _on_selection_change<br /> File "levelview.pyc", line 988, in _update_tools_handle<br /> File "levelview.pyc", line 681, in create_tools<br /> File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br /> File "wogeditor.py", line 498, in editLevel<br /> File "wogeditor.py", line 502, in open_level_view_by_name<br /> File "wogeditor.py", line 273, in selectLevel<br /> File "louie\dispatcher.pyc", line 352, in send<br /> File "louie\robustapply.pyc", line 56, in robust_apply<br /> File "levelview.pyc", line 1153, in _on_active_world_change<br /> File "levelview.pyc", line 1182, in refreshFromModel<br /> File "levelview.pyc", line 1135, in _on_selection_change<br /> File "levelview.pyc", line 988, in _update_tools_handle<br /> File "levelview.pyc", line 681, in create_tools<br /> File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />
And finally, a suggestion for further discussion. Be able to work on unencrypted XML files. At the moment it's a bit of a chore to go back and forth between wogeditor and gootool for deployment, particularly if you're using gootool for other resources. e.g. right now if I want to edit my custom ball, I have to save wogeditor, close, decrypt, copy unencrypted XML back to my goomod source directory, edit my ball, recompile my goomod, install with gootool, reload wogeditor. I think we can make the whole process easier for level authors and I'd like to discuss better possibilities for integration here. Do you have AIM/MSN/YahooIM/MyspaceIM/GoogleTalk? hit me up by PM.
best,
-davidc |