BUGS [ ] BUG: PART ATTRIBUTE TEXTURE shared with 2 MATERIALS If materials have different sets part attributes, the index uniforms to the shared attribute texture may be incorrect. They are set on the Shader by MePartRendererGl at creation time. They need to be set later, after all sharing is known, or as it is changed [ ] BUG: deleting an editor object leaves the collision boxes [ ] FEATURE: Multiple MePartRendererGls which reference the same MeRenderParts each make OpenGL copies of the part attribute texture. Desirable to have just one OpenGL texture. (Could be a feature of MeITexture or MeIFrameBuffer to reference an MeTextureFloat4 and global mapping of them.) [ ] FEATURE: trickle out Part Deletes, to amortize the large byte-movement across frames [ ] FEATURE: support GlDrawElements. Most meshes can be rather smaller this way. [ ] FEATURE: Let glBuffers stay big, even after deletes, so adding new things back is cheaper, buffer already big enough. [ ] FEATURE: count gl vertex buffers, so we can display usage. [ ] FEATURE: distinguish between “initial state” (params) and “current state” (save game). same? different? [X] FEATURE: in editor, "reset" the world, objects back to startpoints. ### resolved, shift-space resets objects with a thaw(). [X] FEATURE ("Goodies") MetarealObjects need a handle to some functionality, like * Activate ticking for me [D] F: able to wire objects together via parameters, for example to have a button object trigger a door object. [X] F: publish/subscribe for messages between objects Wirefree [ ] FEATURE MetarealObject messages like TouchedByObject (not directly touchedByVolume, but which object) Which PART of an object received the touch (multiple gauds or multiple parts within an MetarealObject) [ ] FEATURE MetarealObjects need to change their position in response to a PUSH [ ] FEATURE MetarealObject parameter type MATERIAL picked from material manager, with sub parameters for individual appearance settings, maybe part attributes named a_Xxx. [ ] FEATURE: collision transitivity — 1 can push 2 can push 3… but everyone stopped if 3 hits a 0. note — a poor-man’s implementation might be to log a shoved movement into the next iteration, causing it to shove back. though that might mess with the whole idea of shove priorities… [X] FEATURE thing parameter for 8-bit bitmap, to describe wall patterns revive the texture-atlas features, so walls can be lovingly hand-crafted. did in april/may 15 [ ] FEATURE: design bitmap “font” for use on walls &c. (ankh font) [ ] FEATURE: quirky 3d version of font, for a few special messages. [X] BUG: sometimes volume collision “snap” moves still occur. Speculation: these occur when a “shove” happens, since it doesn’t register quite the same as a self-provoked move. Thus, the usual “movement vectors” aren’t properly considered, corrections can be in any direction & greater than the original move, &c. (Possibly then relates to collision transitivity above.) 2015-05-15 seems stable for now. Note — in collision volume world, this seems to happen on a get1shove, when movement is 0,0,0. How to test? [ ] FEATURE: support composite, rigid collision volumes [X] FEATURE: bitwall setting for transparent holes (rather than open holes) resolved with glass wall feature [ ] FEATURE: show triangle lines instead of shading, for debug. [X] FEATURE: editor, stop time (stop MetarealObject ticks) ### Resolved, '.' stops the objects ticking BUG: BitWall triangle tiling is prone to small seam-holes. Solve by expanding the triangles juuuust the tiniest bit. (Or maybe the rectangles, since triangle-pairs share corners and may stich perfectly.) [ ] FEATURE: volume triggers may pass through each other, but (mostly) should stop if moving through a wall! needs finer grained prioritization of who cares about whom. [ ] FEATURE: support > 16000 parts for part attributes (by using wide part attr matrix) [ ] FEATURE: in partvolumes, combine affiliated volumes into single parts, so, bigger geometries, fewer parts. implies affiliated collision volumes --> composite volume zones. [ ] FEATURE: center-touch UI, and "touched" message to MetarealObject. [X] BUG: click-detection is very slow render -- reconsider texture unit LRU strategy, or switchable maybe. ### Resolved, assigns texture units sequentially for any assinged texture uniforms. [ ] FEATURE: tag mallocs so we can see generally what they're used for. [ ] FEATURE:: Camera management. Things: render only camera view, not ancillary parts (like crosshairs and right-hand-editor data). Direct drawing to only part of destination buffer. World.goodies could have handle to register camera view Camera displays could have params for which part of the global camera view to show Where do camera/display effects happen? (maybe in camera object params) How do we re-set camera matrix & eye pos for camera draws? in app with multiple rw.draw OR as part of a render sequence Possibly useful to have render sequence reference another render sequence? ... with overrides ...? Recurring dev error of adding a material, but forgetting to add it to the render sequences, mitigate with wrapper to addMaterial(material, bool shouldRenderMainThisOne)? [X] CHANGE: rw->renderReport -- add getRenderReport and clearRenderReport, and renderReport includes how many draws it did. Cumulative per render. [ ] F: rw->show/hide individual parts or gauds, for multiple cameras. That is, part may be hidden on 1 camera, visible on another. (Does rw need concept of cameras?) Resolved -- does Collections address this fully? [ ] FEATURE: read level from nearby, not necessarily inside app resource. able to load/save different level files, for testing. [X] FEATURE: consider base default MetarealObject, possibly a resizable cube with optional physics. [X] FEATURE: editor "copy" and "paste", cmd-c to snag name/value pair, pin to bottom of info rect, cmd-v to apply to current item. [X] F: Would be nicer API to move Volumes for everyone, optionally mitigated by a collision volume. So every object (including static nonphysical zones and triggers) would have volume, and some (walls and movers) would have a collision volume, as well. [S] F: transparency shader needs to know its own output pixel dimensions for source sampling. Make it a standard uniform (or render step). resolved: uniform vec2 meScreenSize provided. [-] F: axis alignment -- when pivoting left & right, go around "logical Y" axis closest to visual "up". At same time, pivot on local Z to bring logical Y closer to screen Y (when turning or moving). partial -- Y goes around logical up. Tilt-correction-over-time still missing [ ] F: Something to manage screen states & transitions (fades), each with a renderworld (and handlers?). Shortcuts for copying buffers & stuff. [ ] F: mind needs way to reset body to start position IDEA: Big objects and matching Tiny objects, the “goal” is to put the tiny ones in the big ones. One of the big spaces. 2016-12-28. 2016-12-21. 1. The world exists even when you can’t see it. 2. It is satisfying to watch the process unfold. 3. Indirect evidence is only useful when you understand it. 4. Indirect evidence is only fun when you believe it. 5. When you almost understand, it is challenging. 6. When you cannot understand, it is frustrating. 7. When you misunderstand, it should be funny. 8. When you finally understand, it should be joyous. 2017-02-08 Tucumcari, NM: The Tristar Motel 06 City Center Motel here in Indio. 09 Henryetta, OK, Green Country Inn