DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ AddArrow()

void IEntity::AddArrow ( Object arrow,
int componentIndex,
vector closeBonePosWS,
vector closeBoneRotWS )
inlineprivate

См. определение в файле Object.c строка 1375

1376 {
1377 int pivot = GetBonePivot(GetFireGeometryLevel(), componentIndex);
1378 vector parentTransMat[4];
1379 vector arrowTransMat[4];
1380
1381 if (pivot == -1)
1382 {
1383 GetTransform(parentTransMat);
1384 }
1385 else
1386 {
1387 GetBoneTransformWS(pivot, parentTransMat);
1388 }
1389
1390 float scale = GetScale();
1391 scale = 1 / (scale * scale);
1392
1393 arrow.GetTransform(arrowTransMat);
1394 Math3D.MatrixInvMultiply4(parentTransMat, arrowTransMat, arrowTransMat);
1395
1396 // orthogonalize matrix - parent might be skewed
1397 Math3D.MatrixOrthogonalize4(arrowTransMat);
1398
1399 arrowTransMat[3] = arrowTransMat[3] * scale;
1400
1401 arrow.SetTransform(arrowTransMat);
1402
1403 AddChild(arrow, pivot);
1404 }
proto int GetBonePivot(int level, int component)
Get the pivot point of the bone from the component index in the LOD, level can be geometry,...
proto native int GetFireGeometryLevel()
proto native void GetBoneTransformWS(int pivot, out vector transform[4])
proto native external bool AddChild(notnull IEntity child, int pivot, bool positionOnly=false)
Adds child entity to this entity.
proto external void GetTransform(out vector mat[])
Returns transformation of Entity. It returns only so much vectors as array is big.
proto native external float GetScale()

Перекрестные ссылки AddChild(), GetBonePivot(), GetBoneTransformWS(), GetFireGeometryLevel(), GetScale(), GetTransform(), Math3D::MatrixInvMultiply4(), Math3D::MatrixOrthogonalize4() и Object().