Example #1
0
        public uint CreateAvatarMirror(BaseMonoAvatar owner, Vector3 initPos, Vector3 initDir, string AIName, float hpRatio)
        {
            BaseMonoAvatar component = ((GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource <GameObject>(AvatarData.GetPrefabResPath(owner.AvatarTypeName, true), BundleType.RESOURCE_FILE), initPos, Quaternion.LookRotation(initDir))).GetComponent <BaseMonoAvatar>();

            component.Init(false, Singleton <RuntimeIDManager> .Instance.GetNextRuntimeID(3), owner.AvatarTypeName, owner.EquipedWeaponID, initPos, initDir, false);
            this.RegisterAvatar(component, false, false, false);
            AvatarMirrorActor actor = Singleton <EventManager> .Instance.CreateActor <AvatarMirrorActor>(component);

            actor.InitFromAvatarActor(Singleton <EventManager> .Instance.GetActor <AvatarActor>(owner.GetRuntimeID()), hpRatio);
            actor.PostInit();
            component.TriggerSwitchIn();
            BTreeAvatarAIController activeAIController = component.GetActiveAIController() as BTreeAvatarAIController;

            if (string.IsNullOrEmpty(AIName))
            {
                activeAIController.SetActive(false);
            }
            else
            {
                activeAIController.ChangeBehavior(AIName);
                component.ForceUseAIController();
            }
            return(component.GetRuntimeID());
        }
Example #2
0
        public uint CreateAvatar(AvatarDataItem avatarDataItem, bool isLocal, Vector3 initPos, Vector3 initDir, uint runtimeID, bool isLeader, bool leaderSkillOn, bool isHelper = false, bool useLow = false)
        {
            BaseMonoAvatar component         = null;
            string         avatarRegistryKey = avatarDataItem.AvatarRegistryKey;
            GameObject     obj2  = null;
            int            index = -1;

            for (int i = 0; i < this._preloadedAvatar.Count; i++)
            {
                if (this._preloadedAvatar[i].Item1 == avatarRegistryKey)
                {
                    obj2  = this._preloadedAvatar[i].Item2;
                    index = i;
                    break;
                }
            }
            if (obj2 != null)
            {
                obj2.GetComponent <BaseMonoAvatar>().Enable();
                this._preloadedAvatar.RemoveAt(index);
            }
            else
            {
                useLow = useLow || (!GlobalVars.AVATAR_USE_DYNAMIC_BONE || (Singleton <LevelManager> .Instance.levelActor.levelMode == LevelActor.Mode.Multi));
                obj2   = (GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource <GameObject>(AvatarData.GetPrefabResPath(avatarRegistryKey, useLow), BundleType.RESOURCE_FILE), InLevelData.CREATE_INIT_POS, Quaternion.Euler(0f, 200f, 0f));
            }
            component = obj2.GetComponent <BaseMonoAvatar>();
            if (runtimeID == 0)
            {
                runtimeID = Singleton <RuntimeIDManager> .Instance.GetNextRuntimeID(3);
            }
            component.Init(isLocal, runtimeID, avatarDataItem.AvatarRegistryKey, avatarDataItem.GetWeapon().ID, initPos, initDir, isLeader);
            bool isPlayerAvatar = !isHelper;

            this.RegisterAvatar(component, isLocal, isPlayerAvatar, isHelper);
            AvatarActor actor = Singleton <EventManager> .Instance.CreateActor <AvatarActor>(component);

            actor.InitAvatarDataItem(avatarDataItem, isLocal, isHelper, isLeader, leaderSkillOn);
            actor.InitGalTouchBuff(avatarDataItem);
            actor.PostInit();
            if (Singleton <LevelScoreManager> .Instance.LevelType == 4)
            {
                EndlessAvatarHp endlessAvatarHPData = Singleton <EndlessModule> .Instance.GetEndlessAvatarHPData(avatarDataItem.avatarID);

                actor.HP = (actor.maxHP * endlessAvatarHPData.get_hp_percent()) / 100f;
                actor.SP = (actor.maxSP * endlessAvatarHPData.get_sp_percent()) / 100f;
            }
            ConfigAvatar config = component.config;

            for (int j = 0; j < config.CommonArguments.PreloadEffectPatternGroups.Length; j++)
            {
                Singleton <EffectManager> .Instance.PreloadEffectGroup(config.CommonArguments.PreloadEffectPatternGroups[j], false);
            }
            if (component is MonoBronya)
            {
                if (actor.HasAppliedAbilityName("Weapon_Additional_BronyaLaser"))
                {
                    Singleton <EffectManager> .Instance.PreloadEffectGroup("Bronya_Laser_Effects", false);
                }
                else
                {
                    Singleton <EffectManager> .Instance.PreloadEffectGroup("Bronya_Gun_Effects", false);
                }
            }
            for (int k = 0; k < config.CommonArguments.RequestSoundBankNames.Length; k++)
            {
                Singleton <WwiseAudioManager> .Instance.ManualPrepareBank(config.CommonArguments.RequestSoundBankNames[k]);
            }
            return(component.GetRuntimeID());
        }
Example #3
0
 private void PostAwakeTryLoadFromFile()
 {
     if (DevLevelConfigData.configFromScene)
     {
         this.TryDestroyTypeAll <BaseMonoAvatar>();
         this.TryDestroyTypeAll <BaseMonoMonster>();
         this.TryDestroyTypeAll <MonoBasePerpStage>();
         this.TryDestroyTypeAll <MonoStageEnv>();
         Resources.UnloadUnusedAssets();
         GC.Collect();
         GC.WaitForPendingFinalizers();
         StageEntry stageEntryByName = StageData.GetStageEntryByName(this.stageDevData.stageName);
         GameObject obj2             = UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE));
         obj2.transform.position = Vector3.zero;
         Transform transform = obj2.transform;
         transform.position -= obj2.transform.Find(stageEntryByName.LocationPointName).position;
         StageManager.SetPerpstageNodeVisibility(obj2.GetComponent <MonoBasePerpStage>(), stageEntryByName, false, false);
         StageManager.SetPerpstageNodeVisibility(obj2.GetComponent <MonoBasePerpStage>(), stageEntryByName, true, true);
         UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(stageEntryByName.GetEnvPrefabPath(), BundleType.RESOURCE_FILE));
         DevAvatarData data = this.avatarDevDatas[0];
         UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(AvatarData.GetPrefabResPath(data.avatarType, false), BundleType.RESOURCE_FILE));
         this.monsterInstanceIds = new List <int>();
         foreach (DevMonsterData data2 in this.monsterDevDatas)
         {
             this.monsterInstanceIds.Add(UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(MonsterData.GetPrefabResPath(data2.monsterName, data2.typeName, false), BundleType.RESOURCE_FILE)).GetInstanceID());
         }
     }
 }