Пример #1
0
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
}
Пример #2
0
float AVaOceanStateActor::GetOceanLevelAtLocation(FVector& Location) const
{
	// @TODO Get altitute from ocean simulation component

	return GetGlobalOceanLevel();
}