mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 10:37:35 +02:00
ModelReferential copy constructor
This commit is contained in:
parent
9999c88d84
commit
283beab05d
2 changed files with 28 additions and 12 deletions
|
@ -16,8 +16,26 @@
|
||||||
|
|
||||||
#include "ModelReferential.h"
|
#include "ModelReferential.h"
|
||||||
|
|
||||||
ModelReferential::ModelReferential(Referential* referential, AvatarData* avatar) : Referential(MODEL, avatar) {
|
ModelReferential::ModelReferential(Referential* referential, ModelTree* tree, AvatarData* avatar) :
|
||||||
|
Referential(MODEL, avatar),
|
||||||
|
_tree(tree) {
|
||||||
|
unpackExtraData(reinterpret_cast<unsigned char*>(referential->getExtraData().data()),
|
||||||
|
referential->getExtraData().size());
|
||||||
|
if (!isValid()) {
|
||||||
|
qDebug() << "ModelReferential::copyConstructo(): Not Valid";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ModelItem* item = _tree->findModelByID(_modelID);
|
||||||
|
if (item != NULL) {
|
||||||
|
_refScale = item->getRadius();
|
||||||
|
_refRotation = item->getModelRotation();
|
||||||
|
_refPosition = item->getPosition() * (float)TREE_SCALE;
|
||||||
|
}
|
||||||
|
|
||||||
|
_scale = referential->getScale();
|
||||||
|
_rotation = referential->getRotation();
|
||||||
|
_translation = referential->getTranslation();
|
||||||
}
|
}
|
||||||
|
|
||||||
ModelReferential::ModelReferential(uint32_t modelID, ModelTree* tree, AvatarData* avatar) :
|
ModelReferential::ModelReferential(uint32_t modelID, ModelTree* tree, AvatarData* avatar) :
|
||||||
|
@ -26,8 +44,8 @@ _modelID(modelID),
|
||||||
_tree(tree)
|
_tree(tree)
|
||||||
{
|
{
|
||||||
const ModelItem* item = _tree->findModelByID(_modelID);
|
const ModelItem* item = _tree->findModelByID(_modelID);
|
||||||
if (!_isValid || item == NULL) {
|
if (!isValid() || item == NULL) {
|
||||||
qDebug() << "Not Validd";
|
qDebug() << "ModelReferential::constructor(): Not Valid";
|
||||||
_isValid = false;
|
_isValid = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -44,9 +62,8 @@ _tree(tree)
|
||||||
|
|
||||||
void ModelReferential::update() {
|
void ModelReferential::update() {
|
||||||
const ModelItem* item = _tree->findModelByID(_modelID);
|
const ModelItem* item = _tree->findModelByID(_modelID);
|
||||||
if (item == NULL || _avatar == NULL) {
|
if (!isValid() || item == NULL || _avatar == NULL) {
|
||||||
qDebug() << "Not Valid";
|
//qDebug() << "ModelReferential::update(): Not Valid";
|
||||||
_isValid = false;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,13 +75,12 @@ void ModelReferential::update() {
|
||||||
}
|
}
|
||||||
if (item->getModelRotation() != _refRotation) {
|
if (item->getModelRotation() != _refRotation) {
|
||||||
_refRotation = item->getModelRotation();
|
_refRotation = item->getModelRotation();
|
||||||
_avatar->setOrientation(_refRotation * _rotation);
|
_avatar->setOrientation(_refRotation * _rotation, true);
|
||||||
somethingChanged = true;
|
somethingChanged = true;
|
||||||
}
|
}
|
||||||
if (item->getPosition() != _refPosition || somethingChanged) {
|
if (item->getPosition() != _refPosition || somethingChanged) {
|
||||||
_refPosition = item->getPosition();
|
_refPosition = item->getPosition();
|
||||||
_avatar->setPosition(_refPosition * (float)TREE_SCALE + _refRotation * (_translation * _refScale));
|
_avatar->setPosition(_refPosition * (float)TREE_SCALE + _refRotation * (_translation * _refScale), true);
|
||||||
//qDebug() << "Ref: " << item->getLastUpdated() << " " << item->getLastEdited();
|
|
||||||
somethingChanged = true;
|
somethingChanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,7 +103,7 @@ JointReferential::JointReferential(uint32_t jointIndex, uint32_t modelID, ModelT
|
||||||
const ModelItem* item = _tree->findModelByID(_modelID);
|
const ModelItem* item = _tree->findModelByID(_modelID);
|
||||||
const Model* model = getModel(item);
|
const Model* model = getModel(item);
|
||||||
if (!_isValid || model == NULL || _jointIndex >= model->getJointStateCount()) {
|
if (!_isValid || model == NULL || _jointIndex >= model->getJointStateCount()) {
|
||||||
qDebug() << "Not Validd";
|
qDebug() << "Not Valid";
|
||||||
_isValid = false;
|
_isValid = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ class Model;
|
||||||
|
|
||||||
class ModelReferential : public Referential {
|
class ModelReferential : public Referential {
|
||||||
public:
|
public:
|
||||||
ModelReferential(Referential* ref, AvatarData* avatar);
|
ModelReferential(Referential* ref, ModelTree* tree, AvatarData* avatar);
|
||||||
ModelReferential(uint32_t modelID, ModelTree* tree, AvatarData* avatar);
|
ModelReferential(uint32_t modelID, ModelTree* tree, AvatarData* avatar);
|
||||||
virtual void update();
|
virtual void update();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue