Esempio n. 1
0
    public override GameObject CreateGameObject(ReferenceData referenceData, Transform parent = null)
    {
        var model = this.model ?? "base_anim.nif";

        NiFile niFile;

        if (!niCache.TryGetValue(model, out niFile))
        {
            var reader = BsaFileReader.LoadArchiveFileData($"meshes\\{model}");
            niFile = new NiFile(reader);
            niCache.Add(model, niFile);
        }

        var gameObject = niFile.CreateGameObject(parent);

        if (gameObject == null)
        {
            return(null);
        }

        gameObject.name = name;

        CharacterInventory.Create(gameObject, this, referenceData);

        var equipment = gameObject.AddComponent <CharacterEquipment>();

        var animation = gameObject.AddComponent <CharacterAnimation>();

        var combat = gameObject.AddComponent <CharacterCombat>();

        var input = AddCharacterInput(gameObject);

        combat.Initialize(animation, equipment, input);
        input.Initialize(aiData, wanderData, animation, combat);

        var character = gameObject.AddComponent <CharacterMovement>();

        character.Initialize(animation, input);

        return(gameObject);
    }