Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support multiple var declarations in GLSL parser #625

Draft
wants to merge 2,812 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2812 commits
Select commit Hold shift + click to select a range
d4bb838
Bump to kotlin 0.9.21 and fix compilation error.
xian Nov 25, 2023
b0aed51
Bump to kotlin-wrappers 1.0.0-pre.648.
xian Nov 25, 2023
e9cf835
Bump to kotlin-wrappers 1.0.0-pre.662.
xian Dec 9, 2023
5d6db33
Cleanup.
xian Dec 9, 2023
95395c2
Merge pull request #586 from baaahs/bump-versions
xian Dec 9, 2023
566c8a8
Fix react error message.
xian Dec 9, 2023
b694a91
Update README.md
xian Dec 12, 2023
2a4b9b2
Switch gadgets and show state from pubsub to commands.
xian Dec 9, 2023
6d2c95f
Bump gradle to 8.5.
xian Dec 16, 2023
aa0a9da
Refactor RPC support.
xian Dec 18, 2023
9985f29
Fix RPC ksp processor to handle return values. Convert ShowControlCom…
xian Dec 18, 2023
72f0a9f
Move DmxManager commands to use RPC @Service.
xian Dec 19, 2023
ed7a702
Switch SoundAnalysisPlugin to use RPC.
xian Dec 23, 2023
b8ec10e
Use RPC for RemoteFs. RPC ClassProcessor supports method overloading.
xian Dec 23, 2023
bc2913e
Merge pull request #587 from baaahs/tracks
xian Dec 23, 2023
b4c6305
Changes to support kotlin 2.0.0-Beta2.
xian Dec 23, 2023
27e9d0b
Rearrange migration code.
xian Dec 24, 2023
39c5064
Refactor toward less far-flung reliance on baaahs.mapper.Storage.
xian Dec 26, 2023
cd4faa0
Bump kotlin-wrappers to 1.0.0-pre.687.
xian Jan 20, 2024
c51b8f6
Remove shader libraries from baaahs.mapper.Storage.
xian Dec 26, 2023
cd97229
Remove FsServerSideSerializer from baaahs.mapper.Storage.
xian Dec 26, 2023
a723735
Remove PinkyConfig handling from baaahs.mapper.Storage.
xian Dec 26, 2023
20898ba
Remove everything unrelated to mapping from baaahs.mapper.Storage.
xian Dec 27, 2023
b5539f7
Pull ShaderLibraryIndex out to its own file.
xian Dec 27, 2023
7282422
Rename Storage to MappingStore.
xian Dec 28, 2023
0ca267b
Include JUnit tests in jvmTest target.
xian Dec 29, 2023
d27f3e9
Fix long-broken test.
xian Dec 29, 2023
a76ad66
Use kotlinx-datetime instead of klock.
xian Dec 29, 2023
a1e38b7
Fix tz injection test bug.
xian Dec 30, 2023
51604fe
Refactor double time -> instant.
xian Dec 30, 2023
047dac5
Use MappingSession migrations.
xian Dec 30, 2023
fae9182
Merge pull request #589 from baaahs/kotlinx-datetime
xian Jan 20, 2024
fd1a627
Merge branch 'main' into bump-versions
xian Jan 20, 2024
606091e
Merge pull request #590 from baaahs/bump-versions
xian Jan 20, 2024
472cb98
Bump to Kotlin 1.9.22.
xian Feb 11, 2024
6caf6e7
Better gh-pages commit messages.
xian Feb 11, 2024
25cbc72
Merge pull request #591 from baaahs/kotlin-1.9.22
xian Feb 11, 2024
0a43f34
Merge branch 'main' into waveform-preview
xian Feb 19, 2024
1f919ba
Bump to kotlin 2.0.0-Beta2.
xian Dec 24, 2023
53851c4
Kotlin 2.0-beta3
xian Jan 19, 2024
af99fcc
Bump to Kotlin 2.0.0-Beta4.
xian Feb 19, 2024
e4fa451
Add migration to remove vestigial 'varPrefix' key from XyPad feeds.
xian Mar 3, 2024
71d0fb8
Oops fix spec.
xian Mar 3, 2024
1a2f34f
Merge pull request #592 from baaahs/migrate-var-prefix
xian Mar 3, 2024
9b8b25d
Update README.md
xian Mar 9, 2024
ed3d62e
Merge branch 'main' into waveform-preview
xian Mar 21, 2024
9e8b1c0
Fix Duration.toHHMMSS() formatting.
xian Mar 21, 2024
95e6aac
Fix Time -> Instant.
xian Mar 21, 2024
b63267d
Add hairline between players.
xian Mar 21, 2024
325eeea
Bump to Kotlin 2.0.0-Beta5.
xian Mar 22, 2024
fa80dee
Bump to Kotlin 2.0.0-RC1.
xian Apr 14, 2024
d727cf5
Use IntersectionObserver and ResizeObserver from web.dom.observers.
xian Apr 14, 2024
e761a0a
Merge pull request #568 from baaahs/waveform-preview
xian May 7, 2024
f580416
Bump to Kotlin 2.0-RC2.
xian May 9, 2024
735b7b0
Add show from Ever Afters 2024.
xian May 9, 2024
acdd13a
Merge pull request #588 from baaahs/kotlin-2.0
xian May 9, 2024
5df889a
Buttons can be pressed while other pointers are down.
xian May 16, 2024
5773f87
Updates related to latest IDF. Correcting a formatting string in sysmon
tomseago May 20, 2024
384a415
Add /.kotlin to .gitignore.
xian May 23, 2024
4744b5c
Bump gradle to 8.7.
xian May 29, 2024
b279ff7
Bump kotlin to 2.0.0.
xian May 29, 2024
82f1173
Fix deprecations in build.gradle.kts.
xian May 29, 2024
cd4f469
Merge pull request #597 from baaahs/kotlin-2.0
xian May 30, 2024
2aca7de
Merge pull request #596 from baaahs/button-multitouch
xian May 30, 2024
025d776
Fixing what looks like a Kotlin 2.0 JS compiler issue.
xian Jul 6, 2024
43d3d5c
Merge pull request #598 from baaahs/fix-brain-controller-bug
xian Jul 6, 2024
f4bc92d
Fix issue where toggle buttons couldn't be turned off.
xian Jul 16, 2024
70f77a2
Merge pull request #600 from baaahs/fix-599
xian Jul 16, 2024
32975e9
Switch to local long-press-event dep.
xian Jul 25, 2024
5e7f342
Ignore long press on context click.
xian Jul 25, 2024
9d1a086
Note to undo hacks when long-press-event 2.5 is released.
xian Jul 25, 2024
d23d065
Bump gradle to 8.8.
xian Jul 26, 2024
cc03fed
Remove soon-to-be-unsupported error suppressions and fix some underly…
xian Jul 26, 2024
77426a1
Make baaahs.ui.View a concrete common interface.
xian Jul 26, 2024
642deee
Make baaahs.ui.Icon a concrete common interface.
xian Jul 26, 2024
624bfab
Make baaahs.ui.DialogHolder a concrete common interface.
xian Jul 26, 2024
7d5fe89
Merge pull request #601 from baaahs/mute-dumb-warnings
xian Jul 26, 2024
70e0f21
Merge pull request #602 from baaahs/concrete-view
xian Jul 26, 2024
d37a531
Include filename in data file migration logging.
xian Jul 27, 2024
bbe7cb1
Merge branch 'migrator-context'
xian Jul 27, 2024
e2c2532
Switch to gradle's JVM toolchain stuff.
xian Apr 27, 2024
44c8f96
Use JVM 17 / Adoptium toolchain.
xian Jul 27, 2024
1f0cf50
Add fullscreen toggle button to app toolbar.
xian Jun 30, 2024
a75dd45
Fix viewport registration and overdraw in shared GL contexts.
xian Aug 1, 2024
009f12a
Fix "No scene loaded" warning in simulator visualizer.
xian Aug 1, 2024
563a127
Add a couple nice shaders to library.
xian Aug 1, 2024
ce4d642
Allow screen brightness to be adjusted.
xian Aug 1, 2024
9a7df81
Add Full Screen toggle to display settings menu.
xian Aug 1, 2024
633351a
Merge pull request #604 from baaahs/dimmer
xian Aug 1, 2024
20b64fa
Use in param for MoverShader upstream overrides
kcking Aug 4, 2024
a8be80f
Add a dashed orange line showing where moving heads would point if th…
xian Aug 8, 2024
e27d60a
Default to dimmer level of 80%.
xian Aug 17, 2024
5a96d72
Draw slider handle as an SVG.
xian Sep 27, 2022
1e98981
Nicer min/max handles for slider in beat-linked mode.
xian Aug 20, 2024
8d37d5a
Finessing of handle drag touch areas.
xian Aug 20, 2024
5142d31
Merge pull request #607 from baaahs/slider-beatlink-cleanup
xian Aug 20, 2024
e1ec358
Move ClosedRange helpers from MovingHeadVisualizer to baaahs.util.
xian Aug 20, 2024
2b6a0d7
Fix glsl error in test.
xian Aug 20, 2024
cebb8c1
Add class doc for SimulatorBridge.
xian Aug 20, 2024
9221c7b
Refactor active patch set change notification flow and display info.
xian Aug 22, 2024
04711ab
Pause full Pinky simulation by default.
xian Aug 22, 2024
17f01eb
Rudimentary support for adjusting sliders from a MIDI device.
xian Aug 20, 2024
b17043c
Highlight slider when affected by midi control.
xian Aug 22, 2024
e0dada3
EventManager handles MIDI events. Slider view indicates when remove e…
xian Aug 23, 2024
e4cefee
Files as found from the end of BAAAHS Campout 2024
xian May 27, 2024
9a054b5
Merging scene data files from 2023.
xian Aug 25, 2024
79f317f
Updates for BRC build 2024 round 1.
xian Aug 26, 2024
0f55eb3
Remove 4-pixel offset from all brains (from campout).
xian Aug 26, 2024
eb357fa
Merge branch 'midi-24' into brc-2024
xian Aug 26, 2024
83fbaaf
Revert "Merge branch 'midi-24' into brc-2024"
xian Aug 26, 2024
18aa964
Remove obnoxious logging.
xian Aug 26, 2024
cf35661
BRC 2024 Monday afternoon!
xian Aug 26, 2024
7c1cf59
Manual revert of 2a4b9b21: Switch gadgets and show state from pubsub …
xian Aug 27, 2024
6735276
Merge branch 'fix-sliders-after-show-update' into brc-2024
xian Aug 27, 2024
8cd8b9c
Sonic Runway plugin, initial commit.
xian Aug 27, 2024
774930e
Seems-to-be-working Sonic Runway wiring.
xian Aug 28, 2024
1336f8c
Merge tgvarik's OSC implementation for Sonic Runway.
xian Aug 28, 2024
d2179fe
Integrate tgvarik's impl for OSC.
xian Aug 28, 2024
a1ffbb8
Switch to production port for Sonic Runway OSC.
xian Aug 28, 2024
f2e681b
Merge branch 'jvm-toolchain' into sonic-runway
xian Aug 28, 2024
aa5c631
Switch to JDK 19, required by com.illposed.osc:javaosc-core:0.9.
xian Aug 28, 2024
a096750
Add Sonic Runway shader.
xian Aug 28, 2024
29a3efe
Sliders can be bound to specific MIDI channel numbers.
xian Aug 29, 2024
33d3049
Changes on Weds.
xian Aug 29, 2024
96137af
Use nonstandard player number for beatlink.
xian Aug 29, 2024
57b3541
Merge branch 'sonic-runway' into brc-2024
xian Aug 29, 2024
d51f00c
Reverse BSH sliders to HSB.
xian Aug 29, 2024
abe9b95
Kill MidiSystem.
xian Aug 29, 2024
d5534b7
Revert "Revert "Merge branch 'midi-24' into brc-2024""
xian Aug 29, 2024
cae788a
Oops don't pause Pinky in prod.
xian Aug 29, 2024
a80dae2
Merge remote-tracking branch 'origin/midi-24' into brc-2024
xian Aug 29, 2024
c8ae2e9
Merge branch 'midi-24' into brc-2024
xian Aug 29, 2024
2b7d071
Adjust center of XY mapping on BAAAHS.
xian Aug 29, 2024
06ae3fe
Move html linebreak escaping from DateFeed's description to help view.
xian Aug 17, 2024
c532fbe
PixelIndexFeed's glsl type is int, not float.
xian Aug 17, 2024
c2d43d5
Clean up help text for functional feeds.
xian Aug 17, 2024
d829abe
Move ShaderHelpView to help package.
xian Aug 17, 2024
b761666
Show feed descriptions in a resizable popup, not in teeny tiny box.
xian Aug 17, 2024
4715f76
Merge branch 'better-help' into brc-2024
xian Aug 29, 2024
5e0f067
Fixing sysmon typing (again) and playa Thursday build
tomseago Aug 29, 2024
97ce689
add sonic runway recolor shader
tgvarik Aug 29, 2024
948c80f
Invert Y axis on Position and Scale patchmod so it makes sense.
xian Aug 30, 2024
5f7e003
Merge branch 'fix-patchmod-y' into brc-2024
xian Aug 30, 2024
6f845af
invert fixureInfo.transformation, helps fix eye target mover shader
kcking Aug 30, 2024
eaf86cc
fix mover target shader
kcking Aug 30, 2024
76b19bd
update eye model with different rotations
kcking Aug 30, 2024
608462e
json format sonic runway show
kcking Aug 30, 2024
23b1a1b
fix eye target shader in Sonic Runway show
kcking Aug 30, 2024
c68a475
Update README.md badges
xian Sep 4, 2024
9eab215
Merge pull request #609 from baaahs/better-help
xian Sep 4, 2024
11eb6ca
Switch to JDK 19, required by com.illposed.osc:javaosc-core:0.9.
xian Aug 28, 2024
4dd92e5
Merge pull request #594 from baaahs/jvm-toolchain
xian Sep 5, 2024
0d80a79
Don't start hardware simulation until user action.
xian Aug 1, 2024
f9fc6d6
Better simulation of brain restarts. Cleanup of simulator console.
xian Sep 7, 2024
2bb05df
Apply theme to simulator console.
xian Sep 7, 2024
5a67c21
Bump to kotlin 2.0.20-Beta2.
xian Jul 26, 2024
7e12d9e
Revert "Fixing what looks like a Kotlin 2.0 JS compiler issue."
xian Jul 27, 2024
1593724
Bump to kotlin 2.0.20-RC.
xian Aug 9, 2024
006cda8
Bumpe to Kotlin 2.0.20.
xian Sep 7, 2024
6f693cc
Merge pull request #603 from baaahs/kotlin-2.0.20
xian Sep 8, 2024
4b84441
Bump kotlin-wrappers to 1.0.0-pre.729 and fix broken stuff.
xian Apr 25, 2024
b728541
Bump kotlin-wrappers to 1.0.0-pre.774, and fix broken stuff.
xian Sep 8, 2024
312c98c
Bump kotlin-wrappers to 1.0.0-pre.804, and fix broken stuff.
xian Sep 8, 2024
b35723b
Merge pull request #606 from baaahs/real-time-mover-tracking
xian Sep 8, 2024
aa8bd21
Merge pull request #614 from baaahs/better-hardware-sim
xian Sep 8, 2024
8bf2905
Merge pull request #615 from baaahs/kotlin-2.0-bump-wrappers-774
xian Sep 8, 2024
cd6939e
Oops, fix kotlin-wrappers fix missed in merge.
xian Sep 8, 2024
6e6fbed
Fix simulated brains in console after react upgrade.
xian Sep 8, 2024
a98140a
Move BaseVisualizer to its own file.
xian Sep 9, 2024
b435588
Ignore moving head beams when calculating scene bounds for visualizer…
xian Sep 9, 2024
d9a61d3
Fix camera zoom in visualizer.
xian Sep 9, 2024
1bcb2ff
Merge pull request #616 from baaahs/fit-camera-ignoring-sharpy-beams
xian Sep 9, 2024
6c74010
Move ThreeJS stubs to their own gradle project.
xian Sep 9, 2024
daaae55
Bump to three 0.168.0.
xian Sep 9, 2024
6c3cb1d
Wrappers for three-0.168.0 compile.
xian Sep 10, 2024
13d610d
Kill some warnings in three-0.168.0 compilation.
xian Sep 10, 2024
ea46f93
ThreeJS wrappers: optimize imports.
xian Sep 10, 2024
60dd43b
ThreeJS wrappers: remove some excessive generics.
xian Sep 10, 2024
3a9893d
ThreeJS wrappers: simplify some not-very-useful generics, Doubles ins…
xian Sep 11, 2024
4281ec2
Move three npm dependency to ext/three. Fix @JsModule annotations.
xian Sep 11, 2024
c2d7b3c
Update README.md
xian Sep 12, 2024
567c339
Update README.md
xian Sep 12, 2024
4ec562a
Migrate to Three 1.168.
xian Sep 12, 2024
a40419f
Move from package 'three.js' to just 'three'.
xian Sep 12, 2024
090b851
Create JsMapper lazily — only on Scene -> Mapper tab.
xian Sep 12, 2024
85da426
Merge pull request #617 from baaahs/bump-three
xian Sep 12, 2024
c453cf5
Cleanup.
xian Sep 14, 2024
9913413
Update README.md
xian Sep 15, 2024
be4309d
Fix model entity transformation UI.
xian Sep 15, 2024
fc3d270
Nicer selected entity colors.
xian Sep 15, 2024
8c5d931
Refactor visualizer extensions so they can be passed into BaseVisuali…
xian Sep 15, 2024
212d264
Add wrappers for ThreeJS addons. Doesn't compile yet.
xian Sep 12, 2024
c3085fe
Wrappers for ThreeJS addons compile.
xian Sep 12, 2024
590a29c
Repackage some baaahs.visualizer classes.
xian Sep 12, 2024
f4dc841
Support text overlays in visualizers.
xian Sep 15, 2024
c725c34
Merge pull request #618 from baaahs/show-entity-info-in-viz
xian Sep 16, 2024
b541a81
On Controllers tab, show controllers full width until one is selected.
xian Sep 7, 2024
dec7aed
WIP: On Controllers tab, show controllers full width until one is sel…
xian Sep 7, 2024
1e917c6
Scroll selected fixture list item into view in scene editor.
xian Sep 16, 2024
6658fd4
Header width fix.
xian Sep 16, 2024
acccbe7
Show fixture id in controller list.
xian Sep 16, 2024
340b215
Model editor: don't show transform palette or gizmo unless edit mode …
xian Sep 16, 2024
276b1cd
Model editor: fields shouldn't be editable except in edit mode.
xian Sep 16, 2024
de81df6
Styling on edit scene properties panels.
xian Sep 17, 2024
eb410f2
Fix help text.
xian Sep 17, 2024
7b4ee86
Merge pull request #619 from baaahs/show-fixtures-for-controllers
xian Sep 17, 2024
7957c31
File dialog keyboard bindings.
xian Sep 18, 2024
db213eb
Don't undo/redo if undo stack is empty.
xian Sep 18, 2024
9df9f85
Merge pull request #620 from baaahs/file-dialog-update
xian Sep 18, 2024
a9ec90b
WIP recover from brain losing network
kcking Sep 7, 2024
afde719
Address pr comment
kcking Sep 21, 2024
2b8da6c
Add BRC 2024 show as template.
xian Sep 22, 2024
19d6c08
Merge branch 'brc-2024' into merge-brc-2024
xian Sep 23, 2024
b25ee17
fix mover target shader
kcking Aug 30, 2024
66cbcd9
json format sonic runway show
kcking Aug 30, 2024
7543bf3
UPdate show
xian Aug 30, 2024
152aa99
Remove eventBindings.
xian Aug 30, 2024
afd7c52
Revert "update eye model with different rotations"
xian Aug 30, 2024
77c6a99
Eye target shader much closer, fixed euler angle application order in…
xian Aug 30, 2024
5b90452
Friday updates.
xian Aug 31, 2024
d00a642
latest sparkle
xian Aug 31, 2024
89e7a1c
Fix JsMidiSource since MIDI APIs became suspend calls.
xian Sep 23, 2024
14a7c45
Fix duplicate Brightness slider.
xian Sep 23, 2024
4d0cc45
Remove Sonic Runway plugin from BRC 2024.
xian Sep 23, 2024
10a7c5d
Remove resize console noise.
xian Sep 23, 2024
b5a28e0
Switch to BRC 2024 show for default server.
xian Sep 23, 2024
324f013
Add "Show GL Contexts" palette to dev menu for context allocation deb…
xian Sep 24, 2024
43de9a7
Optimize WebGL context allocation for shader previews.
xian Sep 24, 2024
0d7377c
If a preview's size hasn't actually changed, don't reallocate RenderE…
xian Sep 24, 2024
a96356e
Fix Matrix4F.compose() spec.
xian Sep 24, 2024
b5f31e5
Revert "Invert Y axis on Position and Scale patchmod so it makes sense."
xian Sep 25, 2024
705f491
Fix ShowSerializationSpec.
xian Sep 25, 2024
cf2b0de
Fix spec.
xian Sep 25, 2024
a76cf7b
Hmmm okay let's try JDK 19 again?
xian Sep 25, 2024
a385c6e
Fix frozen moving head previews.
xian Sep 25, 2024
85bfc5d
Fix frozen moving head previews.
xian Sep 25, 2024
e753a06
Clearer names.
xian Sep 25, 2024
7875146
File per class.
xian Sep 25, 2024
4b1aef3
Fix dimming of direct-to-canvas-rendered previews like for moving heads.
xian Sep 25, 2024
77ad22b
Merge pull request #622 from baaahs/merge-brc-2024
xian Sep 25, 2024
cc65c17
Fix exception closing PromptDialog.
xian Sep 25, 2024
44e3cfd
Simplify parser comment handling a little.
xian Sep 29, 2024
625bc45
Pull Tokenizer out of GlslParser.
xian Sep 29, 2024
008a5cc
Tokenizer and parser hand around tokens, not strings.
xian Oct 1, 2024
67fa8b0
Test that macros with no args but with parens work.
xian Oct 1, 2024
30dbb0c
Move GlslParser to its own package.
xian Oct 1, 2024
9adca9c
Pull parse state classes out of GlslParser.
xian Oct 1, 2024
8b999c7
Untangle Tokenizer/GlslParser/ParseState a little.
xian Oct 1, 2024
d2553a9
More disentangling of Tokenizer/GlslParser/ParseState.
xian Oct 1, 2024
0a59b77
Pass around tokens in more places.
xian Oct 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
85 changes: 85 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
version: 2
jobs:
build:
branches:
ignore: gh-pages

docker:
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
- image: cimg/openjdk:18.0.2-node

resource_class: medium+

working_directory: ~/repo

environment:
NO_GPU: "true"

steps:
- checkout

- restore_cache:
keys:
- v1-dependencies-{{ checksum "build.gradle.kts" }}
- v1-dependencies-

- run:
name: Prefetch Dependencies
command: |
./gradlew model -PisProduction

- save_cache:
paths:
- ~/.gradle
key: v1-dependencies-{{ checksum "build.gradle.kts" }}

- run:
name: Build
command: |
./gradlew build -PisProduction -xjsBrowserTest --stacktrace --no-daemon --no-parallel --info

- add_ssh_keys:
fingerprints:
- "e6:55:46:24:0b:66:40:62:f9:72:10:00:de:41:37:e6"

- run:
name: Save test results
command: |
mkdir -p build/test-results-circleci
find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} build/test-results-circleci/ \;
when: always

- store_test_results:
path: build/test-results

- store_artifacts:
path: build/processedResources/js/main

- store_artifacts:
path: build/reports

- run:
name: Deploy to gh-pages
command: |
if [ "${CIRCLE_BRANCH}" == "main" ]; then
mkdir -p build/gh-pages/.circleci
cp .circleci/gh-pages-config.yml build/gh-pages/.circleci/config.yml

cp -r build/dist/js/productionExecutable/* build/gh-pages

# don't ignore files starting with _
touch build/gh-pages/.nojekyll

build=${CIRCLE_BUILD_NUM:-unknown}
rev=$(git rev-parse --short HEAD)
message=$(git log -1 --pretty=%B)
echo "Build $build at `date`." > build/gh-pages/BUILT.txt

git config --global user.email "[email protected]"
git config --global user.name "CI Builder"

mkdir -p deploy/node_modules
npm install --prefix deploy --silent [email protected]
`npm bin --prefix deploy`/gh-pages --dotfiles --message "Deploy $build: [$rev] $message" --dist build/gh-pages
fi
5 changes: 5 additions & 0 deletions .circleci/gh-pages-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
version: 2
jobs:
build:
branches:
ignore: gh-pages # prevent gh-pages from triggering circleci
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
build
.idea
.gradle
node_modules
.DS_Store
.kotlin
.java-version
306 changes: 306 additions & 0 deletions CMakeLists.txt

Large diffs are not rendered by default.

91 changes: 91 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# BAAAHS Code of Conduct

## 1. Purpose

A primary goal of BAAAHS (Big-Ass Amazingly Awesome Homosexual Sheep) is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of age, gender, sexual orientation, sexual position (top, bottom, versatile), ability, ethnicity, socioeconomic status, technical ability, fashion-sense, and religion (or lack thereof).

This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.

We invite all those who participate in BAAAHS to help us create safe and positive experiences for everyone.

## 2. Open Culture Citizenship

A supplemental goal of this Code of Conduct is to increase open culture citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.

Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.

If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.

## 3. Expected Behavior

The following behaviors are expected and requested of all community members:

* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
* Exercise consideration and respect in your speech and actions.
* Attempt collaboration before conflict.
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.

## 4. Unacceptable Behavior

The following behaviors are considered harassment and are unacceptable within our community:

* Violence, threats of violence or violent language directed against another person.
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
* Posting or displaying violent material.
* Posting or threatening to post other people's personally identifying information ("doxing").
* Personal insults, particularly those related to gender, sexual orientation, sexual position, race, religion, or disability.
* Inappropriate photography or recording.
* Inappropriate physical contact. You should have someone's consent before touching them.
* Unwelcome sexual attention. This includes, inappropriate touching, groping, and unwelcomed sexual advances without consent.
* Deliberate intimidation, stalking or following (online or in person).
* Advocating for, or encouraging, any of the above behavior.
* Sustained disruption of community events, including talks, presentations, and parties.

## 5. Weapons Policy

No weapons will be allowed at BAAAHS events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives, and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter.

## 6. Consequences of Unacceptable Behavior

Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.

Anyone asked to stop unacceptable behavior is expected to comply immediately.

If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).

## 7. Reporting Guidelines

If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. Use our email: [email protected]

Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.

## 8. Addressing Grievances

If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify [email protected] with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.


## 9. Scope

We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business.

This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.

## 10. Contact info

[email protected]

## 11. License and attribution

The BAAAHS Code of Conduct is a fork of the Citizen Code of Conduct. The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).

Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).

_Revision 2.3. Posted 6 March 2017._

_Revision 2.2. Posted 4 February 2016._

_Revision 2.1. Posted 23 June 2014._

_Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
The MIT License

Copyright (c) 2013-2019 BAAAHS

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
153 changes: 150 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,153 @@
# BAAAHS Simulator 2
# Sparkle Motion

[![CircleCI:main](https://circleci.com/gh/baaahs/sparklemotion.svg?style=svg)](https://circleci.com/gh/baaahs/sparklemotion)
[![](https://dcbadge.limes.pink/api/server/https://discord.gg/AueGMvuTnQ?style=flat-square)](https://discord.gg/AueGMvuTnQ)
[![Demo Link](https://img.shields.io/badge/Demo-baaahs.github.io/sparklemotion-blue)](https://baaahs.github.io/sparklemotion)

Sparkle Motion[^1] is the system used to control the lights on [BAAAHS](http://baaahs.org), but it's
designed so it could be applied to pretty much any lighting project. It includes a browser-based
light show designer and performance interface, 3D light mapping, IP-based control protocol, and
custom LED control hardware and firmware. We designed it all pretty much from scratch, because
we're nerds. We hope you'll have some fun with it and maybe find it useful.
[^1]: It's a [Donnie Darko](https://www.youtube.com/watch?v=4QJCn04dfek) [reference](https://wakeupdonnie.fandom.com/wiki/Sparkle_Motion).

| ![SparkleMotionDemo-20220308](https://user-images.githubusercontent.com/40298/157351650-5b3338b7-757a-4e76-bfe2-743a06bb2891.gif) | <img src="/brc-2019.gif" alt="BAAAHS at BRC 2019" width="400"> |
| --- | --- |
| The Sparkle Motion [Simulator](https://baaahs.github.io/sparklemotion) | BAAAHS at Black Rock City, 2019 |

**tl;dr:**

Shows are built out of small scripts called shaders, which are written in
[GLSL](https://www.khronos.org/opengl/wiki/Core_Language_(GLSL)). Lots of [awesome](http://glslsandbox.com/)
[free](https://www.shadertoy.com/) shaders and [dev](https://github.com/radixzz/awesome-glsl)
[tools](https://shaderfrog.com/) already exist on the internet. In the show designer, you can create or
import shaders, and attach them to buttons or sliders in a customizable performance UI. Shaders can be
combined in interesting ways to create new effects. You can make shows reactive to the environment by
connecting external sensor data—like a beat detector, midi controller, sound spectral analysis, or a
webcam—to shader variables.

Sparkle Motion can control LED strips using industry-standard
[sACN](https://artisticlicenceintegration.com/technology-brief/technology-resource/sacn-and-art-net/)
(or with our custom IP protocol), and Sharpy-style moving heads
over DMX, but it could be extended to control pretty much any kind of device. Lights can be mapped to a
3D model using computer vision. Individual lighting fixtures, or groups of fixtures, can be controlled
separately. All types of lights are controlled using the same language and idioms.

On the hardware side, Sparkle Motion includes specs for an ESP32-based controller which you could build
(or [buy from us](mailto:[email protected])!) managing WS2812-family LEDs, which is controlled over
Ethernet or WiFi.

----

## Show Designer

A _show_ is a collection of shaders, attached to UI elements, which can be arbitrarily combined and made reactive to the
environment using sensors,

(more TK)

## Scene Configuration

Sparkle Motion shows may be designed with a specific model and display fixtures in mind, but most shows can be applied to any model and fixtures.

To facilitate this, Sparkle Motion separates configuration of scene elements (the physical model and fixtures) from visuals and the performance interface.

| Term | Definition |
| --- | --- |
| **Driver** | A pluggable software component that can talk to specific types of display controller hardware, e.g. Brains, WLED, or DMX USB dongles. |
| **Controller** | A physical component directly connected to display hardware, e.g. a Sparkle Motion Brain, a WLED controller, or a DMX USB dongle. One or more fixtures may be associated with a controller. |
| **Fixture** | A physical display device, e.g. a moving head, a pixel array surface (a.k.a. panel), an LED bar, etc. |
| **Scene/Stage?** | The collection of fixtures under control of Sparkle Motion, which may be identified as model entities, or anonymous. |
| **Geometry** | The physical shape of a pixel array fixture. |
| **Model** | A 3-dimensional model to which fixtures may be mapped. Models may be composed of OBJ files and explicitly placed entities. |
| **Entity** | An object within the model, e.g. a sheep panel or eye. |

Note that in some cases a single controller may control multiple fixtures. Commonly, a physical DMX USB dongle may have
multiple moving heads attached. It's possible (but less common) for a single brain or WLED controller to be attached to
multiple physical lighting fixtures.

Also, it's possible for a DMX controller to manage multiple DMX universes, e.g. in the case of a WLED controller
managing more than 170 pixels.

ERD:

Driver <->* Controller <->* Fixture <->? Entity *<--> Model

A fixture may be *identified* or *anomnymous*.

Identified fixtures are associated with an entity in the model, and therefore have a known position and geometry.

Anonymous fixtures are mostly for stuff like bikers-by. They are randomly placed within the model. Pixel arrays are assumed to be linear.

## Mapper

Sparkle Motion's mapper lets you detect arbitrarily-placed lights on a 2D or 3D model using just a camera
connected to a laptop.

(more TK)

## Hardware

(more TK)

[More here](brain/sw/README.md).

## Simulator

The entire system can be run within a web browser in simulation mode ([here!](https://baaahs.github.io/sparklemotion)). Every component is modeled in software
so you can see how it will behave in the real world.


-->

## Very Old Documentation
* [Show API](show_api.md) (outdated)
* [API docs](https://baaahs.github.io/sparklemotion/doc/sparklemotion/) (outdated)

## Prerequisites

1. Install [Java](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)
- If using an arm64 mac, DMX device support for the native build of sparklemotion requires an x86 jdk which can be
downloaded [here](https://jdk.java.net/archive/).
- Make sure to pick a JDK < version 20 as [gradle does not currently
support
it](https://youtrack.jetbrains.com/issue/KT-57669/Add-Java-20-to-JvmTarget).
1. Open as a gradle project with [IntelliJ](https://www.jetbrains.com/idea/download/)

## Running from source

* Open as a gradle project with [IntelliJ](https://www.jetbrains.com/idea/download/)
* Open `src/jsMain/resources/index.html` using "Open in Browser -> Chrome" from IntelliJ context menu
### Simulator Mode

In simulator mode, most of Sparkle Motion runs within a web browser.

Run this in a shell window; a browser window will open with the simulator:

./gradlew --continuous jsRun

### Production Mode

In production mode, Sparkle Motion runs in a JVM process and talks to real hardware.

To start it, run:

./gradlew run

If you don't have a Brain running locally, do this too:

./gradlew runBrainJvm

When running in this mode you should be able to access the UI at http://localhost:8004

### Builds the production (minified) js package

To build the production minified js package run:

```
./gradlew jsBrowserWebpack
```

## CI & Deployment

Continuous build here: https://circleci.com/gh/baaahs/sparklemotion

Passing builds are automatically deployed here: https://baaahs.github.io/sparklemotion
Loading