2019-10-30 16:10:15 +00:00
TODO FOLDHAUS
2020-01-19 06:07:59 +00:00
Ground Up Reengineering
- Metaprogramming
2020-02-29 22:43:07 +00:00
x panels metaprogramming
2020-02-02 03:15:04 +00:00
- fix memory layout (remeber to profile before and after)
2020-02-29 22:43:07 +00:00
x get the meta program to generate code in the codebase's directory, no matter where it is
2020-02-02 03:15:04 +00:00
2020-02-05 07:16:41 +00:00
- Make the DLL truly platform agnostic
2020-02-05 07:31:43 +00:00
- math.h: present for trig functions
- windows.h: only thing left is InterlockedIncrement and InterlockedAdd
2020-02-05 06:50:12 +00:00
2020-02-05 07:46:11 +00:00
- Win32 Platform Layer
2020-02-05 08:03:56 +00:00
- Enumerate Directory Contents (you started this in win32_foldhaus_fileio.h)
2020-02-05 07:31:43 +00:00
2020-02-05 20:29:48 +00:00
- Internal Log File
2020-02-06 04:24:34 +00:00
NOTE: This should not be a part of the debug system
2020-02-05 20:29:48 +00:00
- Save output log to a file continuously
- Have a window where we can view the log within the app
- Create a bar that displays the most recent error message
- :ErrorLogging
- Make sure it works without building in Debug Mode
2020-02-02 03:15:04 +00:00
- Buckets & Lists
- Allow them to use memory arenas
- Zero is initialization
2020-01-19 06:07:59 +00:00
- Rendering
- OpenGL 3
- Vertex Buffers
- Layers
- Lighting
- Clipping (with error checking)
2020-03-01 23:55:07 +00:00
- Camera
- pan
- zoom
- leds always face camera
2020-01-19 06:07:59 +00:00
- Sculptures
2020-02-05 20:29:48 +00:00
- store scale in the assembly definition file
2020-01-19 06:07:59 +00:00
- cache led vertex buffers
- custom sculpture update functions (for motion)
- placing sculptures
- editing sculpture files (change universe output)
2020-02-05 06:50:12 +00:00
- led groups & subgroups - defined in file
2020-03-01 23:55:07 +00:00
- motion
2020-01-19 06:07:59 +00:00
- Network
2020-02-05 06:50:12 +00:00
- Handle Error Cases
- Handle connecting a sculpture after launch
2020-01-19 06:07:59 +00:00
- Artnet
- Universe offsets (per sculpture)
- Interface
- Layout functionality
- styling
- text input
- lister with icon options
2020-02-05 20:20:03 +00:00
- panel system: destroy panel by extending it beyond its max, not just its min
2020-01-19 06:07:59 +00:00
2020-02-15 23:06:51 +00:00
- Asset Loading
2020-03-01 23:55:07 +00:00
- Need to figure out which textures are currently in graphics memory and which need to be resubmitted
2020-02-15 23:06:51 +00:00
- images
- icon system - integrate with interface
2020-01-19 06:07:59 +00:00
- Sculpture View
- mouse spatial interaction - handles, and hover for info
- debug capabilities (toggle strip/led/universe colors)
- Animation System
2020-02-29 23:43:06 +00:00
x snapping clips
2020-03-01 23:24:12 +00:00
x convert everything from time to frames
x zoom in and out
2020-01-19 06:07:59 +00:00
- blending between animation
- layers
2020-03-08 00:29:07 +00:00
x display more than one layer
x add/remove layers
2020-01-19 06:07:59 +00:00
- layer masks by sculpture
2020-03-08 00:29:07 +00:00
- blend modes - create a copy of the led's per layer, handle blending outside of patterns
- interface for animation system
- add/remove layers
- select blend modes
- change which layer an animation is on
-
2020-02-29 23:43:06 +00:00
- setting start and end of timeline (how long is a loop)
2020-03-01 23:55:07 +00:00
- clips can have parameters that drive them?
2020-03-08 21:44:28 +00:00
- clips cannot overlap eachother on the same layer
2020-01-19 06:07:59 +00:00
- Node System
- automatic node layout
- blending node layouts
- workspace -> animation block
- generating node workspace as code
- compiling node workspace
- hotload compiled pattern sets
- Serialization
- saving scenes
- saving node graphs
- saving animation timelines
- saving projects
- Settings
- Platform Layer
- Mac Platform Layer
2019-12-28 18:51:47 +00:00
Reimplement Node View
- probably want to take a fresh pass at nodes all together
2019-11-23 00:07:25 +00:00
Assembly -> SACN interface
2019-11-23 07:57:30 +00:00
x you need to rebuild the map from leds -> universes
- x thinking about storing a sparse array of { led_start_index, led_count, led_universe, led_channel }
2019-11-23 00:07:25 +00:00
- that we can iterate over to populate dmx buffers
2019-11-23 07:57:30 +00:00
- need to create a data structure in CreateDMXBuffers that prevents duplication of DMXBuffers.
- - thinking about a dictionary. Key is Universe, length is 256, create parallel arrays as necessary
2019-11-03 21:12:25 +00:00
2019-11-02 17:29:51 +00:00
BUGS
- Typing a period into a float value doesn't register. Problem here is that we arent' translating key presses into characters at the win32 layer. Need to do that.
2019-11-01 11:17:46 +00:00
2019-11-03 21:12:25 +00:00
Switch To Nodes
2019-11-12 04:34:56 +00:00
- BUG: Connect a solid color node to output then try and pick a color. I think temporary node buffers are
- overwriting other data when they get evaluated. Bigger solution is to create a system of working
- led buffers that get assigned to nodes as needed.
- gonna need to remove output node from the node lister
2019-11-11 20:55:59 +00:00
- delete nodes
- - Simplify node storage
- - investigate if node connections can be operated on separately from the node headers
2019-11-12 04:34:56 +00:00
- - UpdatedThisFrame can probably go into each connection
2019-11-11 20:55:59 +00:00
- - Allow insertion/deletion within connection table
- - Allow inerstion/deletion within header table
- - maintain free list of connections and headers
2019-11-03 21:12:25 +00:00
- separate node functionality from drawing the nodes
2019-11-11 20:55:59 +00:00
- - pull node position, size, etc out into a parallel data structure. after split names: node_header, interface_node
- - create separate files: foldhaus_node_engine, foldhaus_node_gui
- - store interface_nodes in binary tree
- - allow panning and zooming around the node canvas
2019-11-03 21:12:25 +00:00
- - Investigate why we're giving nodes bounds :NodesDontNeedToKnowTheirBounds
- selector node (has a list of connections that it can switch between)
- evaluation step (one node at a time)
2019-10-30 16:10:15 +00:00
Hardening
2019-12-28 23:01:02 +00:00
x turn the default sculpture view into an operation mode ? (have to think about this)
2019-11-02 17:29:51 +00:00
- Then we want to think about separating out mode render functions from mode update functions. Not sure its necessary but having something that operates like an update funciton but is called render is weird. Might want some sort of coroutine functionality in place, where modes can add and remove optional, parallel
update functions
2019-10-30 16:10:15 +00:00
- memory visualization
2019-12-26 16:11:48 +00:00
- x Log memory allocations
2019-10-30 16:10:15 +00:00
- separate rendering thread
2020-02-05 07:31:43 +00:00
2019-10-30 16:10:15 +00:00
2019-11-02 17:29:51 +00:00
UI Improvements
- highlight node field under active edit
2019-11-02 20:17:23 +00:00
- Mouse Held Commands
- Actual cursor states
2019-11-11 22:42:14 +00:00
- shift drag to 10x drag speed
2019-11-11 20:55:59 +00:00
- Text editing improvements
- - draw cursor in node field under active edit
- - better/intelligent zero padding
2019-11-02 20:17:23 +00:00
2019-10-30 16:10:15 +00:00
Application
- More efficient HSV <-> RGB
Development
- Fix your scope time tracker to account for threads.
- Nest scope times so you can see totals/dig in
Optimization
- patterns are asking to be multithreaded
- probably want to convert as much color functions to use u32 Packed Colors
- - Probably want to think about this more. What about supporting different color depths
2019-11-02 17:47:27 +00:00
- for different output devices?
Name
- Splash screen (like blender) (thisll be fun)
- - Image importer (stb image? or find a png > bmp converter for the image you have)
- - Display on startup