Store in GIT
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
#include "Star.h"
|
||||
#include "Model.h"
|
||||
|
||||
|
||||
Star::Star(Vec3f position)
|
||||
{
|
||||
scale = 1;
|
||||
|
||||
model = Model::load("resources/models/star/I_star.obj");
|
||||
specialstar = Model::load("resources/models/redstar/I_star.obj");
|
||||
|
||||
scale = 0.2;
|
||||
this->position = position;
|
||||
rotVal = 0;
|
||||
|
||||
int rand = std::rand() % 100;
|
||||
|
||||
special = false;
|
||||
if (rand <= 25)
|
||||
{
|
||||
special = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Star::~Star()
|
||||
{
|
||||
if (model)
|
||||
Model::unload(model);
|
||||
if (specialstar)
|
||||
Model::unload(specialstar);
|
||||
}
|
||||
|
||||
void Star::draw()
|
||||
{
|
||||
if (model)
|
||||
{
|
||||
glPushMatrix();
|
||||
|
||||
glTranslatef(position.x, position.y, position.z);
|
||||
glRotatef(rotation.x, 1, 0, 0);
|
||||
glRotatef(rotation.y, 0, 1, 0);
|
||||
glRotatef(rotation.z, 0, 0, 1);
|
||||
glScalef(scale, scale, scale);
|
||||
|
||||
model->draw();
|
||||
|
||||
if (special)
|
||||
{
|
||||
glRotatef(rotVal, 0, 1, 0);
|
||||
glTranslatef(4.0f, 12.0f, 4.0f);
|
||||
glRotatef(rotVal, 0, 1, 0);
|
||||
glScalef(0.3f, 0.3f, 0.3f);
|
||||
|
||||
specialstar->draw();
|
||||
}
|
||||
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Star::update(float deltaTime)
|
||||
{
|
||||
rotation.y += deltaTime * 100.0f;
|
||||
rotVal += deltaTime * 100.0f * 1.5f;
|
||||
}
|
||||
|
||||
bool Star::inObject(const Vec3f & point)
|
||||
{
|
||||
if (!model)
|
||||
return false;
|
||||
Vec3f center = position + model->center;
|
||||
float distance = ((point.x - center.x) * (point.x - center.x) + (point.z - center.z)*(point.z - center.z));
|
||||
if (distance < model->radius*scale*model->radius*scale)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user