namespace Sandbox;
///
/// Internal component for storing the baked fog texture
/// We don't need to expose the volumetric fog controller like we did previously with entities,
/// But we need to be fetch the baked fog texture from the map file
///
[Title( "VolumetricFogController" )]
[Hide]
public class VolumetricFogController : Component, Component.ExecuteInEditor
{
public Texture BakedFogTexture { get; set; }
public float GlobalScale { get; set; } = 1.0f;
internal static void InitializeFromLegacy( GameObject go, Sandbox.MapLoader.ObjectEntry kv )
{
// Only one VolumetricFogController per scene
foreach ( var item in go.Scene.GetAllComponents() )
item.Destroy();
var component = go.Components.Create();
component.BakedFogTexture = Texture.Load( kv.GetValue( "fogirradiancevolume", "" ) );
var fogStrength = kv.GetValue( "FogStrength", 1.0f );
var fogScale = kv.GetValue( "IndirectStrength", 1.0f );
component.GlobalScale = fogStrength * fogScale;
}
}