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

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Ziele von EINI I + II Einführen in „Informatik“
Objektorientierte Programmierung
der Universität Oldenburg
Objektorientierte Programmierung
Informatik II – Kapitel 11
Programmierung II Prof. Dr. Michael Löwe
Oe,tw Sound-Aktionen (1) Start des Programms RoomControllerSoundManager doAction ( ACTION_SWITCH_ROOM ) Room (für den Ambient-Sound) und Slot-Daten.
Oe,tw Sound-Aktionen (1) Start des Programms RoomControllerSoundManager doAction ( ACTION_SWITCH_ROOM ) Room (für den Ambient-Sound) und Slot-Daten.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
Atmel AVR JTAG Einführung
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Nils Jagdfeld, Patrick Gunia
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
SoundManager oe, ab, rpn awp.sound.* Klassen-Konzept SoundXXXRoom SoundFxProcessor SoundCommonRoom Seite 1 SoundDistributor SoundA3D a3dtools.
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Kollektionstypen (1) Es sind polymorphe Typkonstruktoren, jeweils als Sorten- und als Klassenkonstruktor (t,v beliebige Typen): –set, Set :Ungeordnete.
Die Persistenzschicht
Automatische Übersetzungen mit Google
Einführung in die Programmierung
Was macht eigentlich dieses ExsoForm? Ein Beispiel für eine Dokumentendefinition in Screenshots.
Von der Planung bis zum Hauptmenü Seminar: Softwaretechnologie II Dozent: Prof. Manfred Thaller Referent: Jan Bigalke.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vom Kontext zum Projekt V Carina Berning Sabrina Gursch Pierre Streicher Intelligente Dateisysteme.
Objektorientiertes Konstruieren
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Objectives Verstehen was unterDelegate verstanden wird
LEGO NXT Roboter in Java programmieren
ICT – Modul Textverarbeitung
SOFTWARE TECHNOLOGY 2009/2010 Faculty of Electrical Engineering and Technical Informatics Budapest University of Technology and Economics OO problems 1.
Programmiervorkurs WS 2014/15 Instanzmethoden
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung WS 2013/14.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
1 VeranstaltungThemaVortragende AINF-Lehrgang 2003 Titel: Grundlagen der Objektorientierten Programmierung Name: Gruppe Programmierung.
A Workshop About this chapter General description Units Time Schedule
Java-Kurs Übung Besprechung der Hausaufgabe
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Anforderungen an die neue Datenstruktur
Konstruktoren.
Die Klasse Geist.
Grundkurs Informatik 11-13
November 18 Informatik Kurse
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

SoundManager oe awp.sound.* Klassen-Konzept SoundMaker SoundListener SoundSceneManager SoundSceneManagerRoom SoundSceneManagerTextarea SoundSceneManagerPopup 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

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

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

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

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

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