From deb9e0d75cd4e9c1b4915e160df30e6476c11668 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 8 Jun 2016 20:35:33 +0200 Subject: [PATCH] Added custom smoke particles --- addons/particles/$PBOPREFIX$ | 1 + addons/particles/CfgAmmo.hpp | 61 +++++++++++++ addons/particles/CfgCloudlets.hpp | 125 ++++++++++++++++++++++++++ addons/particles/Effects.hpp | 65 ++++++++++++++ addons/particles/config.cpp | 18 ++++ addons/particles/data/smoke.p3d | Bin 0 -> 390 bytes addons/particles/data/smoke_ca.paa | Bin 0 -> 44611 bytes addons/particles/script_component.hpp | 17 ++++ 8 files changed, 287 insertions(+) create mode 100644 addons/particles/$PBOPREFIX$ create mode 100644 addons/particles/CfgAmmo.hpp create mode 100644 addons/particles/CfgCloudlets.hpp create mode 100644 addons/particles/Effects.hpp create mode 100644 addons/particles/config.cpp create mode 100644 addons/particles/data/smoke.p3d create mode 100644 addons/particles/data/smoke_ca.paa create mode 100644 addons/particles/script_component.hpp diff --git a/addons/particles/$PBOPREFIX$ b/addons/particles/$PBOPREFIX$ new file mode 100644 index 0000000000..b93724589d --- /dev/null +++ b/addons/particles/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\particles diff --git a/addons/particles/CfgAmmo.hpp b/addons/particles/CfgAmmo.hpp new file mode 100644 index 0000000000..68a6ebfda1 --- /dev/null +++ b/addons/particles/CfgAmmo.hpp @@ -0,0 +1,61 @@ +class CfgAmmo { + class GrenadeHand; + + // - Smoke hand grenades -------------------------------------------------- + class SmokeShell: GrenadeHand { + smokeColor[] = {1, 1, 1, 1}; + }; + class SmokeShellRed: SmokeShell { + smokeColor[] = {0.9528, 0.0438, 0.0410, 1}; + }; + class SmokeShellGreen: SmokeShell { + smokeColor[] = {0.0328, 0.1626, 0.1023, 1}; + }; + class SmokeShellYellow: SmokeShell { + smokeColor[] = {0.9610, 0.4505, 0.0109, 1}; + }; + class SmokeShellPurple: SmokeShell { + smokeColor[] = {0.4622, 0.0578, 0.3154, 1}; + }; + class SmokeShellBlue: SmokeShell { + smokeColor[] = {0.0355, 0.1863, 1.0000, 1}; + }; + class SmokeShellOrange: SmokeShell { + smokeColor[] = {0.9132, 0.1763, 0.0070, 1}; + }; + + // - 40mm smoke grenades -------------------------------------------------- + class G_40mm_Smoke: SmokeShell { + smokeColor[] = {1, 1, 1, 1}; + }; + class G_40mm_SmokeRed: G_40mm_Smoke { + smokeColor[] = {0.9528, 0.0438, 0.0410, 1}; + }; + class G_40mm_SmokeGreen: G_40mm_Smoke { + smokeColor[] = {0.0328, 0.1626, 0.1023, 1}; + }; + class G_40mm_SmokeYellow: G_40mm_Smoke { + smokeColor[] = {0.9610, 0.4505, 0.0109, 1}; + }; + class G_40mm_SmokePurple: G_40mm_Smoke { + smokeColor[] = {0.4622, 0.0578, 0.3154, 1}; + }; + class G_40mm_SmokeBlue: G_40mm_Smoke { + smokeColor[] = {0.0355, 0.1863, 1.0000, 1}; + }; + class G_40mm_SmokeOrange: G_40mm_Smoke { + smokeColor[] = {0.9132, 0.1763, 0.0070, 1}; + }; + + // - Artillery smoke submunition ------------------------------------------ + class SmokeShellArty: SmokeShell { + explosionTime = 0; + effectsSmoke = "ACE_ArtillerySmoke"; + }; + + // - 120mm/155mm artillery smoke ------------------------------------------ + class SubmunitionBase; + class Smoke_120mm_AMOS_White: SubmunitionBase { + submunitionConeAngle = 10; + }; +}; diff --git a/addons/particles/CfgCloudlets.hpp b/addons/particles/CfgCloudlets.hpp new file mode 100644 index 0000000000..769ab3ff14 --- /dev/null +++ b/addons/particles/CfgCloudlets.hpp @@ -0,0 +1,125 @@ +class CfgCloudlets { + class Default; + + // - Surface smoke -------------------------------------------------------- + class ACE_SmokeBaseLarge: Default { + colorCoef[] = {"colorR", "colorG", "colorB", "colorA"}; + sizeCoef = 1; + position[] = {0, 0, 0}; + interval = 0.05; + circleRadius = 0; + circleVelocity[] = {0, 0, 0}; + particleShape = QUOTE(PATHTOF(data\smoke.p3d)); + particleFSNtieth = 1; + particleFSIndex = 0; + particleFSFrameCount = 1; + particleFSLoop = 0; + angleVar = 0.1; + animationName = ""; + particleType = "Billboard"; + timerPeriod = 1; + lifeTime = 30; + lifeTimeVar = 2; + animationSpeed[] = {1}; + animationSpeedCoef = 1; + randomDirectionPeriod = 1; + randomDirectionPeriodVar = 0; + randomDirectionIntensity = 0.2; + randomDirectionIntensityVar = 0; + destroyOnWaterSurface = 1; + destroyOnWaterSurfaceOffset = -0.6; + positionVar[] = {0, 0, 0}; + moveVelocityVar[] = {0.25, 0.25, 0.25}; + colorVar[] = {0, 0, 0, 0}; + color[] = { + {0.5, 0.5, 0.5, 1}, + {0.5, 0.5, 0.5, 0.7}, + {0.5, 0.5, 0.5, 0.5}, + {0.5, 0.5, 0.5, 0.5}, + {0.5, 0.5, 0.5, 0.1}, + {0.5, 0.5, 0.5, 0} + }; + size[] = {0.05, 7, 15, 20}; + sizeVar = 0.5; + weight = 1.2777; + moveVelocity[] = {0, 0, 0}; + rotationVelocity = 0; + rotationVelocityVar = 20; + volume = 1; + rubbing = 0.1; + onTimerScript = ""; + beforeDestroyScript = ""; + blockAIVisibility = 1; + }; + class ACE_SmokeBaseSmall: ACE_SmokeBaseLarge { + size[] = {0.05, 5, 7.5, 10}; + }; + + // - Artillery smoke ------------------------------------------------------ + class ACE_SmokeBaseArtilleryLarge: ACE_SmokeBaseLarge { + lifeTime = 45; + }; + class ACE_SmokeBaseArtillerySmall: ACE_SmokeBaseSmall { + lifeTime = 45; + }; + + // - Smoke on water surface ----------------------------------------------- + class ACE_SmokeAfterWater: ACE_SmokeBaseLarge { + interval = 0.05; + size[] = {0.05, 2, 5}; + sizeVar = 1; + lifeTime = 10; + color[] = { + {0.5, 0.5, 0.5, 0.07}, + {0.5, 0.5, 0.5, 0} + }; + moveVelocityVar[] = {0, 0, 0}; + colorCoef[] = {1, 1, 1, 1}; + }; + class ACE_SmokeAfterWaterRed: ACE_SmokeAfterWater { + colorCoef[] = {0.9528, 0.0438, 0.0410, 1}; + }; + class ACE_SmokeAfterWaterGreen: ACE_SmokeAfterWater { + colorCoef[] = {0.0328, 0.1626, 0.1023, 1}; + }; + class ACE_SmokeAfterWaterYellow: ACE_SmokeAfterWater { + colorCoef[] = {0.9610, 0.4505, 0.0109, 1}; + }; + class ACE_SmokeAfterWaterPurple: ACE_SmokeAfterWater { + colorCoef[] = {0.4622, 0.0578, 0.3154, 1}; + }; + class ACE_SmokeAfterWaterBlue: ACE_SmokeAfterWater { + colorCoef[] = {0.0355, 0.1863, 1.0000, 1}; + }; + class ACE_SmokeAfterWaterOrange: ACE_SmokeAfterWater { + colorCoef[] = {0.9132, 0.1763, 0.0070, 1}; + }; + class SmokeShellWhiteUW; + class SmokeShellWhite2UW: SmokeShellWhiteUW { + postEffects = "ACE_SmokeAfterWater"; + }; + class SmokeShellRedUW; + class SmokeShellRed2UW: SmokeShellRedUW { + postEffects = "ACE_SmokeAfterWaterRed"; + }; + class SmokeShellGreenUW; + class SmokeShellGreen2UW: SmokeShellGreenUW { + postEffects = "ACE_SmokeAfterWaterGreen"; + }; + class SmokeShellYellowUW; + class SmokeShellYellow2UW: SmokeShellYellowUW { + postEffects = "ACE_SmokeAfterWaterYellow"; + }; + class SmokeShellPurpleUW; + class SmokeShellPurple2UW: SmokeShellPurpleUW { + postEffects = "ACE_SmokeAfterWaterPurple"; + }; + class SmokeShellBlueUW; + class SmokeShellBlue2UW: SmokeShellBlueUW { + postEffects = "ACE_SmokeAfterWaterBlue"; + }; + class SmokeShellOrangeUW; + class SmokeShellOrange2UW: SmokeShellOrangeUW { + postEffects = "ACE_SmokeAfterWaterOrange"; + }; +}; diff --git a/addons/particles/Effects.hpp b/addons/particles/Effects.hpp new file mode 100644 index 0000000000..153416f063 --- /dev/null +++ b/addons/particles/Effects.hpp @@ -0,0 +1,65 @@ +class SmokeShellWhiteEffect { + class SmokeShell { + type = "ACE_SmokeBaseLarge"; + }; + class SmokeShell2 { + type = "ACE_SmokeBaseSmall"; + }; +}; + +class ACE_ArtillerySmoke { + class SmokeShell { + type = "ACE_SmokeBaseArtilleryLarge"; + simulation = "particles"; + position[] = {0, 0, 0}; + intensity = 1; + interval = 1; + }; + class SmokeShell2 { + type = "ACE_SmokeBaseArtillerySmall"; + simulation = "particles"; + position[] = {0, 0, 0}; + intensity = 1; + interval = 1; + }; +}; + +class ACE_SmokeAfterWater { + class SmokeAfterWater { + type = "ACE_SmokeAfterWater"; + simulation = "particles"; + position[] = {0, 0, 0}; + intensity = 1; + interval = 1; + }; +}; +class ACE_SmokeAfterWaterRed: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterRed"; + }; +}; +class ACE_SmokeAfterWaterGreen: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterGreen"; + }; +}; +class ACE_SmokeAfterWaterYellow: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterYellow"; + }; +}; +class ACE_SmokeAfterWaterPurple: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterPurple"; + }; +}; +class ACE_SmokeAfterWaterOrange: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterOrange"; + }; +}; +class ACE_SmokeAfterWaterBlue: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterBlue"; + }; +}; diff --git a/addons/particles/config.cpp b/addons/particles/config.cpp new file mode 100644 index 0000000000..c7f5828046 --- /dev/null +++ b/addons/particles/config.cpp @@ -0,0 +1,18 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author = ECSTRING(common,ACETeam); + authors[] = {""}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgAmmo.hpp" +#include "CfgCloudlets.hpp" +#include "Effects.hpp" diff --git a/addons/particles/data/smoke.p3d b/addons/particles/data/smoke.p3d new file mode 100644 index 0000000000000000000000000000000000000000..c1617a0e33ed0b9f8a3d0c9d34d55b646534a4e0 GIT binary patch literal 390 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

-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

-7F{N_Ux=*hf&`{ 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 Ju@^L4{{xDV1$+Pi literal 0 HcmV?d00001 diff --git a/addons/particles/script_component.hpp b/addons/particles/script_component.hpp new file mode 100644 index 0000000000..3afc7af7e3 --- /dev/null +++ b/addons/particles/script_component.hpp @@ -0,0 +1,17 @@ +#define COMPONENT particles +#include "\z\ace\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define CBA_DEBUG_SYNCHRONOUS +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_PARTICLES + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_PARTICLES + #define DEBUG_SETTINGS DEBUG_SETTINGS_PARTICLES +#endif + +#include "\z\ace\addons\main\script_macros.hpp"