mirror of
https://github.com/overte-org/overte.git
synced 2025-04-28 00:55:55 +02:00
100 lines
3.5 KiB
JavaScript
100 lines
3.5 KiB
JavaScript
//
|
|
// createNewMusicPlayerOnClick.js
|
|
//
|
|
// Created by Brad Hefta-Gaub on 3/3/16.
|
|
// Copyright 2016 High Fidelity, Inc.
|
|
//
|
|
// Entity Script that you can attach to any entity to have it spawn new "music players"
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
|
|
(function(){
|
|
|
|
var musicPlayerScript = Script.resolvePath("./musicPlayer.js");
|
|
var imageShader = Script.resolvePath("./imageShader.fs");
|
|
var defaultImage = Script.resolvePath("./defaultImage.jpg");
|
|
|
|
function getPositionToCreateEntity() {
|
|
var distance = 0.5;
|
|
var direction = Quat.getFront(Camera.orientation);
|
|
var offset = Vec3.multiply(distance, direction);
|
|
var placementPosition = Vec3.sum(Camera.position, offset);
|
|
|
|
var cameraPosition = Camera.position;
|
|
|
|
var HALF_TREE_SCALE = 16384;
|
|
|
|
var cameraOutOfBounds = Math.abs(cameraPosition.x) > HALF_TREE_SCALE || Math.abs(cameraPosition.y) > HALF_TREE_SCALE || Math.abs(cameraPosition.z) > HALF_TREE_SCALE;
|
|
var placementOutOfBounds = Math.abs(placementPosition.x) > HALF_TREE_SCALE || Math.abs(placementPosition.y) > HALF_TREE_SCALE || Math.abs(placementPosition.z) > HALF_TREE_SCALE;
|
|
|
|
if (cameraOutOfBounds && placementOutOfBounds) {
|
|
return null;
|
|
}
|
|
|
|
placementPosition.x = Math.min(HALF_TREE_SCALE, Math.max(-HALF_TREE_SCALE, placementPosition.x));
|
|
placementPosition.y = Math.min(HALF_TREE_SCALE, Math.max(-HALF_TREE_SCALE, placementPosition.y));
|
|
placementPosition.z = Math.min(HALF_TREE_SCALE, Math.max(-HALF_TREE_SCALE, placementPosition.z));
|
|
|
|
return placementPosition;
|
|
}
|
|
|
|
function createNewIPOD() {
|
|
var iPodPosition = { x: 0, y: .5, z: 0};
|
|
var iPodDimensions = { x: 0.15, y: 0.3, z: 0.03 };
|
|
var overlayDimensions = { x: 0.13, y: 0.13, z: 0.001 };
|
|
var boxOverlayDimensions = { x: 0.13, y: 0.13, z: 0.0001 };
|
|
|
|
var iPodID = Entities.addEntity({
|
|
type: "Box",
|
|
name: "music player",
|
|
position: iPodPosition,
|
|
dimensions: iPodDimensions,
|
|
color: { red: 150, green: 150, blue: 150},
|
|
script: musicPlayerScript,
|
|
dynamic: true
|
|
});
|
|
print(iPodID);
|
|
|
|
var textID = Entities.addEntity({
|
|
type: "Text",
|
|
name: "now playing",
|
|
position: { x: 0, y: (0.5+0.07), z: 0.0222},
|
|
dimensions: overlayDimensions,
|
|
color: { red: 150, green: 150, blue: 150},
|
|
parentID: iPodID,
|
|
lineHeight: 0.01,
|
|
text: "Pause"
|
|
});
|
|
|
|
|
|
var newAlbumArt = JSON.stringify(
|
|
{
|
|
"ProceduralEntity": {
|
|
"version":2,
|
|
"shaderUrl":imageShader,
|
|
"uniforms":{"iSpeed":0,"iShell":1},
|
|
"channels":[defaultImage]
|
|
}
|
|
});
|
|
|
|
|
|
var albumArtID = Entities.addEntity({
|
|
type: "Box",
|
|
name: "album art",
|
|
position: { x: 0, y: (0.5-0.07), z: 0.01506},
|
|
dimensions: boxOverlayDimensions,
|
|
color: { red: 255, green: 255, blue: 255},
|
|
userData: newAlbumArt,
|
|
parentID: iPodID
|
|
});
|
|
Entities.editEntity(iPodID, { position: getPositionToCreateEntity() });
|
|
}
|
|
|
|
|
|
this.clickDownOnEntity = function(myID, mouseEvent) {
|
|
createNewIPOD();
|
|
};
|
|
})
|
|
|
|
|