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

◆ AddArrow()

override void DayZInfected::AddArrow ( Object arrow,
int componentIndex,
vector closeBonePosWS,
vector closeBoneRotWS )
inlineprotected

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

1106 {
1107 CachedObjectsArrays.ARRAY_STRING.Clear();
1108 GetActionComponentNameList(componentIndex, CachedObjectsArrays.ARRAY_STRING, "fire");
1109
1110 int pivot = -1;
1111
1112
1113 for (int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count() && pivot == -1; i++)
1114 {
1115 pivot = GetBoneIndexByName(CachedObjectsArrays.ARRAY_STRING.Get(i));
1116 }
1117
1118 vector parentTransMat[4];
1119 vector arrowTransMat[4];
1120
1121 if (pivot == -1)
1122 {
1123 GetTransformWS(parentTransMat);
1124 }
1125 else
1126 {
1127 vector rotMatrix[3];
1128 Math3D.YawPitchRollMatrix(closeBoneRotWS * Math.RAD2DEG,rotMatrix);
1129
1130 parentTransMat[0] = rotMatrix[0];
1131 parentTransMat[1] = rotMatrix[1];
1132 parentTransMat[2] = rotMatrix[2];
1133 parentTransMat[3] = closeBonePosWS;
1134 }
1135
1136 arrow.GetTransform(arrowTransMat);
1137 Math3D.MatrixInvMultiply4(parentTransMat, arrowTransMat, arrowTransMat);
1138 // orthogonalize matrix - parent might be skewed
1139 Math3D.MatrixOrthogonalize4(arrowTransMat);
1140 arrow.SetTransform(arrowTransMat);
1141
1142 AddChild(arrow, pivot);
1143 }
proto native int GetBoneIndexByName(string pBoneName)
returns bone index for a name (-1 if pBoneName doesn't exist)
proto native void AddChild(Widget child, bool immedUpdate=true)

Перекрестные ссылки AddChild(), CachedObjectsArrays::ARRAY_STRING, GetBoneIndexByName(), Math3D::MatrixInvMultiply4(), Math3D::MatrixOrthogonalize4(), Math::RAD2DEG и Math3D::YawPitchRollMatrix().