index.js vom polygon hinzugefügt
This commit is contained in:
48
ReallifeGamemode.Client/polygons/index.js
Normal file
48
ReallifeGamemode.Client/polygons/index.js
Normal file
@@ -0,0 +1,48 @@
|
||||
const { generateUniquePolygonId, getAngleSumBetweenPositionAndVertices, isPointInArea2D } = require('polygons/helpers');
|
||||
require('polygons/render');
|
||||
require('polygons/events');
|
||||
|
||||
mp.polygons = {
|
||||
pool: [],
|
||||
add: (vertices, height, options = { visible: false, lineColorRGBA: [255,255,255,255], dimension: 0 }) => {
|
||||
|
||||
const polygon = {
|
||||
id: generateUniquePolygonId(),
|
||||
vertices,
|
||||
height,
|
||||
...options,
|
||||
colliding: false
|
||||
}
|
||||
|
||||
mp.polygons.pool.push(polygon);
|
||||
|
||||
return polygon;
|
||||
},
|
||||
remove: (polygon) => {
|
||||
const index = mp.polygons.pool.findIndex(p => p.id === polygon.id);
|
||||
|
||||
if (index !== -1)
|
||||
mp.polygons.pool.splice(index, 1);
|
||||
},
|
||||
exists: (polygon) => {
|
||||
return mp.polygons.pool.some(p => p.id === polygon.id)
|
||||
},
|
||||
isPositionWithinPolygon: (position, polygon, dimension) => {
|
||||
if (dimension && polygon.dimension !== dimension && polygon.dimension !== -1)
|
||||
return false;
|
||||
|
||||
const { vertices } = polygon;
|
||||
|
||||
const polygonPoints2D = [];
|
||||
|
||||
for (let i in vertices) {
|
||||
if (position.z >= vertices[i].z && position.z <= (vertices[i].z + polygon.height) || getAngleSumBetweenPositionAndVertices(position, vertices) >= 5.8)
|
||||
polygonPoints2D.push([vertices[i].x, vertices[i].y]);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
return isPointInArea2D([position.x, position.y], polygonPoints2D);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user