KRAmbientZone now using KRAudioSampleBinding
This commit is contained in:
@@ -45,12 +45,12 @@ void KRAmbientZone::InitNodeInfo(KrNodeInfo* nodeInfo)
|
|||||||
nodeInfo->ambient_zone.sample = -1;
|
nodeInfo->ambient_zone.sample = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
KRAmbientZone::KRAmbientZone(KRScene& scene, std::string name) : KRNode(scene, name)
|
KRAmbientZone::KRAmbientZone(KRScene& scene, std::string name)
|
||||||
{
|
: KRNode(scene, name)
|
||||||
m_ambient = "";
|
, m_ambient_gain(1.f)
|
||||||
m_ambient_gain = 1.0f;
|
, m_gradient_distance(0.25f)
|
||||||
|
|
||||||
m_gradient_distance = 0.25f;
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ tinyxml2::XMLElement* KRAmbientZone::saveXML(tinyxml2::XMLNode* parent)
|
|||||||
{
|
{
|
||||||
tinyxml2::XMLElement* e = KRNode::saveXML(parent);
|
tinyxml2::XMLElement* e = KRNode::saveXML(parent);
|
||||||
e->SetAttribute("zone", m_zone.c_str());
|
e->SetAttribute("zone", m_zone.c_str());
|
||||||
e->SetAttribute("sample", m_ambient.c_str());
|
e->SetAttribute("sample", m_ambient.getName().c_str());
|
||||||
e->SetAttribute("gain", m_ambient_gain);
|
e->SetAttribute("gain", m_ambient_gain);
|
||||||
e->SetAttribute("gradient", m_gradient_distance);
|
e->SetAttribute("gradient", m_gradient_distance);
|
||||||
return e;
|
return e;
|
||||||
@@ -83,7 +83,12 @@ void KRAmbientZone::loadXML(tinyxml2::XMLElement* e)
|
|||||||
m_gradient_distance = 0.25f;
|
m_gradient_distance = 0.25f;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ambient = e->Attribute("sample");
|
const char* szAudioSampleName = e->Attribute("sample");
|
||||||
|
if (szAudioSampleName == nullptr) {
|
||||||
|
m_ambient.clear();
|
||||||
|
} else {
|
||||||
|
m_ambient.set(szAudioSampleName);
|
||||||
|
}
|
||||||
|
|
||||||
m_ambient_gain = 1.0f;
|
m_ambient_gain = 1.0f;
|
||||||
if (e->QueryFloatAttribute("gain", &m_ambient_gain) != tinyxml2::XML_SUCCESS) {
|
if (e->QueryFloatAttribute("gain", &m_ambient_gain) != tinyxml2::XML_SUCCESS) {
|
||||||
@@ -91,14 +96,15 @@ void KRAmbientZone::loadXML(tinyxml2::XMLElement* e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string KRAmbientZone::getAmbient()
|
KRAudioSample* KRAmbientZone::getAmbient()
|
||||||
{
|
{
|
||||||
return m_ambient;
|
m_ambient.bind(&getContext());
|
||||||
|
return m_ambient.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KRAmbientZone::setAmbient(const std::string& ambient)
|
void KRAmbientZone::setAmbient(const std::string& ambient)
|
||||||
{
|
{
|
||||||
m_ambient = ambient;
|
m_ambient.set(ambient);
|
||||||
}
|
}
|
||||||
|
|
||||||
float KRAmbientZone::getAmbientGain()
|
float KRAmbientZone::getAmbientGain()
|
||||||
|
|||||||
@@ -31,9 +31,13 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "KREngine-common.h"
|
||||||
#include "resources/KRResource.h"
|
#include "resources/KRResource.h"
|
||||||
|
#include "resources/audio/KRAudioSampleBinding.h"
|
||||||
#include "KRNode.h"
|
#include "KRNode.h"
|
||||||
|
|
||||||
|
class KRAudioSample;
|
||||||
|
|
||||||
class KRAmbientZone : public KRNode
|
class KRAmbientZone : public KRNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -53,7 +57,7 @@ public:
|
|||||||
float getGradientDistance();
|
float getGradientDistance();
|
||||||
void setGradientDistance(float gradient_distance);
|
void setGradientDistance(float gradient_distance);
|
||||||
|
|
||||||
std::string getAmbient();
|
KRAudioSample* getAmbient();
|
||||||
void setAmbient(const std::string& ambient);
|
void setAmbient(const std::string& ambient);
|
||||||
|
|
||||||
float getAmbientGain();
|
float getAmbientGain();
|
||||||
@@ -68,6 +72,6 @@ private:
|
|||||||
|
|
||||||
float m_gradient_distance;
|
float m_gradient_distance;
|
||||||
|
|
||||||
std::string m_ambient;
|
KRAudioSampleBinding m_ambient;
|
||||||
float m_ambient_gain;
|
float m_ambient_gain;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1424,7 +1424,7 @@ void KRAudioManager::startFrame(float deltaTime)
|
|||||||
if (zi.weight > 0.0f) {
|
if (zi.weight > 0.0f) {
|
||||||
if (m_ambient_zone_weights.find(sphere->getZone()) == m_ambient_zone_weights.end()) {
|
if (m_ambient_zone_weights.find(sphere->getZone()) == m_ambient_zone_weights.end()) {
|
||||||
zi.ambient_zone = sphere;
|
zi.ambient_zone = sphere;
|
||||||
zi.ambient_sample = get(sphere->getAmbient());
|
zi.ambient_sample = sphere->getAmbient();
|
||||||
m_ambient_zone_weights[sphere->getZone()] = zi;
|
m_ambient_zone_weights[sphere->getZone()] = zi;
|
||||||
m_ambient_zone_total_weight += zi.weight;
|
m_ambient_zone_total_weight += zi.weight;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user