torben | 2017-04-24 15:13
Sunlight Script
A script to control day and night cycle.

The script was made by Paul Wendtland.
- define pitch and colour of sunlight
- control fogcolour and its density
We used it in Lamiae.
https://github.com/Hirato/lamiae

Error message in sauerbraten:
unknown alias lookingup:lastmillis

I don't know, if it's compatible.
But inspiring all the time. :D

https://vimeo.com/214227539

mapstart = $lastmillis
daylength = 50000
x = $daylength
red = 0
green = 0
blue = 0

//Uhrzeit    6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23   0   1   2   3   4   5  extra*\\
//timescale  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  extra*\\
redval   = [ 200 250 230 230 200 180 140 180 230 170 200 180 130 130 140 140 100  50  20  20  20  40  80 150 200 ]
greenval = [ 115 160 150 150 150 150 140 180 230 170 200 180 130 120  90  90  30  20  10  20  10  20  90 105 115 ]
blueval  = [ 110 130 150 150 170 200 210 190 230 200 190 180 170 160 80 100  70  50  50  50  50  70  90 100 110 ]

fogredval   = [ 20 140 150 160 170 150 150 110 100 100 190 100 120 150 160  80  30  30  30  30  10  0  0  10  20 ]
foggreenval = [ 0 100 110 120 130 140 140 140 110 100 190 100 100 100 140  70  30  30  30  30  0  0  0  0  0 ]
fogblueval  = [ 25 100 150 150 150 180 200 190 190 250 190 180 140 150 130 100  80  70  50  30 10  10  0  15 25 ]

fogdensityval = [ 40 50 90 100 130 150 200 230 250 150 50 150 230 180 140 100  90  70  80  30  10  10 20 30 40 ]

//*the extra value has to contain the same as the first value and enables easier looping at the end of the day

redst = []; redsh = []; greenst = []; greensh = []; bluest = []; bluesh = []
fogredst = []; fogredsh = []; foggreenst = []; foggreensh = []; fogbluest = []; fogbluesh = []
fogdenst = []; fogdensh = []

loop i ((- (listlen $redval) 1)) [
 redst = (concat $redst (* (- (at $redval (+ $i 1)) (at $redval $i)) 24 ) ) //red-steigung
 redsh = (concat $redsh (+ (* (*f (at $redst $i) (divf $i 24)) -1) (at $redval $i)))
 greenst = (concat $greenst (* (- (at $greenval (+ $i 1)) (at $greenval $i)) 24 ) ) //green-steigung
 greensh = (concat $greensh (+ (* (*f (at $greenst $i) (divf $i 24)) -1) (at $greenval $i)))
 bluest = (concat $bluest (* (- (at $blueval (+ $i 1)) (at $blueval $i)) 24 ) ) //blue-steigung
 bluesh = (concat $bluesh (+ (* (*f (at $bluest $i) (divf $i 24) ) -1) (at $blueval $i)))
 
 fogredst = (concat $fogredst (* (- (at $fogredval (+ $i 1)) (at $fogredval $i)) 24 ) ) //fogred-steigung
 fogredsh = (concat $fogredsh (+ (* (*f (at $fogredst $i) (divf $i 24)) -1) (at $fogredval $i)))
 foggreenst = (concat $foggreenst (* (- (at $foggreenval (+ $i 1)) (at $foggreenval $i)) 24 ) ) //foggreen-steigung
 foggreensh = (concat $foggreensh (+ (* (*f (at $foggreenst $i) (divf $i 24)) -1) (at $foggreenval $i)))
 fogbluest = (concat $fogbluest (* (- (at $fogblueval (+ $i 1)) (at $fogblueval $i)) 24 ) ) //fogblue-steigung
 fogbluesh = (concat $fogbluesh (+ (* (*f (at $fogbluest $i) (divf $i 24) ) -1) (at $fogblueval $i)))
 
 fogdenst = (concat $fogdenst (* (- (at $fogdensityval (+ $i 1)) (at $fogdensityval $i)) 24 ) ) //fogblue-steigung
 fogdensh = (concat $fogdensh (+ (* (*f (at $fogdenst $i) (divf $i 24) ) -1) (at $fogdensityval $i)))
]


// CYCLE STARTS ------------------------------------------------------------------------------
cycle = [

time = (mod (- $lastmillis $mapstart) $daylength)
hour = (div (* (- $time 1) 24) $x) //Ganzzahl zwischen 0 und 23

red = (+ (div (* (at $redst $hour) $time) $x) (at $redsh $hour))
green = (+ (div (* (at $greenst $hour) $time) $x) (at $greensh $hour))
blue = (+ (div (* (at $bluest $hour) $time) $x) (at $bluesh $hour))

fogred = (+ (div (* (at $fogredst $hour) $time) $x) (at $fogredsh $hour))
foggreen = (+ (div (* (at $foggreenst $hour) $time) $x) (at $foggreensh $hour))
fogblue = (+ (div (* (at $fogbluest $hour) $time) $x) (at $fogbluesh $hour))

fogdensity = (+ (div (* (at $fogdenst $hour) $time) $x) (at $fogdensh $hour))

 
ambient (+ 30 (div $red 10)) (+ 20 (div $green 10)) (+ 15 (div $blue 10))
sunlight $red $green $blue
fogcolour $fogred $foggreen $fogblue
fog (* $fogdensity 30)
cloudcolour $red $green $blue
skyboxcolour $red $green $blue
sunlightyaw (divf (* 360 $time) $x )

//--------Kommentar entfernen, um die jeweiligen Werte anzuzeigen------|
sunlight
//sunlightyaw
//sunlightpitch

sunlightpitch (-f 45 (*f 40 (cos (divf (* 360 $time) $x)))) 
//---------andere Pitchvarianten-------|
//sunlightpitch (-f 45 (*f 40 (cos (*f 2 (*f 360 (*f (divf $time $x) (divf $time $x) ))) )))
//sunlightpitch (-f 45 (*f 40 (cos (*f 2 (*f 360 (*f (divf (+ $time (div $x 12) ) $x) (divf (+ $time (div $x 12) ) $x) ))) )))
//-------------------------------------|

 sleep 50 cycle
]
cycle
0
points
 (0 votes)
User login
Users on Quadropolis
44 guests & no users online
30
points ]
 (3 votes)
Created 2019-05-17 21:51
5 years 27 weeks ago
30
points ]
 (3 votes)
Created 2020-06-13 21:05
4 years 23 weeks ago
20
points ]
 (2 votes)
Created 2021-05-24 00:01
3 years 26 weeks ago
8
points ]
 (1 vote)
Created 2024-06-02 14:26
24 weeks 3 days ago
8
points ]
 (1 vote)
Created 2024-06-02 22:13
24 weeks 3 days ago
vampirefrog
Created 2024-04-11 22:25
31 weeks 6 days ago
vampirefrog
29
points ]
 (4 votes)
Created 2010-05-30 10:00
14 years 25 weeks ago
Gangler
36
points ]
 (4 votes)
Created 2020-10-22 00:50
4 years 4 weeks ago
Zoocata
10
points ]
 (1 vote)
Created 2024-02-11 21:20
40 weeks 3 days ago
vampirefrog
10
points ]
 (1 vote)
Created 2023-07-23 20:02
1 year 17 weeks ago
36
points ]
 (4 votes)
Created 2020-12-10 12:49
3 years 49 weeks ago
Created 2023-12-12 23:34
49 weeks 1 day ago
Zoocata
Created 2023-11-27 23:00
51 weeks 2 days ago
20
points ]
 (2 votes)
Created 2023-10-01 15:21
1 year 7 weeks ago
9
points ]
 (1 vote)
Created 2023-06-13 17:54
1 year 23 weeks ago
Zoocata
27
points ]
 (3 votes)
Created 2023-05-05 20:58
1 year 28 weeks ago
Zoocata
18
points ]
 (2 votes)
Created 2023-03-02 01:40
1 year 37 weeks ago
Getridou
Created 2023-01-29 23:27
1 year 42 weeks ago
Created 2023-01-19 19:36
1 year 43 weeks ago
Getridou
Created 2023-01-10 17:10
1 year 45 weeks ago