blob: 0e1aec05ae8e3a9cb4706445ffb03f66b00e405e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include "vec2sw.h"
#include "slidingwindow.h"
#include "vec2.h"
vec2d_sw_soa_t vec2d_sw_soa(smrt_arena_t *arena, u64 size) {
vec2d_sw_soa_t vs = { .size=size };
vs.xs = SMRTA_ALLOC_SLIDINGWINDOW(arena, f64, size);
vs.ys = SMRTA_ALLOC_SLIDINGWINDOW(arena, f64, size);
return vs;
}
void vec2d_sw_soa_insert(vec2d_sw_soa_t sw_vs, vec2d_t v) {
sw_insert(sw_vs.xs, (void*)&v.x);
sw_insert(sw_vs.ys, (void*)&v.y);
}
vec2d_soa_t vec2d_sw_soa_get(vec2d_sw_soa_t sw_vs) {
return (vec2d_soa_t){
.size = sw_vs.xs->num_elements,
.xs = SLIDINGWINDOW_GET(sw_vs.xs, f64),
.ys = SLIDINGWINDOW_GET(sw_vs.ys, f64),
};
}
|