virtual void visit(FunctionSpaceMesh& f) { if (alreadyResolved(f)) return; DofMapBuilder<dimension> mapBuilder(scenario.getMesh()); mapBuilder.addFiniteElement(scenario.getElement(f.getElement())); setDofMap(f, mapBuilder.getDofMap()); }
// --- QGAMES::WorldBuilder* PacmanGame::createWorldBuilder () { return (new WorldsBuilder (std::string (__WORLDSFILE__), mapBuilder ())); }
void cBuilder::parseInput() { sObjectPart *part = 0; sPlayerInput *input = mInput->inputGet(0); bool update = false; // Get the current selected 'part' of the object if(mCurrentObject) part = mCurrentObject->partGet(); // Left if(input->mLeft) { if( part && mDragMode ) { switch( part->mDragDirection ) { case eDirectionLeft: part->mLength++; break; case eDirectionRight: part->mLength--; break; default: break; } } else mCursorX -= 4; update = true; } // Right if(input->mRight) { if( part && mDragMode ) { switch( part->mDragDirection ) { case eDirectionLeft: part->mLength--; break; case eDirectionRight: part->mLength++; break; default: break; } } else mCursorX += 4; update = true; } // Down if(input->mDown) { if( part && mDragMode ) { switch( part->mDragDirection ) { case eDirectionDown: part->mLength++; break; case eDirectionUp: part->mLength--; break; default: break; } } else mCursorY += 8; update = true; } // Up if(input->mUp) { if( part && mDragMode ) { switch( part->mDragDirection ) { case eDirectionDown: part->mLength--; break; case eDirectionUp: part->mLength++; break; default: break; } } else mCursorY -= 8; update = true; } // if(part && ((int) part->mLength) < 1) part->mLength = 1; // Button if(input->mButton) { eventProcess( true ); if( part && part->mDrags == true ) { if( mDragMode == false ) mDragMode = true; else { mDragMode = false; if(mLinkMode) { if(mOriginalObject) { mOriginalObject->mLinkedSet( findItemIndex( mCurrentObject ) ); mOriginalObject->mLinked2Set( mCurrentRoom->mNumber ); } mSearchObject = eObjectNone; mLinkMode = false; mCurrentObject = 0; } else if(mCurrentObject) { mCurrentObject->partPlace(); } } } else { mDragMode = false; if(mLinkMode) { if(mOriginalObject) { mOriginalObject->mLinkedSet( findItemIndex( mCurrentObject ) ); mOriginalObject->mLinked2Set( mCurrentRoom->mNumber ); } mSearchObject = eObjectNone; mLinkMode = false; mCurrentObject = 0; } else if(mCurrentObject) { mCurrentObject->partPlace(); } } update = true; } // ESC: Quit builder if( mInput->restoreGet() ) { mTest = false; mQuit = true; return; } // F1: Save Castle To Disk if( mInput->runStopGet() ) castleSaveToDisk(); if( mInput->f3Get() ) { mapBuilder(); update = true; } // F4: Quit builder in test castle mode if( mInput->f4Get() ) { mTest = true; mQuit = true; } // Check cursor position to see if its outside screen range int downWidth = 1; int downHeight = 1; if(mCurrentObject) { downHeight= mCurrentObject->partGet()->mCursorHeight; downWidth = mCurrentObject->partGet()->mCursorWidth; } downHeight *= 8; downWidth *= 4; // Cursor minimum and maximums if( (mCursorX + downWidth) > 0xB0) mCursorX = 0xB0 - downWidth; if( mCursorX < 0x10 ) mCursorX = 0x10; if( mCursorY > 0xF0 ) mCursorY = 0; if( (mCursorY + downHeight) > 0xC8 ) mCursorY = 0xC8 - downHeight; // Does the cursor actually need updating if(update) cursorObjectUpdate(); }