diff options
Diffstat (limited to 'src/stage.c')
-rw-r--r-- | src/stage.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/stage.c b/src/stage.c index 1cb3995..cc8f618 100644 --- a/src/stage.c +++ b/src/stage.c @@ -58,6 +58,8 @@ struct stage_t { float aspect_ratio; /* width/height ratio of stage, -1.0...1.0 range of node coordinates map to this ratio. */ v2f_t position; /* position of the stage (defaults to 0,0) */ float alpha; /* alpha to apply to all nodes */ + stage_map_t aabb_map; /* aabb map for the stage, nodes inherit this setting at create time */ + stage_map_t position_map; /* position map for the stage, nodes inherit this setting at create time */ }; @@ -106,6 +108,8 @@ stage_node_t * stage_node_new(stage_t *stage, int layer, const char *name, void if (!node) return NULL; + node->aabb_map = stage->aabb_map; + node->position_map = stage->position_map; list_add_tail(&node->nodes, &stage->layers[layer]); return node; @@ -378,6 +382,20 @@ void stage_get_position(stage_t *stage, v2f_t *res_position) } +/* set the aabb mapping for the stage */ +void stage_set_aabb_map(stage_t *stage, stage_map_t map) +{ + stage->aabb_map = map; +} + + +/* set the position mapping for the stage */ +void stage_set_position_map(stage_t *stage, stage_map_t map) +{ + stage->position_map = map; +} + + static void map_stage_rect(const stage_t *stage, const SDL_Rect *stage_rect, stage_map_t map, float *res_w, float *res_h) { switch (map) { |