void NzSkinPositionNormal(const NzSkinningData& skinningInfos, unsigned int startVertex, unsigned int vertexCount) { const NzSkeletalMeshVertex* inputVertex = &skinningInfos.inputVertex[startVertex]; NzMeshVertex* outputVertex = &skinningInfos.outputVertex[startVertex]; unsigned int endVertex = startVertex + vertexCount - 1; for (unsigned int i = startVertex; i <= endVertex; ++i) { NzVector3f finalPosition(NzVector3f::Zero()); NzVector3f finalNormal(NzVector3f::Zero()); for (int j = 0; j < inputVertex->weightCount; ++j) { NzMatrix4f mat(skinningInfos.joints[inputVertex->jointIndexes[j]].GetSkinningMatrix()); mat *= inputVertex->weights[j]; finalPosition += mat.Transform(inputVertex->position); finalNormal += mat.Transform(inputVertex->normal, 0.f); } finalNormal.Normalize(); outputVertex->normal = finalNormal; outputVertex->position = finalPosition; outputVertex->uv = inputVertex->uv; inputVertex++; outputVertex++; } }
QPointF ShaderNodeUI::getInputPortPosition(unsigned int portIndex) const { float portOffset = (float)portIndex * kNodePortSpacing; QPointF finalPosition(kNodePortRadius, kNodeFirstPortHeight + portOffset); finalPosition += pos(); return finalPosition; }
QPointF ShaderNodeUI::getOutputPortPosition(unsigned int portIndex) const { float outputPortStartHeight = ((float)m_pActualNode->getInputPorts().size() * kNodePortSpacing) + kNodeFirstPortHeight; float portOffset = (float)portIndex * kNodePortSpacing; QPointF finalPosition(m_nodeSize.width(), outputPortStartHeight + portOffset); finalPosition += pos(); return finalPosition; }
void NotificationWindow::dismissMessage() { //animate the window 100 pixels to the right Rectangle<int> finalPosition(getBounds().translated(100, 0)); Desktop::getInstance().getAnimator().animateComponent(this, finalPosition, 0.0, 500, false, 1.0, 1.0); //stop the timer, because the message has been dismmissed stopTimer(); isDismissed = true; }
int manhattan() // sum of Manhattan distances between blocks and goal { int result = 0; for (int i = 0; i < N * N; i++) { if (position[i] == 0) continue; int finalPos = finalPosition(position[i]); int currentPos = i; result = result + abs(posX(finalPos) - posX(currentPos)); result = result + abs(posY(finalPos) - posY(currentPos)); } return result; }
void EntityMoverBase::setPosition(const WFMath::Point<3>& position) { WFMath::Point<3> finalPosition(position); if (position.isValid()) { WFMath::Vector<3> adjustment; EmberEntity* entity = nullptr; if (mSnapping.get() && mSnapping->testSnapTo(position, getOrientation(), adjustment, &entity)) { finalPosition = finalPosition.shift(adjustment); } //We need to offset into local space. Ogre::Vector3 posOffset = Ogre::Vector3::ZERO; if (mNode->getParent()) { posOffset = mNode->getParent()->_getDerivedPosition(); } mNode->setPosition(Convert::toOgre(finalPosition) - posOffset); newEntityPosition(mNode->getPosition()); Moved.emit(); } }