11#include <glm/gtc/quaternion.hpp>
19void pushBody2D(
const SceneNode &
n,
void *target) {
20 auto *
b =
static_cast<Body *
>(target);
21 b->setPosition(
n.x,
n.y);
25void pullBody2D(SceneNode &
n,
void *target) {
26 auto *
b =
static_cast<Body *
>(target);
29 n.roll =
b->getAngle();
32bool aliveBody2D(
const void *target) {
33 return static_cast<const Body *
>(target)->raw() !=
nullptr;
36void pushBody3D(
const SceneNode &
n,
void *target) {
37 auto *
b =
static_cast<Body3D *
>(target);
38 b->setPosition(
n.x,
n.y,
n.z);
39 glm::quat q = glm::angleAxis(
n.yaw, glm::vec3(0.f, 1.f, 0.f)) *
40 glm::angleAxis(
n.pitch, glm::vec3(1.f, 0.f, 0.f)) *
41 glm::angleAxis(
n.roll, glm::vec3(0.f, 0.f, 1.f));
42 b->setRotation(q.x, q.y, q.z, q.w);
45void pullBody3D(SceneNode &
n,
void *target) {
46 auto *
b =
static_cast<Body3D *
>(target);
50 glm::quat q(
b->getRotW(),
b->getRotX(),
b->getRotY(),
b->getRotZ());
51 glm::vec3 e = glm::eulerAngles(q);
57bool aliveBody3D(
const void *target) {
58 return static_cast<const Body3D *
>(target)->isValid();
int registerLinkKind(const LinkOps &ops)
Retained scene node (arena). Conceptual GameObject; isomorphic to eve::ui::UINode.