JKFOZZY
20-12-2010 17:28:42
Hi,
I try to make a program so that i could shoot a barrel at a few cubes. When a cube is hit by a barrel i wan't to let the cube be invisible. I've taked a look at this link. https://www.ogre3d.org/addonforums/viewtopic.php?f=6&t=13034&p=73062&hilit=setContactCallback#p73062. But i think i do something wrong.
Here is my MyCallback.h code.:
MyCallback.cpp .:
Add the callback to the cubes.
add the callback to the barrels
set the actor flags
Thnx,
JKFOZZY.
I try to make a program so that i could shoot a barrel at a few cubes. When a cube is hit by a barrel i wan't to let the cube be invisible. I've taked a look at this link. https://www.ogre3d.org/addonforums/viewtopic.php?f=6&t=13034&p=73062&hilit=setContactCallback#p73062. But i think i do something wrong.
Here is my MyCallback.h code.:
#ifndef __MYCALLBACK_H_
#define __MYCALLBACK_H_
#include "NxOgre.h"
class MyCallback : public NxOgre::Callback
{
public:
MyCallback(void);
~MyCallback(void);
void onContact(const NxOgre::ContactPair& pair);
};
#endif
MyCallback.cpp .:
#include "MyCallback.h"
MyCallback::MyCallback(void)
{
}
MyCallback::~MyCallback(void)
{
}
void MyCallback::onContact(const NxOgre::ContactPair& pair)
{
//do something
}
Add the callback to the cubes.
for(std::vector<std::vector<std::vector<Kubus*>>>::iterator itr=cubes3D.begin(); itr < cubes3D.end(); itr++)
{
for(std::vector<std::vector<Kubus*>>::iterator jtr=(*itr).begin(); jtr < (*itr).end(); jtr++)
{
for(std::vector<Kubus*>::iterator ktr=(*jtr).begin(); ktr < (*jtr).begin(); ktr++)
{
(*ktr)->getBody()->setContactCallback(m_Callback);
}
}
}
add the callback to the barrels
for(int i=0; i < 10; i++)
{
Barrel* b=new Barrel(m_RenderSystem);
b->getBody()->setContactCallback(m_MyCallback);
m_Barrels.push_back(b);
}
set the actor flags
for(std::vector<Barrel*>::iterator itr=barrels.begin(); itr < barrels.end(); itr++)
{
for(std::vector<std::vector<std::vector<Kubus*>>>::iterator jtr=cubes3D.begin(); jtr < cubes3D.end(); jtr++)
{
for(std::vector<std::vector<Kubus*>>::iterator ktr=(*jtr).begin(); ktr < (*jtr).end(); ktr++)
{
for(std::vector<Kubus*>::iterator ltr=(*ktr).begin(); ltr < (*ktr).end(); ltr++)
{
m_Scene->setActorFlags((*itr)->getBody(), (*ltr)->getBody(), NxOgre::Enums::ContactPairFlags_All);
}
}
}
}
Thnx,
JKFOZZY.