void Tile::HandleUpdate(StringHash eventType, VariantMap &eventData) { double elapsedTime = masterControl_->world.scene->GetElapsedTime(); double offsetY = 0.0; //Alien Chaos - Disorder = time*1.0525f //Talpa - Unusual Chair = time*1.444 wave_ = 6.0*pow(masterControl_->Sine(Abs(float(centerDistExp_ - elapsedTime) * 0.666f)), 4.0f); uint nHexAffectors = tileMaster_->hexAffectors_.Size(); if (nHexAffectors) { for (uint i = 0; i < nHexAffectors; i++) { WeakPtr<Node> hexAffector = tileMaster_->hexAffectors_.Keys()[i]; double hexAffectorMass = tileMaster_->hexAffectors_[hexAffector]->GetMass(); if (hexAffector->IsEnabled()) { double offsetYPart = sqrt(hexAffectorMass) - (0.1* Vector3::Distance(referencePosition_, hexAffector->GetPosition())); if (offsetYPart > 0.0) { offsetYPart = pow(offsetYPart, 4); offsetY += offsetYPart; } } } offsetY = sqrt(offsetY); } offsetY += 0.023f * wave_; Vector3 lastPos = rootNode_->GetPosition(); Vector3 newPos = Vector3(lastPos.x_, referencePosition_.y_ - offsetY, lastPos.z_); rootNode_->SetPosition(newPos); double color = Clamp((0.25f * offsetY) +0.3f, 0.0f, 1.0f); model_->GetMaterial(0)->SetShaderParameter("MatDiffColor", Color(color, color, color, color + (0.023 * wave_))); }