blob: a75b3293c3c3c786de9292c5ab23f2932519354b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#include "scene.h"
#include <stdlib.h>
static inline void link_object(space_t *s, object_t *o)
{
if (s) {
o->next = s->objects;
s->objects = o;
} else {
o->next = 0;
}
}
object_t *add_sphere(space_t *s, vector_t *c, COORD_T r)
{
object_t *o = (object_t *) malloc(sizeof(object_t));
o->type = TYPE_SPHERE;
o->sph.center = c;
o->sph.radius = r;
link_object(s, o);
return o;
}
object_t *add_plane(space_t *s, vector_t *start, vector_t *dir)
{
object_t *o = (object_t *) malloc(sizeof(object_t));
o->type = TYPE_PLANE;
o->pl.start = start;
o->pl.norm = dir;
link_object(s, o);
return o;
}
light_t *add_light(space_t *s, vector_t *pos, color_t *c)
{
light_t *o = (light_t *) malloc(sizeof(light_t));
o->pos = pos;
o->col = c;
if (s) {
o->next = s->lights;
s->lights = o;
} else {
o->next = NULL;
}
return o;
}
|