X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FObjects.cpp;h=a01fc1193598d379c0cc390c5fc7d7d53372ffec;hb=bbf8873b80baf3cb468ac12b3f62b0938320fef1;hp=e5d26898ad07f01bad09545d65f1d0d5aaeb2ba6;hpb=36cc3af3e5074215817ddee16defde754e2ad67f;p=lugaru.git diff --git a/Source/Objects.cpp b/Source/Objects.cpp index e5d2689..a01fc11 100644 --- a/Source/Objects.cpp +++ b/Source/Objects.cpp @@ -1,3 +1,24 @@ +/* +Copyright (C) 2003, 2010 - Wolfire Games + +This file is part of Lugaru. + +Lugaru 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 "Objects.h" extern XYZ viewer; extern float viewdistance; @@ -10,14 +31,12 @@ extern float multiplier; extern float gravity; extern FRUSTUM frustum; extern Terrain terrain; -extern float terraindetail; extern bool foliage; extern int detail; extern float blurness; extern float windvar; extern float playerdist; extern bool skyboxtexture; -extern Sprites sprites; //Functions @@ -47,8 +66,8 @@ void Objects::SphereCheckPossible(XYZ *p1,float radius) static int whichpatchx; static int whichpatchz; - whichpatchx=p1->x/(terrain.size/subdivision*terrain.scale*terraindetail); - whichpatchz=p1->z/(terrain.size/subdivision*terrain.scale*terraindetail); + whichpatchx=p1->x/(terrain.size/subdivision*terrain.scale); + whichpatchz=p1->z/(terrain.size/subdivision*terrain.scale); if(whichpatchx>=0&&whichpatchz>=0&&whichpatchx0&&terrain.patchobjectnum[whichpatchx][whichpatchz]<500) @@ -97,26 +116,26 @@ void Objects::Draw() if(type[i]==bushtype){ messedwith[i]-=multiplier; if(rotxvel[i]||rotx[i]){ - if(rotx[i]>0)rotxvel[i]-=multiplier*8*abs(rotx[i]); - if(rotx[i]<0)rotxvel[i]+=multiplier*8*abs(rotx[i]); + if(rotx[i]>0)rotxvel[i]-=multiplier*8*fabs(rotx[i]); + if(rotx[i]<0)rotxvel[i]+=multiplier*8*fabs(rotx[i]); if(rotx[i]>0)rotxvel[i]-=multiplier*4; if(rotx[i]<0)rotxvel[i]+=multiplier*4; if(rotxvel[i]>0)rotxvel[i]-=multiplier*4; if(rotxvel[i]<0)rotxvel[i]+=multiplier*4; - if(abs(rotx[i])0)rotyvel[i]-=multiplier*8*abs(roty[i]); - if(roty[i]<0)rotyvel[i]+=multiplier*8*abs(roty[i]); + if(roty[i]>0)rotyvel[i]-=multiplier*8*fabs(roty[i]); + if(roty[i]<0)rotyvel[i]+=multiplier*8*fabs(roty[i]); if(roty[i]>0)rotyvel[i]-=multiplier*4; if(roty[i]<0)rotyvel[i]+=multiplier*4; if(rotyvel[i]>0)rotyvel[i]-=multiplier*4; if(rotyvel[i]<0)rotyvel[i]+=multiplier*4; - if(abs(roty[i])0)rotxvel[i]-=multiplier*8*abs(rotx[i]); - if(rotx[i]<0)rotxvel[i]+=multiplier*8*abs(rotx[i]); + if(rotx[i]>0)rotxvel[i]-=multiplier*8*fabs(rotx[i]); + if(rotx[i]<0)rotxvel[i]+=multiplier*8*fabs(rotx[i]); if(rotx[i]>0)rotxvel[i]-=multiplier*4; if(rotx[i]<0)rotxvel[i]+=multiplier*4; if(rotxvel[i]>0)rotxvel[i]-=multiplier*4; if(rotxvel[i]<0)rotxvel[i]+=multiplier*4; - if(abs(rotx[i])0)rotyvel[i]-=multiplier*8*abs(roty[i]); - if(roty[i]<0)rotyvel[i]+=multiplier*8*abs(roty[i]); + if(roty[i]>0)rotyvel[i]-=multiplier*8*fabs(roty[i]); + if(roty[i]<0)rotyvel[i]+=multiplier*8*fabs(roty[i]); if(roty[i]>0)rotyvel[i]-=multiplier*4; if(roty[i]<0)rotyvel[i]+=multiplier*4; if(rotyvel[i]>0)rotyvel[i]-=multiplier*4; if(rotyvel[i]<0)rotyvel[i]+=multiplier*4; - if(abs(roty[i])0)rotxvel[i]-=multiplier*8*abs(rotx[i]); - if(rotx[i]<0)rotxvel[i]+=multiplier*8*abs(rotx[i]); + if(rotx[i]>0)rotxvel[i]-=multiplier*8*fabs(rotx[i]); + if(rotx[i]<0)rotxvel[i]+=multiplier*8*fabs(rotx[i]); if(rotx[i]>0)rotxvel[i]-=multiplier*4; if(rotx[i]<0)rotxvel[i]+=multiplier*4; if(rotxvel[i]>0)rotxvel[i]-=multiplier*4; if(rotxvel[i]<0)rotxvel[i]+=multiplier*4; - if(abs(rotx[i])0)rotyvel[i]-=multiplier*8*abs(roty[i]); - if(roty[i]<0)rotyvel[i]+=multiplier*8*abs(roty[i]); + if(roty[i]>0)rotyvel[i]-=multiplier*8*fabs(roty[i]); + if(roty[i]<0)rotyvel[i]+=multiplier*8*fabs(roty[i]); if(roty[i]>0)rotyvel[i]-=multiplier*4; if(roty[i]<0)rotyvel[i]+=multiplier*4; if(rotyvel[i]>0)rotyvel[i]-=multiplier*4; if(rotyvel[i]<0)rotyvel[i]+=multiplier*4; - if(abs(roty[i])0)rotxvel[i]-=multiplier*8*abs(rotx[i]); - if(rotx[i]<0)rotxvel[i]+=multiplier*8*abs(rotx[i]); + if(rotx[i]>0)rotxvel[i]-=multiplier*8*fabs(rotx[i]); + if(rotx[i]<0)rotxvel[i]+=multiplier*8*fabs(rotx[i]); if(rotx[i]>0)rotxvel[i]-=multiplier*4; if(rotx[i]<0)rotxvel[i]+=multiplier*4; if(rotxvel[i]>0)rotxvel[i]-=multiplier*4; if(rotxvel[i]<0)rotxvel[i]+=multiplier*4; - if(abs(rotx[i])0)rotyvel[i]-=multiplier*8*abs(roty[i]); - if(roty[i]<0)rotyvel[i]+=multiplier*8*abs(roty[i]); + if(roty[i]>0)rotyvel[i]-=multiplier*8*fabs(roty[i]); + if(roty[i]<0)rotyvel[i]+=multiplier*8*fabs(roty[i]); if(roty[i]>0)rotyvel[i]-=multiplier*4; if(roty[i]<0)rotyvel[i]+=multiplier*4; if(rotyvel[i]>0)rotyvel[i]-=multiplier*4; if(rotyvel[i]<0)rotyvel[i]+=multiplier*4; - if(abs(roty[i])0)rotxvel[i]-=multiplier*8*abs(rotx[i]); - if(rotx[i]<0)rotxvel[i]+=multiplier*8*abs(rotx[i]); + if(rotx[i]>0)rotxvel[i]-=multiplier*8*fabs(rotx[i]); + if(rotx[i]<0)rotxvel[i]+=multiplier*8*fabs(rotx[i]); if(rotx[i]>0)rotxvel[i]-=multiplier*4; if(rotx[i]<0)rotxvel[i]+=multiplier*4; if(rotxvel[i]>0)rotxvel[i]-=multiplier*4; if(rotxvel[i]<0)rotxvel[i]+=multiplier*4; - if(abs(rotx[i])0)rotyvel[i]-=multiplier*8*abs(roty[i]); - if(roty[i]<0)rotyvel[i]+=multiplier*8*abs(roty[i]); + if(roty[i]>0)rotyvel[i]-=multiplier*8*fabs(roty[i]); + if(roty[i]<0)rotyvel[i]+=multiplier*8*fabs(roty[i]); if(roty[i]>0)rotyvel[i]-=multiplier*4; if(roty[i]<0)rotyvel[i]+=multiplier*4; if(rotyvel[i]>0)rotyvel[i]-=multiplier*4; if(rotyvel[i]<0)rotyvel[i]+=multiplier*4; - if(abs(roty[i])5)friction[numobjects]=.5; + if(friction[numobjects]==1.5&&fabs(arotation2)>5)friction[numobjects]=.5; if(atype==platformtype){ model[numobjects].loaddecal((char *)":Data:Models:Platform.solid",0); @@ -643,7 +662,7 @@ void Objects::DoStuff() XYZ spawnpoint; for(int i=0;i=0&&patchz>=0&&patchx