Jump to content

Aerodynamic effects?


Guest

Recommended Posts

Are there any mods that add aerodynamic effects to KSP? As in wingtip vortices, wing vapor/condensation?

Also, how easy would it be to code the behavior? It would produce x amount of smoke based on AoA and a user-customizable multiplier. It would also never occur above altitude or below altitude b.

Edited by Guest
Link to comment
Share on other sites

You could always look at Physics.cfg  other then that if you code you might check out ReentryParticleEffect plugin other then that add a transformer to what ever part you want and use smokescreen plugin then write a cfg for how you want the FX

Spoiler

aeroFXStartThermalFX = 2.5 // Speed in mach when aeroFX starts changing from white to orange
aeroFXFullThermalFX = 3.75 // Speed in mach when aeroFX is fully orange
aeroFXVelocityExponent = 3.5 // Exponent to velocity used when calculating aeroFX strength
aeroFXDensityScalar1 = 0.0091 // The density term used for calculating aeroFX strength is (s1 * density^e1 + s2 * density^e2), this is s1
aeroFXDensityExponent1 = 0.5 // This is e1
aeroFXDensityScalar2 = 0.09 // This is s2
aeroFXDensityExponent2 = 2 // This is e2
aeroFXMachFXFadeStart = 0.25 // Density at which condensation FX (white) starts to fade out; plasma FX never does
aeroFXMachFXFadeEnd = 0.0875 // Density at which condensation FX (white) has fully faded out
aeroFXDensityFadeStart = 0.0015 // Density at which aeroFX starts fading out faster--should be near the edge of the atmosphere. This creates a smooth transition rather than insta-on at high speeds.
blackBodyRadiationMin = 798 // Temperature at which a part's thermal radiation becomes visibile
blackBodyRadiationMax = 7000 // Temperature at which the black body radiation gradient ends
blackBodyRadiationAlphaMult = 0.75 // Multiplier to the opacity of the black body radiation glow
temperatureGaugeThreshold = 0.625 // When skin temp / max skin temp greater than this, gauges become visible
temperatureGaugeHighlightThreshold = 0.75 // When skin temp / max skin temp greater than this, edge highlighting becomes visible
thermalIntegrationMinStep = 0.014 // Minimum elapsed time before a thermal integration pass is run.
thermalIntegrationMaxTimeOnePass = 0.07 // Maximum time in seconds for which no more than one RK2 pass is run no matter the num-passes formula result.
thermalIntegrationAlwaysRK2 = False // Do we always use RK2 even at 1x warp? Else we use RK1 at 1x warp.
occlusionMinStep = 0.039 // Minimum elapsed time before an occlusion update pass is run.
thermalIntegrationHighMaxPasses = 10 // Maximum number of thermal integration passes (Heun/RK2) when not analytic
thermalIntegrationHighMinPasses = 1 // Minimum number of thermal integration passes (Heun/RK2) when not analytic
thermalConvergenceFactor = 0.63 // Convergence factor to make Euler integration converge for the thermo systems
standardSpecificHeatCapacity = 800 // Standard mass specific heat capacity for parts, in kJ / tonne-K
internalHeatProductionFactor = 0.025 // Multiplier to engine heat production
spaceTemperature = 4 // Temperature of the cosmic background radiation
solarLuminosityAtHome = 1360 // Solar flux in W/m^2 at the orbital altitude of the homeworld
solarInsolationAtHome = 0.15 // Portion of solar flux lost when transitting through an atmosphere ending at the homeworld's sea level density, with the sun assumed at zenith and the observer on the equator
radiationFactor = 1 // Multiplier to radiative influx and outflux
convectionFactorSplashed = 5000 // Newtonian convection factor to use when splashed
fullConvectionAreaMin = 0.2 // The minimum value of the interpolation between cross sectional area and full wetted area for convection
fullToCrossSectionLerpStart = 0.8 // At this mach number, convection area starts interpolating between the full wetted area and the cross-sectional area
fullToCrossSectionLerpEnd = 1.5 // By this mach number, the interpolation will have progressed to the minimum weight for full area specified above
newtonianTemperatureFactor = 1 // Multiplier to speed in m/s used when calculating low-mach shock temperature
newtonianConvectionFactorBase = 8.14 // The base convection factor for computing the low-mach convective coefficient, before forced convection bonus is applied
newtonianConvectionFactorTotal = 4 // The total multiplier for computing the low-mach convective coefficient
newtonianDensityExponent = 0.5 // The exponent to density used when calculating the low-mach convective coefficient
newtonianVelocityExponent = 1 // The exponent to velocity used when calculating the low-mach convective coefficient
newtonianMachTempLerpStartMach = 2 // The mach number at which to begin lerping between thew low-mach shock temperature and convective coefficient and the high-mach ones
newtonianMachTempLerpEndMach = 5 // The mach number by which only high-mach shock temperature and convective coefficient are used
newtonianMachTempLerpExponent = 3 // The exponent to the lerp value, powers >1 imply slow start fast finish, <1 implies fast start slow finish
machConvectionFactor = 7 // The scalar for computing the high-mach convective coefficient
machConvectionDensityExponent = 0.5 // The density exponent used for the high mach convective coefficient
machConvectionVelocityExponent = 3 // The velocity exponent used for the high mach convective coefficient
machTemperatureScalar = 21 // The scalar used when computing the high-mach shock temperature (= this * (speed in m/s)^exponent)
machTemperatureVelocityExponent = 0.75 // The exponent to speed (in m/s) used when calculating the high-mach shock temperature
turbulentConvectionStart = 100 // The pseudo-Reynolds number (calculated as velocity * density), multiplied by the part's drag coefficient in that facing (Cd) at which to begin lerping between 1.0 and the turbulent convection multiplier below (used as a multiplier to convective coefficient)
turbulentConvectionEnd = 200 // The pseudo-Reynolds number multiplied by Cd at which the multiplier becomes fully turbulentConvectionMult
turbulentConvectionMult = 50 // The multiplier to the convective coefficient when in turbulent flow
conductionFactor = 120 // Multiplier to all conduction
skinSkinConductionFactor = 0.003 // Multiplier to skin-skin conduction, whether on the same part (exposed<->unexposed skin) or between parts' skins
skinInternalConductionFactor = 0.005 // Multiplier to skin<->internal conduction
shieldedConductionFactor = 0.01 // Multiplier to conduction when this part's shielded status does not match the connected part's
thermalMaxIntegrationWarp = 100 // Maximum warp at which to use thermo integration rather than analytic thermo
analyticLerpRateSkin = 0.003 // Lerp rate between existing and goal temperature for skin temperature
analyticLerpRateInternal = 0.001 // Lerp rate between existing and goal temperature for internal temperature
analyticConvectionSensitivityBase = 0.01 // Convection under analytic is handled as a lerp between analytic temp and ambient temp. The lerp = 1 / ((base + (area / thermal mass)) * final * the convective coefficient [see low-mach convection above]
analyticConvectionSensitivityFinal = 20 // See above
buoyancyScalar = 1.2 // Scalar to buoyancy force
buoyancyUseCoBOffset = True // Do we offset the place where the buoyant force is applied based on current lowest point of part?
buoyancyApplyForceOnDie = False // Do we, when we die, apply that frame's buoyant force to our parent part or failing that its children? Otherwise parts that die on splashdown do not slow the rest of the vessel
buoyancyForceOffsetLerp = 0.5 // The lerp factor between last frame's offset and this one
buoyancyWaterDragScalar = 4.5 // Initial drag scalar for floating parts. The scalar is this when a part first splashes down, then slowly lerps to the End value. When the part is < buoyancyWaterDragMinVel, or no part on the vessel is splashed down, it lerps back to this value
buoyancyWaterDragScalarEnd = 0.15 // The final scalar for drag for floating parts, see above
buoyancyWaterDragScalarLerp = 0.25 // The rate at which the drag scalar lerps between the two values, see above
buoyancyWaterDragScalarLerpDotMultBase = 2 // The base compoent when computing the lerp multiplier based on verticality of velocity
buoyancyWaterDragScalarLerpDotMult = 1.25 // The multiplier to the verticality dot which is subtracted from the base to compute the multiplier to lerp rate
buoyancyWaterLiftScalarEnd = 0.025 // Lift lerps like drag, but between 0 (when first splashed or velocity low) and this value
buoyancyWaterDragMinVel = 0.4 // The minimum velocity for drag to be enhanced (see Slow below), and multiplied by the below value for the lerping above.
buoyancyWaterDragMinVelMult = 4 // The multiplier for minimum velocity for drag to be lerping down, below this it lerps up again (and vice versa for lift)
buoyancyWaterDragMinVelMultCOBOff = 0 // The multiplier for minimum velocity for CoB lerping
buoyancyWaterDragPartVelGreaterVesselMult = 1.5 // The multiplier to vessel velocity when checking part velocity > this, to enable jumpiness damping
buoyancyWaterDragTimer = 3 // The time in seconds for which 'early' splashdown drag/lift is observed (i.e. stays high for high dot, starts low for low dot)
buoyancyWaterDragMultMinForMinDot = 0.05 // The minimum multiplier to maximum drag to clamp things to during the early splashdown (the remainder is lerped by dot)
buoyancyWaterAngularDragScalar = 0.001 // Scalar to angular drag for splashed parts
buoyancyAngularDragMinControlSqrMag = 0.03125 // Minimum square-magnitude of control actuation to disable extra damping angular drag
buoyancyWaterAngularDragSlow = 4 // Unity angular drag when part velocity < MinVel
buoyancyWaterDragSlow = 2 // Unity drag addition when part velocity < MinVel
buoyancyWaterDragExtraRBDragAboveDot = 0.5 // Extra RB drag is applied (dot - this), when dot is above this value
buoyancyScaleAboveDepth = 0.2 // An easing factor. Force of buoyancy ramps between 0 and its full value as the maximum depth below sea level of the part goes from 0 to this depth
buoyancyDefaultVolume = 1 // Default volume used when part has neither dragcube nor colliders
buoyancyMinCrashMult = 0.1 // The downwards component of velocity is used, not the whole velocity, when seeing if a part is destoryed when splashing down. However, that component will be clamped to no lower a portion of total velocity than this value
buoyancyCrashToleranceMult = 1.2 // Multiplier to crash tolerance used when checking if a part is destroyed on splashdown
buoyancyRange = 1000 // If altitude of a part is greater than this above sea level, no expensive buoyancy checks are run
buoyancyKerbals = 0.25 // Buoyancy multiplier for kerbals
buoyancyKerbalsRagdoll = 3 // Buoyancy multiplier for kerbals when ragdolling
cameraDepthToUnlock = 0 // Meters below sea level before camera rotation unlocks
jointBreakForceFactor = 50 // Joint break force factor
jointBreakTorqueFactor = 50 // Joint break torque factor
rigidJointBreakForceFactor = 1 // Joint break force factor
rigidJointBreakTorqueFactor = 1 // Joint break torque factor
maxAngularVelocity = 50 // Max angular velocity of objects in radians / sec
buildingImpactDamageMaxVelocityMult = 4 // Max velocity multiplier (impact vs whole part and vs whole vessel velocity) for an impact velocity. Note will be sqrt of this when Use Momentum is true.
buildingImpactDamageUseMomentum = False // By default impact damage uses kinetic energy. Set to true to use momentum (prior-to-1.1.1 behavior)
buildingEasingInvulnerableTime = 2 // Seconds buildings stay invulnerable for when the active vessel goes off rails, to protect against physics jerks
orbitDriftFramesToWait = 5 // Number of frames to wait once drift error threshold is met before drift compensation turns on
orbitDriftSqrThreshold = 1E-10 // Square of the magnitude of the position error vector to use as threshold for drift compensation. If the error in position between the current position and the calculated rails position is < this, then drift compensation will be engaged.
orbitDriftAltThreshold = 400000000 // Orbit radius threshold for drift compensation. If the orbital radius is less than this, then drift compensation will be engaged.
autoStrutTechRequired = generalConstruction // The technology required before autostruts become available (if they are on).
showRigidJointTweakable = Editor // Is the rigid joint tweakable displayed. Never, Editor or Always
stagingCooldownTimer = 0.5625 // The time in seconds after staging during which one cannot stage again.
kerbalEVADragCubeString = Default, 0.75,0.92,0.4, 0.75,0.92,0.4, 0.6,0.7,0.4, 0.6,0.97,0.7, 0.85,0.95,0.4, 0.85,0.95,0.4, 0,0,0 0.8,1.1,0.8 // The drag cube kerbals use
kerbalCrewMass = 0 // The mass of a kerbal when in a part (pod, lander can, etc). Independent of Kerbal EVA mass, not used on EVA.
kerbalGOffset = 900 // The offset to the G increment for kerbals
kerbalGPower = 4 // The exponent applied to the current G force
kerbalGDecayPower = 2 // The further exponent applied to the increment when it is negative
kerbalGClamp = 20 // G forces above this are clamped to this for kerbal Gs
kerbalGBraveMult = 1.5 // The multiplier to thresholds based on kerbal courage
kerbalGBadMult = 1.5 // The multiplier to thresholds based on kerbal badS
kerbalGThresholdWarn = 30000 // The threshold beyond which a warning is shown
kerbalGThresholdLOC = 60000 // The threshold beyond which the kerbal loses consciousness
kerbalGLOCBaseTime = 3 // The base time in seconds a kerbal loses consciousness
kerbalGLOCTimeMult = 0.0001 // Multiplier to the current G experienced increment applied to unconscious time
kerbalGLOCMaxTimeIncrement = 1.5 // Maximum time per second a kerbal's unconscious time can be incremented
kerbalGClampGExperienced = True // If true, g experienced will be clamped to the LOC threshold and time unconscious will build up. If false, it will not be clamped and time uncouncsious will be just how long the kerbal is above the warn threshold, so long-sustained high Gs will last longer
commNetQTimesVelForBlackoutMin = 500 // Minimum dynamic pressure * velocity for comms to start blacking out from plasma (if that option is enabled)
commNetQTimesVelForBlackoutMax = 2500 // Maximum dynamic pressure * velocity for comms to start blacking out from plasma (if that option is enabled)
commNetTempForBlackout = 1100 // Minimum shock temperature for comms to start blacking out from plasma (if that option is enabled)
commNetDensityForBlackout = 5.0000000000000002E-05 // Minimum density for comms to start blacking out from plasma (if that option is enabled)
commNetDotForBlackoutMin = -0.86599999999999999 // Minimum dot between velocity and link direction for comms to start blacking out from plasma (if that option is enabled)
commNetDotForBlackoutMax = -0.5 // Dot between velocity and link direction for full blackout multiplier
commNetBlackoutThreshold = 0.5 // Threshold blackout value below which comms are entirely blacked out (if that option is enabled). Value calculated as 1 - inverse lerp of QTimesVel * inverse lerp of dot
dragMultiplier = 8 // Global multiplier to drag
dragCubeMultiplier = 0.1 // Multiplier to drag from dragcubes
angularDragMultiplier = 2 // global multiplier to angular drag
liftMultiplier = 0.036 // Multiplier to lift from lifting/control surfaces
liftDragMultiplier = 0.015 // Multiplier to drag from lifting/control surfaces
bodyLiftMultiplier = 18 // Multiplier to lift from non-lifting/control-surface parts
DRAG_TIP // Multiplier to dragcube drag when the face points towards the velocity vector, x value is mach, y value is multiplier
{
 key = 0 1 0 0
 key = 0.85 1.19 0.6960422 0.6960422
 key = 1.1 2.83 0.730473 0.730473
 key = 5 4 0 0
}
DRAG_SURFACE // Multiplier to dragcube drag when the face points orthogonal to the velocity vector, x value is mach, y value is multiplier
{
 key = 0 0.02 0 0
 key = 0.85 0.02 0 0
 key = 0.9 0.0152439 -0.07942077 -0.07942077
 key = 1.1 0.0025 -0.005279571 -0.001936768
 key = 2 0.002083333 -2.314833E-05 -2.314833E-05
 key = 5 0.003333333 -0.000180556 -0.000180556
 key = 25 0.001428571 -7.14286E-05 0
}
DRAG_TAIL // Multiplier to dragcube drag when the face points away from the velocity vector, x value is mach, y value is multiplier
{
 key = 0 1 0 0
 key = 0.85 1 0 0
 key = 1.1 0.25 -0.02215106 -0.02487721
 key = 1.4 0.22 -0.03391732 -0.03391732
 key = 5 0.15 -0.001198566 -0.001198566
 key = 25 0.14 0 0
}
DRAG_MULTIPLIER // Overall multiplier to drag based on mach
{
 key = 0 0.5 0 0
 key = 0.85 0.5 0 0
 key = 1.1 1.3 0 -0.008100224
 key = 2 0.7 -0.1104858 -0.1104858
 key = 5 0.6 0 0
 key = 10 0.85 0.02198264 0.02198264
 key = 14 0.9 0.007694946 0.007694946
 key = 25 0.95 0 0
}
DRAG_CD // The final Cd of a given facing is the drag cube Cd evalauted on this curve
{
 key = 0.05 0.0025 0.15 0.15
 key = 0.4 0.15 0.3963967 0.3963967
 key = 0.7 0.35 0.9066986 0.9066986
 key = 0.75 0.45 3.213604 3.213604
 key = 0.8 0.66 3.49833 3.49833
 key = 0.85 0.8 2.212924 2.212924
 key = 0.9 0.89 1.1 1.1
 key = 1 1 1 1
}
DRAG_CD_POWER // The final Cd of a given facing is then raised to this power, indexed by mach number
{
 key = 0 1 0 0.00715953
 key = 0.85 1.25 0.7780356 0.7780356
 key = 1.1 2.5 0.2492796 0.2492796
 key = 5 3 0 0
}
DRAG_PSEUDOREYNOLDS // Converts a pseudo-Reynolds number (density * velocity) into a multiplier to drag coefficient
{
 key = 0 4 0 -2975.412
 key = 0.0001 3 -251.1479 -251.1479
 key = 0.01 2 -19.63584 -19.63584
 key = 0.1 1.2 -0.7846036 -0.7846036
 key = 1 1 0 0
 key = 100 1 0 0
 key = 200 0.82 0 0
 key = 500 0.86 0.0001932119 0.0001932119
 key = 1000 0.9 1.54299E-05 1.54299E-05
 key = 10000 0.95 0 0
}
LIFTING_SURFACE_CURVES // The lifting surface curvesets available for use
{
 LIFTING_SURFACE
 {
  name = Default
  lift // Converts Sin(AoA) into a lift coefficient (Cl) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lift multiplier
  {
   key = 0 0 0 1.965926
   key = 0.258819 0.5114774 1.990092 1.905806
   key = 0.5 0.9026583 0.7074468 -0.7074468
   key = 0.7071068 0.5926583 -2.087948 -1.990095
   key = 1 0 -2.014386 -2.014386
  }
  liftMach // Converts mach number into a multiplier to Cl
  {
   key = 0 1 0 0
   key = 0.3 0.5 -1.671345 -0.8273422
   key = 1 0.125 -0.0005291355 -0.02625772
   key = 5 0.0625 0 0
   key = 25 0.05 0 0
  }
  drag // Converts Sin(AoA) into a drag coefficient (Cd) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lifting surface drag multiplier
  {
   key = 0 0.01 0 0
   key = 0.3420201 0.06 0.1750731 0.1750731
   key = 0.5 0.24 2.60928 2.60928
   key = 0.7071068 1.7 3.349777 3.349777
   key = 1 2.4 1.387938 0
  }
  dragMach // Converts mach number into a multiplier to Cd
  {
   key = 0 0.35 0 -0.8463008
   key = 0.15 0.125 0 0
   key = 0.9 0.275 0.541598 0.541598
   key = 1.1 0.75 0 0
   key = 1.4 0.4 -0.3626955 -0.3626955
   key = 1.6 0.35 -0.1545923 -0.1545923
   key = 2 0.3 -0.09013031 -0.09013031
   key = 5 0.22 0 0
   key = 25 0.3 0.0006807274 0
  }
 }
 LIFTING_SURFACE
 {
  name = BodyLift
  lift // Converts Sin(AoA) into a lift coefficient (Cl) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lift multiplier
  {
   key = 0 0 0 1.975376
   key = 0.309017 0.5877852 1.565065 1.565065
   key = 0.5877852 0.9510565 0.735902 0.735902
   key = 0.7071068 1 0 0
   key = 0.8910065 0.809017 -2.70827 -2.70827
   key = 1 0 -11.06124 0
  }
  liftMach // Converts mach number into a multiplier to Cl
  {
   key = 0.3 0.167 0 0
   key = 0.8 0.167 0 -0.3904104
   key = 1 0.125 -0.0005291355 -0.02625772
   key = 5 0.0625 0 0
   key = 25 0.05 0 0
  }
  drag // Converts Sin(AoA) into a drag coefficient (Cd) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lifting surface drag multiplier
  {
   key = 0 0 0 0
  }
  dragMach // Converts mach number into a multiplier to Cd
  {
   key = 0 0 0 0
  }
 }
 LIFTING_SURFACE
 {
  name = CapsuleBottom
  lift // Converts Sin(AoA) into a lift coefficient (Cl) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lift multiplier
  {
   key = 0 0 0 1.975376
   key = 0.309017 0.5877852 1.565065 1.565065
   key = 0.5877852 0.9510565 0.735902 0.735902
   key = 0.7071068 1 0 0
   key = 0.8910065 0.809017 -2.70827 -2.70827
   key = 1 0 -11.06124 0
  }
  liftMach // Converts mach number into a multiplier to Cl
  {
   key = 0.3 0.0625 0 0
  }
  drag // Converts Sin(AoA) into a drag coefficient (Cd) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lifting surface drag multiplier
  {
   key = 0 0 0 0
  }
  dragMach // Converts mach number into a multiplier to Cd
  {
   key = 0 0 0 0
  }
 }
 LIFTING_SURFACE
 {
  name = SpeedBrake
  lift // Converts Sin(AoA) into a lift coefficient (Cl) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lift multiplier
  {
   key = 0 0 0 0
  }
  liftMach // Converts mach number into a multiplier to Cl
  {
   key = 0 0 0 0
  }
  drag // Converts Sin(AoA) into a drag coefficient (Cd) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lifting surface drag multiplier
  {
   key = 0 0.01 0 0
   key = 0.3420201 0.06 0.1750731 0.1750731
   key = 0.5 0.24 2.60928 2.60928
   key = 0.7071068 1.7 3.349777 3.349777
   key = 1 2.4 1.387938 0
  }
  dragMach // Converts mach number into a multiplier to Cd
  {
   key = 0 0.35 0 -0.8463008
   key = 0.15 0.125 0 0
   key = 0.9 0.275 0.541598 0.541598
   key = 1.1 0.75 0 0
   key = 1.4 0.4 -0.3626955 -0.3626955
   key = 1.6 0.35 -0.1545923 -0.1545923
   key = 2 0.3 -0.09013031 -0.09013031
   key = 5 0.22 0 0
   key = 25 0.3 0.0006807274 0
  }
 }
}
VesselRanges
{
 prelaunch
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
 landed
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
 splashed
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
 flying
 {
  load = 2250
  unload = 22500
  pack = 25000
  unpack = 2000
 }
 orbit
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
 subOrbital
 {
  load = 2250
  unload = 15000
  pack = 10000
  unpack = 200
 }
 escaping
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
}
 

 

I forgot think you can do a FX with a node if you don't want to set a transformer , I tried to do a cool rocket FX on a decoupler but the FX happen so fast and not in the direction I wanted it went what ever way the node was

Link to comment
Share on other sites

44 minutes ago, BrianMcNett said:

Some combination of Real Plume and Smokescreen, particularly the latter. I think Sarbian may have future plans for "ship-centric" effects (which might include what you're describing), but currently it doesn't.

 

25 minutes ago, Mecripp said:

You could always look at Physics.cfg  other then that if you code you might check out ReentryParticleEffect plugin other then that add a transformer to what ever part you want and use smokescreen plugin then write a cfg for how you want the FX

  Reveal hidden contents

aeroFXStartThermalFX = 2.5 // Speed in mach when aeroFX starts changing from white to orange
aeroFXFullThermalFX = 3.75 // Speed in mach when aeroFX is fully orange
aeroFXVelocityExponent = 3.5 // Exponent to velocity used when calculating aeroFX strength
aeroFXDensityScalar1 = 0.0091 // The density term used for calculating aeroFX strength is (s1 * density^e1 + s2 * density^e2), this is s1
aeroFXDensityExponent1 = 0.5 // This is e1
aeroFXDensityScalar2 = 0.09 // This is s2
aeroFXDensityExponent2 = 2 // This is e2
aeroFXMachFXFadeStart = 0.25 // Density at which condensation FX (white) starts to fade out; plasma FX never does
aeroFXMachFXFadeEnd = 0.0875 // Density at which condensation FX (white) has fully faded out
aeroFXDensityFadeStart = 0.0015 // Density at which aeroFX starts fading out faster--should be near the edge of the atmosphere. This creates a smooth transition rather than insta-on at high speeds.
blackBodyRadiationMin = 798 // Temperature at which a part's thermal radiation becomes visibile
blackBodyRadiationMax = 7000 // Temperature at which the black body radiation gradient ends
blackBodyRadiationAlphaMult = 0.75 // Multiplier to the opacity of the black body radiation glow
temperatureGaugeThreshold = 0.625 // When skin temp / max skin temp greater than this, gauges become visible
temperatureGaugeHighlightThreshold = 0.75 // When skin temp / max skin temp greater than this, edge highlighting becomes visible
thermalIntegrationMinStep = 0.014 // Minimum elapsed time before a thermal integration pass is run.
thermalIntegrationMaxTimeOnePass = 0.07 // Maximum time in seconds for which no more than one RK2 pass is run no matter the num-passes formula result.
thermalIntegrationAlwaysRK2 = False // Do we always use RK2 even at 1x warp? Else we use RK1 at 1x warp.
occlusionMinStep = 0.039 // Minimum elapsed time before an occlusion update pass is run.
thermalIntegrationHighMaxPasses = 10 // Maximum number of thermal integration passes (Heun/RK2) when not analytic
thermalIntegrationHighMinPasses = 1 // Minimum number of thermal integration passes (Heun/RK2) when not analytic
thermalConvergenceFactor = 0.63 // Convergence factor to make Euler integration converge for the thermo systems
standardSpecificHeatCapacity = 800 // Standard mass specific heat capacity for parts, in kJ / tonne-K
internalHeatProductionFactor = 0.025 // Multiplier to engine heat production
spaceTemperature = 4 // Temperature of the cosmic background radiation
solarLuminosityAtHome = 1360 // Solar flux in W/m^2 at the orbital altitude of the homeworld
solarInsolationAtHome = 0.15 // Portion of solar flux lost when transitting through an atmosphere ending at the homeworld's sea level density, with the sun assumed at zenith and the observer on the equator
radiationFactor = 1 // Multiplier to radiative influx and outflux
convectionFactorSplashed = 5000 // Newtonian convection factor to use when splashed
fullConvectionAreaMin = 0.2 // The minimum value of the interpolation between cross sectional area and full wetted area for convection
fullToCrossSectionLerpStart = 0.8 // At this mach number, convection area starts interpolating between the full wetted area and the cross-sectional area
fullToCrossSectionLerpEnd = 1.5 // By this mach number, the interpolation will have progressed to the minimum weight for full area specified above
newtonianTemperatureFactor = 1 // Multiplier to speed in m/s used when calculating low-mach shock temperature
newtonianConvectionFactorBase = 8.14 // The base convection factor for computing the low-mach convective coefficient, before forced convection bonus is applied
newtonianConvectionFactorTotal = 4 // The total multiplier for computing the low-mach convective coefficient
newtonianDensityExponent = 0.5 // The exponent to density used when calculating the low-mach convective coefficient
newtonianVelocityExponent = 1 // The exponent to velocity used when calculating the low-mach convective coefficient
newtonianMachTempLerpStartMach = 2 // The mach number at which to begin lerping between thew low-mach shock temperature and convective coefficient and the high-mach ones
newtonianMachTempLerpEndMach = 5 // The mach number by which only high-mach shock temperature and convective coefficient are used
newtonianMachTempLerpExponent = 3 // The exponent to the lerp value, powers >1 imply slow start fast finish, <1 implies fast start slow finish
machConvectionFactor = 7 // The scalar for computing the high-mach convective coefficient
machConvectionDensityExponent = 0.5 // The density exponent used for the high mach convective coefficient
machConvectionVelocityExponent = 3 // The velocity exponent used for the high mach convective coefficient
machTemperatureScalar = 21 // The scalar used when computing the high-mach shock temperature (= this * (speed in m/s)^exponent)
machTemperatureVelocityExponent = 0.75 // The exponent to speed (in m/s) used when calculating the high-mach shock temperature
turbulentConvectionStart = 100 // The pseudo-Reynolds number (calculated as velocity * density), multiplied by the part's drag coefficient in that facing (Cd) at which to begin lerping between 1.0 and the turbulent convection multiplier below (used as a multiplier to convective coefficient)
turbulentConvectionEnd = 200 // The pseudo-Reynolds number multiplied by Cd at which the multiplier becomes fully turbulentConvectionMult
turbulentConvectionMult = 50 // The multiplier to the convective coefficient when in turbulent flow
conductionFactor = 120 // Multiplier to all conduction
skinSkinConductionFactor = 0.003 // Multiplier to skin-skin conduction, whether on the same part (exposed<->unexposed skin) or between parts' skins
skinInternalConductionFactor = 0.005 // Multiplier to skin<->internal conduction
shieldedConductionFactor = 0.01 // Multiplier to conduction when this part's shielded status does not match the connected part's
thermalMaxIntegrationWarp = 100 // Maximum warp at which to use thermo integration rather than analytic thermo
analyticLerpRateSkin = 0.003 // Lerp rate between existing and goal temperature for skin temperature
analyticLerpRateInternal = 0.001 // Lerp rate between existing and goal temperature for internal temperature
analyticConvectionSensitivityBase = 0.01 // Convection under analytic is handled as a lerp between analytic temp and ambient temp. The lerp = 1 / ((base + (area / thermal mass)) * final * the convective coefficient [see low-mach convection above]
analyticConvectionSensitivityFinal = 20 // See above
buoyancyScalar = 1.2 // Scalar to buoyancy force
buoyancyUseCoBOffset = True // Do we offset the place where the buoyant force is applied based on current lowest point of part?
buoyancyApplyForceOnDie = False // Do we, when we die, apply that frame's buoyant force to our parent part or failing that its children? Otherwise parts that die on splashdown do not slow the rest of the vessel
buoyancyForceOffsetLerp = 0.5 // The lerp factor between last frame's offset and this one
buoyancyWaterDragScalar = 4.5 // Initial drag scalar for floating parts. The scalar is this when a part first splashes down, then slowly lerps to the End value. When the part is < buoyancyWaterDragMinVel, or no part on the vessel is splashed down, it lerps back to this value
buoyancyWaterDragScalarEnd = 0.15 // The final scalar for drag for floating parts, see above
buoyancyWaterDragScalarLerp = 0.25 // The rate at which the drag scalar lerps between the two values, see above
buoyancyWaterDragScalarLerpDotMultBase = 2 // The base compoent when computing the lerp multiplier based on verticality of velocity
buoyancyWaterDragScalarLerpDotMult = 1.25 // The multiplier to the verticality dot which is subtracted from the base to compute the multiplier to lerp rate
buoyancyWaterLiftScalarEnd = 0.025 // Lift lerps like drag, but between 0 (when first splashed or velocity low) and this value
buoyancyWaterDragMinVel = 0.4 // The minimum velocity for drag to be enhanced (see Slow below), and multiplied by the below value for the lerping above.
buoyancyWaterDragMinVelMult = 4 // The multiplier for minimum velocity for drag to be lerping down, below this it lerps up again (and vice versa for lift)
buoyancyWaterDragMinVelMultCOBOff = 0 // The multiplier for minimum velocity for CoB lerping
buoyancyWaterDragPartVelGreaterVesselMult = 1.5 // The multiplier to vessel velocity when checking part velocity > this, to enable jumpiness damping
buoyancyWaterDragTimer = 3 // The time in seconds for which 'early' splashdown drag/lift is observed (i.e. stays high for high dot, starts low for low dot)
buoyancyWaterDragMultMinForMinDot = 0.05 // The minimum multiplier to maximum drag to clamp things to during the early splashdown (the remainder is lerped by dot)
buoyancyWaterAngularDragScalar = 0.001 // Scalar to angular drag for splashed parts
buoyancyAngularDragMinControlSqrMag = 0.03125 // Minimum square-magnitude of control actuation to disable extra damping angular drag
buoyancyWaterAngularDragSlow = 4 // Unity angular drag when part velocity < MinVel
buoyancyWaterDragSlow = 2 // Unity drag addition when part velocity < MinVel
buoyancyWaterDragExtraRBDragAboveDot = 0.5 // Extra RB drag is applied (dot - this), when dot is above this value
buoyancyScaleAboveDepth = 0.2 // An easing factor. Force of buoyancy ramps between 0 and its full value as the maximum depth below sea level of the part goes from 0 to this depth
buoyancyDefaultVolume = 1 // Default volume used when part has neither dragcube nor colliders
buoyancyMinCrashMult = 0.1 // The downwards component of velocity is used, not the whole velocity, when seeing if a part is destoryed when splashing down. However, that component will be clamped to no lower a portion of total velocity than this value
buoyancyCrashToleranceMult = 1.2 // Multiplier to crash tolerance used when checking if a part is destroyed on splashdown
buoyancyRange = 1000 // If altitude of a part is greater than this above sea level, no expensive buoyancy checks are run
buoyancyKerbals = 0.25 // Buoyancy multiplier for kerbals
buoyancyKerbalsRagdoll = 3 // Buoyancy multiplier for kerbals when ragdolling
cameraDepthToUnlock = 0 // Meters below sea level before camera rotation unlocks
jointBreakForceFactor = 50 // Joint break force factor
jointBreakTorqueFactor = 50 // Joint break torque factor
rigidJointBreakForceFactor = 1 // Joint break force factor
rigidJointBreakTorqueFactor = 1 // Joint break torque factor
maxAngularVelocity = 50 // Max angular velocity of objects in radians / sec
buildingImpactDamageMaxVelocityMult = 4 // Max velocity multiplier (impact vs whole part and vs whole vessel velocity) for an impact velocity. Note will be sqrt of this when Use Momentum is true.
buildingImpactDamageUseMomentum = False // By default impact damage uses kinetic energy. Set to true to use momentum (prior-to-1.1.1 behavior)
buildingEasingInvulnerableTime = 2 // Seconds buildings stay invulnerable for when the active vessel goes off rails, to protect against physics jerks
orbitDriftFramesToWait = 5 // Number of frames to wait once drift error threshold is met before drift compensation turns on
orbitDriftSqrThreshold = 1E-10 // Square of the magnitude of the position error vector to use as threshold for drift compensation. If the error in position between the current position and the calculated rails position is < this, then drift compensation will be engaged.
orbitDriftAltThreshold = 400000000 // Orbit radius threshold for drift compensation. If the orbital radius is less than this, then drift compensation will be engaged.
autoStrutTechRequired = generalConstruction // The technology required before autostruts become available (if they are on).
showRigidJointTweakable = Editor // Is the rigid joint tweakable displayed. Never, Editor or Always
stagingCooldownTimer = 0.5625 // The time in seconds after staging during which one cannot stage again.
kerbalEVADragCubeString = Default, 0.75,0.92,0.4, 0.75,0.92,0.4, 0.6,0.7,0.4, 0.6,0.97,0.7, 0.85,0.95,0.4, 0.85,0.95,0.4, 0,0,0 0.8,1.1,0.8 // The drag cube kerbals use
kerbalCrewMass = 0 // The mass of a kerbal when in a part (pod, lander can, etc). Independent of Kerbal EVA mass, not used on EVA.
kerbalGOffset = 900 // The offset to the G increment for kerbals
kerbalGPower = 4 // The exponent applied to the current G force
kerbalGDecayPower = 2 // The further exponent applied to the increment when it is negative
kerbalGClamp = 20 // G forces above this are clamped to this for kerbal Gs
kerbalGBraveMult = 1.5 // The multiplier to thresholds based on kerbal courage
kerbalGBadMult = 1.5 // The multiplier to thresholds based on kerbal badS
kerbalGThresholdWarn = 30000 // The threshold beyond which a warning is shown
kerbalGThresholdLOC = 60000 // The threshold beyond which the kerbal loses consciousness
kerbalGLOCBaseTime = 3 // The base time in seconds a kerbal loses consciousness
kerbalGLOCTimeMult = 0.0001 // Multiplier to the current G experienced increment applied to unconscious time
kerbalGLOCMaxTimeIncrement = 1.5 // Maximum time per second a kerbal's unconscious time can be incremented
kerbalGClampGExperienced = True // If true, g experienced will be clamped to the LOC threshold and time unconscious will build up. If false, it will not be clamped and time uncouncsious will be just how long the kerbal is above the warn threshold, so long-sustained high Gs will last longer
commNetQTimesVelForBlackoutMin = 500 // Minimum dynamic pressure * velocity for comms to start blacking out from plasma (if that option is enabled)
commNetQTimesVelForBlackoutMax = 2500 // Maximum dynamic pressure * velocity for comms to start blacking out from plasma (if that option is enabled)
commNetTempForBlackout = 1100 // Minimum shock temperature for comms to start blacking out from plasma (if that option is enabled)
commNetDensityForBlackout = 5.0000000000000002E-05 // Minimum density for comms to start blacking out from plasma (if that option is enabled)
commNetDotForBlackoutMin = -0.86599999999999999 // Minimum dot between velocity and link direction for comms to start blacking out from plasma (if that option is enabled)
commNetDotForBlackoutMax = -0.5 // Dot between velocity and link direction for full blackout multiplier
commNetBlackoutThreshold = 0.5 // Threshold blackout value below which comms are entirely blacked out (if that option is enabled). Value calculated as 1 - inverse lerp of QTimesVel * inverse lerp of dot
dragMultiplier = 8 // Global multiplier to drag
dragCubeMultiplier = 0.1 // Multiplier to drag from dragcubes
angularDragMultiplier = 2 // global multiplier to angular drag
liftMultiplier = 0.036 // Multiplier to lift from lifting/control surfaces
liftDragMultiplier = 0.015 // Multiplier to drag from lifting/control surfaces
bodyLiftMultiplier = 18 // Multiplier to lift from non-lifting/control-surface parts
DRAG_TIP // Multiplier to dragcube drag when the face points towards the velocity vector, x value is mach, y value is multiplier
{
 key = 0 1 0 0
 key = 0.85 1.19 0.6960422 0.6960422
 key = 1.1 2.83 0.730473 0.730473
 key = 5 4 0 0
}
DRAG_SURFACE // Multiplier to dragcube drag when the face points orthogonal to the velocity vector, x value is mach, y value is multiplier
{
 key = 0 0.02 0 0
 key = 0.85 0.02 0 0
 key = 0.9 0.0152439 -0.07942077 -0.07942077
 key = 1.1 0.0025 -0.005279571 -0.001936768
 key = 2 0.002083333 -2.314833E-05 -2.314833E-05
 key = 5 0.003333333 -0.000180556 -0.000180556
 key = 25 0.001428571 -7.14286E-05 0
}
DRAG_TAIL // Multiplier to dragcube drag when the face points away from the velocity vector, x value is mach, y value is multiplier
{
 key = 0 1 0 0
 key = 0.85 1 0 0
 key = 1.1 0.25 -0.02215106 -0.02487721
 key = 1.4 0.22 -0.03391732 -0.03391732
 key = 5 0.15 -0.001198566 -0.001198566
 key = 25 0.14 0 0
}
DRAG_MULTIPLIER // Overall multiplier to drag based on mach
{
 key = 0 0.5 0 0
 key = 0.85 0.5 0 0
 key = 1.1 1.3 0 -0.008100224
 key = 2 0.7 -0.1104858 -0.1104858
 key = 5 0.6 0 0
 key = 10 0.85 0.02198264 0.02198264
 key = 14 0.9 0.007694946 0.007694946
 key = 25 0.95 0 0
}
DRAG_CD // The final Cd of a given facing is the drag cube Cd evalauted on this curve
{
 key = 0.05 0.0025 0.15 0.15
 key = 0.4 0.15 0.3963967 0.3963967
 key = 0.7 0.35 0.9066986 0.9066986
 key = 0.75 0.45 3.213604 3.213604
 key = 0.8 0.66 3.49833 3.49833
 key = 0.85 0.8 2.212924 2.212924
 key = 0.9 0.89 1.1 1.1
 key = 1 1 1 1
}
DRAG_CD_POWER // The final Cd of a given facing is then raised to this power, indexed by mach number
{
 key = 0 1 0 0.00715953
 key = 0.85 1.25 0.7780356 0.7780356
 key = 1.1 2.5 0.2492796 0.2492796
 key = 5 3 0 0
}
DRAG_PSEUDOREYNOLDS // Converts a pseudo-Reynolds number (density * velocity) into a multiplier to drag coefficient
{
 key = 0 4 0 -2975.412
 key = 0.0001 3 -251.1479 -251.1479
 key = 0.01 2 -19.63584 -19.63584
 key = 0.1 1.2 -0.7846036 -0.7846036
 key = 1 1 0 0
 key = 100 1 0 0
 key = 200 0.82 0 0
 key = 500 0.86 0.0001932119 0.0001932119
 key = 1000 0.9 1.54299E-05 1.54299E-05
 key = 10000 0.95 0 0
}
LIFTING_SURFACE_CURVES // The lifting surface curvesets available for use
{
 LIFTING_SURFACE
 {
  name = Default
  lift // Converts Sin(AoA) into a lift coefficient (Cl) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lift multiplier
  {
   key = 0 0 0 1.965926
   key = 0.258819 0.5114774 1.990092 1.905806
   key = 0.5 0.9026583 0.7074468 -0.7074468
   key = 0.7071068 0.5926583 -2.087948 -1.990095
   key = 1 0 -2.014386 -2.014386
  }
  liftMach // Converts mach number into a multiplier to Cl
  {
   key = 0 1 0 0
   key = 0.3 0.5 -1.671345 -0.8273422
   key = 1 0.125 -0.0005291355 -0.02625772
   key = 5 0.0625 0 0
   key = 25 0.05 0 0
  }
  drag // Converts Sin(AoA) into a drag coefficient (Cd) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lifting surface drag multiplier
  {
   key = 0 0.01 0 0
   key = 0.3420201 0.06 0.1750731 0.1750731
   key = 0.5 0.24 2.60928 2.60928
   key = 0.7071068 1.7 3.349777 3.349777
   key = 1 2.4 1.387938 0
  }
  dragMach // Converts mach number into a multiplier to Cd
  {
   key = 0 0.35 0 -0.8463008
   key = 0.15 0.125 0 0
   key = 0.9 0.275 0.541598 0.541598
   key = 1.1 0.75 0 0
   key = 1.4 0.4 -0.3626955 -0.3626955
   key = 1.6 0.35 -0.1545923 -0.1545923
   key = 2 0.3 -0.09013031 -0.09013031
   key = 5 0.22 0 0
   key = 25 0.3 0.0006807274 0
  }
 }
 LIFTING_SURFACE
 {
  name = BodyLift
  lift // Converts Sin(AoA) into a lift coefficient (Cl) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lift multiplier
  {
   key = 0 0 0 1.975376
   key = 0.309017 0.5877852 1.565065 1.565065
   key = 0.5877852 0.9510565 0.735902 0.735902
   key = 0.7071068 1 0 0
   key = 0.8910065 0.809017 -2.70827 -2.70827
   key = 1 0 -11.06124 0
  }
  liftMach // Converts mach number into a multiplier to Cl
  {
   key = 0.3 0.167 0 0
   key = 0.8 0.167 0 -0.3904104
   key = 1 0.125 -0.0005291355 -0.02625772
   key = 5 0.0625 0 0
   key = 25 0.05 0 0
  }
  drag // Converts Sin(AoA) into a drag coefficient (Cd) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lifting surface drag multiplier
  {
   key = 0 0 0 0
  }
  dragMach // Converts mach number into a multiplier to Cd
  {
   key = 0 0 0 0
  }
 }
 LIFTING_SURFACE
 {
  name = CapsuleBottom
  lift // Converts Sin(AoA) into a lift coefficient (Cl) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lift multiplier
  {
   key = 0 0 0 1.975376
   key = 0.309017 0.5877852 1.565065 1.565065
   key = 0.5877852 0.9510565 0.735902 0.735902
   key = 0.7071068 1 0 0
   key = 0.8910065 0.809017 -2.70827 -2.70827
   key = 1 0 -11.06124 0
  }
  liftMach // Converts mach number into a multiplier to Cl
  {
   key = 0.3 0.0625 0 0
  }
  drag // Converts Sin(AoA) into a drag coefficient (Cd) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lifting surface drag multiplier
  {
   key = 0 0 0 0
  }
  dragMach // Converts mach number into a multiplier to Cd
  {
   key = 0 0 0 0
  }
 }
 LIFTING_SURFACE
 {
  name = SpeedBrake
  lift // Converts Sin(AoA) into a lift coefficient (Cl) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lift multiplier
  {
   key = 0 0 0 0
  }
  liftMach // Converts mach number into a multiplier to Cl
  {
   key = 0 0 0 0
  }
  drag // Converts Sin(AoA) into a drag coefficient (Cd) then multiplied by the below mach multiplier, dynamic pressure, the wing area, and the global lifting surface drag multiplier
  {
   key = 0 0.01 0 0
   key = 0.3420201 0.06 0.1750731 0.1750731
   key = 0.5 0.24 2.60928 2.60928
   key = 0.7071068 1.7 3.349777 3.349777
   key = 1 2.4 1.387938 0
  }
  dragMach // Converts mach number into a multiplier to Cd
  {
   key = 0 0.35 0 -0.8463008
   key = 0.15 0.125 0 0
   key = 0.9 0.275 0.541598 0.541598
   key = 1.1 0.75 0 0
   key = 1.4 0.4 -0.3626955 -0.3626955
   key = 1.6 0.35 -0.1545923 -0.1545923
   key = 2 0.3 -0.09013031 -0.09013031
   key = 5 0.22 0 0
   key = 25 0.3 0.0006807274 0
  }
 }
}
VesselRanges
{
 prelaunch
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
 landed
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
 splashed
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
 flying
 {
  load = 2250
  unload = 22500
  pack = 25000
  unpack = 2000
 }
 orbit
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
 subOrbital
 {
  load = 2250
  unload = 15000
  pack = 10000
  unpack = 200
 }
 escaping
 {
  load = 2250
  unload = 2500
  pack = 350
  unpack = 200
 }
}
 

 

I forgot think you can do a FX with a node if you don't want to set a transformer , I tried to do a cool rocket FX on a decoupler but the FX happen so fast and not in the direction I wanted it went what ever way the node was

SmokeScreen should work! Thanks! :cool:

Link to comment
Share on other sites

  • 2 weeks later...
On ‎12‎/‎24‎/‎2017 at 7:02 PM, dundun92 said:

 

SmokeScreen should work! Thanks! :cool:

Did you ever come up with something ? If not you have a picture of where all you want the  FX at might try and play around with it but would need alittle help 

Link to comment
Share on other sites

12 hours ago, Mecripp said:

Did you ever come up with something ? If not you have a picture of where all you want the  FX at might try and play around with it but would need alittle help 

I haven't tried it yet, im waiting for an answer to the question I asked in the smokescreen thread.

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...