Пример #1
0
		NodeData(TSharedRef<STrackNode>& NodeRef, const FGeometry& Geometry)
			: Node(NodeRef)
		{
			// Separation of the nodes on the track
			const float NodeSeparation = 3.0f;

			Node->CacheTrackGeometry(Geometry);
			FVector2D Offset = Node->GetOffsetRelativeToParent(Geometry);
			FVector2D Size = Node->GetSizeRelativeToParent(Geometry);

			Offset.Y += (Geometry.GetLocalSize().Y - Size.Y) * 0.5f;

			ActualRect = FBox2D(Offset, Offset + Size);
			QueryRect = FBox2D(Offset - FVector2D(NodeSeparation, 0.0f), Offset + Size + FVector2D(NodeSeparation, 0.0f));
		}
//=============================================================================
void FSteamVRHMD::UpdateSplashScreen()
{
	FTexture2DRHIRef Texture = (bSplashShowMovie && SplashMovie.IsValid()) ? SplashMovie : SplashTexture;
	if (bSplashIsShown && Texture.IsValid())
	{
		FLayerDesc LayerDesc;
		LayerDesc.Flags = ELayerFlags::LAYER_FLAG_TEX_NO_ALPHA_CHANNEL;
		LayerDesc.PositionType = ELayerType::TrackerLocked;
		LayerDesc.Texture = Texture;
		LayerDesc.UVRect = FBox2D(SplashOffset, SplashScale);
		LayerDesc.Transform.SetTranslation(FVector(500.0f, 0.0f, 0.0f));
		LayerDesc.QuadSize = FVector2D(800.0f, 450.0f);

		if (SplashLayerHandle)
		{
			SetLayerDesc(SplashLayerHandle, LayerDesc);
		}
		else
		{
			SplashLayerHandle = CreateLayer(LayerDesc);
		}
	}
	else
	{
		if (SplashLayerHandle)
		{
			DestroyLayer(SplashLayerHandle);
			SplashLayerHandle = 0;
		}
	}
}
FTileAtlasPage::FTileAtlasPage()
{
	AtlasTexture = UTexture2DDynamic::Create(TileThumbnailAtlasSize, TileThumbnailAtlasSize, PF_B8G8R8A8, false);
	AtlasTexture->AddToRoot();

	static int32 NextPageUniqueID = 1;
	FName AtlasPageName = *FString::Printf(TEXT("WorldCompositionAtlasPage_%d"), NextPageUniqueID++);
	
	for (int32 i = 0; i < ARRAY_COUNT(AtlasSlots); ++i)
	{
		FTileAtlasSlot& Slot = AtlasSlots[i];
		
		Slot.bOccupied = false;
		Slot.SlotBrush = new FSlateDynamicImageBrush(
			AtlasTexture, 
			FVector2D(TileThumbnailAtlasSize, TileThumbnailAtlasSize),
			AtlasPageName
			);

		int32 SlotOffsetX = i % TileThumbnailAtlasDim;
		int32 SlotOffsetY = i / TileThumbnailAtlasDim;
		FVector2D StartUV = FVector2D(SlotOffsetX, SlotOffsetY)/TileThumbnailAtlasDim;
		FVector2D SizeUV = FVector2D(1.0f, 1.0f)/TileThumbnailAtlasDim;

		Slot.SlotBrush->SetUVRegion(FBox2D(StartUV, StartUV+SizeUV));
	}
}
Пример #4
0
FBox2D FRect2D::GetBoundingBox()
{
    FVector2D Min = Centre,
              Max = Centre;
    FVector2D PosExtentX = GetExtentX();
    FVector2D PosExtentY = GetExtentY();
    if (PosExtentX.X < 0) PosExtentX.X *= -1;
    if (PosExtentX.Y < 0) PosExtentX.Y *= -1;
    if (PosExtentY.X < 0) PosExtentY.X *= -1;
    if (PosExtentY.Y < 0) PosExtentY.Y *= -1;
    Max += (PosExtentX + PosExtentY);
    Min -= (PosExtentX + PosExtentY);
    return FBox2D(Min, Max);
}
FProceduralFoliageBroadphase::FProceduralFoliageBroadphase(float TileSize, float MinimumQuadTreeSize)
	: QuadTree(FBox2D(FVector2D(-TileSize * 2.f, -TileSize * 2.f), FVector2D(TileSize * 2.f, TileSize * 2.f)), MinimumQuadTreeSize)
{
}
FProceduralFoliageBroadphase::FProceduralFoliageBroadphase(const FProceduralFoliageBroadphase& OtherBroadphase)
: QuadTree(FBox2D(FVector2D(0, 0), FVector2D(0, 0)))
{
	OtherBroadphase.QuadTree.Duplicate(QuadTree);
}