content/hifi-content/dante/scripts/objectParenting.js
2022-02-13 22:49:05 +01:00

283 lines
8.1 KiB
JavaScript

(function() {
var FIVE_KEY = 53;
var SIX_KEY = 54;
var SEVEN_KEY = 55;
var EIGHT_KEY = 56;
var SHAPE_ENTITY_KEY = 83;
var WEB_ENTITY_KEY = 86;
var TEXT_ENTITY_KEY = 84;
var LIGHT_ENTITY_KEY = 71;
var LINE_ENTITY_KEY = 79;
var PARTICLE_ENTITY_KEY = 90;
var POLY_VOX_ENTITY_KEY = 89;
var POLY_LINE_ENTITY_KEY = 88;
var UPDATE_FACING_KEY = 70;
var instructionsOverlay = null;
var overlay1 = null;
var overlay2 = null;
var entity1 = null;
var entity2 = null;
var HEAD_JOINT_INDEX = MyAvatar.getJointIndex("Head");
var DEFAULT_DIMENSIONS = {x: 0.3, y: 0.3, z: 0.3};
var instructionText =
"Parent Entity Test \n" +
"Press the specified key to get entity type \n \n" +
"s -> Shape Entity \n" +
"t -> Text Entity \n" +
"v -> Web Entity \n" +
"z -> Particle Entity \n";
instructionsOverlay = Overlays.addOverlay("text", {
text: instructionText,
x: 10,
y: 10,
width: 400,
height: 400
});
var faceCamera = false;
function cleanup() {
Overlays.deleteOverlay(instructionsOverlay);
Overlays.deleteOverlay(overlay1);
Overlays.deleteOverlay(overlay2);
Entities.deleteEntity(entity1);
Entities.deleteEntity(entity2);
}
function clear() {
Overlays.deleteOverlay(overlay1);
Overlays.deleteOverlay(overlay2);
Entities.deleteEntity(entity2);
Entities.deleteEntity(entity1);
overlay1 = null;
overlay2 = null;
entity1 = null;
entity2 = null;
}
function parentEntityAvatar() {
}
function parentEntityOverlay() {
}
function parentAvatarEntity() {
}
function parentAvatarEntityOverlay() {
}
function shapeEntity() {
clear();
var shapeProperties = {
name: "shapeTestEntity",
type: "Box",
parentID: MyAvatar.sessionUUID,
localPosition: Vec3.ZERO,
parentJointIndex: HEAD_JOINT_INDEX,
dimensions: DEFAULT_DIMENSIONS
};
entity1 = Entities.addEntity(shapeProperties, true);
}
function textEntity() {
clear();
var textProperties = {
name: "textTestEntity",
type: "Text",
text: "This is just a test",
parentID: MyAvatar.sessionUUID,
localPosition: Vec3.ZERO,
parentJointIndex: HEAD_JOINT_INDEX,
dimensions: DEFAULT_DIMENSIONS,
faceCamera: faceCamera
};
entity1 = Entities.addEntity(textProperties, true);
}
function materialEntity() {
}
function modelEntity() {
}
function webEntity() {
clear();
print("creating webEntity");
var webProperties = {
type: "Web",
name: "WebTestEntity",
sourceUrl: "https://highfidelity.com/",
parentID: MyAvatar.sessionUUID,
localPosition: Vec3.ZERO,
parentJointIndex: HEAD_JOINT_INDEX,
dimensions: DEFAULT_DIMENSIONS
};
entity1 = Entities.addEntity(webProperties, true);
}
function lineEntity() {
clear();
print("creating lineEntity");
var lineProperties = {
type: "Line",
name: "LineTestEntity",
localPosition: Vec3.ZERO,
parentID: MyAvatar.sessionUUID,
parentJointIndex: HEAD_JOINT_INDEX,
dimensions: { x: 2, y: 2, z: 1 },
linePoints: [
{ x: -1, y: 1, z: 0 },
{ x: 0, y: -1, z: 0 },
{ x: 1, y: 1, z: 0 }
],
lineWidth: 13,
color: { red: 255, green: 255, blue: 255 }
};
entity1 = Entities.addEntity(lineProperties, true);
}
function lightEntity() {
clear();
print("creating lightEntity");
var lightProperties = {
type: "Light",
name: "LightTestEntity",
localPosition: Vec3.ZERO,
parentID: MyAvatar.sessionUUID,
parentJointIndex: HEAD_JOINT_INDEX,
dimensions: { x: 4, y: 4, z: 4 },
intensity: 100
};
entity1 = Entities.addEntity(lightProperties, true);
}
function particleEffectEntity() {
clear();
print("creating ParticleEntity");
var particleEffectProperties = {
type: "ParticleEffect",
name: "ParticleEffectTestEntity",
localPosition: Vec3.ZERO,
parentID: MyAvatar.sessionUUID,
parentJointIndex: HEAD_JOINT_INDEX,
dimensions: DEFAULT_DIMENSIONS,
lifespan: 5,
emitRate: 10,
emitSpeed: 0.02,
speedSpread: 0.01,
emitAcceleration: { x: 0, y: 0.02, z: 0 },
polarFinish: Math.PI,
textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png",
particleRadius: 0.1,
color: { red: 0, green: 255, blue: 0 },
alphaFinish: 0
};
entity1 = Entities.addEntity(particleEffectProperties, true);
}
function polyLineEntity() {
clear();
print("creating PolyLineEntity");
var polyLineProperties = {
type: "PolyLine",
name: "PolyLineTestEntity",
localPosition: Vec3.ZERO,
parentID: MyAvatar.sessionUUID,
parentJointIndex: HEAD_JOINT_INDEX,
dimensions: DEFAULT_DIMENSIONS,
linePoints: [
{ x: -1, y: 0.5, z: 0 },
{ x: 0, y: 0, z: 0 },
{ x: 1, y: 0.5, z: 0 }
],
normals: [
{ x: 0, y: 0, z: 1 },
{ x: 0, y: 0, z: 1 },
{ x: 0, y: 0, z: 1 }
],
strokeWidths: [ 0.1, 0.1, 0.1 ],
color: { red: 255, green: 0, blue: 0 },
textures: "http://hifi-production.s3.amazonaws.com/DomainContent/Toybox/flowArts/trails.png",
isUVModeStretch: true
};
entity1 = Entities.addEntity(polyLineProperties, true);
}
function polyVoxEntity() {
clear();
print("creating polyVox Entity");
var texture = "http://public.highfidelity.com/cozza13/tuscany/Concrete2.jpg";
var polyVoxProperties = {
type: "PolyVox",
name: "PolyVoxTestEntity",
localPosition: Vec3.ZERO,
parentID: MyAvatar.sessionUUID,
parentJointIndex: HEAD_JOINT_INDEX,
dimensions: {x: 2, y: 2, z: 2},
xTextureURL: texture,
yTextureURL: texture,
zTextureURL: texture
};
entity1 = Entities.addEntity(polyVoxProperties, true);
Entities.setVoxelSphere(entity1, MyAvatar.position, 0.2, 255);
}
function keyPressEvent(event) {
if (!event.isAutoRepeat) {
var key = event.key;
print("Key Pressed: " + key);
switch (key) {
case SHAPE_ENTITY_KEY:
shapeEntity();
break;
case WEB_ENTITY_KEY:
webEntity();
break;
case TEXT_ENTITY_KEY:
textEntity();
break;
case UPDATE_FACING_KEY:
faceCamera = !faceCamera;
textEntity();
break;
case LIGHT_ENTITY_KEY:
lightEntity();
break;
case LINE_ENTITY_KEY:
lineEntity();
break;
case PARTICLE_ENTITY_KEY:
particleEffectEntity();
break;
default:
break;
}
}
}
Controller.keyPressEvent.connect(keyPressEvent);
Script.scriptEnding.connect(cleanup);
})();