Beispiel #1
0
void HrtfData::get_direction_data(angle_t elevation, angle_t azimuth, distance_t distance, DirectionData& ref_data_left, DirectionData& ref_data_right) const
{
	_ASSERT(elevation >= -angle_t(pi * 0.5));
	_ASSERT(elevation <= angle_t(pi * 0.5));
	_ASSERT(azimuth >= -angle_t(2.0 * pi));
	_ASSERT(azimuth <= angle_t(2.0 * pi));

	get_direction_data(elevation, azimuth, distance, ref_data_left);
	get_direction_data(elevation, -azimuth, distance, ref_data_right);
}
Beispiel #2
0
void Active::set_direction(int value, bool set_movement)
{
    value &= 31;
    FrameObject::set_direction(value, set_movement);
    if (active_flags & AUTO_ROTATE) {
        set_angle((value * 360) / 32);
        value = 0;
    }
    if (value == animation_direction)
        return;
    animation_direction = value;
    Direction * old_dir = direction_data;
    Direction * new_dir = get_direction_data();
    if (old_dir == new_dir)
        return;
    update_direction(new_dir);
}
Beispiel #3
0
void Active::update_direction(Direction * dir)
{
    if (dir == NULL)
        dir = get_direction_data();

    direction_data = dir;
    loop_count = direction_data->loop_count;

    // make sure frame is still in range
    int frame_count = direction_data->frame_count;
    if (forced_frame != -1 && forced_frame >= frame_count)
        forced_frame = -1;
    if (animation_frame >= frame_count)
        animation_frame = 0;

    if (active_flags & ANIMATION_STOPPED)
        return;
    update_frame();
}