| 937 | } |
| 938 | |
| 939 | ITr2AudEmitterPtr EveEffectRoot2::FindSoundEmitter( const char* name ) |
| 940 | { |
| 941 | for( auto it = begin( m_observers ); it != end( m_observers ); ++it ) |
| 942 | { |
| 943 | auto observer = *it; |
| 944 | if( observer->m_name == name ) |
| 945 | { |
| 946 | ITr2AudEmitterPtr listener = BlueCastPtr( observer->GetObserver() ); |
| 947 | return listener; |
| 948 | } |
| 949 | } |
| 950 | |
| 951 | for( auto it = m_effectChildren.begin(); it != m_effectChildren.end(); it++ ) |
| 952 | { |
| 953 | if( auto owner = dynamic_cast<ITr2SoundEmitterOwner*>( *it ) ) |
| 954 | { |
| 955 | auto emitter = owner->FindSoundEmitter( name ); |
| 956 | if( emitter != nullptr ) |
| 957 | { |
| 958 | return emitter; |
| 959 | } |
| 960 | } |
| 961 | } |
| 962 | return nullptr; |
| 963 | } |
| 964 | |
| 965 | void EveEffectRoot2::AddObserver( TriObserverLocalPtr observer ) |
| 966 | { |