SOG Compat - Add interaction anims to SOG vehicles (#10223)

This commit is contained in:
johnb432 2024-08-22 02:57:30 +02:00 committed by GitHub
parent abced51bb0
commit e798050a00
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 590 additions and 7 deletions

View File

@ -1,18 +1,55 @@
// M113A1 https://man.fas.org/dod-101/sys/land/m113.htm
class Tank_F;
class APC_Tracked_01_base_F: Tank_F {
class ACE_Actions;
};
class vn_armor_m113_base: APC_Tracked_01_base_F {
EGVAR(refuel,fuelCapacity) = 360;
class ACE_Actions: ACE_Actions {
class ACE_MainActions;
};
};
class vn_armor_m577_base: vn_armor_m113_base {
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
position = "[0, 3.5, -1]";
};
};
};
// M41
class vn_armor_tank_base;
class vn_armor_m41_base: vn_armor_tank_base {
EGVAR(refuel,fuelCapacity) = 530;
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
EGVAR(refuel,fuelCapacity) = 545;
// M48
class vn_armor_m48_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_backpacks {
// Rotate interactions with turret rotation
positions[] = {
"[[-1.3, -0.7, -0.4], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D",
"[[0.1, -2, -0.2], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D"
};
items[] = {"vn_b_pack_02_02", "vn_b_pack_04_02"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
// M113A1 https://man.fas.org/dod-101/sys/land/m113.htm
class APC_Tracked_01_base_F;
class vn_armor_m113_base: APC_Tracked_01_base_F {
EGVAR(refuel,fuelCapacity) = 360;
// T-54
class vn_armor_t54_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_backpacks {
// Rotate interactions with turret rotation
positions[] = {"[0, -0.2, 0] vectorAdd ([[-1.1, -0.85, -1.3], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"};
items[] = {"vn_o_pack_01", "vn_o_pack_02"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
// PT-76A https://en.wikipedia.org/wiki/PT-76
@ -24,3 +61,8 @@ class vn_armor_pt76_base: vn_armor_tank_base {
class vn_armor_pt76b_base: vn_armor_pt76_base {
EGVAR(refuel,fuelCapacity) = 400;
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
EGVAR(refuel,fuelCapacity) = 545;
};

View File

@ -0,0 +1,163 @@
class CfgVehicles {
// Vehicle animation interactions
// BTR-40
class vn_wheeled_car_base;
class vn_wheeled_btr40_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class refuel_can_hide {
positions[] = {{0.7, -2.35, -0.9}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class vn_wheeled_btr40_01_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.72, -2.35, -0.45}};
};
};
};
class vn_wheeled_btr40_ambulance_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.72, -2.35, -0.45}};
};
};
};
class vn_wheeled_btr40_mg_01_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.72, -2.35, -0.9}};
};
};
};
class vn_wheeled_btr40_mg_03_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.82, -2.35, -1.25}};
};
};
};
class vn_wheeled_btr40_mg_04_base: vn_wheeled_btr40_mg_01_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.72, -2.35, -1}};
};
};
};
class vn_wheeled_btr40_mg_05_base: vn_wheeled_btr40_mg_04_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.65, -2.25, -1}};
};
};
};
// M151
class vn_wheeled_m151_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class user_refuel_can_hide {
positions[] = {{-0.48, -1.5, -1.1}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class vn_wheeled_m151_mg_03_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_refuel_can_hide: user_refuel_can_hide {
positions[] = {{-0.75, -1.5, -1}};
};
};
};
class vn_wheeled_m151_mg_05_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_refuel_can_hide: user_refuel_can_hide {
positions[] = {{0.9, -0.1, -1.1}};
};
};
};
class vn_wheeled_m151_mg_06_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_refuel_can_hide: user_refuel_can_hide {
positions[] = {{0.3, 0.1, -1.1}};
};
};
};
class vn_wheeled_m151_01_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_refuel_can_hide: user_refuel_can_hide {
positions[] = {{-0.4, -1.5, -0.7}};
};
};
};
// M577
class vn_armor_m113_base;
class vn_armor_m577_base: vn_armor_m113_base {
class EGVAR(interaction,anims) {
class hide_fuel_cans {
selections[] = {"hide_fuel_cans"};
positions[] = {{1.07, 1.05, -1}};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// M48
class vn_armor_tank_base;
class vn_armor_m48_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_jerrycan {
positions[] = {"_target selectionPosition ['hide_jerrycan', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// BTR-50PK
class vn_armor_btr50pk_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_barrels {
selections[] = {"hide_barrels"};
positions[] = {"private _pos = _target selectionPosition 'hide_barrels'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// PT-76
class vn_armor_pt76_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_barrels {
selections[] = {"hide_barrels"};
positions[] = {"private _pos = _target selectionPosition 'hide_barrels'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_barrels {
selections[] = {"hide_barrels"};
positions[] = {"private _pos = _target selectionPosition 'hide_barrels'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
};

View File

@ -0,0 +1,18 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"loadorder_f_vietnam", "ace_refuel"};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"johnb43"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,3 @@
#define SUBCOMPONENT refuel
#define SUBCOMPONENT_BEAUTIFIED refuel
#include "..\script_component.hpp"

View File

@ -0,0 +1,141 @@
class CfgVehicles {
// Vehicle animation interactions
// M39 / M54 / M49
class vn_wheeled_truck_base;
class vn_wheeled_m54_base: vn_wheeled_truck_base {
class EGVAR(interaction,anims) {
class user_sparewheel_hide {
positions[] = {"_target selectionPosition ['hide_spare_wheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class vn_wheeled_m54_mg_01_base: vn_wheeled_m54_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_sparewheel_hide: user_sparewheel_hide {
items[] = {"ACE_Wheel", "ACE_Wheel", "ACE_Wheel", "ACE_Wheel"};
};
};
};
// M151
class vn_wheeled_car_base;
class vn_wheeled_m151_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class user_sparewheel_hide {
positions[] = {"_target selectionPosition ['hide_sparewheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
// Dirt Ranger
class vn_wheeled_lr2a_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class hide_sparewheel {
positions[] = {"_target selectionPosition ['hide_sparewheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
// BTR-40
class vn_wheeled_btr40_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class sparewheel_hide {
positions[] = {"_target selectionPosition ['hide_sparewheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
// M48
class vn_armor_tank_base;
class vn_armor_m48_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_tracks {
// Rotate interactions with turret rotation
positions[] = {
"[[1.3, 0.2, -0.5], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D",
"[[-1.3, 0.2, -0.5], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D"
};
items[] = {"ACE_Track", "ACE_Track", "ACE_Track", "ACE_Track", "ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
// BTR-50PK
class vn_armor_btr50pk_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_tracks {
positions[] = {{1.35, 2.5, -0.5}};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
class vn_armor_btr50pk_01_base: vn_armor_btr50pk_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tracks: hide_tracks {
positions[] = {{1.35, 2.5, -0.8}};
};
};
};
class vn_armor_btr50pk_02_base: vn_armor_btr50pk_01_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tracks: hide_tracks {
positions[] = {{1.35, 2.9, -0.8}};
};
};
};
// T-54
class vn_armor_t54_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_tracks {
positions[] = {{1.4, 2.1, -1.7}};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
// PT-76
class vn_armor_pt76_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_tracks {
// Rotate interactions with turret rotation
positions[] = {"[0, 0.9, 0] vectorAdd ([[-0.6, -0.9, -0.3], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_tracks {
// Rotate interactions with turret rotation
positions[] = {"[0, 0.7, 0] vectorAdd ([[0.4, -1.1, -0.4], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
};

View File

@ -0,0 +1,18 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"loadorder_f_vietnam", "ace_repair"};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"johnb43"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,3 @@
#define SUBCOMPONENT repair
#define SUBCOMPONENT_BEAUTIFIED Repair
#include "..\script_component.hpp"

View File

@ -60,4 +60,199 @@ class CfgVehicles {
class EGVAR(compat_sog,spiderhole_03_nogeo): vn_o_vc_spiderhole_03 {
scope = 1;
};
// Vehicle animation interactions
// BTR-40
class vn_wheeled_car_base;
class vn_wheeled_btr40_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class shovel_hide {
positions[] = {{0.95, -1.5, -0.75}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class vn_wheeled_btr40_01_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.95, -1.5, -0.3}};
};
};
};
class vn_wheeled_btr40_ambulance_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.95, -1.5, -0.3}};
};
};
};
class vn_wheeled_btr40_mg_01_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.95, -1.5, -0.8}};
};
};
};
class vn_wheeled_btr40_mg_03_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{1.05, -1.55, -1.1}};
};
};
};
class vn_wheeled_btr40_mg_04_base: vn_wheeled_btr40_mg_01_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.95, -1.5, -0.85}};
};
};
};
class vn_wheeled_btr40_mg_05_base: vn_wheeled_btr40_mg_04_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.9, -1.4, -0.85}};
};
};
};
// Dirt Ranger
class vn_wheeled_lr2a_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {"_target selectionPosition ['hide_shovel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// M151
class vn_wheeled_m151_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class user_shovel_hide {
positions[] = {{0.65, 0.2, -1.4}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class vn_wheeled_m151_mg_03_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_shovel_hide: user_shovel_hide {
positions[] = {{0.35, 0.2, -1.27}};
};
};
};
class vn_wheeled_m151_mg_05_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_shovel_hide: user_shovel_hide {
enabled = 0;
};
};
};
class vn_wheeled_m151_mg_06_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_shovel_hide: user_shovel_hide {
enabled = 0;
};
};
};
class vn_wheeled_m151_01_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_shovel_hide: user_shovel_hide {
positions[] = {{0.72, 0.2, -0.92}};
};
};
};
// M113
class APC_Tracked_01_base_F;
class vn_armor_m113_base: APC_Tracked_01_base_F {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {{0.2, 2.2, -0.5}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class vn_armor_m113_01_base: vn_armor_m113_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_shovel: hide_shovel {};
};
};
class vn_armor_m132_base: vn_armor_m113_01_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_shovel: hide_shovel {
positions[] = {{0.2, 2.2, -0.35}};
};
};
};
// Don't inherit, as it's easier for the refuel compat
// M577
class vn_armor_m577_base: vn_armor_m113_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {{0.2, 5.05, -0.57}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// M48
class vn_armor_tank_base;
class vn_armor_m48_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_tools {
positions[] = {"_target selectionPosition ['hide_tools', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// BTR-50PK
class vn_armor_btr50pk_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {"_target selectionPosition ['hide_shovel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool", "ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// PT-76
class vn_armor_pt76_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {"_target selectionPosition ['hide_shovel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {"_target selectionPosition ['hide_shovel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
};