Inheritance: UnityEngine.ScriptableObject
コード例 #1
0
        /// <summary>
        /// Load bindposes and bones matrices from resources scriptable object
        /// </summary>
        /// <param name="gender"></param>
        /// <param name="weapon"></param>
        /// <returns></returns>
        public BindPoses loadBindPoses(GameObject skeleton, GenderType gender, WeaponType weapon)
        {
            BindPoses poses = ScriptableObject.Instantiate <BindPoses>((BindPoses)Resources.Load("Animation/" + gender.ToString() + "/" + weapon.ToString() + "/bindPoses"));

            for (int i = 0; i < poses.boneNames.Length; i++)
            {
                poses.boneTransforms[i] = Utils.findChild(skeleton, poses.boneNames[i]);
            }
            return(poses);
        }
コード例 #2
0
        public void GenerateAnimationAsset(GenderType gender, RigType rig, Dictionary <String, String> zmoPaths)
        {
            GameObject skeleton = new GameObject("skeleton");
            bool       male     = (gender == GenderType.MALE);
            ZMD        zmd      = new ZMD(male ? "Assets/3DData/Avatar/MALE.ZMD" : "Assets/3DData/Avatar/FEMALE.ZMD");

            zmd.buildSkeleton(skeleton);

            BindPoses poses = ScriptableObject.CreateInstance <BindPoses>();

            poses.bindPoses      = zmd.bindposes;
            poses.boneNames      = getBoneNames(zmd.boneTransforms);
            poses.boneTransforms = zmd.boneTransforms;
            LoadClips(skeleton, zmd, gender, rig, zmoPaths);
            string path = "Assets/Resources/Animation/" + gender.ToString() + "/" + rig.ToString() + "/skeleton.prefab";

            AssetDatabase.CreateAsset(poses, path.Replace("skeleton.prefab", "bindPoses.asset"));
            AssetDatabase.SaveAssets();
            PrefabUtility.CreatePrefab(path, skeleton);
        }
コード例 #3
0
ファイル: RosePlayer.cs プロジェクト: osROSE/UnityRose
    private void LoadPlayerSkeleton(GenderType gender, WeaponType weapType, RigType rig, int weapon, int body, int arms, int foot, int hair, int face, int back, int cap, int shield)
    {
        // First destroy any children of player
        int childs = player.transform.childCount;

        for (int i = childs - 1; i > 0; i--)
            Utils.Destroy(player.transform.GetChild(i).gameObject);

        Utils.Destroy (skeleton);

        if( rig == RigType.FOOT)
            skeleton = rm.loadSkeleton(gender, weapType);
        else
            skeleton = rm.loadSkeleton(gender, rig);

        bindPoses = rm.loadBindPoses (skeleton, gender, weapType);
        skeleton.transform.parent = player.transform;
        skeleton.transform.localPosition = new Vector3 (0, 0, 0);
        skeleton.transform.localRotation = Quaternion.Euler (new Vector3 (0, 0, 0));

        // If player has already been initialized, make sure it knows that the skeleton has changed in order to restart its state machine with new animations
        PlayerController controller = player.GetComponent<PlayerController> ();
        if( controller != null )
            controller.OnSkeletonChange ();

        //load all objects
        playerBounds = new Bounds(player.transform.position, Vector3.zero);

        playerBounds.Encapsulate(LoadObject(BodyPartType.BODY, body));
        playerBounds.Encapsulate(LoadObject(BodyPartType.ARMS, arms));
        playerBounds.Encapsulate(LoadObject(BodyPartType.FOOT, foot));
        playerBounds.Encapsulate(LoadObject(BodyPartType.FACE, face));
        LoadObject(BodyPartType.CAP, cap);
        String hairOffsetStr = rm.stb_cap_list.Cells[cap][34];
        int hairOffset = (hairOffsetStr == "") ? 0 : int.Parse(hairOffsetStr);
        playerBounds.Encapsulate(LoadObject(BodyPartType.HAIR, hair - hair%5 + hairOffset));

        LoadObject(BodyPartType.SUBWEAPON, shield);
        LoadObject(BodyPartType.WEAPON, weapon);
        LoadObject(BodyPartType.BACK, back);

        //player.SetActive(true);
    }