Im making a basic box game which involves moving boxes around a maze and pushing other boxes, im new to collision detection but am able to get my head around it. The thing I can’t get my head around though is why this function won’t work.
note: This isn’t the final function it is just the basic outline of what needs to be done… once this works i’ll be able to do it all.
typedef struct {
float x;
float y;
float z;
} point3D;
typedef struct {
point3D min;
point3D max;
} boundingBox;
boundingBox * wallBox[9];
boundingBox * playerBox;
//and then I had two functions that gave each boundingBox its values
int collisionWall(){
int i;
for(i = 0; i < 9; i++){
if(wallBox[i].min.x; =< playerBox.min.x;){
return 1;
}
return 0;
}
}
}
The errors I get are…
Error 1 error C2231: ‘.min’ : left operand points to ‘struct’, use ‘->’
Error 2 error C2231: ‘.min’ : left operand points to ‘struct’, use ‘->’
Error 3 error C2059: syntax error : ‘<’
Error 4 error C2059: syntax error : ‘}’
Hmm, this is not exactly OpenGL specific and you would probably have been better off asking this in a general C/C++ programming forum, but here goes:
The compiler basically already tells you what is wrong:
Error 1 error C2231: ‘.min’ : left operand points to ‘struct’, use ‘->’
you have declared:
boundingBox * wallBox[9];
so wallBox is an array of pointers to objects of type bounding box. When accessing structure members through a pointer you need to use the ‘->’ operator instead of ‘.’:
for(int i = 0; i < 9; ++i)
{
if(wallBox[i]->min.x <= playerBox->min.x)
{
// ...
}
}
Error 3 error C2059: syntax error : ‘<’
Error 4 error C2059: syntax error : ‘}’
These are plain syntax errors. ‘=<’ is not a valid operator in C/C++, you probably want ‘<=’. There is an extra ‘}’ at the end and you have ‘;’ in the if condition that don’t belong there.
Ah thanks man, I do have more openGL stuff later on in my code but yes your right this error wasn’t really to do with that so I should find a c forum instead. Sorry. and thanks alot for the help.
James.