using System; using System.Runtime.InteropServices; using Cpp2IlInjected; using UnityEngine; namespace Obi { // Token: 0x020004F2 RID: 1266 [Token(Token = "0x20004F2")] [ExecuteInEditMode] [DisallowMultipleComponent] [AddComponentMenu("Physics/Obi/Obi Cloth Proxy")] public class ObiClothProxy : MonoBehaviour { // Token: 0x17000307 RID: 775 // (get) Token: 0x06002C32 RID: 11314 RVA: 0x0005F378 File Offset: 0x0005D578 [Token(Token = "0x17000307")] public bool SelfSkinning { [Token(Token = "0x6002C32")] [Address(RVA = "0x10CDF30", Offset = "0x10CC730", VA = "0x1810CDF30")] get { ObiClothBase obiClothBase = this.source; int num = 0; bool flag = obiClothBase != num; if (!flag) { return flag; } GameObject gameObject = this.source.gameObject; GameObject gameObject2 = base.gameObject; return gameObject == gameObject2; } } // Token: 0x17000308 RID: 776 // (get) Token: 0x06002C34 RID: 11316 RVA: 0x0005F47C File Offset: 0x0005D67C // (set) Token: 0x06002C33 RID: 11315 RVA: 0x0005F3C0 File Offset: 0x0005D5C0 [Token(Token = "0x17000308")] public ObiClothBase Proxy { [Token(Token = "0x6002C34")] [Address(RVA = "0x4FC850", Offset = "0x4FB050", VA = "0x1804FC850")] get { return this.source; } [Token(Token = "0x6002C33")] [Address(RVA = "0x10CE000", Offset = "0x10CC800", VA = "0x1810CE000")] set { ObiClothBase obiClothBase = this.source; int num = 0; if (obiClothBase != num) { ObiClothBase obiClothBase2 = this.source; EventHandler eventHandler = new EventHandler(this.Source_OnAddedToSolver); obiClothBase2.OnDeformableMeshSetup -= eventHandler; ObiClothBase obiClothBase3 = this.source; EventHandler eventHandler2 = new EventHandler(this.Source_OnRemovedFromSolver); obiClothBase3.OnDeformableMeshTeardown -= eventHandler2; } this.source = value; ObiClothBase obiClothBase4 = this.source; int num2 = 0; if (obiClothBase4 != num2) { ObiClothBase obiClothBase5 = this.source; EventHandler eventHandler3 = new EventHandler(this.Source_OnAddedToSolver); obiClothBase5.OnDeformableMeshSetup += eventHandler3; ObiClothBase obiClothBase6 = this.source; EventHandler eventHandler4 = new EventHandler(this.Source_OnRemovedFromSolver); obiClothBase6.OnDeformableMeshTeardown += eventHandler4; } } } // Token: 0x06002C35 RID: 11317 RVA: 0x0005F490 File Offset: 0x0005D690 [Token(Token = "0x6002C35")] [Address(RVA = "0x10CD070", Offset = "0x10CB870", VA = "0x1810CD070")] private void OnEnable() { SkinnedMeshRenderer component = base.GetComponent(); this.skinnedMeshRenderer = component; if (!this.SelfSkinning) { SkinnedMeshRenderer skinnedMeshRenderer = this.skinnedMeshRenderer; int num = 0; if (!(skinnedMeshRenderer == num)) { ObiMeshTopology obiMeshTopology = this.targetTopology; int num2 = 0; if (!(obiMeshTopology != num2)) { Debug.LogError("You need to provide a mesh topology in order to use a SkinnedMeshRenderer as a proxy target."); } Mesh input = this.targetTopology.input; this.sharedMesh = input; Mesh mesh = UnityEngine.Object.Instantiate(this.sharedMesh); this.skinnedMesh = mesh; int num3 = 0; Mesh mesh2 = this.skinnedMesh; BoneWeight[] array = new BoneWeight[num3]; mesh2.SetBoneWeightsImpl(array); this.skinnedMesh.MarkDynamic(); if (!Application.isPlaying) { goto IL_CB; } SkinnedMeshRenderer skinnedMeshRenderer2 = this.skinnedMeshRenderer; Mesh mesh3 = this.skinnedMesh; skinnedMeshRenderer2.sharedMesh = mesh3; } this.InitializeWithRegularMesh(); } IL_CB: ObiClothBase obiClothBase = this.source; int num4 = 0; if (obiClothBase != num4) { ObiClothBase obiClothBase2 = this.source; EventHandler eventHandler = new EventHandler(this.Source_OnAddedToSolver); obiClothBase2.OnDeformableMeshSetup += eventHandler; ObiClothBase obiClothBase3 = this.source; EventHandler eventHandler2 = new EventHandler(this.Source_OnRemovedFromSolver); obiClothBase3.OnDeformableMeshTeardown += eventHandler2; } } // Token: 0x06002C36 RID: 11318 RVA: 0x0005F5C4 File Offset: 0x0005D7C4 [Token(Token = "0x6002C36")] [Address(RVA = "0x10CCE70", Offset = "0x10CB670", VA = "0x1810CCE70")] private void OnDisable() { if (!this.SelfSkinning) { MeshFilter meshFilter = this.meshFilter; int num = 0; if (meshFilter != num) { MeshFilter meshFilter2 = this.meshFilter; Mesh mesh = this.sharedMesh; meshFilter2.mesh = mesh; } SkinnedMeshRenderer skinnedMeshRenderer = this.skinnedMeshRenderer; int num2 = 0; if (skinnedMeshRenderer != num2) { SkinnedMeshRenderer skinnedMeshRenderer2 = this.skinnedMeshRenderer; Mesh mesh2 = this.sharedMesh; skinnedMeshRenderer2.sharedMesh = mesh2; } UnityEngine.Object.DestroyImmediate(this.skinnedMesh); } ObiClothBase obiClothBase = this.source; int num3 = 0; if (obiClothBase != num3) { ObiClothBase obiClothBase2 = this.source; EventHandler eventHandler = new EventHandler(this.Source_OnAddedToSolver); obiClothBase2.OnDeformableMeshSetup -= eventHandler; ObiClothBase obiClothBase3 = this.source; EventHandler eventHandler2 = new EventHandler(this.Source_OnRemovedFromSolver); obiClothBase3.OnDeformableMeshTeardown -= eventHandler2; } } // Token: 0x06002C37 RID: 11319 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002C37")] [Address(RVA = "0x10CDB50", Offset = "0x10CC350", VA = "0x1810CDB50")] private void UpdateTransformData() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002C38 RID: 11320 RVA: 0x0005F698 File Offset: 0x0005D898 [Token(Token = "0x6002C38")] [Address(RVA = "0x10CD630", Offset = "0x10CBE30", VA = "0x1810CD630")] private void Source_OnAddedToSolver(object sender, EventArgs e) { this.UpdateTransformData(); bool selfSkinning = this.SelfSkinning; ObiClothBase obiClothBase = this.source; if (!selfSkinning) { IntPtr oniSolver = obiClothBase.solver.oniSolver; ObiMeshTopology obiMeshTopology = this.targetTopology; int num = 0; if (obiMeshTopology != num) { ObiMeshTopology obiMeshTopology2 = this.targetTopology; } int num2 = 0; Mesh mesh = this.sharedMesh; float[] array = this.transformData; int vertexCount = mesh.vertexCount; int vertexCount2 = this.sharedMesh.vertexCount; int num3 = 0; ulong num4; IntPtr intPtr = Oni.CreateDeformableMesh(oniSolver, (IntPtr)num2, (IntPtr)num3, array, (IntPtr)num4, vertexCount, vertexCount2); this.deformableMesh = intPtr; Mesh mesh2 = this.skinnedMesh; this.GetMeshDataArrays(mesh2); this.SetSkinnedMeshAnimationInfo(); } IntPtr intPtr2 = obiClothBase.deformableMesh; this.deformableMesh = intPtr2; IntPtr triangleSkinMap = this.skinMap.triangleSkinMap; IntPtr intPtr3 = obiClothBase.deformableMesh; Oni.SetDeformableMeshSkinMap(this.deformableMesh, intPtr3, triangleSkinMap); ObiSolver solver = this.source.solver; EventHandler eventHandler = new EventHandler(this.Source_Solver_OnFrameEnd); solver.OnFrameEnd += eventHandler; ObiSolver solver2 = this.source.solver; EventHandler eventHandler2 = new EventHandler(this.Source_Solver_OnStepEnd); solver2.OnStepEnd += eventHandler2; } // Token: 0x06002C39 RID: 11321 RVA: 0x0005F7CC File Offset: 0x0005D9CC [Token(Token = "0x6002C39")] [Address(RVA = "0x10CD8A0", Offset = "0x10CC0A0", VA = "0x1810CD8A0")] private void Source_OnRemovedFromSolver(object sender, EventArgs e) { ObiSolver solver = this.source.solver; EventHandler eventHandler = new EventHandler(this.Source_Solver_OnFrameEnd); solver.OnFrameEnd -= eventHandler; ObiSolver solver2 = this.source.solver; EventHandler eventHandler2 = new EventHandler(this.Source_Solver_OnStepEnd); solver2.OnStepEnd -= eventHandler2; if (!this.SelfSkinning) { ObiSolver solver3 = this.source.solver; IntPtr intPtr = this.deformableMesh; Oni.DestroyDeformableMesh(solver3.oniSolver, intPtr); Oni.UnpinMemory(this.meshVerticesHandle); Oni.UnpinMemory(this.meshNormalsHandle); Oni.UnpinMemory(this.meshTangentsHandle); } } // Token: 0x06002C3A RID: 11322 RVA: 0x0005F86C File Offset: 0x0005DA6C [Token(Token = "0x6002C3A")] [Address(RVA = "0x10CD9F0", Offset = "0x10CC1F0", VA = "0x1810CD9F0")] private void Source_Solver_OnFrameEnd(object sender, EventArgs e) { if (!this.SelfSkinning) { Mesh mesh = this.skinnedMesh; int num = 0; if (mesh != num && this.skinnedMesh.isReadable) { Mesh mesh2 = this.skinnedMesh; Vector3[] array = this.meshVertices; mesh2.vertices = array; Mesh mesh3 = this.skinnedMesh; Vector3[] array2 = this.meshNormals; mesh3.normals = array2; Mesh mesh4 = this.skinnedMesh; Vector4[] array3 = this.meshTangents; mesh4.tangents = array3; this.skinnedMesh.RecalculateBounds(); return; } } } // Token: 0x06002C3B RID: 11323 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002C3B")] [Address(RVA = "0x10CDAE0", Offset = "0x10CC2E0", VA = "0x1810CDAE0")] private void Source_Solver_OnStepEnd(object sender, EventArgs e) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002C3C RID: 11324 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002C3C")] [Address(RVA = "0x10CC5A0", Offset = "0x10CADA0", VA = "0x1810CC5A0", Slot = "4")] public virtual void GetMeshDataArrays(Mesh mesh) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002C3D RID: 11325 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002C3D")] [Address(RVA = "0x10CCB40", Offset = "0x10CB340", VA = "0x1810CCB40")] private void InitializeWithRegularMesh() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002C3E RID: 11326 RVA: 0x0005F8FC File Offset: 0x0005DAFC [Token(Token = "0x6002C3E")] [Address(RVA = "0x10CCD50", Offset = "0x10CB550", VA = "0x1810CCD50")] protected void InitializeWithSkinnedMesh() { Mesh input = this.targetTopology.input; this.sharedMesh = input; Mesh mesh = UnityEngine.Object.Instantiate(this.sharedMesh); this.skinnedMesh = mesh; int num = 0; Mesh mesh2 = this.skinnedMesh; BoneWeight[] array = new BoneWeight[num]; mesh2.SetBoneWeightsImpl(array); this.skinnedMesh.MarkDynamic(); if (Application.isPlaying) { SkinnedMeshRenderer skinnedMeshRenderer = this.skinnedMeshRenderer; Mesh mesh3 = this.skinnedMesh; skinnedMeshRenderer.sharedMesh = mesh3; } } // Token: 0x06002C3F RID: 11327 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002C3F")] [Address(RVA = "0x10CD390", Offset = "0x10CBB90", VA = "0x1810CD390")] protected void SetSkinnedMeshAnimationInfo() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002C40 RID: 11328 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002C40")] [Address(RVA = "0x10CC7D0", Offset = "0x10CAFD0", VA = "0x1810CC7D0")] public void GrabSkeletonBones() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002C41 RID: 11329 RVA: 0x0005F980 File Offset: 0x0005DB80 [Token(Token = "0x6002C41")] [Address(RVA = "0x10CDE70", Offset = "0x10CC670", VA = "0x1810CDE70")] public void Update() { this.UpdateTransformData(); IntPtr intPtr = this.deformableMesh; int num = 0; if (intPtr != (IntPtr)num) { float[] array = this.transformData; Oni.SetDeformableMeshTransform(this.deformableMesh, array); return; } } // Token: 0x06002C42 RID: 11330 RVA: 0x0005F9BC File Offset: 0x0005DBBC [Token(Token = "0x6002C42")] [Address(RVA = "0x10CDED0", Offset = "0x10CC6D0", VA = "0x1810CDED0")] public ObiClothProxy() { float[] array = new float[16]; this.transformData = array; base..ctor(); } // Token: 0x040034AC RID: 13484 [Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x40034AC")] public ObiTriangleSkinMap skinMap; // Token: 0x040034AD RID: 13485 [Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x40034AD")] public ObiMeshTopology targetTopology; // Token: 0x040034AE RID: 13486 [Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x40034AE")] [SerializeField] [HideInInspector] private ObiClothBase source; // Token: 0x040034AF RID: 13487 [Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x40034AF")] [HideInInspector] public Mesh skinnedMesh; // Token: 0x040034B0 RID: 13488 [Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x40034B0")] [HideInInspector] public Mesh sharedMesh; // Token: 0x040034B1 RID: 13489 [Cpp2IlInjected.FieldOffset(Offset = "0x40")] [Token(Token = "0x40034B1")] protected int[] meshTriangles; // Token: 0x040034B2 RID: 13490 [Cpp2IlInjected.FieldOffset(Offset = "0x48")] [Token(Token = "0x40034B2")] protected Vector3[] meshVertices; // Token: 0x040034B3 RID: 13491 [Cpp2IlInjected.FieldOffset(Offset = "0x50")] [Token(Token = "0x40034B3")] protected Vector3[] meshNormals; // Token: 0x040034B4 RID: 13492 [Cpp2IlInjected.FieldOffset(Offset = "0x58")] [Token(Token = "0x40034B4")] protected Vector4[] meshTangents; // Token: 0x040034B5 RID: 13493 [Cpp2IlInjected.FieldOffset(Offset = "0x60")] [Token(Token = "0x40034B5")] protected IntPtr deformableMesh; // Token: 0x040034B6 RID: 13494 [Cpp2IlInjected.FieldOffset(Offset = "0x68")] [Token(Token = "0x40034B6")] protected GCHandle meshTrianglesHandle; // Token: 0x040034B7 RID: 13495 [Cpp2IlInjected.FieldOffset(Offset = "0x6C")] [Token(Token = "0x40034B7")] protected GCHandle meshVerticesHandle; // Token: 0x040034B8 RID: 13496 [Cpp2IlInjected.FieldOffset(Offset = "0x70")] [Token(Token = "0x40034B8")] protected GCHandle meshNormalsHandle; // Token: 0x040034B9 RID: 13497 [Cpp2IlInjected.FieldOffset(Offset = "0x74")] [Token(Token = "0x40034B9")] protected GCHandle meshTangentsHandle; // Token: 0x040034BA RID: 13498 [Cpp2IlInjected.FieldOffset(Offset = "0x78")] [Token(Token = "0x40034BA")] private MeshRenderer meshRenderer; // Token: 0x040034BB RID: 13499 [Cpp2IlInjected.FieldOffset(Offset = "0x80")] [Token(Token = "0x40034BB")] private MeshFilter meshFilter; // Token: 0x040034BC RID: 13500 [Cpp2IlInjected.FieldOffset(Offset = "0x88")] [Token(Token = "0x40034BC")] private SkinnedMeshRenderer skinnedMeshRenderer; // Token: 0x040034BD RID: 13501 [Cpp2IlInjected.FieldOffset(Offset = "0x90")] [Token(Token = "0x40034BD")] protected float[] transformData; } }