• 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Plugin] ColAndreas - Collision Detection and Raytracing
#1
[Image: in7FgoQ.gif]

____________________________________________________________________________________________________



Developers:



Initial Developers:

[uL]Slice

[uL]Chris420

[uL]Pottus

Latest Developers:

uint32 (new developer ?) (Where'd ya go?) - This guy fixed some major shit, including the initial SA-MP object thing.

Crayder

Codectile

____________________________________________________________________________________________________



Download today!

____________________________________________________________________________________________________



Installation Instructions:

  1. Navigate to the github repository's release section (link above) and download the latest version.

  2. If you don't need the source just download the wizard, the plugin, and include.

  3. Run the binary builder application. This will generate a binary in which ColAndreas load data from.

  4. Create a folder in your scriptfiles called "colandreas" and place the binary file there.

  5. Add ColAndreas to your server.cfg.

____________________________________________________________________________________________________



Current Functions:

Code:
CA_ContactTest(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)

CA_CreateDynamicObject_DC(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, vw = -1, interior = -1, playerid = -1, Float:streamdist = 300.0, Float:drawdist = 300.0)

CA_CreateDynamicObject_SC(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, vw = -1, interior = -1, playerid = -1, Float:streamdist = 300.0, Float:drawdist = 300.0)

CA_CreateDynamicObjectEx_DC(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:drawdistance = 0.0, Float:streamdistance = 200.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players)

CA_CreateDynamicObjectEx_SC(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:drawdistance = 0.0, Float:streamdistance = 200.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players)

CA_CreateObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, bool:add = false)

CA_CreateObject_DC(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:drawdistance = 300.0)

CA_CreateObject_SC(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:drawdistance = 300.0)

CA_DestroyAllObjects_DC()

CA_DestroyObject(index)

CA_DestroyObject_DC(index)

CA_EulerToQuat(Float:rx, Float:ry, Float:rz, &Float:x, &Float:y, &Float:z, &Float:w)

CA_FindZ_For2DCoord(Float:x, Float:y, &Float:z)

CA_GetModelBoundingBox(modelid, &Float:minx, &Float:miny, &Float:minz, &Float:maxx, &Float:maxy, &Float:maxz)

CA_GetModelBoundingSphere(modelid, &Float:offx, &Float:offy, &Float:offz, &Float:radius)

CA_GetObjectExtraID(index, type)

CA_Init()

CA_IsPlayerBlocked(playerid, Float:dist=1.5, Float:height=0.5)

CA_IsPlayerInWater(playerid, &Float:depth, &Float:playerdepth)

CA_IsPlayerNearWater(playerid, Float:dist=3.0, Float:height=3.0)

CA_IsPlayerOnSurface(playerid, Float:tolerance=1.5)

CA_QuatToEuler(Float:x, Float:y, Float:z, Float:w, &Float:rx, &Float:ry, &Float:rz)

CA_RayCastLine(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z)

CA_RayCastLineAngle(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z, &Float:rx, &Float:ry, &Float:rz)

CA_RayCastLineAngleEx(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z, &Float:rx, &Float:ry, &Float:rz, &Float:ocx, &Float:ocy, &Float:ocz, &Float:orx, &Float:ory, &Float:orz)

CA_RayCastLineExtraID(type, Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z)

CA_RayCastLineEx(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z, &Float:rx, &Float:ry, &Float:rz, &Float:rw, &Float:cx, &Float:cy, &Float:cz)

CA_RayCastLineID(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z)

CA_RayCastLineNormal(Float:startx, Float:starty, Float:startz, Float:endx, Float:endy, Float:endz, &Float:x, &Float:y, &Float:z, &Float:nx, &Float:ny, &Float:nz)

CA_RayCastMultiLine(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, Float:retx[], Float:rety[], Float:retz[], Float:retdist[], ModelIDs[], size = sizeof(retx))

CA_RayCastReflectionVector(Float:startx, Float:starty, Float:startz, Float:endx, Float:endy, Float:endz, &Float:x, &Float:y, &Float:z, &Float:nx, &Float:ny, &Float:nz)

CA_RemoveBarriers()

CA_RemoveBreakableBuildings()

CA_RemoveBuilding(modelid, Float:x, Float:y, Float:z, Float:radius)

CA_SetObjectExtraID(index, type, data)

CA_SetObjectPos(index, Float:x, Float:y, Float:z)

CA_SetObjectPos_DC(index, Float:x, Float:y, Float:z)

CA_SetObjectRot(index, Float:rx, Float:ry, Float:rz)

CA_SetObjectRot_DC(index, Float:rx, Float:ry, Float:rz)

Float:CA_GetRoomHeight(Float:x, Float:y, Float:z)

____________________________________________________________________________________________________



Loading ColAndreas:



We recommend using a filterscript to help organize your objects. There is a specific order of operations required to load successfully.



Code:
public OnFilterScriptInit()

{

// Add any remove buildings (This only works once)

CA_RemoveBuilding();



// Initialize the collision world (This creates San Andreas, the entire map, excluding removed buildings)

CA_Init();



// Create objects

CA_CreateDynamicObject_SC();



return 1;

}

____________________________________________________________________________________________________



Capability Demo:

[Video: http://www.youtube.com/watch?v=aSabQWqQBkI]

____________________________________________________________________________________________________



Known Issues:
  • There is no virtual world / interior support (there may never be).

[Image: uc?export=view&id=1C5dMc9kb09iAUuASWBEPCK21lsedAXmB]

  Reply


Messages In This Thread
ColAndreas - Collision Detection and Raytracing - by Crayder - 2019-04-14, 02:38 PM

Forum Jump: