49 lines
948 B
C++
49 lines
948 B
C++
/////////////////////////////////////////////////////////////////////
|
|
// Created by Pär Hammarstrand 2013
|
|
// Edited by Dan Andersson 2013
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
#ifndef OYSTER_COLLISION_ICOLLIDEABLE_H
|
|
#define OYSTER_COLLISION_ICOLLIDEABLE_H
|
|
|
|
namespace Oyster { namespace Collision
|
|
{
|
|
class ICollideable
|
|
{
|
|
public:
|
|
enum CollisionType
|
|
{
|
|
Point,
|
|
Ray,
|
|
Sphere,
|
|
Plane,
|
|
Triangle,
|
|
BoxAxisAligned,
|
|
Box,
|
|
Frustrum,
|
|
Line
|
|
};
|
|
|
|
enum State
|
|
{
|
|
Missed = 0,
|
|
Contained,
|
|
Intersected
|
|
};
|
|
|
|
ICollideable( CollisionType _type ) : type(_type) {};
|
|
|
|
const CollisionType type;
|
|
|
|
virtual ICollideable* clone( ) const = 0;
|
|
|
|
virtual bool Intersects( const ICollideable *target ) const = 0;
|
|
|
|
virtual bool Contains( const ICollideable *target ) const = 0;
|
|
|
|
//Not supported returns 0;
|
|
virtual State Advanced( const ICollideable *target ) const = 0;
|
|
};
|
|
} }
|
|
#endif |