public GenericHero(Vector3 position) { GameObject = Factory.CreateInstance <T>(position, Quaternion.identity); FactoryObject factoryObject = Factory.FetchWeaponDataOfType <T>(); if (factoryObject is FactoryObject_Character characterData) { WeaponData = characterData.WeaponData; } weapon = Factory.CreateInstance <IWeapon>(WeaponData.FetchType(WeaponData.WeaponType), WeaponData); Transform = GameObject.transform; IsAlive = false; Animator = GameObject.GetComponent <Animator>(); }