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);
};
示例#4
0
//----------------------------------------
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;
}
示例#5
0
//----------------------------------------
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(); }