bool PlayerCreateState::_traitToggle(unsigned int num) { auto player = Game::getInstance()->player(); if (player->trait(num)) { player->setTrait(num, 0); return true; } else { unsigned int selectedTraits = 0; for (unsigned int i = 0; i != 16; ++i) if (player->trait(i)) selectedTraits++; if (selectedTraits < 2) { player->setTrait(num, 1); return true; } } return false; }
void Quadmesh::valueChanged(Value &value) { if (getTrait("renderAsWireframe").refersToSameSourceAs(value)) { if (getTrait("renderAsWireframe").getValue()) { lastSolidColorName = getTrait("solidColor").getValue(); setTrait("solidColor", lastWiredColorName); shaderController->loadFromGlsl(BinaryData::QuadmeshWireframeShader_glsl); shaderController->compileShader(); } else { lastWiredColorName = getTrait("solidColor").getValue(); setTrait("solidColor", lastSolidColorName); shaderController->loadFromGlsl(BinaryData::QuadmeshSurfaceShader_glsl); shaderController->compileShader(); } } else if (getTrait("resolution").refersToSameSourceAs(value)) { if (vertexPositionsFunction) { Nu = Nv = int(getTrait("resolution").getValue()); evaluateVertexData(); } } }