// Copyright (C) 2022 Jérôme "Lynix" Leclercq (lynix680@gmail.com) // This file is part of the "Nazara Engine - Utility module" // For conditions of distribution and use, see copyright notice in Config.hpp #include #include #include #include #include namespace Nz { void NodeComponent::SetParent(entt::handle entity, bool keepDerived) { NodeComponent* nodeComponent = entity.try_get(); NazaraAssert(nodeComponent, "entity doesn't have a NodeComponent"); Node::SetParent(nodeComponent, keepDerived); } void NodeComponent::SetParentJoint(entt::handle entity, const std::string& jointName, bool keepDerived) { SkeletonComponentBase* skeletonComponent = entity.try_get(); if (!skeletonComponent) skeletonComponent = entity.try_get(); NazaraAssert(skeletonComponent, "entity doesn't have a SkeletonComponent nor a SharedSkeletonComponent"); std::size_t jointIndex = skeletonComponent->FindJointByName(jointName); if (jointIndex == Skeleton::InvalidJointIndex) { NazaraError("skeleton has no joint \"" + jointName + "\""); return; } Node::SetParent(skeletonComponent->GetAttachedJoint(jointIndex), keepDerived); } void NodeComponent::SetParentJoint(entt::handle entity, std::size_t jointIndex, bool keepDerived) { SkeletonComponentBase* skeletonComponent = entity.try_get(); if (!skeletonComponent) skeletonComponent = entity.try_get(); NazaraAssert(skeletonComponent, "entity doesn't have a SkeletonComponent nor a SharedSkeletonComponent"); Node::SetParent(skeletonComponent->GetAttachedJoint(jointIndex), keepDerived); } }