diff --git a/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf b/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf index 55648219..ab6717fa 100644 --- a/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf +++ b/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf @@ -23,7 +23,7 @@ NOTHING */ //[[[cog import generate_private_arrays ]]] -private ["_AnchorPos","_EPOCH_1","_EPOCH_2","_MoveObject","_Snapdirection","_allowedSnapObjects","_allowedSnapPoints","_arr_snapPoints","_baselineSnapPos","_cfgBaseBuilding","_class","_currentOffSet","_currentPos","_currentTarget","_currentTargetAttachedTo","_dir2","_direction","_distance","_energyCost","_helper","_ins","_isSnap","_lastCheckTime","_maxHeight","_maxSnapDistance","_nearestObject","_nearestObjects","_newDirAndUp","_numberOfContacts","_objSlot","_objType","_offSet","_offsetZPos","_pOffset","_pos1_snap","_pos2","_pos2ATL","_pos2_snap","_pos_snapObj","_rejectMove","_simulClass","_snapChecks","_snapConfig","_snapDistance","_snapPointsPara","_snapPointsPerp","_snapPos","_snapPos1","_snapPosition","_snapType","_snapped","_stabilityCheck","_worldspace"]; +private ["_AnchorPos","_EPOCH_1","_EPOCH_2","_MoveObject","_Snapdirection","_allowedSnapObjects","_allowedSnapPoints","_arr_snapPoints","_baselineSnapPos","_cfgBaseBuilding","_class","_currentOffSet","_currentPos","_currentTarget","_currentTargetAttachedTo","_dir2","_direction","_distance","_energyCost","_helper","_ins","_isSnap","_lastCheckTime","_maxHeight","_maxSnapDistance","_nearestObject","_nearestObjects","_newDirAndUp","_numberOfContacts","_objSlot","_objType","_offSet","_offsetZPos","_pOffset","_pos1_snap","_pos2","_pos2ATL","_pos2_snap","_pos_snapObj","_rejectMove","_simulClass","_snapChecks","_snapConfig","_snapDistance","_snapPointsPara","_snapPointsPerp","_snapPos","_snapPos1","_snapPosition","_snapType","_snapped","_stabilityCheck","_worldspace","_snapMemoryPoint","_vectorDir","_vectorUp","_tempClass","_newDir"]; //[[[end]]] if !(isNil "EPOCH_simulSwap_Lock") exitWith{}; @@ -110,6 +110,7 @@ if (_class != "") then { EPOCH_buildDirectionRoll = 0; EPOCH_target_attachedTo = player; EP_snap = objNull; + EPOCH_tempTarget = objNull; EP_snapPos = [0, 0, 0]; _isSnap = false; _currentOffSet = []; @@ -293,18 +294,25 @@ if (_class != "") then { if(!(_vectorUp select 0 == 0) || !(_vectorUp select 1 == 0) || !( _vectorUp select 2 == 1)) then{ if(_snapType isEqualTo "perp")then{ if(_snapMemoryPoint in ["W","E"])then{ - _nearestObject setDir ((getDir _nearestObject) + (EPOCH_snapDirection * 90)); + _tempClass = getText(_cfgBaseBuilding >> (typeOf _nearestObject) >> "GhostPreview"); + EPOCH_tempTarget = _tempClass createVehicleLocal [0,0,0]; + EPOCH_tempTarget setPosATL (getPosATL _nearestObject); + EPOCH_tempTarget setVectorDirAndUp [_vectorDir, _vectorUp]; + EPOCH_tempTarget setDir ((getDir _nearestObject) + (EPOCH_snapDirection * 90)); + _newDir = vectorDir EPOCH_tempTarget; + _vectorDir = _newDir; }; }; - _newDir = vectorDir _nearestObject; - _nearestObject setVectorDirAndUp [_vectorDir,_vectorUp]; - _vectorDir = _newDir; _currentTarget setposATL _snapPosition; _currentTarget setDir ((getDir _currentTarget) + (EPOCH_snapDirection * 90)); _currentTarget setVectorDirAndUp [_vectorDir,_vectorUP]; }; _snapped = true; + if(!isNil "EPOCH_tempTarget")then{ + deleteVehicle EPOCH_tempTarget; + EPOCH_tempTarget = objNull; + }; _arr_snapPoints = []; EPOCH_arr_snapPoints = []; {