void PhysicsNode::readXml(const Xml *xml) { Node::readXml(xml); float mass = 0.0f; int body_type = BODY_BOX; xml->getChildData("body", body_type); xml->getChildData("mass", mass); xml->getChildData("render_body", render_body); xml->getChildData("object_2d", object_2d); body->setBody(BodyType(body_type)); body->setMass(mass); const Xml *transform = xml->getChild("init_transform"); if (transform != NULL) { transform->getArg("pos", init_pos); transform->getArg("rot", init_rot); transform->getArg("scale", init_scale); do_invalidate_matrix = false; setPos(init_pos); setRot(init_rot); setScale(init_scale); do_invalidate_matrix = true; invalidateMatrix(); } invalidate(); }
PhysicsNode &PhysicsNode::operator= (const PhysicsNode &o) { Node::operator= (o); body->setSize(o.body->getSize()); body->setMass(o.body->getMass()); body->setBody(o.body->getBody()); render_body = o.render_body; set2d(o.object_2d); invalidateMatrix(); return *this; }
Board::~Board() { invalidateMatrix(); for (std::vector<Piece *>::iterator it = whitePieces.begin(); it != whitePieces.end(); ++it) { delete (*it); } for (std::vector<Piece *>::iterator it = blackPieces.begin(); it != blackPieces.end(); ++it) { delete (*it); } }
void PhysicsNode::restore() { do_invalidate_matrix = false; setPos(init_pos); setRot(init_rot); setScale(init_scale); do_invalidate_matrix = true; do_init_state = false; invalidateMatrix(); do_init_state = true; body->clearVelocity(); body->clearOmega(); }
/** * Check a check state for a king and all the opposite pieces */ bool Board::isInCheckWithPieces(Piece *king, std::vector<Piece *> pieces) { bool value = false; for (std::vector<Piece *>::iterator it = pieces.begin(); it != pieces.end(); ++it) { //matrix = nullptr; invalidateMatrix(); matrix = getMatrix(); std::vector<Move *> *moves = (*it)->makeMove(matrix); removeInvalidMoves(*it, moves); for (std::vector<Move *>::iterator move = moves->begin(); move != moves->end(); ++move) { if (king->getX() == (*move)->getX() && king->getY() == (*move)->getY()) { value = true; } delete (*move); } delete moves; } return value; }