Jump to content

[1.8.1-1] [PLEASE FORK ME] Kopernicus & KittopiaTech


Thomas P.

Recommended Posts

1 hour ago, Solar Ranger said:

Just to clarify. To work it out i would do r to the power of negative 4?

@Sigma88

no, KSP uses the power of negative 4

to go back from the intended result to what you feed KSP you need to use the reverse operation

which is power of negative 0.25

Link to comment
Share on other sites

Heya,

i released two updates today. Why two you might ask? Well, let me explain it:

Update Nr. 1 is called 1.3.0-2. It contains a lot of wrappers, that are compensating the changes that were needed to use planet packs on 1.3.0-1 (because of the updated libnoise version). The new values still work, so packs that already updated shouldn't have any problems.

Update Nr. 2 is called 1.2.2-7, and it is basically a backport of all changes I made to KSP 1.2.2. The reason is that I made some critical fixes, and I'd like to provide theese fixes on 1.2.2 too. Especially since I've seen some people who want to stay on 1.2.2 :D

Both versions are compatible, but 1.2.2-7 misses support for displayName. Both are available from Github, but until I find the time to mess with the configs, 1.2.2-7 won't be available on CKAN.

Link to comment
Share on other sites

@Thomas P. Thank you so much for reverting the PQS stuff back! I was pulling my hair out trying to regain the level of detail i had in 1.2.2.

When you say clamp on the octaves, you mean that even if i have it set to say 3000, it automatically clamps it to 30? If that's the case I still have a ton of tweaking to do to regain that detail. Its all good though

Edited by Galileo
Link to comment
Share on other sites

ok so my bodies are a lot more flat than they were in 1.2.2. Its not a big deal and i can edit each body again. I guess im confused about what this clamp thing does, because something seems to be limiting the effects of the PQSMods i implemented in 1.2.2.

Edited by Galileo
Link to comment
Share on other sites

Just now, Galileo said:

ok so my bodies are a lot more flat than they were in 1.2.2. Its not a big deal and i can edit each body again. I guess im confused about what this clamp thing does, because something seems to be limiting the effects of the PQSMods i implemented in 1.2.2.

It is still a different version of the library, so that might be connected.

Link to comment
Share on other sites

12 hours ago, Solar Ranger said:

@Sigma88 cfg:

  Reveal hidden contents

@Kopernicus:AFTER[RIO]
{
    Body
    {
        name = Reda
        cacheFile = RIO/Cache/Reda.bin
        Template
        {
            name = Ike
            removeAllPQSMods = true
        }
        Properties
        {
            description = This planet appears to be almost completely red!
            radius = 550000
            geeASL = 0.82344
            rotates = true
            tidallyLocked = false
            rotationPeriod = 40000
            isHomeWorld = false
            displayName = Reda
            useTheInName = false
            albedo = 0.25
            timewarpAltitudeLimits = 0 30000 30000 60000 100000 300000 600000 800000
            ScienceValues
            {
                landedDataValue = 6
                flyingLowDataValue = 5.5
                flyingHighDataValue = 5
                inSpaceLowDataValue = 4.5
                inSpaceHighDataValue = 4
                flyingAltitudeThreshold = 30000
                spaceAltitudeThreshold = 250000
                recoveryValue = 1.3
            }
            biomeMap = RIO/Kopernicus Files/Kerbol System/Reda/PluginData/Reda_Biome.png
            Biomes
            {
                Biome
                {
                    name = Redanian Sea
                    color = 1,0,0,1
                    value = 1
                }
                Biome
                {
                    name = MainLand
                    color = 0,1,0,1
                    value = 1
                }
                Biome
                {
                    name = Islands
                    color = 0,0,1,1
                    value = 1
                }
            }
        }
        Orbit
        {
            referenceBody = Kerbol
            semiMajorAxis = 16000000000
            inclination = 13
            eccentricty = 0.15
            longitudeOfAscendingNode = 34
            argumentOfPeriapsis = 0
            meanAnomalyAtEpoch = 0
            epoch = 0
            color = 0.9,0.1,0.01,1
        }
        PQS
        {
            Mods
            {
                VertexCanyons
                {
                    noiseSeed = 2560
                    noiseDeformity = 20
                    noiseFrequency = 8
                    noisePersistence = 1
                    noiseLacunarity = 3
                    noiseOctaves = 0
                    noiseType = Perlin
                    noiseMode = High
                    noiseDisplacement = 0
                    noiseEnableDistance = True
                    canyonSeed = 4
                    canyonThreshold = 9
                    canyonOctaves = 13
                    canyonPersistence = 0.2
                    canyonFrequency = 2
                    canyonSize = 2
                    addCanyonDepth = -450
                    multiplyCanyonBy = 1
                    addColor = False
                    canyonColor = 0.899999976,0.970786512,0.100000001,1
                    colorBlend = 1
                    order = 4
                    enabled = True
                    index = 0
                }
                VertexPlanet
                {
                    seed = 583734
                    deformity = 5000
                    colorDeformity = 6000 
                    oceanLevel = 0 
                    oceanStep = 0 
                    oceanDepth = 0 
                    oceanSnap = False
                    terrainSmoothing = 0.1 
                    terrainShapeStart = 2 
                    terrainShapeEnd = -2
                    terrainRidgesMin = 0.1 
                    terrainRidgesMax = 2
                    buildHeightColors = False
                    terrainRidgeBalance = 0.4
                    enabled = true
                    order = 3
                    ContinentalSimplex //large noise values for continents
                    {
                        deformity = 3
                        octaves = 10
                        persistance = 0.400000005960464
                        frequency = 1.8
                        Noise
                        {
                            octaves = 8
                            persistence = 0.43
                            frequency = 1.2
                        }
                    }
                    RuggednessSimplex //Adjusts the ruggedness of the edges of continents
                    {
                        seed = 487
                        deformity = 1
                        octaves = 12
                        persistance = 0.7
                        frequency = 0.6
                        Noise
                        {
                            octaves = 4
                            persistence = 0.5
                            frequency = 0.499
                        }
                    }
                    SharpnessSimplexMap //Small hills in terrain
                    {
                        seed = 5687
                        deformity = 65
                        octaves = 6
                        persistance = 0.5
                        frequency = 1.5
                        Noise
                        {
                            octaves = 4
                            persistence = 0.550000011920929
                            frequency = 1.5
                        }
                    }
                    SharpnessNoise //Small detail such as bumps
                    {
                        seed = 543613
                        deformity = 0.00100000004749745
                        octaves = 4
                        persistance = 0.4
                        frequency = 0.5
                        Noise
                        {
                            Frequency = 0.5
                            Lacunarity = 0.5
                            Quality = High
                            OctaveCount = 8
                            Seed = 46572
                        }
                    }
                    TerrainTypeSimplex //I usually ignore this
                    {
                        deformity = 1
                        octaves = 8
                        persistance = 0.72
                        frequency = 7
                        Noise
                        {
                            octaves = 14
                            persistence = 0.6
                            frequency = 4
                        }
                    }
                    LandClasses //Draws colours for the land just like HeightColorMap 
                    {
                        Class
                        {
                            startHeight = 0
                            endHeight = 0.2
                            fractalDelta = 0.00100000004749745
                            name = AbyPl
                            fractalStart = 0
                            fractalEnd = 0.05
                            baseColor = 0.950642109,0.0872043967,0.204350993,1
                            colorNoise = 0.492314488,0.776119411,0.664091229,1
                            colorNoiseAmount = 0.200000002980232
                            lerpToNext = True
                            
                            SimplexNoiseMap
                            {
                                deformity = 1
                                octaves = 4
                                persistance = 0.600000023841858
                                frequency = 4
                                simplex
                                {
                                    octaves = 4
                                    persistence = 0.600000023841858
                                    frequency = 4
                                }
                            }
                        }
                        Class
                        {
                            startHeight = 0.2
                            endHeight = 0.4
                            fractalDelta = 0.448999988031574
                            name = Beach
                            fractalStart = 0.05
                            fractalEnd = 0.45
                            baseColor = 0.855866194,0.388478905,0.196781203,1
                            colorNoise = 0.332423687,0.350746304,0.333642989,1
                            colorNoiseAmount = 0.200000002980232
                            lerpToNext = True
                            SimplexNoiseMap
                            {
                                deformity = 1
                                octaves = 4
                                persistance = 0.600000023841858
                                frequency = 4
                                simplex
                                {
                                    octaves = 4
                                    persistence = 0.600000023841858
                                    frequency = 4
                                }
                            }
                        }
                        Class
                        {
                            startHeight = 0.4
                            endHeight = 0.75
                            fractalDelta = 0.449999988079071
                            name = Grass
                            fractalStart = 0.45
                            fractalEnd = 0.9
                            baseColor = 0.587308884,0,0,1
                            colorNoise = 0.5,0.5,0.425373107,1
                            colorNoiseAmount = 0.300000011920929
                            lerpToNext = True
                            SimplexNoiseMap
                            {
                                deformity = 1
                                octaves = 4
                                persistance = 0.600000023841858
                                frequency = 3
                                simplex
                                {
                                    octaves = 4
                                    persistence = 0.600000023841858
                                    frequency = 3
                                }
                            }
                        }
                        Class
                        {
                            startHeight = 0.75
                            endHeight = 2
                            fractalDelta = 1.10000002384186
                            name = Snow
                            fractalStart = 0.9
                            fractalEnd = 2
                            baseColor = 0.666342914,0,0.0426630713,1
                            colorNoise = 0.430215597,0.432835788,0.339162409,1
                            colorNoiseAmount = 0.400000005960464
                            lerpToNext = False
                            SimplexNoiseMap
                            {
                                deformity = 1
                                octaves = 4
                                persistance = 0.600000023841858
                                frequency = 2
                                simplex
                                {
                                    octaves = 4
                                    persistence = 0.600000023841858
                                    frequency = 2
                                }
                            }
                        }
                    }
                }
                VertexHeightOffset
                {
                    offset = -200
                    enabled = true
                    order = 999
                }
            }
        }
        Ocean
        {
            maxQuadLengthsPerFrame = 0.03
            minLevel = 2
            maxLevel = 12
            minDetailDistance = 8
            oceanColor = 0.82,0.1,0.12,1
            Material
            {
                colorFromSpace = 0.82,0.1,0.12,1
                color = 0.82,0.1,0.12,1
            }
            FallBackMaterial
            {
                colorFromSpace = 0.82,0.1,0.12,1
                color = 0.82,0.1,0.12,1
            }
            Mods
            {
                AerialPerspectiveMaterial
                {
                    globalDensity = -0.00001
                    heightFalloff = 6.75
                    atmosphereDepth = 50000
                    DEBUG_SetEveryFrame = true
                    cameraAlt = 0
                    oceanDepth = 50
                    cameraAtmosAlt = 0
                    heightDensAtViewer = 0
                    enabled = true
                    order = 200
                }
                OceanFX
                {
                    Watermain
                    {
                        waterTex-0 = BUILTIN/sea-water1
                        waterTex-1 = BUILTIN/sea-water2
                        waterTex-2 = BUILTIN/sea-water3
                        waterTex-3 = BUILTIN/sea-water4
                        waterTex-4 = BUILTIN/sea-water5
                        waterTex-5 = BUILTIN/sea-water6
                        waterTex-6 = BUILTIN/sea-water7
                        waterTex-7 = BUILTIN/sea-water8
                    }
                    framesPerSecond = 1
                    spaceAltitude = 150000
                    blendA = 0
                    blendB = 0
                    texBlend = 0
                    angle = 0
                    specColor = 0.000,0.000,0.000,0.000
                    oceanOpacity = 0
                    spaceSurfaceBlend = 0
                    enabled = true
                    order = 200
                }
            }
            Fog
            {
                fogColorEnd = 0.82,0.1,0.12,1
                fogColorStart = 0.82,0.1,0.12,1
                skyColorOpacityBase = 0.7
            }
        }
        Atmosphere
        {
            ambientColor = 0.16,0.12,0.12,1
            lightColor = 0.58,0.13,0.13,0.5
            enabled = true
            oxygen = true
            altitude = 50000
            pressureCurve
            {
                key =    0    88.15275    -1.48299852E-02    -1.48299852E-02
                key =    2500    51.077787    -1.20695622E-02    -1.20695622E-02
                key =    5000    27.804939    -7.3868568E-03    -7.3868568E-03
                key =    7500    14.143503    -4.1375112E-03    -4.1375112E-03
                key =    10000    7.117383    -2.1110202E-03    -2.1110202E-03
                key =    12500    3.588402    -1.0569456E-03    -1.0569456E-03
                key =    15000    1.832655    -5.289078E-04    -5.289078E-04
                key =    17500    0.943863    -2.667072E-04    -2.667072E-04
                key =    20000    0.499119    -1.347456E-04    -1.347456E-04
                key =    22500    0.270135    -6.94608E-05    -6.94608E-05
                key =    25000    0.151815    -3.67662E-05    -3.67662E-05
                key =    27500    0.086304    -2.02014E-05    -2.02014E-05
                key =    30000    0.050808    -1.1484E-05    -1.1484E-05
                key =    32500    0.028884    -6.9426E-06    -6.9426E-06
                key =    35000    0.016095    -4.0542E-06    -4.0542E-06
                key =    37500    0.008613    -2.3142E-06    -2.3142E-06
                key =    40000    0.004524    -1.2702E-06    -1.2702E-06
                key =    42500    0.002262    -6.786E-07    -6.786E-07
                key =    45000    0.001131    -3.828E-07    -3.828E-07
                key =    47500    0.000348    -2.262E-07    -2.262E-07
                key =    50000    0    -1.392E-07    -1.392E-07
            }
            pressureCurveIsNormalized = false
            temperatureSeaLevel = 300
            temperatureCurve
            {
                key =    0    300    -0.012833334    -0.012833334
                key =    6000    221.2007505    -0.0018177176    -0.0018121144
                key =    10500    221.2007505    0.0018121144    0.0018121144
                key =    15500    277.4859287    0.0009904288    0.0009904288
                key =    28000    277.4859287    -0.0013658566    -0.0013658566
                key =    40000    191.523111    -0.0018177176    -0.0018177176
                key =    45000    191.523111    0.000947549    0.000947549
                key =    50000    235.5278867    0.0013892082    0.0013892082
                key =    75000    0    -0.0008992182    -0.0008992182
            }
            temperatureSunMultCurve
            {
                key =    0    1    0    0
                key =    3846.153846    0.5    -0.00012    -0.0002052898
                key =    4238.088462    0    0    0
                key =    7716.530767    0    0    0
                key =    18211.26923    0.2    0    0
                key =    27615.44615    0.2    0    0
                key =    35111.3846    0    0    0
                key =    50000    0.4    0    0
            }
        }
        Rings
        {
            Ring
            {
                angle = 0                
                innerRadius = 1250
                outerRadius = 2340
                texture = RIO/Kopernicus Files/Kerbol System/Reda/PluginData/Ring.png
                color = 1,1,1,1
                lockRotation = true
                unlit = true
            }
        }
        ScaledVersion
        {
            type = Atmospheric
            fadeStart = 0
            fadeEnd = 0
            Material
            {
                texture = RIO/Kopernicus Files/Kerbol System/Reda/PluginData/Reda_Color.png
                normals = RIO/Kopernicus Files/Kerbol System/Reda/PluginData/Reda_Normal.png
            }
        }
    }
}

 


You don't have an AtmosphereFromGround node.  You need something that looks like this, which are the settings for Kerbin:

		Atmosphere
		{
			AtmosphereFromGround
			{
				innerRadius = 599625
				outerRadius = 615000
				waveLength = 0.65,0.57,0.475,0.5
			}
		}

The AtmosphereFromGroundNode has a bunch of other settings too, but I don't know what they do.  I generally just mess with the three shown above.

The inner radius is generally just a little smaller than the planet's radius, and the outer radius is generally somewhere around 3% larger than the planet's radius.  It can vary though.  You'll just have to play around with the settings until you get something that looks good.  If you choose wrong you could end up with a very thin atmosphere, or one that has a sharp edged boundary with space.  It's just trial and error.

To select the color, use KittopiaTech.  Choose your body, and then select 'Atmosphere Editor'.  Find waveLength and click the 'Edit Color' button.  Move the sliders back and forth until you find the color you want.
 

Edited by OhioBob
Link to comment
Share on other sites

9 minutes ago, OhioBob said:

The AtmosphereFromGroundNode has a bunch of other settings too, but I don't know what they do.  I generally just mess with the three shown above.

The inner radius is generally just a little smaller than the planet's radius, and the outer radius is generally somewhere around 3% larger than the planet's radius.  It can vary though.  You'll just have to play around with the settings until you get something that looks good.  If you choose wrong you could end up with a very thin atmosphere, or one that has a sharp edged boundary with space.  It's just trial and error.

To select the color, use KittopiaTech.  Choose your body, and then select 'Atmosphere Editor'.  Find waveLength and click the 'Edit Color' button.  Move the sliders back and forth until you find the color you want.

AFG/wavelength and Atmosphere/lightcolor are the same thing

I don't remember right now, but I don't think the AFG node is mandatory, I think it gets added by default and can turned off using a bool (useAFG or something along the lines of that)

Link to comment
Share on other sites

2 minutes ago, Sigma88 said:

AFG/wavelength and Atmosphere/lightcolor are the same thing

I don't remember right now, but I don't think the AFG node is mandatory, I think it gets added by default and can turned off using a bool (useAFG or something along the lines of that)

I've always had more luck getting it to look the way I want using AtmosphereFromGround.

Link to comment
Share on other sites

1 minute ago, OhioBob said:

I've always had more luck getting it to look the way I want using AtmosphereFromGround.

it's not that those two parameters are very similar.

kopernicus stores the info from lightcolor into wavelength

(see here)

so there's literally no difference between the two

 

looking at the code now I noticed that when using lightcolor it will create an AFG if it is missing, so adding the AFG should really not be required. unless both inner and outer radius default to zero

 

inner and outer radius are just there to define from where to where the gradient goes. all stock KSP bodies have the same, which is

from 0.975 to 1.025 planet radii

 

raising the outerradius further than that can cause serious problems if you don't also change the the transformscale for the AFG

actually, the outerradius used by stock is already too high, leading to that weird sky transition you can sometimes see where it goes directly from blue to black without fading (see here)

Link to comment
Share on other sites

30 minutes ago, Sigma88 said:

inner and outer radius are just there to define from where to where the gradient goes. all stock KSP bodies have the same, which is

from 0.975 to 1.025 planet radii

raising the outerradius further than that can cause serious problems if you don't also change the the transformscale for the AFG

actually, the outerradius used by stock is already too high, leading to that weird sky transition you can sometimes see where it goes directly from blue to black without fading (see here)

I tweaked those default values quite a bit for GPP and I didn't notice any problem, but maybe I just didn't investigate enough.  Using a one size fits all approach I thought made the atmospheres of some planets look pretty crappy from low orbit.  I customized the radii settings for each body.

By the way, the AFG node has a waveLength color and an invWaveLength, where invWaveLength = waveLength^-4.  But I don't see were either of those relate to normal RGBA color.  If I want my sky to be, say, 128,179,230 (0.5,0.7,0.9), I still haven't figured how to convert that to a wavelength color.
 

Edited by OhioBob
Link to comment
Share on other sites

1 minute ago, OhioBob said:

I tweaked those default values quite a bit for GPP and I didn't notice any problem, but maybe I just didn't investigate enough.  Using a one size fits all approach I thought made the atmospheres of some planets look pretty crappy from low orbit.

By the way, the AFG node has a waveLength color and an invWaveLength, where invWaveLength = WaveLength^-4.  But I don't see were either of those relate to normal RGBA color.  If I want my sky to be, say, 128,179,230 (0.5,0.7,0.9), I still haven't figured how to convert that to a wavelength color. 

wavelength (or lightcolor) = 0.5^-0.25, 0.7^-0.25, 0.9^-0.25,1

that's the closest you can get

or, just use kittopia to edit them live until you are satisfied

Link to comment
Share on other sites

14 minutes ago, Sigma88 said:

wavelength (or lightcolor) = 0.5^-0.25, 0.7^-0.25, 0.9^-0.25,1

I don't think that works.  waveLength = invWaveLength^-0.25, or invWaveLength = wavelength^-4.  But in neither case do the numbers seem to correspond to RGB colors.

For instance, for Kebin we have,

   waveLength = 0.65,0.57,0.475,0.5
   invWaveLength = 5.602046,9.473285,19.6438,0.5

but where is either of those blue?

(edit)  Obviously the invWaveLength is heavy on the blue end, but how do we convert between a 256-color palette and invWaveLength?
 

Edited by OhioBob
Link to comment
Share on other sites

1 minute ago, OhioBob said:

I don't think that works.  waveLength = invWaveLength^-0.25, or invWaveLength = wavelength^-4.  But in neither case do the numbers seem to correspond to RGB colors.

For instance, for Kebin we have,

   waveLength = 0.65,0.57,0.475,0.5
   invWaveLength = 5.602046,9.473285,19.6438,0.5

but where is either of those blue?

 

RGB, you have low red, middle to high green, very high blue

that means it's probably midway between cyan and blue, a very light blue, kinda like the color of the sky :D

Link to comment
Share on other sites

If those three colors red, green, blue in order, the obviously the invWaveLength is heavy in blue and low in red.  That part I see.  But is there some way to convert between that and a 256-color palette?

Link to comment
Share on other sites

Just now, OhioBob said:

If those three colors red, green, blue in order, the obviously the invWaveLength is heavy in blue and low in red.  That part I see.  But is there some way to convert between that and a 256-color palette?

I think kittopia tech does that, when you change the numbers you get a preview of what the color is

 

btw, this is the blue to black effect I was talking about

Screenshot%202017-05-31%2000.29.59.png?dl=1

it's not as clear on Gael as it is on kerbin but you can still get it.

 

you'll find out that the effect disappears when you install SD (because I wrote SD so that it tweaks the planets so they don't do that)

Link to comment
Share on other sites

1 minute ago, Sigma88 said:

btw, this is the blue to black effect I was talking about...

OK, I know what you mean now.  That's what I was talking about when I wrote,

Quote

If you choose wrong you could end up with a very thin atmosphere, or one that has a sharp edged boundary with space.

 When I adjusted the outerRadius settings for GPP, I tried to eliminate or at least minimize the effect.  I found that it varied quite a bit from planet to planet.

Link to comment
Share on other sites

Just now, OhioBob said:

OK, I know what you mean now.  That's what I was talking about when I wrote,

 When I adjusted the outerRadius settings for GPP, I tried to eliminate or at least minimize the effect.  I found that it varied quite a bit from planet to planet.

there are two things that come into play here

1- transformscale, the stock one is too low (  transformScale = 1.025,1.025,1.025  )

it is calculated using the outerradius, what I do with SD is double the distance from the radius,

the radius is "1" and the outerRadius is "1.025" so the distance is "0.025", double that = "0.05" so I set

transformScale = 1.05, 1.05, 1.05

 

2- the color, since the shader of the sky follows a fixed gradient, and you can only set 1 color, you need to pay attention to not choose one that is too bright

if you do, the relationship transformScale / outerRadius won't necessarily be the same I described above.

but yes, you will find that most of the times the color tend to stay in a certain range since the shader becomes crap otherwise

which means the doubling is still a pretty good rule of thumb

 

I checked and kittopia will not give you a preview of the color, but if you edit the wavelength while on the planet the changes are showed live

Link to comment
Share on other sites

2 minutes ago, Sigma88 said:

there are two things that come into play here

1- transformscale, the stock one is too low (  transformScale = 1.025,1.025,1.025  )

it is calculated using the outerradius, what I do with SD is double the distance from the radius,

the radius is "1" and the outerRadius is "1.025" so the distance is "0.025", double that = "0.05" so I set

transformScale = 1.05, 1.05, 1.05

 

2- the color, since the shader of the sky follows a fixed gradient, and you can only set 1 color, you need to pay attention to not choose one that is too bright

if you do, the relationship transformScale / outerRadius won't necessarily be the same I described above.

but yes, you will find that most of the times the color tend to stay in a certain range since the shader becomes crap otherwise

which means the doubling is still a pretty good rule of thumb

 

I checked and kittopia will not give you a preview of the color, but if you edit the wavelength while on the planet the changes are showed live

That part about transformscale is pretty useful.  I'm making a note of it for future reference.  Thanks.

Yeah, I always use the preview in Kittopia to figure out what wavelength color (or lightcolor) I want to use.  I'd like to be able to take 256 color RGB and convert straight to wavelength, but I'm still looking for an equation to do that.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...