#ifndef BONE_HPP
#define BONE_HPP

// Détection du système cible...
#include "usgeDetectSystem.h"

// Les types "USpeed Game Engine"
#include "Core/CoreTypes.hpp"
#include "Skeleton.hpp"


namespace USpeedGameEngine
{

class Skeleton::Bone
{
    /****************
    * Les attributs *
    ****************/
    public :
    protected :
    private :
        USGE_Float3 rotation;           //!< La rotation de l'os (par rapport à son parent)
        Skeleton::Bone *parentBone;     //!< L'os parent
        unsigned long int *vertices;    //!< Liste des "Vertex" associés à cet os
        unsigned long int vCount;       //!< Nombre de "Vertex" associés à cet os

    /***************
    * Les méthodes *
    ***************/
    public :
        // Destructeur par défaut
        ~Bone();
        // Constructeur par défaut
        Bone();

        // Remise à zéro de l'instance de la classe.
        void clear();
        // Association de dépendance à un os parent.
        void setParent(Skeleton::Bone *bone);
        // Ajoute une liste de "Vertex" à la suite
        bool addVextices(unsigned long int *list, unsigned long int count);

        ////////////////////////////
        // Surcharge d'opérateurs //
        ////////////////////////////
        // Permet d'accéder au n° du "vertex" référencé
        unsigned long int operator[] (unsigned long int index);

    protected :
    private :
};

}        // Fin "namespace USpeedGameEngine"

#endif
