Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SoundManager oe 6.10.2000 awp.sound.* Klassen-Konzept SoundMaker SoundListener SoundSceneManager SoundSceneManagerRoom SoundSceneManagerTextarea SoundSceneManagerPopup.

Ähnliche Präsentationen


Präsentation zum Thema: "SoundManager oe 6.10.2000 awp.sound.* Klassen-Konzept SoundMaker SoundListener SoundSceneManager SoundSceneManagerRoom SoundSceneManagerTextarea SoundSceneManagerPopup."—  Präsentation transkript:

1 SoundManager oe 6.10.2000 awp.sound.* Klassen-Konzept SoundMaker SoundListener SoundSceneManager SoundSceneManagerRoom SoundSceneManagerTextarea SoundSceneManagerPopup 1 11 1 1 1 Spezialisierung Besitzt 1 plus n SoundA3D 1 1 SoundKoa BoundsHelper SoundA3DStatus 1 Verhältnis: 0, am Anfang 1, falls A3D-geladen 2, temporär, um Änderungs- wunsch zu speichern 1 a3dtools Aufrufe SoundViewer 1 1 Protokoll der Aufrufe 1 1 Seite 1

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 an den Listener und an den jeweiligen SceneManager. Außerdem ein bischen Status-Merken: Air-Modus oder nicht, Popup-Menü oder nicht, etc. -------------------------------------- SoundSceneManagerRoom m_sceneRoom; // der aktuelle Raum SoundSceneManagerPopup m_scenePopmenu; // das aktuelle Menü SoundSceneManagerTextarea m_sceneTextarea; // der aktuelle Textbereich -------------------------------------- setListenerPos( Point3d ); doAction( int actionId ); ; // A3D initialisieren etc. exit(); // A3D abmelden awp.sound.* SoundManager und SoundSceneManager SoundMaker SoundListener SoundSceneManager ------------------------------------------------------ // allen Szenen gemeinsamen Attribute: SoundMaker m_makerContainer; // das Ganze SoundMaker[] m_makerElements; // seine Einzelelemente int m_koa; // was ist das hier: Raum, Popupmenü etc. ------------------------------------------------------ // allen Szenen gemeinsame Methoden: getAllData(); // alle SoundData-Objekte holen flushContainerAndElements; // Flush bei allen unloadAll(); // bei allen A3D-entladen SoundSceneManagerRoom ------------------------------- // Realisierung der Aktions SoundSceneManagerTextarea ------------------------------- // Realisierung der Aktions SoundSceneManagerPopup ------------------------------- // Realisierung der Aktions Seite 2

3 SoundManager awp.sound.* SoundMaker SoundMaker ist _eine_ Sound-Source; hat die Funktionen 1. Kapselt (die Attribute von) SoundData. 2. Kapselt die Aufrufe von A3D per Delegation an SoundA3D 3. Realisiert die speziellen Soundeffekte der verschiedenen Scenen --------------------------------------------------------------- // Attribute aus SoundData // KOA SoundA3D m_soundcard; // Verbindung zur Soundkarte ------------------------------------------------------------- // allgemeine Funktionen: // Datei in A3D laden/entladen // allgemeine Effekte (nicht ge-queue-te), delegiert an SoundA3D: // allgemeine ge-queue-te Effekte, delegiert an SoundA3D: // spezifische Effekte: // Methoden für RoomSlot: Transformation zum Ambientger, etc. // Methoden für Menü // Methoden für Textarea // Methoden für Speech // Umrechnung der logischen Koordinaten in RoomSlot-Koordianten // Umrechnung der logischen Koordinaten in Popup-Menü-Koordinaten SoundListenerSoundSceneManager m_makerContainer m_makerElements[] Seite 3

4 awp.sound.* SoundA3D SoundA3D ist die einzige Klasse, die Aufrufe von A3D via a3dtools macht. Diese Aufrufe werden hier synchronisiert (mit m_sync). Die a3dtools-Aufrufe für Soundquellen sind Instanzmethoden, die übrigen (A3D-Gesamt, Listener, etc.) sind statische Methoden. Die einzelnen Effekte (an/aus, Lautstärke, Position etc.) für eine Soundquelle werden in einer Queue gesammelt und können dann (einigermassen) gleichzeitig an die Soundkarte übermittelt werden. Das Laden/Entladen in A3D wird über this synchronisiert. --------------------------------------------------------------- boolean m_isA3DLoaded; // ist die Datei A3D-geladen? long m_firstId; // eine der A3D-IDs int m_secondId; // eine der A3D-IDs SoundA3DStatus m_status; // Status dieser Tonquelle (an/aus, Lautstärke etc.) static Object m_sync; // Synchronisationsobjekt für a3dtools-Aufrufe SoundA3DStatus m_queue; // Warteschlange für ge-queue-te Effekte ------------------------------------------------------------- // Datei in A3D laden // Datei entladen // allgemeine Effekte (nicht ge-queue-te, via queued mit sofort folgendem flush) play(); mute(); // etc. // allgemeine ge-queue-te Effektet: queuedFlush(); // ge-queue-te Effekte realisieren, Queue zurücksetzen queuedMute(); // nicht spielen queuedPlay(); // spielen queuedPlayOnce(); // spielen queuedGain(); // Lautstärke setzen queuedPosition(); // Position setzen queuedSize(); // Ausdehnung er Soundquelle setzen queuedMaxDistance; // die maximale Distanz setzen // statische Methoden zum Initialisieren von A3D (werden vom SoundManager aufgerufen) // A3D-Flush (statisch) // statische Methoden um den Listener zu setzen (werden von SoundListener aufgerufen) Seite 4

5 awp.sound.* SoundA3DStatus, SoundKoa, BoundsHelper, SoundViewer SoundA3DStatus SoundA3DStatus dient zum Speichern des Status einer Soundquelle (und damit auch zur Aufnahme der Warteschlange) Die m_real...-Angaben gibt es, weil wir es statt play/stop lieber nach dem ersten play bei play belassen und die Lautstärke auf 0 setzen. --------------------------------------------------------------- double m_realGain; // tatsächliches Gain, -1 = noch nie play gemacht boolean m_realPlaying; // tatsächliches Play int m_playing; // Status: Ist dieser Ton gerade an oder aus? double m_gain; // Status: Lautstärke dieses Tons double m_maxDistance; // Status: Maximale Distanz, wo noch zu hoeren Point3d m_position; // Status: Position Point3d m_size; // Status: Ausdehnung der Soundquelle (Volumetric Bounds) ------------------------------------------------------------- clone(); // eine Kopie hiervon herstellen SoundKoa Diese Klasse beinhaltet die Konstanten für die Beschreibung der Scene und der Art der Scene (KOA = Kind of Audio-Scene), sowie Hilfsfunktionen dafür, z.B. um die zum KOA passenden SoundData-Elemente vom RoomController zu holen. BoundsHelper Diese Klasse beinhaltet einige statische Hilfsfunktionen, die wir von den Bounds- Klassen brauchen, die es dort aber nicht gibt. SoundViewer Diese Klasse visualisiert den Status aller Soundquellen (das ist visuell das Attribut m_status aller SoundA3D-Instanzen). Seite 5

6 awp.sound.* SoundListener SoundListener ist der Hörer in unserer Welt. Hier werden die Koordinaten des Hörers – je nach Modus (RoomSlot, Popup-Menü) – gesetzt. --------------------------------------------------------------- Point3d m_currentPosition; // logische Koordinaten Point3d m_currenta3dPos; // A3D-Koordinaten ------------------------------------------------------------- setPosition( Point3d, int ); // neue Koordinaten (inkl. Modus) vom SoundManager Seite 6


Herunterladen ppt "SoundManager oe 6.10.2000 awp.sound.* Klassen-Konzept SoundMaker SoundListener SoundSceneManager SoundSceneManagerRoom SoundSceneManagerTextarea SoundSceneManagerPopup."

Ähnliche Präsentationen


Google-Anzeigen