diff --git a/.obsidian/plugins/various-complements/histories.json b/.obsidian/plugins/various-complements/histories.json index 650802e..de9551c 100644 --- a/.obsidian/plugins/various-complements/histories.json +++ b/.obsidian/plugins/various-complements/histories.json @@ -1 +1 @@ -{"123456":{"123456":{"currentFile":{"count":2,"lastUpdated":1720755815809}}},"LiveLink的应用及扩展":{"LiveLink的应用及扩展":{"internalLink":{"count":1,"lastUpdated":1720682388242}}},"Actor即可。":{"Actor即可。":{"currentFile":{"count":1,"lastUpdated":1721128244899}}},"TODO清单":{"TODO清单":{"internalLink":{"count":1,"lastUpdated":1721185627583}}},"群贝拉场景。可能是动画蓝图的问题。并不确定。":{"群贝拉场景。可能是动画蓝图的问题。并不确定。":{"currentFile":{"count":1,"lastUpdated":1721186286231}}},"c++内存泄漏分析工具":{"c++内存泄漏分析工具":{"internalLink":{"count":1,"lastUpdated":1721218206634}}},"DMX优化":{"DMX优化":{"currentFile":{"count":1,"lastUpdated":1721285453609}}},"TsMapEnvironmentLayerManager:EnterLevelArea":{"TsMapEnvironmentLayerManager:EnterLevelArea":{"currentFile":{"count":1,"lastUpdated":1721646563688}}},"86.1353986110013":{"86.1353986110013":{"currentFile":{"count":1,"lastUpdated":1722512530872}}}} \ No newline at end of file +{"c++内存泄漏分析工具":{"c++内存泄漏分析工具":{"internalLink":{"count":1,"lastUpdated":1721218206634}}},"DMX优化":{"DMX优化":{"currentFile":{"count":1,"lastUpdated":1721285453609}}},"TsMapEnvironmentLayerManager:EnterLevelArea":{"TsMapEnvironmentLayerManager:EnterLevelArea":{"currentFile":{"count":1,"lastUpdated":1721646563688}}},"86.1353986110013":{"86.1353986110013":{"currentFile":{"count":1,"lastUpdated":1722512530872}}},"Multicast":{"Multicast":{"currentFile":{"count":1,"lastUpdated":1723785247956}}}} \ No newline at end of file diff --git a/02-Note/DAWA/ASoul/实现效果/传送效果.md b/02-Note/DAWA/ASoul/实现效果/传送效果.md index 5d1acbd..80f2607 100644 --- a/02-Note/DAWA/ASoul/实现效果/传送效果.md +++ b/02-Note/DAWA/ASoul/实现效果/传送效果.md @@ -48,4 +48,101 @@ RegisterEventListener(): void this.PropComp.DressModelTeleport(TargetLiveAreaGUID) } } +``` + +## 相关事件 +- BeforeSwitchArea_Multicast + +## 笔记 +- SwitchToLiveArea() + - 设置Idol的位置。 + - this.OnSwitchLiveArea.Broadcast(oriUUID, uuid); +        - DirectorEventSystem.Emit(this, DirectorEvent.OnFinishSwitchLiveAreaLocal, this.CurrentLiveAreaUUID) +         - console.log('切换直播区域,area=[' + (liveArea as UE.LiveAreaActor).Title + ']') +         - DirectorCamUtil.EnsureWorkShopReady(this, placement.UUID, () => { this.SwitchWorkShopInAreaServer(0) }) ***TsDirectorCamManagerActor.ts*** +         - SwitchWorkShopInAreaServer +         - this.HandlePreviewTaskDataMulticast(newPreviewTaskData); +         - this.RequestPVWTaskServer(newPVWTaskData); + + +```ts +    //推流 +    E_StartCut(progress: number): void { +        this.camManagerCache = DirectorCamUtil.PushStreamOnServerAsync(this, UE.EPushStreamMethod.Cut, false, this.camManagerCache) +    } +``` + +## TsMovableLiveAreaComponent +- TsMovableLiveAreaComponent +## +```ts + /** 使用cmd进入区域,跳过加载等待, 其他方法不可调用 */ + @ufunction.ufunction(ufunction.ServerAPI, ufunction.Reliable) + EnterAreaByCMD(areaUUIDStr: string): void { + + let areaManager = this.GetLevelAreaManager(); + if (!areaManager) { + return; + } + + let area: UE.LiveAreaActor = null; + if (areaUUIDStr != null || areaUUIDStr != "") { + let uuid = new UE.Guid(); + if (UE.Guid.Parse(areaUUIDStr, $ref(uuid))) { + area = areaManager.GetLiveArea(uuid); + } + } + + if (area == null) { + area = areaManager.GetAllLiveAreas().GetRef(0) + } + + if (area == null) { + console.error("no area") + return + } + + if (area.UUID.op_Equality(areaManager.CurrentLiveAreaUUID)) { + return + } + + let bHasData = false; + let presetId:UE.Guid; + let manager = this.GetManager() + for (let index = 0; index < manager.Config.AreaPresets.Num(); index++) { + const element = manager.Config.AreaPresets.GetRef(index); + if (element.AreaGuid.op_Equality(area.UUID)) { + presetId = element.UUID; + bHasData = true; + break; + } + } + + let levelName = UE.GameplayStatics.GetCurrentLevelName(this, true); + + if (!bHasData) { + manager.AddAreaPreset( levelName, area.UUID, area.Title) + + for (let index = 0; index < manager.Config.AreaPresets.Num(); index++) { + const element = manager.Config.AreaPresets.GetRef(index); + if (element.AreaGuid.op_Equality(area.UUID)) { + presetId = element.UUID; + break; + } + } + } + + let viewTarget = areaManager.GetViewTarget(area.UUID) + if (!viewTarget) { + this.AddViewTarget(area.UUID, area.Title); + } + + + manager.AddConfigLevelSetting(levelName); + this.BeforeSwitchArea_Multicast(manager.CurPresetId); + + manager.CurPresetId = presetId; + areaManager.SwitchToLiveArea(area.UUID); + } +} ``` \ No newline at end of file