xxxxxxxxxx
269
const gCubes = [];
function setup() {
initCanvas();
}
async function asyncCubeControl() {
// Gaze at mouse
// for( const cube of gCubes ){
// cube.turnToXY( Math.floor(mouseX * 300 / windowWidth + 200) , 144, 115 );
// }
// Gaze at the othre Cube
// gCubes[0]?.setFrameRate(15);
// gCubes[1]?.setFrameRate(15);
// gCubes[0]?.turnToCube( gCubes[1], 115 );
// Chase
// gCubes[0]?.moveToCube( gCubes[1], 80, P5tCube.moveTypeId.withoutBack );
}
function draw() {
asyncCubeControl();
ellipse( mouseX, mouseY, 20, 20 );
}
function windowResized() {
initCanvas();
}
function mouseClicked() {
connectNewP5tCube().then( cube => {
gCubes.push( cube );
cube.turnLightOn( color( 255, 255, 255, 255 ) );
} );
// let fs = fullscreen();
// fullscreen(!fs);
// initCanvas();
}
function keyPressed() {
console.log( keyCode );
switch( keyCode ){
case 49: /* 1 */
const cube = gCubes.pop();
if( cube ){ cube.disconnect(); }
break;
case 32: /* Space key */
connectCube();
break;
}
let type = '';
for( const cube of gCubes ){
if( cube ){
switch( keyCode ){
case 50: /* 2 */
cube.playSE( P5tCube.seId.selected );
break;
case 51:
cube.playSingleNote( freqToMidi(440) );
break;
case 52:
cube.playMelody( [
{ note: 0x50, duration: 0x1E },
{ note: 0x52, duration: 0x1E },
{ note: 0x54, duration: 0x1E }
] );
break;
case 53:
cube.turnLightOn( color( 0, 255, 255 ), 1000 );
break;
case 54:
cube.turnLightOff();
break;
case 55:
cube.turnLightOnRGB( 255, 128, 128 );
break;
case 56:
cube.turnLightOnRGBA( 0, 255, 255, 30, 1500 );
break;
case 57:
cube.move(50, 50, 255);
break;
case 48:
cube.stop();
break;
case 189:
cube.rotate(-70, 120);
break;
case 187:
cube.moveTo( { x: 351, y: 344 }, 80/* maxSpeed */, undefined, P5tCube.easeTypeId.decel );
// cube.moveTo(
// {
// x: 351,
// y: 344,
// angle: 0,
// angleType: P5tCube.angleTypeId.sameAsCurrent
// },
// 80,
// P5tCube.moveTypeId.withoutBack,
// P5tCube.easeTypeId.decel);
break;
case 220:
cube.moveToMulti(
[
{ x: 429, y: 391 },
{ x: 271, y: 391 },
// { x: 350, y: 272 },
], 100, P5tCube.moveTypeId.rotate1st,
);
break;
case 192:
// cube.turnTo( 0, 60 );
// cube.turnTo( 0, 30, P5tCube.rotateTypeId.clockwise );
// cube.turnTo( 0, 115, P5tCube.rotateTypeId.counterClockwise );
cube.turnTo( Math.PI / 2, 115 );
// angleMode(DEGREES);
// cube.turnTo( 180, 115 );
break;
case 65: // 'a'
console.log(cube.buttonPressed);
break;
case 83:
console.log(cube.batteryLevel);
break;
case 68:
console.log(cube.flat);
break;
case 70:
console.log(cube.posture);
break;
case 71:
console.log(cube.x, cube.y, cube.angle, cube.sensorX, cube.sensorY);
break;
case 72:
console.log(cube.standardId, cube.angle);
break;
case 74:
break;
case 65:
break;
case 81: // 'q'
type = 'buttonpress';
cube.addEventListener(type, ()=>{console.log(type);});
break;
case 87:
type = 'buttonrelease';
cube.addEventListener(type, ()=>{console.log(type)});
break;
case 69:
type = 'batterylevelchange';
cube.addEventListener(type, (level)=>{console.log(type, level)});
break;
case 82:
type = 'sensorflat';
cube.addEventListener(type, (isFlat)=>{console.log(type, isFlat)});
break;
case 84:
type = 'sensorcollision';
cube.addEventListener(type, ()=>{console.log(type)});
break;
case 89:
type = 'sensordoubletap';
cube.addEventListener(type, ()=>{console.log(type)});
break;
case 85:
type = 'sensorposturechange';
cube.addEventListener(type, (posture)=>{console.log(type, posture)});
break;
case 73:
type = 'positionid';
cube.addEventListener(type, (idInfo)=>{console.log(type, idInfo)});
break;
case 79:
type = 'standardid';
cube.addEventListener(type, (idInfo)=>{console.log(type, idInfo)});
break;
case 80:
break;
case 219:
break;
case 90: // z
cube.turnToXY( 351, 344, 8 );
break;
case 80:
break;
case 67:
break;
case 86:
break;
case 66:
break;
case 78:
break;
case 77:
break;
case 188:
break;
case 32: /* Space key */
connectCube();
break;
}
}
}
}
const connectCube = () => {
connectNewP5tCube().then( cube => {
gCubes.push( cube );
cube.turnLightOn( color( 255, 255, 255, 255 ) );
// cube.lightChar.turnLightOnRGBA( 255, 255, 255, 255 );
} );
}
const initCanvas = () => {
resizeCanvas( windowWidth, windowHeight );
const COLOR_SMOKEWHITE = 245;
background( COLOR_SMOKEWHITE );
}
// const cubeButtonPressed = () => {
// console.log('O: cubeButtonPressed!');
// }
// const cubeButtonReleased = () => {
// console.log('O: cubeButtonReleased!');
// }
// const cubeBatteryLevelChanged = ( level) => {
// console.log('O: cubeBatteryLevelChanged!', level);
// }
// const cubeFlatChanged = (isFlat) => {
// console.log('O: cubeFlatChanged!', isFlat);
// }
// const cubeCollisionOccurred = () => {
// console.log('O: cubeCollisionOccurred!');
// }
// const cubeDoubleTapped = () => {
// console.log('O: cubeDoubleTapped!');
// }
// const cubePostureChanged = (posture) => {
// console.log('O: cubePostureChanged!', posture);
// }
// const cubePositionIdChanged = (info) => {
// console.log('O: cubePositionIdChanged!', info);
// }
// const cubeStandardIdChanged = (info) => {
// console.log('O: cubeStandardIdChanged!', info);
// }