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

	
}
示例#2
0
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());
			}
		}
	}
}