diff --git a/todo.txt b/todo.txt index d2c9353..cf5c90b 100644 --- a/todo.txt +++ b/todo.txt @@ -1,14 +1,5 @@ TODO FOLDHAUS -Pick Up Where You Left Off -- In a node, you aren't filling in all the LED lists. Some of them (the outputs) are empty -when you reach the pattern proc because theyre outputs. -SOLUTION: Probably want to take the led lists out of each set of colors and just pass them in -once per data struct. - - - - Name x lumen lab - Splash screen (like blender) (thisll be fun) @@ -17,26 +8,13 @@ x lumen lab - - Display on startup /Debug -x There's an extra tri/quad sometimes when the renderer starts -x Something is still happening when I reload a dll, it sometimes has an error. -x Fixing the debug system seems to have solved this too. Keep an eye out tho x Make debug scope tracking thread safe - was throwing an error in stringsequal but that stopped. x Keep an eye out. Application -x File Browsing to load sculptures -x Different Memory Layouts -- x General Purpose - ideally growable but shouldn't exhibit any size change outside of like 1000x sculptures, for assets etc. -- x SACN - growable, in its own memory. This is a central system. -- x Sculpture - per scultpure, monolithic memory allocation -- x track each sculpture in general purpose memory, linked list -- x need to move the assemblies structs back up the list when I remove an earlier one (ie. remove 0, shift 1 to 0, etc.); - More efficient HSV <-> RGB x Load/Unload sculptures -- x Load Function -- x Unload Function -- x Call From Interface - - Make sure that we offload unloading until after all jobs are completed. Otherwise they'll try and write - to data that doesn't exist - Save and load a session @@ -45,19 +23,11 @@ x Load/Unload sculptures - Don't render if the window isn't visible Development -x Reloadable DLL -x Make sure Debug Info Isn't Lost When We Reload the DLL - Fix your scope time tracker to account for threads. - Nest scope times so you can see totals/dig in -x Darken the area behind debug text so you can see it. - Log memory allocations -Data Output -x output the data (check but I think we're doing this) -x Universe view - pannable grid of universes with labels - Interface -x pattern controls - fullscreen - In world interface elements - - Handles for Patterns @@ -68,62 +38,22 @@ x pattern controls Switch To Nodes x basic node elements -- x ports (expected value) (in/out) -- x display value -- x connections -- - evaluation nodes (nodes that we start evaluation from) - - evaluation step (one node at a time) -- - process to execute -x reflection -- x look at struct members and figure out how to draw it (see notes at bottom) -- x associate with a process -x draw nodes on canvas -x interact -- x move around -- x reconnect -- x move connections handles (see casey) +- - search nodes by name +- - selector node (has a list of connections that it can switch between) - serialize - delete nodes -- need a way to add a timer to the nodes system (oscillators) -- probably want to build some build-in nodes so they can have custom behavior -- - static value: color, float, int etc -- - oscillators -- - hue range - - -Patterns -x arbitrary assemblies - -x reload at runtime -- load patterns from a separate dll -x pattern initialization -- multiple active patterns -- - pattern blending -- - only update active patterns -- Parameters Structure -x load structure from a file -x generate arbitrary assemblies -- multiple assemblies - motion -x reasses if control boxes are even a necessary structure Renderer -x Push Buffer Renderer -x Get Headers out of the command structs -x Render Text Batch Command -x Render Quads Batch Command -x vertex buffer -x depth sorting - Mouse Picking - point at a led and see info about it -x Camera: tumble controls - Camera: pan - Camera: zoom - Camera: leds always face camera Resource Management -x Manually Load/Unload Textures - TODO: Need to figure out which textures are currently in graphics memory and which need to be resubmitted - Icons @@ -147,76 +77,4 @@ 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 -- for different output devices? - - - -NOTES - -Reflection for Nodes - -// These used for the reflection system -#define CANVAS_STRUCT(name) struct name -#define CANVAS_INPUT(type, name) type name -#define CANVAS_OUTPUT(type, name) type name - -CANVAS_STRUCT(multiply_data) -{ - CANVAS_INPUT(r32, A); - CANVAS_INPUT(r32, B); - CANVAS_OUTPUT(r32, C); -} - -CANVAS_PROC(multiply_proc) -{ - multiply_data* Data = (multiply_data*)Data; - Data->C = Data->A * Data->B; -} - -node -{ - InputCount 2 - node_port_values* Inputs; - - OutputCount 1 - node_port_values* Outputs; -} - -node_port_value -{ - type NodeInputType_r32 - s32 MemoryOffsetFromHead; - s32 DataSize; - - r32 UnconnectedValue; - r32* ConnectedValue; // Overrides Unconnected -} - -u8* GetValueAddress (node_port_value* Port) -{ - u8* Result = &Port->UnconnectedValue; - if (Port->ConnectedValue) - { - Result = Port->ConnectedValue; - } - return Result; -} - -void UpdateCanvasElement (u8* Data, s32 DataSize, node* Node) -{ - for (s32 i = 0; i < Node->InputCount; i++) - { - GSMemCopy(GetValueAddress(&Node->Input[i]), - Data + Node->Input[i].MemoryOffsetFromHead, - Node->Input[i].DataSize); - } -} - -void InitializeMultiplyNode () -{ - node Multiply = {}; - Multiply.InputCount = 2; - Alloc Inputs - - Input[0]. -} \ No newline at end of file +- for different output devices? \ No newline at end of file