/** * Create an object. **/ object_t * object_create(object_t *parent) { object_t *ret = xmalloc(sizeof(object_t)); MATRIX_DECL_IDENT(ident); ret->parent = NULL; ret->type = OBJ_NODE; ret->name = NULL; ret->mat = NO_MATERIAL; ret->transform_cache = NULL; ret->private_transform = NULL; ret->meta = NULL; ret->meta_destructor = 0; ret->draw_distance = 0; ret->child_draw_distance = 0; ret->trans[0] = ret->trans[1] = ret->trans[2] = 0; ret->scale[0] = ret->scale[1] = ret->scale[2] = 1; quat_init(&ret->rot, 0, 1, 0, 0); ret->children = NULL; ret->child_count = 0; refcount_init(&ret->refcount); refcount_add_destructor(&ret->refcount, object_destructor, ret); object_apply_pretransform(ret, ident); if (parent) object_reparent(ret, parent); return ret; }
void ahrs_init(ahrs_t *ahrs, ahrs_type_t type, real_t beta_start, real_t beta_step, real_t beta_end) { ahrs->type = type; ahrs->beta = beta_start; ahrs->beta_step = beta_step; ahrs->beta_end = beta_end; quat_init(&ahrs->quat); }