コード例 #1
0
 public void Initialize(VRCAvatar avatar)
 {
     this.avatar     = avatar;
     exclusions      = new List <SkinnedMeshRenderer>();
     targetRenderers = MeshBounds.GetSkinnedMeshRenderersWithoutExclusions(
         avatar.Animator.gameObject,
         exclusions);
 }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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;
                }
            }
        }
コード例 #5
0
 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;
         }
     }
 }
コード例 #6
0
 public void Initialize(VRCAvatar avatar)
 {
     this.avatar = avatar;
     SettingForProbeSetter();
 }