chore: refactor to use shape nodes

This commit is contained in:
Beriff
2026-03-14 18:25:02 +07:00
parent e054fc4fe7
commit 43b6d284dd
9 changed files with 151 additions and 73 deletions

44
src/core/modifier.h Normal file
View File

@@ -0,0 +1,44 @@
#ifndef VKTR_MODIFIER_H
#define VKTR_MODIFIER_H
#include "src/core/primitives.h"
typedef enum {
VEKTOR_MODIFIER_BEVEL
} VektorModifierType;
typedef struct VektorModifier {
VektorModifierType type;
bool enabled;
bool dirty;
void* parameters;
VektorShape (*apply)(struct VektorModifier mod, VektorShape input);
} VektorModifier;
typedef struct VektorShapeNode {
VektorShape base;
VektorShape evaluated;
VektorModifier* modifiers;
size_t modifier_count;
bool base_dirty;
} VektorShapeNode;
typedef struct VektorShapeNodeBuffer {
VektorShapeNode* nodes;
size_t count;
size_t capacity;
} VektorShapeNodeBuffer;
VektorShapeNode vektor_shapenode_new(VektorShape shape);
VektorShape* vektor_shapenode_get_evaluated(VektorShapeNode* shapeNode);
void vektor_shapenode_modifier_add(VektorShapeNode* shapeNode, VektorModifier* mod);
void vektor_shapenode_modifier_remove(VektorShapeNode* shapeNode, VektorModifier* mod);
void vektor_shapenode_free(VektorShapeNode* shapeNode);
void vektor_shapenodebuf_add(VektorShapeNodeBuffer* buffer, VektorShapeNode node);
#endif