sfxResource.cpp
Engine/source/sfx/sfxResource.cpp
Classes:
Detailed Description
1 2//----------------------------------------------------------------------------- 3// Copyright (c) 2012 GarageGames, LLC 4// 5// Permission is hereby granted, free of charge, to any person obtaining a copy 6// of this software and associated documentation files (the "Software"), to 7// deal in the Software without restriction, including without limitation the 8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9// sell copies of the Software, and to permit persons to whom the Software is 10// furnished to do so, subject to the following conditions: 11// 12// The above copyright notice and this permission notice shall be included in 13// all copies or substantial portions of the Software. 14// 15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21// IN THE SOFTWARE. 22//----------------------------------------------------------------------------- 23 24#include "sfx/sfxResource.h" 25#include "sfx/sfxFileStream.h" 26#include "core/util/fourcc.h" 27#include "core/resourceManager.h" 28 29 30 31// Ugly workaround to keep the constructor protected. 32struct SFXResource::_NewHelper 33{ 34 static SFXResource* New( String fileName, const ThreadSafeRef< SFXStream>& stream ) 35 { 36 return new SFXResource( fileName, stream ); 37 } 38}; 39 40 41template<> 42void* Resource< SFXResource >::create( const Torque::Path& path ) 43{ 44 String fullPath = path.getFullPath(); 45 46 // Try to open the stream. 47 ThreadSafeRef< SFXStream> stream = SFXFileStream::create( fullPath ); 48 if( !stream ) 49 return NULL; 50 51 // We have a valid stream... create the resource. 52 SFXResource* res = SFXResource::_NewHelper::New( fullPath, stream ); 53 54 return res; 55} 56 57template<> 58ResourceBase::Signature Resource< SFXResource >::signature() 59{ 60 return MakeFourCC( 's', 'f', 'x', 'r' ); 61} 62 63Resource< SFXResource> SFXResource::load( String filename ) 64{ 65 return ResourceManager::get().load( filename ); 66} 67 68SFXResource::SFXResource( String fileName, SFXStream *stream ) 69 : mFileName( fileName ), 70 mFormat( stream->getFormat() ), 71 mDuration( stream->getDuration() ) 72{ 73} 74 75bool SFXResource::exists( String filename ) 76{ 77 return SFXFileStream::exists( filename ); 78} 79 80SFXStream* SFXResource::openStream() 81{ 82 return SFXFileStream::create( mFileName ); 83} 84