Timer.java 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * Copyright (c) 2009-2010 jMonkeyEngine
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions are
  7. * met:
  8. *
  9. * * Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. *
  12. * * Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. *
  16. * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
  17. * may be used to endorse or promote products derived from this software
  18. * without specific prior written permission.
  19. *
  20. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  21. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  22. * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  23. * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  24. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  25. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  26. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  27. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  28. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  29. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  30. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. */
  32. package com.jme3.system;
  33. /**
  34. * <code>Timer</code> is the base class for a high resolution timer. It is
  35. * created from getTimer("display system")
  36. *
  37. * @author Mark Powell
  38. * @version $Id: Timer.java,v 1.18 2007/03/09 10:19:34 rherlitz Exp $
  39. */
  40. public abstract class Timer {
  41. /**
  42. * Returns the current time in ticks. A tick is an arbitrary measure of time
  43. * defined by the timer implementation. The number of ticks per second is
  44. * given by <code>getResolution()</code>. The timer starts at 0 ticks.
  45. *
  46. * @return a long value representing the current time
  47. */
  48. public abstract long getTime();
  49. /**
  50. * Returns the time in seconds. The timer starts
  51. * at 0.0 seconds.
  52. *
  53. * @return the current time in seconds
  54. */
  55. public float getTimeInSeconds() {
  56. return getTime() / (float) getResolution();
  57. }
  58. /**
  59. * Returns the resolution of the timer.
  60. *
  61. * @return the number of timer ticks per second
  62. */
  63. public abstract long getResolution();
  64. /**
  65. * Returns the "calls per second". If this is called every frame, then it
  66. * will return the "frames per second".
  67. *
  68. * @return The "calls per second".
  69. */
  70. public abstract float getFrameRate();
  71. /**
  72. * Returns the time, in seconds, between the last call and the current one.
  73. *
  74. * @return Time between this call and the last one.
  75. */
  76. public abstract float getTimePerFrame();
  77. /**
  78. * <code>update</code> recalculates the frame rate based on the previous
  79. * call to update. It is assumed that update is called each frame.
  80. */
  81. public abstract void update();
  82. /**
  83. * Reset the timer to 0. Clear any tpf history.
  84. */
  85. public abstract void reset();
  86. }