예제 #1
0
        public void Draw2D(float X, float Y)
        {
            float dt = drawtime.ElapsedMilliseconds / 1000.0f;

            drawtime.Restart();

            state.Update(dt);
            state.Apply(skeleton);
            skeleton.X = X;
            skeleton.Y = Y;
            skeleton.RootBone.ScaleX = Scale;
            skeleton.RootBone.ScaleY = Scale;
            skeleton.UpdateWorldTransform();
            skeletonRenderer.Draw(skeleton);
        }
        public override void spinerender(SkeletonRenderer renderer)
        {
            switch (direction_facing)
            {
            case GlobalGameConstants.Direction.Left:
                current_skeleton = walk_right;
                current_skeleton.Skeleton.FlipX = true;
                break;

            case GlobalGameConstants.Direction.Right:
                current_skeleton = walk_right;
                current_skeleton.Skeleton.FlipX = false;
                break;

            case GlobalGameConstants.Direction.Up:
                current_skeleton = walk_up;
                current_skeleton.Skeleton.FlipX = false;
                break;

            default:
                current_skeleton = walk_down;
                current_skeleton.Skeleton.FlipX = false;
                break;
            }

            current_skeleton.Skeleton.RootBone.X = CenterPoint.X * (current_skeleton.Skeleton.FlipX ? -1 : 1);
            current_skeleton.Skeleton.RootBone.Y = CenterPoint.Y + (dimensions.Y / 2f);

            current_skeleton.Skeleton.RootBone.ScaleX = 1.0f;
            current_skeleton.Skeleton.RootBone.ScaleY = 1.0f;

            current_skeleton.Skeleton.UpdateWorldTransform();
            renderer.Draw(current_skeleton.Skeleton);
        }
예제 #3
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            skeleton.UpdateWorldTransform();

            spriteBatch.End();

            skeletonRenderer.Begin();
            skeletonRenderer.Draw(skeleton);
            skeletonRenderer.End();

            spriteBatch.Begin(SpriteSortMode.Immediate,
                              BlendState.AlphaBlend,
                              null,
                              null,
                              null,
                              null,
                              MediaManager.cam.get_transformation(graphics));

            bounds.Update(skeleton, true);

            /* MouseState mouse = Mouse.GetState();
             * headSlot.G = 1;
             * headSlot.B = 1;
             * if (bounds.AabbContainsPoint(mouse.X, mouse.Y))
             * {
             *   BoundingBoxAttachment hit = bounds.ContainsPoint(mouse.X, mouse.Y);
             *   if (hit != null)
             *   {
             *       headSlot.G = 0;
             *       headSlot.B = 0;
             *   }
             * } */
        }
예제 #4
0
        public override void spinerender(SkeletonRenderer renderer)
        {
            if (isIdling)
            {
                current_skeleton.Animation = current_skeleton.Skeleton.Data.FindAnimation("idle");
            }
            else
            {
                current_skeleton.Animation = current_skeleton.Skeleton.Data.FindAnimation("run");
            }

            if (direction_facing == GlobalGameConstants.Direction.Right || direction_facing == GlobalGameConstants.Direction.Up || direction_facing == GlobalGameConstants.Direction.Down)
            {
                current_skeleton.Skeleton.FlipX = false;
            }
            if (direction_facing == GlobalGameConstants.Direction.Left)
            {
                current_skeleton.Skeleton.FlipX = true;
            }

            current_skeleton.Animation.Apply(current_skeleton.Skeleton, animation_time, true);

            current_skeleton.Skeleton.RootBone.X = CenterPoint.X * (current_skeleton.Skeleton.FlipX ? -1 : 1);
            current_skeleton.Skeleton.RootBone.Y = CenterPoint.Y + (dimensions.Y / 2f);

            current_skeleton.Skeleton.RootBone.ScaleX = 1.0f;
            current_skeleton.Skeleton.RootBone.ScaleY = 1.0f;

            current_skeleton.Skeleton.UpdateWorldTransform();
            renderer.Draw(current_skeleton.Skeleton);
        }
예제 #5
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            base.Draw(spriteBatch);
            if (skeleton.X > 640 || skeleton.X < 0)
            {
                speed          = -1 * speed;
                skeleton.FlipX = !skeleton.FlipX;
            }

            skeleton.X += speed;

            skeleton.UpdateWorldTransform();
            skeletonRenderer.Begin();
            skeletonRenderer.Draw(skeleton);
            skeletonRenderer.End();

            bounds.Update(skeleton, true);
            MouseState mouse = Mouse.GetState();

            headSlot.G = 1;
            headSlot.B = 1;
            if (bounds.AabbContainsPoint(mouse.X, mouse.Y))
            {
                BoundingBoxAttachment hit = bounds.ContainsPoint(mouse.X, mouse.Y);
                if (hit != null)
                {
                    headSlot.G = 0;
                    headSlot.B = 0;
                }
            }
        }
예제 #6
0
파일: Robot.cs 프로젝트: GarethIW/RoboFight
        public void Draw(GraphicsDevice graphicsDevice, SpriteBatch spriteBatch, Camera gameCamera)
        {
            skeletonRenderer.Begin(graphicsDevice, gameCamera.CameraMatrix);
            skeletonRenderer.Draw(skeleton);
            skeletonRenderer.End();

            // Draw collision box

            //spriteBatch.Draw(blankTex, collisionRect, Color.White * 0.3f);
            //spriteBatch.End();

            spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, gameCamera.CameraMatrix);

            if (!IsPlayer)
            {
                Vector2 pos = Position + new Vector2(-25, -150);
                int     i   = 0;

                for (i = 0; i < (int)(Health / 10f); i++)
                {
                    spriteBatch.Draw(EnemyManager.Instance.hudTex, pos, new Rectangle(11, 0, 15, 8), Color.Red, 0f, new Vector2(7, 4), 0.5f, i % 2 == 0 ? SpriteEffects.None : SpriteEffects.FlipVertically, 1);
                    pos.X += 5;
                }

                spriteBatch.Draw(EnemyManager.Instance.hudTex, pos, new Rectangle(11, 0, 15, 8), Color.Red * ((Health / 10f) - (int)(Health / 10f)), 0f, new Vector2(7, 4), 0.5f, i % 2 == 0 ? SpriteEffects.None : SpriteEffects.FlipVertically, 1);
            }

            spriteBatch.End();
        }
        private void Draw()
        {
            if (App.GV.SpineVersion != "3.6.39" || App.GV.FileHash != skeleton.Data.Hash)
            {
                state = null;

                skeletonRenderer = null;
                return;
            }
            _graphicsDevice.Clear(Color.Transparent);
            state.Update(App.GV.Speed / 1000f);
            state.Apply(skeleton);
            state.TimeScale = App.GV.TimeScale;
            skeleton.X      = App.GV.PosX;
            skeleton.Y      = App.GV.PosY;
            if (App.GV.SelectSkin != "" && App.GV.SetSkin)
            {
                skeleton.SetSkin(App.GV.SelectSkin);
                App.GV.SetSkin = false;
            }
            if (App.GV.SelectAnimeName != "" && App.GV.SetAnime)
            {
                state.ClearTracks();
                state.SetAnimation(0, App.GV.SelectAnimeName, App.GV.IsLoop);
                App.GV.SetAnime = false;
            }
            skeleton.UpdateWorldTransform();
            skeletonRenderer.PremultipliedAlpha = App.GV.Alpha;
            skeletonRenderer.Begin();
            skeletonRenderer.Draw(skeleton);
            skeletonRenderer.End();
        }
예제 #8
0
        public void spinerender(SkeletonRenderer renderer)
        {
            current_skeleton.Skeleton.RootBone.X = CenterPoint.X * (current_skeleton.Skeleton.FlipX ? -1 : 1);
            current_skeleton.Skeleton.RootBone.Y = CenterPoint.Y + (dimensions.Y / 2f);

            current_skeleton.Skeleton.UpdateWorldTransform();
            renderer.Draw(current_skeleton.Skeleton);
        }
예제 #9
0
 public void DrawCharacters(SkeletonRenderer skeletonRenderer, GameTime gameTime)
 {
     foreach (Character character in Characters.Items)
     {
         character.Draw(gameTime);
         skeletonRenderer.Draw(character.Skeleton);
     }
 }
예제 #10
0
    public void Update(GameTime gameTime)
    {
        if (App.globalValues.SelectAnimeName != "" && App.globalValues.SetAnime)
        {
            state.ClearTracks();
            skeleton.SetToSetupPose();
            state.SetAnimation(0, App.globalValues.SelectAnimeName, App.globalValues.IsLoop);
            App.globalValues.SetAnime = false;
        }

        if (App.globalValues.SelectSkin != "" && App.globalValues.SetSkin)
        {
            skeleton.SetSkin(App.globalValues.SelectSkin);
            skeleton.SetSlotsToSetupPose();
            App.globalValues.SetSkin = false;
        }


        if (App.globalValues.SelectSpineVersion != "3.7.83" || App.globalValues.FileHash != skeleton.Data.Hash)
        {
            state            = null;
            skeletonRenderer = null;
            return;
        }
        App.graphicsDevice.Clear(Color.Transparent);

        Player.DrawBG(ref App.spriteBatch);
        App.globalValues.TimeScale = (float)App.globalValues.Speed / 30f;

        state.Update((float)gameTime.ElapsedGameTime.TotalMilliseconds / 1000f);
        state.Apply(skeleton);

        skeleton.X      = App.globalValues.PosX;
        skeleton.Y      = App.globalValues.PosY;
        skeleton.ScaleX = (App.globalValues.FilpX ? -1 : 1) * App.globalValues.Scale;
        skeleton.ScaleY = (App.globalValues.FilpY ? 1 : -1) * App.globalValues.Scale;


        skeleton.RootBone.Rotation = App.globalValues.Rotation;
        skeleton.UpdateWorldTransform();
        skeletonRenderer.PremultipliedAlpha = App.globalValues.Alpha;
        if (skeletonRenderer.Effect is BasicEffect)
        {
            ((BasicEffect)skeletonRenderer.Effect).Projection = Matrix.CreateOrthographicOffCenter(0, App.graphicsDevice.Viewport.Width, App.graphicsDevice.Viewport.Height, 0, 1, 0);
        }
        else
        {
            skeletonRenderer.Effect.Parameters["Projection"].SetValue(Matrix.CreateOrthographicOffCenter(0, App.graphicsDevice.Viewport.Width, App.graphicsDevice.Viewport.Height, 0, 1, 0));
        }
        skeletonRenderer.Begin();
        skeletonRenderer.Draw(skeleton);
        skeletonRenderer.End();
    }
        public override void spinerender(SkeletonRenderer renderer)
        {
            AnimationLib.SpineAnimationSet currentSkeleton = directionAnims[(int)direction_facing];

            currentSkeleton.Skeleton.RootBone.X = CenterPoint.X * (currentSkeleton.Skeleton.FlipX ? -1 : 1);
            currentSkeleton.Skeleton.RootBone.Y = CenterPoint.Y + (dimensions.Y / 2f);

            currentSkeleton.Skeleton.RootBone.ScaleX = 1.0f;
            currentSkeleton.Skeleton.RootBone.ScaleY = 1.0f;

            currentSkeleton.Skeleton.UpdateWorldTransform();
            renderer.Draw(currentSkeleton.Skeleton);
        }
예제 #12
0
        public void Draw()
        {
            float dt = drawtime.ElapsedMilliseconds / 1000.0f;

            drawtime.Restart();

            state.Update(dt);
            state.Apply(skeleton);
            skeleton.RootBone.ScaleX = 1 / 50f;
            skeleton.RootBone.ScaleY = 1 / 50f;
            skeleton.UpdateWorldTransform();
            skeletonRenderer.Draw(skeleton, Z);
        }
예제 #13
0
        public void Draw(Skeleton skeleton, Color color)
        {
            beginSkeletonRenderer();

            Vector4 colorBefore = new Vector4(skeleton.R, skeleton.G, skeleton.B, skeleton.A);

            updateColor(ref color);
            tintSkeleton(skeleton, color);

            if (Camera != null)
            {
                float   previousX      = skeleton.RootBone.X;
                float   previousY      = skeleton.RootBone.Y;
                float   previousScaleX = skeleton.RootBone.ScaleX;
                float   previousScaleY = skeleton.RootBone.ScaleY;
                Vector2 position       = Camera.TranslateVector(new Vector2(previousX, previousY));
                skeleton.RootBone.X       = position.X;
                skeleton.RootBone.Y       = position.Y;
                skeleton.RootBone.ScaleX *= Camera.Scale.X;
                skeleton.RootBone.ScaleY *= Camera.Scale.Y;
                skeleton.UpdateWorldTransform();
                skeletonRenderer.Draw(skeleton);
                skeleton.RootBone.X      = previousX;
                skeleton.RootBone.Y      = previousY;
                skeleton.RootBone.ScaleX = previousScaleX;
                skeleton.RootBone.ScaleY = previousScaleY;
                skeleton.UpdateWorldTransform();
            }
            else
            {
                skeletonRenderer.Draw(skeleton);
            }

            skeleton.R = colorBefore.X;
            skeleton.G = colorBefore.Y;
            skeleton.B = colorBefore.Z;
            skeleton.A = colorBefore.W;
        }
예제 #14
0
        public void Draw(GraphicsDevice graphicsDevice, SpriteBatch spriteBatch, Camera gameCamera)
        {
            if (teleportScale < 0.02f)
            {
                return;
            }

            skeletonRenderer.Begin(graphicsDevice, gameCamera.CameraMatrix);
            skeletonRenderer.Draw(skeleton);
            skeletonRenderer.End();

            // Draw collision box
            //spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, gameCamera.CameraMatrix);
            //spriteBatch.Draw(blankTex, collisionRect, Color.White * 0.3f);
            //spriteBatch.End();
        }
예제 #15
0
        public override void Draw()
        {
            Graphics.SetColor(Color.White);
            var skeleton = list[activeSkeleton].skeleton;

            skeletonRenderer.Draw(skeleton);

            Graphics.Print("Press [space] to toggle debug view\nPress mouse button to change skeleton");
            if (Keyboard.IsPressed(KeyConstant.Space))
            {
                isShowDebugView = !isShowDebugView;
            }
            if (isShowDebugView)
            {
                new SkeletonDebugRenderer().Draw(skeleton);
            }
        }
        public override void Draw(GameTime gameTime, Camera2D cam)
        {
            if (!IsLoaded)
            {
                return;
            }
            _state.Update((float)(gameTime.ElapsedGameTime.TotalMilliseconds * Props.PlaySpeed / 1000));
            _state.Apply(_skeleton);
            _skeleton.UpdateWorldTransform();

            _effect.View       = cam.View;
            _effect.Projection = cam.Projection;

            _skeletonRenderer.Begin();
            _skeletonRenderer.Draw(_skeleton);
            _skeletonRenderer.End();
        }
예제 #17
0
        public override void spinerender(SkeletonRenderer renderer)
        {
            if (direction_facing == GlobalGameConstants.Direction.Right || direction_facing == GlobalGameConstants.Direction.Up || direction_facing == GlobalGameConstants.Direction.Down)
            {
                current_skeleton.Skeleton.FlipX = false;
            }
            if (direction_facing == GlobalGameConstants.Direction.Left)
            {
                current_skeleton.Skeleton.FlipX = true;
            }

            current_skeleton.Skeleton.RootBone.X = CenterPoint.X * (current_skeleton.Skeleton.FlipX ? -1 : 1);
            current_skeleton.Skeleton.RootBone.Y = CenterPoint.Y + (dimensions.Y / 2f);

            current_skeleton.Skeleton.RootBone.ScaleX = 1.0f;
            current_skeleton.Skeleton.RootBone.ScaleY = 1.0f;

            current_skeleton.Skeleton.UpdateWorldTransform();
            renderer.Draw(current_skeleton.Skeleton);
        }
예제 #18
0
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.Black);

            state.Update(gameTime.ElapsedGameTime.Milliseconds / 1000f);
            state.Apply(skeleton);
            skeleton.UpdateWorldTransform();
            if (skeletonRenderer.Effect is BasicEffect)
            {
                ((BasicEffect)skeletonRenderer.Effect).Projection = Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 1, 0);
            }
            else
            {
                skeletonRenderer.Effect.Parameters["Projection"].SetValue(Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 1, 0));
            }
            skeletonRenderer.Begin();
            skeletonRenderer.Draw(skeleton);
            skeletonRenderer.End();

            bounds.Update(skeleton, true);
            MouseState mouse = Mouse.GetState();

            if (headSlot != null)
            {
                headSlot.G = 1;
                headSlot.B = 1;
                if (bounds.AabbContainsPoint(mouse.X, mouse.Y))
                {
                    BoundingBoxAttachment hit = bounds.ContainsPoint(mouse.X, mouse.Y);
                    if (hit != null)
                    {
                        headSlot.G = 0;
                        headSlot.B = 0;
                    }
                }
            }

            base.Draw(gameTime);
        }
예제 #19
0
        public override void spinerender(SkeletonRenderer renderer)
        {
            if (mech_state != MechState.Death)
            {
                current_skeleton.Skeleton.RootBone.X = CenterPoint.X;
                current_skeleton.Skeleton.RootBone.Y = CenterPoint.Y;

                if ((int)turret_angle < (int)(angle * 180 / Math.PI))
                {
                    turret_angle++;
                }
                else if ((int)turret_angle > (int)(angle * 180 / Math.PI))
                {
                    turret_angle--;
                }

                current_skeleton.Skeleton.RootBone.Rotation = (float)(-1 * turret_angle) - 90.0f;

                current_skeleton.Skeleton.RootBone.ScaleX = 1.0f;
                current_skeleton.Skeleton.RootBone.ScaleY = 1.0f;
                current_skeleton.Skeleton.UpdateWorldTransform();
                renderer.Draw(current_skeleton.Skeleton);
            }
        }
예제 #20
0
    public void Draw()
    {
        if (App.GV.SpineVersion != "3.6.53" || App.GV.FileHash != skeleton.Data.Hash)
        {
            state            = null;
            skeletonRenderer = null;
            return;
        }
        App.graphicsDevice.Clear(Color.Transparent);

        Player.DrawBG(ref App.spriteBatch);


        state.Update(App.GV.Speed / 1000f);

        if (binary != null)
        {
            if (App.GV.Scale != binary.Scale)
            {
                binary.Scale = App.GV.Scale;
                skeletonData = binary.ReadSkeletonData(Common.GetSkelPath(App.GV.SelectFile));
                skeleton     = new Skeleton(skeletonData);
            }
        }
        else if (json != null)
        {
            if (App.GV.Scale != json.Scale)
            {
                json.Scale   = App.GV.Scale;
                skeletonData = json.ReadSkeletonData(Common.GetJsonPath(App.GV.SelectFile));
                skeleton     = new Skeleton(skeletonData);
            }
        }

        skeleton.X                 = App.GV.PosX;
        skeleton.Y                 = App.GV.PosY;
        skeleton.FlipX             = App.GV.FilpX;
        skeleton.FlipY             = App.GV.FilpY;
        skeleton.RootBone.Rotation = App.GV.Rotation;
        skeleton.UpdateWorldTransform();
        state.TimeScale = App.GV.TimeScale;
        state.Apply(skeleton);
        skeletonRenderer.PremultipliedAlpha = App.GV.Alpha;
        if (skeletonRenderer.Effect is BasicEffect)
        {
            ((BasicEffect)skeletonRenderer.Effect).Projection = Matrix.CreateOrthographicOffCenter(0, App.graphicsDevice.Viewport.Width, App.graphicsDevice.Viewport.Height, 0, 1, 0);
        }
        else
        {
            skeletonRenderer.Effect.Parameters["Projection"].SetValue(Matrix.CreateOrthographicOffCenter(0, App.graphicsDevice.Viewport.Width, App.graphicsDevice.Viewport.Height, 0, 1, 0));
        }
        skeletonRenderer.Begin();
        skeletonRenderer.Draw(skeleton);
        skeletonRenderer.End();

        if (state != null)
        {
            TrackEntry entry = state.GetCurrent(0);
            if (entry != null)
            {
                if (App.GV.IsRecoding && App.GV.GifList != null && !entry.IsComplete)
                {
                    if (App.GV.GifList.Count == 0)
                    {
                        TrackEntry te = state.GetCurrent(0);
                        te.trackTime     = 0;
                        App.GV.TimeScale = 1;
                        App.GV.Lock      = 0;
                    }

                    App.GV.GifList.Add(Common.TakeRecodeScreenshot(App.graphicsDevice));
                }

                if (App.GV.IsRecoding && entry.IsComplete)
                {
                    state.TimeScale   = 0;
                    App.GV.IsRecoding = false;
                    Common.RecodingEnd(entry.AnimationEnd);

                    state.TimeScale  = 1;
                    App.GV.TimeScale = 1;
                }

                if (App.GV.TimeScale == 0)
                {
                    entry.TrackTime = entry.AnimationEnd * App.GV.Lock;
                    entry.TimeScale = 0;
                }
                else
                {
                    App.GV.Lock     = entry.AnimationTime / entry.AnimationEnd;
                    entry.TimeScale = 1;
                }
                App.GV.LoadingProcess = $"{ Math.Round(entry.AnimationTime / entry.AnimationEnd * 100, 2)}%";
            }
        }
    }
예제 #21
0
 public void Draw(SpriteBatchEx spriteBatch, SkeletonRenderer skeletonRenderer, Vector2 position, float rotation, Vector2 scale, Color tintColor, bool flipHorizontal, bool flipVertical)
 {
     skeletonRenderer.Draw(spriteBatch, skeleton, position, rotation, scale, tintColor, flipHorizontal, flipVertical);
 }