Danbias/OysterPhysics3D/Collision/ICollideable.h

39 lines
957 B
C++

/////////////////////////////////////////////////////////////////////
// Created by Pär Hammarstrand 2013
// Edited by Dan Andersson 2013
/////////////////////////////////////////////////////////////////////
#pragma once
#ifndef OYSTER_COLLISION_3D_ICOLLIDEABLE_H
#define OYSTER_COLLISION_3D_ICOLLIDEABLE_H
namespace Oyster { namespace Collision3D /// Contains a collection of 3D shapes and intercollission algorithms.
{
class ICollideable
{
public:
enum Type
{
Type_undefined,
Type_universe,
Type_point,
Type_ray,
Type_sphere,
Type_plane,
Type_triangle,
Type_box_axis_aligned,
Type_box,
Type_frustrum,
Type_line
};
const Type type;
ICollideable( Type type = Type_undefined );
virtual ICollideable* clone( ) const = 0; // TODO: use smart unique pointer here
virtual bool Intersects( const ICollideable *target ) const = 0;
virtual bool Contains( const ICollideable *target ) const = 0;
};
} }
#endif