Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SoundManager oe, ab, rpn 17.10.2000 awp.sound.* Klassen-Konzept SoundXXXRoom SoundFxProcessor SoundCommonRoom Seite 1 SoundDistributor SoundA3D a3dtools.

Ähnliche Präsentationen


Präsentation zum Thema: "SoundManager oe, ab, rpn 17.10.2000 awp.sound.* Klassen-Konzept SoundXXXRoom SoundFxProcessor SoundCommonRoom Seite 1 SoundDistributor SoundA3D a3dtools."—  Präsentation transkript:

1 SoundManager oe, ab, rpn 17.10.2000 awp.sound.* Klassen-Konzept SoundXXXRoom SoundFxProcessor SoundCommonRoom Seite 1 SoundDistributor SoundA3D a3dtools SoundVirtualSource 1 0,.., 9 0,* 1 SoundEffect SoundEffect_Gain SoundEffect_Load SoundEffect_ListenerPos etc. Als Parameter einer Methode Als Parameter einer Methode und in der internen Liste

2 SoundManager Der SoundManager ist die Schnittstelle nach aussen. Intern verteilt er die Aktionen und die neuen Koordinaten an alle, die sie haben wollen, d.h die aktuellen/aktiven Söhne von SoundCommonRoom. -------------------------------------- setListenerPos( Point3d ); doAction( int actionId ); ; // A3D initialisieren etc. exit(); // A3D abmelden awp.sound.* SoundManager Seite 2

3 SoundEffectProcessor ist die Warteschlange, in die die gewünschten Geräuscheffekte eingetragen werden können. Kapselt außerdem den Sound-Teilsystem-Thread, der aufwachen muss, wenn ein Effekt hörbar werden soll (gemäß Zeitmarke) oder wenn neue Effekte in die Warteschlange eingestellt werden. ----------------------------------------------------------------------------- List m_effectQueue; // die Warteschlange ----------------------------------------------------------------------------- int registerVirtualSource(); // eine neue virtuelle Sound-Source anlegen. Rückgabe ist eine neue ID. insertEffect( SoundEffect ); // eine neue Effekt-Anforderung einstellen. awp.sound.* SoundEffectProcessor und SoundDistributor SoundDistributor verwaltet alle virtuellen Soundquellen und verteilt sie auf die tatsächlich zur Verfügung stehenden A3D-Kanäle. ------------------------------------------------------------- SoundA3D[] m_physicalSources; Vector m_virtualSources; int m_lastIdGiven; // zuletzt vergebene (virtual) ID ------------------------------------------------------------- int registerVirtualSource(); // eine neue virtuelle Sound-Source anlegen. Rückgabe ist eine neue ID. processEffect( SoundEffect ); // einen Effekt hörbar machen/realisieren. Im Ggs. zu SoundFxProcessor wird die Zeitmarke ignoriert. Seite 3

4 SoundEffect ist ein Effekt, der Geräusch macht oder verändert. Die speziellen Parameter zu den Kommandos finden in passenden Söhnen Platz. ----------------------------------------------------------------------------- int m_commandId; // die ID des Kommandos long m_time; // der Zeitpunkt (in Millisek.), wann das zu tun ist: 1. Als Eingabeparameter an SoundFxProcessor ist das realtiv zu jetzt zu verstehen, 0 bedeutet daher sofort 2. In der Warteschlange in m_effectQueue ist der Zeitpunkt die reele Zeit. 3. Als Eingabeparameter an SoundDistributor wird dieser Eintrag ignoriert. int m_virtualSourceId; // die ID der Source. ----------------------------------------------------------------------------- awp.sound.* SoundEffect Seite 4 IDSohnAttributeFunktion CMD_LOADSoundEffect_LoadString m_filename;neue Tonquelle laden CMD_UNLOADSoundEffect_Unload-Source wieder freigeben CMD_PLAYSoundEffect_Playboolean m_loop;(einmal) spielen! CMD_MUTESoundEffect_Mute-nicht spielen! CMD_GAINSoundEffect_Gainfloat m_gain;die Lautstärke von 0 bis 1setzen CMD_POSITIONSoundEffect_PositionPoint3f m_position;die Position der Tonquelle setzen CMD_SIZESoundEffect_SizePoint3f m_size;die Ausmaße setzen CMD_MAX_DISTANCESoundEffect_MaxDistancefloat m_maxDistance;die maximale Distanz setzen CMD_LISTENER_POSSoundEffect_ListenerPosPoint3f m_position;Den Listener positionieren

5 awp.sound.* SoundA3D SoundA3D ist die einzige Klasse, die Aufrufe von A3D via a3dtools macht. Die a3dtools-Aufrufe für Soundquellen sind Instanzmethoden, die übrigen (A3D-Gesamt, Listener, etc.) sind statische Methoden. --------------------------------------------------------------- boolean m_isA3DLoaded; // ist die Datei A3D-geladen? long m_firstId; // eine der A3D-IDs int m_secondId; // eine der A3D-Ids SoundVirtualSource m_virtualSource; // diese Tonquelle im virtuellen. --------------------------------------------------------------- // Datei in A3D laden // Datei entladen // allgemeine Effektete: setMute(); // nicht spielen setPlay(boolean); // spielen (oder einmal spielen) setGain(); // Lautstärke setzen setPosition(); // Position setzen setSize(); // Ausdehnung er Soundquelle setzen setMaxDistance; // die maximale Distanz setzen // statische Methoden zum Initialisieren von A3D (werden vom SoundManager aufgerufen) // A3D-Flush (statisch) // statische Methoden um den Listener zu setzen Seite 5

6 awp.sound.* SoundVirtualSource Seite 6 SoundVirtualSource SoundVirtualSource dient zum Speichern des Status einer Tonquelle. Dient der Repräsentation aller Soundquellen, egal ob tatsächlich in A3D oder nicht. --------------------------------------------------------------- int m_virtualId; // die virtuelle Source-ID; int m_playing; // Status: Ist dieser Ton gerade an oder aus? float m_gain; // Status: Lautstärke dieses Tons float m_maxDistance; // Status: Maximale Distanz, wo noch zu hoeren Point3f m_position; // Status: Position Point3f m_size; // Status: Ausdehnung der Soundquelle (Volumetric Bounds) SoundA3D m_physicalSource; // Die tatsächliche A3D-Tonquelle. Null, falls nicht A3D-geladen -------------------------------------------------------------


Herunterladen ppt "SoundManager oe, ab, rpn 17.10.2000 awp.sound.* Klassen-Konzept SoundXXXRoom SoundFxProcessor SoundCommonRoom Seite 1 SoundDistributor SoundA3D a3dtools."

Ähnliche Präsentationen


Google-Anzeigen