Skip to content

Data Assets

Sneaky Kitty edited this page Jan 10, 2026 · 26 revisions

The purpose of the implementation of data assets is to make adjustments easier, allow for more reusability, and reduce the need for blueprint objects. For example, lets say we had a firearm (M4) class that a designer wanted to tweak the aiming settings on so when you ADS, the firearm is moved closer. Instead of having to check out/modify the actual M4 firearm bp class, the designer can simply open the data asset for the aiming settings used on the M4, make the adjustment, and save. Likewise when constructing actors from data (not using blueprint classes for everything), it is much easier to set a data asset on a component such as the SKGProceduralAnimComponent as you can just give it the SKGPDAAimingSettings instead of going through each property and manually setting it one by one.

Procedurals

Initialize Data Assets

SKGPDAOffhandIKInitialize

image

  • OffhandIKMeshName: This is the name of the mesh component that will contain the Left and Right HandIKSocketName, such as a firearm, handguard, forward grip, etc.
  • LeftHandIKSocketName: This is the name of the left hand ik socket on the mesh defined in OffhandIKMeshName. If you are in the typical right hand dominate (right handed) this is the socket that will be used. If you call SetOffhandIKToLeftHand (this is the default) it will use the this socket.
  • RightHandIKSocketName: This is the name of the right hand ik socket on the mesh defined in OffhandIKMeshName. If you are in the left hand dominate (left handed) mode then this is the socket that will be used. If you call SetOffhandIKToRightHand it will use this socket.

SKGPDAOffhandIKSettings

image

  • LeftHandIKPose: This is the pose that will be applied to the left hand. For example, a handguard would have a handguard pose, a forward grip would have a forward grip pose. The active SKGOffhandIKComponent determines what grip pose is to be used.
  • RightHandIKPose: Same as the above but used when we are in left hand dominate (left handed) mode.

Muzzle

SKGPDAMuzzleInitialize

image

  • MuzzleMeshComponentName: Name of the mesh component that has the MuzzleSocketName, such as a barrel, suppress, muzzle device, etc.
  • MuzzleSocketName: Name of the socket used for the end of the muzzle where you want projectiles to launch from as well as for firearm collision.

SKGPDAMuzzleSettings

image

  • MuzzleTag: This is used to figure out which muzzle device should be used. For example, if you had a m4 with a barrel, your barrel would have the muzzle settings of MuzzleComponentType.Barrel. If you added a muzzle device to the barrel, then a suppressor to the muzzle device, the suppressor would have the tag of MuzzleComponentType.Suppressor. This lets the system know to use the suppressor, not the muzzle device, or the barrel.
  • GameplayTags: Just gameplay tags for the data asset.
  • bUseMuzzleTemperatureSystem: If true, when you call ShotPerformed on the SKGFirearmComponent or a specific SKGMuzzleComponent, it will accumulate temperature each shot as well as cool down.
  • MaxMuzzleTemperatureFahrenheit: Max temperature you want the muzzle to reach in Fahrenheit.
  • MuzzleStartGlowTemperature: This is the temperature you want the muzzle to reach for it to start to glow. This is intended to be hooked into the heat up material provided with the example project. See the suppressor for an example.
  • IncreaseMuzzleTemperatureAmountFahrenheit: How much the muzzle device temperature should increase per shot.
  • DecreaseMuzzleTemperatureAmountPerTick: How much the muzzle device should cool down each tick.

Optic

SKGPDAOpticInitialize

image

  • OpticMeshName: Name of the mesh that contains the reticle.
  • OpticSceneCaptureComponentName: Name of the optional SKGOpticSceneCaptureComponent.
  • bIsMagnifier: Whether or not this optic is to be considered a magnifier. This is just a boolean you can fetch to make magnifier implementation easier.
  • GameplayTags: Just gameplay tags for the data asset, not used by default.

SKGPDAOpticReticleSettings

image

  • ReticleMaterialIndex: This is the index that the reticle material should be applied to (on the optic mesh).
  • bSupportsNightVision: If true, it indicates that this optic can go into a night vision mode and switch to using the ReticleNightVisionBrightnessSettings for brightness.
  • ReticleMaterials: This is an array of materials that you can use in the reticle and cycle through, such as a red/green reticle.
  • UnAimedReticleMaterial: This is the material that will be used when you stop aiming with a magnified optic, such as swapping to one that is a reflective glass.
  • UnAimedCaptureDelay: How long after aiming will it take before the optic switches to the UnAimedReticleMaterial.
  • ReticleBrightnessSettings: Brightness settings for the reticle itself.
  • ReticleNightVisionBrightnessSettings: Same as the above but for when the optic is in night vision mode.
  • WeightedBlendables: These are post process materials, primarily for thermal use. If you look at the thermal optic in the example project, it has several of these that you can cycle through such as white hot, black hot, rainbow, etc.
  • EyeboxPositionSocket: This is the socket to be used for centering the eyebox. I recommend leaving this as the default S_Aim or whatever you call your aim socket as it is typically centered on the optic.

SKGPDAOpticMagnificationSettings

image

SKGPDAOpticZeroSettings

image

Clone this wiki locally