Пример #1
0
        /// <summary>
        /// Sets animation parameters for a sprite sheet primitive.
        /// <param name="beginColumn">Zero-based first frame column for the beginning sprite in the animation sequence.</param>
        /// <param name="beginRow">Zero-based first frame row for the beginning sprite in the animation sequence.</param>
        /// <param name="endColumn">Zero-based first frame column for the ending sprite in the animation sequence.</param>
        /// <param name="endRow">Zero-based first frame row for the ending sprite in the animation sequence.</param>
        /// <param name="ticksPerFrame">How many ticks the animation will pause for on each frame.</param>
        /// <param name="mode">The behavior of the animation loop.</param>
        /// <seealso cref="SetTextureSpriteSheet"/>
        /// <seealso cref="UseSpriteSheet"/>
        /// <seealso cref="UseSpriteSheetAnimation"/>
        /// <seealso cref="CurrentSpriteSheetFrameX"/>
        /// <seealso cref="CurrentSpriteSheetFrameY"/>
        /// </summary>
        public void SetTextureSpriteAnimationFrames(int beginColumn, int beginRow, int endColumn, int endRow, int ticksPerFrame, SpriteSheetAnimationMode mode)
        {
            if (ticksPerFrame < 1)
            {
                ticksPerFrame = 1;
            }
            m_SpriteBeginFrame = beginRow * m_SpriteSheetColumns + beginColumn;
            m_SpriteEndFrame   = endRow * m_SpriteSheetColumns + endColumn;

            int tmp = m_SpriteBeginFrame;

            if (m_SpriteBeginFrame > m_SpriteEndFrame)
            {
                m_SpriteBeginFrame = m_SpriteEndFrame;
                m_SpriteEndFrame   = tmp;
            }

            CurrentSpriteSheetFrame = m_SpriteBeginFrame;

            m_TicksPerFrame     = ticksPerFrame;
            m_CurrentFrameTicks = 0;
            m_SpriteAnimMode    = mode;
            m_SpriteFrameInc    = 1;
            if (mode == SpriteSheetAnimationMode.AnimateBackward ||
                mode == SpriteSheetAnimationMode.AnimateBackwardThenStop)
            {
                m_SpriteFrameInc        = -1;
                CurrentSpriteSheetFrame = m_SpriteEndFrame - 1;
            }
        }
Пример #2
0
        internal void Init(PrimitiveType p, BlendState b, Vector2 c, Vector2 s, String tex)
        {
            m_DrawBlendState = b;

            m_Center       = c;
            m_Size         = s;
            m_Velocity     = new Vector2(1, 0); // This cannot be zero!! Otherwise Speed will not work!!
            m_ShouldTravel = false;

            m_Type            = p;
            m_Rotate          = 0.0f;              // rotate angle and FrontDirection are tied together in 1-1
            m_FrontDirection  = new Vector2(1, 0); // initial front direction for all prtimives is in the positive X-direction
            m_NormalDirection = new Vector2(0, 1);
            m_Texture         = tex;

            m_Color        = Color.Aquamarine;
            m_TextureColor = Color.White;

            m_Label      = null;
            m_LabelColor = Color.Black;

            m_CenterReference = true;

            m_Visible = true;

            //sprite sheet info init
            m_UseSpriteSheet          = false;
            m_UseSpriteSheetAnimation = false;
            m_SpriteSheetColumns      = 0;
            m_SpriteSheetRows         = 0;
            m_SpriteSheetPadding      = 0;
            m_SpriteCurrentFrame      = -1;
            m_SpriteBeginFrame        = 0;
            m_SpriteEndFrame          = 0;
            m_TicksPerFrame           = 1;
            m_CurrentFrameTicks       = 0;
            m_SpriteFrameInc          = 1;
            m_SpriteAnimMode          = SpriteSheetAnimationMode.AnimateForward;
            m_SpriteSourceRect        = Rectangle.Empty;

            if (null != sm_DrawHelper)
            {
                // null should happen only once, for the system WorldRec
                AddToAutoDrawSet();
            }
        }
Пример #3
0
        internal void Init(PrimitiveType p, BlendState b, Vector2 c, Vector2 s, String tex)
        {
            m_DrawBlendState = b;

            m_Center = c;
            m_Size = s;
            m_Velocity = new Vector2(1, 0); // This cannot be zero!! Otherwise Speed will not work!!
            m_ShouldTravel = false;

            m_Type = p;
            m_Rotate = 0.0f; // rotate angle and FrontDirection are tied together in 1-1
            m_FrontDirection = new Vector2(1, 0); // initial front direction for all prtimives is in the positive X-direction
            m_NormalDirection = new Vector2(0, 1);
            m_Texture = tex;

            m_Color = Color.Aquamarine;
            m_TextureColor = Color.White;

            m_Label = null;
            m_LabelColor = Color.Black;

            m_CenterReference = true;

            m_Visible = true;

            //sprite sheet info init
            m_UseSpriteSheet = false;
            m_UseSpriteSheetAnimation = false;
            m_SpriteSheetColumns = 0;
            m_SpriteSheetRows = 0;
            m_SpriteSheetPadding = 0;
            m_SpriteCurrentFrame = -1;
            m_SpriteBeginFrame = 0;
            m_SpriteEndFrame = 0;
            m_TicksPerFrame = 1;
            m_CurrentFrameTicks = 0;
            m_SpriteFrameInc = 1;
            m_SpriteAnimMode = SpriteSheetAnimationMode.AnimateForward;
            m_SpriteSourceRect = Rectangle.Empty;

            if (null != sm_DrawHelper) {
                // null should happen only once, for the system WorldRec
                AddToAutoDrawSet();
            }
        }
Пример #4
0
        /// <summary>
        /// Sets animation parameters for a sprite sheet primitive.
        /// <param name="beginX">Zero-based first frame column for the beginning sprite in the animation sequence.</param>
        /// <param name="beginY">Zero-based first frame row for the beginning sprite in the animation sequence.</param>
        /// <param name="endX">Zero-based first frame column for the ending sprite in the animation sequence.</param>
        /// <param name="endY">Zero-based first frame row for the ending sprite in the animation sequence.</param>
        /// <param name="ticksPerFrame">How many ticks the animation will pause for on each frame.</param>
        /// <param name="mode">The behavior of the animation loop.</param>
        /// <seealso cref="SetTextureSpriteSheet"/>
        /// <seealso cref="UseSpriteSheet"/>
        /// <seealso cref="UseSpriteSheetAnimation"/>
        /// <seealso cref="CurrentSpriteSheetFrameX"/>
        /// <seealso cref="CurrentSpriteSheetFrameY"/>
        /// </summary>
        public void SetTextureSpriteAnimationFrames(int beginX, int beginY, int endX, int endY, int ticksPerFrame, SpriteSheetAnimationMode mode)
        {
            if (ticksPerFrame < 1) ticksPerFrame = 1;
            m_SpriteBeginFrame = beginY * m_SpriteSheetColumns + beginX;
            m_SpriteEndFrame = endY * m_SpriteSheetColumns + endX;

            int tmp = m_SpriteBeginFrame;
            if (m_SpriteBeginFrame > m_SpriteEndFrame) {
                m_SpriteBeginFrame = m_SpriteEndFrame;
                m_SpriteEndFrame = tmp;
            }

            CurrentSpriteSheetFrame = m_SpriteBeginFrame;

            m_TicksPerFrame = ticksPerFrame;
            m_CurrentFrameTicks = 0;
            m_SpriteAnimMode = mode;
            m_SpriteFrameInc = 1;
            if (mode == SpriteSheetAnimationMode.AnimateBackward)
                m_SpriteFrameInc = -1;
        }