void ACinemotusPlayerController::AddCinePawn() { // pawnToAdd-> APawn* pawnToAdd = NULL; int newIndex = 0; while (newIndex < PawnsInScene.Num() &&!PawnsInScene[newIndex]->bHidden) { newIndex++; }//keep going till we find a hidden one if (newIndex >= PawnsInScene.Num()) { //add a dude UWorld* const World = GetWorld(); if (World) { // Set the spawn parameters FActorSpawnParameters SpawnParams; SpawnParams.Owner = this; SpawnParams.Instigator = Instigator; // Get a random location to spawn at FVector SpawnLocation = GetPawn()->GetActorLocation(); // Get a random rotation for the spawned item FRotator SpawnRotation = GetPawn()->GetActorRotation(); // spawn the pickup pawnToAdd = GetWorld()->SpawnActor<ACinemotusDefaultPawn>(ACinemotusDefaultPawn::StaticClass(), SpawnLocation, SpawnRotation, SpawnParams); } } else { pawnToAdd = PawnsInScene[newIndex]; APawn* pwn = GetPawn(); pawnToAdd->SetActorLocationAndRotation(pwn->GetActorLocation(), pwn->GetActorRotation()); //make this one added to where we are right now } pawnToAdd->SetActorTickEnabled(true); pawnToAdd->SetActorEnableCollision(true); pawnToAdd->SetActorHiddenInGame(false); SwitchToPawn(pawnToAdd); }
void UCheatManager::Teleport() { FVector ViewLocation; FRotator ViewRotation; check(GetOuterAPlayerController() != NULL); GetOuterAPlayerController()->GetPlayerViewPoint( ViewLocation, ViewRotation ); FHitResult Hit; APawn* AssociatedPawn = GetOuterAPlayerController()->GetPawn(); static FName NAME_TeleportTrace = FName(TEXT("TeleportTrace")); FCollisionQueryParams TraceParams(NAME_TeleportTrace, true, AssociatedPawn); bool bHit = GetWorld()->LineTraceSingle(Hit, ViewLocation, ViewLocation + 1000000.f * ViewRotation.Vector(), ECC_Pawn, TraceParams); if ( bHit ) { Hit.Location += Hit.Normal * 4.0f; } if (AssociatedPawn != NULL) { AssociatedPawn->TeleportTo( Hit.Location, AssociatedPawn->GetActorRotation() ); } else { ADebugCameraController* const DCC = Cast<ADebugCameraController>(GetOuter()); if ((DCC != NULL) && (DCC->OriginalControllerRef != NULL)) { APawn* OriginalControllerPawn = DCC->OriginalControllerRef->GetPawn(); if (OriginalControllerPawn != NULL) { OriginalControllerPawn->TeleportTo(Hit.Location, OriginalControllerPawn->GetActorRotation()); } } } }