KRReverbZone is now using KRNodeProperty

This commit is contained in:
2025-11-23 16:07:31 -08:00
parent 34171c7d56
commit 9d2d788b98
4 changed files with 25 additions and 35 deletions

View File

@@ -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");
m_reverb_gain = 1.0f;
if (e->QueryFloatAttribute("gain", &m_reverb_gain) != tinyxml2::XML_SUCCESS) {
m_reverb_gain = 1.0f;
}
} }
std::string KRReverbZone::getReverb() KRAudioSample* 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)

View File

@@ -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;
}; };

View File

@@ -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;

View File

@@ -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 {