////////////////////////////////////////////////////////////////// // offset_h - Provides an offset location based on a location // By Deva Bryson Winblood. 04/27/2005 ////////////////////////////////////////////////////////////////// /////////////////////////// // PROTOTYPES /////////////////////////// // FILE: offset_h FUNCTION: GetOffsetLocation() // This function will return a location a random direction from // the start location within specified range. location GetOffsetLocation(location lStart,float fRange=0.5); /////////////////////////// // FUNCTIONS /////////////////////////// vector fnGetNewVector(vector vStart,float fRange) { // PURPOSE: Return a vector vector vNew; int nR=d8(); if (nR==1) { // north vNew.x=vStart.x; vNew.y=vStart.y+fRange; } // north else if (nR==2) { // east vNew.y=vStart.y; vNew.x=vStart.x+fRange; } // east else if (nR==3) { // south vNew.x=vStart.x; vNew.y=vStart.y-fRange; } // south else if (nR==4) { // west vNew.y=vStart.y; vNew.x=vStart.x-fRange; } // west else if (nR==5) { // north east vNew.y=vStart.y+(fRange/2.0); vNew.x=vStart.x+(fRange/2.0); } // north east else if (nR==6) { // south east vNew.y=vStart.y-(fRange/2.0); vNew.x=vStart.x+(fRange/2.0); } // south east else if (nR==7) { // south west vNew.y=vStart.y-(fRange/2.0); vNew.x=vStart.x-(fRange/2.0); } // south west else { // north west vNew.y=vStart.y+(fRange/2.0); vNew.x=vStart.x-(fRange/2.0); } // north west return vNew; } // fnGetNewVector() location GetOffsetLocation(location lStart,float fRange=0.5) { vector vStart=GetPositionFromLocation(lStart); vector vNew; object oArea=GetAreaFromLocation(lStart); vNew=fnGetNewVector(vStart,fRange); while(vNew.x<0.0||vNew.y<0.0) { // get valid vector vNew=fnGetNewVector(vStart,fRange); } // get valid vector return Location(oArea,vNew,0.0); } // GetOffsetLocation() //void main(){}