Ejemplo n.º 1
0
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;
}
Ejemplo n.º 5
0
 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;
 }
Ejemplo n.º 6
0
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();
    }
}