#0 

05-01-2013 18:37:21

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Ce petit bout de code sert à charger des fichiers dans Irrklang grâce au système de fichier d'Irrlicht.
Pourquoi? Parce que les fichiers présents dans les archives ouvertes avec Irrlicht ne sont pas accessibles avec Irrklang.

Code c++ :


class SoundFileInArchive: public irrklang::IFileReader
{
public:
    //! constructeur
    SoundFileInArchive ( io::IReadFile* file )
    : File(file)
    {
    }
    //! destructeur
    virtual ~SoundFileInArchive () { File->drop(); }

    virtual irrklang::ik_s32 read(void* buffer, irrklang::ik_u32 sizeToRead) { return File->read( buffer, sizeToRead ); }
    virtual bool seek(irrklang::ik_s32 finalPos, bool relativeMovement = false) { return File->seek( finalPos, relativeMovement ); }
    virtual irrklang::ik_s32 getSize(){ return File->getSize(); }
    virtual irrklang::ik_s32 getPos()    {return File->getPos(); }
    virtual const irrklang::ik_c8* getFileName() { return File->getFileName().c_str(); }

protected:
    //! MEMBRES
    io::IReadFile* File;
};


class CMyFileFactory : public irrklang::IFileFactory
{
public:
    //! constructeur
    CMyFileFactory(io::IFileSystem* fileSys)
    : FileSys(fileSys)
    {
    }

    //! Ouvre un fichier sinon retourne NULL
    virtual irrklang::IFileReader* createFileReader(const irrklang::ik_c8* filename)
    {
        io::IReadFile* file = FileSys->createAndOpenFile(filename);
        if(file) return new SoundFileInArchive(file);
        else return NULL;
    }
protected:
    //! MEMBRES
    io::IFileSystem* FileSys;
};



Pour l'utiliser, rien de plus simple.^^

Code c++ :



ISoundEngine* SoundEngine = createIrrKlangDevice();

// création de la liaison au système de fichier d'Irrlicht
CMyFileFactory* factory = new CMyFileFactory( irrDevice->getFileSystem() );
SoundEngine->addFileFactory(factory);
factory->drop();

// chargement du fichier zip (qui contient le fichier "musique.mp3")
Device->getFileSystem()->addFileArchive("monfichierzip.zip");

// lecture du fichier son
SoundEngine->play2D("musique.mp3", false, false, true);

// libère irrklang (avant irrlicht à cause du système de fichier)
SoundEngine->drop();
// libère Irrlicht
Device->drop();

Dernière modification par johnplayer (26-01-2016 22:17:18)


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#1 

05-01-2013 23:48:38

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 904
Corrections: 2
Site web

très bonne initiative wink
merci a toi

Hors ligne


#2 

06-01-2013 09:56:18

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

De rien.^^ C'est l'avantage de la section routine par rapport à la section tuto. On est pas obligé de mettre une tonne d'explications, un code avec quelques commentaires et on contribue à la communauté. Si tout le monde mettait du code dans cette section, les projets fleuriraient beaucoup plus facilement. C'est un peu comme si on avait une équipe de programmeurs avec nous.^^
Je pense que je ferais un tuto sur la lecture et l'écriture de fichier XML un de ces 4 car, comme je l'ai appris à mes dépends, beaucoup de choses ont changées là-dessus. J'ai eu des problèmes avec l'encodage et les types de variables la dernière fois. Donc dès que j'ai le temps, je fais ça.

J'espère que d'autres personnes prendront le temps pour mettre quelques bouts de codes même s'ils paraissent anodins comme celui que j'ai mis.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#3 

07-01-2013 20:22:11

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 904
Corrections: 2
Site web

tout con mais très pratique, et ça évite de la recherche de doc, puis surtout je n'y avais pas pensser, et c'était pas ma prioritée
donc je les adapter pour cAudio et du coup c'est facil d'implementer les entitées sonord des maps q3 ! ça va me permetre d'autre application également

tout bénef !
merci

Hors ligne


#4 

07-01-2013 20:42:47

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Heureux que ça te soit utile.^^ Comme quoi même le plus simple des codes peut être utile.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
880 membres
1424 sujets
11113 messages
Dernier membre inscrit: mandrifidy
22 invités en ligne
Aucun membre connecté
RSS Feed