KRReverbZone is now using KRNodeProperty
This commit is contained in:
@@ -39,17 +39,14 @@ using namespace hydra;
|
|||||||
void KRReverbZone::InitNodeInfo(KrNodeInfo* nodeInfo)
|
void KRReverbZone::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||||
{
|
{
|
||||||
KRNode::InitNodeInfo(nodeInfo);
|
KRNode::InitNodeInfo(nodeInfo);
|
||||||
nodeInfo->reverb_zone.gain = 1.0f;
|
nodeInfo->reverb_zone.gain = decltype(m_reverb_gain)::defaultVal;
|
||||||
nodeInfo->reverb_zone.gradient = 0.25f;
|
nodeInfo->reverb_zone.gradient = decltype(m_gradient_distance)::defaultVal;
|
||||||
nodeInfo->reverb_zone.sample = -1;
|
nodeInfo->reverb_zone.sample = -1;
|
||||||
nodeInfo->reverb_zone.pZoneName = nullptr;
|
nodeInfo->reverb_zone.pZoneName = decltype(m_zone)::defaultVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
KRReverbZone::KRReverbZone(KRScene& scene, std::string name) : KRNode(scene, name)
|
KRReverbZone::KRReverbZone(KRScene& scene, std::string name) : KRNode(scene, name)
|
||||||
{
|
{
|
||||||
m_reverb = "";
|
|
||||||
m_reverb_gain = 1.0f;
|
|
||||||
m_gradient_distance = 0.25f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
KRReverbZone::~KRReverbZone()
|
KRReverbZone::~KRReverbZone()
|
||||||
@@ -63,10 +60,10 @@ std::string KRReverbZone::getElementName()
|
|||||||
tinyxml2::XMLElement* KRReverbZone::saveXML(tinyxml2::XMLNode* parent)
|
tinyxml2::XMLElement* KRReverbZone::saveXML(tinyxml2::XMLNode* parent)
|
||||||
{
|
{
|
||||||
tinyxml2::XMLElement* e = KRNode::saveXML(parent);
|
tinyxml2::XMLElement* e = KRNode::saveXML(parent);
|
||||||
e->SetAttribute("zone", m_zone.c_str());
|
m_zone.save(e);
|
||||||
e->SetAttribute("sample", m_reverb.c_str());
|
m_reverb.save(e);
|
||||||
e->SetAttribute("gain", m_reverb_gain);
|
m_reverb_gain.save(e);
|
||||||
e->SetAttribute("gradient", m_gradient_distance);
|
m_gradient_distance.save(e);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,24 +71,16 @@ void KRReverbZone::loadXML(tinyxml2::XMLElement* e)
|
|||||||
{
|
{
|
||||||
KRNode::loadXML(e);
|
KRNode::loadXML(e);
|
||||||
|
|
||||||
m_zone = e->Attribute("zone");
|
m_zone.load(e);
|
||||||
|
m_gradient_distance.load(e);
|
||||||
m_gradient_distance = 0.25f;
|
m_reverb.load(e);
|
||||||
if (e->QueryFloatAttribute("gradient", &m_gradient_distance) != tinyxml2::XML_SUCCESS) {
|
m_reverb_gain.load(e);
|
||||||
m_gradient_distance = 0.25f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_reverb = e->Attribute("sample");
|
KRAudioSample* KRReverbZone::getReverb()
|
||||||
|
|
||||||
m_reverb_gain = 1.0f;
|
|
||||||
if (e->QueryFloatAttribute("gain", &m_reverb_gain) != tinyxml2::XML_SUCCESS) {
|
|
||||||
m_reverb_gain = 1.0f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string KRReverbZone::getReverb()
|
|
||||||
{
|
{
|
||||||
return m_reverb;
|
m_reverb.val.bind(&getContext());
|
||||||
|
return m_reverb.val.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KRReverbZone::setReverb(const std::string& reverb)
|
void KRReverbZone::setReverb(const std::string& reverb)
|
||||||
|
|||||||
@@ -32,8 +32,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "resources/KRResource.h"
|
#include "resources/KRResource.h"
|
||||||
|
#include "resources/audio/KRAudioSampleBinding.h"
|
||||||
#include "KRNode.h"
|
#include "KRNode.h"
|
||||||
|
|
||||||
|
class KRAudioSample;
|
||||||
|
|
||||||
class KRReverbZone : public KRNode
|
class KRReverbZone : public KRNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -53,7 +56,7 @@ public:
|
|||||||
float getGradientDistance();
|
float getGradientDistance();
|
||||||
void setGradientDistance(float gradient_distance);
|
void setGradientDistance(float gradient_distance);
|
||||||
|
|
||||||
std::string getReverb();
|
KRAudioSample* getReverb();
|
||||||
void setReverb(const std::string& reverb);
|
void setReverb(const std::string& reverb);
|
||||||
|
|
||||||
float getReverbGain();
|
float getReverbGain();
|
||||||
@@ -64,10 +67,8 @@ public:
|
|||||||
float getContainment(const hydra::Vector3& pos);
|
float getContainment(const hydra::Vector3& pos);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_zone;
|
KRNODE_PROPERTY(std::string, m_zone, "", "zone");
|
||||||
|
KRNODE_PROPERTY(float, m_gradient_distance, 0.25f, "gradient");
|
||||||
float m_gradient_distance;
|
KRNODE_PROPERTY(KRAudioSampleBinding, m_reverb, nullptr, "sample");
|
||||||
|
KRNODE_PROPERTY(float, m_reverb_gain, 1.f, "gain");
|
||||||
std::string m_reverb;
|
|
||||||
float m_reverb_gain;
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ typedef struct
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
// KR_STRUCTURE_TYPE_NODE_AMBIENT_ZONE
|
// KR_STRUCTURE_TYPE_NODE_AMBIENT_ZONE
|
||||||
char* pZoneName;
|
const char* pZoneName;
|
||||||
float gradient;
|
float gradient;
|
||||||
float gain;
|
float gain;
|
||||||
KrResourceMapIndex sample;
|
KrResourceMapIndex sample;
|
||||||
@@ -346,7 +346,7 @@ typedef struct
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
// KR_STRUCTURE_TYPE_NODE_REVERB_ZONE
|
// KR_STRUCTURE_TYPE_NODE_REVERB_ZONE
|
||||||
char* pZoneName;
|
const char* pZoneName;
|
||||||
float gradient;
|
float gradient;
|
||||||
float gain;
|
float gain;
|
||||||
KrResourceMapIndex sample;
|
KrResourceMapIndex sample;
|
||||||
|
|||||||
@@ -1453,7 +1453,7 @@ void KRAudioManager::startFrame(float deltaTime)
|
|||||||
if (zi.weight > 0.0f) {
|
if (zi.weight > 0.0f) {
|
||||||
if (m_reverb_zone_weights.find(sphere->getZone()) == m_reverb_zone_weights.end()) {
|
if (m_reverb_zone_weights.find(sphere->getZone()) == m_reverb_zone_weights.end()) {
|
||||||
zi.reverb_zone = sphere;
|
zi.reverb_zone = sphere;
|
||||||
zi.reverb_sample = get(sphere->getReverb());
|
zi.reverb_sample = sphere->getReverb();
|
||||||
m_reverb_zone_weights[sphere->getZone()] = zi;
|
m_reverb_zone_weights[sphere->getZone()] = zi;
|
||||||
m_reverb_zone_total_weight += zi.weight;
|
m_reverb_zone_total_weight += zi.weight;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user