diff options
author | derex_tri <none@none> | 2008-10-06 07:39:04 -0500 |
---|---|---|
committer | derex_tri <none@none> | 2008-10-06 07:39:04 -0500 |
commit | e36e114abef95e118e65de372e499f979e4783cb (patch) | |
tree | 641c768afcac81cb2e9863a44bab73f5f105dcbd /src/game/ObjectPosSelector.cpp | |
parent | 1fc5c0d6d7200048009f99c2cb4d3fd12858ed2f (diff) |
[svn] * Removed ObjectPosSelector and DetectPosCollision. See http://www.trinitycore.org/forum/project.php?issueid=3
* Need win32 build fix ;)
--HG--
branch : trunk
Diffstat (limited to 'src/game/ObjectPosSelector.cpp')
-rw-r--r-- | src/game/ObjectPosSelector.cpp | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/src/game/ObjectPosSelector.cpp b/src/game/ObjectPosSelector.cpp deleted file mode 100644 index 5936152f9be..00000000000 --- a/src/game/ObjectPosSelector.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ObjectPosSelector.h" - -ObjectPosSelector::ObjectPosSelector(float x,float y,float size,float dist) -: m_center_x(x),m_center_y(y),m_size(size),m_dist(dist) -{ - m_anglestep = acos(m_dist/(m_dist+2*m_size)); - - m_nextUsedPos[USED_POS_PLUS] = m_UsedPosLists[USED_POS_PLUS].end(); - m_nextUsedPos[USED_POS_MINUS] = m_UsedPosLists[USED_POS_MINUS].end(); - - m_smallStepAngle[USED_POS_PLUS] = 0; - m_smallStepAngle[USED_POS_MINUS] = 0; - - m_smallStepOk[USED_POS_PLUS] = false; - m_smallStepOk[USED_POS_MINUS] = false; - - m_smallStepNextUsedPos[USED_POS_PLUS] = NULL; - m_smallStepNextUsedPos[USED_POS_MINUS] = NULL; -} - -ObjectPosSelector::UsedPosList::value_type const* ObjectPosSelector::nextUsedPos(UsedPosType uptype) -{ - UsedPosList::const_iterator itr = m_nextUsedPos[uptype]; - if(itr!=m_UsedPosLists[uptype].end()) - ++itr; - - if(itr==m_UsedPosLists[uptype].end()) - { - if(!m_UsedPosLists[~uptype].empty()) - return &*m_UsedPosLists[~uptype].rbegin(); - else - return NULL; - } - else - return &*itr; -} - -void ObjectPosSelector::AddUsedPos(float size,float angle,float dist) -{ - if(angle>=0) - m_UsedPosLists[USED_POS_PLUS].insert(UsedPosList::value_type(angle,UsedPos(1.0,size,dist))); - else - m_UsedPosLists[USED_POS_MINUS].insert(UsedPosList::value_type(-angle,UsedPos(-1.0,size,dist))); -} - -void ObjectPosSelector::InitializeAngle() -{ - m_nextUsedPos[USED_POS_PLUS] = m_UsedPosLists[USED_POS_PLUS].begin(); - m_nextUsedPos[USED_POS_MINUS] = m_UsedPosLists[USED_POS_MINUS].begin(); - - m_smallStepAngle[USED_POS_PLUS] = 0; - m_smallStepAngle[USED_POS_MINUS] = 0; - - m_smallStepOk[USED_POS_PLUS] = true; - m_smallStepOk[USED_POS_MINUS] = true; -} - -bool ObjectPosSelector::FirstAngle(float& angle) -{ - if(m_UsedPosLists[USED_POS_PLUS].empty() && !m_UsedPosLists[USED_POS_MINUS].empty() ) - return NextAngleFor(*m_UsedPosLists[USED_POS_MINUS].begin(),1.0,USED_POS_PLUS,angle); - else if(m_UsedPosLists[USED_POS_MINUS].empty() && !m_UsedPosLists[USED_POS_PLUS].empty() ) - return NextAngleFor(*m_UsedPosLists[USED_POS_PLUS].begin(),-1.0,USED_POS_MINUS,angle); - - return false; -} - -bool ObjectPosSelector::NextAngle(float& angle) -{ - while(m_nextUsedPos[USED_POS_PLUS]!=m_UsedPosLists[USED_POS_PLUS].end() || - m_nextUsedPos[USED_POS_MINUS]!=m_UsedPosLists[USED_POS_MINUS].end() || - m_smallStepOk[USED_POS_PLUS] || m_smallStepOk[USED_POS_MINUS] ) - { - // calculate next possible angle - if(NextPosibleAngle(angle)) - return true; - } - - return false; -} - -bool ObjectPosSelector::NextUsedAngle(float& angle) -{ - while(m_nextUsedPos[USED_POS_PLUS]!=m_UsedPosLists[USED_POS_PLUS].end() || - m_nextUsedPos[USED_POS_MINUS]!=m_UsedPosLists[USED_POS_MINUS].end() ) - { - // calculate next possible angle - if(!NextPosibleAngle(angle)) - return true; - } - - return false; -} - -bool ObjectPosSelector::NextPosibleAngle( float& angle ) -{ - // ++ direction less updated - if( m_nextUsedPos[USED_POS_PLUS]!=m_UsedPosLists[USED_POS_PLUS].end() && - (m_nextUsedPos[USED_POS_MINUS]==m_UsedPosLists[USED_POS_MINUS].end() || m_nextUsedPos[USED_POS_PLUS]->first <= m_nextUsedPos[USED_POS_MINUS]->first) ) - { - bool ok; - if(m_smallStepOk[USED_POS_PLUS]) - ok = NextSmallStepAngle(1.0,USED_POS_PLUS,angle); - else - ok = NextAngleFor(*m_nextUsedPos[USED_POS_PLUS],1.0,USED_POS_PLUS,angle); - - if(!ok) - ++m_nextUsedPos[USED_POS_PLUS]; // increase. only at fail (original or checked) - return ok; - } - // -- direction less updated - else if( m_nextUsedPos[USED_POS_MINUS]!=m_UsedPosLists[USED_POS_MINUS].end()) - { - bool ok; - if(m_smallStepOk[USED_POS_MINUS]) - ok = NextSmallStepAngle(-1.0,USED_POS_MINUS,angle); - else - ok = NextAngleFor(*m_nextUsedPos[USED_POS_MINUS],-1.0,USED_POS_MINUS,angle); - - if(!ok) - ++m_nextUsedPos[USED_POS_MINUS]; - return ok; - } - else // both list empty - { - if( m_smallStepOk[USED_POS_PLUS] && (!m_smallStepOk[USED_POS_MINUS] || m_smallStepAngle[USED_POS_PLUS] <= m_smallStepAngle[USED_POS_MINUS]) ) - { - return NextSmallStepAngle(1.0,USED_POS_PLUS,angle); - } - // -- direction less updated - else if( m_smallStepOk[USED_POS_MINUS] ) - { - return NextSmallStepAngle(-1.0,USED_POS_MINUS,angle); - } - } - - // no angles - return false; -} |