(NDK) Added Listener component and system

Former-commit-id: 0553c4ad9a7e33608e9ab91bd4ca8812272a6293
This commit is contained in:
Lynix
2015-04-12 19:38:38 +02:00
parent f290b8d886
commit f137a75267
11 changed files with 156 additions and 2 deletions

View File

@@ -0,0 +1,10 @@
// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Development Kit"
// For conditions of distribution and use, see copyright notice in Prerequesites.hpp
#include <NDK/Components/ListenerComponent.hpp>
namespace Ndk
{
ComponentIndex ListenerComponent::componentIndex;
}

View File

@@ -6,5 +6,5 @@
namespace Ndk
{
ComponentIndex NodeComponent::componentIndex = 0;
ComponentIndex NodeComponent::componentIndex;
}

View File

@@ -13,7 +13,9 @@
#include <Nazara/Utility/Utility.hpp>
#include <NDK/Algorithm.hpp>
#include <NDK/BaseSystem.hpp>
#include <NDK/Components/ListenerComponent.hpp>
#include <NDK/Components/NodeComponent.hpp>
#include <NDK/Systems/ListenerSystem.hpp>
namespace Ndk
{
@@ -45,8 +47,12 @@ namespace Ndk
BaseSystem::Initialize();
// Composants
InitializeComponent<ListenerComponent>("NdkList");
InitializeComponent<NodeComponent>("NdkNode");
// Systèmes
InitializeSystem<ListenerSystem>();
NazaraNotice("Initialized: SDK");
return true;
}

View File

@@ -0,0 +1,40 @@
// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Development Kit"
// For conditions of distribution and use, see copyright notice in Prerequesites.hpp
#include <NDK/Systems/ListenerSystem.hpp>
#include <Nazara/Audio/Audio.hpp>
#include <NDK/Components/ListenerComponent.hpp>
#include <NDK/Components/NodeComponent.hpp>
namespace Ndk
{
ListenerSystem::ListenerSystem()
{
Requires<ListenerComponent, NodeComponent>();
}
void ListenerSystem::Update(float elapsedTime)
{
unsigned int activeListenerCount = 0;
for (const Ndk::EntityHandle& entity : GetEntities())
{
// Le listener est-il actif ?
const ListenerComponent& listener = entity->GetComponent<ListenerComponent>();
if (!listener.IsActive())
continue;
const NodeComponent& node = entity->GetComponent<NodeComponent>();
NzAudio::SetListenerPosition(node.GetPosition(nzCoordSys_Global));
NzAudio::SetListenerRotation(node.GetRotation(nzCoordSys_Global));
activeListenerCount++;
}
if (activeListenerCount > 1)
NazaraWarning(NzString::Number(activeListenerCount) + " listeners were active in the same update loop");
}
SystemIndex ListenerSystem::systemIndex;
}

View File

@@ -4,6 +4,7 @@
#include <NDK/World.hpp>
#include <Nazara/Core/Error.hpp>
#include <NDK/Systems/ListenerSystem.hpp>
namespace Ndk
{
@@ -13,6 +14,11 @@ namespace Ndk
Clear();
}
void World::AddDefaultSystems()
{
AddSystem<ListenerSystem>();
}
const EntityHandle& World::CreateEntity()
{
EntityId id;