freenode/#shirakumo - IRC Chatlog
Search
19:21:16
plathrop
I don't know about "clean"... but can rendering objects "register" with the component and when the component is dirtied it "tells" all the renderers? Probably/possibly too slow...
19:25:16
Shinmera
There is a REGISTER function that must be called on every renderable with every renderer.
19:25:56
Shinmera
But I'd rather not have to keep a back link to every renderer from every renderable, because that would make it hard to discard renderers.
20:25:17
Shinmera
The only other idea I have is to provide a function the components can call, which the user must fill in to handle the dirtying logic (going through the renderers)
20:32:55
plathrop
Well, instead of keeping a back link to the renderer, have the renderable keep a hash of some renderer-id to a bit. When it is dirty it sets all the bits in that. When a renderer wants to see if it needs to redraw, it looks itself up in the renderable's dirty hash, redraws, and clears the bit?
20:34:49
Shinmera
yes, I thought of something similar, with just having a list of "fresh" renderers that they pushnew to after drawing
20:35:44
plathrop
It's not beautiful, I admit, but unless you are creating/discarding a really really large number of renderers, the stale refs shouldn't be that big a deal
20:37:42
Shinmera
some renderers might need a cleanup protocol to stay sane, but that's not part of the core.
20:38:17
plathrop
I can't think of a cleaner way than the hash, and just not worry too much about the stale keys. :-/
20:38:43
Shinmera
yeah, it's either: call out to user-implemented function, or use a weak table/weak vector.
20:39:52
Shinmera
same caveat as with all weak pointers: it's completely unpredictable when the pointer will be culled.