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()); }
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()); }
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()); } } }