예제 #1
0
        public void MoveHead()
        {
            try
            {
                var subpart       = npcCrewBlock.GetSubpart("NPC_Engineer_Head");
                var rotation      = 0.003f;
                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);
                var matrix         = rotationMatrix * initialMatrix;
                subpart.PositionComp.LocalMatrix = matrix;
                AnimationLoopHead++;
            }
            catch (Exception e)
            {
                MyVisualScriptLogicProvider.ShowNotificationToAll("Update Error" + e, 2500, "Red");
            }
        }
예제 #2
0
        public void MoveHead()
        {
            try
            {
                var subpart       = npcCrewBlock.GetSubpart("NPC_Production_Head");
                var rotation      = 0.002f;
                var initialMatrix = subpart.PositionComp.LocalMatrix;

                if (AnimationLoopHead == 300)
                {
                    AnimationLoopHead   = 0;
                    TranslationTimeHead = -1;
                }

                if (AnimationLoopHead == 150)
                {
                    TranslationTimeHead = 1;
                }

                var rotationMatrix = MatrixD.CreateRotationY(rotation * TranslationTimeHead);
                //subpart.Value.PositionComp.LocalMatrix = rotationMatrix;
                var matrix = rotationMatrix * initialMatrix;
                subpart.PositionComp.LocalMatrix = matrix;
                AnimationLoopHead++;

                /*var subparts = (cubeBlock as MyEntity).Subparts;
                 * foreach (var subpart in subparts)
                 * {
                 *  Random rnd = new Random();
                 *  double rotation = NextDouble(0.0003, 0.0010);
                 *  var initialMatrix = subpart.Value.PositionComp.LocalMatrix;
                 *
                 *  if (AnimationLoop == 300) AnimationLoop = 0;
                 *  if (AnimationLoop == 0) TranslationTime = -1;
                 *  if (AnimationLoop == 150) TranslationTime = 1;
                 *
                 *  var rotationMatrix = MatrixD.CreateRotationX(rotation * TranslationTime) * MatrixD.CreateRotationY(rotation * TranslationTime);
                 *  //subpart.Value.PositionComp.LocalMatrix = rotationMatrix;
                 *  var matrix = rotationMatrix * initialMatrix;
                 *  subpart.Value.PositionComp.LocalMatrix = matrix;
                 *  AnimationLoop++;
                 * }
                 */
            }
            catch (Exception e)
            {
                MyVisualScriptLogicProvider.ShowNotificationToAll("Update Error" + e, 2500, "Red");
            }
        }