private void OnClickPasteButton() { ChromaSDKAnimation1D animation = GetAnimation(); EditorUtility.SetDirty(animation); var frames = animation.Frames; //copy Unload(); if (_mCurrentFrame >= 0 && _mCurrentFrame < frames.Count) { ChromaDevice1DEnum device = animation.Device; int maxLeds = ChromaUtils.GetMaxLeds(device); if (_mColors.Count == maxLeds) { var frame = ChromaUtils.CreateColors1D(device); for (int i = 0; i < maxLeds; ++i) { frame[i] = _mColors[i]; } frames[_mCurrentFrame] = frame; } } animation.Frames = frames; }
private void OnClickAddButton() { ChromaSDKAnimation1D animation = GetAnimation(); EditorUtility.SetDirty(animation); var frames = animation.Frames; //copy Unload(); if (_mCurrentFrame < 0 || _mCurrentFrame >= frames.Count) { _mCurrentFrame = 0; } EffectArray1dInput frame = ChromaUtils.CreateColors1D(animation.Device); if (_mCurrentFrame == frames.Count || (_mCurrentFrame + 1) == frames.Count) { frames.Add(frame); _mCurrentFrame = frames.Count - 1; } else { ++_mCurrentFrame; frames.Insert(_mCurrentFrame, frame); } animation.Frames = frames; animation.RefreshCurve(); }
private void OnClickShiftButton(int x) { ChromaSDKAnimation1D animation = GetAnimation(); EditorUtility.SetDirty(animation); var frames = animation.Frames; //copy Unload(); if (_mCurrentFrame >= 0 && _mCurrentFrame < frames.Count) { ChromaDevice1DEnum device = animation.Device; int maxLeds = ChromaUtils.GetMaxLeds(device); int offsetX = maxLeds - x; var oldFrame = frames[_mCurrentFrame]; var newFrame = ChromaUtils.CreateColors1D(device); for (int i = 0; i < maxLeds; ++i) { int color = (int)oldFrame[(i + offsetX) % maxLeds]; newFrame[i] = color; } frames[_mCurrentFrame] = newFrame; } animation.Frames = frames; }
private void LoadImage(string path) { ChromaSDKAnimation1D animation = GetAnimation(); EditorUtility.SetDirty(animation); Unload(); if (!string.IsNullOrEmpty(path)) { ImageManager.LoadImage(path); int frameCount = ImageManager.PluginGetFrameCount(); if (frameCount == 0) { Debug.LogError("Failed to read frames from image! Please try again!"); } ChromaDevice1DEnum device = animation.Device; var colors = ChromaUtils.CreateColors1D(device); for (int frameIndex = 0; frameIndex < frameCount; ++frameIndex) { if (frameIndex > 0) { OnClickAddButton(); } var frames = animation.Frames; //copy if (_mCurrentFrame >= 0 && _mCurrentFrame < animation.Frames.Count) { //Debug.Log(string.Format("Frame count: {0}", frameCount)); int height = ImageManager.PluginGetHeight(); int width = ImageManager.PluginGetWidth(); if (height > 0) { for (int x = 0; x < colors.Count && x < width; x++) { int color = ImageManager.PluginGetPixel(frameIndex, x, 0); colors[x] = color; } } frames[_mCurrentFrame] = colors; } animation.Frames = frames; } } }
private void OnClickInsertButton() { ChromaSDKAnimation1D animation = GetAnimation(); EditorUtility.SetDirty(animation); var frames = animation.Frames; //copy Unload(); if (_mCurrentFrame < 0 || _mCurrentFrame >= frames.Count) { _mCurrentFrame = 0; } EffectArray1dInput oldFrame; if (frames.Count > 0) { oldFrame = frames[_mCurrentFrame]; } else { oldFrame = ChromaUtils.CreateColors1D(animation.Device); } EffectArray1dInput frame = ChromaUtils.CreateColors1D(animation.Device); if (frames.Count == 0) { frames.Add(frame); _mCurrentFrame = frames.Count - 1; } else { frames.Insert(_mCurrentFrame, frame); } // copy colors if (_mCurrentFrame >= 0 && _mCurrentFrame < frames.Count) { ChromaDevice1DEnum device = animation.Device; int maxLeds = ChromaUtils.GetMaxLeds(device); for (int i = 0; i < maxLeds; ++i) { frame[i] = oldFrame[i]; } } animation.Frames = frames; animation.RefreshCurve(); }
private void OnClickClearButton() { ChromaSDKAnimation1D animation = GetAnimation(); EditorUtility.SetDirty(animation); var frames = animation.Frames; //copy Unload(); if (_mCurrentFrame >= 0 && _mCurrentFrame < animation.Frames.Count) { ChromaDevice1DEnum device = animation.Device; frames[_mCurrentFrame] = ChromaUtils.CreateColors1D(device); } animation.Frames = frames; }
private void OnClickFillButton() { ChromaSDKAnimation1D animation = GetAnimation(); EditorUtility.SetDirty(animation); var frames = animation.Frames; //copy Unload(); if (_mCurrentFrame >= 0 && _mCurrentFrame < frames.Count) { ChromaDevice1DEnum device = animation.Device; int maxLeds = ChromaUtils.GetMaxLeds(device); var elements = ChromaUtils.CreateColors1D(device); for (int i = 0; i < maxLeds; ++i) { elements[i] = ChromaUtils.ToBGR(_mColor); } frames[_mCurrentFrame] = elements; } animation.Frames = frames; }
private void DeleteFrame() { if (_mAnimation) { if (_mAnimation is ChromaSDKAnimation1D) { ChromaSDKAnimation1D animation = _mAnimation as ChromaSDKAnimation1D; List <EffectArray1dInput> frames = animation.Frames; if (frames.Count > 1) { frames.RemoveAt(0); } else { frames[0] = ChromaUtils.CreateColors1D(animation.Device); } animation.Frames = frames; animation.RefreshCurve(); } else if (_mAnimation is ChromaSDKAnimation2D) { ChromaSDKAnimation2D animation = _mAnimation as ChromaSDKAnimation2D; List <EffectArray2dInput> frames = animation.Frames; if (frames.Count > 1) { frames.RemoveAt(0); } else { frames[0] = ChromaUtils.CreateColors2D(animation.Device); } animation.Frames = frames; animation.RefreshCurve(); } ChromaSDKAnimationBaseEditor.GoToFirstFrame(); } }
private void OnClickDeleteButton() { ChromaSDKAnimation1D animation = GetAnimation(); EditorUtility.SetDirty(animation); var frames = animation.Frames; //copy Unload(); if (_mCurrentFrame < 0 || _mCurrentFrame >= frames.Count) { _mCurrentFrame = 0; } if (frames.Count == 1) { // reset frame frames[0] = ChromaUtils.CreateColors1D(animation.Device); // reset curve while (animation.Curve.keys.Length > 0) { animation.Curve.RemoveKey(0); } } else if (frames.Count > 0) { frames.RemoveAt(_mCurrentFrame); if (_mCurrentFrame == frames.Count) { _mCurrentFrame = frames.Count - 1; } } animation.Frames = frames; animation.RefreshCurve(); }
private void CaptureFrame() { if (_mAnimation && _mRenderTexture && _mRenderCamera) { if (_mAnimation is ChromaSDKAnimation1D) { ChromaSDKAnimation1D animation = (ChromaSDKAnimation1D)_mAnimation; animation.Unload(); int maxLeds = ChromaUtils.GetMaxLeds(animation.Device); _mTempTexture = new Texture2D(RENDER_TEXTURE_SIZE, RENDER_TEXTURE_SIZE, TextureFormat.RGB24, false); RenderTexture.active = _mRenderTexture; _mRenderCamera.Render(); DisplayRenderTexture(0, maxLeds, 1); _mTempTexture.ReadPixels(new Rect(0, 0, _mTempTexture.width, _mTempTexture.height), 0, 0, false); _mTempTexture.Apply(); TextureScale.Bilinear(_mTempTexture, maxLeds, 1); _mTempTexture.Apply(); RenderTexture.active = null; Color[] pixels = _mTempTexture.GetPixels(); List <EffectArray1dInput> frames = animation.Frames; EffectArray1dInput frame = ChromaUtils.CreateColors1D(animation.Device); int index = 0; if (frame.Count > 0) { for (int i = 0; i < maxLeds; ++i) { Color color = pixels[index]; frame[i] = ChromaUtils.ToBGR(color); ++index; } } #if !SHOW_TEMP_TEXTURE DestroyImmediate(_mTempTexture); #endif frames.Add(frame); animation.Frames = frames; ChromaSDKAnimationBaseEditor.GoToLastFrame(); } else if (_mAnimation is ChromaSDKAnimation2D) { ChromaSDKAnimation2D animation = (ChromaSDKAnimation2D)_mAnimation; animation.Unload(); int maxRow = ChromaUtils.GetMaxRow(animation.Device); int maxColumn = ChromaUtils.GetMaxColumn(animation.Device); _mTempTexture = new Texture2D(RENDER_TEXTURE_SIZE, RENDER_TEXTURE_SIZE, TextureFormat.RGB24, false); RenderTexture.active = _mRenderTexture; _mRenderCamera.Render(); DisplayRenderTexture(0, maxColumn, maxRow); _mTempTexture.ReadPixels(new Rect(0, 0, _mTempTexture.width, _mTempTexture.height), 0, 0, false); _mTempTexture.Apply(); TextureScale.Bilinear(_mTempTexture, maxColumn, maxRow); _mTempTexture.Apply(); RenderTexture.active = null; Color[] pixels = _mTempTexture.GetPixels(); List <EffectArray2dInput> frames = animation.Frames; EffectArray2dInput frame = ChromaUtils.CreateColors2D(animation.Device); int index = 0; for (int i = maxRow - 1; i >= 0; --i) { List <int> row = frame[i]; for (int j = 0; j < maxColumn; ++j) { Color color = pixels[index]; row[j] = ChromaUtils.ToBGR(color); ++index; } } #if !SHOW_TEMP_TEXTURE DestroyImmediate(_mTempTexture); #endif frames.Add(frame); animation.Frames = frames; ChromaSDKAnimationBaseEditor.GoToLastFrame(); } } }