diff --git a/Code/OysterPhysics3D/Cone.cpp b/Code/OysterPhysics3D/Cone.cpp new file mode 100644 index 00000000..a336f820 --- /dev/null +++ b/Code/OysterPhysics3D/Cone.cpp @@ -0,0 +1,44 @@ +///////////////////////////////////////////////////////////////////// +// Created by Erik Persson 2014 +///////////////////////////////////////////////////////////////////// + +#include "Cone.h" +#include "OysterCollision3D.h" + +using namespace ::Oyster::Collision3D; +using namespace ::Oyster::Math3D; + + +Cone::Cone( ) : ICollideable(Type_cone) +{ + this->radius = 1; + this->height = Oyster::Math::Float3(0,0,0); +} + +Cone::Cone( const ::Oyster::Math::Float3 &height, const Oyster::Math::Float3 &position, const ::Oyster::Math::Float &radius ) +{ + this->radius = radius; + this->height = height; + this->position = position; +} + +Cone::Cone( const ::Oyster::Math::Float4 &height, const Oyster::Math::Float4 &position, const ::Oyster::Math::Float &radius ) +{ + this->radius = radius; + this->height = (Oyster::Math::Float3)height; + this->position = (Oyster::Math::Float3)position; +} + +Cone::~Cone( ) +{ + +} + +Cone & Cone::operator = ( const Cone &cone ) +{ + this->radius = cone.radius; + this->height = cone.height; + this->position = cone.position; + return *this; +} + diff --git a/Code/OysterPhysics3D/Cone.h b/Code/OysterPhysics3D/Cone.h new file mode 100644 index 00000000..533a1b9c --- /dev/null +++ b/Code/OysterPhysics3D/Cone.h @@ -0,0 +1,40 @@ +///////////////////////////////////////////////////////////////////// +// Created by Erik Persson 2014 +///////////////////////////////////////////////////////////////////// + +#pragma once +#ifndef OYSTER_COLLISION_3D_CONE_H +#define OYSTER_COLLISION_3D_CONE_H + + +#include "OysterMath.h" +#include "ICollideable.h" + +namespace Oyster +{ + namespace Collision3D + { + class Cone : public ICollideable + { + public: + + Cone(); + Cone( const ::Oyster::Math::Float3 &height, const Oyster::Math::Float3 &position, const ::Oyster::Math::Float &radius ); + Cone( const ::Oyster::Math::Float4 &height, const Oyster::Math::Float4 &position, const ::Oyster::Math::Float &radius ); + virtual ~Cone( ); + + Cone & operator = ( const Cone &Cone ); + + private: + Oyster::Math::Float3 height; + Oyster::Math::Float3 position; + Oyster::Math::Float radius; + }; + } + +} + + + + +#endif \ No newline at end of file diff --git a/Code/OysterPhysics3D/ICollideable.h b/Code/OysterPhysics3D/ICollideable.h index 3e63200e..1caf23cf 100644 --- a/Code/OysterPhysics3D/ICollideable.h +++ b/Code/OysterPhysics3D/ICollideable.h @@ -26,7 +26,8 @@ namespace Oyster { namespace Collision3D //! Contains a collection of 3D shapes Type_box_axis_aligned, Type_box, Type_frustrum, - Type_line + Type_line, + Type_cone, }; const Type type; diff --git a/Code/OysterPhysics3D/OysterPhysics3D.vcxproj b/Code/OysterPhysics3D/OysterPhysics3D.vcxproj index dffeca4f..2998c1bb 100644 --- a/Code/OysterPhysics3D/OysterPhysics3D.vcxproj +++ b/Code/OysterPhysics3D/OysterPhysics3D.vcxproj @@ -154,6 +154,7 @@ + @@ -172,6 +173,7 @@ + diff --git a/Code/OysterPhysics3D/OysterPhysics3D.vcxproj.filters b/Code/OysterPhysics3D/OysterPhysics3D.vcxproj.filters index f6b6d934..4947a4d7 100644 --- a/Code/OysterPhysics3D/OysterPhysics3D.vcxproj.filters +++ b/Code/OysterPhysics3D/OysterPhysics3D.vcxproj.filters @@ -81,6 +81,9 @@ Header Files\Collision + + Header Files\Collision + @@ -131,5 +134,8 @@ Source Files\Physics + + Source Files\Collision + \ No newline at end of file