public void FetchCollisions() { CubeModel.UpdateBounds(transform, (svector3)Position, (svector3)Scale); Colliding = ActiveCollisions.Count > 0; DeltaPosition = ((svector3)transform.position + (svector3)Position) - LastPosition; LastPosition = ((svector3)transform.position + (svector3)Position); for (int i = 0; i < NucleonManager.Colliders.Length; i++) { NucleonBoxCollider BoxCollider = (NucleonBoxCollider)NucleonManager.Colliders[i]; if (BoxCollider != this) { bool Colliding = intersector.CC_I(CubeModel, BoxCollider.CubeModel); CollisionCheck(Colliding, BoxCollider); if (Colliding && DebugCollisionVertices) { List <svector3> CollidingPointsFetchList = new List <svector3>(); foreach (svector3 Vertice in CubeModel.Vertices) { if (intersector.PC_I(Vertice, BoxCollider.CubeModel)) { CollidingPointsFetchList.Add(Vertice); } } CollidingPoints = CollidingPointsFetchList; } if (!Colliding && DebugCollisionVertices) { CollidingPoints.Clear(); } } } }
void Awake() { DeltaPosition = svector3.Zero(); LastPosition = svector3.Zero(); try { Body = GetComponent <NucleonRigidbody>(); } catch { } CubeModel = new CubeModel(); ActiveCollisions = new List <NucleonCollider>(); CollidingPoints = new List <svector3>(); UpdateInterval = (sfloat)1f / (sfloat)UpdatesPerSecond; }