6
6
7
7
/*----- Imports --------------------------------------------------------------*/
8
8
import GameData from "./GameData.js" ;
9
+ import Celestial from "./Celestial.js" ;
9
10
10
11
/*----- Classes --------------------------------------------------------------*/
11
12
/** @module Physics Manages the physics simulation. */
@@ -24,16 +25,19 @@ export default class Physics {
24
25
/*----- Constants ----------------------------------------------------------*/
25
26
/** @const {number} G Gravitational constant. */
26
27
static G = 6.67e-11 ;
27
- /** @const {Object} scale Conversion rates for physics equations. */
28
- static scale = {
29
- /** @const {number} scale.space Space scale (meters per pixel). */
30
- space : 0.3e7 ,
31
- /** @const {number} scale.time Time scale (seconds per frame). */
32
- time : 0.5e3 ,
33
- } ;
28
+ /** @const {number} timeScale Time scale (seconds per loop). */
29
+ static timeScale = 0.5e3 ;
34
30
/** @const {number} interval Interval time for physics loop. */
35
31
static interval = 1e3 / 120 ;
36
32
33
+ /*----- Calculation Methods ------------------------------------------------*/
34
+ updatePositions ( ) {
35
+ this . model . scene . forEach (
36
+ /** @arg obj {Celestial} */
37
+ ( obj ) => obj . position . add ( obj . velocity . copy ( ) . scale ( Physics . timeScale ) )
38
+ ) ;
39
+ }
40
+
37
41
/*----- Running Methods ----------------------------------------------------*/
38
42
/** Calculate physics on a set interval. */
39
43
loop ( ) {
@@ -48,5 +52,7 @@ export default class Physics {
48
52
window . clearInterval ( this . _intervalId ) ;
49
53
}
50
54
/** Calculate the physics for objects in the scene and apply to model. */
51
- step ( ) { }
55
+ step ( ) {
56
+ this . updatePositions ( ) ;
57
+ }
52
58
}
0 commit comments