public void MoveHead() { try { var subpart = npcCrewBlock.GetSubpart("NPC_Weapons_Head"); var rotation = 0.005f; var initialMatrix = subpart.PositionComp.LocalMatrix; if (AnimationLoopHead == 200) { AnimationLoopHead = 0; } if (AnimationLoopHead == 0) { TranslationTimeHead = -1; } if (AnimationLoopHead == 100) { TranslationTimeHead = 1; } var rotationMatrix = MatrixD.CreateRotationY(rotation * TranslationTimeHead); //subpart.Value.PositionComp.LocalMatrix = rotationMatrix; var matrix = rotationMatrix * initialMatrix; subpart.PositionComp.LocalMatrix = matrix; AnimationLoopHead++; } catch (Exception e) { MyVisualScriptLogicProvider.ShowNotificationToAll("Update Error" + e, 2500, "Red"); } }