mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-15 04:23:13 +03:00
Move unused functions to another folder
This commit is contained in:
108
SQF/dayz_code/old/fn_collisions.sqf
Normal file
108
SQF/dayz_code/old/fn_collisions.sqf
Normal file
@@ -0,0 +1,108 @@
|
||||
#include "\z\addons\dayz_code\util\Vector.hpp"
|
||||
|
||||
_project =
|
||||
{
|
||||
private ["_verts","_axis","_min","_max"];
|
||||
local _verts = +(_this select 0);
|
||||
local _axis = _this select 1;
|
||||
|
||||
{ _verts set [_foreachIndex, Vector_DotProduct_Fast(_axis, _x)] } foreach _verts;
|
||||
|
||||
local _min = _verts select 0;
|
||||
local _max = _min;
|
||||
|
||||
{
|
||||
if (_x < _min) then
|
||||
{ _min = _x };
|
||||
|
||||
if (_x > _max) then
|
||||
{ _max = _x };
|
||||
}
|
||||
foreach _verts;
|
||||
|
||||
[_min, _max]
|
||||
};
|
||||
|
||||
_notOverlap =
|
||||
{
|
||||
#define AMIN (_this select 0 select 0)
|
||||
#define AMAX (_this select 0 select 1)
|
||||
#define BMIN (_this select 1 select 0)
|
||||
#define BMAX (_this select 1 select 1)
|
||||
|
||||
AMAX < BMIN || AMIN > BMAX
|
||||
};
|
||||
|
||||
_boundingBoxVertices =
|
||||
{
|
||||
private ["_min","_max","_verts","_v"];
|
||||
local _min = _this select 0;
|
||||
local _max = _this select 1;
|
||||
local _verts = [_min, _max];
|
||||
_verts resize 8;
|
||||
|
||||
local _v = +_min;
|
||||
_v set [0, _max select 0];
|
||||
_verts set [2, +_v];
|
||||
_v set [1, _max select 1];
|
||||
_verts set [3, +_v];
|
||||
|
||||
_v = +_min;
|
||||
_v set [1, _max select 1];
|
||||
_verts set [4, +_v];
|
||||
_v set [2, _max select 2];
|
||||
_verts set [5, +_v];
|
||||
|
||||
_v = +_min;
|
||||
_v set [0, _max select 0];
|
||||
_verts set [6, +_v];
|
||||
_v set [2, _max select 2];
|
||||
_verts set [7, _v];
|
||||
|
||||
_verts
|
||||
};
|
||||
|
||||
_modelToWorld =
|
||||
{
|
||||
private ["_object","_verts"];
|
||||
local _object = _this select 0;
|
||||
local _verts = _this select 1;
|
||||
|
||||
{ _verts set [_foreachIndex, _object modelToWorld _x] } foreach _verts;
|
||||
|
||||
_verts
|
||||
};
|
||||
|
||||
_getAxes =
|
||||
{
|
||||
private ["_dir","_up","_side"];
|
||||
local _dir = vectorDir _this;
|
||||
local _up = vectorUp _this;
|
||||
|
||||
local _side = Vector_Rotate3D_Fast(_dir, _up, 90);
|
||||
|
||||
[_dir, _side, _up]
|
||||
};
|
||||
|
||||
_collision =
|
||||
{
|
||||
private ["_abb","_bbb","_averts","_bverts","_axes","_result"];
|
||||
local _abb = boundingBox (_this select 0);
|
||||
local _bbb = boundingBox (_this select 1);
|
||||
local _averts = [_this select 0, _abb call _boundingBoxVertices] call _modelToWorld;
|
||||
local _bverts = [_this select 1, _bbb call _boundingBoxVertices] call _modelToWorld;
|
||||
|
||||
local _axes = (_this select 0 call _getAxes) + (_this select 1 call _getAxes);
|
||||
|
||||
local _result = true;
|
||||
|
||||
{
|
||||
if ([[_averts, _x] call _project, [_bverts, _x] call _project] call _notOverlap) exitWith
|
||||
{ _result = false };
|
||||
}
|
||||
foreach _axes;
|
||||
|
||||
_result
|
||||
};
|
||||
|
||||
_this call _collision;
|
||||
Reference in New Issue
Block a user