void MaterialEditor::onMouseMoveEvent(const GuiEvent &event) { lastMousePoint = event.mousePoint; for(S32 n = 0; n < nodeList.size(); ++n ) { Node* node = &nodeList[n]; node->mouseOver = false; if ( event.mousePoint.x >= node->x && event.mousePoint.x <= node->x + node->width && event.mousePoint.y >= node->y && event.mousePoint.y <= node->y + node->height ) { node->mouseOver = true; for ( S32 i = 0; i < node->inputs.size(); ++i ) { InputPoint* input = &node->inputs[i]; input->mouseOver = false; Point2F dist = input->lastPosition - Point2F(lastMousePoint.x, lastMousePoint.y); if ( dist.len() <= 5 ) input->mouseOver = true; } for ( S32 i = 0; i < node->outputs.size(); ++i ) { OutputPoint* output = &node->outputs[i]; output->mouseOver = false; Point2F dist = output->lastPosition - Point2F(lastMousePoint.x, lastMousePoint.y); if ( dist.len() <= 5 ) output->mouseOver = true; } } } }
void calculateHandAxisRotation(const MatrixF& handRotation, const F32& maxHandAxisRadius, Point2F& outRotation) { const VectorF& controllerUp = handRotation.getUpVector(); outRotation.x = controllerUp.x; outRotation.y = controllerUp.y; // Limit the axis angle to that given to us if(outRotation.len() > maxHandAxisRadius) { outRotation.normalize(maxHandAxisRadius); } // Renormalize to the range of 0..1 if(maxHandAxisRadius != 0.0f) { outRotation /= maxHandAxisRadius; } }