Decompiled source of FistPunch v1.0.0
FistPunch.dll
Decompiled 2 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using FistVR; using HarmonyLib; using OtherLoader; using Sodalite; using Sodalite.Api; using TheNext; using UnityEditor; using UnityEngine; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [ExecuteInEditMode] [RequireComponent(typeof(Camera))] public class DeferredNightVisionEffect : MonoBehaviour { [SerializeField] [Tooltip("The main color of the NV effect")] public Color m_NVColor = new Color(0f, 1f, 0.1724138f, 0f); [SerializeField] [Tooltip("The color that the NV effect will 'bleach' towards (white = default)")] public Color m_TargetBleachColor = new Color(1f, 1f, 1f, 0f); [Range(0f, 0.1f)] [Tooltip("How much base lighting does the NV effect pick up")] public float m_baseLightingContribution = 0.025f; [Range(0f, 128f)] [Tooltip("The higher this value, the more bright areas will get 'bleached out'")] public float m_LightSensitivityMultiplier = 100f; private Material m_Material; private Shader m_Shader; [Tooltip("Do we want to apply a vignette to the edges of the screen?")] public bool useVignetting = true; public Shader NightVisionShader => m_Shader; private void DestroyMaterial(Material mat) { if (Object.op_Implicit((Object)(object)mat)) { Object.DestroyImmediate((Object)(object)mat); mat = null; } } private void CreateMaterials() { if ((Object)(object)m_Shader == (Object)null) { m_Shader = Shader.Find("Custom/DeferredNightVisionShader"); } if ((Object)(object)m_Material == (Object)null && (Object)(object)m_Shader != (Object)null && m_Shader.isSupported) { m_Material = CreateMaterial(m_Shader); } } private Material CreateMaterial(Shader shader) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)shader)) { return null; } Material val = new Material(shader); ((Object)val).hideFlags = (HideFlags)61; return val; } private void OnDisable() { DestroyMaterial(m_Material); m_Material = null; m_Shader = null; } [ContextMenu("UpdateShaderValues")] public void UpdateShaderValues() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)m_Material == (Object)null)) { m_Material.SetVector("_NVColor", Color.op_Implicit(m_NVColor)); m_Material.SetVector("_TargetWhiteColor", Color.op_Implicit(m_TargetBleachColor)); m_Material.SetFloat("_BaseLightingContribution", m_baseLightingContribution); m_Material.SetFloat("_LightSensitivityMultiplier", m_LightSensitivityMultiplier); m_Material.shaderKeywords = null; if (useVignetting) { Shader.EnableKeyword("USE_VIGNETTE"); } else { Shader.DisableKeyword("USE_VIGNETTE"); } } } private void OnEnable() { CreateMaterials(); UpdateShaderValues(); } public void ReloadShaders() { OnDisable(); } private void OnRenderImage(RenderTexture source, RenderTexture destination) { UpdateShaderValues(); CreateMaterials(); Graphics.Blit((Texture)(object)source, destination, m_Material); } } namespace JerryPunch { [BepInPlugin("JerryPunch.Punchhhhh", "Punchhhhh", "1.0.0")] [BepInDependency("nrgill28.Sodalite", "1.4.1")] [BepInProcess("h3vr.exe")] public class Punchhhhh : BaseUnityPlugin { internal static ManualLogSource Logger { get; private set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Logger.LogMessage((object)"New harmony"); Logger.LogMessage((object)"Setted the fields"); Harmony.CreateAndPatchAll(typeof(Punchhhhh), (string)null); Logger.LogMessage((object)"Loaded punch system"); } [HarmonyPatch(typeof(FVRWristMenu2), "Awake")] [HarmonyPostfix] public static void PCHWMAH(FVRWristMenu2 __instance) { //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Expected O, but got Unknown //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown if ((Object)(object)__instance == (Object)null) { Logger.LogMessage((object)"No FVRWristMenu2"); } bool flag = false; string text = "Punch System Toggle"; foreach (WristMenuButton button in WristMenuAPI.Buttons) { Logger.LogMessage((object)("CC" + button.Text)); if (button.Text == text) { flag = true; break; } } if (!flag) { WristMenuAPI.Buttons.Add(new WristMenuButton(text, new ButtonClickEvent(SpawnPCHSYSTEM))); } } public static void SpawnPCHSYSTEM(object sender, ButtonClickEventArgs args) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_005c: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("PunchSystem(Clone)"); if (Object.op_Implicit((Object)(object)val)) { Logger.LogMessage((object)"Punch System Found!"); Object.Destroy((Object)(object)val); return; } FVRPlayerBody val2 = Object.FindObjectOfType<FVRPlayerBody>(); ItemSpawnerV2 val3 = new ItemSpawnerV2(); ItemSpawnerID spawnerID = IM.GetSpawnerID("PunchSystem"); AnvilManager.Run(val3.SpawnItemsToRayPoint(spawnerID, ((Component)val2.Head).transform.position)); Object.Destroy((Object)(object)val3); } } public class Punchhhhhh : MonoBehaviour { public FVRObject FistL; public FVRObject FistR; public GameObject FL; public GameObject FR; public Rigidbody RL; public Rigidbody RR; private void Start() { Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); } private void Update() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)GM.CurrentPlayerBody != (Object)null) { ((Component)this).gameObject.transform.position = ((Component)GM.CurrentPlayerBody.Head).transform.position; ((Component)this).gameObject.transform.eulerAngles = ((Component)GM.CurrentPlayerBody.Head).transform.eulerAngles; } else if (!((Object)(object)GM.CurrentPlayerBody == (Object)null)) { } if ((Object)(object)FL == (Object)null || (Object)(object)FR == (Object)null) { FL = Object.Instantiate<GameObject>(((AnvilAsset)FistL).GetGameObject(), ((Component)GM.CurrentPlayerBody.LeftHand).transform.position, ((Component)GM.CurrentPlayerBody.LeftHand).transform.rotation); FR = Object.Instantiate<GameObject>(((AnvilAsset)FistR).GetGameObject(), ((Component)GM.CurrentPlayerBody.RightHand).transform.position, ((Component)GM.CurrentPlayerBody.RightHand).transform.rotation); } else { if (!((Object)(object)FL != (Object)null) || !((Object)(object)FR != (Object)null)) { return; } FL.transform.position = ((Component)GM.CurrentPlayerBody.LeftHand).transform.position; FL.transform.eulerAngles = ((Component)GM.CurrentPlayerBody.LeftHand).transform.eulerAngles; FR.transform.position = ((Component)GM.CurrentPlayerBody.RightHand).transform.position; FR.transform.eulerAngles = ((Component)GM.CurrentPlayerBody.RightHand).transform.eulerAngles; RL = FL.GetComponent<Rigidbody>(); RR = FR.GetComponent<Rigidbody>(); if ((Object)(object)RL != (Object)null && (Object)(object)RR != (Object)null) { if ((Object)(object)GM.CurrentMovementManager.Hands[0].m_currentInteractable == (Object)null && GM.CurrentMovementManager.Hands[0].Input.TriggerPressed) { FL.SetActive(true); } else if ((Object)(object)GM.CurrentMovementManager.Hands[0].m_currentInteractable != (Object)null || !GM.CurrentMovementManager.Hands[0].Input.TriggerPressed) { FL.SetActive(false); } if ((Object)(object)GM.CurrentMovementManager.Hands[1].m_currentInteractable == (Object)null && GM.CurrentMovementManager.Hands[1].Input.TriggerPressed) { FR.SetActive(true); } else if ((Object)(object)GM.CurrentMovementManager.Hands[1].m_currentInteractable != (Object)null || !GM.CurrentMovementManager.Hands[1].Input.TriggerPressed) { FR.SetActive(false); } } } } private void OnDestroy() { Object.Destroy((Object)(object)FL); Object.Destroy((Object)(object)FR); } } } namespace JerryAr.FistPunch { [BepInPlugin("JerryAr.FistPunch", "FistPunch", "1.0.0")] [BepInProcess("h3vr.exe")] [Description("Built with MeatKit")] [BepInDependency("h3vr.otherloader", "1.3.0")] public class FistPunchPlugin : BaseUnityPlugin { private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; LoadAssets(); } private void LoadAssets() { Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "JerryAr.FistPunch"); OtherLoader.RegisterDirectLoad(BasePath, "JerryAr.FistPunch", "", "", "fistpunch", ""); } } } public class MagPosChange : MonoBehaviour { private void Start() { } private void Update() { } } public class BearControl : MonoBehaviour { public CapsuleCollider bearCollider; public Collider planeCollider; public Collider terrianCollider; private Vector3 prevPos; private Vector3 v = Vector3.zero; private bool cached = false; private float g = -5f; private void Start() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) prevPos = ((Component)bearCollider).transform.position; } private void FixedUpdate() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) Ray val = Camera.main.ScreenPointToRay(Input.mousePosition); Rigidbody component = ((Component)this).GetComponent<Rigidbody>(); if (component.useGravity) { Transform transform = ((Component)bearCollider).transform; transform.position += v; } else { v = Vector3.zero; RaycastHit val2 = default(RaycastHit); if (planeCollider.Raycast(val, ref val2, 100f)) { Vector3 point = ((RaycastHit)(ref val2)).point; point.y = ((!(point.y < -0.04f)) ? point.y : (-0.04f)); ((Component)bearCollider).transform.position = point; v = ((Component)bearCollider).transform.position - prevPos; } } prevPos = ((Component)bearCollider).transform.position; } private void Update() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) Ray val = Camera.main.ScreenPointToRay(Input.mousePosition); Rigidbody component = ((Component)this).GetComponent<Rigidbody>(); RaycastHit val2 = default(RaycastHit); if (Input.GetMouseButton(0) && ((Collider)bearCollider).Raycast(val, ref val2, 100f)) { cached = true; component.useGravity = false; } if (Input.GetMouseButtonUp(0)) { cached = false; component.useGravity = true; } } public void ButtonDown() { Application.LoadLevel(0); } public void OnCollisionEnter(Collision other) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) v = Vector3.zero; } public void OnCollisionStay(Collision other) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) v = Vector3.zero; } } public class BodyController : MonoBehaviour { public Transform windObj; private Animator animator; private Vector3 velocity; private Rigidbody rig; public float MoveSpeed = 5f; private void Start() { animator = ((Component)this).GetComponent<Animator>(); rig = ((Component)this).GetComponent<Rigidbody>(); } private void Update() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)animator == (Object)null) { return; } if (Input.GetButton("Jump")) { animator.SetBool("Jump", true); } else { animator.SetBool("Jump", false); } if (Input.GetKeyDown((KeyCode)49)) { animator.SetInteger("Action", 1); } if (Input.GetKeyDown((KeyCode)50)) { animator.SetInteger("Action", 2); } if (Input.GetKey((KeyCode)113)) { windObj.Rotate(Vector3.up, 1f); } if (Input.GetKey((KeyCode)101)) { windObj.Rotate(Vector3.up, -1f); } AnimatorStateInfo currentAnimatorStateInfo = animator.GetCurrentAnimatorStateInfo(0); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsTag("spActions")) { animator.SetInteger("Action", 0); } float axis = Input.GetAxis("Horizontal"); float axis2 = Input.GetAxis("Vertical"); float num = Mathf.Sqrt(axis * axis + axis2 * axis2); if (num > 1f) { num = 1f; } animator.SetFloat("Speed", num); if (num > 0.1f) { rig.useGravity = true; velocity = new Vector3(0f, 0f, num); float num2 = Mathf.Atan(axis / axis2); num2 *= 57.29578f; if (axis2 < 0f) { num2 -= 180f; } Vector3 zero = Vector3.zero; CharacterController component = ((Component)this).GetComponent<CharacterController>(); ((Component)this).transform.rotation = Quaternion.Lerp(((Component)this).transform.rotation, Quaternion.Euler(new Vector3(0f, num2, 0f)), Time.deltaTime * 10f); velocity = ((Component)this).transform.TransformDirection(velocity); velocity *= MoveSpeed * Time.deltaTime; Transform transform = ((Component)this).transform; transform.position += velocity; Transform obj = windObj; obj.position += velocity; } } public void ButtonDown() { Application.LoadLevel(0); } } public class Demo02Camera : MonoBehaviour { public Transform follow; public float followHeight = 1.3f; public float distanceAway = 5f; public float distanceUp = 2f; public float smooth = 1f; public bool Inverse = false; private Vector3 targetPosition; private Vector3 followPosition; private Vector3 forward; private float rotateSpeed = 2f; public Vector3 cameraRot; private Vector3 cameraPitch; private Quaternion rotSpeed; private float[] distanseArray = new float[4] { 0.8f, 0.6f, 0.4f, 0.2f }; private void Start() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) cameraPitch = Vector3.zero; cameraRot = Vector3.zero; forward = Vector3.forward; followPosition = Vector3.zero; Application.targetFrameRate = 10; } private void LateUpdate() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) followPosition.y = followHeight; float num = distanceAway; targetPosition = follow.position + Vector3.up * distanceUp + (float)(Inverse ? 1 : (-1)) * forward * num; ((Component)this).transform.position = Vector3.Lerp(((Component)this).transform.position, targetPosition, Time.deltaTime * smooth); ((Component)this).transform.LookAt(follow.position + followPosition); } } public class Attach : MonoBehaviour { public Transform ropeEnd; public Transform bear; public Vector3 offset; private void LateUpdate() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) bear.position = ropeEnd.position + offset; } } public class RopeController : MonoBehaviour { public SphereCollider ropeCollider; public Collider planeCollider; private Ray mouseRay; private bool cached = false; private Vector3 pos = Vector3.zero; private Vector3 prevPos = Vector3.zero; private void Start() { } private void Update() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) Ray val = (mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition)); Vector3 zero = Vector3.zero; RaycastHit val2 = default(RaycastHit); if (Input.GetMouseButton(0) && ((Collider)ropeCollider).Raycast(val, ref val2, 100f)) { zero = ((RaycastHit)(ref val2)).point - ((Component)this).transform.position; cached = true; } if (Input.GetMouseButtonUp(0)) { cached = false; prevPos = Vector3.zero; pos = Vector3.zero; } if (cached && planeCollider.Raycast(val, ref val2, 100f)) { prevPos = pos; pos = ((RaycastHit)(ref val2)).point; if (prevPos != Vector3.zero) { Transform transform = ((Component)this).transform; transform.position += pos - prevPos; } } } private void OnDrawGizmos() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) Gizmos.color = Color.red; Gizmos.DrawLine(((Component)Camera.main).transform.position, pos); } } public class DynamicalSetup : MonoBehaviour { private PhysicalBoneManager manager; private PhysicalBone hairRoot; private BoneAttribute attribute; private GameObject sphere; private SphereCollider sphereCollider; private GameObject wind; private PhysicalBoneCollider spherePhyCollider; private void Start() { } private void Update() { if ((Object)(object)manager == (Object)null) { manager = ((Component)this).gameObject.AddComponent<PhysicalBoneManager>(); hairRoot = GameObject.FindGameObjectWithTag("HairTest").AddComponent<PhysicalBone>(); hairRoot.Initialize(); manager.addBoneRoot(hairRoot); hairRoot.stiffness = 10f; hairRoot.airFriction = 14f; hairRoot.radius = 0.04f; attribute = hairRoot.getBoneAttribute("hairPlait_L"); if (attribute == null) { attribute = new BoneAttribute(); } attribute.freezed = true; hairRoot.setBoneAttribute("hairPlait_L", attribute); sphere = GameObject.FindGameObjectWithTag("Sphere"); sphereCollider = sphere.AddComponent<SphereCollider>(); sphereCollider.radius = 0.5f; spherePhyCollider = sphere.AddComponent<PhysicalBoneCollider>(); manager.addGlobalCollider(spherePhyCollider); wind = GameObject.FindGameObjectWithTag("Wind"); wind.AddComponent<PhysicalBoneWindZone>(); } } } namespace TheNext { [Serializable] public class BoneAttribute { public bool freezed = false; public bool useIndividualAttribute = false; public bool useIndividualVelocityScale = false; public Vector3 velocityScale = Vector3.one; public float mass = 1f; public float stiffness = 20f; public float airFriction = 5f; public bool useIndividualRadius = false; public float radius = 0.1f; public bool rotationLimit = false; public Vector3 rotationAxis = Vector3.zero; public float maxRotationAngle = 180f; } public enum AxisEnum { x, xReverse, y, yReverse, z, zReverse } [ExecuteInEditMode] public class PhysicalBone : MonoBehaviour { private const int MAX_BONE_COUNT = 500; private PhysicalBoneBase[] softBones = new PhysicalBoneBase[500]; [SerializeField] private Transform[] boneTransform = (Transform[])(object)new Transform[500]; [SerializeField] private BoneAttribute[] boneAttribute = new BoneAttribute[500]; private Vector3[] prevBonePos = (Vector3[])(object)new Vector3[500]; private int boneCount = 0; public Vector3 globalVelocityScale = new Vector3(1f, 1f, 1f); public float gravity = 9.8f; public float mass = 1f; public bool smoothTweening = true; public bool highStiffnessTweenFix = false; [Range(0f, 1f)] public float energyDecay = 0.99f; public float stiffness = 10f; public float airFriction = 5f; public float radius = 0.1f; public float radiusScale = 1f; public bool rotationLimit = false; public float maxRotationAngle = 180f; public Vector3 rotationAxis = new Vector3(0f, 0f, 0f); public Vector3 boneAxisValue = new Vector3(0f, 1f, 0f); public AxisEnum boneAxis = AxisEnum.y; public AxisEnum prevBoneAxis = AxisEnum.y; public bool selfCollision = false; public bool useGlobalColliders = true; public bool colliderFriction = true; private Vector3 globalPos; private int maxDeep = 0; public List<PhysicalBoneCollider> localColliders = new List<PhysicalBoneCollider>(); private int colliderCount = 0; public void Initialize() { if (maxDeep == 0) { boneCount = 0; maxDeep = setupBone(((Component)this).transform, 0); } } private void Start() { if (maxDeep == 0) { boneCount = 0; maxDeep = setupBone(((Component)this).transform, 0); int num = 0; } } private int setupBone(Transform tf, int deep) { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) if (tf.childCount == 0) { return deep; } if (boneCount >= 500) { throw new UnityException("Warning: The bone count can't greater than " + 500 + " :" + ((Object)((Component)this).gameObject).name); } Vector3 val = Vector3.zero; for (int i = 0; i < tf.childCount; i++) { if ((Object)(object)tf.GetChild(i) != (Object)null) { val += tf.GetChild(i).position; } } int childCount = tf.childCount; if (childCount == 0) { val = Vector3.zero; softBones[boneCount] = null; return deep; } val /= (float)childCount; deep++; boneTransform[boneCount] = tf; if (boneAttribute[boneCount] == null) { boneAttribute[boneCount] = new BoneAttribute(); } softBones[boneCount] = new PhysicalBoneBase(tf, boneAttribute[boneCount], val, deep, boneCount); boneCount++; int num = 0; for (int j = 0; j < tf.childCount; j++) { if ((Object)(object)tf.GetChild(j) != (Object)null) { int num2 = setupBone(tf.GetChild(j), deep); if (num2 > num) { num = num2; } } } return num; } public void DoSimpleUpdate(Vector3 globalPos, float dt) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) this.globalPos = globalPos; Vector3 fixMotion = Vector3.zero; int i = 0; int num = 0; for (; i < boneCount; i++) { if (softBones[i] != null && !boneAttribute[i].freezed) { if (highStiffnessTweenFix && num == 0) { fixMotion = boneTransform[i].position - prevBonePos[i]; num = 1; } Vector3 val = (boneAttribute[i].rotationLimit ? boneAttribute[i].rotationAxis : ((!rotationLimit) ? Vector3.zero : rotationAxis)); float maxAngle = (boneAttribute[i].rotationLimit ? boneAttribute[i].maxRotationAngle : ((!rotationLimit) ? 360f : maxRotationAngle)); Vector3 val2 = ((!boneAttribute[i].useIndividualVelocityScale) ? globalVelocityScale : boneAttribute[i].velocityScale); if (smoothTweening) { softBones[i].smoothUpdate(((Component)this).transform.TransformDirection(((Vector3)(ref val)).normalized), maxAngle, boneAxisValue, globalPos, val2, fixMotion, dt); } else { softBones[i].simpleUpdate(((Component)this).transform.TransformDirection(((Vector3)(ref val)).normalized), maxAngle, boneAxisValue, globalPos, val2); } } } } public void DoUpdate(Vector3 force, List<PhysicalBoneCollider> globalColliders, float loop, Vector3 globalPos, float dt) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0438: Unknown result type (might be due to invalid IL or missing references) //IL_043d: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_03c3: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03c8: Unknown result type (might be due to invalid IL or missing references) //IL_03db: Unknown result type (might be due to invalid IL or missing references) //IL_03e0: Unknown result type (might be due to invalid IL or missing references) //IL_03e8: Unknown result type (might be due to invalid IL or missing references) //IL_03ed: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Unknown result type (might be due to invalid IL or missing references) //IL_03f1: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < localColliders.Count; i++) { PhysicalBoneCollider physicalBoneCollider = localColliders[i]; if (Object.op_Implicit((Object)(object)physicalBoneCollider) && ((Behaviour)physicalBoneCollider).isActiveAndEnabled) { physicalBoneCollider.DoUpdate(); } } this.globalPos = globalPos; if (boneAxis != prevBoneAxis) { if (boneAxis == AxisEnum.x) { boneAxisValue = Vector3.right; } else if (boneAxis == AxisEnum.xReverse) { boneAxisValue = Vector3.left; } else if (boneAxis == AxisEnum.y) { boneAxisValue = Vector3.up; } else if (boneAxis == AxisEnum.yReverse) { boneAxisValue = Vector3.down; } else if (boneAxis == AxisEnum.z) { boneAxisValue = Vector3.forward; } else if (boneAxis == AxisEnum.zReverse) { boneAxisValue = Vector3.back; } prevBoneAxis = boneAxis; } for (int j = 0; j < boneCount; j++) { if (softBones[j] != null && !boneAttribute[j].freezed) { Vector3 val = (boneAttribute[j].rotationLimit ? boneAttribute[j].rotationAxis : ((!rotationLimit) ? Vector3.zero : rotationAxis)); float maxAngle = (boneAttribute[j].rotationLimit ? boneAttribute[j].maxRotationAngle : ((!rotationLimit) ? 360f : maxRotationAngle)); Vector3 val2 = ((!boneAttribute[j].useIndividualVelocityScale) ? globalVelocityScale : boneAttribute[j].velocityScale); softBones[j].DoUpdate(gravity, energyDecay, mass, stiffness, airFriction, radius, radiusScale, ((Component)this).transform.TransformDirection(((Vector3)(ref val)).normalized), maxAngle, boneAxisValue, force, val2, selfCollision, softBones, colliderFriction, (!useGlobalColliders) ? null : globalColliders, localColliders, loop, globalPos, softBones[0].transform.position, dt); } } if (!smoothTweening) { return; } Vector3 fixMotion = Vector3.zero; int k = 0; int num = 0; for (; k < boneCount; k++) { if (softBones[k] != null && !boneAttribute[k].freezed) { if (highStiffnessTweenFix && num == 0) { fixMotion = boneTransform[k].position - prevBonePos[k]; num = 1; } Vector3 val3 = (boneAttribute[k].rotationLimit ? boneAttribute[k].rotationAxis : ((!rotationLimit) ? Vector3.zero : rotationAxis)); float maxAngle2 = (boneAttribute[k].rotationLimit ? boneAttribute[k].maxRotationAngle : ((!rotationLimit) ? 360f : maxRotationAngle)); Vector3 val4 = ((!boneAttribute[k].useIndividualVelocityScale) ? globalVelocityScale : boneAttribute[k].velocityScale); softBones[k].preSmoothUpdate(((Component)this).transform.TransformDirection(((Vector3)(ref val3)).normalized), maxAngle2, boneAxisValue, val4, globalPos, fixMotion); } } if (highStiffnessTweenFix) { for (int l = 0; l < boneCount; l++) { ref Vector3 reference = ref prevBonePos[l]; reference = boneTransform[l].position; } } } public bool setBoneAttribute(string boneName, BoneAttribute attr) { if (attr == null) { return false; } for (int i = 0; i < boneTransform.Length; i++) { if ((Object)(object)boneTransform[i] == (Object)null) { return false; } if (((Object)boneTransform[i]).name == boneName) { boneAttribute[i] = attr; return true; } } return false; } public BoneAttribute getBoneAttribute(string boneName) { for (int i = 0; i < boneTransform.Length; i++) { if ((Object)(object)boneTransform[i] == (Object)null) { return null; } if (((Object)boneTransform[i]).name == boneName) { return boneAttribute[i]; } } return null; } public void addLocalCollider(PhysicalBoneCollider collider) { localColliders.Add(collider); } public void removeLocalCollider(PhysicalBoneCollider collider) { localColliders.Remove(collider); } private void OnDrawGizmos() { //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) if (softBones == null) { return; } for (int i = 0; i < boneCount; i++) { if (softBones[i] == null) { continue; } float num = radiusScale * ((!boneAttribute[i].useIndividualRadius) ? radius : boneAttribute[i].radius); if (Application.isPlaying && !boneAttribute[i].freezed) { Vector3 val = globalPos; Vector3 val2 = ((!boneAttribute[i].useIndividualVelocityScale) ? globalVelocityScale : boneAttribute[i].velocityScale); val.x *= val2.x; val.y *= val2.y; val.z *= val2.z; Vector3 val3 = softBones[i].bonePos - val + globalPos; Gizmos.color = ((softBones[i].contactColliderCount != 0) ? Color.green : Color.red); Gizmos.DrawWireSphere(val3, radiusScale * ((!softBones[i].attribute.useIndividualRadius) ? radius : softBones[i].attribute.radius)); Vector3 val4 = (boneAttribute[i].rotationLimit ? boneAttribute[i].rotationAxis : ((!rotationLimit) ? Vector3.zero : rotationAxis)); if (val4 != Vector3.zero) { Gizmos.color = Color.yellow; Vector3 val5 = ((Component)this).transform.TransformDirection(((Vector3)(ref val4)).normalized) * ((!boneAttribute[i].useIndividualAttribute) ? radius : boneAttribute[i].radius) * 10f; Gizmos.DrawLine(val3 - val5, val3 + val5); } } else { drawChildGizmo(boneTransform[i], num, boneAttribute[i]); } } } private void drawChildGizmo(Transform tf, float radius, BoneAttribute attri) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) if (tf.childCount <= 0) { return; } Vector3 val = Vector3.zero; for (int i = 0; i < tf.childCount; i++) { val += tf.GetChild(i).position; } val /= (float)tf.childCount; Gizmos.color = ((!attri.freezed) ? Color.red : Color.gray); Gizmos.DrawWireSphere(val, radius); if (!attri.freezed) { Gizmos.color = Color.yellow; Vector3 val2 = (attri.rotationLimit ? attri.rotationAxis : ((!rotationLimit) ? Vector3.zero : rotationAxis)); if (val2 != Vector3.zero) { Vector3 val3 = ((Component)this).transform.TransformDirection(((Vector3)(ref val2)).normalized) * 0.1f; Gizmos.DrawLine(val - val3, val + val3); } } } } [CustomEditor(typeof(PhysicalBone))] public class PhysicalBoneInspector : Editor { public override void OnInspectorGUI() { EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("boneAxis"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("globalVelocityScale"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("gravity"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("mass"), (GUILayoutOption[])(object)new GUILayoutOption[0]); SerializedProperty val = ((Editor)this).serializedObject.FindProperty("smoothTweening"); EditorGUILayout.PropertyField(val, (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.BeginDisabledGroup(!val.boolValue); EditorGUI.indentLevel += 1; SerializedProperty val2 = ((Editor)this).serializedObject.FindProperty("highStiffnessTweenFix"); EditorGUILayout.PropertyField(val2, (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.indentLevel -= 1; EditorGUI.EndDisabledGroup(); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("energyDecay"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("stiffness"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("airFriction"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("radius"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("radiusScale"), (GUILayoutOption[])(object)new GUILayoutOption[0]); SerializedProperty val3 = ((Editor)this).serializedObject.FindProperty("rotationLimit"); EditorGUILayout.PropertyField(val3, (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.BeginDisabledGroup(!val3.boolValue); EditorGUI.indentLevel += 1; EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("rotationAxis"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("maxRotationAngle"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.indentLevel -= 1; EditorGUI.EndDisabledGroup(); DrawAttributeList(((Editor)this).serializedObject.FindProperty("boneAttribute"), ((Editor)this).serializedObject.FindProperty("boneTransform")); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("selfCollision"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("useGlobalColliders"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("colliderFriction"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(((Editor)this).serializedObject.FindProperty("localColliders"), true, (GUILayoutOption[])(object)new GUILayoutOption[0]); ((Editor)this).serializedObject.ApplyModifiedProperties(); } private void DrawAttributeList(SerializedProperty alist, SerializedProperty tlist) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown EditorGUILayout.PropertyField(alist, (GUILayoutOption[])(object)new GUILayoutOption[0]); if (!alist.isExpanded) { return; } EditorGUI.indentLevel += 1; for (int i = 0; i < alist.arraySize; i++) { SerializedProperty arrayElementAtIndex = tlist.GetArrayElementAtIndex(i); if (arrayElementAtIndex.objectReferenceValue != (Object)null) { Object objectReferenceValue = arrayElementAtIndex.objectReferenceValue; Transform val = (Transform)(object)((objectReferenceValue is Transform) ? objectReferenceValue : null); SerializedProperty arrayElementAtIndex2 = alist.GetArrayElementAtIndex(i); EditorGUILayout.PropertyField(arrayElementAtIndex2, new GUIContent(((Object)val).name), (GUILayoutOption[])(object)new GUILayoutOption[0]); if (arrayElementAtIndex2.isExpanded) { EditorGUILayout.PropertyField(arrayElementAtIndex2.FindPropertyRelative("freezed"), (GUILayoutOption[])(object)new GUILayoutOption[0]); SerializedProperty val2 = arrayElementAtIndex2.FindPropertyRelative("useIndividualVelocityScale"); EditorGUILayout.PropertyField(val2, (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.BeginDisabledGroup(!val2.boolValue); EditorGUI.indentLevel += 1; EditorGUILayout.PropertyField(arrayElementAtIndex2.FindPropertyRelative("velocityScale"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.indentLevel -= 1; EditorGUI.EndDisabledGroup(); SerializedProperty val3 = arrayElementAtIndex2.FindPropertyRelative("useIndividualRadius"); EditorGUILayout.PropertyField(val3, (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.BeginDisabledGroup(!val3.boolValue); EditorGUI.indentLevel += 1; EditorGUILayout.PropertyField(arrayElementAtIndex2.FindPropertyRelative("radius"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.indentLevel -= 1; EditorGUI.EndDisabledGroup(); SerializedProperty val4 = arrayElementAtIndex2.FindPropertyRelative("useIndividualAttribute"); EditorGUILayout.PropertyField(val4, (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.BeginDisabledGroup(!val4.boolValue); EditorGUI.indentLevel += 1; EditorGUILayout.PropertyField(arrayElementAtIndex2.FindPropertyRelative("mass"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(arrayElementAtIndex2.FindPropertyRelative("stiffness"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(arrayElementAtIndex2.FindPropertyRelative("airFriction"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.indentLevel -= 1; EditorGUI.EndDisabledGroup(); SerializedProperty val5 = arrayElementAtIndex2.FindPropertyRelative("rotationLimit"); EditorGUILayout.PropertyField(val5, (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.BeginDisabledGroup(!val5.boolValue); EditorGUI.indentLevel += 1; EditorGUILayout.PropertyField(arrayElementAtIndex2.FindPropertyRelative("rotationAxis"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUILayout.PropertyField(arrayElementAtIndex2.FindPropertyRelative("maxRotationAngle"), (GUILayoutOption[])(object)new GUILayoutOption[0]); EditorGUI.indentLevel -= 1; EditorGUI.EndDisabledGroup(); } } } EditorGUI.indentLevel -= 1; } } public class PhysicalBoneBase { public GameObject gameObject; public Transform transform; protected float bLength; public Vector3 prevPosition; protected Quaternion prevRotation; protected Quaternion tRot; protected Vector3 tmpBPos; public Vector3 prevBPos; public Vector3 prevBPos2; public Vector3 bonePos; public readonly Vector3 oriPos; public readonly Vector3 oriVec; protected Vector3 pBPos = Vector3.zero; protected float energeValue; protected float prevEnergeDecay; public readonly int deep; public readonly int id; protected Quaternion oriRotation; protected Vector3 oriPosition; private PhysicalBoneCollider contactCollider; public BoneAttribute attribute; public int contactColliderCount = 0; public PhysicalBoneBase(Transform transform, BoneAttribute attribute, Vector3 bonePos, int boneDeep, int boneID) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) this.transform = transform; gameObject = ((Component)transform).gameObject; this.attribute = attribute; this.bonePos = bonePos; tmpBPos = bonePos; prevBPos = bonePos; prevBPos2 = bonePos; pBPos = bonePos; oriPos = bonePos; oriVec = bonePos - transform.position; prevPosition = transform.position; bLength = Vector3.Distance(transform.position, bonePos); oriRotation = transform.localRotation; oriPosition = transform.localPosition; deep = boneDeep; id = boneID; } public void smoothUpdate(Vector3 rotAxis, float maxAngle, Vector3 boneAxis, Vector3 globalPosition, Vector3 globalVelocityScale, Vector3 fixMotion, float dt) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) Vector3 val = globalPosition; val.x *= globalVelocityScale.x; val.y *= globalVelocityScale.y; val.z *= globalVelocityScale.z; fixMotion.x *= globalVelocityScale.x; fixMotion.y *= globalVelocityScale.y; fixMotion.z *= globalVelocityScale.z; Vector3 val2 = transform.position - globalPosition + val; transform.localRotation = Quaternion.identity * oriRotation; pBPos = Vector3.Lerp(prevBPos2, bonePos, dt) + fixMotion; Vector3 val3 = pBPos - val2; pBPos = ((Vector3)(ref val3)).normalized * bLength + val2; if (rotAxis != Vector3.zero) { Plane val4 = default(Plane); ((Plane)(ref val4))..ctor(rotAxis, val2); pBPos -= ((Plane)(ref val4)).normal * ((Plane)(ref val4)).GetDistanceToPoint(pBPos); } Quaternion val5 = Quaternion.FromToRotation(transform.TransformDirection(boneAxis), pBPos - val2); if (maxAngle < 180f) { float num = Quaternion.Angle(Quaternion.identity, val5); if (num > maxAngle) { val5 = Quaternion.Lerp(Quaternion.identity, val5, maxAngle / num); } } transform.rotation = val5 * transform.rotation; } public void simpleUpdate(Vector3 rotAxis, float maxAngle, Vector3 boneAxis, Vector3 globalPosition, Vector3 globalVelocityScale) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) Vector3 val = globalPosition; val.x *= globalVelocityScale.x; val.y *= globalVelocityScale.y; val.z *= globalVelocityScale.z; Vector3 val2 = transform.position - globalPosition + val; transform.localRotation = Quaternion.identity * oriRotation; if (rotAxis != Vector3.zero) { Plane val3 = default(Plane); ((Plane)(ref val3))..ctor(rotAxis, val2); bonePos -= ((Plane)(ref val3)).normal * ((Plane)(ref val3)).GetDistanceToPoint(bonePos); } Quaternion val4 = Quaternion.FromToRotation(transform.TransformDirection(boneAxis), bonePos - val2); if (maxAngle < 180f) { float num = Quaternion.Angle(Quaternion.identity, val4); if (num > maxAngle) { val4 = Quaternion.Lerp(Quaternion.identity, val4, maxAngle / num); } } transform.rotation = val4 * transform.rotation; } public void DoUpdate(float gravity, float energeDecay, float mass, float stiffness, float airFriction, float gRadius, float radiusScale, Vector3 rotAxis, float maxAngle, Vector3 boneAxis, Vector3 force, Vector3 globalVelocityScale, bool selfCollision, PhysicalBoneBase[] bone, bool useFriction, List<PhysicalBoneCollider> globalColliders, List<PhysicalBoneCollider> localColliders, float loop, Vector3 globalPosition, Vector3 rootPosition, float dt) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0748: Unknown result type (might be due to invalid IL or missing references) //IL_074a: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0795: Unknown result type (might be due to invalid IL or missing references) //IL_0797: Unknown result type (might be due to invalid IL or missing references) //IL_079d: Unknown result type (might be due to invalid IL or missing references) //IL_07a2: Unknown result type (might be due to invalid IL or missing references) //IL_07a3: Unknown result type (might be due to invalid IL or missing references) //IL_07a8: Unknown result type (might be due to invalid IL or missing references) //IL_07ad: Unknown result type (might be due to invalid IL or missing references) //IL_07b5: Unknown result type (might be due to invalid IL or missing references) //IL_07bd: Unknown result type (might be due to invalid IL or missing references) //IL_07c2: Unknown result type (might be due to invalid IL or missing references) //IL_07cd: Unknown result type (might be due to invalid IL or missing references) //IL_07ce: Unknown result type (might be due to invalid IL or missing references) //IL_07da: Unknown result type (might be due to invalid IL or missing references) //IL_07df: Unknown result type (might be due to invalid IL or missing references) //IL_075c: Unknown result type (might be due to invalid IL or missing references) //IL_075e: Unknown result type (might be due to invalid IL or missing references) //IL_0766: Unknown result type (might be due to invalid IL or missing references) //IL_076d: Unknown result type (might be due to invalid IL or missing references) //IL_0775: Unknown result type (might be due to invalid IL or missing references) //IL_077f: Unknown result type (might be due to invalid IL or missing references) //IL_0784: Unknown result type (might be due to invalid IL or missing references) //IL_0789: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Unknown result type (might be due to invalid IL or missing references) //IL_036b: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_0396: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03a4: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_03d1: Unknown result type (might be due to invalid IL or missing references) //IL_03d6: Unknown result type (might be due to invalid IL or missing references) //IL_03d8: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03e4: Unknown result type (might be due to invalid IL or missing references) //IL_03e8: Unknown result type (might be due to invalid IL or missing references) //IL_0402: Unknown result type (might be due to invalid IL or missing references) //IL_0407: Unknown result type (might be due to invalid IL or missing references) //IL_040a: Unknown result type (might be due to invalid IL or missing references) //IL_040c: Unknown result type (might be due to invalid IL or missing references) //IL_040e: Unknown result type (might be due to invalid IL or missing references) //IL_0410: Unknown result type (might be due to invalid IL or missing references) //IL_0415: Unknown result type (might be due to invalid IL or missing references) //IL_041a: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c4: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02e8: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_032d: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_034a: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0587: Unknown result type (might be due to invalid IL or missing references) //IL_058c: Unknown result type (might be due to invalid IL or missing references) //IL_058e: Unknown result type (might be due to invalid IL or missing references) //IL_0593: Unknown result type (might be due to invalid IL or missing references) //IL_0594: Unknown result type (might be due to invalid IL or missing references) //IL_059a: Unknown result type (might be due to invalid IL or missing references) //IL_059f: Unknown result type (might be due to invalid IL or missing references) //IL_05a1: Unknown result type (might be due to invalid IL or missing references) //IL_05a6: Unknown result type (might be due to invalid IL or missing references) //IL_05a7: Unknown result type (might be due to invalid IL or missing references) //IL_05ac: Unknown result type (might be due to invalid IL or missing references) //IL_05ae: Unknown result type (might be due to invalid IL or missing references) //IL_05b0: Unknown result type (might be due to invalid IL or missing references) //IL_05b5: Unknown result type (might be due to invalid IL or missing references) //IL_05b6: Unknown result type (might be due to invalid IL or missing references) //IL_05bb: Unknown result type (might be due to invalid IL or missing references) //IL_05c7: Unknown result type (might be due to invalid IL or missing references) //IL_05cc: Unknown result type (might be due to invalid IL or missing references) //IL_05ce: Unknown result type (might be due to invalid IL or missing references) //IL_05d3: Unknown result type (might be due to invalid IL or missing references) //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_05d9: Unknown result type (might be due to invalid IL or missing references) //IL_050e: Unknown result type (might be due to invalid IL or missing references) //IL_0513: Unknown result type (might be due to invalid IL or missing references) //IL_0515: Unknown result type (might be due to invalid IL or missing references) //IL_051a: Unknown result type (might be due to invalid IL or missing references) //IL_051b: Unknown result type (might be due to invalid IL or missing references) //IL_0521: Unknown result type (might be due to invalid IL or missing references) //IL_0526: Unknown result type (might be due to invalid IL or missing references) //IL_0528: Unknown result type (might be due to invalid IL or missing references) //IL_052d: Unknown result type (might be due to invalid IL or missing references) //IL_052e: Unknown result type (might be due to invalid IL or missing references) //IL_0533: Unknown result type (might be due to invalid IL or missing references) //IL_0535: Unknown result type (might be due to invalid IL or missing references) //IL_0537: Unknown result type (might be due to invalid IL or missing references) //IL_053c: Unknown result type (might be due to invalid IL or missing references) //IL_053d: Unknown result type (might be due to invalid IL or missing references) //IL_0542: Unknown result type (might be due to invalid IL or missing references) //IL_054e: Unknown result type (might be due to invalid IL or missing references) //IL_0553: Unknown result type (might be due to invalid IL or missing references) //IL_0555: Unknown result type (might be due to invalid IL or missing references) //IL_055a: Unknown result type (might be due to invalid IL or missing references) //IL_055b: Unknown result type (might be due to invalid IL or missing references) //IL_0560: Unknown result type (might be due to invalid IL or missing references) //IL_04c5: Unknown result type (might be due to invalid IL or missing references) //IL_04ca: Unknown result type (might be due to invalid IL or missing references) //IL_04cc: Unknown result type (might be due to invalid IL or missing references) //IL_04d1: Unknown result type (might be due to invalid IL or missing references) //IL_04d5: Unknown result type (might be due to invalid IL or missing references) //IL_04e0: Unknown result type (might be due to invalid IL or missing references) //IL_04e5: Unknown result type (might be due to invalid IL or missing references) //IL_04e7: Unknown result type (might be due to invalid IL or missing references) //IL_04ec: Unknown result type (might be due to invalid IL or missing references) //IL_048a: Unknown result type (might be due to invalid IL or missing references) //IL_0494: Unknown result type (might be due to invalid IL or missing references) //IL_0496: Unknown result type (might be due to invalid IL or missing references) //IL_049b: Unknown result type (might be due to invalid IL or missing references) //IL_04a0: Unknown result type (might be due to invalid IL or missing references) //IL_04a7: Unknown result type (might be due to invalid IL or missing references) //IL_04b1: Unknown result type (might be due to invalid IL or missing references) //IL_04b3: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04bd: Unknown result type (might be due to invalid IL or missing references) //IL_045b: Unknown result type (might be due to invalid IL or missing references) //IL_0465: Unknown result type (might be due to invalid IL or missing references) //IL_0467: Unknown result type (might be due to invalid IL or missing references) //IL_046c: Unknown result type (might be due to invalid IL or missing references) //IL_0471: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_0443: Unknown result type (might be due to invalid IL or missing references) //IL_0445: Unknown result type (might be due to invalid IL or missing references) //IL_044a: Unknown result type (might be due to invalid IL or missing references) //IL_044f: Unknown result type (might be due to invalid IL or missing references) //IL_0724: Unknown result type (might be due to invalid IL or missing references) //IL_0729: Unknown result type (might be due to invalid IL or missing references) //IL_0730: Unknown result type (might be due to invalid IL or missing references) //IL_0735: Unknown result type (might be due to invalid IL or missing references) //IL_06b4: Unknown result type (might be due to invalid IL or missing references) //IL_06bb: Unknown result type (might be due to invalid IL or missing references) //IL_06c0: Unknown result type (might be due to invalid IL or missing references) //IL_06c2: Unknown result type (might be due to invalid IL or missing references) //IL_06c7: Unknown result type (might be due to invalid IL or missing references) //IL_06c8: Unknown result type (might be due to invalid IL or missing references) //IL_06ce: Unknown result type (might be due to invalid IL or missing references) //IL_06d3: Unknown result type (might be due to invalid IL or missing references) //IL_06d5: Unknown result type (might be due to invalid IL or missing references) //IL_06da: Unknown result type (might be due to invalid IL or missing references) //IL_06db: Unknown result type (might be due to invalid IL or missing references) //IL_06e0: Unknown result type (might be due to invalid IL or missing references) //IL_06e2: Unknown result type (might be due to invalid IL or missing references) //IL_06e4: Unknown result type (might be due to invalid IL or missing references) //IL_06e9: Unknown result type (might be due to invalid IL or missing references) //IL_06ea: Unknown result type (might be due to invalid IL or missing references) //IL_06ef: Unknown result type (might be due to invalid IL or missing references) //IL_06fe: Unknown result type (might be due to invalid IL or missing references) //IL_0703: Unknown result type (might be due to invalid IL or missing references) //IL_0705: Unknown result type (might be due to invalid IL or missing references) //IL_070a: Unknown result type (might be due to invalid IL or missing references) //IL_070b: Unknown result type (might be due to invalid IL or missing references) //IL_0655: Unknown result type (might be due to invalid IL or missing references) //IL_065f: Unknown result type (might be due to invalid IL or missing references) //IL_067a: Unknown result type (might be due to invalid IL or missing references) //IL_067f: Unknown result type (might be due to invalid IL or missing references) //IL_0687: Unknown result type (might be due to invalid IL or missing references) //IL_068e: Unknown result type (might be due to invalid IL or missing references) //IL_0693: Unknown result type (might be due to invalid IL or missing references) float num = gRadius; Vector3 val = globalPosition; val.x *= globalVelocityScale.x; val.y *= globalVelocityScale.y; val.z *= globalVelocityScale.z; Vector3 val2 = transform.position - globalPosition + val; prevBPos = bonePos; if (attribute.useIndividualAttribute) { mass = attribute.mass; stiffness = attribute.stiffness; airFriction = attribute.airFriction; } if (attribute.useIndividualRadius) { num = attribute.radius; } num *= radiusScale; for (int i = 0; (float)i < loop; i++) { transform.localRotation = Quaternion.identity * oriRotation; Vector3 val3 = Vector3.Lerp(prevPosition, val2, (float)(i + 1) / loop); Quaternion rotation = transform.rotation; float num2 = dt * dt; Vector3 val4 = bonePos - tmpBPos; Vector3 val5 = val4 / dt; Vector3 val6 = rotation * (boneAxis * stiffness); val6 += -val5 * airFriction; if (energeDecay != prevEnergeDecay) { energeValue = Mathf.Pow(energeDecay, (float)deep); prevEnergeDecay = energeDecay; } val4 *= energeValue; val6 += new Vector3(0f, 0f - gravity, 0f); val6 += force; pBPos = bonePos; pBPos += val4 + val6 * num2; Vector3 val7 = pBPos - val3; pBPos = ((Vector3)(ref val7)).normalized * bLength + val3; if (useFriction && (Object)(object)contactCollider != (Object)null) { Vector3 colliderFriction = getColliderFriction(bonePos + globalPosition - val, mass, val6, ((Vector3)(ref val4)).magnitude, contactCollider); if (colliderFriction != Vector3.zero) { Vector3 colliderNormal = getColliderNormal(bonePos + globalPosition - val, contactCollider); Vector3 val8 = val6 - Vector3.Dot(val6, colliderNormal) / ((Vector3)(ref colliderNormal)).magnitude * ((Vector3)(ref colliderNormal)).magnitude * colliderNormal; Vector3 val9 = pBPos - bonePos; Vector3 val10 = Vector3.Dot(val9, colliderNormal) / (((Vector3)(ref colliderNormal)).magnitude * ((Vector3)(ref colliderNormal)).magnitude) * colliderNormal; pBPos = bonePos + Vector3.Lerp(Vector3.zero, val9 - val10, 1f - ((Vector3)(ref colliderFriction)).magnitude / ((Vector3)(ref val8)).magnitude) + val10; Vector3 val11 = pBPos - val3; pBPos = ((Vector3)(ref val11)).normalized * bLength + val3; } } if (maxAngle < 180f) { Vector3 val12 = pBPos - val3; float num3 = Quaternion.Angle(Quaternion.identity, Quaternion.FromToRotation(oriVec, val12)); if (num3 > maxAngle) { Vector3 val13 = pBPos - val3; Vector3 val14 = Vector3.Dot(val13, oriVec) / Vector3.Dot(oriVec, oriVec) * oriVec; Vector3 val15 = pBPos - (val14 + val3); Vector3 val16 = ((Vector3)(ref val15)).normalized * (((Vector3)(ref val14)).magnitude * Mathf.Tan((float)Math.PI / 180f * maxAngle)); pBPos = val16 + (val14 + val3); if (num3 > 90f) { if (maxAngle < 90f) { pBPos += -2f * val14; } else { pBPos += -2f * val16; } } else if (maxAngle > 90f) { pBPos += -2f * val16; pBPos += -2f * val14; } Vector3 val17 = pBPos - val3; pBPos = ((Vector3)(ref val17)).normalized * bLength + val3; } } contactColliderCount = 0; if (globalColliders != null) { for (int j = 0; j < globalColliders.Count; j++) { pBPos = DoCollision(pBPos + globalPosition - val, bonePos + globalPosition - val, val3 + globalPosition - val, rootPosition, num, globalColliders[j]) - globalPosition + val; } } for (int k = 0; k < localColliders.Count; k++) { pBPos = DoCollision(pBPos + globalPosition - val, bonePos + globalPosition - val, val3 + globalPosition - val, rootPosition, num, localColliders[k]) - globalPosition + val; } if (selfCollision) { for (int l = 0; l < bone.Length; l++) { if (bone[l] != null && bone[l].id < id) { float num4 = ((!bone[l].attribute.useIndividualRadius) ? gRadius : bone[l].attribute.radius); if (!(Vector3.Distance(oriPos, bone[l].oriPos) < num + num4)) { pBPos = DoSelfSphereCollision(pBPos, val3, num, bone[l].bonePos, num4); } } } } if (useFriction && pBPos == DoCollision(pBPos + globalPosition - val, bonePos + globalPosition - val, val3 + globalPosition - val, rootPosition, num * 1.1f, contactCollider) - globalPosition + val) { contactCollider = null; } tmpBPos = bonePos; bonePos = pBPos; } if (rotAxis != Vector3.zero) { Plane val18 = default(Plane); ((Plane)(ref val18))..ctor(rotAxis, val2); bonePos -= ((Plane)(ref val18)).normal * ((Plane)(ref val18)).GetDistanceToPoint(bonePos); } Quaternion val19 = Quaternion.FromToRotation(transform.TransformDirection(boneAxis), bonePos - val2); transform.rotation = val19 * transform.rotation; prevPosition = val2; prevRotation = transform.rotation; } public void preSmoothUpdate(Vector3 rotAxis, float maxAngle, Vector3 boneAxis, Vector3 globalVelocityScale, Vector3 globalPosition, Vector3 fixMotion) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing referenc