Пример #1
0
        void Shake::updateProgress()
        {
            Animator::updateProgress();

            if (NodePtr targetNode = node.lock())
            {
                float x = length * progress * timeScale;

                uint64_t x1 = static_cast<uint32_t>(x);
                uint64_t x2 = x1 + 1;
                float t = x - static_cast<float>(x1);

                Vector2 previousPosition;
                Vector2 nextPosition;

                if (x1 != 0)
                {
                    previousPosition.x = (2.0f * (static_cast<float>(fnvHash(seedX | (x1 << 32))) / std::numeric_limits<uint64_t>::max()) - 1.0f) * distance.x;
                    previousPosition.y = (2.0f * (static_cast<float>(fnvHash(seedY | (x1 << 32))) / std::numeric_limits<uint64_t>::max()) - 1.0f) * distance.y;
                }

                if (x2 != static_cast<uint32_t>(timeScale))
                {
                    nextPosition.x = (2.0f * (static_cast<float>(fnvHash(seedX | (x2 << 32))) / std::numeric_limits<uint64_t>::max()) - 1.0f) * distance.x;
                    nextPosition.y = (2.0f * (static_cast<float>(fnvHash(seedY | (x2 << 32))) / std::numeric_limits<uint64_t>::max()) - 1.0f) * distance.y;
                }

                Vector2 noise(smoothstep(previousPosition.x, nextPosition.x, t),
                              smoothstep(previousPosition.y, nextPosition.y, t));

                targetNode->setPosition(startPosition + noise);
            }
        }
Пример #2
0
	FnvHash(Wrapper wrapper) : hash_value(fnvHash(wrapper.str)) { }
Пример #3
0
	Music::Music(const TChar* name, OSInternalSound* mus)
		: musicName(name), musicID(fnvHash(name))
	{
		hardwareStream = mus;
		static_cast<XAudio2Stream*>(hardwareStream)->SetMusicRef(this);
	}