本文整理汇总了C++中FSceneView::WorldToPixel方法的典型用法代码示例。如果您正苦于以下问题:C++ FSceneView::WorldToPixel方法的具体用法?C++ FSceneView::WorldToPixel怎么用?C++ FSceneView::WorldToPixel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FSceneView
的用法示例。
在下文中一共展示了FSceneView::WorldToPixel方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckForSelection
/* After release of left mouse button, check if this unit is within selection box. */
void ARTSUnit::CheckForSelection()
{
/* Find screen coordinates of the unit. */
FVector2D MyResult = FVector2D(0, 0);
ULocalPlayer* LocalPlayer = Cast<ULocalPlayer>(PC->Player);
if (LocalPlayer != NULL && LocalPlayer->ViewportClient != NULL && LocalPlayer->ViewportClient->Viewport != NULL)
{
FSceneViewFamilyContext ViewFamily(FSceneViewFamily::ConstructionValues(
LocalPlayer->ViewportClient->Viewport,
GetWorld()->Scene,
LocalPlayer->ViewportClient->EngineShowFlags)
.SetRealtimeUpdate(true));
FVector ViewLocation;
FRotator ViewRotation;
FSceneView* SceneView = LocalPlayer->CalcSceneView(&ViewFamily, /*out*/ ViewLocation, /*out*/ ViewRotation, LocalPlayer->ViewportClient->Viewport);
if (SceneView)
{
auto MyWorldPosition = GetActorLocation();
MyResult;
SceneView->WorldToPixel(MyWorldPosition, MyResult);
}
}
/* If the selection box contains the screen postion: */
if (ARTSHUD::SelectionContainsPoint(MyResult)){
// Select this unit, and leave possibility to select others.
Select();
}
}
示例2: SourceTextureSpaceToScreenSpace
FVector2D FSpriteEditorViewportClient::SourceTextureSpaceToScreenSpace(const FSceneView& View, const FVector2D& SourcePoint) const
{
const FVector WorldSpacePoint = SourceTextureSpaceToWorldSpace(SourcePoint);
FVector2D PixelLocation;
View.WorldToPixel(WorldSpacePoint, /*out*/ PixelLocation);
return PixelLocation;
}
示例3: TextureSpaceToScreenSpace
FVector2D FSpriteGeometryEditingHelper::TextureSpaceToScreenSpace(const FSceneView& View, const FVector2D& SourcePoint) const
{
const FVector WorldSpacePoint = EditorContext->TextureSpaceToWorldSpace(SourcePoint);
FVector2D PixelLocation;
View.WorldToPixel(WorldSpacePoint, /*out*/ PixelLocation);
return PixelLocation;
}
示例4: UpdateRegion
void AEyeXSimpleInteractorPawn::UpdateRegion()
{
FVector Origin;
FVector Extents;
GetActorBounds(false, Origin, Extents);
auto playerController = Cast<APlayerController>(Controller);
ULocalPlayer* LocalPlayer = Cast<ULocalPlayer>(playerController->Player);
auto ViewFamilyArguments = FSceneViewFamily::ConstructionValues(LocalPlayer->ViewportClient->Viewport, GetWorld()->Scene, LocalPlayer->ViewportClient->EngineShowFlags);
ViewFamilyArguments.SetRealtimeUpdate(true);
FSceneViewFamilyContext ViewFamily(ViewFamilyArguments);
// Calculate a view where the player is to update the streaming from the players start location
FVector ViewLocation;
FRotator ViewRotation;
FSceneView* SceneView = LocalPlayer->CalcSceneView(&ViewFamily, /*out*/ ViewLocation, /*out*/ ViewRotation, LocalPlayer->ViewportClient->Viewport);
FVector2D ExtentPoints[8];
SceneView->WorldToPixel(Origin + FVector(Extents.X, Extents.Y, Extents.Z), ExtentPoints[0]); //Right Top Front
SceneView->WorldToPixel(Origin + FVector(Extents.X, Extents.Y, -Extents.Z), ExtentPoints[1]); //Right Top Back
SceneView->WorldToPixel(Origin + FVector(Extents.X, -Extents.Y, Extents.Z), ExtentPoints[2]); //Right Bottom Front
SceneView->WorldToPixel(Origin + FVector(Extents.X, -Extents.Y, -Extents.Z), ExtentPoints[3]); //Right Bottom Back
SceneView->WorldToPixel(Origin + FVector(-Extents.X, Extents.Y, Extents.Z), ExtentPoints[4]); //Left Top Front
SceneView->WorldToPixel(Origin + FVector(-Extents.X, Extents.Y, -Extents.Z), ExtentPoints[5]); //Left Top Back
SceneView->WorldToPixel(Origin + FVector(-Extents.X, -Extents.Y, Extents.Z), ExtentPoints[6]); //Left Bottom Front
SceneView->WorldToPixel(Origin + FVector(-Extents.X, -Extents.Y, -Extents.Z), ExtentPoints[7]); //Left Bottom Back
FVector2D TopLeft = FVector2D(std::numeric_limits<float>::max(), std::numeric_limits<float>::max());
FVector2D BottomRight = FVector2D(std::numeric_limits<float>::min(), std::numeric_limits<float>::min());
for (auto Point : ExtentPoints)
{
if (Point.X < TopLeft.X)
TopLeft.X = Point.X;
else if (Point.X > BottomRight.X)
BottomRight.X = Point.X;
if (Point.Y < TopLeft.Y)
TopLeft.Y = Point.Y;
else if (Point.Y > BottomRight.Y)
BottomRight.Y = Point.Y;
}
MyRegion->bounds.left = TopLeft.X;
MyRegion->bounds.top = TopLeft.Y;
MyRegion->bounds.right = BottomRight.X;
MyRegion->bounds.bottom = BottomRight.Y;
}