#ifndef __SKELETON_H__
#define __SKELETON_H__

typedef struct Skeleton Skeleton;

#include "3dmath/Vector.h"
#include "utilities/Atom.h"

struct Skeleton_bone {
	Atom boneID;
	int parentIndex;
	Vector3 position;
};

#define Skeleton_structContents \
	unsigned int numberOfBones; \
	struct Skeleton_bone * bones; \
	\
	void (* dispose)(void * self); \
	void * (* createCopy)(void * self); \
	unsigned int (* boneIndexForID)(void * self, Atom boneID);

struct Skeleton {
	Skeleton_structContents
};

Skeleton * Skeleton_create();
void Skeleton_init(Skeleton * self);
void Skeleton_initCopy(Skeleton * self, Skeleton * original);

void Skeleton_dispose(void * selfPtr);
void * Skeleton_createCopy(void * selfPtr);
unsigned int Skeleton_boneIndexForID(void * selfPtr, Atom boneID);

#endif
