163 lines
4.6 KiB
C++
163 lines
4.6 KiB
C++
/* ************************************************************************** */
|
|
/* _____ */
|
|
/* Object.cpp | ___| _ ____ ___ */
|
|
/* Project : C-Engine | |_ | | | __| / _ \ */
|
|
/* | _| | | | |= | __/ */
|
|
/* By: Fife <wasabifife@gmail.com> |_| |_| |_| \___| */
|
|
/* */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "..\Rework\include\Object.hpp"
|
|
|
|
|
|
Object::Object()
|
|
{
|
|
OTransform = new Transform(this);
|
|
ORender = new Render(this);
|
|
tag = new char[20];
|
|
enable = true;
|
|
|
|
ORigidBody = NULL;
|
|
OScript = NULL;
|
|
Conteneur = NULL;
|
|
}
|
|
|
|
Object::~Object()
|
|
{
|
|
delete OTransform;
|
|
delete ORender;
|
|
delete ORigidBody;
|
|
delete OScript;
|
|
delete []tag;
|
|
}
|
|
|
|
void Object::AffectEngine(Engine * EV)
|
|
{
|
|
Conteneur = EV;
|
|
}
|
|
|
|
void Object::AffectTag(char * v)
|
|
{
|
|
strcpy( tag , v );//Copie v dans tag.
|
|
}
|
|
|
|
void Object::Enable()
|
|
{
|
|
enable = true;
|
|
}
|
|
|
|
void Object::Disable()
|
|
{
|
|
enable = false;
|
|
}
|
|
|
|
void Object::AddRigidBody()
|
|
{
|
|
ORigidBody = new RigidBody(this);
|
|
}
|
|
|
|
Engine * Object::GetEngine()
|
|
{
|
|
return Conteneur;
|
|
}
|
|
|
|
Transform * Object::GetTransform()
|
|
{
|
|
return OTransform;
|
|
}
|
|
|
|
RigidBody * Object::GetRigidBody()
|
|
{
|
|
return ORigidBody;
|
|
}
|
|
|
|
Render * Object::GetRender()
|
|
{
|
|
return ORender;
|
|
}
|
|
|
|
Script * Object::GetScript()
|
|
{
|
|
return OScript;
|
|
}
|
|
|
|
char * Object::GetTag()
|
|
{
|
|
return tag;
|
|
}
|
|
|
|
bool Object::GetEnable()
|
|
{
|
|
return enable;
|
|
}
|
|
|
|
bool Object::IsOnScreen()
|
|
{
|
|
/*if(OTransform->GetX() < Conteneur->GetScreen()->max.x && OTransform->GetX() + ORender->GetSizeX() > Conteneur->GetScreen()->min.x && OTransform->GetY() < Conteneur->GetScreen()->max.y && OTransform->GetY() + ORender->GetSizeY() > Conteneur->GetScreen()->min.y ) return true;
|
|
else return false;*/
|
|
|
|
return true;
|
|
}
|
|
|
|
Object * Object::GetObjectCollisionTag( char* v, int x , int y)
|
|
{
|
|
for( int i = 0; i < Conteneur->GetNbObject(); i++ )
|
|
{
|
|
if(Conteneur->GetListeObject()[i] != this)
|
|
{
|
|
if(!strcmp(Conteneur->GetListeObject()[i]->tag , v) && Conteneur->GetListeObject()[i]->enable)
|
|
{
|
|
if(Collision(i))return Conteneur->GetListeObject()[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
|
|
bool Object::GetCollisionTag(char* v , int x , int y)
|
|
{
|
|
if(GetObjectCollisionTag(v,x,y))return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
bool Object::Collision(int id)
|
|
{
|
|
int widht1 = ORender->GetSizeX();
|
|
int height1 = ORender->GetSizeY();
|
|
int widht2 = Conteneur->GetListeObject()[id]->ORender->GetSizeX();
|
|
int height2 = Conteneur->GetListeObject()[id]->ORender->GetSizeY();
|
|
|
|
if(ORigidBody)
|
|
{
|
|
if(ORigidBody->GetStat())
|
|
{
|
|
widht1 = ORigidBody->GetWidht();
|
|
height1 = ORigidBody->GetHeight();
|
|
}
|
|
}
|
|
|
|
if(Conteneur->GetListeObject()[id]->ORigidBody)
|
|
{
|
|
if(Conteneur->GetListeObject()[id]->ORigidBody->GetStat())
|
|
{
|
|
widht2 = Conteneur->GetListeObject()[id]->ORigidBody->GetWidht();
|
|
height2 = Conteneur->GetListeObject()[id]->ORigidBody->GetHeight();
|
|
}
|
|
}
|
|
|
|
if( (( Conteneur->GetListeObject()[id]->OTransform->GetX() + Conteneur->GetListeObject()[id]->ORender->GetBlitX() >= OTransform->GetX() + ORender->GetBlitX() + widht1)
|
|
|| (Conteneur->GetListeObject()[id]->OTransform->GetX() + Conteneur->GetListeObject()[id]->ORender->GetBlitX() + widht2 <= OTransform->GetX() + ORender->GetBlitX())
|
|
|| (Conteneur->GetListeObject()[id]->OTransform->GetY() + Conteneur->GetListeObject()[id]->ORender->GetBlitY()>= OTransform->GetY() + ORender->GetBlitY() + height1)
|
|
|| (Conteneur->GetListeObject()[id]->OTransform->GetY() + Conteneur->GetListeObject()[id]->ORender->GetBlitY() + height2 <= OTransform->GetY() + ORender->GetBlitY())
|
|
) == false )return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
|