loom

Форк
0
/
scene-fibers.s-script 
76 строк · 1.5 Кб
1
import "support.s-script" : s
2
import "shuttle.s-script" type Shuttle
3

4
def float :
5
    t   = 0.0,
6
    tk  = 0.0,
7
    dt  = 0.0
8
    
9
def int :
10
    iteration_step = 1
11
    
12
def auto :
13
    objects = []
14
    
15
def auto :
16
    callback = fn [] ()
17
    {
18
    }
19
    
20
fn add (object : obj)
21
{
22
    if obj["__equetions__"] == null && obj["__rights__"] == null
23
        print "*** scene.add : Объект не является моделью ode"
24
    else
25
        objects ++ obj
26
}
27
    
28
fn start ()
29
{
30
    if tk == t {
31
        print "*** scene.start : Не задано значение tk"
32
        return
33
    }
34
    
35
    if dt == 0.0 {
36
        print "*** scene.start : Не задано значение dt"
37
        return
38
    }
39
    
40
    if iteration_step < 1
41
        iteration_step = 1
42
    
43
    def array.any(objects.size, Shuttle) : shuttles
44
    
45
    for int : i in Range(0,objects.size) {
46
        shuttles[i]["obj"] = & objects[i]
47
        make fiber shuttles[i]
48
    }
49
    
50
    def int : 
51
        n = 0
52
        
53
    s.sendTimeToShellStatusBar(t)
54
    callback()
55
        
56
    while true {
57
        for int : i in Range(0,objects.size)
58
            flow fiber shuttles[i].stepper(t, dt, iteration_step)
59
            
60
        for int : i in Range(0,objects.size) {
61
            wait fiber shuttles[i]
62
            pull fiber shuttles[i]
63
        }
64
    
65
        s.sendTimeToShellStatusBar(t)
66
        callback()
67
        
68
        if t >= tk break
69
        
70
        for int : i in Range(0,objects.size) 
71
            push fiber shuttles[i]
72

73
        n += iteration_step
74
        t = dt * n
75
    }
76
}
77

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.