void ProcessCameraLayer(Random r, long beginFrame, long endFrame, CameraFrameCollection frames) { var existing = frames.ToList(); var newKeyFrames = ProcessFrames(r, beginFrame, endFrame, keyFrameInterval, noiseValueInterval, new HashSet <long>(frames.Where(_ => _.Selected).Select(_ => _.FrameNumber))) .Select(_ => { var baseFrame = frames.GetFrame(_.Key); baseFrame.FrameNumber = Math.Max(_.Key + GetNoise(r, keyShiftWidth), 0); baseFrame.Position += _.Value.PositionWidth; baseFrame.Angle += MathHelper.ToRadians(_.Value.RotationWidth); baseFrame.Selected = true; return(baseFrame); }) .ToArray(); foreach (var i in frames.Where(_ => _.Selected)) { frames.RemoveKeyFrame(i.FrameNumber); } frames.AddKeyFrame(newKeyFrames.ToLookup(_ => _.FrameNumber) .Select(_ => _.Last()) .ToList()); }
void ProcessCameraLayer(Random r, long beginFrame, long endFrame, CameraFrameCollection frames) { var existing = frames.ToList(); var newKeyFrames = ProcessFrames(r, beginFrame, endFrame, keyFrameInterval, noiseValueInterval, new HashSet<long>(frames.Where(_ => _.Selected).Select(_ => _.FrameNumber))) .Select(_ => { var baseFrame = frames.GetFrame(_.Key); baseFrame.FrameNumber = Math.Max(_.Key + GetNoise(r, keyShiftWidth), 0); baseFrame.Position += _.Value.PositionWidth; baseFrame.Angle += MathHelper.ToRadians(_.Value.RotationWidth); baseFrame.Selected = true; return baseFrame; }) .ToArray(); foreach (var i in frames.Where(_ => _.Selected)) frames.RemoveKeyFrame(i.FrameNumber); frames.AddKeyFrame(newKeyFrames.ToLookup(_ => _.FrameNumber) .Select(_ => _.Last()) .ToList()); }