house/bot/bot.rkt

46 lines
1.5 KiB
Racket
Raw Normal View History

2023-02-02 21:23:03 +00:00
#lang syndicate
(module+ main
(require syndicate/distributed/tcp)
(require syndicate/drivers/timer)
(require syndicate/gensym)
(require racket/math)
(require "schemas/scene.rkt")
(require "schemas/shapes.rkt")
(assertion-struct SceneHandle (ds))
(standard-actor-system (ds)
(define (on-connected remote-ds)
(at remote-ds
(during (SceneHandle $scene-e)
(define scene (embedded-value scene-e))
(define (bouncy-box)
(define me (symbol->string (strong-gensym 'user)))
2023-02-03 23:05:06 +00:00
(define x (* (- (random) 0.5) 100))
2023-02-02 21:23:03 +00:00
(define y0 (+ 1.0 (* (random) 10)))
2023-02-03 23:05:06 +00:00
(define z (* (- (random) 0.5) 100))
(define r (random))
(define g (random))
(define b (random))
2023-02-02 21:23:03 +00:00
(define-field y y0)
2023-02-03 23:05:06 +00:00
(define start-time (current-inexact-milliseconds))
(define-field deadline start-time)
2023-02-02 21:23:03 +00:00
(at ds
2023-02-16 20:41:19 +00:00
(on (asserted (LaterThan (/ (deadline) 1000.0)))
2023-02-03 23:05:06 +00:00
(deadline (+ (deadline) (/ 1000 30)))
2023-02-02 21:23:03 +00:00
(y (+ y0 (cos (/ (- (deadline) start-time) 1000.0 (/ 1 2 pi)))))))
2023-02-03 23:05:06 +00:00
2023-02-02 21:23:03 +00:00
(at scene
2023-02-03 23:05:06 +00:00
(assert (Variable me 'y (y)))
(assert (Sprite me '(y) (Move (ImmediateVector3 x 'y z) (Color-opaque r g b (Box)))))))
2023-02-02 21:23:03 +00:00
(for [(i 100)] (bouncy-box)))))
2023-02-03 23:05:06 +00:00
(run-tcp-client-relay ds #:hostname "localhost" #;"vr.demo.leastfixedpoint.com" #:port 9001
2023-02-02 21:23:03 +00:00
#:import (lambda (v) (on-connected (embedded-value v))))))