Callback-Example/Ball.h

40 lines
1.1 KiB
C
Raw Normal View History

#ifndef BALL_H
#define BALL_H
#include "GraphicsObject.h"
//#include "PhysicsObject.h"
class Ball : public GraphicsObject
{
public:
Ball() : GraphicsObject(&Ball::SetX, this) // pointer to self (specific instance)
{
instance_num = ++instance_counter;
// NOTE(dev): don't go above 100, please, for the sake of the example.
}
int GetXFromPhysicsSimulation()
{
// NOTE(dev): move around by 100 to show that the number is different each time,
// but keep the instance number to show you're on the same one.
2017-05-24 16:18:14 -04:00
// NOTE(dev): THIS IS THE CODE that proves that the graphics object does not
// call on the physics system to determind its location.
return instance_num + ((rand() % 10) * 100);
}
static void SetX(int &x, void *instance)
{
Ball *ball = static_cast<Ball*>(instance);
2017-05-24 16:18:14 -04:00
// NOTE(dev): This could easily be physics_system->GetX(this->physics_lookup_id)
// and GraphicsObject would never have to know about it.
x = ball->GetXFromPhysicsSimulation();
return;
}
private:
static int instance_counter;
int instance_num;
};
int Ball::instance_counter = 0;
#endif