Hi
in here
tds.color=BLACK; // set black color
tds.scale*=1.4f;
it doesn't mean that scale is a pointer but *= is a multiplication operator
x *= 2; is the same as multiplying x by 2, you can write this this way too
x= x*2;
in this code
Mesh *chr ; // character mesh
Gfx *main , // main blood texture
*single; // single blood texture
BloodFx blood ; // blood particle effect
chr , main, single are pointer because they will not contain something, but point to a resource which will be stored in some other place
pointers are used for example when you want to access resources from a Data Cache
you can have a Cache of models, in the engine it's called 'Meshs' (cache of Mesh objects)
having such cache 'Meshs' you can access meshes from the disk by using this command
Meshs("d:\folder\mesh.mesh"); // this will return a pointer to a loaded Mesh
having a pointer you can store it into a pointer variable
Mesh *mesh=Meshs("d:\folder\mesh.mesh");
then you can operate on the mesh by this command for example
mesh->draw(..);
BloodFx blood doesn't have '*' because it will not be used as a pointer to object placed somewhere in the memory, but here 'blood' will contain the objects memory by itself.
you can use
Mesh mesh;
and you can use
Mesh *mesh;
but for meshes it's easier to use Mesh *mesh;
because for most of the time you'll simply be accessing meshes from the Cache
Mesh *mesh=Meshs("mesh.mesh");