Data/Actors/Splat

## Splat

### Description

Intended for two-dimensional graphical effects, especially at ground level. Also used for the fancy race-themed targeting cursors on area-affecting abilities

### Hints

* Many structures, especially Protoss and Terran ones, have an associated Splat actor to darken the ground around them
* Remember to duplicate these along the main Unit actor to replicate the full visuals of existing structures
* Also remember to scale them to fit the unit and to destroy them (using Events) should the structure morph into a different form (such as lifting off)
* When creating AoE abilities you must create a new **Cursor Splat** for each ability, or add Events to existing splats
* Cursor Splats will automatically scale to the area coverage of the ability, specified by the **Effect: Cursor Effect+** field on the Ability itself
* Cursor Splats completely ignore the **Art: Scale** field, they do respect the **Model** scale though

## Example Usage

### Barracks Splat

Mainly produces a charred outline around the rocket boosters of the Barracks, very fitting if it recently landed. Note how the corresponding Model (also named Barracks Splat) is specifically made to fit the outline of the Barracks.
In the Events+ field, note the triggers AbilMorph.\*.Start/Finish which cause the splat to disappear/reappear accordingly whenever the Barracks lifts off

#### URL

The Barracks is present in the editor by default.

### PsiStormCursorSplat

Controls the hexagon-based Protoss themed cursor when you aim a **Psionic Storm**. Where the main **Model** is slightly larger than the AoE, the cursor is slightly smaller
Thanks to a premade template there is a Token field beneath the main data display which can be used to assign the splat to an ability without manually editing the **Events+** field.

#### URL

Psi Storm is present in the editor by default.

## Fields Description

### Actor - Add To Proximity System

* (unknown), enabled on all existing Splats

### Actor - Aliases

* Aliases that refer to the actor in Events or in Hosting as a subject

### Actor - Filter

* Determines what players can see the actor depending on their diplomatic status eg. Nuke Target/Indicator
* Cursor Splats cannot be seen by enemies even if this field would allow it, as they have no access to the cursor scope (the mouse of the casting player)

### Actor - Flags

* **Add To External Finder:** (Unknown)
* **Not Saved:** (Unknown) used by Cursor Splats
* **Scale To Host:** overrides any scaling the actor has and sets it to the host Unit actor
* **Suppress Creation Errors:** (Unknown)

### Actor - Fog Visibility

* Determines how the actor appears under the fog of war
* Limited by the setting of the **UI: Fog Visibility** field under the Units data type
* This should be set to Visible on Cursor Splats (at least that's the Blizzard standard)

### Actor - Height

* The height at which the Splat is displayed
* **Actor Minimum:** Unknown, possibly lowest actor in current scope?
* **Normal:** Not sure, average terrain height at location? (used by structure splats)
* **Terrain Minimum:** Not sure, lowest terrain height at location? (used by Cursor Splats)

### Actor - Scope Bearing Tracking

* (not sure); probably whether the Splat updates its position and rotation from the host or not

### Actor - Sharing

* Determines to what degree the same actor is shared by a unit if there are multiple functions refering to it
* **Always:** means the actor is always shared
* **None:** means the actor is never shared
* **Per Effect Tree:** means that effects within an effect tree share the actor but different effect trees can't

### Art - Auto Scale Factor

* If applicable the scale of the Splat is multiplied with this and the scale of the host
* Valid hosts are mostly Unit and Model actors, though others might also work

### Art - Auto Scale From Selection Factor

* Like Auto Scale Factor but uses the Selection Radius of the Model data entity as opposed to Actor Scale or the hardcoded size of the 3d model

### Art - Color

* A tinting mechanism, interaction with SetTintColor event not tested
* Alpha=transparency

### Art - Fade In

* The actor will be created at 0 opacity, linearly increasing to 100% over the time specified here
* -1 is a default, probably "instantaneous"

### Art - Fade Out

* When destroyed the actor won't vanish instantly, instead linearly decreasing its opacity to 0 over the time specified, and then destroy itself
* -1 again is a default value

### Art - Hold Duration

* (unknown), possibly a maximum lifetime
* -1 is a default, if the above is correct it means "infinite", meaning the field has no effect

### Art - Layer

* A set of hardcoded graphical layers to choose from
* Probably determines which visuals are displayed above/occluded by others, occlusion order currently unknown

### Art - Model

* The Model data entity used by the splat, this should be 2d, but can be animated
* **Cursor Splats** still respect the scale of the Model

### Art - Scale

* The X, Y and Z scaling for the actor
* **Cursor Splats** completely ignore this field

### Event - Events+

* Series of minitriggers that determine the motions and visual effects of the model
* Covered in detail in the Events section of the wiki
* Some event actions **do not to work** on Splat type actors eg. Texture Select By ID

### Event - Macros

The Event Macro actors used to supplement the events

### Hosting - Host Supporter - Actor

* **Actor Find:** (Not Sure) means the actor has to be found using the scope
* **Creation:** (Not Sure) is the actor that creates this actor is given priority for hosting if there is a choice of several
* **Implicit:** is the default

### Hosting - Host Supporter - Effect

* The effect whose scope is used in combination with the **Hosting - Host Supporter - Scope** field to determine valid subjects

### Hosting - Host Supporter - Fail If No Host

* Causes the model to be automatically destroyed if no host

### Hosting - Host Supporter - Scope

* **Implicit:** is the default but gives an error message if using the scope of an effect
* **Scope Caster:** Uses the scope of the caster of the effect to choose the caster unit as the subject
* **Scope Effect:** (Unknown)
* **Scope Missile:** (Unknown)
* **Scope Outer:** (Unknown)
* **Scope Source:** Uses the scope of the source of the effect to choose the source unit as the subject
* **Scope Target:** Uses the scope of the target of the effect to choose the target unit as the subject

### Hosting - Host Supporter - Subject

* Actor, alias or reference refered to by the **::Supporter** system reference for Events

### Properties - Accepted Property Transfers

* When this actor is in the Hosting - Host - Subject field of another actor, this field determines what properties are able to be inherited from this actor
* **Cast Shadows:** allows the attached actor to cast shadows
* **Cloak Effect:** allows the attached actor to show the cloaking bluish effect
* **Decal:** allows the attached actor to show the host unit decal
* **Local Tint Color:** (Unknown)
* **Model Scale:** makes the actor inherit the scale for the host model
* **Opacity:** spreads the opacity set by the Set Opacity event to attached actors
* **Physics State:** (Unknown)
* **Scale:** transfers the scale of the host actor to the attached actors
* **Team Color:** makes the attached actor show the team colour if it can
* **Time Scale:** means the animations of the attached actor are the same as the host actors timescale
* **Tint Color:** (Unknown)
* **Visibility:** allows the attached actor to share the host actor's Actor - Fog Visibility
* **Warp Group:** (Unknown)

### Properties - Accepted Transfers

* **Animation Properties:** (Unknown)
* **Animator:** (Unknown)
* **Fog Of War Color:** (Unknown)
* **Fog Of War Shader:** (Unknown)
* **Model:** (Unknown)
* **Position:** (Unknown)
* **Rotation:** (Unknown)
* **Status:** (Unknown)
* **Textures:** (Unknown)

### Properties - Inherit Type

* Determines how often the host properties are inherited
* **Continuous:** means the properties are continuously inherited from the host
* **None:** means properties are not inherited from the host
* **Once:** means properties are only inherited on actor creation

### Properties - Inherited Properties

* This field determines what properties are able to be inherited from the actor in the **Hosting - Host - Subject** or **Hosting - Host For Properties - Subject** field
* **Cast Shadows:** allows the attached actor to cast shadows
* **Cloak Effect:** allows the attached actor to show the cloaking bluish effect
* **Decal:** allows the attached actor to show the host unit decal
* **Local Tint Color:** (Unknown)
* **Model Scale:** makes the actor inherit the scale for the host model
* **Opacity:** spreads the opacity set by the Set Opacity event to attached actors
* **Physics State:** (Unknown)
* **Scale:** transfers the scale of the host actor to the attached actors
* **Team Color:** makes the attached actor show the team colour if it can
* **Time Scale:** means the animations of the attached actor are the same as the host actors timescale
* **Tint Color:** (Unknown)
* **Visibility:** allows the attached actor to share the host actor's Actor - Fog Visibility
* **Warp Group:** (Unknown)