Files
Webcam/include/engine/physic/physic_item_desc.h
2026-06-22 11:49:35 +02:00

90 lines
1.5 KiB
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#ifndef __NPHYSICITEMDESC__
#define __NPHYSICITEMDESC__
#include "physic/physic_shape.h"
#include "physic/physic_wheel.h"
#include "memory/bit_field.h"
namespace GS {
namespace S3D {
//
struct PhysicItemDesc
{
/// Physic mode.
enum Mode
{
Mode_None = 0,
Mode_Static,
Mode_Kinematic,
Mode_Dynamic,
Mode_Character,
Mode_Vehicle
};
/// Physic flag.
enum
{
PhysicFlag_None = 0,
PhysicFlag_NoGravity = (1 << 0),
PhysicFlag_Ghost = (1 << 1)
};
Mode physic_mode;
BitField physic_flags;
uint self_mask, collision_mask;
AutoList <PhysicShape *> shape_list;
float linear_damping, angular_damping;
Vector4 linear_factor, angular_factor;
struct Vehicle
{
AutoList <PhysicWheel *> wheel_list;
};
Vehicle vehicle;
struct Character
{
float radius;
float height;
float max_step;
Character() : radius(1), height(1), max_step(0.2f) {}
};
Character character;
float GetMass() const;
bool FromMetaTag(NML::Tag &);
NML::Tag *AsMetaTag() const;
PhysicItemDesc()
{
physic_mode = Mode_None;
linear_factor.Set(1, 1, 1);
angular_factor.Set(1, 1, 1);
linear_damping = 1;
angular_damping = 1;
self_mask = collision_mask = 1;
}
};
} // S3D
} // GS
#endif // __NPHYSICITEMDESC__