Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 4196 in orxonox.OLD


Ignore:
Timestamp:
May 16, 2005, 3:16:33 PM (19 years ago)
Author:
bensch
Message:

orxonox/branches/openAL: implemented some basic Functions

Location:
orxonox/branches/openAL/src
Files:
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • orxonox/branches/openAL/src/Makefile.am

    r4195 r4196  
    131131                 defs/stdincl.h \
    132132                 defs/glincl.h \
     133                 defs/alincl.h \
    133134                 defs/comincl.h \
    134135                 defs/confincl.h \
  • orxonox/branches/openAL/src/Makefile.in

    r4195 r4196  
    375375                 defs/stdincl.h \
    376376                 defs/glincl.h \
     377                 defs/alincl.h \
    377378                 defs/comincl.h \
    378379                 defs/confincl.h \
  • orxonox/branches/openAL/src/defs/alincl.h

    r4187 r4196  
    11/*!
    2   \file glincl.h
    3   \brief This file includes gl Headers.
     2  \file alincl.h
     3  \brief This file includes al Headers.
    44 
    5   no Class is defined here, but the opengl Headers
     5  no Class is defined here, but the openAL Headers
    66*/
    77
    8 #ifndef _GLINCL_H
    9 #define _GLINCL_H
    10 
    11 #include <SDL.h>
     8#ifndef _ALINCL_H
     9#define _ALINCL_H
    1210
    1311#ifndef __APPLE__
    14 #include <GL/gl.h>
    15 #include <GL/glu.h>
     12#include <AL/al.h>
     13#include <AL/alu.h>
     14#include <AL/alut.h>
    1615#else
    17 #include <OpenGL/gl.h>
    18 #include <OpenGL/glu.h>
     16#include <OpenAL/al.h>
     17#include <OpenAL/alu.h>
     18#include <OpenAL/alut.h>
    1919#endif
    2020
    21 #endif /* _GLINCL_H */
     21#endif /* _ALINCL_H */
  • orxonox/branches/openAL/src/lib/coord/p_node.h

    r4194 r4196  
    6666  void setRelDir (const Quaternion& relDir);
    6767  inline const Quaternion& getAbsDir () const { return this->absDirection; }
     68  inline Vector getAbsDirV(void) const { return this->absDirection.apply(Vector(0,1,0)); }
    6869  void setAbsDir (const Quaternion& absDir);
    6970  void shiftDir (const Quaternion& shift);
  • orxonox/branches/openAL/src/lib/math/vector.cc

    r4194 r4196  
    329329*/
    330330
    331 Vector Quaternion::apply (Vector& v) const
     331Vector Quaternion::apply (const Vector& v) const
    332332{
    333333  Quaternion q;
  • orxonox/branches/openAL/src/lib/math/vector.h

    r4194 r4196  
    9696  return r;}
    9797  Quaternion inverse () const;
    98   Vector apply (Vector& f) const;
     98  Vector apply (const Vector& f) const;
    9999  float norm () const;
    100100  void matrix (float m[4][4]) const;
  • orxonox/branches/openAL/src/lib/sound/sound_engine.cc

    r4195 r4196  
    1717
    1818#include "sound_engine.h"
     19#include "p_node.h"
     20#include "list.h"
    1921
    2022using namespace std;
    2123
     24
     25/**
     26   \brief Creates a Soundbuffer out of an inputfile
     27   \param fileName The name of the File
     28*/
     29SoundBuffer::SoundBuffer(const char* fileName)
     30{
     31  SoundEngine::getInstance()->addBuffer(this);
     32
     33  ALenum format;
     34  ALvoid* data;
     35  ALsizei freq;
     36
     37  alGenBuffers(1, &this->bufferID);
     38  alutLoadWAVFile((ALbyte*)fileName, &format, &data, &this->size, &freq, &this->loop);
     39  alBufferData(this->bufferID, format, data, this->size, freq);
     40  alutUnloadWAV(format, data, this->size, freq);
     41}
     42
     43SoundBuffer::~SoundBuffer(void)
     44{
     45  SoundEngine::getInstance()->removeBuffer(this);
     46}
     47
     48
     49
     50/**
     51   \brief creates a SoundSource at position sourceNode with the SoundBuffer buffer
     52*/
     53SoundSource::SoundSource(SoundBuffer* buffer, PNode* sourceNode)
     54{
     55  SoundEngine::getInstance()->addSource(this);
     56
     57  this->buffer = buffer;
     58  this->sourceNode = sourceNode;
     59}
     60
     61SoundSource::~SoundSource(void)
     62{
     63  SoundEngine::getInstance()->removeSource(this);
     64}
    2265
    2366/**
     
    2669SoundEngine::SoundEngine ()
    2770{
    28    this->setClassName ("SoundEngine");
     71  this->setClassName ("SoundEngine");
     72   
     73   this->initAudio();
    2974
     75   this->listener = NULL;
     76   this->bufferList = new tList<SoundBuffer>;
     77   this->sourceList = new tList<SoundSource>;
    3078}
    3179
     
    54102
    55103}
     104
     105/**
     106   \brief sets The listener (normaly the Camera)
     107*/
     108void SoundEngine::setListener(PNode* listener)
     109{
     110  this->listener = listener;
     111}
     112
     113
     114void SoundEngine::addBuffer(SoundBuffer* buffer)
     115{
     116  this->bufferList->add(buffer);
     117}
     118
     119void SoundEngine::removeBuffer(SoundBuffer* buffer)
     120{
     121  this->bufferList->remove(buffer);
     122}
     123
     124void SoundEngine::addSource(SoundSource* source)
     125{
     126  this->sourceList->add(source);
     127}
     128void SoundEngine::removeSource(SoundSource* source)
     129{
     130  this->sourceList->remove(source);
     131}
     132
     133
     134/**
     135   \brief updates all The positions, Directions and Velocities of all Sounds
     136*/
     137void SoundEngine::update(void)
     138{
     139
     140  // updating the Listeners Position
     141  if (this->listener)
     142    {
     143      alListener3f(AL_POSITION,
     144                   this->listener->getAbsCoor().x,
     145                   this->listener->getAbsCoor().y,
     146                   this->listener->getAbsCoor().z);
     147      alListener3f(AL_VELOCITY,
     148                   this->listener->getVelocity().x,
     149                   this->listener->getVelocity().y,
     150                   this->listener->getVelocity().z);
     151      Vector absDirV = this->listener->getAbsDirV();
     152      alListener3f(AL_ORIENTATION,
     153                   absDirV.x,
     154                   absDirV.y,
     155                   absDirV.z);
     156    }
     157  // updating all the Sources positions
     158  tIterator<SoundSource>* iterator = this->sourceList->getIterator();
     159  SoundSource* enumSource = iterator->nextElement();
     160  while (enumSource)
     161    {
     162      alSource3f(enumSource->getID(), AL_POSITION,
     163                 enumSource->getNode()->getAbsCoor().x,
     164                 enumSource->getNode()->getAbsCoor().y,
     165                 enumSource->getNode()->getAbsCoor().z);
     166      alSource3f(enumSource->getID(), AL_VELOCITY,
     167                 enumSource->getNode()->getVelocity().x,
     168                 enumSource->getNode()->getVelocity().y,
     169                 enumSource->getNode()->getVelocity().z);
     170
     171      enumSource = iterator->nextElement();
     172    }
     173  delete iterator;
     174}
     175
     176/**
     177   \brief initializes Audio in general
     178*/
     179bool SoundEngine::initAudio(void)
     180{
     181  alutInit(NULL, 0);
     182  alGetError();
     183}
     184
  • orxonox/branches/openAL/src/lib/sound/sound_engine.h

    r4195 r4196  
    99
    1010#include "base_object.h"
     11#include "alincl.h"
    1112
    1213// FORWARD DEFINITION
     14class PNode;
     15template<class T> class tList;
    1316
    14 //! A Class that handles audio via the openAudioLibrary
     17
     18//! A class that represents a datastructure to play Sounds.
     19class SoundBuffer
     20{
     21 public:
     22  SoundBuffer(const char* fileName);
     23  ~SoundBuffer(void);
     24
     25 private:
     26  ALuint bufferID;              //!< The address of the Buffer.
     27
     28  ALsizei size;                 //!< The size of the Buffer.
     29  ALboolean loop;               //!< loop information.
     30};
     31
     32//! A class that represents a SoundSource
     33class SoundSource
     34{
     35 public:
     36  SoundSource(SoundBuffer* buffer, PNode* sourceNode = NULL);
     37  ~SoundSource(void);
     38
     39  /** \retruns The ID of the Source */
     40  inline ALuint getID(void) { return this->sourceID; }
     41  /** \returns the SourceNode of this Source */
     42  inline PNode* getNode(void) { return this->sourceNode;}
     43
     44 private:
     45  ALuint sourceID;              //!< The ID of the Source
     46  SoundBuffer* buffer;          //!< The buffer to play in this source.
     47  PNode* sourceNode;            //!< The SourceNode represente the position/velocity... of this source.
     48};
     49
     50
     51
     52//! A class that handles audio via the openAudioLibrary
    1553class SoundEngine : public BaseObject {
    1654
     
    1957  virtual ~SoundEngine(void);
    2058
     59  void setListener(PNode* listener);
     60
     61  void addBuffer(SoundBuffer* buffer);
     62  void removeBuffer(SoundBuffer* buffer);
     63  void addSource(SoundSource* source);
     64  void removeSource(SoundSource* source);
     65
     66
     67  void update(void);
     68
    2169 private:
    2270  SoundEngine(void);
    2371  static SoundEngine* singletonRef;
     72
     73  bool initAudio(void);
     74
     75  PNode* listener;                 //!< The listener of the Scene
     76  tList<SoundBuffer>* bufferList;  //!< A list of buffers
     77  tList<SoundSource>* sourceList;  //!< A list for all the sources in the scene.
     78
    2479};
    2580
  • orxonox/branches/openAL/src/orxonox.cc

    r4194 r4196  
    3535#include "game_loader.h"
    3636#include "graphics_engine.h"
     37#include "sound_engine.h"
    3738#include "resource_manager.h"
    3839#include "text_engine.h"
     
    151152  printf("> Initializing sound\n");
    152153  // SDL_Init(SDL_INIT_AUDIO);
    153   printf("Not yet implemented\n");
     154  SoundEngine::getInstance();
    154155  return 0;
    155156}
Note: See TracChangeset for help on using the changeset viewer.