⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oasissoundsystem.h

📁 使用stl技术,(还没看,是听说的)
💻 H
字号:
/******************************************************************************

 * This source file is part of Bad Camel Gaming

 * Copyright (C) 2003  Zephie Greyvenstein

 * See Readme.html for acknowledgements

 *

 * This library is free software; you can redistribute it and/or

 * modify it under the terms of the GNU Lesser General Public

 * License as published by the Free Software Foundation; either

 * version 2.1 of the License, or (at your option) any later version.

 *

 * This library is distributed in the hope that it will be useful,

 * but WITHOUT ANY WARRANTY; without even the implied warranty of

 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

 * Lesser General Public License for more details.

 *

 * You should have received a copy of the GNU Lesser General Public

 * License along with this library; if not, write to the Free Software

 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 *****************************************************************************/



/******************************************************************************

 * FILENAME    : oasisSoundSystem.h

 * DESCRIPTION : Sound engine

 * AUTHOR      : Zephie Greyvenstein

 *****************************************************************************/



/// Avoid double inclusion

#ifndef __SOUNDSYSTEM_H__

#define __SOUNDSYSTEM_H__



/// Include common stuff

#include "oasisCommon.h"

/// Include the rest of the needed oasis stuff

#include "oasisResourceManager.h"

#include "oasisSystem.h"

#include "oasisMixer.h"

#include "oasisPool.h"

#include "oasisSingleton.h"

#include "oasisVector3.h"



namespace Oasis {  

  /** Sound effects engine

      @remarks

      The sound system loads in and keeps handles on all sound effect templates

      defined in scripts. Sound effects instances are then create from these

      templates using the helper functions found in this class.

  */

  class _oasisExport soundSystem : public resourceManager,

                      public system,                                        

                      public mixer,

                      public pool,

                      public singleton< soundSystem > {

    /// The sound resource needs access to data functions

    friend class soundResource;

  public: 

    /// Constructor

    soundSystem( );

    /// Destructor

    virtual ~soundSystem( ); 



    /// Get singleton

    static soundSystem &get( void );

    /// Get singleton pointer

    static soundSystem *getPtr( void );



    /// Reset this system

    void reset( void );

    /// Update this system

    void update( real time );  

    

    /// Get a sound template for further editing

    soundResource *getSoundTemplate( const string &name );

    /// Create a new sound template and add it to the system

    soundResource *createSoundTemplate( const string &name );    

    /** Create a new sound effect from a template

	@remarks

	You create sound effects via this function so that the sound system

	can keep track of all sound effects in the system

    */

    sound *createSound( const string &soundName,

			const string &templateName );

    /// Remove a sound effect from the system

    void removeSound( sound *oldSound );

    /// Remove a sound effect from the system

    void removeSound( const string &soundName );

    /// Stop all sounds in the sound system

    void stopAllSounds( void );

    

    /// Set the 3D listener position

    void setListenerPosition( const vector3 &pos, 

			      const vector3 &forward = vector3::UNITZ,

			      const vector3 &up = vector3::UNITY ); 

    

  private:     

    /// Creates a new sound template as a resource

    resource *createResource( const string &name );

    

    /// Creates a new sound as a poolable

    poolable *_createPoolable( void );

    

    /// Parse a sound file

    void _parseFile( Ogre::DataChunk &chunk );

    /// Parse attributes for the sound file

    void _parseAttribute( const Ogre::String &line, soundResource *file );    

  };

};



#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -