VoroNode::VoroNode() { counter++; isSplit = false; bDraw = false; level = 0; clearParent(); };
VoroNode::VoroNode(ofVboMesh _mesh) { counter++; isSplit = false; mesh = _mesh; level = 0; clearParent(); calculateBoundingBox(); mesh.getVbo(); };
void VoroNode::setParent(ofNode& p, bool bMaintainGlobalTransform){ if(this->parent != nullptr){ clearParent(bMaintainGlobalTransform); } if (VoroNode* newVoroParent = dynamic_cast<VoroNode *>(&p)){ // our new parent is a VoroNode newVoroParent->addChild(*this); } ofNode::setParent(p, bMaintainGlobalTransform); };
//---------------------------------------- void ofNode::setParent(ofNode& parent, bool bMaintainGlobalTransform) { if (this->parent) { // we need to make sure to clear before // re-assigning parenthood. clearParent(bMaintainGlobalTransform); } if(bMaintainGlobalTransform) { auto postParentGlobalTransform = glm::inverse(parent.getGlobalTransformMatrix()) * getGlobalTransformMatrix(); parent.addListener(*this); setTransformMatrix(postParentGlobalTransform); } else { parent.addListener(*this); } this->parent = &parent; }
//---------------------------------------- void ofNode::setParent(ofNode& parent, bool bMaintainGlobalTransform) { if (this->parent) { // we need to make sure to clear before // re-assigning parenthood. clearParent(bMaintainGlobalTransform); } if(bMaintainGlobalTransform) { auto postParentPosition = position - parent.getGlobalPosition(); auto postParentOrientation = orientation.get() * glm::inverse(parent.getGlobalOrientation()); auto postParentScale = scale / parent.getGlobalScale(); parent.addListener(*this); setOrientation(postParentOrientation); setPosition(postParentPosition); setScale(postParentScale); } else { parent.addListener(*this); } this->parent = &parent; }
void initialize() { clearLeft(); clearRight(), clearParent(); }