-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdemo-aether.rkt
More file actions
110 lines (88 loc) · 3.38 KB
/
demo-aether.rkt
File metadata and controls
110 lines (88 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#lang at-exp racket
(provide demo-aether
setup-demo-aether
demo-aether-lang
teleport)
(require codespells-server/lang
codespells-server/unreal-js/unreal-client
)
(define (teleport)
(unreal-eval-js @~a{functions.teleport({X: @(current-x),Y:@(current-z),Z:@(current-y)})}))
(define (setup-demo-aether)
(unreal-eval-js @~a{
functions.teleport = function(location){
var cc = GWorld.GetAllActorsOfClass(Root.ResolveClass('Avatar')).OutActors[0];
cc.SetActorLocation(location);
}
functions.browserWindow = function(id, url){
var widget = widgets[id];
if(!widget){
widget = GWorld.CreateWidget(WB_TextSpellcrafting_C, GWorld.GetPlayerController(0));
console.log(widget);
widget.WebBrowser_309.InitialURL = url;
widget.AddToViewport();
widgets[id] = widget;
}
widget.SetVisibility(ESlateVisibility.Visible);
var control = GWorld.GetPlayerController(0);
control.SetInputMode_UIOnly();
control.bShowMouseCursor = true;
}
})
(unreal-eval-js @~a{
class MyIH extends Root.ResolveClass("InputHelper") {
HandleKeyPressed(key) {
if(key.KeyName == 'C'){
functions.browserWindow("editor", "http://localhost:@(codespells-server-port)/editor");
}
}
}
let MyIH_C = require('uclass')()(global,MyIH);
new MyIH_C(GWorld);
})
(unreal-eval-js @~a{
functions.browserWindow("welcome", "http://localhost:@(codespells-server-port)/");
}))
(define (to-kebab-case mod-name)
(substring
(string-downcase (regexp-replace* #px"([A-Z])" (~a mod-name) "-\\1"))
1))
(define (where-is-pak-folder mod-name)
(define mod-name/mod-info (string->symbol (~a (to-kebab-case mod-name) "/mod-info")))
(define pak-folder (dynamic-require mod-name/mod-info 'pak-folder)
#;(if (running-as-multiplayer-server?)
(dynamic-require mod-name/mod-info 'pak-folder)
(build-path "C:\\Users\\Administrator\\Desktop\\BuildUnreal/WindowsNoEditor/FireParticles/Content/Paks/")))
pak-folder)
(define (demo-aether-lang)
(local-require codespells-runes 2htdp/image)
(rune-lang 'codespells/demo-aether
(list
(html-rune '|(|
(open-paren-rune))
(html-rune '|)|
(close-paren-rune))
(html-rune 'teleport
(svg-rune-description
(rune-background
#:color "green"
(rune-image
(overlay
(circle 5 'solid 'green)
(circle 10 'solid 'black)
(circle 15 'solid 'green)
(circle 20 'solid 'black)
(circle 25 'solid 'green)))))))))
(define (demo-aether #:lang [aether-lang (demo-aether-lang)]
#:setup [more-aether-setup (thunk* (void))])
(lambda ()
(local-require codespells-server)
(displayln "************************Starting Demo Aether")
(setup-demo-aether)
(more-aether-setup)
(map (lambda (f)
(f)) mod-setups)
;Start the server with the appropriate Runes -- Just the teleport rune for now
(parameterize
([current-editor-lang aether-lang])
(codespells-server-start))))