1#include "FollowComponent.h"
5#include "Components/Core/TransformComponent.h"
7#include <glm/gtc/quaternion.hpp>
11void Cogs::Core::FollowComponent::registerType()
14 Field(
Name(
"target"), &FollowComponent::target),
15 Field(
Name(
"offset"), &FollowComponent::offset),
19 Method(
Name(
"update"), &FollowComponent::update),
20 Method(
Name(
"initialize"), &FollowComponent::initialize),
21 Method(
Name(
"cleanup"), &FollowComponent::cleanup),
24 DynamicComponent::registerDerivedType<FollowComponent>().setFields(fields).setMethods(methods);
27void Cogs::Core::FollowComponent::initialize(Context * )
34void Cogs::Core::FollowComponent::update()
36 auto transform = getComponent<TransformComponent>();
38 static float time = 0;
43 auto targetTransform = target->getComponent<TransformComponent>();
45 if (!targetTransform)
return;
47 transform->position = targetTransform->position +
48 glm::vec3(glm::mat4_cast(targetTransform->rotation) * glm::vec4(offset + glm::vec3(0, std::sin(time) * 10.0f, 0), 1.0f));
50 transform->setChanged();
54void Cogs::Core::FollowComponent::cleanup(Context * )
Field definition describing a single data member of a data structure.
Simple method definition.
Contains reflection support.
Represents an unique name.