mirror of
https://github.com/rwengine/openrw.git
synced 2024-10-06 09:07:19 +02:00
Helper argument to clone Atomics with a new frame
This commit is contained in:
parent
77b405b7c5
commit
86bf69b0a0
@ -82,10 +82,10 @@ ModelFramePtr ModelFrame::cloneHierarchy() const {
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
AtomicPtr Atomic::clone() const {
|
AtomicPtr Atomic::clone(const ModelFramePtr& newFrame) const {
|
||||||
auto newatomic = std::make_shared<Atomic>();
|
auto newatomic = std::make_shared<Atomic>();
|
||||||
newatomic->setGeometry(getGeometry());
|
newatomic->setGeometry(getGeometry());
|
||||||
newatomic->setFrame(getFrame());
|
newatomic->setFrame(newFrame ? newFrame : getFrame());
|
||||||
newatomic->setFlags(getFlags());
|
newatomic->setFlags(getFlags());
|
||||||
return newatomic;
|
return newatomic;
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AtomicPtr clone() const;
|
AtomicPtr clone(const ModelFramePtr& newFrame = {}) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,13 +165,8 @@ void InstanceObject::changeModel(BaseModelInfo* incoming, int atomicNumber) {
|
|||||||
atomicNumber);
|
atomicNumber);
|
||||||
auto atomic = getModelInfo<SimpleModelInfo>()->getAtomic(atomicNumber);
|
auto atomic = getModelInfo<SimpleModelInfo>()->getAtomic(atomicNumber);
|
||||||
if (atomic) {
|
if (atomic) {
|
||||||
auto previous = atomic_;
|
const auto frame = atomic_ ? atomic_->getFrame() : std::make_shared<ModelFrame>();
|
||||||
atomic_ = atomic->clone();
|
atomic_ = atomic->clone(frame);
|
||||||
if (previous) {
|
|
||||||
atomic_->setFrame(previous->getFrame());
|
|
||||||
} else {
|
|
||||||
atomic_->setFrame(std::make_shared<ModelFrame>());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (collision) {
|
if (collision) {
|
||||||
|
@ -273,9 +273,7 @@ PickupObject::PickupObject(GameWorld* world, const glm::vec3& position,
|
|||||||
setCollected(false);
|
setCollected(false);
|
||||||
|
|
||||||
auto modelData = getModelInfo<SimpleModelInfo>();
|
auto modelData = getModelInfo<SimpleModelInfo>();
|
||||||
auto atomic = modelData->getAtomic(0)->clone();
|
setModel(modelData->getAtomic(0)->clone(std::make_shared<ModelFrame>()));
|
||||||
atomic->setFrame(std::make_shared<ModelFrame>());
|
|
||||||
setModel(std::move(atomic));
|
|
||||||
updateTransform(getPosition(), getRotation());
|
updateTransform(getPosition(), getRotation());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,9 +163,7 @@ ProjectileObject::ProjectileObject(GameWorld* world, const glm::vec3& position,
|
|||||||
|
|
||||||
const auto& modelData = world->data->findModelInfo<SimpleModelInfo>(
|
const auto& modelData = world->data->findModelInfo<SimpleModelInfo>(
|
||||||
getProjectileInfo().weapon->modelID);
|
getProjectileInfo().weapon->modelID);
|
||||||
auto atomic = modelData->getAtomic(0)->clone();
|
setModel(modelData->getAtomic(0)->clone(std::make_shared<ModelFrame>()));
|
||||||
atomic->setFrame(std::make_shared<ModelFrame>());
|
|
||||||
setModel(std::move(atomic));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectileObject::~ProjectileObject() {
|
ProjectileObject::~ProjectileObject() {
|
||||||
|
Loading…
Reference in New Issue
Block a user