float AVaOceanStateActorSimple::GetOceanLevelAtLocation(FVector& Location) const { // Check that we've set a texture if (!OceanHeightMap) { return GetGlobalOceanLevel() + WaterHeight; } #if WITH_EDITORONLY_DATA check(OceanHeightMap->Source.IsValid()); // Check we have a raw data loaded if (!bRawDataReady) { // UE_LOG(LogVaOcean, Warning, TEXT("Can't load raw data of ocean heightmap!")); return 0.0f; } // // SimpleOcean shader algorythm // // World UV location float WorldUVx = Location.X / WorldPositionDivider / WaveUVDivider; float WorldUVy = Location.Y / WorldPositionDivider / WaveUVDivider; // Apply panner WorldUVx += WaveHeightPannerX * WaveHeightPannerTime; WorldUVy += WaveHeightPannerY * WaveHeightPannerTime; // Get heightmap color const FLinearColor PixelColor = FLinearColor(GetHeighMapPixelColor(WorldUVx, WorldUVy)); // Calculate wave height float OceanLevel = PixelColor.A * WaveHeight - WaterHeight; return OceanLevel + GlobalOceanLevel; #else return GetGlobalOceanLevel() + WaterHeight; #endif }
float AVaOceanStateActor::GetOceanLevelAtLocation(FVector& Location) const { // @TODO Get altitute from ocean simulation component return GetGlobalOceanLevel(); }