BsSkeletonMask.cpp 980 B

123456789101112131415161718192021222324252627282930313233343536
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Animation/BsSkeletonMask.h"
  4. #include "Animation/BsSkeleton.h"
  5. namespace bs
  6. {
  7. SkeletonMask::SkeletonMask(UINT32 numBones)
  8. :mIsDisabled(numBones)
  9. { }
  10. bool SkeletonMask::isEnabled(UINT32 boneIdx) const
  11. {
  12. if (boneIdx >= (UINT32)mIsDisabled.size())
  13. return true;
  14. return !mIsDisabled[boneIdx];
  15. }
  16. SkeletonMaskBuilder::SkeletonMaskBuilder(const SPtr<Skeleton>& skeleton)
  17. :mSkeleton(skeleton), mMask(skeleton->getNumBones())
  18. { }
  19. void SkeletonMaskBuilder::setBoneState(const String& name, bool enabled)
  20. {
  21. UINT32 numBones = mSkeleton->getNumBones();
  22. for(UINT32 i = 0; i < numBones; i++)
  23. {
  24. if(mSkeleton->getBoneInfo(i).name == name)
  25. {
  26. mMask.mIsDisabled[i] = !enabled;
  27. break;
  28. }
  29. }
  30. }
  31. }