/// <summary> /// Sets up a model instance from this template /// </summary> public override void SetupInstance( IPlanetEnvironmentModel model, ModelTemplateInstanceContext context ) { base.SetupInstance( model, context ); IPlanetHomogenousProceduralTerrainModel terrainModel = ( IPlanetHomogenousProceduralTerrainModel )model; terrainModel.HeightFunction = HeightFunction; terrainModel.GroundOffsetFunction = GroundOffsetFunction; }
/// <summary> /// Creates an instance of this template /// </summary> /// <param name="model">Planet model to create</param> /// <param name="context">Instancing context</param> public override void SetupInstance( IPlanetEnvironmentModel model, ModelTemplateInstanceContext context ) { Arguments.CheckNotNull( model, "planetModel" ); Arguments.CheckNotNull( context, "context" ); SetupCloudModel( ( IPlanetSimpleCloudModel )model, context ); }
/// <summary> /// Sets up a simple cloud model /// </summary> protected virtual void SetupCloudModel( IPlanetSimpleCloudModel model, ModelTemplateInstanceContext context ) { model.CloudLayerHeight = Range.Mid( CloudLayerHeightRange, context.Random.NextDouble( ) ); float min = Range.Mid( LowCoverageRange, ( float )context.Random.NextDouble( ) ); float max = Range.Mid( HighCoverageRange, ( float )context.Random.NextDouble( ) ); model.CloudCoverRange = new Range<float>( Utils.Min( min, max ), Utils.Max( min, max ) ); }
/// <summary> /// Builds a planet model /// </summary> protected override void BuildPlanetModel( IPlanetModel planetModel, IPlanetEnvironmentModelFactory modelFactory, ModelTemplateInstanceContext context ) { Units.Metres radius = Range.Mid( m_Radius, context.Random.NextDouble( ) ); ( ( ISpherePlanetModel )planetModel ).Radius = radius; base.BuildPlanetModel( planetModel, modelFactory, context ); }
/// <summary> /// Atmosphere model creation /// </summary> public override void SetupInstance( IPlanetEnvironmentModel model, ModelTemplateInstanceContext context ) { IPlanetAtmosphereScatteringModel atmosphereModel = ( IPlanetAtmosphereScatteringModel )model; double thicknessRatio = AtmosphereModel.AtmosphereThicknessMetres / AtmosphereModel.InnerRadiusMetres; atmosphereModel.Thickness = ( ( SpherePlanetModel )model.PlanetModel ).Radius * thicknessRatio; }
/// <summary> /// Atmosphere model creation /// </summary> public override void SetupInstance( IPlanetEnvironmentModel model, ModelTemplateInstanceContext context ) { IPlanetAtmosphereScatteringModel atmosphereModel = ( IPlanetAtmosphereScatteringModel )model; atmosphereModel.Thickness = Range.Mid( m_Thickness, ( float )context.Random.NextDouble( ) ); // IPlanetAtmosphereModel atmosphereModel = ( IPlanetAtmosphereModel )model; }
/// <summary> /// Sets up a ring model instance /// </summary> public override void SetupInstance( IPlanetEnvironmentModel model, ModelTemplateInstanceContext context ) { IPlanetRingModel ringModel = ( IPlanetRingModel )model; double width = RingWidth.Minimum + ( RingWidth.Maximum - RingWidth.Minimum ) * context.Random.NextDouble( ); ringModel.Width = new Units.Metres( width ); }
/// <summary> /// Creates an instance of this template /// </summary> public override void SetupInstance( IPlanetEnvironmentModel model, ModelTemplateInstanceContext context ) { ( ( IPlanetTerrainModel )model ).MaximumHeight = Range.Mid( MaximumHeightRange, context.Random.NextDouble( ) ); }