public SpriteActionDefinition(SpriteActionDefinition copy) { mRow = copy.mRow; mBeginColumn = copy.mBeginColumn; mEndColumn = copy.mEndColumn; mUpdatePeriod = copy.mUpdatePeriod; mShouldLoop = copy.mShouldLoop; }
private Sprite[][] mSpriteElements = null; // The actual computed sprite elements #endregion Fields #region Methods /// <summary> /// Sets the sprite animation aciton. The manager maintains a ** LINK ** to the passed /// in action parameter!! This means, any changes in the action parameter will alter /// the behavior of the sprite animation (e.g., you can increase the animaiton rate by /// decrease the mUpdatePeriod /// </summary> /// <param name='anim'> /// The desired animation. /// </param> public void SetSpriteAnimationAciton(SpriteActionDefinition anim) { mCurrentSpriteAction = anim; if (mCurrentSpriteAction.mShouldLoop) { // make sure being is always smaller then end if (mCurrentSpriteAction.mEndColumn < mCurrentSpriteAction.mBeginColumn) { int tmp = mCurrentSpriteAction.mEndColumn; mCurrentSpriteAction.mEndColumn = mCurrentSpriteAction.mBeginColumn; mCurrentSpriteAction.mBeginColumn = tmp; } mCurrentActionColumnDelta = 1; } else { if (mCurrentSpriteAction.mEndColumn > mCurrentSpriteAction.mBeginColumn) mCurrentActionColumnDelta = 1; else mCurrentActionColumnDelta = 1; } mCurrentActionColumn = mCurrentSpriteAction.mBeginColumn; mCurrentActionRow = mCurrentSpriteAction.mRow; mCurrentActionLastUpdateTime = Time.realtimeSinceStartup; if (null != mSpriteElements) mMyRenderer.sprite = mSpriteElements[mCurrentActionRow][mCurrentActionColumn]; }
/// <summary> /// Sets the sprite animation aciton. The manager maintains a ** LINK ** to the passed /// in action parameter!! This means, any changes in the action parameter will alter /// the behavior of the sprite animation (e.g., you can increase the animaiton rate by /// decrease the mUpdatePeriod /// </summary> /// <param name='anim'> /// The desired animation. /// </param> public void SetSpriteAnimationAciton(SpriteActionDefinition anim) { mCurrentSpriteAction = anim; if (mCurrentSpriteAction.mShouldLoop) { // make sure being is always smaller then end if (mCurrentSpriteAction.mEndColumn < mCurrentSpriteAction.mBeginColumn) { int tmp = mCurrentSpriteAction.mEndColumn; mCurrentSpriteAction.mEndColumn = mCurrentSpriteAction.mBeginColumn; mCurrentSpriteAction.mBeginColumn = tmp; } mCurrentActionColumnDelta = 1; } else { if (mCurrentSpriteAction.mEndColumn > mCurrentSpriteAction.mBeginColumn) mCurrentActionColumnDelta = 1; else mCurrentActionColumnDelta = -1; } mCurrentActionColumn = mCurrentSpriteAction.mBeginColumn; mCurrentActionLastUpdateTime = Time.realtimeSinceStartup; Vector2 offset = mSpriteSheetMaterial.mainTextureOffset; offset.x = ComputeXOffset(mCurrentActionColumn); offset.y = ComputeYOffset(mCurrentSpriteAction.mRow); mSpriteSheetMaterial.mainTextureOffset = offset; }