Skip to content

Instantly share code, notes, and snippets.

@i30817
Last active June 10, 2020 11:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save i30817/b7cf69f544e50aa7f4d643c53f2e5838 to your computer and use it in GitHub Desktop.
Save i30817/b7cf69f544e50aa7f4d643c53f2e5838 to your computer and use it in GitHub Desktop.
diff shadowrun disguises null pointer dragonfall to hongkong
public static CachedMesh Initiate(GameObject core, GameObject root, bool destroyImmediate = false)
{
Vector3 position = root.transform.parent.transform.position;
Quaternion rotation = root.transform.parent.transform.rotation;
root.transform.parent.transform.position = new Vector3(0f, 0f, 0f);
root.transform.parent.transform.rotation = new Quaternion(0f, 0f, 0f, 0f);
root.transform.localPosition = new Vector3(0f, 0f, 0f);
root.transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
SkinnedMeshRenderer[] componentsInChildren = core.GetComponentsInChildren<SkinnedMeshRenderer>();
List<Transform> list = new List<Transform>();
List<BoneWeight> list2 = new List<BoneWeight>();
List<CombineInstance> list3 = new List<CombineInstance>();
List<Texture2D> list4 = new List<Texture2D>();
int num = 0;
SkinnedMeshRenderer[] array = componentsInChildren;
foreach (SkinnedMeshRenderer skinnedMeshRenderer in array)
{
if ((Object)skinnedMeshRenderer == (Object)null || (Object)skinnedMeshRenderer.sharedMesh == (Object)null)
{
Transform transform = core.transform;
while ((Object)transform.parent != (Object)null)
{
transform = transform.parent;
}
string name = transform.name;
Debug.LogError("Missing SkinnedMeshRenderer from root object: " + name + ", skipping");
}
else
{
skinnedMeshRenderer.transform.localPosition = new Vector3(0f, 0f, 0f);
skinnedMeshRenderer.transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
num += skinnedMeshRenderer.sharedMesh.subMeshCount;
}
}
int[] array2 = new int[num];
int num2 = 0;
for (int j = 0; j < componentsInChildren.Length; j++)
{
SkinnedMeshRenderer skinnedMeshRenderer2 = componentsInChildren[j];
if (!((Object)skinnedMeshRenderer2 == (Object)null) && !((Object)skinnedMeshRenderer2.sharedMesh == (Object)null) && j < array2.Length)
{
BoneWeight[] boneWeights = skinnedMeshRenderer2.sharedMesh.boneWeights;
BoneWeight[] array3 = boneWeights;
foreach (BoneWeight boneWeight in array3)
{
BoneWeight item = boneWeight;
item.boneIndex0 += num2;
item.boneIndex1 += num2;
item.boneIndex2 += num2;
item.boneIndex3 += num2;
list2.Add(item);
}
num2 += skinnedMeshRenderer2.bones.Length;
Transform[] bones = skinnedMeshRenderer2.bones;
Transform[] array4 = bones;
foreach (Transform item2 in array4)
{
list.Add(item2);
}
if ((Object)skinnedMeshRenderer2.sharedMaterial.mainTexture != (Object)null)
{
list4.Add(skinnedMeshRenderer2.renderer.sharedMaterial.mainTexture as Texture2D);
}
CombineInstance item3 = default(CombineInstance);
item3.mesh = skinnedMeshRenderer2.sharedMesh;
array2[j] = item3.mesh.vertexCount;
item3.transform = skinnedMeshRenderer2.transform.localToWorldMatrix;
list3.Add(item3);
if (!destroyImmediate)
{
Object.Destroy(skinnedMeshRenderer2.gameObject);
}
else
{
Object.DestroyImmediate(skinnedMeshRenderer2.gameObject);
}
}
}
List<string> list5 = new List<string>();
foreach (Transform item4 in list)
{
list5.Add(item4.name);
}
List<Matrix4x4> list6 = new List<Matrix4x4>();
for (int m = 0; m < list.Count; m++)
{
list6.Add(list[m].worldToLocalMatrix * root.transform.worldToLocalMatrix);
}
SkinnedMeshRenderer skinnedMeshRenderer3 = core.gameObject.GetComponent<SkinnedMeshRenderer>();
if ((Object)skinnedMeshRenderer3 == (Object)null)
{
skinnedMeshRenderer3 = core.gameObject.AddComponent<SkinnedMeshRenderer>();
}
skinnedMeshRenderer3.sharedMesh = new Mesh();
skinnedMeshRenderer3.sharedMesh.CombineMeshes(list3.ToArray(), true, true);
Texture2D texture2D = null;
RuntimePlatform platform = Application.platform;
texture2D = ((platform != RuntimePlatform.Android && platform != RuntimePlatform.IPhonePlayer) ? new Texture2D(0, 0, TextureFormat.RGBA32, false) : new Texture2D(0, 0, TextureFormat.RGBA4444, false));
Rect[] array5 = texture2D.PackTextures(list4.ToArray(), 0, 2048, true);
texture2D.name = "SKINNED MESH ATLAS";
Vector2[] uv = skinnedMeshRenderer3.sharedMesh.uv;
Vector2[] array6 = new Vector2[uv.Length];
int num3 = 0;
int num4 = 0;
if (array5.Length > 0)
{
for (int n = 0; n < array6.Length; n++)
{
array6[n].x = Mathf.Lerp(array5[num3].xMin, array5[num3].xMax, uv[n].x);
array6[n].y = Mathf.Lerp(array5[num3].yMin, array5[num3].yMax, uv[n].y);
if (n >= array2[num3] + num4 - 1)
{
num4 += array2[num3];
num3++;
}
if (num3 >= array5.Length)
{
num3 = array5.Length - 1;
}
}
}
Material material = new Material(Shader.Find("HBS/Transparent/Cutout/Diffuse"));
material.mainTexture = texture2D;
skinnedMeshRenderer3.sharedMesh.uv = array6;
skinnedMeshRenderer3.sharedMaterial = material;
skinnedMeshRenderer3.bones = list.ToArray();
skinnedMeshRenderer3.sharedMesh.boneWeights = list2.ToArray();
skinnedMeshRenderer3.sharedMesh.bindposes = list6.ToArray();
skinnedMeshRenderer3.sharedMesh.RecalculateBounds();
root.transform.parent.transform.localPosition = position;
root.transform.parent.transform.localRotation = rotation;
CachedMesh cachedMesh = new CachedMesh();
cachedMesh.mesh = skinnedMeshRenderer3.sharedMesh;
cachedMesh.tex = texture2D;
cachedMesh.boneNames = list5;
for (int num5 = 0; num5 < list4.Count; num5++)
{
if (list4[num5].name.ToLower().Contains("clone"))
{
if (destroyImmediate)
{
Object.DestroyImmediate(list4[num5]);
}
else
{
Object.Destroy(list4[num5]);
}
}
}
return cachedMesh;
}
public static CachedMesh Initiate(GameObject core, GameObject root, bool destroyImmediate = false)
{
Vector3 position = root.transform.parent.transform.position;
Quaternion rotation = root.transform.parent.transform.rotation;
root.transform.parent.transform.position = new Vector3(0f, 0f, 0f);
root.transform.parent.transform.rotation = new Quaternion(0f, 0f, 0f, 0f);
root.transform.localPosition = new Vector3(0f, 0f, 0f);
root.transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
SkinnedMeshRenderer[] componentsInChildren = core.GetComponentsInChildren<SkinnedMeshRenderer>();
List<Transform> list = new List<Transform>();
List<BoneWeight> list2 = new List<BoneWeight>();
List<CombineInstance> list3 = new List<CombineInstance>();
List<Texture2D> list4 = new List<Texture2D>();
int num = 0;
SkinnedMeshRenderer[] array = componentsInChildren;
foreach (SkinnedMeshRenderer skinnedMeshRenderer in array)
{
if ((Object)skinnedMeshRenderer == (Object)null || (Object)skinnedMeshRenderer.sharedMesh == (Object)null)
{
Transform transform = core.transform;
while ((Object)transform.parent != (Object)null)
{
transform = transform.parent;
}
string name = transform.name;
Debug.LogError("Missing SkinnedMeshRenderer from root object: " + name + ", skipping");
}
else
{
skinnedMeshRenderer.transform.localPosition = new Vector3(0f, 0f, 0f);
skinnedMeshRenderer.transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
num += skinnedMeshRenderer.sharedMesh.subMeshCount;
}
}
int[] array2 = new int[num];
int num2 = 0;
for (int j = 0; j < componentsInChildren.Length; j++)
{
SkinnedMeshRenderer skinnedMeshRenderer2 = componentsInChildren[j];
if (!((Object)skinnedMeshRenderer2 == (Object)null) && !((Object)skinnedMeshRenderer2.sharedMesh == (Object)null) && j < array2.Length)
{
BoneWeight[] boneWeights = skinnedMeshRenderer2.sharedMesh.boneWeights;
BoneWeight[] array3 = boneWeights;
foreach (BoneWeight boneWeight in array3)
{
BoneWeight item = boneWeight;
item.boneIndex0 += num2;
item.boneIndex1 += num2;
item.boneIndex2 += num2;
item.boneIndex3 += num2;
list2.Add(item);
}
num2 += skinnedMeshRenderer2.bones.Length;
Transform[] bones = skinnedMeshRenderer2.bones;
Transform[] array4 = bones;
foreach (Transform item2 in array4)
{
list.Add(item2);
}
if ((Object)skinnedMeshRenderer2.sharedMaterial.mainTexture != (Object)null)
{
list4.Add(skinnedMeshRenderer2.renderer.sharedMaterial.mainTexture as Texture2D);
}
CombineInstance item3 = default(CombineInstance);
item3.mesh = skinnedMeshRenderer2.sharedMesh;
array2[j] = item3.mesh.vertexCount;
item3.transform = skinnedMeshRenderer2.transform.localToWorldMatrix;
list3.Add(item3);
if (!destroyImmediate)
{
Object.Destroy(skinnedMeshRenderer2.gameObject);
}
else
{
Object.DestroyImmediate(skinnedMeshRenderer2.gameObject);
}
}
}
List<string> list5 = new List<string>();
foreach (Transform item4 in list)
{
list5.Add(item4.name);
}
List<Matrix4x4> list6 = new List<Matrix4x4>();
for (int m = 0; m < list.Count; m++)
{
list6.Add(list[m].worldToLocalMatrix * root.transform.worldToLocalMatrix);
}
SkinnedMeshRenderer skinnedMeshRenderer3 = core.gameObject.GetComponent<SkinnedMeshRenderer>();
if ((Object)skinnedMeshRenderer3 == (Object)null)
{
skinnedMeshRenderer3 = core.gameObject.AddComponent<SkinnedMeshRenderer>();
}
skinnedMeshRenderer3.sharedMesh = new Mesh();
skinnedMeshRenderer3.sharedMesh.CombineMeshes(list3.ToArray(), true, true);
Texture2D texture2D = null;
RuntimePlatform platform = Application.platform;
texture2D = ((platform != RuntimePlatform.Android && platform != RuntimePlatform.IPhonePlayer) ? new Texture2D(0, 0, TextureFormat.RGBA32, false) : new Texture2D(0, 0, TextureFormat.RGBA4444, false));
Rect[] array5 = texture2D.PackTextures(list4.ToArray(), 0, 2048, true);
texture2D.name = "SKINNED MESH ATLAS";
Vector2[] uv = skinnedMeshRenderer3.sharedMesh.uv;
Vector2[] array6 = new Vector2[uv.Length];
int num3 = 0;
int num4 = 0;
if (array5.Length > 0)
{
for (int n = 0; n < array6.Length; n++)
{
array6[n].x = Mathf.Lerp(array5[num3].xMin, array5[num3].xMax, uv[n].x);
array6[n].y = Mathf.Lerp(array5[num3].yMin, array5[num3].yMax, uv[n].y);
if (n >= array2[num3] + num4 - 1)
{
num4 += array2[num3];
num3++;
}
if (num3 >= array5.Length)
{
num3 = array5.Length - 1;
}
}
}
Material material = new Material(Shader.Find("HBS/Transparent/Cutout/Diffuse"));
material.mainTexture = texture2D;
skinnedMeshRenderer3.sharedMesh.uv = array6;
skinnedMeshRenderer3.sharedMaterial = material;
skinnedMeshRenderer3.bones = list.ToArray();
skinnedMeshRenderer3.sharedMesh.boneWeights = list2.ToArray();
skinnedMeshRenderer3.sharedMesh.bindposes = list6.ToArray();
skinnedMeshRenderer3.sharedMesh.RecalculateBounds();
root.transform.parent.transform.localPosition = position;
root.transform.parent.transform.localRotation = rotation;
CachedMesh cachedMesh = new CachedMesh();
cachedMesh.mesh = skinnedMeshRenderer3.sharedMesh;
cachedMesh.tex = texture2D;
cachedMesh.boneNames = list5;
for (int num5 = 0; num5 < list4.Count; num5++)
{
if (list4[num5].name.ToLower().Contains("clone"))
{
if (destroyImmediate)
{
Object.DestroyImmediate(list4[num5]);
}
else
{
Object.Destroy(list4[num5]);
}
}
}
return cachedMesh;
}
public static CachedMesh Initiate(GameObject core, GameObject root, bool destroyImmediate = false)
{
Vector3 position = root.transform.parent.transform.position;
Quaternion rotation = root.transform.parent.transform.rotation;
root.transform.parent.transform.position = new Vector3(0f, 0f, 0f);
root.transform.parent.transform.rotation = new Quaternion(0f, 0f, 0f, 0f);
root.transform.localPosition = new Vector3(0f, 0f, 0f);
root.transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
SkinnedMeshRenderer[] componentsInChildren = core.GetComponentsInChildren<SkinnedMeshRenderer>();
List<Transform> list = new List<Transform>();
List<BoneWeight> list2 = new List<BoneWeight>();
List<CombineInstance> list3 = new List<CombineInstance>();
List<Texture2D> list4 = new List<Texture2D>();
int num = 0;
SkinnedMeshRenderer[] array = componentsInChildren;
foreach (SkinnedMeshRenderer skinnedMeshRenderer in array)
{
if ((Object)skinnedMeshRenderer == (Object)null || (Object)skinnedMeshRenderer.sharedMesh == (Object)null)
{
Transform transform = core.transform;
while ((Object)transform.parent != (Object)null)
{
transform = transform.parent;
}
string name = transform.name;
Debug.LogError("Missing SkinnedMeshRenderer from root object: " + name + ", skipping");
}
else
{
skinnedMeshRenderer.transform.localPosition = new Vector3(0f, 0f, 0f);
skinnedMeshRenderer.transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
num += skinnedMeshRenderer.sharedMesh.subMeshCount;
}
}
int[] array2 = new int[num];
int num2 = 0;
for (int j = 0; j < componentsInChildren.Length; j++)
{
SkinnedMeshRenderer skinnedMeshRenderer2 = componentsInChildren[j];
if (!((Object)skinnedMeshRenderer2 == (Object)null) && !((Object)skinnedMeshRenderer2.sharedMesh == (Object)null) && j < array2.Length)
{
BoneWeight[] boneWeights = skinnedMeshRenderer2.sharedMesh.boneWeights;
BoneWeight[] array3 = boneWeights;
foreach (BoneWeight boneWeight in array3)
{
BoneWeight item = boneWeight;
item.boneIndex0 += num2;
item.boneIndex1 += num2;
item.boneIndex2 += num2;
item.boneIndex3 += num2;
list2.Add(item);
}
num2 += skinnedMeshRenderer2.bones.Length;
Transform[] bones = skinnedMeshRenderer2.bones;
Transform[] array4 = bones;
foreach (Transform item2 in array4)
{
list.Add(item2);
}
if ((Object)skinnedMeshRenderer2.sharedMaterial.mainTexture != (Object)null)
{
list4.Add(skinnedMeshRenderer2.renderer.sharedMaterial.mainTexture as Texture2D);
}
CombineInstance item3 = default(CombineInstance);
item3.mesh = skinnedMeshRenderer2.sharedMesh;
array2[j] = item3.mesh.vertexCount;
item3.transform = skinnedMeshRenderer2.transform.localToWorldMatrix;
list3.Add(item3);
if (!destroyImmediate)
{
Object.Destroy(skinnedMeshRenderer2.gameObject);
}
else
{
Object.DestroyImmediate(skinnedMeshRenderer2.gameObject);
}
}
}
List<string> list5 = new List<string>();
foreach (Transform item4 in list)
{
list5.Add(item4.name);
}
List<Matrix4x4> list6 = new List<Matrix4x4>();
for (int m = 0; m < list.Count; m++)
{
list6.Add(list[m].worldToLocalMatrix * root.transform.worldToLocalMatrix);
}
SkinnedMeshRenderer skinnedMeshRenderer3 = core.gameObject.GetComponent<SkinnedMeshRenderer>();
if ((Object)skinnedMeshRenderer3 == (Object)null)
{
skinnedMeshRenderer3 = core.gameObject.AddComponent<SkinnedMeshRenderer>();
}
skinnedMeshRenderer3.sharedMesh = new Mesh();
skinnedMeshRenderer3.sharedMesh.CombineMeshes(list3.ToArray(), true, true);
Texture2D texture2D = null;
RuntimePlatform platform = Application.platform;
texture2D = ((platform != RuntimePlatform.Android && platform != RuntimePlatform.IPhonePlayer) ? new Texture2D(0, 0, TextureFormat.RGBA32, false) : new Texture2D(0, 0, TextureFormat.RGBA4444, false));
Rect[] array5 = texture2D.PackTextures(list4.ToArray(), 0, 2048, true);
texture2D.name = "SKINNED MESH ATLAS";
Vector2[] uv = skinnedMeshRenderer3.sharedMesh.uv;
Vector2[] array6 = new Vector2[uv.Length];
int num3 = 0;
int num4 = 0;
if (array5.Length > 0)
{
for (int n = 0; n < array6.Length; n++)
{
array6[n].x = Mathf.Lerp(array5[num3].xMin, array5[num3].xMax, uv[n].x);
array6[n].y = Mathf.Lerp(array5[num3].yMin, array5[num3].yMax, uv[n].y);
if (n >= array2[num3] + num4 - 1)
{
num4 += array2[num3];
num3++;
}
if (num3 >= array5.Length)
{
num3 = array5.Length - 1;
}
}
}
Material material = new Material(Shader.Find("HBS/Transparent/Cutout/Diffuse"));
material.mainTexture = texture2D;
skinnedMeshRenderer3.sharedMesh.uv = array6;
skinnedMeshRenderer3.sharedMaterial = material;
skinnedMeshRenderer3.bones = list.ToArray();
skinnedMeshRenderer3.sharedMesh.boneWeights = list2.ToArray();
skinnedMeshRenderer3.sharedMesh.bindposes = list6.ToArray();
skinnedMeshRenderer3.sharedMesh.RecalculateBounds();
root.transform.parent.transform.localPosition = position;
root.transform.parent.transform.localRotation = rotation;
CachedMesh cachedMesh = new CachedMesh();
cachedMesh.mesh = skinnedMeshRenderer3.sharedMesh;
cachedMesh.tex = texture2D;
cachedMesh.boneNames = list5;
for (int num5 = 0; num5 < list4.Count; num5++)
{
if (list4[num5].name.ToLower().Contains("clone"))
{
if (destroyImmediate)
{
Object.DestroyImmediate(list4[num5]);
}
else
{
Object.Destroy(list4[num5]);
}
}
}
return cachedMesh;
}
public static CachedMesh Initiate(GameObject core, GameObject root, bool destroyImmediate = false)
{
Vector3 position = root.transform.parent.transform.position;
Quaternion rotation = root.transform.parent.transform.rotation;
root.transform.parent.transform.position = new Vector3(0f, 0f, 0f);
root.transform.parent.transform.rotation = new Quaternion(0f, 0f, 0f, 0f);
root.transform.localPosition = new Vector3(0f, 0f, 0f);
root.transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
SkinnedMeshRenderer[] componentsInChildren = core.GetComponentsInChildren<SkinnedMeshRenderer>();
List<Transform> list = new List<Transform>();
List<BoneWeight> list2 = new List<BoneWeight>();
List<CombineInstance> list3 = new List<CombineInstance>();
List<Texture2D> list4 = new List<Texture2D>();
int num = 0;
SkinnedMeshRenderer[] array = componentsInChildren;
foreach (SkinnedMeshRenderer skinnedMeshRenderer in array)
{
if ((Object)skinnedMeshRenderer == (Object)null || (Object)skinnedMeshRenderer.sharedMesh == (Object)null)
{
Transform transform = core.transform;
while ((Object)transform.parent != (Object)null)
{
transform = transform.parent;
}
string name = transform.name;
Debug.LogError("Missing SkinnedMeshRenderer from root object: " + name + ", skipping");
}
else
{
skinnedMeshRenderer.transform.localPosition = new Vector3(0f, 0f, 0f);
skinnedMeshRenderer.transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
num += skinnedMeshRenderer.sharedMesh.subMeshCount;
}
}
int[] array2 = new int[num];
int num2 = 0;
for (int j = 0; j < componentsInChildren.Length; j++)
{
SkinnedMeshRenderer skinnedMeshRenderer2 = componentsInChildren[j];
if (!((Object)skinnedMeshRenderer2 == (Object)null) && !((Object)skinnedMeshRenderer2.sharedMesh == (Object)null) && j < array2.Length)
{
BoneWeight[] boneWeights = skinnedMeshRenderer2.sharedMesh.boneWeights;
BoneWeight[] array3 = boneWeights;
foreach (BoneWeight boneWeight in array3)
{
BoneWeight item = boneWeight;
item.boneIndex0 += num2;
item.boneIndex1 += num2;
item.boneIndex2 += num2;
item.boneIndex3 += num2;
list2.Add(item);
}
num2 += skinnedMeshRenderer2.bones.Length;
Transform[] bones = skinnedMeshRenderer2.bones;
Transform[] array4 = bones;
foreach (Transform item2 in array4)
{
list.Add(item2);
}
if ((Object)skinnedMeshRenderer2.sharedMaterial.mainTexture != (Object)null)
{
list4.Add(skinnedMeshRenderer2.renderer.sharedMaterial.mainTexture as Texture2D);
}
CombineInstance item3 = default(CombineInstance);
item3.mesh = skinnedMeshRenderer2.sharedMesh;
array2[j] = item3.mesh.vertexCount;
item3.transform = skinnedMeshRenderer2.transform.localToWorldMatrix;
list3.Add(item3);
if (!destroyImmediate)
{
Object.Destroy(skinnedMeshRenderer2.gameObject);
}
else
{
Object.DestroyImmediate(skinnedMeshRenderer2.gameObject);
}
}
}
List<string> list5 = new List<string>();
foreach (Transform item4 in list)
{
list5.Add(item4.name);
}
List<Matrix4x4> list6 = new List<Matrix4x4>();
for (int m = 0; m < list.Count; m++)
{
list6.Add(list[m].worldToLocalMatrix * root.transform.worldToLocalMatrix);
}
SkinnedMeshRenderer skinnedMeshRenderer3 = core.gameObject.GetComponent<SkinnedMeshRenderer>();
if ((Object)skinnedMeshRenderer3 == (Object)null)
{
skinnedMeshRenderer3 = core.gameObject.AddComponent<SkinnedMeshRenderer>();
}
skinnedMeshRenderer3.sharedMesh = new Mesh();
skinnedMeshRenderer3.sharedMesh.CombineMeshes(list3.ToArray(), true, true);
Texture2D texture2D = null;
RuntimePlatform platform = Application.platform;
texture2D = ((platform != RuntimePlatform.Android && platform != RuntimePlatform.IPhonePlayer) ? new Texture2D(0, 0, TextureFormat.RGBA32, false) : new Texture2D(0, 0, TextureFormat.RGBA4444, false));
Rect[] array5 = texture2D.PackTextures(list4.ToArray(), 0, 2048, true);
texture2D.name = "SKINNED MESH ATLAS";
Vector2[] uv = skinnedMeshRenderer3.sharedMesh.uv;
Vector2[] array6 = new Vector2[uv.Length];
int num3 = 0;
int num4 = 0;
if (array5.Length > 0)
{
for (int n = 0; n < array6.Length; n++)
{
array6[n].x = Mathf.Lerp(array5[num3].xMin, array5[num3].xMax, uv[n].x);
array6[n].y = Mathf.Lerp(array5[num3].yMin, array5[num3].yMax, uv[n].y);
if (n >= array2[num3] + num4 - 1)
{
num4 += array2[num3];
num3++;
}
if (num3 >= array5.Length)
{
num3 = array5.Length - 1;
}
}
}
Material material = new Material(Shader.Find("HBS/Transparent/Cutout/Diffuse"));
material.mainTexture = texture2D;
skinnedMeshRenderer3.sharedMesh.uv = array6;
skinnedMeshRenderer3.sharedMaterial = material;
skinnedMeshRenderer3.bones = list.ToArray();
skinnedMeshRenderer3.sharedMesh.boneWeights = list2.ToArray();
skinnedMeshRenderer3.sharedMesh.bindposes = list6.ToArray();
skinnedMeshRenderer3.sharedMesh.RecalculateBounds();
root.transform.parent.transform.localPosition = position;
root.transform.parent.transform.localRotation = rotation;
CachedMesh cachedMesh = new CachedMesh();
cachedMesh.mesh = skinnedMeshRenderer3.sharedMesh;
cachedMesh.tex = texture2D;
cachedMesh.boneNames = list5;
for (int num5 = 0; num5 < list4.Count; num5++)
{
if (list4[num5].name.ToLower().Contains("clone"))
{
if (destroyImmediate)
{
Object.DestroyImmediate(list4[num5]);
}
else
{
Object.Destroy(list4[num5]);
}
}
}
return cachedMesh;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment