// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= //
//
//  Project:   Talina Gaming System (TgS) (∂)
//  File:      TgS Collision - External.cpp
//  Author:    Andrew Aye (EMail: andrew.aye@gmail.com, Web: http://www.andrewaye.com) 
//  Version:   3.11
//
// ------------------------------------------------------------------------------------------------------------------------------ //
//
//  Copyright: © 2002-2008, Andrew Aye.  All Rights Reserved.
//
//  This software is free for non-commercial use. Redistribution and use in source and binary forms, with or without modification,
//  are permitted provided that the following conditions are met: 
//    Redistributions of source code must retain this copyright notice, this list of conditions and the following disclaimers. 
//    Redistributions in binary form must reproduce this copyright notice, this list of conditions and the following
//      disclaimers in the documentation and other materials provided with the distribution. 
//
//  Neither the names of the copyright owner nor the names of its contributors may be used to endorse or promote products derived
//  from this software without specific prior written permission. 
//
//  The intellectual property rights of the algorithms used reside with Andrew Aye.  You may not use this software, in whole or
//  in part, in support of any commercial product without the express written consent of the author.
//
//  There is no warranty or other guarantee of fitness of this software for any purpose. It is provided solely "as is".
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= //




namespace TGS { // START TGS ///////////////////////////////////////////////////////////////////////////////////////////////////////
namespace COL { // START COL ///////////////////////////////////////////////////////////////////////////////////////////////////////

// ============================================================================================================================== //

TgVOID Unit_Test_Collision_External()
{
    TTgCOL_PACKET<TgFLOAT32,4>      tgPacket;

    TgF4PARTICLE                    tgPC;
    TgF4LINE                        tgLN;
    TgF4RAY                         tgRY;
    TgF4SEGMENT                     tgSG;
    TgF4CIRCLE                      tgCI;
    TgF4DISK                        tgDK;
    TgF4ELLIPSE                     tgEL;
    TgF4PLANE                       tgPN;
    TgF4PTRI                        tgPT;
    TgF4ETRI                        tgET;
    TgF4CTRI                        tgCT;
    TgF4STRI                        tgST;
    TgF4RECTANGLE                   tgRT;
    TgF4PARALLELOGRAM               tgPE;
    TgF4SPHERE                      tgSP;
    TgF4BOX                         tgBX;
    TgF4BOXAA                       tgBA;
    TgF4CAPSULE                     tgCP;
    TgF4CYLINDER                    tgCY;
    TgF4MESH_AABB                   tgMH;


    TgF4CLIP_LIST                   tgCL;


    F_Clip( &tgCL, tgPN );
    F_Clip( &tgCL, tgET );
    F_Clip( &tgCL, tgST );
    F_Clip( &tgCL, tgRT );
    F_Clip( &tgCL, tgPE );
    F_Clip( &tgCL, tgSP );
    F_Clip( &tgCL, tgBX );
    F_Clip( &tgCL, tgCP );
    F_Clip( &tgCL, tgCY );


    tgPacket.Test( tgPC );
    tgPacket.Test( tgLN );
    tgPacket.Test( tgRY );
    tgPacket.Test( tgSG );
    tgPacket.Test( tgCI );
    tgPacket.Test( tgDK );
    tgPacket.Test( tgEL );
    tgPacket.Test( tgPT );
    tgPacket.Test( tgET );
    tgPacket.Test( tgCT );
    tgPacket.Test( tgST );
    tgPacket.Test( tgRT );
    tgPacket.Test( tgPE );
    tgPacket.Test( tgSP );
    tgPacket.Test( tgBX );
    tgPacket.Test( tgBA );
    tgPacket.Test( tgCP );
    tgPacket.Test( tgCY );
    tgPacket.Test( tgMH );
    tgPacket.Test( tgPN );

};




// == Instantiations ============================================================================================================ //

#if defined(TgS_INSTANTIATE_TEMPLATES)

    template struct TTgCONTACT<TgFLOAT32,2>;
    template struct TTgCONTACT<TgFLOAT32,4>;

    template struct TTgCONTACT_PACKET<TgFLOAT32,2>;
    template struct TTgCONTACT_PACKET<TgFLOAT32,4>;

    template struct TTgAXIS_PROJECT<TgFLOAT32,4>;
    template struct TTgAXIS_INFO<TgFLOAT32,4>;
    template struct TTgAXIS_RESULT<TgFLOAT32,4>;
    template struct TTgCLIP_LIST<TgFLOAT32,4>;

#endif // TgS_INSTANTIATE_TEMPLATES

// ============================================================================================================================== //

}; // END COL //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}; // END TGS //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////