Exemple #1
0
    private void updateAvatar()
    {
        if (character == null)
        {
            character = new GameObject();
        }
        character.SetActive(true);
        mainPaperdoll = character.GetComponent <Paperdoll>();
        if (mainPaperdoll == null)
        {
            mainPaperdoll = character.AddComponent <Paperdoll>();
        }

        KFAnimation kf         = animationNif.getActiveAnimation();
        string      animString = kf.sequencename;

        if (kf.sequencename.StartsWith("mount"))
        {
            animString = kf.sequencename;
        }
        else
        {
            if (kf.sequencename.Contains("mount_"))
            {
                animString = kf.sequencename.Substring(kf.sequencename.IndexOf("mount"));
            }
        }
        Debug.Log("setting avatar animation to:" + animString);
        mainPaperdoll.animOverride = animString;
        mainPaperdoll.setKFBPostFix("mount");
        mainPaperdoll.setGender("male");
        mainPaperdoll.setRace("human");
        mainPaperdoll.animSpeed               = this.animationNif.animSpeed;
        character.transform.parent            = this.nifmodel.transform;
        character.transform.localPosition     = new Vector3(0, 0, 0);
        character.transform.localRotation     = Quaternion.identity;
        mainPaperdoll.transform.localRotation = Quaternion.identity;
        //mainPaperdoll.setAppearenceSet(1044454339);

        int key = ProgramSettings.get("MOUNT_AVATAR_KEY", 736798136);    //

        mainPaperdoll.setAppearenceSet(key);
        mainPaperdoll.zeroFrame();
        this.animationNif.zeroFrame();
    }
Exemple #2
0
    // Use this for initialization
    void Start()
    {
        AssetDatabase db = AssetDatabaseInst.DB;

        KFMFile kfm     = new KFMFile(new FileStream(@"C:\Users\Spikeles\Documents\NetBeansProjects\TelaraDBExplorer\TelaraDBEditorCore\human_female_medium.kfm", FileMode.Open, FileAccess.Read, FileShare.Read));
        NIFFile kfbfile = new NIFFile(new FileStream(@"C:\Users\Spikeles\Documents\NetBeansProjects\TelaraDBExplorer\TelaraDBEditorCore\human_female_2h_shared.kfb", FileMode.Open, FileAccess.Read, FileShare.Read));

        // 230, string -> index 2

        List <KFAnimation> anims = kfm.kfanimations;
        int maxAnimID            = 0;

        foreach (KFAnimation anim in anims)
        {
            maxAnimID = Mathf.Max(anim.id, maxAnimID);
            //Debug.Log(anim.id + ":" + anim.sequenceFilename + ":" + anim.sequencename);
        }
        Debug.Log("maxAnimID:" + maxAnimID);

        for (int i = 0; i < kfbfile.numObjects; i += 4)
        {
            NiIntegerExtraData indexData = (NiIntegerExtraData)kfbfile.getObject(i);
            NiIntegerExtraData sizeData  = (NiIntegerExtraData)kfbfile.getObject(i + 1);
            NiBinaryExtraData  binData   = (NiBinaryExtraData)kfbfile.getObject(i + 2);
            NiBinaryExtraData  binData2  = (NiBinaryExtraData)kfbfile.getObject(i + 3);
            KFAnimation        anim      = anims.DefaultIfEmpty(null).FirstOrDefault(a => a.id == indexData.intExtraData);
            if (anim != null)
            {
                Debug.Log("kfb[" + indexData.intExtraData + "] match => [" + anim.id + "]" + anim.sequenceFilename);
            }
            else
            {
                Debug.Log("kfb[" + indexData.intExtraData + "] nomatch");
            }
        }
        Debug.Log("kfb objs:" + kfbfile.numObjects / 4);
        Debug.Log("anims:" + anims.Count);
        //File.WriteAllBytes("human_female.kfb" + i + "_0", binData.getData());
        //File.WriteAllBytes("human_female.kfb" + i + "_1", binData2.getData());
    }