新增hash
This commit is contained in:
Submodule demo/egret_demo updated: ce43caa51b...201e6c5e16
Submodule demo/laya_demo updated: f684e5a702...494604d457
Submodule engine_support/egret updated: a2bcd99ffe...507fb2fcde
Submodule extensions/behaviourTree-ai updated: c21ddc044e...b3b974e864
Submodule extensions/ecs-star updated: 56e1b19fb0...0b44165e55
28
source/bin/framework.d.ts
vendored
28
source/bin/framework.d.ts
vendored
@@ -945,6 +945,7 @@ declare module es {
|
|||||||
* 存储这个允许我们始终能够安全地从物理系统中移除对撞机,即使它在试图移除它之前已经被移动了。
|
* 存储这个允许我们始终能够安全地从物理系统中移除对撞机,即使它在试图移除它之前已经被移动了。
|
||||||
*/
|
*/
|
||||||
registeredPhysicsBounds: Rectangle;
|
registeredPhysicsBounds: Rectangle;
|
||||||
|
protected _colliderRequiresAutoSizing: boolean;
|
||||||
_localOffsetLength: number;
|
_localOffsetLength: number;
|
||||||
_isPositionDirty: boolean;
|
_isPositionDirty: boolean;
|
||||||
_isRotationDirty: boolean;
|
_isRotationDirty: boolean;
|
||||||
@@ -1768,6 +1769,18 @@ declare module es {
|
|||||||
* @param length
|
* @param length
|
||||||
*/
|
*/
|
||||||
static incrementWithWrap(t: number, length: number): number;
|
static incrementWithWrap(t: number, length: number): number;
|
||||||
|
/**
|
||||||
|
* 以roundToNearest为步长,将值舍入到最接近的数字。例如:在125中找到127到最近的5个结果
|
||||||
|
* @param value
|
||||||
|
* @param roundToNearest
|
||||||
|
*/
|
||||||
|
static roundToNearest(value: number, roundToNearest: number): number;
|
||||||
|
/**
|
||||||
|
* 检查传递的值是否在某个阈值之下。对于小规模、精确的比较很有用
|
||||||
|
* @param value
|
||||||
|
* @param ep
|
||||||
|
*/
|
||||||
|
static withinEpsilon(value: number, ep?: number): boolean;
|
||||||
/**
|
/**
|
||||||
* 由上移量向上移。start可以小于或大于end。例如:开始是2,结束是10,移位是4,结果是6
|
* 由上移量向上移。start可以小于或大于end。例如:开始是2,结束是10,移位是4,结果是6
|
||||||
* @param start
|
* @param start
|
||||||
@@ -3066,6 +3079,15 @@ declare module es {
|
|||||||
update(): void;
|
update(): void;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
declare module es {
|
||||||
|
class Hash {
|
||||||
|
/**
|
||||||
|
* 从一个字节数组中计算一个哈希值
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
static computeHash(...data: number[]): number;
|
||||||
|
}
|
||||||
|
}
|
||||||
declare module es {
|
declare module es {
|
||||||
interface IComparer<T> {
|
interface IComparer<T> {
|
||||||
compare(x: T, y: T): number;
|
compare(x: T, y: T): number;
|
||||||
@@ -3976,12 +3998,6 @@ declare module es {
|
|||||||
static round(vec: Vector2): Vector2;
|
static round(vec: Vector2): Vector2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
declare class WebGLUtils {
|
|
||||||
/**
|
|
||||||
* 获取webgl context
|
|
||||||
*/
|
|
||||||
static getContext(): CanvasRenderingContext2D;
|
|
||||||
}
|
|
||||||
declare module linq {
|
declare module linq {
|
||||||
class Enumerable {
|
class Enumerable {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2241,7 +2241,7 @@ var es;
|
|||||||
* 封装变换。如果碰撞器没和实体一起旋转 则返回transform.rotation
|
* 封装变换。如果碰撞器没和实体一起旋转 则返回transform.rotation
|
||||||
*/
|
*/
|
||||||
get: function () {
|
get: function () {
|
||||||
if (this.shouldColliderScaleAndRotateWithTransform && this.entity)
|
if (this.shouldColliderScaleAndRotateWithTransform && this.entity != null)
|
||||||
return this.entity.transform.rotation;
|
return this.entity.transform.rotation;
|
||||||
return 0;
|
return 0;
|
||||||
},
|
},
|
||||||
@@ -2284,7 +2284,7 @@ var es;
|
|||||||
* @param offset
|
* @param offset
|
||||||
*/
|
*/
|
||||||
Collider.prototype.setLocalOffset = function (offset) {
|
Collider.prototype.setLocalOffset = function (offset) {
|
||||||
if (this._localOffset != offset) {
|
if (!this._localOffset.equals(offset)) {
|
||||||
this.unregisterColliderWithPhysicsSystem();
|
this.unregisterColliderWithPhysicsSystem();
|
||||||
this._localOffset = offset;
|
this._localOffset = offset;
|
||||||
this._localOffsetLength = this._localOffset.length();
|
this._localOffsetLength = this._localOffset.length();
|
||||||
@@ -2303,6 +2303,9 @@ var es;
|
|||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
Collider.prototype.onAddedToEntity = function () {
|
Collider.prototype.onAddedToEntity = function () {
|
||||||
|
if (this._colliderRequiresAutoSizing) {
|
||||||
|
es.Insist.isTrue(this instanceof es.BoxCollider || this instanceof es.CircleCollider, "只有框和圆的碰撞器可以自动创建");
|
||||||
|
}
|
||||||
this._isParentEntityAddedToScene = true;
|
this._isParentEntityAddedToScene = true;
|
||||||
this.registerColliderWithPhysicsSystem();
|
this.registerColliderWithPhysicsSystem();
|
||||||
};
|
};
|
||||||
@@ -4448,6 +4451,23 @@ var es;
|
|||||||
return 0;
|
return 0;
|
||||||
return t;
|
return t;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* 以roundToNearest为步长,将值舍入到最接近的数字。例如:在125中找到127到最近的5个结果
|
||||||
|
* @param value
|
||||||
|
* @param roundToNearest
|
||||||
|
*/
|
||||||
|
MathHelper.roundToNearest = function (value, roundToNearest) {
|
||||||
|
return Math.round(value / roundToNearest) * roundToNearest;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* 检查传递的值是否在某个阈值之下。对于小规模、精确的比较很有用
|
||||||
|
* @param value
|
||||||
|
* @param ep
|
||||||
|
*/
|
||||||
|
MathHelper.withinEpsilon = function (value, ep) {
|
||||||
|
if (ep === void 0) { ep = this.Epsilon; }
|
||||||
|
return Math.abs(value) < ep;
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* 由上移量向上移。start可以小于或大于end。例如:开始是2,结束是10,移位是4,结果是6
|
* 由上移量向上移。start可以小于或大于end。例如:开始是2,结束是10,移位是4,结果是6
|
||||||
* @param start
|
* @param start
|
||||||
@@ -7830,6 +7850,35 @@ var es;
|
|||||||
es.GlobalManager = GlobalManager;
|
es.GlobalManager = GlobalManager;
|
||||||
})(es || (es = {}));
|
})(es || (es = {}));
|
||||||
var es;
|
var es;
|
||||||
|
(function (es) {
|
||||||
|
var Hash = /** @class */ (function () {
|
||||||
|
function Hash() {
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 从一个字节数组中计算一个哈希值
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
Hash.computeHash = function () {
|
||||||
|
var data = [];
|
||||||
|
for (var _i = 0; _i < arguments.length; _i++) {
|
||||||
|
data[_i] = arguments[_i];
|
||||||
|
}
|
||||||
|
var p = 16777619;
|
||||||
|
var hash = 2166136261;
|
||||||
|
for (var i = 0; i < data.length; i++)
|
||||||
|
hash = (hash ^ data[i]) * p;
|
||||||
|
hash += hash << 13;
|
||||||
|
hash ^= hash >> 7;
|
||||||
|
hash += hash << 3;
|
||||||
|
hash ^= hash >> 17;
|
||||||
|
hash += hash << 5;
|
||||||
|
return hash;
|
||||||
|
};
|
||||||
|
return Hash;
|
||||||
|
}());
|
||||||
|
es.Hash = Hash;
|
||||||
|
})(es || (es = {}));
|
||||||
|
var es;
|
||||||
(function (es) {
|
(function (es) {
|
||||||
/**
|
/**
|
||||||
* 使得number/string/boolean类型作为对象引用来进行传递
|
* 使得number/string/boolean类型作为对象引用来进行传递
|
||||||
@@ -10175,18 +10224,6 @@ var es;
|
|||||||
}());
|
}());
|
||||||
es.Vector2Ext = Vector2Ext;
|
es.Vector2Ext = Vector2Ext;
|
||||||
})(es || (es = {}));
|
})(es || (es = {}));
|
||||||
var WebGLUtils = /** @class */ (function () {
|
|
||||||
function WebGLUtils() {
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 获取webgl context
|
|
||||||
*/
|
|
||||||
WebGLUtils.getContext = function () {
|
|
||||||
var canvas = document.getElementsByTagName('canvas')[0];
|
|
||||||
return canvas.getContext('2d');
|
|
||||||
};
|
|
||||||
return WebGLUtils;
|
|
||||||
}());
|
|
||||||
var linq;
|
var linq;
|
||||||
(function (linq) {
|
(function (linq) {
|
||||||
var Enumerable = /** @class */ (function () {
|
var Enumerable = /** @class */ (function () {
|
||||||
|
|||||||
2
source/bin/framework.min.js
vendored
2
source/bin/framework.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -88,7 +88,7 @@ module es {
|
|||||||
return Math.atan2(to.y - from.y, to.x - from.x);
|
return Math.atan2(to.y - from.y, to.x - from.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static angleToVector(angleRadians: number, length: number){
|
public static angleToVector(angleRadians: number, length: number) {
|
||||||
return new Vector2(Math.cos(angleRadians) * length, Math.sin(angleRadians) * length);
|
return new Vector2(Math.cos(angleRadians) * length, Math.sin(angleRadians) * length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,14 +97,32 @@ module es {
|
|||||||
* @param t
|
* @param t
|
||||||
* @param length
|
* @param length
|
||||||
*/
|
*/
|
||||||
public static incrementWithWrap(t: number, length: number){
|
public static incrementWithWrap(t: number, length: number) {
|
||||||
t ++;
|
t++;
|
||||||
if (t == length)
|
if (t == length)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 以roundToNearest为步长,将值舍入到最接近的数字。例如:在125中找到127到最近的5个结果
|
||||||
|
* @param value
|
||||||
|
* @param roundToNearest
|
||||||
|
*/
|
||||||
|
public static roundToNearest(value: number, roundToNearest: number) {
|
||||||
|
return Math.round(value / roundToNearest) * roundToNearest;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查传递的值是否在某个阈值之下。对于小规模、精确的比较很有用
|
||||||
|
* @param value
|
||||||
|
* @param ep
|
||||||
|
*/
|
||||||
|
public static withinEpsilon(value: number, ep: number = this.Epsilon) {
|
||||||
|
return Math.abs(value) < ep;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 由上移量向上移。start可以小于或大于end。例如:开始是2,结束是10,移位是4,结果是6
|
* 由上移量向上移。start可以小于或大于end。例如:开始是2,结束是10,移位是4,结果是6
|
||||||
* @param start
|
* @param start
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
class WebGLUtils {
|
|
||||||
/**
|
|
||||||
* 获取webgl context
|
|
||||||
*/
|
|
||||||
public static getContext() {
|
|
||||||
const canvas = document.getElementsByTagName('canvas')[0];
|
|
||||||
return canvas.getContext('2d');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
22
source/src/Utils/Hash.ts
Normal file
22
source/src/Utils/Hash.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
module es {
|
||||||
|
export class Hash {
|
||||||
|
/**
|
||||||
|
* 从一个字节数组中计算一个哈希值
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
public static computeHash(...data: number[]) {
|
||||||
|
const p: number = 16777619;
|
||||||
|
let hash = 2166136261;
|
||||||
|
|
||||||
|
for (let i = 0; i < data.length; i++)
|
||||||
|
hash = (hash ^ data[i]) * p;
|
||||||
|
|
||||||
|
hash += hash << 13;
|
||||||
|
hash ^= hash >> 7;
|
||||||
|
hash += hash << 3;
|
||||||
|
hash ^= hash >> 17;
|
||||||
|
hash += hash << 5;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user