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