BoneTemplate.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. namespace VoxelImporter
  6. {
  7. public class BoneTemplate : ScriptableObject
  8. {
  9. public void Set(Transform root)
  10. {
  11. boneInitializeData.Clear();
  12. var data = new BoneInitializeData() { name = root.name, parentName = null, position = root.localPosition };
  13. var controller = root.GetComponent<VoxelSkinnedAnimationObjectBone>();
  14. if (controller != null)
  15. {
  16. data.disablePositionAnimation = controller.edit_disablePositionAnimation;
  17. data.disableRotationAnimation = controller.edit_disableRotationAnimation;
  18. data.disableScaleAnimation = controller.edit_disableScaleAnimation;
  19. data.mirrorSetBoneAnimation = controller.edit_mirrorSetBoneAnimation;
  20. data.mirrorSetBonePosition = controller.edit_mirrorSetBonePosition;
  21. data.mirrorSetBoneWeight = controller.edit_mirrorSetBoneWeight;
  22. }
  23. boneInitializeData.Add(data);
  24. SetChildren(root);
  25. }
  26. private void SetChildren(Transform parent)
  27. {
  28. for (int i = 0; i < parent.childCount; i++)
  29. {
  30. var child = parent.GetChild(i);
  31. var data = new BoneInitializeData() { name = child.name, parentName = parent.name, position = child.localPosition };
  32. var controller = child.GetComponent<VoxelSkinnedAnimationObjectBone>();
  33. if (controller != null)
  34. {
  35. data.disablePositionAnimation = controller.edit_disablePositionAnimation;
  36. data.disableRotationAnimation = controller.edit_disableRotationAnimation;
  37. data.disableScaleAnimation = controller.edit_disableScaleAnimation;
  38. data.mirrorSetBoneAnimation = controller.edit_mirrorSetBoneAnimation;
  39. data.mirrorSetBonePosition = controller.edit_mirrorSetBonePosition;
  40. data.mirrorSetBoneWeight = controller.edit_mirrorSetBoneWeight;
  41. }
  42. boneInitializeData.Add(data);
  43. SetChildren(child);
  44. }
  45. }
  46. [Serializable]
  47. public struct BoneInitializeData
  48. {
  49. public string name;
  50. public string parentName;
  51. public Vector3 position;
  52. public bool disablePositionAnimation;
  53. public bool disableRotationAnimation;
  54. public bool disableScaleAnimation;
  55. public bool mirrorSetBoneAnimation;
  56. public bool mirrorSetBonePosition;
  57. public bool mirrorSetBoneWeight;
  58. }
  59. public List<BoneInitializeData> boneInitializeData = new List<BoneInitializeData>();
  60. }
  61. }