Esempio n. 1
0
void UNavCollision::Setup(UBodySetup* BodySetup)
{
	// Create meshes from cooked data if not already done
	if (bHasConvexGeometry || BodySetup == NULL)
	{
		return;
	}

	BodySetupGuid = BodySetup->BodySetupGuid;

	// Make sure all are cleared before we start
	ClearCollision(); 
		
	if (ShouldUseConvexCollision())
	{
		// Find or create cooked navcollision data
		FByteBulkData* FormatData = GetCookedData(NAVCOLLISION_FORMAT);
		if (!bForceGeometryRebuild && FormatData)
		{
			// if it's not being already processed
			if (FormatData->IsLocked() == false)
			{
				// Create physics objects
				FNavCollisionDataReader CookedDataReader(*FormatData, TriMeshCollision, ConvexCollision, ConvexShapeIndices);

				bHasConvexGeometry = true;
			}
		}
		else
		{
			GatherCollision();
		}
	}
}
Esempio n. 2
0
void UNavCollision::GatherCollision()
{
	UStaticMesh* StaticMeshOuter = Cast<UStaticMesh>(GetOuter());
	// get data from owner
	if (StaticMeshOuter && StaticMeshOuter->BodySetup)
	{
		ClearCollision();
		NavigationHelper::GatherCollision(StaticMeshOuter->BodySetup, this);
		bHasConvexGeometry = true;
	}
}
Esempio n. 3
0
void KLandMine::Activate(int nCurLoop)
{
    KDoodad::Activate(nCurLoop);

    if (m_nActiveFrame != 0 && nCurLoop >= m_nActiveFrame)
    {
        m_bAttackState      = true;
        m_nActiveFrame      = 0;
        m_dwAttakerID       = m_dwThrowerID;
        m_dwThrowerID       = ERROR_ID;

        m_pScene->ApplyObstacle(this, true);
        
        ClearCollision();
        CheckCollisionObj();
    }
}
Esempio n. 4
0
void UNavCollision::InvalidatePhysicsData()
{
	ClearCollision();
	CookedFormatData.FlushData();
}