Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Guide to Game Development/Theory/Game logic/Creating a particle class

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Note: the following code uses a Vector3 class. This is an outline for what a particle class could look like written in C++: Particle.h: #include "Vector3.h" class Particle{ public: enum ForceMode { Impulse, //A quick 'jab' of force Constant //A constant force acting on the particle }; void AddForce(Vector3 f, ForceMode m); void Tick(); Particle(); ~Particle(); private: bool _isKinematic; bool _detectCollisions; Vector3 _location; Vector3 _rotation; //Stored as an Euler angle //Scale can be added to the child class entity Vector3 _acceleration; Vector3 _velocity; Vector3 _constantForce; //All of the constant forces on the particle resolved Vector3 _impulseForce; //All of the impulseForces to be added this tick resolved (cleared after tick) int _mass; }; Particle.cpp: #include "Particle.h" void Particle::AddForce(Vector3 f, ForceMode m){ switch (m) { case Particle::Impulse: _impulseForce += f; //Resolve force into current force buffer & Use of operator overloading, incrementing a vector by another vector. break; case Particle::Constant: _constantForce += f; //Resolve force into current force buffer & Use of operator overloading, incrementing a vector by another vector. break; default: break; } } void Particle::Tick(){ //Add constant force //TODO //Add impulse force //TODO _impulseForce = Vector3::Null; //Resetting impulse //Add drag force //TODO } Particle::Particle(){ } Particle::~Particle(){ } Decide which variables need to be public, and which need to be private. Add get functions for all private variables Add more useful functions Fill in the tick function 25%