9255 {
9256 CachedObjectsArrays.ARRAY_STRING.Clear();
9257 GetActionComponentNameList(componentIndex, CachedObjectsArrays.ARRAY_STRING, LOD.NAME_FIRE);
9258
9259 int pivot = componentIndex;
9260 int newPivot = -1;
9261 string compName;
9262 for (int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count() && newPivot == -1; i++)
9263 {
9264 compName = CachedObjectsArrays.ARRAY_STRING.
Get(i);
9266
9267 }
9268
9269 if (newPivot != -1)
9270 {
9271 pivot = newPivot;
9272
9273 }
9274
9275 vector parentTransMat[4];
9276 vector arrowTransMat[4];
9277
9278 arrow.GetTransform(arrowTransMat);
9279
9280 if (pivot == -1)
9281 {
9282 GetTransformWS(parentTransMat);
9283 }
9284 else
9285 {
9286 vector rotMatrix[3];
9287 Math3D.YawPitchRollMatrix(closeBoneRotWS * Math.RAD2DEG,rotMatrix);
9288
9289 parentTransMat[0] = rotMatrix[0];
9290 parentTransMat[1] = rotMatrix[1];
9291 parentTransMat[2] = rotMatrix[2];
9292 parentTransMat[3] = closeBonePosWS;
9293 }
9294
9295 Math3D.MatrixInvMultiply4(parentTransMat, arrowTransMat, arrowTransMat);
9296 Math3D.MatrixOrthogonalize4(arrowTransMat);
9297 arrow.SetTransform(arrowTransMat);
9298
9300
9301 #ifdef SERVER
9302
9304 if (bleedingManager)
9305 {
9306 if (!bleedingManager.AttemptAddBleedingSourceBySelection(compName))
9307 bleedingManager.AttemptAddBleedingSourceBySelection("Pelvis");
9308 }
9309 #endif
9310 }
proto native int GetBoneIndexByName(string pBoneName)
returns bone index for a name (-1 if pBoneName doesn't exist)
BleedingSourcesManagerServer GetBleedingManagerServer()
proto string Get(int index)
Gets n-th character from string.