-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathEntityCollisionReport.js
78 lines (65 loc) · 3.72 KB
/
EntityCollisionReport.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
*
* @licstart The following is the entire license notice for the
* JavaScript code in this page.
*
* Copyright (C) 2012 David "aniwey" L.
*
*
* The JavaScript code in this page is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* General Public License (GNU GPL) as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version. The code is distributed WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
*
* As additional permission under GNU GPL version 3 section 7, you
* may distribute non-source (e.g., minimized or compacted) forms of
* that code without the copy of the GNU GPL normally required by
* section 4, provided you include this license notice and a URL
* through which recipients can access the Corresponding Source.
*
* @licend The above is the entire license notice
* for the JavaScript code in this page.
*
*/
function EntityCollisionReport(){
// Collision boolean, false by default
this.collisionBoolean = false;
// Collision with borders boolean, false by default
this.collisionWithBordersBoolean = false;
// Collision points minimum and maximum positions
this.minimumXCollisionPoint = undefined;
this.minimumYCollisionPoint = undefined;
this.maximumXCollisionPoint = undefined;
this.maximumYCollisionPoint = undefined;
// List of entities we entered in collision with, empty by default
this.entitiesList = new Array();
}
// Merge another collision report
EntityCollisionReport.prototype.merge = function(entityCollisionReport){
// If the other collision report says there is a collision, then there is one
if(entityCollisionReport.collisionBoolean)
this.collisionBoolean = true;
// If the other collision report says there is a collision with borders, then there is one
if(entityCollisionReport.collisionWithBordersBoolean)
this.collisionWithBordersBoolean = true;
// Merge the other collision report collision points minimum and maximum positions
if(entityCollisionReport.minimumXCollisionPoint !== undefined && (!this.minimumXCollisionPoint || entityCollisionReport.minimumXCollisionPoint < this.minimumXCollisionPoint))
this.minimumXCollisionPoint = entityCollisionReport.minimumXCollisionPoint;
if(entityCollisionReport.minimumYCollisionPoint !== undefined && (!this.minimumYCollisionPoint || entityCollisionReport.minimumYCollisionPoint < this.minimumYCollisionPoint))
this.minimumYCollisionPoint = entityCollisionReport.minimumYCollisionPoint;
if(entityCollisionReport.maximumXCollisionPoint !== undefined && (!this.maximumXCollisionPoint || entityCollisionReport.maximumXCollisionPoint > this.maximumXCollisionPoint))
this.maximumXCollisionPoint = entityCollisionReport.maximumXCollisionPoint;
if(entityCollisionReport.maximumYCollisionPoint !== undefined && (!this.maximumYCollisionPoint || entityCollisionReport.maximumYCollisionPoint > this.maximumYCollisionPoint))
this.maximumYCollisionPoint = entityCollisionReport.maximumYCollisionPoint;
// Merge the other collision report entities list
var entitiesListWithDuplicates = this.entitiesList.concat(entityCollisionReport.entitiesList);
// Remove duplicates from the resulting entities list
entitiesListWithoutDuplicates = new Array();
$.each(entitiesListWithDuplicates, function(i, element){
if($.inArray(element, entitiesListWithoutDuplicates) === -1) entitiesListWithoutDuplicates.push(element);
});
this.entitiesList = entitiesListWithoutDuplicates;
};