11/*
2- ** Command & Conquer Generals(tm)
2+ ** Command & Conquer Generals Zero Hour (tm)
33** Copyright 2025 Electronic Arts Inc.
44**
55** This program is free software: you can redistribute it and/or modify
@@ -460,7 +460,7 @@ void BoxRenderObjClass::render_box(RenderInfoClass & rinfo,const Vector3 & cente
460460 */
461461 DWORD color = DX8Wrapper::Convert_Color (Color,Opacity);
462462
463- int buffer_type = BUFFER_TYPE_DYNAMIC_SORTING ;
463+ int buffer_type = BUFFER_TYPE_DYNAMIC_DX8 ;
464464
465465 DynamicVBAccessClass vbaccess (buffer_type,dynamic_fvf_type,NUM_BOX_VERTS);
466466 {
@@ -805,6 +805,9 @@ void AABoxRenderObjClass::update_cached_box(void)
805805bool AABoxRenderObjClass::Cast_Ray (RayCollisionTestClass & raytest)
806806{
807807 if ((Get_Collision_Type () & raytest.CollisionType ) == 0 ) return false ;
808+ if (Is_Animation_Hidden ()) return false ;
809+ if (raytest.Result ->StartBad ) return false ;
810+
808811 if (CollisionMath::Collide (raytest.Ray ,CachedBox,raytest.Result )) {
809812 raytest.CollidedRenderObj = this ;
810813 return true ;
@@ -828,6 +831,8 @@ bool AABoxRenderObjClass::Cast_Ray(RayCollisionTestClass & raytest)
828831bool AABoxRenderObjClass::Cast_AABox (AABoxCollisionTestClass & boxtest)
829832{
830833 if ((Get_Collision_Type () & boxtest.CollisionType ) == 0 ) return false ;
834+ if (boxtest.Result ->StartBad ) return false ;
835+
831836 if (CollisionMath::Collide (boxtest.Box ,boxtest.Move ,CachedBox,boxtest.Result )) {
832837 boxtest.CollidedRenderObj = this ;
833838 return true ;
@@ -851,6 +856,8 @@ bool AABoxRenderObjClass::Cast_AABox(AABoxCollisionTestClass & boxtest)
851856bool AABoxRenderObjClass::Cast_OBBox (OBBoxCollisionTestClass & boxtest)
852857{
853858 if ((Get_Collision_Type () & boxtest.CollisionType ) == 0 ) return false ;
859+ if (boxtest.Result ->StartBad ) return false ;
860+
854861 if (CollisionMath::Collide (boxtest.Box ,boxtest.Move ,CachedBox,Vector3 (0 ,0 ,0 ),boxtest.Result )) {
855862 boxtest.CollidedRenderObj = this ;
856863 return true ;
@@ -1181,6 +1188,9 @@ void OBBoxRenderObjClass::update_cached_box(void)
11811188bool OBBoxRenderObjClass::Cast_Ray (RayCollisionTestClass & raytest)
11821189{
11831190 if ((Get_Collision_Type () & raytest.CollisionType ) == 0 ) return false ;
1191+ if (Is_Animation_Hidden ()) return false ;
1192+ if (raytest.Result ->StartBad ) return false ;
1193+
11841194 if (CollisionMath::Collide (raytest.Ray ,CachedBox,raytest.Result )) {
11851195 raytest.CollidedRenderObj = this ;
11861196 return true ;
@@ -1204,6 +1214,8 @@ bool OBBoxRenderObjClass::Cast_Ray(RayCollisionTestClass & raytest)
12041214bool OBBoxRenderObjClass::Cast_AABox (AABoxCollisionTestClass & boxtest)
12051215{
12061216 if ((Get_Collision_Type () & boxtest.CollisionType ) == 0 ) return false ;
1217+ if (boxtest.Result ->StartBad ) return false ;
1218+
12071219 if (CollisionMath::Collide (boxtest.Box ,boxtest.Move ,CachedBox,Vector3 (0 ,0 ,0 ),boxtest.Result )) {
12081220 boxtest.CollidedRenderObj = this ;
12091221 return true ;
@@ -1227,6 +1239,8 @@ bool OBBoxRenderObjClass::Cast_AABox(AABoxCollisionTestClass & boxtest)
12271239bool OBBoxRenderObjClass::Cast_OBBox (OBBoxCollisionTestClass & boxtest)
12281240{
12291241 if ((Get_Collision_Type () & boxtest.CollisionType ) == 0 ) return false ;
1242+ if (boxtest.Result ->StartBad ) return false ;
1243+
12301244 if (CollisionMath::Collide (boxtest.Box ,boxtest.Move ,CachedBox,Vector3 (0 ,0 ,0 ),boxtest.Result )) {
12311245 boxtest.CollidedRenderObj = this ;
12321246 return true ;
0 commit comments