コード例 #1
0
ファイル: Stitcher.cs プロジェクト: JoelPlourde/Shore-Squad
 private static Transform[] TranslateTransforms(Transform[] sources, TransformCatalog transformCatalog)
 {
     Transform[] targets = new Transform[sources.Length];
     for (int index = 0; index < sources.Length; index++)
     {
         targets[index] = DictionaryExtensions.Find(transformCatalog, sources[index].name);
     }
     return(targets);
 }
コード例 #2
0
ファイル: Stitcher.cs プロジェクト: Koyatoufu/AbyssHunter
    private Transform[] TranslateTransforms(Transform[] source, TransformCatalog catalog)
    {
        Transform[] newTrans = new Transform[source.Length];

        for (int i = 0; i < newTrans.Length; i++)
        {
            newTrans[i] = DictionaryExtensions.Find(catalog, source[i].name);
        }

        return(newTrans);
    }
コード例 #3
0
    /// <summary>
    /// Stitch clothing onto an avatar.  Both clothing and avatar must be instantiated however clothing may be destroyed after.
    /// </summary>
    /// <param name="sourceClothing"></param>
    /// <param name="targetAvatar"></param>
    /// <returns>Newly created clothing on avatar</returns>
    public GameObject Stitch(GameObject sourceClothing, GameObject targetAvatar)
    {
        var boneCatalog          = new TransformCatalog(targetAvatar.transform);
        var skinnedMeshRenderers = sourceClothing.GetComponentsInChildren <SkinnedMeshRenderer> ();
        var targetClothing       = AddChild(sourceClothing, targetAvatar.transform);

        foreach (var sourceRenderer in skinnedMeshRenderers)
        {
            var targetRenderer = AddSkinnedMeshRenderer(sourceRenderer, targetClothing);
            targetRenderer.bones = TranslateTransforms(sourceRenderer.bones, boneCatalog);
        }
        return(targetClothing);
    }
コード例 #4
0
ファイル: Stitcher.cs プロジェクト: Koyatoufu/AbyssHunter
    public GameObject Stitch(GameObject source, GameObject target)
    {
        TransformCatalog catalog = new TransformCatalog(target.transform);

        SkinnedMeshRenderer[] skinnedMeshes = source.GetComponentsInChildren <SkinnedMeshRenderer>();
        GameObject            cloth         = AddNewChild(source, target.transform);

        for (int i = 0; i < skinnedMeshes.Length; i++)
        {
            SkinnedMeshRenderer renderer = AddSkinnedMeshRenderer(skinnedMeshes[i], cloth);
            renderer.bones = TranslateTransforms(skinnedMeshes[i].bones, catalog);
        }

        return(cloth);
    }
コード例 #5
0
ファイル: Stitcher.cs プロジェクト: JoelPlourde/Shore-Squad
    /// <summary>
    /// Stitch clothing onto an avatar.  Both clothing and avatar must be instantiated however clothing may be destroyed after.
    /// </summary>
    /// <param name="sourceClothing"></param>
    /// <param name="targetAvatar"></param>
    /// <returns>Newly created clothing on avatar</returns>
    public static GameObject Stitch(GameObject sourceClothing, GameObject targetAvatar)
    {
        TransformCatalog boneCatalog = new TransformCatalog(targetAvatar.transform);

        SkinnedMeshRenderer[] skinnedMeshRenderers = sourceClothing.GetComponentsInChildren <SkinnedMeshRenderer>();

        GameObject targetClothing = AddChild(sourceClothing, targetAvatar.transform);

        foreach (SkinnedMeshRenderer sourceRenderer in skinnedMeshRenderers)
        {
            SkinnedMeshRenderer targetRenderer = AddSkinnedMeshRenderer(sourceRenderer, targetClothing);
            targetRenderer.bones = TranslateTransforms(sourceRenderer.bones, boneCatalog);
        }

        for (int i = 0; i < targetClothing.transform.childCount; i++)
        {
            GameObject.Destroy(targetClothing.transform.GetChild(i).gameObject);
        }

        return(targetClothing);
    }