| | 1 | | namespace GPUSkinning |
| | 2 | | { |
| | 3 | | public class GPUSkinningThrottler |
| | 4 | | { |
| | 5 | | internal static int startingFrame = 0; |
| | 6 | |
|
| | 7 | | internal readonly IGPUSkinning gpuSkinning; |
| | 8 | | internal int framesBetweenUpdates; |
| | 9 | | internal int currentFrame; |
| | 10 | |
|
| 3 | 11 | | public GPUSkinningThrottler(IGPUSkinning gpuSkinning) |
| | 12 | | { |
| 3 | 13 | | this.gpuSkinning = gpuSkinning; |
| 3 | 14 | | framesBetweenUpdates = 1; |
| 3 | 15 | | currentFrame = startingFrame++; |
| 3 | 16 | | } |
| | 17 | |
|
| 0 | 18 | | public void SetThrottling(int newFramesBetweenUpdates) { framesBetweenUpdates = newFramesBetweenUpdates; } |
| | 19 | |
|
| | 20 | | public void TryUpdate() |
| | 21 | | { |
| 30 | 22 | | currentFrame++; |
| 30 | 23 | | if (currentFrame % framesBetweenUpdates == 0) |
| 17 | 24 | | gpuSkinning.Update(); |
| 30 | 25 | | } |
| | 26 | | } |
| | 27 | | } |