#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. // 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(instance); // 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