#include "dxstdafx.h" #include ".\usercontactreport.h" #include "Scene.h" #include "GameScene.h" #include "GameManager.h" #include "Trigger.h" #include "Node.h" #include "Player.h" UserContactReport::UserContactReport(void) { } UserContactReport::~UserContactReport(void) { } void UserContactReport::setScene(Scene* _scene) { this->scene = _scene; } void UserContactReport::onContactNotify(NxContactPair& pair, NxU32 events) { GameScene* gscene; if(events & NX_NOTIFY_ON_START_TOUCH) { // | NX_NOTIFY_ON_TOUCH)) { Vorsicht...pointer bug! Vector normal; normal = Vector(pair.sumNormalForce); normal.normalize(); //Bullte vs Terrain if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_TERRAIN) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTTERRAIN, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0); } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_TERRAIN) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTTERRAIN, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0); } //Bullet vs Goodie else if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_GOODIE) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTGOODIE, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0); } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_GOODIE) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTGOODIE, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0); } //Bullet vs Other else if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_OTHER) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTOTHER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0); } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_OTHER) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTOTHER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0); } //Bullet vs Player else if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_PLAYER) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTPLAYER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0); } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_PLAYER) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTPLAYER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0); } //Fire vs Player else if(pair.actors[0]->getGroup()== COLGROUP_FIRE && pair.actors[1]->getGroup()== COLGROUP_PLAYER) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTFIRE, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), 0); } else if(pair.actors[1]->getGroup()== COLGROUP_FIRE && pair.actors[0]->getGroup()== COLGROUP_PLAYER) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTFIRE, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), 0); } //Bullet vs Obstacle else if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_OBSTACLE) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTOTHER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0); } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_OBSTACLE) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTOTHER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0); } //Ice vs Player else if(pair.actors[0]->getGroup()== COLGROUP_ICE && pair.actors[1]->getGroup()== COLGROUP_PLAYER) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTICE, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), 0); } else if(pair.actors[1]->getGroup()== COLGROUP_ICE && pair.actors[0]->getGroup()== COLGROUP_PLAYER) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_IMPACTICE, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), 0); } //Bullet vs Create OnePlayer else if(pair.actors[0]->getGroup()== COLGROUP_ONEPLAYER && pair.actors[1]->getGroup()== COLGROUP_BULLET) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_CREATEPLAYER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), 0); } else if(pair.actors[1]->getGroup()== COLGROUP_ONEPLAYER && pair.actors[0]->getGroup()== COLGROUP_BULLET) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_CREATEPLAYER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), 0); } //Bullet vs Create MorePlayer else if(pair.actors[0]->getGroup()== COLGROUP_MOREPLAYER && pair.actors[1]->getGroup()== COLGROUP_BULLET) { gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_CREATEMOREPLAYER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), 0); } else if(pair.actors[1]->getGroup()== COLGROUP_MOREPLAYER && pair.actors[0]->getGroup()== COLGROUP_BULLET) { gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene); gscene->setTrigger(gscene->TRIGGER_CREATEMOREPLAYER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), 0); } } }