CustomRoleUtility.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using UnityEngine;
  7. /// <summary>
  8. /// 可编辑脸部部位
  9. /// </summary>
  10. public enum EditableFacePart
  11. {
  12. eyebrow,
  13. eye,
  14. mousewidth
  15. }
  16. /// <summary>
  17. /// 可编辑身体部位
  18. /// </summary>
  19. public enum EditableBodyPart
  20. {
  21. UpperArm,
  22. LowerArm,
  23. Hand,
  24. UpperLeg,
  25. LowerLeg,
  26. Foot,
  27. None
  28. }
  29. /// <summary>
  30. /// 编辑类型
  31. /// </summary>
  32. public enum ModifyType
  33. {
  34. Length,//长
  35. Width,//宽
  36. Thick,//厚度
  37. Angle,//角度
  38. Color,//颜色
  39. Sprite,//贴图
  40. Height,//高度
  41. }
  42. public static class CustomRoleUtility
  43. {
  44. public static void UpdateBoneScale(Animator ani,EditableBodyPart part,float value)
  45. {
  46. Transform transL = null;
  47. Transform transR = null;
  48. Vector3 beforeScale = Vector3.one;
  49. List<Transform> childList = new List<Transform>();
  50. bool keepChildWorldScale = false;
  51. switch (part)
  52. {
  53. case EditableBodyPart.UpperArm:
  54. transL = ani.GetBoneTransform(HumanBodyBones.LeftUpperArm);
  55. transR = ani.GetBoneTransform(HumanBodyBones.RightUpperArm);
  56. keepChildWorldScale = true;
  57. break;
  58. case EditableBodyPart.LowerArm:
  59. transL = ani.GetBoneTransform(HumanBodyBones.LeftLowerArm);
  60. transR = ani.GetBoneTransform(HumanBodyBones.RightLowerArm);
  61. break;
  62. case EditableBodyPart.Hand:
  63. transL = ani.GetBoneTransform(HumanBodyBones.LeftHand);
  64. transR = ani.GetBoneTransform(HumanBodyBones.RightHand);
  65. break;
  66. case EditableBodyPart.UpperLeg:
  67. transL = ani.GetBoneTransform(HumanBodyBones.LeftUpperLeg);
  68. transR = ani.GetBoneTransform(HumanBodyBones.RightUpperLeg);
  69. keepChildWorldScale = true;
  70. break;
  71. case EditableBodyPart.LowerLeg:
  72. transL = ani.GetBoneTransform(HumanBodyBones.LeftLowerLeg);
  73. transR = ani.GetBoneTransform(HumanBodyBones.RightLowerLeg);
  74. break;
  75. case EditableBodyPart.Foot:
  76. transL = ani.GetBoneTransform(HumanBodyBones.LeftFoot);
  77. transR = ani.GetBoneTransform(HumanBodyBones.RightFoot);
  78. break;
  79. case EditableBodyPart.None:
  80. break;
  81. default:
  82. break;
  83. }
  84. if(transL != null)
  85. {
  86. beforeScale = transL.localScale;
  87. var world_l = transL.lossyScale;
  88. transL.SetLocalScaleX(transL.localScale.x * value / world_l.x);
  89. transL.SetLocalScaleY(transL.localScale.y * value / world_l.y);
  90. transL.SetLocalScaleZ(transL.localScale.z * value / world_l.z);
  91. var lcount = transL.childCount;
  92. for (int i = 0; i < lcount; i++)
  93. {
  94. childList.Add(transL.GetChild(i));
  95. }
  96. }
  97. if(transR != null)
  98. {
  99. beforeScale = transR.localScale;
  100. var world_r = transR.lossyScale;
  101. transR.SetLocalScaleX(transR.localScale.x * value / world_r.x);
  102. transR.SetLocalScaleY(transR.localScale.y * value / world_r.y);
  103. transR.SetLocalScaleZ(transR.localScale.z * value / world_r.z);
  104. var rcount = transR.childCount;
  105. for (int i = 0; i < rcount; i++)
  106. {
  107. childList.Add(transR.GetChild(i));
  108. }
  109. }
  110. if(!keepChildWorldScale)
  111. {
  112. return;
  113. }
  114. for (int i = 0; i < childList.Count; i++)
  115. {
  116. var childTrans = childList[i];
  117. var oldScale = childTrans.localScale;
  118. childTrans.SetLocalScaleX(oldScale.x * beforeScale.x / value);
  119. childTrans.SetLocalScaleY(oldScale.y * beforeScale.y / value);
  120. childTrans.SetLocalScaleZ(oldScale.z * beforeScale.z / value);
  121. }
  122. }
  123. public static void ShowFile()
  124. {
  125. FileStream fs = File.Open("E:/key.key", FileMode.Open);
  126. FileStream fsout = File.Open("E:/keyout9.key", FileMode.Create);
  127. BinaryReader br = new BinaryReader(fs);
  128. BinaryWriter bw = new BinaryWriter(fsout);
  129. Byte[] byData = br.ReadBytes((int)fs.Length);
  130. var t = "NKnFb79Sxk+4Xw284MQleA==";
  131. var pid = "1639047545434X1016017";
  132. fs.Close();
  133. //var iv = new byte[16];
  134. //var key = new byte[16];
  135. //for (int i = 0; i < byData.Length; i++)
  136. //{
  137. // if(i <= 15)
  138. // {
  139. // iv[i] = byData[i];
  140. // var ivx = byData[i].ToString("x");
  141. // Debug.Log(iv[i] + " : " + ivx);
  142. // }
  143. // else
  144. // {
  145. // key[i - 16] = byData[i];
  146. // var keyx = byData[i].ToString("x");
  147. // Debug.Log(key[i - 16] + " : " + keyx);
  148. // }
  149. //}
  150. //var str = DecryptStringFromBytes_Aes(byData, iv, key);
  151. //Debug.Log("result" + str);
  152. Debug.Log(byData.Length);
  153. IList<byte> bData = new List<byte>();
  154. string[] strHexs = new string[16];
  155. int[] intData = {
  156. 245,
  157. 217,
  158. 174,
  159. 210,
  160. 90,
  161. 41,
  162. 167,
  163. 178,
  164. 110,
  165. 47,
  166. 158,
  167. 193,
  168. 35,
  169. 162,
  170. 230,
  171. 97
  172. };
  173. for (int i = 0; i < 16; i++)
  174. {
  175. int a = intData[i];
  176. strHexs[i] = a.ToString("x");
  177. //strHexs[i] = a.ToString();
  178. Debug.Log(a + " : " + a.ToString("x"));
  179. }
  180. foreach (var item in strHexs)
  181. {
  182. Debug.Log(Convert.ToByte(item, 16));
  183. bData.Add(Convert.ToByte(item, 16));
  184. }
  185. bw.Write(bData.ToArray());
  186. fsout.Close();
  187. }
  188. }