Newer
Older
Import / projects / Gameloft / bne_lib / code / Utils / ObjectUtils.h
#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_