Skip to content

Commit

Permalink
Traktor: "Look at" entity fixed in Theater.
Browse files Browse the repository at this point in the history
  • Loading branch information
apistol78 committed Apr 17, 2024
1 parent 2c0eaac commit 3da8c50
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 23 deletions.
46 changes: 25 additions & 21 deletions code/Theater/Act.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ bool Act::update(world::World* world, float time, float deltaTime) const
for (uint32_t i = 0; i < ntracks; ++i)
{
world::Entity* entity = world->getEntity(m_tracks[i]->getEntityId());
T_ASSERT(entity);
if (!entity)
continue;

const TransformPath& path = m_tracks[i]->getPath();

Expand All @@ -55,26 +56,29 @@ bool Act::update(world::World* world, float time, float deltaTime) const
}

// Fix-up orientation of "looking" entities.
//for (uint32_t i = 0; i < ntracks; ++i)
//{
// world::Entity* entity = m_tracks[i]->getEntity();
// T_ASSERT(entity);

// transform = entity->getTransform();

// world::Entity* lookAtEntity = m_tracks[i]->getLookAtEntity();
// if (lookAtEntity)
// {
// lookAtTransform = lookAtEntity->getTransform();
// const Matrix44 m = lookAt(
// transform.translation().xyz1(),
// lookAtTransform.translation().xyz1()
// );
// transform = Transform(m.inverse());
// }

// entity->setTransform(transform);
//}
for (uint32_t i = 0; i < ntracks; ++i)
{
if (m_tracks[i]->getLookAtEntityId().isNull())
continue;

world::Entity* entity = world->getEntity(m_tracks[i]->getEntityId());
if (!entity)
continue;

world::Entity* lookAtEntity = world->getEntity(m_tracks[i]->getLookAtEntityId());
if (!lookAtEntity)
continue;

transform = entity->getTransform();
lookAtTransform = lookAtEntity->getTransform();
const Matrix44 m = lookAt(
transform.translation().xyz1(),
lookAtTransform.translation().xyz1()
);
transform = Transform(m.inverse());

entity->setTransform(transform);
}

return true;
}
Expand Down
5 changes: 3 additions & 2 deletions code/Theater/TheaterComponentData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
*/
#include <algorithm>
#include <random>
#include "Core/Serialization/AttributePrivate.h"
#include "Core/Serialization/ISerializer.h"
#include "Core/Serialization/MemberRefArray.h"
#include "Theater/ActData.h"
Expand All @@ -27,7 +28,7 @@ Ref< TheaterComponent > TheaterComponentData::createInstance(bool editor) const
RefArray< const Act > acts(m_acts.size());
for (size_t i = 0; i < m_acts.size(); ++i)
{
float duration = m_acts[i]->getDuration();
const float duration = m_acts[i]->getDuration();
if (duration < 0.0f)
return nullptr;

Expand Down Expand Up @@ -72,7 +73,7 @@ float TheaterComponentData::getActStartTime(int32_t act) const

void TheaterComponentData::serialize(ISerializer& s)
{
s >> MemberRefArray< ActData >(L"acts", m_acts);
s >> MemberRefArray< ActData >(L"acts", m_acts, AttributePrivate());
s >> Member< bool >(L"repeatActs", m_repeatActs);
s >> Member< bool >(L"randomizeActs", m_randomizeActs);
}
Expand Down

0 comments on commit 3da8c50

Please sign in to comment.