171 lines
10 KiB
C++
171 lines
10 KiB
C++
//
|
|
// gtaArchetype.h
|
|
//
|
|
|
|
#ifndef GTA_PHYSICS_ARCHETYPE_H
|
|
#define GTA_PHYSICS_ARCHETYPE_H
|
|
|
|
#include "physics/archetype.h"
|
|
#include "fragment/type.h"
|
|
#include "scene/2deffect.h"
|
|
|
|
#include "entity/archetypeManager.h"
|
|
|
|
namespace rage
|
|
{
|
|
class fwVehicleGlassWindowData;
|
|
}
|
|
|
|
namespace ArchetypeProperties
|
|
{
|
|
enum
|
|
{
|
|
IS_ALREADY_PROCESSED = phArchetype::PROPERTY_USER_0
|
|
};
|
|
}
|
|
|
|
// namespace for all type and include flags
|
|
// Please keep this in sync with the debug names near the bottom of gtaArchetype.cpp and with
|
|
// the ragebuilder copy in src/dev/rage/framework/tools/src/cli/ragebuilder/gta_res.h
|
|
namespace ArchetypeFlags
|
|
{
|
|
// The default type is on by default for all archetypes so that any two objects will be collidable by default.
|
|
// It can be used as some other type by projects that set type flags and include flags for all objects.
|
|
enum
|
|
{
|
|
//GTA_TYPE = DEFAULT_TYPE,
|
|
GTA_MAP_TYPE_WEAPON = BIT(1),
|
|
GTA_MAP_TYPE_MOVER = BIT(2),
|
|
GTA_MAP_TYPE_HORSE = BIT(3),
|
|
GTA_MAP_TYPE_COVER = BIT(4),
|
|
GTA_MAP_TYPE_VEHICLE = BIT(5),
|
|
|
|
GTA_VEHICLE_NON_BVH_TYPE = BIT(6),
|
|
GTA_VEHICLE_BVH_TYPE = BIT(7),
|
|
GTA_BOX_VEHICLE_TYPE = BIT(8),
|
|
GTA_PED_TYPE = BIT(9),
|
|
GTA_RAGDOLL_TYPE = BIT(10),
|
|
GTA_HORSE_TYPE = BIT(11),
|
|
GTA_HORSE_RAGDOLL_TYPE = BIT(12),
|
|
GTA_OBJECT_TYPE = BIT(13),
|
|
GTA_ENVCLOTH_OBJECT_TYPE = BIT(14),
|
|
GTA_PLANT_TYPE = BIT(15),
|
|
|
|
GTA_PROJECTILE_TYPE = BIT(16),
|
|
GTA_EXPLOSION_TYPE = BIT(17),
|
|
GTA_PICKUP_TYPE = BIT(18),
|
|
GTA_FOLIAGE_TYPE = BIT(19),
|
|
GTA_FORKLIFT_FORKS_TYPE = BIT(20),
|
|
|
|
GTA_WEAPON_TEST = BIT(21),
|
|
GTA_CAMERA_TEST = BIT(22),
|
|
GTA_AI_TEST = BIT(23),
|
|
GTA_SCRIPT_TEST = BIT(24),
|
|
GTA_WHEEL_TEST = BIT(25),
|
|
|
|
GTA_GLASS_TYPE = BIT(26),
|
|
GTA_RIVER_TYPE = BIT(27),
|
|
GTA_SMOKE_TYPE = BIT(28),
|
|
GTA_UNSMASHED_TYPE = BIT(29),
|
|
GTA_STAIR_SLOPE_TYPE = BIT(30),
|
|
GTA_DEEP_SURFACE_TYPE = BIT(31)
|
|
};
|
|
|
|
// compilations of the above type flags into include type sets
|
|
enum
|
|
{
|
|
// useful base combinations
|
|
GTA_VEHICLE_TYPE = GTA_VEHICLE_NON_BVH_TYPE | GTA_VEHICLE_BVH_TYPE | GTA_WHEEL_TEST,
|
|
|
|
GTA_ALL_MAP_TYPES = GTA_MAP_TYPE_MOVER,
|
|
GTA_ALL_TYPES_MOVER = GTA_MAP_TYPE_MOVER | GTA_VEHICLE_TYPE | GTA_PED_TYPE | GTA_OBJECT_TYPE | GTA_PICKUP_TYPE | GTA_GLASS_TYPE | GTA_RIVER_TYPE,
|
|
GTA_ALL_TYPES_WEAPON = GTA_MAP_TYPE_WEAPON | GTA_VEHICLE_NON_BVH_TYPE | GTA_VEHICLE_BVH_TYPE | GTA_PED_TYPE | GTA_OBJECT_TYPE | GTA_PICKUP_TYPE | GTA_GLASS_TYPE | GTA_RIVER_TYPE,
|
|
GTA_ALL_SHAPETEST_TYPES = GTA_WEAPON_TEST | GTA_CAMERA_TEST | GTA_AI_TEST | GTA_SCRIPT_TEST | GTA_WHEEL_TEST,
|
|
GTA_CORE_SHAPETEST_TYPES = GTA_WEAPON_TEST | GTA_AI_TEST | GTA_SCRIPT_TEST | GTA_WHEEL_TEST,
|
|
|
|
// include flag sets for basic game object types
|
|
GTA_BUILDING_INCLUDE_TYPES = GTA_VEHICLE_NON_BVH_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_PLANT_TYPE | GTA_EXPLOSION_TYPE | GTA_PROJECTILE_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_GLASS_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_VEHICLE_INCLUDE_TYPES = GTA_MAP_TYPE_VEHICLE | GTA_VEHICLE_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_BOX_VEHICLE_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_ENVCLOTH_OBJECT_TYPE | GTA_PLANT_TYPE | GTA_EXPLOSION_TYPE | GTA_PROJECTILE_TYPE | GTA_PICKUP_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_GLASS_TYPE | GTA_FOLIAGE_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE | GTA_SMOKE_TYPE,
|
|
GTA_BOX_VEHICLE_INCLUDE_TYPES = GTA_VEHICLE_NON_BVH_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_BOX_VEHICLE_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_EXPLOSION_TYPE | GTA_PROJECTILE_TYPE | GTA_WEAPON_TEST | GTA_AI_TEST | GTA_SCRIPT_TEST | GTA_GLASS_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
|
|
GTA_PED_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_BOX_VEHICLE_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_ENVCLOTH_OBJECT_TYPE | GTA_PLANT_TYPE | GTA_PROJECTILE_TYPE | GTA_PICKUP_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_GLASS_TYPE | GTA_FOLIAGE_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_RAGDOLL_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_BOX_VEHICLE_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_ENVCLOTH_OBJECT_TYPE | GTA_PLANT_TYPE | GTA_EXPLOSION_TYPE | GTA_PROJECTILE_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_GLASS_TYPE | GTA_FOLIAGE_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE | GTA_SMOKE_TYPE | GTA_DEEP_SURFACE_TYPE,
|
|
GTA_ENVCLOTH_OBJECT_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_GLASS_TYPE | GTA_WEAPON_TEST | GTA_HORSE_RAGDOLL_TYPE,
|
|
|
|
GTA_PARACHUTING_PED_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_TYPE | GTA_BOX_VEHICLE_TYPE | GTA_OBJECT_TYPE | GTA_GLASS_TYPE,
|
|
GTA_OBJECT_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_EXPLOSION_TYPE | GTA_PROJECTILE_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_GLASS_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_PLANT_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_NON_BVH_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
|
|
|
|
// include flag sets for special game object types
|
|
GTA_DOOR_OBJECT_INCLUDE_TYPES = GTA_VEHICLE_TYPE | GTA_VEHICLE_BVH_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_EXPLOSION_TYPE | GTA_PROJECTILE_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_GLASS_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_PROJECTILE_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_BOX_VEHICLE_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_EXPLOSION_TYPE | GTA_PICKUP_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_GLASS_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_PROJECTILE_NEAR_INCLUDE_TYPES = GTA_MAP_TYPE_WEAPON | GTA_VEHICLE_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_BOX_VEHICLE_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_EXPLOSION_TYPE | GTA_PICKUP_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_GLASS_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_EXPLOSION_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_NON_BVH_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_BOX_VEHICLE_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_PROJECTILE_TYPE | GTA_PICKUP_TYPE | GTA_GLASS_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_SMOKE_INCLUDE_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_NON_BVH_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_VEH_SEAT_INCLUDE_FLAGS = (GTA_VEHICLE_INCLUDE_TYPES & ~GTA_ALL_SHAPETEST_TYPES),
|
|
GTA_WHEEL_INCLUDE_TYPES = (GTA_VEHICLE_INCLUDE_TYPES & ~(GTA_WHEEL_TEST | GTA_PICKUP_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_CAMERA_TEST)), // Wheels collide with everything vehicles do
|
|
GTA_VEH_BVH_CHASSIS_INCLUDE_TYPES = GTA_VEHICLE_NON_BVH_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_PROJECTILE_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
|
|
GTA_CAR_DOOR_UNLATCHED_INCLUDE_TYPES= GTA_VEHICLE_INCLUDE_TYPES,
|
|
GTA_CAR_DOOR_LATCHED_INCLUDE_TYPES = GTA_CORE_SHAPETEST_TYPES | GTA_PROJECTILE_TYPE,
|
|
GTA_CAR_BUMPER_INCLUDE_TYPES = GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_ALL_SHAPETEST_TYPES | GTA_VEHICLE_NON_BVH_TYPE,
|
|
|
|
// include sets for world probe type tests
|
|
GTA_MELEE_VISIBILTY_TYPES = GTA_ALL_MAP_TYPES | GTA_VEHICLE_NON_BVH_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_OBJECT_TYPE | GTA_GLASS_TYPE,
|
|
GTA_WEAPON_TYPES = GTA_VEHICLE_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_PROJECTILE_TYPE | GTA_GLASS_TYPE | GTA_MAP_TYPE_WEAPON | GTA_RIVER_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_MOBILE_ACTORS_TYPES = GTA_VEHICLE_NON_BVH_TYPE | GTA_FORKLIFT_FORKS_TYPE | GTA_PED_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_GLASS_TYPE | GTA_HORSE_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
GTA_CAMERA_CLIPPING_TYPES = GTA_VEHICLE_NON_BVH_TYPE | GTA_RAGDOLL_TYPE | GTA_OBJECT_TYPE | GTA_PICKUP_TYPE | GTA_MAP_TYPE_WEAPON | GTA_RIVER_TYPE | GTA_UNSMASHED_TYPE | GTA_HORSE_RAGDOLL_TYPE,
|
|
|
|
// include flag sets for high detail map collision
|
|
GTA_HIGH_DETAIL_MAP_INCLUDE_TYPES = GTA_WEAPON_TEST | GTA_CAMERA_TEST | GTA_PROJECTILE_TYPE,
|
|
|
|
// bullets and projectiles
|
|
GTA_WEAPON_AND_PROJECTILE_INCLUDE_TYPES = GTA_WEAPON_TEST | GTA_PROJECTILE_TYPE,
|
|
|
|
GTA_BASIC_ATTACHMENT_INCLUDE_TYPES = GTA_WEAPON_TEST | GTA_PROJECTILE_TYPE | GTA_EXPLOSION_TYPE,
|
|
|
|
GTA_BASIC_ATTACHMENT_AND_CAMERA_INCLUDE_TYPES = GTA_BASIC_ATTACHMENT_INCLUDE_TYPES | GTA_CAMERA_TEST
|
|
};
|
|
|
|
#if !__FINAL
|
|
const int maxBits = 32;
|
|
const char * GetBoundFlagName(const u32 bit);
|
|
void PrintBoundFlags(const u32 flags, const char * pPrefixString, bool onlyPrintFlagsUsed = false);
|
|
void SetupCustomBoundFlagNames();
|
|
|
|
extern const char* sm_BoundFlagName[maxBits];
|
|
#endif
|
|
}
|
|
|
|
|
|
|
|
class gtaFragType : public fragType
|
|
{
|
|
public:
|
|
gtaFragType() {}
|
|
gtaFragType(datResource& rsc);
|
|
|
|
~gtaFragType();
|
|
|
|
IMPLEMENT_PLACE_INLINE(gtaFragType);
|
|
|
|
void SetModelId(fwModelId modelId) {SetUserData((void*)(size_t)(modelId.ConvertToU32()));}
|
|
fwModelId GetModelId() { return (fwModelId::ConvertTofwModelId((u32)(size_t)GetUserData())); }
|
|
|
|
|
|
// AF: DO NOT ADD ANY DATA TO THIS CLASS AS IT WILL BREAK THE RESOURCED FRAGMENT OBJECTS!!!!!
|
|
#if !__FINAL
|
|
void DeclareStruct(datTypeStruct &s);
|
|
#endif // !__FINAL
|
|
|
|
//protected:
|
|
atArray< CLightAttr > m_lights;
|
|
fwVehicleGlassWindowData* m_vehicleWindowData;
|
|
datOwner< atArray<u8> > m_pTintData;
|
|
};
|
|
|
|
#endif // end of #ifndef GTA_PHYSICS_ARCHETYPE_H
|
|
|
|
|