Hallo,
ich lade eine IrrEdit Szene in welcher sich ein Node befindet, der einen selbsterstellten Node als child hat, welcher angibt dass es sich bei diesem (dem Parent von dem selbsterstellten node) Node um ein Item handelt. Nun lasse ich nach dem Laden der Szene alle Nodes durchgehen, suche den markierten node und übergebe die Informationen (Mesh, Größe, Rotation usw.) des Nodes an mein Itemsystem, welches die Items verwaltet. Beim verwalten der Items gehört auch eine Kollision, welche mit Boundingboxen überprüft wird dazu. Mein Problem ist nun: wenn ich die Items manuell in das Itemsystem einfüge (also ohne suchen und kopieren der Node informationen) dann funktioniert die Kollision perfekt. Aber bei automatisch eingefügten Nodes wird nie eine Kollision festgestellt. Ich denke dass dort irgendwie die Bounding box nicht vorhanden oder falsch positioniert ist.
Hier mal der Code von der Kollisionsabfrage:
Code:
if(itemnode->getTransformedBoundingBox().intersectsWithBox(kameranode->getTransformedBoundingBox()))
Und hier wird jeder Node der geladenen Szene durchgegangen und kontrolliert, falls es sich um ein ItemNode (den marker) handelt wird der Parent als Item in das Itemsystem eingefügt und das geschieht hier:
(i_node ist der marker für den Parent node, dass dieser ein item ist und tmp_node ist der Parent node von i_node)
Code:
case (ESCENE_NODE_TYPE)MAKE_IRR_ID('i','m','s','n'):
CItemSceneNode* i_node=dynamic_cast<CItemSceneNode*>(node);
ISceneNode* tmp_node=i_node->getParent();
addItem(tmp_node->getName());
setItemNode(tmp_node->getName(),(IMeshSceneNode*)tmp_node);
setItemMesh(tmp_node->getName(),((IMeshSceneNode*)tmp_node)->getMesh());
setItemPosition(tmp_node->getName(),tmp_node->getPosition());
setItemScale(tmp_node->getName(),tmp_node->getScale()); setItemRotation(tmp_node->getName(),tmp_node->getRotation());
setItemType(tmp_node->getName(),i_node->getItemType());
setItemValue(tmp_node->getName(),i_node->getItemValue());
Falls noch mehr code benötigt wird, einfach sagen.
Danke für eine Antwort.