Skip to content
Open
11 changes: 6 additions & 5 deletions cScripts/CfgFunctions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ class cScripts {
class init_aceTagging {};
class init_aceItemReplace {};

class init_simulation {};

class init_skillAdjustment {};
class init_vehicle {};
class init_staging {};
Expand Down Expand Up @@ -97,7 +99,7 @@ class cScripts {
class addHaloJump {};

class setVehicleLable {};

class addBaseCrate {};
class addStagingZone {};

Expand Down Expand Up @@ -138,7 +140,6 @@ class cScripts {
class addReGear {};
class addHeal {};
class addArsenal {};

class createActionCategory {};

class doGetOutHeloSide {};
Expand All @@ -151,13 +152,13 @@ class cScripts {
class getRadioBase {};

class isValidFaction {};

class createVehicleLable {};
class getVehicleLable {};

class renameObject {};
class getIcon {};

class getAttendance {};
class getServerMetrics {};
};
Expand Down Expand Up @@ -192,7 +193,7 @@ class cScripts {
};
class modules {
file = "cScripts\functions\modules";
class zenModule_EnableUnitSimulation {};
class zenModule_toggleUnitSimulation {};

class zenModule_CreateFieldHospital {};
class zenModule_CreateMedicalCrate {};
Expand Down
21 changes: 19 additions & 2 deletions cScripts/cScripts_preInit.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -332,13 +332,25 @@ private _cScriptSettings = "cScripts Mission Settings";
true
] call CBA_fnc_addSetting;

// 9; Performance
[ // Dynamic Simulation
QEGVAR(Settings,dynamicSimulation),
"LIST",
["Dynamic Simulation (Experimental)","Enable Dynamic Simulation for Eden and zeus spawned objects automatically\n"],
[_cScriptSettings, "9; Performance"],
[[0,1], ["Disabled", "Enabled"], 0],
true,
{},
true
] call CBA_fnc_addSetting;


// 9; Other
// 10; Other
[ // Primary Clan Tag
QEGVAR(Settings,primaryClanTag),
"EDITBOX",
["Primary Clantag","Primary clan tag to to check for"],
[_cScriptSettings, "9; Other"],
[_cScriptSettings, "10; Other"],
'7CAV',
true,
{},
Expand Down Expand Up @@ -376,4 +388,9 @@ if (EGVAR(Settings,setAiSystemDifficulty) >= 1 ) then {

call EFUNC(init,eventHandlers);

// Dynamic Simulation handler
if (EGVAR(Settings,dynamicSimulation) >= 1) then {
call EFUNC(init,simulation);
};

INFO("preInit", "Initialization completed.");
7 changes: 7 additions & 0 deletions cScripts/functions/init/fn_init_chatCommands.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,10 @@
["attendance", {
[QGVAR(getAttendance)] call CBA_fnc_localEvent;
}, "all"] call CBA_fnc_registerChatCommand;

["enableAI", {
//[QGVAR(getAttendance)] call CBA_fnc_localEvent;
}, "all"] call CBA_fnc_registerChatCommand;
["disableAI", {
//[QGVAR(getAttendance)] call CBA_fnc_localEvent;
}, "all"] call CBA_fnc_registerChatCommand;
186 changes: 186 additions & 0 deletions cScripts/functions/init/fn_init_simulation.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
#define DEBUG_MODE
#include "..\script_component.hpp";
/*
* Author: CPL.Brostrom.A
* This function add eventhandelers adding cav functionality to units and vehicles.
*
* Return Value:
* Nothing
*
* Example:
* call EFUNC(init,simulation)
*
* Public: No
*/

if (EGVAR(Settings,dynamicSimulation) == 0) exitWith {};

INFO("DynamicSimulation", "Dynamic Simulation Enabled");

// System Values
"Group" setDynamicSimulationDistance 1800;
"Vehicle" setDynamicSimulationDistance 2400;
"EmptyVehicle" setDynamicSimulationDistance 250;
"Prop" setDynamicSimulationDistance 50;
"IsMoving" setDynamicSimulationDistanceCoef 3;

enableDynamicSimulationSystem true;

// Enables player trigger for dynamic simulation
player triggerDynamicSimulation true;



// Handle AA units
private _antiAircraftUnits = [];
{
private _name = configName _x;
private _nameLower = toLower _name;
if (["_aa", _nameLower] call BIS_fnc_inString) then {
if ((["_aaf", _nameLower] call BIS_fnc_inString)) then {
if (["_aa_aaf", _nameLower] call BIS_fnc_inString) then {
LOG_1("DEBUG", "AA UNIT: %1 (_aa_aaf)", _name);
_antiAircraftUnits append [_name];
continue
};
};
if (["_aa_", _nameLower] call BIS_fnc_inString) then {
LOG_1("DEBUG", "AA UNIT: %1 (_aa_)", _name);
_antiAircraftUnits append [_name];
continue
};
};
if (["zu23", _nameLower] call BIS_fnc_inString) then {
LOG_1("DEBUG", "AA UNIT: %1 (zu23)", _name);
_antiAircraftUnits append [_name];
continue
};
} forEach ("configName _x isKindOf 'LandVehicle' or configName _x isKindOf 'man'" configClasses (configFile >> "CfgVehicles"));

// Apply event handlers to objects
INFO("DynamicSimulation", "Applying Event Handers (init) to mission objects...");

["CAManBase", "init", {
params ["_unit"];
if (!isPlayer _unit) then {_unit triggerDynamicSimulation false};
INFO_2("DynamicSimulation", "Enabling dynamic simulation system for unit %1 (%2)", _unit, typeOf _unit);
group _unit enableDynamicSimulation true;
_unit enableDynamicSimulation true;
}, true, [], true] call CBA_fnc_addClassEventHandler;
["Tank", "init", {
params ["_vehicle"];
_vehicle triggerDynamicSimulation false;
INFO_2("DynamicSimulation", "Enabling dynamic simulation system for vehicle %1 (%2)", _vehicle, typeOf _vehicle);
_vehicle enableDynamicSimulation true;
}, true, [], true] call CBA_fnc_addClassEventHandler;
["Car", "init", {
params ["_vehicle"];
INFO_2("DynamicSimulation", "Enabling dynamic simulation system for vehicle %1 (%2)", _vehicle, typeOf _vehicle);
_vehicle triggerDynamicSimulation false;
_vehicle enableDynamicSimulation true;
}, true, [], true] call CBA_fnc_addClassEventHandler;
["Ship", "init", {
params ["_vehicle"];
INFO_2("DynamicSimulation", "Enabling dynamic simulation system for vehicle %1 (%2)", _vehicle, typeOf _vehicle);
_vehicle triggerDynamicSimulation false;
_vehicle enableDynamicSimulation true;
}, true, [], true] call CBA_fnc_addClassEventHandler;
["Thing", "init", {
params ["_object"];
INFO_2("DynamicSimulation", "Enabling dynamic simulation system for object %1 (%2)", _object, typeOf _object);
_object triggerDynamicSimulation false;
_object enableDynamicSimulation true;
}, true, [], true] call CBA_fnc_addClassEventHandler;
["ThingX", "init", {
params ["_object"];
INFO_2("DynamicSimulation", "Enabling dynamic simulation system for object %1 (%2)", _object, typeOf _object);
_object triggerDynamicSimulation false;
_object enableDynamicSimulation true;
}, true, [], true] call CBA_fnc_addClassEventHandler;


// Enabling animations for AA and Airframes
["CAManBase", "init", {
params ["_unit"];
if (typeOf _unit in _antiAircraftUnits) exitWith {
[{
params ["_unit"];
INFO_2("DynamicSimulation", "Dynamic simulation system disabeld for Anti Aircraft unit %1 (%2)", _unit, typeOf _unit);
_unit enableDynamicSimulation false;
group _unit enableDynamicSimulation false;
{
group _x enableDynamicSimulation false;
_x enableDynamicSimulation false;
} forEach crew _vehicle;
}, [_unit], 2] call CBA_fnc_waitAndExecute;
};
}, true, [], true] call CBA_fnc_addClassEventHandler;
["Tank", "init", {
params ["_vehicle"];
if (typeOf _vehicle in _antiAircraftUnits) exitWith {
[{
params ["_vehicle"];
INFO_2("DynamicSimulation", "Dynamic simulation system disabeld for Anti Aircraft vehicle %1 (%2)", _vehicle, typeOf _vehicle);
_vehicle enableDynamicSimulation false;
group _unit enableDynamicSimulation false;
{
group _x enableDynamicSimulation false;
_x enableDynamicSimulation false;
} forEach crew _vehicle;
}, [_vehicle], 2] call CBA_fnc_waitAndExecute;
};
}, true, [], true] call CBA_fnc_addClassEventHandler;
["Car", "init", {
params ["_vehicle"];
if (typeOf _vehicle in _antiAircraftUnits) exitWith {
[{
params ["_vehicle"];
INFO_2("DynamicSimulation", "Dynamic simulation system disabeld for Anti Aircraft vehicle %1 (%2)", _vehicle, typeOf _vehicle);
_vehicle enableDynamicSimulation false;
group _unit enableDynamicSimulation false;
{
group _x enableDynamicSimulation false;
_x enableDynamicSimulation false;
} forEach crew _vehicle;
}, [_vehicle], 2] call CBA_fnc_waitAndExecute;
};
}, true, [], true] call CBA_fnc_addClassEventHandler;
["Air", "init", {
params ["_vehicle"];
[{
params ["_vehicle"];
{
INFO_1("DynamicSimulation", "Disabling DynamicSimulation for aircrew unit: %1", _x);
group (_x) enableDynamicSimulation false;
_x enableDynamicSimulation false;
} forEach crew _vehicle;
}, [_vehicle], 3] call CBA_fnc_waitAndExecute;
}, true, [], true] call CBA_fnc_addClassEventHandler;


// Handle aircraft and death
player addEventHandler ["GetInMan", {
params ["_unit", "_role", "_vehicle", "_turret"];
if (isPlayer _unit) then {
if (_vehicle isKindOf "Air") then {
INFO_2("DynamicSimulation", "Disabled simulation activation for %1 (%2) due to entre aircraft", _unit, typeof _unit);
_unit triggerDynamicSimulation false;
};
};
}];
player addEventHandler ["GetOutMan", {
params ["_unit", "_role", "_vehicle", "_turret"];
if (isPlayer _unit) then {
if (_vehicle isKindOf "Air") then {
INFO_2("DynamicSimulation", "Enabled simulation activation for %1 (%2) due to exit aircraft", _unit, typeof _unit);
_unit triggerDynamicSimulation true;
};
};
}];
player addEventHandler ["Killed", {
params ["_unit", "_killer", "_instigator", "_useEffects"];
if (isPlayer _unit) then {
INFO_2("DynamicSimulation", "Enabled simulation activation for %1 (%2) due to death", _unit, typeof _unit);
_unit triggerDynamicSimulation true;
};
}];
4 changes: 2 additions & 2 deletions cScripts/functions/init/fn_init_zenModuels.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ if !(EGVAR(Settings,enable7cavZeusModules)) exitWith {};

INFO("init", "Initializing custom Zen Modules.");

["7Cav AI", "Enable Unit Simulation",
["7Cav AI", "Toggle Unit Simulation",
{
params ["_modulePos", "_objectPos"];
[_modulePos, _objectPos] call EFUNC(zenModule,EnableUnitSimulation);
[_modulePos, _objectPos] call EFUNC(zenModule,toggleUnitSimulation);
},
"\A3\ui_f\data\map\vehicleicons\iconManVirtual_ca.paa"
] call zen_custom_modules_fnc_register;
Expand Down
36 changes: 0 additions & 36 deletions cScripts/functions/modules/fn_zenModule_enableUnitSimulation.sqf

This file was deleted.

46 changes: 46 additions & 0 deletions cScripts/functions/modules/fn_zenModule_toggleUnitSimulation.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#include "..\script_component.hpp";
/*
* Author: CPL.Brostrom.A
* This module function enables adn unhide a units, vehicle and its group;
* that have been hidden and disabled by simulation manager and dynamic simulation.
*
* Arguments:
* 0: modulePos <POSITION>
* 1: objectPos <OBJECT>
*
* Example:
* [getPos logic, this] call cScripts_fnc_zenModule_enableUnitSimulation
*
* Public: No
*/

params ["_modulePos", "_objectPos"];

if (isNull _objectPos) exitWith {
["Not a valid unit"] call zen_common_fnc_showMessage;
};

if ((isObjectHidden _objectPos) || !(simulationEnabled _objectPos)) then {
_objectPos enableDynamicSimulation false;
[_objectPos, true] remoteExec ["enableSimulationGlobal", 2];
[_objectPos, false] remoteExec ["hideObjectGlobal", 2];

group _objectPos enableDynamicSimulation false;
{
[_x, true] remoteExec ["enableSimulationGlobal", 2];
[_x, false] remoteExec ["hideObjectGlobal", 2];
_objectPos enableDynamicSimulation false;
} forEach units group _objectPos;

["Unit group have been enabled, revealed and have it's dynamic simulation disabled"] call zen_common_fnc_showMessage;
} else {
_objectPos enableDynamicSimulation true;

group _objectPos enableDynamicSimulation true;
{
_objectPos enableDynamicSimulation true;
} forEach units group _objectPos;

["Unit group have been disabled and have its dynamic simulation enabled"] call zen_common_fnc_showMessage;
};