//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------

#ifndef _OBJECTTYPES_H_
#define _OBJECTTYPES_H_

#include "platform/types.h"

// Types used for SimObject type masks (SimObject::mTypeMask)
//

/* NB!  If a new object type is added, don't forget to add it to the
 *      consoleInit function in simBase.cc
 */

enum SimObjectTypes
{
   /// @name Types used by the SceneObject class
   /// @{
   DefaultObjectType =           0,
   StaticObjectType =            BIT(0),
   /// @}

   /// @name Basic Engine Types
   /// @{

   ///
   EnvironmentObjectType =       BIT(1),
   TerrainObjectType =           BIT(2),
   InteriorObjectType =          BIT(3),
   WaterObjectType =             BIT(4),
   TriggerObjectType =           BIT(5),
   MarkerObjectType =            BIT(6),
   AtlasObjectType   =           BIT(7), // Buy TSE.
   InteriorMapObjectType =       BIT(8),
   DecalManagerObjectType =      BIT(9),
   /// @}

   /// @name Game Types
   /// @{
   GameBaseObjectType =          BIT(10),
   ShapeBaseObjectType =         BIT(11),
   CameraObjectType =            BIT(12),
   StaticShapeObjectType =       BIT(13),
   PlayerObjectType =            BIT(14),
   ItemObjectType =              BIT(15),
   VehicleObjectType =           BIT(16),
   VehicleBlockerObjectType =    BIT(17),
   ProjectileObjectType =        BIT(18),
   ExplosionObjectType  =        BIT(19),
   CorpseObjectType =            BIT(20),
   DebrisObjectType =            BIT(22),
   PhysicalZoneObjectType =      BIT(23),
   StaticTSObjectType =          BIT(24),
   AIObjectType =                BIT(25),
   StaticRenderedObjectType =    BIT(26),
   /// @}

   /// @name Other
   /// The following are allowed types that can be set on datablocks for static shapes
   /// @{
   DamagableItemObjectType =     BIT(27),
   /// @}
};

#define STATIC_COLLISION_MASK   (   TerrainObjectType    |  \
                                    InteriorObjectType   |  \
                                    StaticObjectType )      \

#define DAMAGEABLE_MASK  ( PlayerObjectType        |  \
                           VehicleObjectType       |  \
                           DamagableItemObjectType )  \

#endif
