1.8 KiB

TsScreenPlayerTextureRenderer

   - MultiViewActor: UE.MultiViewActor;// 用于渲染pvw/pgm画面

  • ReceiveBeginPlay() =>
    • this.RegisterLocalEventListener(); =>
      • this.ChangeCameraTask(TaskData);

RegisterLocalEventListener

private RegisterLocalEventListener(): void {
	this.PVWCameraChangeFunc = (TaskData: UE.CamTaskDataRPC) => {
		if (this.CurTag == DirectorMode.PVWCameraRenderer) {
			this.ChangeCameraTask(TaskData);
		}
	}
	this.PGMCameraChangeFunc = (TaskData: UE.CamTaskDataRPC) => {
		if (this.CurTag == DirectorMode.PGMCameraRenderer) {
			this.ChangeCameraTask(TaskData);
		}
	}
	this.SwitchDirectorNetTagFunc = (oldTag: UE.GameplayTag, newTag: UE.GameplayTag) => {
		this.SwitchDirectorNetTagCallback(oldTag, newTag);
	}

	DirectorEventSystem.RegisterEventListener(this, DirectorEvent.OnPVWTaskRequested, this.PVWCameraChangeFunc);
	DirectorEventSystem.RegisterEventListener(this, DirectorEvent.OnPGMTaskRequested, this.PGMCameraChangeFunc);
	DirectorEventSystem.RegisterEventListener(this, DirectorEvent.SwitchDirectorMode, this.SwitchDirectorNetTagFunc)
}

ChangeCameraTask

    ChangeCameraTask(TaskData: UE.CamTaskDataRPC) {
        if(!this.bStarted){
            return;
        }
        
        if(this.DirectorCamManagerActor == null){
            this.DirectorCamManagerActor = this.GetCameraManagerActor();
        }
        // double check
        if(this.DirectorCamManagerActor == null){
            return;
        }
        
        if (this.Task) {
            this.Task.Stop();
        }
        this.Task = DirectorCamUtil.CreateCamTask(this, TaskData, CamTaskType.FullStream, this.DirectorCamManagerActor.droneCamera, null, this.DirectorCamManagerActor.handHeldCamera)
        if (this.Task) {
            this.Task.Start()
            this.BindCamera(this.Task.TryGetBindedMainCamera());
        }
    }