<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.fightorder.net/wiki/index.php?action=history&amp;feed=atom&amp;title=CEG-Classes</id>
	<title>CEG-Classes - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.fightorder.net/wiki/index.php?action=history&amp;feed=atom&amp;title=CEG-Classes"/>
	<link rel="alternate" type="text/html" href="https://www.fightorder.net/wiki/index.php?title=CEG-Classes&amp;action=history"/>
	<updated>2026-04-21T04:14:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.fightorder.net/wiki/index.php?title=CEG-Classes&amp;diff=652&amp;oldid=prev</id>
		<title>Qrow: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://www.fightorder.net/wiki/index.php?title=CEG-Classes&amp;diff=652&amp;oldid=prev"/>
		<updated>2025-11-14T05:21:28Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:21, 13 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Qrow</name></author>
	</entry>
	<entry>
		<id>https://www.fightorder.net/wiki/index.php?title=CEG-Classes&amp;diff=651&amp;oldid=prev</id>
		<title>Interwiki&gt;Flozi: tag for delete, replaced by CEG:Defs</title>
		<link rel="alternate" type="text/html" href="https://www.fightorder.net/wiki/index.php?title=CEG-Classes&amp;diff=651&amp;oldid=prev"/>
		<updated>2014-10-05T16:44:25Z</updated>

		<summary type="html">&lt;p&gt;tag for delete, replaced by CEG:Defs&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{delete}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Source:&amp;#039;&amp;#039;&amp;#039; {{sourcelink|file=rts/Sim/Projectiles/}} {{sourcelink|file=rts/Sim/Projectiles/Unsynced/}}&lt;br /&gt;
&lt;br /&gt;
== Common Properties ==&lt;br /&gt;
All classes have the following properties, although not all of them use them:&lt;br /&gt;
&lt;br /&gt;
*pos (float3): The initial position of the spawner.&lt;br /&gt;
*useAirLos (bool): Whether the spawner uses air LoS to determine if it is visible. This may allow the spawner to be seen from a further distance than normal.&lt;br /&gt;
*alwaysVisible (bool): If true, the spawner is always visible, ignoring LoS.&lt;br /&gt;
*speed (float3): The initial speed of the spawner.&lt;br /&gt;
&lt;br /&gt;
== CExpGenSpawner ==&lt;br /&gt;
This is the closest thing CEG has to a function call. Instead of creating a graphical effect on its own, it creates another CEG.&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
&lt;br /&gt;
*delay (int): How long to wait before spawning the CEG.&lt;br /&gt;
*dir (float3): The CEG will be called with this direction.&lt;br /&gt;
*damage (float): The CEG will be called with this damage. The CEG doesn&amp;#039;t actually deal any damage, but you can use this as a parameter and read it using the &amp;#039;d&amp;#039; operator.&lt;br /&gt;
*explosionGenerator (string): The name of the CEG you want to spawn.&lt;br /&gt;
&lt;br /&gt;
Suggested Use: &lt;br /&gt;
*If you use a spawner a lot of times, you may want to make it a separate CEG to avoid having to copy-paste many times.&lt;br /&gt;
*This is the only way to truly delay a graphical effect.&lt;br /&gt;
*The spawned CEG still checks conditions, so if you want to, say, spawn an effect only if it is in water &amp;#039;&amp;#039;and&amp;#039;&amp;#039; doesn&amp;#039;t hit a unit, you can give the CExpGenSpawner &amp;lt;code&amp;gt;nounit = 1;&amp;lt;/code&amp;gt; and the spawned &amp;lt;code&amp;gt;CEG water = 1;&amp;lt;/code&amp;gt;.&lt;br /&gt;
*This allows you to give a set of spawners the same (and possibly random) direction.&lt;br /&gt;
*You can animate an explosion flip-book style using delays and several bitmaps.&lt;br /&gt;
&lt;br /&gt;
== CBitmapMuzzleFlame ==&lt;br /&gt;
This creates three rectangular textures at right angles to each other. The &amp;lt;code&amp;gt;frontTexture&amp;lt;/code&amp;gt; has &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; as its normal.&lt;br /&gt;
&lt;br /&gt;
Properties: &lt;br /&gt;
*sideTexture (string)&lt;br /&gt;
*frontTexture (string)&lt;br /&gt;
*dir (float3)&lt;br /&gt;
*colorMap (string)&lt;br /&gt;
*size (float): The initial width of the muzzle flame.&lt;br /&gt;
*length (float): The initial length of the muzzle flame.&lt;br /&gt;
*sizeGrowth (float): By the end of its life, the muzzle flame grows to 1 + sizeGrowth times its initial size and length. The flame grows quickly at first and more slowly toward the end.&lt;br /&gt;
*ttl (int): How long the muzzle flame lasts.&lt;br /&gt;
*frontOffset (float): Where the frontTexture is along the length of the muzzle flame. 0 means it is in the back, 1 is in the front.&lt;br /&gt;
&lt;br /&gt;
Suggested Use:&lt;br /&gt;
*Muzzle flames, obviously.&lt;br /&gt;
*You can use an upward-pointing CBitmapMuzzleFlame as a simple splash of water or dirt.&lt;br /&gt;
*Railgun trails.&lt;br /&gt;
*This is the only class that both obeys perspective and allows for a custom texture.&lt;br /&gt;
&lt;br /&gt;
== CExploSpikeProjectile ==&lt;br /&gt;
&lt;br /&gt;
This creates a glowy spike. Note that the spike is two sided, i.e., symmetric about the position of the spawner.&lt;br /&gt;
&lt;br /&gt;
*length (float): The initial length of (half) of the spike (multiplied by dir).&lt;br /&gt;
*width (float): Half the initial width of of the spike. This is an absolute value.&lt;br /&gt;
*alpha (float): The starting alpha of the spike.&lt;br /&gt;
*alphaDecay (float): How quickly the alpha of the spike decreases.&lt;br /&gt;
*dir (float3): The direction of the spike. Not normalized.&lt;br /&gt;
*color (float3): The color of the spike.&lt;br /&gt;
&lt;br /&gt;
Suggested Use:&lt;br /&gt;
*Anything glowy.&lt;br /&gt;
*For large, slow missiles, you can try using this as an extended engine flame. Set the width to something fairly large.&lt;br /&gt;
*Long and thin spikes will look spiky; meanwhile, shorter and wider spikes look more blobby.&lt;br /&gt;
*The colors of spikes add together, so if you have several spikes and all three color channels are non-zero, it will be white in the center.&lt;br /&gt;
*The length growth of the spike depends on the norm of the dir vector. The spike does not grow in width.&lt;br /&gt;
&lt;br /&gt;
== CHeatCloudProjectile ==&lt;br /&gt;
&lt;br /&gt;
Creates an expanding sprite. Simple but effective.&lt;br /&gt;
&lt;br /&gt;
*heat (float)&lt;br /&gt;
*maxheat (float)&lt;br /&gt;
*heatFalloff (float)&lt;br /&gt;
This is really confusing way of representing alpha and alphaDecay. Basically alpha = heat/maxheat, and alphaDecay = heatFalloff/maxHeat.&lt;br /&gt;
*size (float): The initial radius of the heatcloud.&lt;br /&gt;
*sizeGrowth (float): The heatcloud grows by this amount every frame.&lt;br /&gt;
*sizemod (float): The size of the heatcloud is multiplied by 1 - sizemod.&lt;br /&gt;
*sizemodmod (float): Each frame, sizemod is multiplied by sizemodmod.&lt;br /&gt;
*texture (string): The texture used for the heatcloud.&lt;br /&gt;
&lt;br /&gt;
Suggested Use:&lt;br /&gt;
*As the main background to an explosion.&lt;br /&gt;
&lt;br /&gt;
== CSimpleParticleSystem ==&lt;br /&gt;
&lt;br /&gt;
Creates a sprite that can undergo complex motion. Probably the most versatile class. Since there are a lot of properties, I&amp;#039;ll group them:&lt;br /&gt;
&lt;br /&gt;
=== Initial Velocity Properties ===&lt;br /&gt;
*emitVector (float3): The basic direction in which the particle is emitted.&lt;br /&gt;
Protip:&amp;lt;br&amp;gt;&lt;br /&gt;
When spawning CEGs via EmitSfx you can make the particles go into the direction of the emiting piece with:&lt;br /&gt;
&amp;lt;code&amp;gt;emitvector = dir,&amp;lt;/code&amp;gt;&lt;br /&gt;
This is usefull for eg fire coming out of a gun barrel.&lt;br /&gt;
*emitRot (float): At what angle to emit the particle relative to emitVector. 0 means that the particle will be emitted in emitVector&amp;#039;s direction; 180 will emit the particle in the opposite direction. 90 will emit the particle in a random direction perpendicular to emitVector, which is good for creating rings.&lt;br /&gt;
*emitRotSpread (float): For each particle, a random number between 0 and emitRotSpread is added to the emitRot.&lt;br /&gt;
*emitMul (float3): Scales the initial particle velocity; for this property, +y is considered to be in the direction of emitVector. Good if you want to create an egg-shaped explosion.&lt;br /&gt;
*particleSpeed (float): The particle&amp;#039;s initial speed.&lt;br /&gt;
*particleSpeedSpread (float): For each particle, a random number between 0 and particleSpeedSpread is added to the particleSpeed .&lt;br /&gt;
&lt;br /&gt;
=== Movement Properties ===&lt;br /&gt;
*gravity (float3): This will be added to the particle&amp;#039;s velocity every frame.&lt;br /&gt;
*airdrag (float): The particle&amp;#039;s velocity is multiplied by this every frame.&lt;br /&gt;
&lt;br /&gt;
=== Size Properties ===&lt;br /&gt;
*particleSize (float): The initial size of the particle.&lt;br /&gt;
*particleSizeSpread (float): For each particle, a random number between 0 and particleSizeSpread is added to the particleSize.&lt;br /&gt;
*sizeGrowth (float): How much the particle grows each frame.&lt;br /&gt;
*sizeMod (float): The size of the particle is multiplied by this each frame.&lt;br /&gt;
&lt;br /&gt;
=== Visual Properties ===&lt;br /&gt;
*directional (bool): If true, the particle will point in the direction it is moving.&lt;br /&gt;
*texture (string): The texture to use for the particle.&lt;br /&gt;
*colorMap (string): The colormap to use for the particle.&lt;br /&gt;
&lt;br /&gt;
=== Life Properties ===&lt;br /&gt;
*numParticles (int): How many particles to create. This is not the same as &amp;lt;code&amp;gt;count&amp;lt;/code&amp;gt;; if you spawn multiple particles using &amp;lt;code&amp;gt;count&amp;lt;/code&amp;gt;, any [[CEG-Operators]] will be reevaluated for each particle, whereas if you use &amp;lt;code&amp;gt;numParticles&amp;lt;/code&amp;gt; they will not be. However, the spread properties are evaluated separately for each particle regardless of which one you use.&lt;br /&gt;
*particleLife (float): How long each particle lasts. &lt;br /&gt;
*particleLifeSpread (float); For each particle, a random number between 0 and particleLifeSpread is added to the particleLife .&lt;br /&gt;
&lt;br /&gt;
Suggested Use:&lt;br /&gt;
*This is probably the most versatile class.&lt;br /&gt;
*Anything moving that is not doing so at constant velocity.&lt;br /&gt;
*If you want something that expands (or shrinks) to some size then stops, set sizeMod to something less than 1, and sizeGrowth to something positive. The particle will grow to a size equal to sizeGrowth/ (1 - sizeMod) and stop. The smaller sizeMod is, the faster it will reach this size.&lt;br /&gt;
&lt;br /&gt;
== CSpherePartSpawner ==&lt;br /&gt;
&lt;br /&gt;
Draws an expanding sphere.&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
*alpha (float): The alpha of the sphere.&lt;br /&gt;
*ttl (int): How long the sphere lasts.&lt;br /&gt;
*expansionSpeed (float): How quickly the sphere expands.&lt;br /&gt;
*color (float3): The color of the sphere.&lt;br /&gt;
&lt;br /&gt;
Suggested Use:&lt;br /&gt;
*Looks like a shockwave.&lt;br /&gt;
&lt;br /&gt;
== CSimpleGroundFlash ==&lt;br /&gt;
&lt;br /&gt;
Draws an expanding ground texture.&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
*size (float): The radius of the particle.&lt;br /&gt;
*sizeGrowth (float): How much the particle grows each frame.&lt;br /&gt;
*ttl (int): How long the particle lasts.&lt;br /&gt;
*texture (string): The texture to use for the particle.&lt;br /&gt;
*colorMap (string): The colormap to use for the particle.&lt;br /&gt;
&lt;br /&gt;
Suggested Use:&lt;br /&gt;
*A short groundflash (~8 frames) is good for any explosion that gives off light. You can also use a longer groundflash to suggest the ground is glowing from heat.&lt;br /&gt;
&lt;br /&gt;
== CEG Textures ==&lt;br /&gt;
&lt;br /&gt;
*Textures on CEG definitions are referenced by name.&lt;br /&gt;
*The list of available textures and their names should be on a &amp;quot;resources.tdf&amp;quot; or &amp;quot;resources.lua&amp;quot; file that&amp;#039;s usually placed on the &amp;quot;gamedata&amp;quot; subfolder.&lt;br /&gt;
*Texture definitions to be used in projectile classes should be placed within the &amp;quot;projectiletextures&amp;quot; category and textures to be used with &amp;quot;CSimpleGroundFlash&amp;quot; class should be placed within the &amp;quot;groundfx&amp;quot; category.&lt;br /&gt;
*Texture images are usually placed in the &amp;quot;bitmaps&amp;quot; subfolder.&lt;/div&gt;</summary>
		<author><name>Interwiki&gt;Flozi</name></author>
	</entry>
</feed>