#ifndef _OBJECT_UTILS_H_
#define _OBJECT_UTILS_H_
#include "../../../GameConfig.h"
class RKTransformObject;
namespace CasualCore {
class Level;
#if defined(BNE_OBJECT_INTERFACE)
class Object;
#endif // defined(BNE_OBJECT_INTERFACE)
} //namespace CasualCore
namespace bne {
#if !defined(BNE_OBJECT_CROSSOVER)
/// \brief Remove and destroy object and all its children (recursively) from the level
/// \param a_level pointer to a level
/// \param a_obj object to remove
void RemoveObjectFromLevel(CasualCore::Level* a_level, RKTransformObject* a_obj);
/// \brief Create object hierarchy from an object template name
RKTransformObject* CreateObjectFromFriendlyRKIName(const char* a_pFriendlyRKIName);
/// \brief Destroys an object
void DestroyObject(RKTransformObject* a_pObject);
#endif // !defined(BNE_OBJECT_CROSSOVER)
#if defined(BNE_OBJECT_INTERFACE)
namespace object
{
// Bne object interface
CasualCore::Object *CreateFromTemplate(const char *pFriendlyRKIName, CasualCore::Level *pLevel);
CasualCore::Object *CreateFromTemplate(const char *pFriendlyRKIName, RKTransformObject *pParent);
RKTransformObject *CreateFromType(const char *pObjectTypeName, CasualCore::Level *pLevel);
RKTransformObject *CreateFromType(const char *pObjectTypeName, RKTransformObject *pParent);
void Destroy(RKTransformObject *pObject);
void AttachToLevel(RKTransformObject *pObject, CasualCore::Level *pLevel);
void AttachToParent(RKTransformObject *pObject, RKTransformObject *pParentObject, int refIndex = -1, bool refIndexIsBone = false);
}
#endif // defined(BNE_OBJECT_INTERFACE)
} // namespace bne
#endif // _OBJECT_UTILS_H_