git-svn-id: svn://db.shs.com.ru/libs@688 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -273,6 +273,11 @@ void ObjectBase::calculateBoundingBox() {
|
||||
}
|
||||
|
||||
|
||||
void ObjectBase::updateTransform() {
|
||||
buildTransform(true);
|
||||
}
|
||||
|
||||
|
||||
void ObjectBase::setProperty(const QString & pn, const QVariant & v) {
|
||||
meta[pn] = v;
|
||||
}
|
||||
@@ -316,6 +321,28 @@ QVector3D ObjectBase::inParentSpace(const QVector3D & v) const {
|
||||
}
|
||||
|
||||
|
||||
void ObjectBase::transferTransformToChildren(bool only_scale) {
|
||||
QMatrix4x4 m = trans.matrix();
|
||||
if (only_scale) m = trans.matrixScale();
|
||||
foreach (ObjectBase * i, children_)
|
||||
i->trans.setMatrix(m * i->trans.matrix());
|
||||
if (only_scale) resetScale();
|
||||
else setMatrix(QMatrix4x4());
|
||||
}
|
||||
|
||||
|
||||
void ObjectBase::cleanTree() {
|
||||
for (int i = 0; i < children_.size(); ++i) {
|
||||
ObjectBase * o = children_[i];
|
||||
if (!o->hasChildren() && !o->mesh() && (o->type() == glMesh)) {
|
||||
delete o;
|
||||
--i;
|
||||
}
|
||||
o->cleanTree();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool ObjectBase::isSelected(bool check_parents) const {
|
||||
if (!check_parents) return selected_;
|
||||
if (selected_) return true;
|
||||
@@ -373,7 +400,8 @@ void ObjectBase::setMesh(Mesh * v) {
|
||||
}
|
||||
|
||||
|
||||
void ObjectBase::buildTransform() {
|
||||
void ObjectBase::buildTransform(bool force) {
|
||||
if (force) trans.setDirty();
|
||||
itransform_.setToIdentity();
|
||||
ObjectBase * p = parent_;
|
||||
if (p)
|
||||
@@ -386,7 +414,7 @@ void ObjectBase::buildTransform() {
|
||||
localTransform(itransform_);
|
||||
//qDebug() << name_ << itransform_;
|
||||
foreach (ObjectBase * i, children_)
|
||||
i->buildTransform();
|
||||
i->buildTransform(force);
|
||||
setObjectsChanged();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user