# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

ps_misc.h

Go to the documentation of this file.
00001 
00007 /* Copyright, 2001 Nevrax Ltd.
00008  *
00009  * This file is part of NEVRAX NEL.
00010  * NEVRAX NEL is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2, or (at your option)
00013  * any later version.
00014 
00015  * NEVRAX NEL is distributed in the hope that it will be useful, but
00016  * WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00018  * General Public License for more details.
00019 
00020  * You should have received a copy of the GNU General Public License
00021  * along with NEVRAX NEL; see the file COPYING. If not, write to the
00022  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
00023  * MA 02111-1307, USA.
00024  */
00025 
00026 
00027 
00028 #ifndef PS_MISC_H
00029 #define PS_MISC_H
00030 
00031 #include "nel/misc/types_nl.h"
00032 #include "nel/misc/vector.h"
00033 
00034 namespace NL3D   {
00035 
00041 inline uint ScaleFloatGE(float f, float deltaT, float clampValue, uint numStep)
00042 {       
00043         if (f >= clampValue) return 0;
00044         float endValue = f + numStep * deltaT;
00045         if (endValue < clampValue) return numStep;
00046         const uint numAfterInitialDate =        (uint) ((endValue - clampValue) / deltaT);
00047         return numStep - numAfterInitialDate;           
00048 }
00049 
00050 
00061 inline NLMISC::CVector *FillBufUsingSubdiv(const        NLMISC::CVector &value, 
00062                                                                           float                                 clampValue, 
00063                                                                           float                                 &startValue, 
00064                                                                           float                                 deltaT,
00065                                                                           uint                                  &maxNumStep, 
00066                                                                           NLMISC::CVector               *destPos, 
00067                                                                           uint32                                stride                                                                    
00068                                                                           )
00069 {
00070         uint numToFill = ScaleFloatGE(startValue, deltaT, clampValue, maxNumStep);
00071         nlassert(numToFill <= maxNumStep);
00072         startValue += numToFill * deltaT;
00073         maxNumStep  -= numToFill;
00074         while (numToFill--)
00075         {
00076                 *destPos = value;
00077                 destPos = (NLMISC::CVector *) ( (uint8 *) destPos + stride);            
00078         }       
00079         
00080         return destPos;
00081 }
00082 
00083 } // NL3D
00084 
00085 #endif