Antkeeper  0.0.1
legged-locomotion-component.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2023 Christopher J. Howard
3  *
4  * This file is part of Antkeeper source code.
5  *
6  * Antkeeper source code is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * Antkeeper source code is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef ANTKEEPER_GAME_LEGGED_LOCOMOTION_COMPONENT_HPP
21 #define ANTKEEPER_GAME_LEGGED_LOCOMOTION_COMPONENT_HPP
22 
23 #include <engine/math/vector.hpp>
26 #include <memory>
27 #include <vector>
28 
33 {
35  math::fvec3 force{0.0f, 0.0f, 0.0f};
36 
37  const pose* midstance_pose{};
38  const pose* midswing_pose{};
39  const pose* liftoff_pose{};
40  const pose* touchdown_pose{};
41 
43  std::vector<bone_index_type> tip_bones;
44 
46 
48  std::uint8_t leg_bone_count{};
49 
50  std::shared_ptr<::gait> gait;
51 
52  float standing_height{};
53 
55  float stride_length{};
56 
59 
60  float speed{};
61 
63 
65 
67  float gait_phase{};
68 };
69 
70 #endif // ANTKEEPER_GAME_LEGGED_LOCOMOTION_COMPONENT_HPP
std::uint16_t bone_index_type
Bone index type.
Definition: bone.hpp:31
Base class for skeleton poses.
Definition: pose.hpp:32
Legged terrestrial locomotion.
float max_angular_frequency
Maximum angular frequency when turning, in radians per second.
std::uint8_t leg_bone_count
Number of bones per leg.
float gait_phase
Current phase of the gait cycle, on [0, 1].
float stride_length
Distance covered in a single gait cycle.
std::vector< bone_index_type > tip_bones
Indices of the the final bones in the legs.
n-dimensional vector.
Definition: vector.hpp:44