From 652bd5988298b9364a8fd75e6e8c4d39f845cf32 Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Thu, 28 Feb 2013 12:04:52 -0800 Subject: [PATCH] Replaced KRReverbZone with KRAmbientSphere, to support Siren audio engine reverb zones --- KREngine/Kraken.xcodeproj/project.pbxproj | 24 +-- KREngine/kraken/KRAmbientSphere.cpp | 172 ++++++++++++++++++++++ KREngine/kraken/KRAmbientSphere.h | 59 ++++++++ KREngine/kraken/KRNode.cpp | 6 +- KREngine/kraken/KRReverbZone.cpp | 134 ----------------- KREngine/kraken/KRReverbZone.h | 42 ------ 6 files changed, 246 insertions(+), 191 deletions(-) create mode 100644 KREngine/kraken/KRAmbientSphere.cpp create mode 100644 KREngine/kraken/KRAmbientSphere.h delete mode 100644 KREngine/kraken/KRReverbZone.cpp delete mode 100644 KREngine/kraken/KRReverbZone.h diff --git a/KREngine/Kraken.xcodeproj/project.pbxproj b/KREngine/Kraken.xcodeproj/project.pbxproj index 66f4f35..c987b18 100644 --- a/KREngine/Kraken.xcodeproj/project.pbxproj +++ b/KREngine/Kraken.xcodeproj/project.pbxproj @@ -168,10 +168,10 @@ E4924C2715EE95E800B965C6 /* KROctree.h in Headers */ = {isa = PBXBuildFile; fileRef = E4924C2515EE95E800B965C6 /* KROctree.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4924C2B15EE96AB00B965C6 /* KROctreeNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4924C2915EE96AA00B965C6 /* KROctreeNode.cpp */; }; E4924C2C15EE96AB00B965C6 /* KROctreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E4924C2A15EE96AA00B965C6 /* KROctreeNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4943231169E08D200BCB891 /* KRReverbZone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E494322F169E08D200BCB891 /* KRReverbZone.cpp */; }; - E4943232169E08D200BCB891 /* KRReverbZone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E494322F169E08D200BCB891 /* KRReverbZone.cpp */; }; - E4943233169E08D200BCB891 /* KRReverbZone.h in Headers */ = {isa = PBXBuildFile; fileRef = E4943230169E08D200BCB891 /* KRReverbZone.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4943234169E08D200BCB891 /* KRReverbZone.h in Headers */ = {isa = PBXBuildFile; fileRef = E4943230169E08D200BCB891 /* KRReverbZone.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4943231169E08D200BCB891 /* KRAmbientSphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E494322F169E08D200BCB891 /* KRAmbientSphere.cpp */; }; + E4943232169E08D200BCB891 /* KRAmbientSphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E494322F169E08D200BCB891 /* KRAmbientSphere.cpp */; }; + E4943233169E08D200BCB891 /* KRAmbientSphere.h in Headers */ = {isa = PBXBuildFile; fileRef = E4943230169E08D200BCB891 /* KRAmbientSphere.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4943234169E08D200BCB891 /* KRAmbientSphere.h in Headers */ = {isa = PBXBuildFile; fileRef = E4943230169E08D200BCB891 /* KRAmbientSphere.h */; settings = {ATTRIBUTES = (Public, ); }; }; E497B946151BA99500D3DC67 /* KRVector2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E497B945151BA99400D3DC67 /* KRVector2.cpp */; }; E497B947151BA99500D3DC67 /* KRVector2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E497B945151BA99400D3DC67 /* KRVector2.cpp */; }; E497B948151BB89D00D3DC67 /* KRVector2.h in Headers */ = {isa = PBXBuildFile; fileRef = E497B943151BA93400D3DC67 /* KRVector2.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -467,8 +467,8 @@ E4924C2515EE95E800B965C6 /* KROctree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KROctree.h; sourceTree = ""; }; E4924C2915EE96AA00B965C6 /* KROctreeNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KROctreeNode.cpp; sourceTree = ""; }; E4924C2A15EE96AA00B965C6 /* KROctreeNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KROctreeNode.h; sourceTree = ""; }; - E494322F169E08D200BCB891 /* KRReverbZone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = KRReverbZone.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - E4943230169E08D200BCB891 /* KRReverbZone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRReverbZone.h; sourceTree = ""; }; + E494322F169E08D200BCB891 /* KRAmbientSphere.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = KRAmbientSphere.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; + E4943230169E08D200BCB891 /* KRAmbientSphere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = KRAmbientSphere.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; E497B943151BA93400D3DC67 /* KRVector2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = KRVector2.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; E497B945151BA99400D3DC67 /* KRVector2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KRVector2.cpp; sourceTree = ""; }; E497B949151BCEE900D3DC67 /* KRResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRResource.h; sourceTree = ""; }; @@ -891,8 +891,8 @@ children = ( E48B68131697794F00D99917 /* KRAudioSource.cpp */, E48B68141697794F00D99917 /* KRAudioSource.h */, - E494322F169E08D200BCB891 /* KRReverbZone.cpp */, - E4943230169E08D200BCB891 /* KRReverbZone.h */, + E494322F169E08D200BCB891 /* KRAmbientSphere.cpp */, + E4943230169E08D200BCB891 /* KRAmbientSphere.h */, ); name = Audio; sourceTree = ""; @@ -1197,7 +1197,7 @@ E4F027C916979CCD00D4427D /* KRAudioManager.h in Headers */, E4F027D016979CE200D4427D /* KRAudioSample.h in Headers */, E4F027E01697BFFF00D4427D /* KRAudioBuffer.h in Headers */, - E4943233169E08D200BCB891 /* KRReverbZone.h in Headers */, + E4943233169E08D200BCB891 /* KRAmbientSphere.h in Headers */, E499BF1B16AE747C007FCDBE /* KRVector2.h in Headers */, E499BF1E16AE751E007FCDBE /* KRSceneManager.h in Headers */, E499BF2016AE755B007FCDBE /* KRPointLight.h in Headers */, @@ -1268,7 +1268,7 @@ E4F027CA16979CCD00D4427D /* KRAudioManager.h in Headers */, E4F027D116979CE200D4427D /* KRAudioSample.h in Headers */, E4F027E11697BFFF00D4427D /* KRAudioBuffer.h in Headers */, - E4943234169E08D200BCB891 /* KRReverbZone.h in Headers */, + E4943234169E08D200BCB891 /* KRAmbientSphere.h in Headers */, E414F9AF1694DA37000B3D58 /* KRUnknown.h in Headers */, E499BF2216AE760F007FCDBE /* krengine_osx.h in Headers */, E4FE6AA916B21D660058B8CE /* forsyth.h in Headers */, @@ -1535,7 +1535,7 @@ E4F027C716979CCD00D4427D /* KRAudioManager.cpp in Sources */, E4F027CE16979CE200D4427D /* KRAudioSample.cpp in Sources */, E4F027DE1697BFFF00D4427D /* KRAudioBuffer.cpp in Sources */, - E4943231169E08D200BCB891 /* KRReverbZone.cpp in Sources */, + E4943231169E08D200BCB891 /* KRAmbientSphere.cpp in Sources */, E4FE6AAB16B21D7E0058B8CE /* forsyth.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1606,7 +1606,7 @@ E4F027C816979CCD00D4427D /* KRAudioManager.cpp in Sources */, E4F027CF16979CE200D4427D /* KRAudioSample.cpp in Sources */, E4F027DF1697BFFF00D4427D /* KRAudioBuffer.cpp in Sources */, - E4943232169E08D200BCB891 /* KRReverbZone.cpp in Sources */, + E4943232169E08D200BCB891 /* KRAmbientSphere.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/KREngine/kraken/KRAmbientSphere.cpp b/KREngine/kraken/KRAmbientSphere.cpp new file mode 100644 index 0000000..9ba010c --- /dev/null +++ b/KREngine/kraken/KRAmbientSphere.cpp @@ -0,0 +1,172 @@ +// +// KRAmbientSphere.cpp +// KREngine +// +// Created by Kearwood Gilbert on 2012-12-06. +// Copyright (c) 2012 Kearwood Software. All rights reserved. +// + +#include "KRAmbientSphere.h" +#include "KRContext.h" + +KRAmbientSphere::KRAmbientSphere(KRScene &scene, std::string name) : KRNode(scene, name) +{ + m_ambient = ""; + m_reverb = ""; + m_ambient_gain = 1.0f; + m_reverb_gain = 1.0f; + m_gradient_distance = 1.0f; + +} + +KRAmbientSphere::~KRAmbientSphere() +{ +} + +std::string KRAmbientSphere::getElementName() { + return "ambient_sphere"; +} + +tinyxml2::XMLElement *KRAmbientSphere::saveXML( tinyxml2::XMLNode *parent) +{ + tinyxml2::XMLElement *e = KRNode::saveXML(parent); + e->SetAttribute("zone", m_zone.c_str()); + e->SetAttribute("ambient", m_ambient.c_str()); + e->SetAttribute("ambient_gain", m_ambient_gain); + e->SetAttribute("reverb", m_reverb.c_str()); + e->SetAttribute("reverb_gain", m_reverb_gain); + e->SetAttribute("gradient", m_gradient_distance); + return e; +} + +void KRAmbientSphere::loadXML(tinyxml2::XMLElement *e) +{ + KRNode::loadXML(e); + + m_zone = e->Attribute("zone"); + + m_gradient_distance = 1.0f; + if(e->QueryFloatAttribute("gradient", &m_gradient_distance) != tinyxml2::XML_SUCCESS) { + m_gradient_distance = 1.0f; + } + + m_reverb = e->Attribute("reverb"); + + m_reverb_gain = 1.0f; + if(e->QueryFloatAttribute("reverb_gain", &m_reverb_gain) != tinyxml2::XML_SUCCESS) { + m_reverb_gain = 1.0f; + } + + m_ambient = e->Attribute("ambient"); + + m_ambient_gain = 1.0f; + if(e->QueryFloatAttribute("ambient_gain", &m_ambient_gain) != tinyxml2::XML_SUCCESS) { + m_ambient_gain = 1.0f; + } +} + +std::string KRAmbientSphere::getReverb() +{ + return m_reverb; +} + +void KRAmbientSphere::setReverb(const std::string &reverb) +{ + m_reverb = reverb; +} + +float KRAmbientSphere::getReverbGain() +{ + return m_reverb_gain; +} + +void KRAmbientSphere::setReverbGain(float reverb_gain) +{ + m_reverb_gain = reverb_gain; +} + +std::string KRAmbientSphere::getAmbient() +{ + return m_ambient; +} + +void KRAmbientSphere::setAmbient(const std::string &ambient) +{ + m_ambient = ambient; +} + +float KRAmbientSphere::getAmbientGain() +{ + return m_ambient_gain; +} + +void KRAmbientSphere::setAmbientGain(float ambient_gain) +{ + m_ambient_gain = ambient_gain; +} + +std::string KRAmbientSphere::getZone() +{ + return m_zone; +} + +void KRAmbientSphere::setZone(const std::string &zone) +{ + m_zone = zone; +} + +void KRAmbientSphere::render(KRCamera *pCamera, std::vector &lights, const KRViewport &viewport, KRNode::RenderPass renderPass) +{ + + KRNode::render(pCamera, lights, viewport, renderPass); + + bool bVisualize = false; + + if(renderPass == KRNode::RENDER_PASS_FORWARD_TRANSPARENT && bVisualize) { + KRMat4 sphereModelMatrix = getModelMatrix(); + + KRShader *pShader = getContext().getShaderManager()->getShader("visualize_overlay", pCamera, lights, 0, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, renderPass); + + if(getContext().getShaderManager()->selectShader(*pCamera, pShader, viewport, sphereModelMatrix, lights, 0, renderPass)) { + + // Enable additive blending + GLDEBUG(glEnable(GL_BLEND)); + GLDEBUG(glBlendFunc(GL_ONE, GL_ONE)); + + + // Disable z-buffer write + GLDEBUG(glDepthMask(GL_FALSE)); + + // Enable z-buffer test + GLDEBUG(glEnable(GL_DEPTH_TEST)); + GLDEBUG(glDepthFunc(GL_LEQUAL)); + GLDEBUG(glDepthRangef(0.0, 1.0)); + std::vector sphereModels = getContext().getModelManager()->getModel("__sphere"); + if(sphereModels.size()) { + for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) { + sphereModels[0]->renderSubmesh(i); + } + } + + // Enable alpha blending + GLDEBUG(glEnable(GL_BLEND)); + GLDEBUG(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); + } + } +} + + +float KRAmbientSphere::getGradientDistance() +{ + return m_gradient_distance; +} + +void KRAmbientSphere::setGradientDistance(float gradient_distance) +{ + m_gradient_distance = gradient_distance; +} + +KRAABB KRAmbientSphere::getBounds() { + // Reverb zones always have a -1, -1, -1 to 1, 1, 1 bounding box + return KRAABB(-KRVector3::One(), KRVector3::One(), getModelMatrix()); +} diff --git a/KREngine/kraken/KRAmbientSphere.h b/KREngine/kraken/KRAmbientSphere.h new file mode 100644 index 0000000..1133cb2 --- /dev/null +++ b/KREngine/kraken/KRAmbientSphere.h @@ -0,0 +1,59 @@ +// +// KRAmbientSphere.h +// KREngine +// +// Created by Kearwood Gilbert on 2012-12-06. +// Copyright (c) 2012 Kearwood Software. All rights reserved. +// + +#ifndef KRAMBIENT_ZONE_H +#define KRAMBIENT_ZONE_H + +#include "KRResource.h" +#include "KRNode.h" +#include "KRTexture.h" + +class KRAmbientSphere : public KRNode { +public: + KRAmbientSphere(KRScene &scene, std::string name); + virtual ~KRAmbientSphere(); + virtual std::string getElementName(); + virtual tinyxml2::XMLElement *saveXML( tinyxml2::XMLNode *parent); + virtual void loadXML(tinyxml2::XMLElement *e); + + void render(KRCamera *pCamera, std::vector &lights, const KRViewport &viewport, KRNode::RenderPass renderPass); + + std::string getZone(); + void setZone(const std::string &zone); + + float getGradientDistance(); + void setGradientDistance(float gradient_distance); + + std::string getReverb(); + void setReverb(const std::string &reverb); + + float getReverbGain(); + void setReverbGain(float reverb_gain); + + std::string getAmbient(); + void setAmbient(const std::string &ambient); + + float getAmbientGain(); + void setAmbientGain(float ambient_gain); + + virtual KRAABB getBounds(); + +private: + std::string m_zone; + + float m_gradient_distance; + + std::string m_reverb; + float m_reverb_gain; + + std::string m_ambient; + float m_ambient_gain; +}; + + +#endif diff --git a/KREngine/kraken/KRNode.cpp b/KREngine/kraken/KRNode.cpp index d118a41..3382831 100644 --- a/KREngine/kraken/KRNode.cpp +++ b/KREngine/kraken/KRNode.cpp @@ -20,7 +20,7 @@ #include "KRQuaternion.h" #include "KRBone.h" #include "KRAudioSource.h" -#include "KRReverbZone.h" +#include "KRAmbientSphere.h" KRNode::KRNode(KRScene &scene, std::string name) : KRContextObject(scene.getContext()) @@ -241,8 +241,8 @@ KRNode *KRNode::LoadXML(KRScene &scene, tinyxml2::XMLElement *e) { new_node = new KRBone(scene, szName); } else if(strcmp(szElementName, "audio_source") == 0) { new_node = new KRAudioSource(scene, szName); - } else if(strcmp(szElementName, "reverb_zone") == 0) { - new_node = new KRReverbZone(scene, szName); + } else if(strcmp(szElementName, "ambient_sphere") == 0) { + new_node = new KRAmbientSphere(scene, szName); } if(new_node) { diff --git a/KREngine/kraken/KRReverbZone.cpp b/KREngine/kraken/KRReverbZone.cpp deleted file mode 100644 index 7831402..0000000 --- a/KREngine/kraken/KRReverbZone.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// -// KRReverbZone.cpp -// KREngine -// -// Created by Kearwood Gilbert on 2012-12-06. -// Copyright (c) 2012 Kearwood Software. All rights reserved. -// - -#include "KRReverbZone.h" -#include "KRContext.h" - -KRReverbZone::KRReverbZone(KRScene &scene, std::string name) : KRNode(scene, name) -{ - -} - -KRReverbZone::~KRReverbZone() -{ -} - -std::string KRReverbZone::getElementName() { - return "reverb_zone"; -} - -tinyxml2::XMLElement *KRReverbZone::saveXML( tinyxml2::XMLNode *parent) -{ - tinyxml2::XMLElement *e = KRNode::saveXML(parent); - return e; -} - -void KRReverbZone::loadXML(tinyxml2::XMLElement *e) -{ - KRNode::loadXML(e); -} - -std::string KRReverbZone::getReverbPreset() -{ - return m_reverb_preset_name; -} - -void KRReverbZone::setReverbPreset(const std::string &reverb_preset_name) -{ - m_reverb_preset_name = reverb_preset_name; -} - - -unsigned int KRReverbZone::getReverbSettingId() -{ - if(m_reverb_preset_name.compare("small_room") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_SmallRoom; - } else if(m_reverb_preset_name.compare("medium_room") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_MediumRoom; - } else if(m_reverb_preset_name.compare("large_room") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_LargeRoom; - } else if(m_reverb_preset_name.compare("medium_hall") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_MediumHall; - } else if(m_reverb_preset_name.compare("large_hall") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_LargeHall; - } else if(m_reverb_preset_name.compare("plate") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_Plate; - } else if(m_reverb_preset_name.compare("medium_chamber") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_MediumChamber; - } else if(m_reverb_preset_name.compare("large_chamber") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_LargeChamber; - } else if(m_reverb_preset_name.compare("cathedral") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_Cathedral; - } else if(m_reverb_preset_name.compare("large_room2") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_LargeRoom2; - } else if(m_reverb_preset_name.compare("medium_hall2") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_MediumHall2; - } else if(m_reverb_preset_name.compare("medium_hall3") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_MediumHall3; - } else if(m_reverb_preset_name.compare("large_hall2") == 0) { - return ALC_ASA_REVERB_ROOM_TYPE_LargeHall2; - } else { - return ALC_ASA_REVERB_ROOM_TYPE_SmallRoom; - } -} - -void KRReverbZone::render(KRCamera *pCamera, std::vector &lights, const KRViewport &viewport, KRNode::RenderPass renderPass) -{ - - KRNode::render(pCamera, lights, viewport, renderPass); - - bool bVisualize = false; - - if(renderPass == KRNode::RENDER_PASS_FORWARD_TRANSPARENT && bVisualize) { - KRMat4 sphereModelMatrix = getModelMatrix(); - - KRShader *pShader = getContext().getShaderManager()->getShader("visualize_overlay", pCamera, lights, 0, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, renderPass); - - if(getContext().getShaderManager()->selectShader(*pCamera, pShader, viewport, sphereModelMatrix, lights, 0, renderPass)) { - - // Enable additive blending - GLDEBUG(glEnable(GL_BLEND)); - GLDEBUG(glBlendFunc(GL_ONE, GL_ONE)); - - - // Disable z-buffer write - GLDEBUG(glDepthMask(GL_FALSE)); - - // Enable z-buffer test - GLDEBUG(glEnable(GL_DEPTH_TEST)); - GLDEBUG(glDepthFunc(GL_LEQUAL)); - GLDEBUG(glDepthRangef(0.0, 1.0)); - std::vector sphereModels = getContext().getModelManager()->getModel("__sphere"); - if(sphereModels.size()) { - for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) { - sphereModels[0]->renderSubmesh(i); - } - } - - // Enable alpha blending - GLDEBUG(glEnable(GL_BLEND)); - GLDEBUG(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); - } - } -} - - -float KRReverbZone::getGradientDistance() -{ - return m_gradient_distance; -} - -void KRReverbZone::setGradientDistance(float gradient_distance) -{ - m_gradient_distance = gradient_distance; -} - -KRAABB KRReverbZone::getBounds() { - // Reverb zones always have a -1, -1, -1 to 1, 1, 1 bounding box - return KRAABB(-KRVector3::One(), KRVector3::One(), getModelMatrix()); -} diff --git a/KREngine/kraken/KRReverbZone.h b/KREngine/kraken/KRReverbZone.h deleted file mode 100644 index c18e76d..0000000 --- a/KREngine/kraken/KRReverbZone.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// KRReverbZone.h -// KREngine -// -// Created by Kearwood Gilbert on 2012-12-06. -// Copyright (c) 2012 Kearwood Software. All rights reserved. -// - -#ifndef KRREVERB_ZONE_H -#define KRREVERB_ZONE_H - -#include "KRResource.h" -#include "KRNode.h" -#include "KRTexture.h" - -class KRReverbZone : public KRNode { -public: - KRReverbZone(KRScene &scene, std::string name); - virtual ~KRReverbZone(); - virtual std::string getElementName(); - virtual tinyxml2::XMLElement *saveXML( tinyxml2::XMLNode *parent); - virtual void loadXML(tinyxml2::XMLElement *e); - - void render(KRCamera *pCamera, std::vector &lights, const KRViewport &viewport, KRNode::RenderPass renderPass); - - float getGradientDistance(); - void setGradientDistance(float gradient_distance); - - std::string getReverbPreset(); - void setReverbPreset(const std::string &reverb_preset_name); - - unsigned int getReverbSettingId(); - - virtual KRAABB getBounds(); - -private: - float m_gradient_distance; - std::string m_reverb_preset_name; -}; - - -#endif