void Viewer::gotoLocation(glm::vec3 position, glm::vec3 direction){ _position = position; _direction = glm::normalize(direction); glm::vec3 origin_direction(0,0,1); double y = (_direction.x * origin_direction.z) - (origin_direction.x * _direction.z); double x = (_direction.x * origin_direction.x) + (_direction.z * origin_direction.z); _current_angle = atan2(y,x); }
void perform(object LIB_CREATURE actor) { object LIB_ROOM room, destination; room = environment(actor); if (!room) { tell_object(actor, "You are in the void."); return; } destination = room->query_exit(direction_); if (!destination) { tell_object(actor, "You cannot look there."); return; } tell_object(actor, verbose_description(destination, actor)); tell_inventory(destination, indefinite_description(actor) + " looks in from " + origin_direction(direction_)); }