Jump to content
The Dark Mod Forums

Itches, Glitches & Anything Else...


Recommended Posts

However, what I don't understand is why just selecting the keypair causes the pause at all. I understand the pause when opening the dropdown (it has to prepare the list), but not the pause just for clicking the keypair; that's unfriendly.

 

There is no way (AFAIK) to only populate the combo box when it is expanded; it has to be populated when it is first made visible. That said, I thought all of this auto-populating combo box stuff was inactivated some time ago due to the performance problems you are encountering, but maybe it was only the entity class property editor that I modified.

 

EDIT: Now it comes back to me; I did modify the entity class property editor to use a button and a dialog instead of a dropdown, and intended to do the same with the target property editor (i.e. it would pop up a new dialog with a tree of all entities) but never got round to it.

Link to comment
Share on other sites

I had some time to do some DarkRadiant coding during my vacation, so there are a few changes in SVN (after doing a painful patch-commit-patch-commit process starting from one large .diff file to separate the commits).

 

- Speakers are drag-resizable

- Lights are showing their models if the "model" property is set

- edit: Some entities like func_emitters can be rotated in all room directions ("editor_rotatable").

- Lights and speakers can be resized with their origin fixed

- EntityInspector is updating its keyvalue display on undo/redo

- ESC-to-cancel-operation was not working in Embedded layout

- Removed all home-grown containers like Array, Single, UniqueSet and replaced them with STL items

- Refactored selection workzone code

- tons of minor stuff

 

Soon it's time for the next 0.10.0 release, it's been a while since 0.9.12.

Link to comment
Share on other sites

Any chance of a snapshot?

Hm, I'd rather upload the actual release, it won't be long.

 

@OrbWeaver: do you have time this weekend for the 0.10.0 release? I can handle the Win32/Win64 and website part, I guess.

Link to comment
Share on other sites

- Speakers are drag-resizable

- Lights are showing their models if the "model" property is set

- Lights and speakers can be resized with their origin fixed

 

Excellent, those are three issues which I thought about quite recently as being seriously needed (I had a look at the draggable speaker stuff myself, but didn't have time to actually understand the code and didn't want to just copy-and-paste from the light classes).

 

@OrbWeaver: do you have time this weekend for the 0.10.0 release? I can handle the Win32/Win64 and website part, I guess.

 

Sounds fine with me, it certainly has been rather a long time since the last release.

Link to comment
Share on other sites

- edit: Some entities like func_emitters can be rotated in all room directions ("editor_rotatable").

 

Does this actually translate to the game world? If I rotate a smoke particle, will it point in that direction in game? If so then :wub: you rock!

I always assumed I'd taste like boot leather.

 

Link to comment
Share on other sites

Greebo -- I see you have been doing some work on the selection system. There is a problem somewhere in the ownership of INodePtrs which means that light entities that are deleted are not actually disposed of (and hence are not removed from the renderer), which cases phantom lights to appear at the origin whenever you delete a light. I don't know whether this is anything to do with the selection system or not (debugging shared_ptr ownership is hard), but if you see anything that might be relevant please let me know.

Link to comment
Share on other sites

- Lights are showing their models if the "model" property is set

Wait. Does that mean that for example the combo entity torch thingies will show a light radius? :blink:

 

Edit: err, wait maybe that was the other way around... that the torch entities tried a property that would show radius, not lights having models. I'm confused and can't remember the discussion. What does this do?

Link to comment
Share on other sites

Greebo -- I see you have been doing some work on the selection system. There is a problem somewhere in the ownership of INodePtrs which means that light entities that are deleted are not actually disposed of (and hence are not removed from the renderer), which cases phantom lights to appear at the origin whenever you delete a light. I don't know whether this is anything to do with the selection system or not (debugging shared_ptr ownership is hard), but if you see anything that might be relevant please let me know.

This applies to render mode only, I understand correctly? I'll look into it.

 

Wait. Does that mean that for example the combo entity torch thingies will show a light radius? :blink:

No. It's for lights having their own model spawnargs (not particles, although these are technically the same as models). Like say, you create a light and then apply the streetlamp model to it. In-game the light will appear as model, and you can pass the light brightness down to the model shaders. I.e. if you switch off the light, the model shaders will go dark too (assuming they have the colored keyword set). I'm using this in the gathers map for my streetlight array.

 

(You can even assign sounds to lights, and let the light textures flicker along with the sound shader volume.)

Link to comment
Share on other sites

This applies to render mode only, I understand correctly? I'll look into it.

 

The effect is only visible in render mode, because the light node emits actual light, but I suspect the problem with INodePtrs not being disposed on removal is a more general one (although I haven't done much investigation).

 

Two things I thought of doing were (1) making the SelectionSystem store only weak_ptrs instead of shared_ptrs, since the SelectionSystem should never keep nodes alive past their removal from the scenegraph, and (2) removing the Node::setSelf() code and using the boost::enable_shared_from_this functionality instead. Although these refactorings are probably good from a design point of view, I don't actually know that either of these will solve this problem however.

Link to comment
Share on other sites

I can imagine what's happening, as the scene::INodePtrs are not actually deleted, the TraversableNodeSet is emitting a copy of itself to the UndoSystem, where it's stored in the Undo Stack and restored on demand.

 

To fix the behaviour you described, I think it's necessary to hook into the LightNode::instantiate() and LightNode::uninstantiate() methods, which are controlled when the node enters or leaves the actual scenegraph. Deleted nodes are uninstantiated and when they are re-inserted into the scenegraph, instantiate() is invoked again. So, I assume the lightnode needs to detach itself from the renderer on uninstantiate(). I'll check it out sometime today.

 

edit: saw your edit. I'll check out the boost::enable_shared_from_this stuff, this seems to be exactly what I was needing back then. The setSelf() stuff was only a workaround for my problem. Good info. :)

Link to comment
Share on other sites

I can imagine what's happening, as the scene::INodePtrs are not actually deleted, the TraversableNodeSet is emitting a copy of itself to the UndoSystem, where it's stored in the Undo Stack and restored on demand.

 

Ah, OK, I didn't consider the UndoSystem. So the non-destruction of nodes is actually correct behaviour, not a bug.

 

To fix the behaviour you described, I think it's necessary to hook into the LightNode::instantiate() and LightNode::uninstantiate() methods, which are controlled when the node enters or leaves the actual scenegraph. Deleted nodes are uninstantiated and when they are re-inserted into the scenegraph, instantiate() is invoked again. So, I assume the lightnode needs to detach itself from the renderer on uninstantiate(). I'll check it out sometime today.

 

That makes sense: the actual problem is not that the nodes are not destroyed, but that the light only unregisters itself on destruction. I was thinking about adding a "hack" whereby a method would be called on scenegraph removal in this way, but it sounds like there is already such a method by design.

Link to comment
Share on other sites

Yes, the method already exists. It has its origins in the old GtkRadiant node+instance design, hence the name. I shall rename that method to onSceneGraphInsertion() and onSceneGraphRemoval() to better reflect what it's doing.

Link to comment
Share on other sites

Having a prob with the 0.10 release where I can't get split views to go any larger than this (image attached). Usually I shrink the bottom two all the way down so that I have a 2-split, like this.

 

Worse, though I haven't reproduced it yet: on the first launch, I tried to size a bottom window all the way to the top bar, and DR crashed out.

post-58-1245615352_thumb.jpg

Link to comment
Share on other sites

Having a prob with the 0.10 release where I can't get split views to go any larger than this (image attached). Usually I shrink the bottom two all the way down so that I have a 2-split, like this.

 

Being able to drag the split panes to zero and hide the child widget was actually a bug, which was causing problems in the entity inspector. I did not consider that people might want to intentionally do this for the splitpane windows however.

 

This could probably be fixed by giving the 2D views a very small (or zero) minimum size.

Link to comment
Share on other sites

Yes please, I'd definitely say have this as permitted behavior. I have been sizing them 'out of the picture' for quite a long time now, and in fact our (for $$) software at work even allows for that, hiding of panes by sizing to zero.

 

And/or are you saying this can be jury rigged in the interim? So far I haven't found a setting in the config files...

Link to comment
Share on other sites

Okay. Can we please have this addressed (however works best for the code)? I'm losing at least 12 square inches of (already tight) screen space due to this change, and I doubt I'm the only one affected.

 

[sob story]

There I was terribly excited to dive back in on the trainer section on my new faster (work) system with LCD, with fixed origin light resizing... and then this change happened. :`(

[/sob story]

 

Edit: There's also a semi-reproducable crash associated with this change. I've gotten it 4/4 times before this edit. Get into DR, in split mode. Play with the splitter bars, pushing them to min and max values until the crash occurs. Happens on both of my XP (32bit) systems.

Link to comment
Share on other sites

Come on, are you actually saying you lose your motivation for mapping because of 100 fricking pixels?

 

I can look into the crash, but it will take a while - please report that on the tracker.

Link to comment
Share on other sites

Sigh. Did the fact that I prefaced it with [sob story] not indicate that I was making light of it? I didn't realize it was going to be a point of contention. Maybe if those pixels (100,000 actually, at 1024x768) were taken away from everyone, it'd be taken more seriously. It represents approximately 25% of this user's available workspace.

 

The change causes a significant UI problem. If it can be remedied by simply allowing a size of zero or one, why not simply fix it as a bug?

Link to comment
Share on other sites

The change causes a significant UI problem. If it can be remedied by simply allowing a size of zero or one, why not simply fix it as a bug?

I never said it shouldn't be fixed, but your wording made it sound like you want this done ASAP ("Okay. Can we please have this addressed") - probably a misinterpretation on my behalf, so let's forget about it. :)

 

Is the main intention of resizing it to 0 to have a full camera view? I can whip up a separate window layout ("Camera Only") to which a shortcut could be assigned.

Link to comment
Share on other sites

Is the main intention of resizing it to 0 to have a full camera view? I can whip up a separate window layout ("Camera Only") to which a shortcut could be assigned.

Though it's not my main intention, that would also be very cool and IMO is worth pursuing. I recall setting up some hotkey to switch modes some time back, between my splitpane view and a floating view with full size camera, but IIRC it didn't work flawlessly, so I didn't adopt the method.

 

My main desire when using splitpane view though is just to be able to fully decide how those four views are laid out at any time. With that two-half-size-views method I use, going between full cam, full iso, or any proportion between them is as convenient as dragging a single bar. I drag that bar very frequently and :wub: it.

Link to comment
Share on other sites

Greebo, I have encountered a serious crash (assertion failure) if you create a brush and then drag it so that it would become infinitely thin. The stack-trace is:

 

#0  0x00007fc84dcdefb5 in raise () from /lib/libc.so.6
#1  0x00007fc84dce0bc3 in abort () from /lib/libc.so.6
#2  0x00007fc84dcd7f09 in __assert_fail () from /lib/libc.so.6
#3  0x00000000006469aa in Brush::update_faces_wireframe (this=0x6a5a728, 
wire=@0x6a5a9f8, visibleFaceIndices=0xc39c00, numVisibleFaces=1)
at brush/Brush.cpp:502
#4  0x000000000063447d in BrushNode::evaluateViewDependent (this=0x6a5a440, 
volume=@0x6b9df10, localToWorld=@0x6a5a548) at brush/BrushNode.cpp:436
#5  0x00000000006344a9 in BrushNode::renderWireframe (this=0x6a5a440, 
collector=@0x7fff5c05b8b0, volume=@0x6b9df10, localToWorld=@0x6a5a548)
at brush/BrushNode.cpp:460
#6  0x00000000006345eb in BrushNode::renderWireframe (this=0x6a5a440, 
collector=@0x7fff5c05b8b0, volume=@0x6b9df10) at brush/BrushNode.cpp:383
#7  0x0000000000696d9f in RenderHighlighted::render (this=0x7fff5c05b740, 
renderable=@0x6a5a690) at ./render/frontend/RenderHighlighted.h:23
#8  0x00000000006a2e35 in RenderHighlighted::pre (this=0x7fff5c05b740, 
node=@0x6f79110, parentVisible=VOLUME_INSIDE)
at ./render/frontend/RenderHighlighted.h:63
#9  0x00000000006a2f36 in ForEachVisible<RenderHighlighted>::pre (
this=0x7fff5c05b6e0, node=@0x6f79110)
at ./render/frontend/ForEachVisible.h:58
(More stack frames follow...)

 

I could investigate if needed but I don't know anything about this code -- is this related to any of your recent changes?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recent Status Updates

    • nbohr1more

      Was checking out old translation packs and decided to fire up TDM 1.07. Rightful Property with sub-20 FPS areas yay! ( same areas run at 180FPS with cranked eye candy on 2.12 )
      · 0 replies
    • taffernicus

      i am so euphoric to see new FMs keep coming out and I am keen to try it out in my leisure time, then suddenly my PC is spouting a couple of S.M.A.R.T errors...
      tbf i cannot afford myself to miss my network emulator image file&progress, important ebooks, hyper-v checkpoint & hyper-v export and the precious thief & TDM gamesaves. Don't fall yourself into & lay your hands on crappy SSD
       
      · 3 replies
    • OrbWeaver

      Does anyone actually use the Normalise button in the Surface inspector? Even after looking at the code I'm not quite sure what it's for.
      · 7 replies
    • Ansome

      Turns out my 15th anniversary mission idea has already been done once or twice before! I've been beaten to the punch once again, but I suppose that's to be expected when there's over 170 FMs out there, eh? I'm not complaining though, I love learning new tricks and taking inspiration from past FMs. Best of luck on your own fan missions!
      · 4 replies
    • The Black Arrow

      I wanna play Doom 3, but fhDoom has much better features than dhewm3, yet fhDoom is old, outdated and probably not supported. Damn!
      Makes me think that TDM engine for Doom 3 itself would actually be perfect.
      · 6 replies
×
×
  • Create New...