MousePickObject Class
A MousePickObject lets you add or remove Object to and from an ObjectSet by clicking them with the mouse.
Overview
- A MousePickObject adds Object to the ObjectSet as you click them with the mouse, removing them again when you click them a second time.
- Typically a MousePickObject will share an ObjectSet with one or more MousePickObjects, in order to select which Object are influenced by the MousePickObjects.
- A MousePickObject will provide its own ObjectSet by default.
- Hold down SHIFT while clicking to multi-select.
Example
Clicking Objects to add them to a highlighted ObjectSet
In this example, we view four Objects with a Camera, which we manipulate with a CameraControl.
We also use a MousePickObject to add and remove
the Objects to an ObjectSet, to which we're applying
a HighlightMousePickObject.
Click on the Objects to select and highlight them - hold down SHIFT to multi-select.
// Create a Viewer
var viewer = new BIMSURFER.Viewer({ element: "myDiv" });
// Create a Camera
var camera = new BIMSURFER.Camera(viewer, {
eye: [10, 10, -10]
});
// Create a CameraControl
var cameraControl = new BIMSURFER.CameraControl(viewer, {
camera: camera
});
// Create a Geometry
var geometry = new BIMSURFER.TeapotGeometry(viewer);
// Create some Objects
// Share the Geometry among them
var object1 = new BIMSURFER.Object(viewer, {
id: "object1",
type: "IfcRoof",
geometries: [ geometry ],
matrix: BIMSURFER.math.translationMat4v([-3, 0, -3])
});
var object2 = new BIMSURFER.Object(viewer, {
id: "object2",
type: "IfcDistributionFlowElement",
geometries: [ geometry ],
matrix: BIMSURFER.math.translationMat4v([3, 0, -3])
});
var object3 = new BIMSURFER.Object(viewer, {
id: "object3",
type: "IfcDistributionFlowElement",
geometries: [ geometry ],
matrix: BIMSURFER.math.translationMat4v([-3, 0, 3])
});
var object4 = new BIMSURFER.Object(viewer, {
id: "object4",
type: "IfcRoof",
geometries: [ geometry ],
matrix: BIMSURFER.math.translationMat4v([3, 0, 3])
});
// Create an ObjectSet
var objectSet = new BIMSURFER.ObjectSet(viewer);
// Apply a highlight MousePickObject to the ObjectSet
var highlightMousePickObject = new BIMSURFER.HighlightMousePickObject(viewer, {
objectSet: objectSet
});
// Create a MousePickObject
var mousePickObject = new BIMSURFER.MousePickObject(viewer, {
// We want the 3D World-space coordinates of
// each location we pick
rayPick: true
});
// Handle when Object is picked
mousePickObject.on("pick", function(e) {
alert("Picked: " + JSON.stringify(e));
});
// Handle when nothing is picked
mousePickObject.on("nopick", function(e) {
alert("Mothing picked");
});
Constructor
MousePickObject
-
[viewer]
-
[cfg]
-
[rayPick=false]
-
[active=true]
Parameters:
-
[viewer]
Viewer optionalParent Viewer.
-
[cfg]
optionalConfigs
-
[id]
String optionalOptional ID, unique among all components in the parent viewer, generated automatically when omitted.
-
[meta]
String:Object optionalOptional map of user-defined metadata to attach to this MousePickObject.
-
-
[rayPick=false]
Boolean optionalIndicates whether this MousePickObject will find the 3D ray intersection whenever it picks a Object.
-
[active=true]
Boolean optionalIndicates whether or not this MousePickObject is active.
Item Index
Methods
destroy
()
error
-
message
Logs an error for this component to the JavaScript console.
The console message will have this format: [ERROR] <component id>: <message>
Parameters:
-
message
StringThe message to log
fire
-
event
-
value
-
[forget=false]
Fires an event on this component.
Notifies existing subscribers to the event, retains the event to give to any subsequent notifications on that location as they are made.
Parameters:
-
event
StringThe event type name
-
value
ObjectThe event
-
[forget=false]
Boolean optionalWhen true, does not retain for subsequent subscribers
log
-
message
Logs a console debugging message for this component.
The console message will have this format: [LOG] <component id>: <message>
Parameters:
-
message
StringThe message to log
off
-
handle
Parameters:
-
handle
StringSubscription handle
on
-
event
-
callback
-
[scope=this]
Subscribes to an event on this component.
The callback is be called with this component as scope.
Parameters:
-
event
StringPublication event
-
callback
FunctionCalled when fresh data is available at the event
-
[scope=this]
Object optionalScope for the callback
Returns:
Handle to the subscription, which may be used to unsubscribe with {@link #off}.
once
-
event
-
callback
-
[scope=this]
Subscribes to the next occurrence of the given event, then un-subscribes as soon as the event is handled.
Parameters:
-
event
StringData event to listen to
-
callback
Function(data)Called when fresh data is available at the event
-
[scope=this]
Object optionalScope for the callback
warn
-
message
Logs a warning for this component to the JavaScript console.
The console message will have this format: [WARN] <component id>: <message>
Parameters:
-
message
StringThe message to log
Properties
active
Boolean
Flag which indicates whether this MousePickObject is active or not.
Fires a active event on change.
className
String
final
JavaScript class name for this Component.
destroyed
Boolean
True as soon as this Component has been destroyed
Items in this map
Unknown
metadata
Object
Metadata on this component.
rayPick
Boolean
Indicates whether this MousePickObject will find the 3D ray intersection whenever it picks an Object.
When true, this MousePickObject returns the 3D World-space intersection in each MousePickObject/picked:event event.
Fires a rayPick event on change.
Events
active
Fired whenever this MousePickObject's active property changes.
Event Payload:
-
value
ObjectThe property's new value
destroyed
Fired when this Component is destroyed.
rayPick
Fired whenever this MousePickObject's rayPick property changes.
Event Payload:
-
value
ObjectThe property's new value