// // ZoneAudioPropertyGroup.h // libraries/entities/src // // Created by HifiExperiments on 11/28/23 // Copyright 2023 Overte e.V. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // SPDX-License-Identifier: Apache-2.0 // #ifndef hifi_ZoneAudioPropertyGroup_h #define hifi_ZoneAudioPropertyGroup_h #include #include #include "PropertyGroup.h" #include "EntityItemPropertiesMacros.h" class EntityItemProperties; class EncodeBitstreamParams; class OctreePacketData; class EntityTreeElementExtraEncodeData; class ReadBitstreamToTreeParams; class ScriptEngine; class ScriptValue; /*@jsdoc * Zone audio is defined by the following properties: * @typedef {object} Entities.ZoneAudio * @property {boolean} reverbEnabled=false - If reverb should be enabled for listeners in this zone. * @property {number} reverbTime=1.0 - The time (seconds) for the reverb tail to decay by 60dB, also known as RT60. * @property {number} reverbWetLevel=50 - Adjusts the wet/dry percentage, from completely dry (0%) to completely wet (100%). * @property {Uuid[]} listenerZones=[] - A list of entity IDs representing listener zones with this zone as a source. * Sounds from this zone being heard by a listener in a listener zone will be attenuated by the corresponding * listenerAttenuationCoefficient. * @property {number[]} listenerAttenuationCoefficients=[] - A list of attenuation coefficients. Each coefficient will be * applied to sounds coming from this zone and being heard by a listener in the corresponding listenerZone. */ class ZoneAudioPropertyGroup : public PropertyGroup { public: ENTITY_PROPERTY_GROUP_METHODS(ZoneAudioPropertyGroup) protected: @Audio_GROUP_PROPS@ }; #endif // hifi_ZoneAudioPropertyGroup_h