Lumenarium/src/foldhaus_app.h

106 lines
2.4 KiB
C
Raw Normal View History

2019-07-19 20:56:21 +00:00
#include "../meta/gs_meta_lexer.h"
#include "gs_font.h"
#include "interface.h"
#include "foldhaus_network_ordering.h"
#include "foldhaus_sacn.h"
struct led
{
s32 Index;
v3 Position;
m44 PositionMatrix;
};
struct led_buffer
{
sacn_pixel* Colors;
led* LEDs;
s32 Count;
s32 Max;
led_buffer* Next;
};
#define CalculateMemorySizeForAssembly(leds, name_length) ((sizeof(led) + sizeof(sacn_pixel)) * (leds)) + sizeof(led_buffer) + name_length;
struct assembly
{
s32 MemorySize;
u8* MemoryBase;
string Name;
string FilePath;
led_buffer* LEDBuffer;
// Memory managed by the SACN system
sacn_universe_buffer* Universes;
sacn_send_buffer* SendBuffer;
};
#include "assembly_parser.h"
#include "foldhaus_node.h"
#include "assembly_parser.cpp"
#include "test_patterns.h"
#include "kraftwerks_patterns.h"
2019-07-19 20:56:21 +00:00
#include "foldhaus_interface.h"
typedef struct app_state app_state;
#include "foldhaus_command_dispatch.h"
#include "foldhaus_command_dispatch.cpp"
#include "foldhaus_operation_mode.h"
#include "foldhaus_text_entry.h"
#include "foldhaus_default_nodes.h"
2019-07-19 20:56:21 +00:00
#include "generated/foldhaus_nodes_generated.cpp"
2019-09-21 20:19:02 +00:00
#include "foldhaus_search_lister.h"
2019-07-19 20:56:21 +00:00
struct app_state
{
memory_arena* Permanent;
memory_arena* Transient;
memory_arena SACNMemory;
camera Camera;
operation_mode_system Modes;
input_command_registry DefaultInputCommandRegistry;
2019-10-30 14:28:02 +00:00
input_command_queue CommandQueue;
2019-09-21 20:19:02 +00:00
text_entry ActiveTextEntry;
2019-07-19 20:56:21 +00:00
streaming_acn SACN;
s32 TotalLEDsCount;
led_buffer* LEDBufferList;
// TODO(Peter): Make this dynamic. We want them contiguous in memory since we'll be accessing them
2019-07-19 20:56:21 +00:00
// mostly by looping through them. On the other hand, I don't expect there to ever be more than 100
// of them at once.
#define ASSEMBLY_LIST_LENGTH 32
assembly AssemblyList[ASSEMBLY_LIST_LENGTH];
s32 AssembliesUsed;
bitmap_font* Font;
interface_config Interface;
r32 PixelsToWorldScale;
node_list* NodeList;
interface_node* OutputNode;
2019-11-01 14:38:44 +00:00
node_render_settings NodeRenderSettings;
2019-07-19 20:56:21 +00:00
};
internal void OpenColorPicker(app_state* State, v4* Address);
2019-09-21 20:19:02 +00:00
#include "foldhaus_debug_visuals.h"
2019-07-19 20:56:21 +00:00
#include "foldhaus_sacn_view.cpp"
#include "foldhaus_node.cpp"
#include "foldhaus_text_entry.cpp"
2019-11-01 12:46:40 +00:00
#include "foldhaus_search_lister.cpp"
#include "foldhaus_interface.cpp"