From b13d44fb6b1883f12a9aabc12d5af97efa444907 Mon Sep 17 00:00:00 2001 From: jaynus Date: Wed, 13 May 2015 17:29:09 -0700 Subject: [PATCH] Fixed: Litter spawning at huge radius, floating litter over water. Fixes #1112 --- addons/medical/functions/fnc_createLitter.sqf | 12 +++++++++--- addons/medical/functions/fnc_handleCreateLitter.sqf | 5 ++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf index 8682cc24d5..6797785763 100644 --- a/addons/medical/functions/fnc_createLitter.sqf +++ b/addons/medical/functions/fnc_createLitter.sqf @@ -38,12 +38,18 @@ _litter = getArray (_config >> "litter"); _createLitter = { private["_position", "_litterClass", "_direction"]; - _position = getPos (_this select 0); + + // @TODO: handle carriers over water + // For now, don't spawn litter if we are over water to avoid floating litter + if(surfaceIsWater (getPos (_this select 0))) exitWith { false }; + + _position = getPosATL (_this select 0); + _position = [_position select 0, _position select 1, 0]; _litterClass = _this select 1; if (random(1) >= 0.5) then { - _position = [(_position select 0) + random 2, (_position select 1) + random 2, _position select 2]; + _position = [(_position select 0) + random 1, (_position select 1) + random 1, _position select 2]; } else { - _position = [(_position select 0) - random 2, (_position select 1) - random 2, _position select 2]; + _position = [(_position select 0) - random 1, (_position select 1) - random 1, _position select 2]; }; _direction = (random 360); diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf index 617d05e519..848bdb268c 100644 --- a/addons/medical/functions/fnc_handleCreateLitter.sqf +++ b/addons/medical/functions/fnc_handleCreateLitter.sqf @@ -14,7 +14,10 @@ if (isNil QGVAR(allCreatedLitter)) then { _litterObject = _litterClass createVehicleLocal _position; _litterObject setDir _direction; - +_litterObject setPosATL _position; +// Move the litter next frame to get rid of HORRIBLE spacing, fixes #1112 +[{ (_this select 0) setPosATL (_this select 1); }, [_litterObject, _position], 0, 0] call EFUNC(common,waitAndExecute); + _maxLitterCount = getArray (configFile >> "ACE_Settings" >> QGVAR(litterSimulationDetail) >> "_values") select GVAR(litterSimulationDetail); if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then { // gank the first litter object, and spawn ours.