#ifndef IW_VACORE_BINAURALCLUSTERING #define IW_VACORE_BINAURALCLUSTERING #include // VA Includes #include #include // Utils #include "VABinauralCluster.h" #include "VABinauralClusteringState.h" #include "../BinauralListener/VABinauralListener.h" #include "../BinauralSoundSource/VABinauralSoundSource.h" class VABinauralClustering : public CVAPoolObject { public: ~VABinauralClustering(); VABinauralClustering(); void init(int listenerID, VABinauralListener* listener, int numClusters); void update(); void addSource(int sourceID, VABinauralSoundSource* source); private: int _listenerID; int _numClusters; double _threshold; VABinauralClusteringState* _clustering; VABinauralListener* _listener; IVAObjectPool* _clusterPool; std::map< int, VABinauralSoundSource* > _unassignedSources; std::map< int, VABinauralSoundSource* > _assignedSources; std::pair< int, VABinauralCluster* > assignCluster(VABinauralClusteringState* clustering, VABinauralSoundSource* source, double threshold, int numFreeClusters); void PreRequest(); void PreRelease(); }; #endif // IW_VACORE_BINAURALCLUSTERING