コード例 #1
0
        private void init(Stream stream, GIFFrameUpdatedCallbackMethod frameUpdatedCallback)
        {
            // set gif frame update callback
            this.FrameUpdatedCallback = frameUpdatedCallback;

            // decode gif image
            var gifDecoder = new GifDecoder();
            var image      = new ExtendedImage();

            gifDecoder.Decode(image, stream);

            // add frames and load unity textures
            frames = new List <TextureGIFFrame>();
            var firstFrame = new TextureGIFFrame(createTexture(image.PixelWidth, image.PixelHeight, image.Pixels), TimeSpan.FromSeconds(image.DelayTime / 100d));

            frames.Add(firstFrame);
            var lastFrame = firstFrame;

            foreach (var frame in image.Frames)
            {
                var newFrame = new TextureGIFFrame(createTexture(frame.PixelWidth, frame.PixelHeight, frame.Pixels), TimeSpan.FromSeconds(frame.DelayTime / 100d));
                frames.Add(newFrame);
                if (lastFrame != null)
                {
                    lastFrame.nextFrame = newFrame;
                }
                lastFrame = newFrame;
            }

            // set starting image
            CurrentFrame        = frames[0];
            lastFrame.nextFrame = firstFrame;
        }
コード例 #2
0
        /// <summary>
        /// Call to update gif animation
        /// </summary>
        public void Update()
        {
            var currentFrame = CurrentFrame.Update();

            if (currentFrame != CurrentFrame && FrameUpdatedCallback != null)
            {
                CurrentFrame = currentFrame;
                FrameUpdatedCallback(currentFrame);
            }
        }
コード例 #3
0
        /// <summary>
        /// Used to update frame
        /// </summary>
        /// <returns>Next or Current frame</returns>
        public TextureGIFFrame Update()
        {
            if (FrameTime.TotalSeconds == 0)
            {
                return(this);
            }

            TextureGIFFrame currentFrame = this;

            time += Time.deltaTime;
            if (time >= FrameTime.TotalSeconds)
            {
                time         = 0;
                currentFrame = NextFrame;
            }

            return(currentFrame);
        }
コード例 #4
0
		/// <summary>
		/// Call to update gif animation
		/// </summary>
		public void Update()
		{
			var currentFrame = CurrentFrame.Update();
			if (currentFrame != CurrentFrame && FrameUpdatedCallback != null)
			{
				CurrentFrame = currentFrame;
				FrameUpdatedCallback(currentFrame);
			}
		}
コード例 #5
0
		private void init(Stream stream, GIFFrameUpdatedCallbackMethod frameUpdatedCallback)
		{
			// set gif frame update callback
			this.FrameUpdatedCallback = frameUpdatedCallback;

			// decode gif image
			var gifDecoder = new GifDecoder();
			var image = new ExtendedImage();
			gifDecoder.Decode(image, stream);

			// add frames and load unity textures
			frames = new List<TextureGIFFrame>();
			var firstFrame = new TextureGIFFrame(createTexture(image.PixelWidth, image.PixelHeight, image.Pixels), TimeSpan.FromSeconds(image.DelayTime / 100d));
			frames.Add(firstFrame);
			var lastFrame = firstFrame;
			foreach (var frame in image.Frames)
			{
				var newFrame = new TextureGIFFrame(createTexture(frame.PixelWidth, frame.PixelHeight, frame.Pixels), TimeSpan.FromSeconds(frame.DelayTime / 100d));
				frames.Add(newFrame);
				if (lastFrame != null) lastFrame.nextFrame = newFrame;
				lastFrame = newFrame;
			}

			// set starting image
			CurrentFrame = frames[0];
			lastFrame.nextFrame = firstFrame;
		}