Collision check for building part.
1482 {
1484 return false;
1485
1488 {
1490 float absoluteOfset = 0.05;
1495
1497 if (check_data.m_AdditionalExcludes.Count() > 0)
1498 {
1499 excludedObjects.InsertAll(check_data.m_AdditionalExcludes);
1500 }
1501
1506
1507 #ifdef DIAG_DEVELOPER
1509 #endif
1510 if (
g_Game.IsBoxCollidingGeometry(
Vector(center[0], center[1] + absoluteOfset, center[2]),
m_EntityParent.GetOrientation(), edgeLength, check_data.m_PrimaryGeometry, check_data.m_SecondaryGeometry, excludedObjects, collidedObjects))
1511 {
1512 bool validCollision = false;
1513 #ifdef DIAG_DEVELOPER
1515 #endif
1516
1517 for (int i = 0; i < collidedObjects.Count(); ++i)
1518 {
1520 if (entity && !entity.IsIgnoredByConstruction())
1521 {
1522 validCollision = true;
1523 #ifdef DIAG_DEVELOPER
1524 if (collisionDebugEnabled)
1525 {
1526 validEntityCollisions.Insert(entity.GetType());
1527 }
1528 #else
1529 break;
1530 #endif
1531 }
1532 }
1533
1534 #ifdef DIAG_DEVELOPER
1535 if (collisionDebugEnabled)
1536 {
1537 if (validCollision)
1538 {
1539 ConstructionDebug.SetCollisionPrintoutData(check_data.m_PartName, validEntityCollisions);
1540 DrawDebugCollisionBox(minMax,
ARGB(150, 0, 0, 255));
1541 }
1542 else
1543 {
1544 ConstructionDebug.ResetCollisionPrintoutData();
1545 DrawDebugCollisionBox(minMax,
ARGB(150, 255, 255, 255));
1546 }
1547 }
1548 else if (m_CollisionBox)
1549 {
1550 DestroyDebugCollisionBox();
1551 }
1552 #endif
1553
1554 return validCollision;
1555 }
1556 #ifdef DIAG_DEVELOPER
1557 else
1558 {
1559 if (collisionDebugEnabled)
1560 {
1561 ConstructionDebug.ResetCollisionPrintoutData();
1562 DrawDebugCollisionBox(minMax,
ARGB(150, 255, 255, 255));
1563 }
1564 else if (m_CollisionBox)
1565 {
1566 DestroyDebugCollisionBox();
1567 }
1568 }
1569 #endif
1570 }
1571 return false;
1572 }
ConstructionPart GetConstructionPart()
vector GetBoxCenter(vector min_max[2])
vector GetCollisionBoxSize(vector min_max[2])
void GetCollisionBoxData(string part_name, out vector min_max[2])
static bool GetDisableIsCollidingCheck()
array< string > GetCollisionData()
strings of min/max selections (should be single points in memory LOD)
Instanced construction part data classes for dynamic data, statics now stored on EntityType level in ...
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
int ARGB(int a, int r, int g, int b)