void loop(t_list **list, t_token **cur_tok, char *input) { int index; char cur; char prev; ft_init(&index, &cur, &prev, input); while (cur) { if ((*cur_tok)->token && is_operator(prev) && !is_newline(cur)) rule_1(*cur_tok, list, input, &index); else if (is_quoting(cur)) handle_quoting(*cur_tok, list, input, &index); else if (is_start_of_expansion(cur) || is_operator(cur)) rule_34(*cur_tok, list, input, &index); else if (is_newline(cur) || is_whitespace(cur)) rule_56(*cur_tok, list, input, &index); else if ((*cur_tok)->token && is_word(prev)) build_token(*cur_tok, cur); else if (cur == '#') discard_comment(input, &index); else build_token(*cur_tok, cur); prev = cur; cur = input[++index]; } }
std::vector<Mosquito> step (std::vector<Mosquito>& _swarm, Dragonfly& _dragonfly) { std::vector<Mosquito> new_swarm; for (auto& m : _swarm) { Vector2 v1 = rule_1(m, _swarm); Vector2 v2 = rule_2(m, _swarm); Vector2 v3 = rule_3(m, _swarm); Vector2 v4 = rule_4(m); Vector2 v5 = rule_5(m, _dragonfly); Vector2 velocity; velocity += v1; velocity += v2; velocity += v3; velocity += v4; velocity += v5; velocity /= 10000.0f; Mosquito new_mosquito; new_mosquito.velocity = m.velocity + velocity; new_mosquito.position = m.position + new_mosquito.velocity; if (new_mosquito.velocity.length() > 0.6) new_mosquito.velocity /= 10.0f; new_swarm.push_back(new_mosquito); } return new_swarm; }