public void Initialize(VRCAvatar avatar) { this.avatar = avatar; exclusions = new List <SkinnedMeshRenderer>(); targetRenderers = MeshBounds.GetSkinnedMeshRenderersWithoutExclusions( avatar.Animator.gameObject, exclusions); }
/// <summary> /// Materialを置き換える /// </summary> /// <param name="avatar">Materialを置き換えるアバター</param> /// <param name="srcMaterial">変更前のMaterial</param> /// <param name="dstMaterial">変更後のMaterial</param> public static void ReplaceMaterial(VRCAvatar avatar, Material srcMaterial, Material dstMaterial) { GatoUtility.ReplaceMaterial(avatar.Animator.gameObject, srcMaterial, dstMaterial); var index = Array.IndexOf(avatar.Materials, srcMaterial); if (index == -1) { return; } avatar.Materials[index] = dstMaterial; }
public void Initialize(VRCAvatar edittingAvatar, VRCAvatar originalAvatar) { this.edittingAvatar = edittingAvatar; this.originalAvatar = originalAvatar; // TODO: 1秒以上かかる customShaders = GatoUtility.LoadShadersInProject(); customShaderNames = customShaders.Select(s => s.name).ToArray(); shaderKindGroups = customShaders .GroupBy(s => s.name.Split('/').First()) .ToArray(); currentShaderKindName = GetShaderKindName(edittingAvatar.Materials); shaderKindNames = shaderKindGroups.Select(s => s.Key).ToArray(); shaderKindIndex = Array.IndexOf(shaderKindNames, currentShaderKindName); // すべてtrueで初期化したnew bool[edittingAvatar.materials.Length] isTargets = Enumerable.Range(0, edittingAvatar.Materials.Length).Select(b => true).ToArray(); }
public static void SetProbeAnchorToMeshRenderers(ref GameObject anchorTargetObj, ref VRCAvatar avatar, ref bool[] isSettingToMesh) { List <MeshRenderer> meshRendererList = avatar.MeshRendererList; for (int index = 0; index < meshRendererList.Count; index++) { if (isSettingToMesh[index]) { meshRendererList[index].probeAnchor = anchorTargetObj.transform; } else { meshRendererList[index].probeAnchor = null; } } }
public static void SetProbeAnchorToSkinnedMeshRenderers(ref GameObject anchorTargetObj, ref VRCAvatar avatar, ref bool[] isSettingToSkinnedMesh) { for (int index = 0; index < avatar.SkinnedMeshList.Count; index++) { IProbeAnchorSkinnedMesh skinnedMesh = avatar.SkinnedMeshList[index]; if (isSettingToSkinnedMesh[index]) { skinnedMesh.Renderer.probeAnchor = anchorTargetObj.transform; } else { skinnedMesh.Renderer.probeAnchor = null; } } }
public void Initialize(VRCAvatar avatar) { this.avatar = avatar; SettingForProbeSetter(); }