Sdk/World: Add CloneEntity(const EntityHandle&) overload
This commit is contained in:
parent
aee9a38f76
commit
f6bbe396fa
|
|
@ -289,6 +289,7 @@ Nazara Development Kit:
|
||||||
- ⚠️ Made AbstractTextAreaWidget which is inherited by TextAreaWidget
|
- ⚠️ Made AbstractTextAreaWidget which is inherited by TextAreaWidget
|
||||||
- ⚠️ Added RichTextAreaWidget
|
- ⚠️ Added RichTextAreaWidget
|
||||||
- ⚠️ Console now supports text color in history
|
- ⚠️ Console now supports text color in history
|
||||||
|
- Added World::CloneEntity overload taking an EntityHandle const reference, allowing to copy entities from other worlds
|
||||||
|
|
||||||
# 0.4:
|
# 0.4:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ namespace Ndk
|
||||||
|
|
||||||
void Clear() noexcept;
|
void Clear() noexcept;
|
||||||
const EntityHandle& CloneEntity(EntityId id);
|
const EntityHandle& CloneEntity(EntityId id);
|
||||||
|
const EntityHandle& CloneEntity(const EntityHandle& entity);
|
||||||
|
|
||||||
inline void DisableProfiler();
|
inline void DisableProfiler();
|
||||||
inline void EnableProfiler(bool enable = true);
|
inline void EnableProfiler(bool enable = true);
|
||||||
|
|
|
||||||
|
|
@ -157,16 +157,26 @@ namespace Ndk
|
||||||
return EntityHandle::InvalidHandle;
|
return EntityHandle::InvalidHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return CloneEntity(original);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Clones the entity
|
||||||
|
* \return The clone newly created
|
||||||
|
*
|
||||||
|
* \param original Entity handle
|
||||||
|
*
|
||||||
|
* \remark Cloning a disabled entity will produce an enabled clone
|
||||||
|
*/
|
||||||
|
const EntityHandle& World::CloneEntity(const EntityHandle& original)
|
||||||
|
{
|
||||||
const EntityHandle& clone = CreateEntity();
|
const EntityHandle& clone = CreateEntity();
|
||||||
if (!original->IsEnabled())
|
if (!original->IsEnabled())
|
||||||
clone->Disable();
|
clone->Disable();
|
||||||
|
|
||||||
const Nz::Bitset<>& componentBits = original->GetComponentBits();
|
const Nz::Bitset<>& componentBits = original->GetComponentBits();
|
||||||
for (std::size_t i = componentBits.FindFirst(); i != componentBits.npos; i = componentBits.FindNext(i))
|
for (std::size_t i = componentBits.FindFirst(); i != componentBits.npos; i = componentBits.FindNext(i))
|
||||||
{
|
clone->AddComponent(original->GetComponent(ComponentIndex(i)).Clone());
|
||||||
std::unique_ptr<BaseComponent> component(original->GetComponent(ComponentIndex(i)).Clone());
|
|
||||||
clone->AddComponent(std::move(component));
|
|
||||||
}
|
|
||||||
|
|
||||||
clone->Enable();
|
clone->Enable();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue