mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-26 00:55:10 +02:00
77 lines
2.6 KiB
JavaScript
77 lines
2.6 KiB
JavaScript
//
|
|
// mouseHighlightEntities.js
|
|
//
|
|
// scripts/system/controllers/controllerModules/
|
|
//
|
|
// Created by Dante Ruiz 2018-4-11
|
|
// Copyright 2017 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
/* jslint bitwise: true */
|
|
|
|
/* global Script, print, Entities, Picks, HMD */
|
|
|
|
|
|
(function() {
|
|
var dispatcherUtils = Script.require("/~/system/libraries/controllerDispatcherUtils.js");
|
|
|
|
function MouseHighlightEntities() {
|
|
this.highlightedEntity = null;
|
|
|
|
this.parameters = dispatcherUtils.makeDispatcherModuleParameters(
|
|
5,
|
|
["mouse"],
|
|
[],
|
|
100);
|
|
|
|
this.isReady = function(controllerData) {
|
|
if (HMD.active) {
|
|
if (this.highlightedEntity) {
|
|
dispatcherUtils.unhighlightTargetEntity(this.highlightedEntity);
|
|
this.highlightedEntity = null;
|
|
}
|
|
} else {
|
|
var pickResult = controllerData.mouseRayPick;
|
|
if (pickResult.type === Picks.INTERSECTED_ENTITY) {
|
|
var targetEntityID = pickResult.objectID;
|
|
|
|
if (this.highlightedEntity !== targetEntityID) {
|
|
var targetProps = Entities.getEntityProperties(targetEntityID, [
|
|
"dynamic", "shapeType", "position",
|
|
"rotation", "dimensions", "density",
|
|
"userData", "locked", "type", "href"
|
|
]);
|
|
|
|
if (this.highlightedEntity) {
|
|
dispatcherUtils.unhighlightTargetEntity(this.highlightedEntity);
|
|
this.highlightedEntity = null;
|
|
}
|
|
|
|
if (dispatcherUtils.entityIsGrabbable(targetProps)) {
|
|
// highlight entity
|
|
dispatcherUtils.highlightTargetEntity(targetEntityID);
|
|
this.highlightedEntity = targetEntityID;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return dispatcherUtils.makeRunningValues(false, [], []);
|
|
};
|
|
|
|
this.run = function(controllerData) {
|
|
return this.isReady(controllerData);
|
|
};
|
|
}
|
|
|
|
var mouseHighlightEntities = new MouseHighlightEntities();
|
|
dispatcherUtils.enableDispatcherModule("MouseHighlightEntities", mouseHighlightEntities);
|
|
|
|
function cleanup() {
|
|
dispatcherUtils.disableDispatcherModule("MouseHighlightEntities");
|
|
}
|
|
Script.scriptEnding.connect(cleanup);
|
|
})();
|