Skip to content

Commit d2f543c

Browse files
committed
add: input utils
1 parent 8cd4f21 commit d2f543c

File tree

12 files changed

+252
-8
lines changed

12 files changed

+252
-8
lines changed

dist/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ export * from "./interface";
1111
export * from "./texture";
1212
export * from "./render";
1313
export * from "./particle";
14+
export * from "./utils";
15+
export * from "./input";

dist/input.d.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { Vec2 } from "./math";
2+
import Rapid from "./render";
3+
import { Entity } from "./utils";
4+
export declare class InputManager {
5+
rapid: Rapid;
6+
canvas: HTMLCanvasElement;
7+
mousePosition: Vec2;
8+
private keysDown;
9+
private keysDownLastFrame;
10+
private buttonsDown;
11+
private buttonsDownLastFrame;
12+
constructor(rapid: Rapid);
13+
/**
14+
* 附加所有必要的事件监听器
15+
* @private
16+
*/
17+
private attachEventListeners;
18+
updateNextFrame(): void;
19+
/**
20+
* 检查某个按键当前是否被按下 (持续检测)
21+
* @param key `event.code` 的值, e.g., "KeyW", "Space"
22+
*/
23+
isKeyDown(key: string): boolean;
24+
/**
25+
* 检查某个按键当前是否是松开状态
26+
* @param key `event.code` 的值
27+
*/
28+
isKeyUp(key: string): boolean;
29+
/**
30+
* 检查某个按键是否在当前帧“刚刚被按下” (单次触发)
31+
* @param key `event.code` 的值
32+
*/
33+
wasKeyPressed(key: string): boolean;
34+
/**
35+
* 检查某个按键是否在当前帧“刚刚被松开” (单次触发)
36+
* @param key `event.code` 的值
37+
*/
38+
wasKeyReleased(key: string): boolean;
39+
/**
40+
* 检查某个鼠标按钮当前是否被按下 (持续检测)
41+
* @param button 鼠标按钮编号
42+
*/
43+
isButtonDown(button: number): boolean;
44+
/**
45+
* 检查某个鼠标按钮当前是否是松开状态
46+
* @param button 鼠标按钮编号
47+
*/
48+
isButtonUp(button: number): boolean;
49+
/**
50+
* 检查某个鼠标按钮是否在当前帧“刚刚被按下” (单次触发)
51+
* @param button 鼠标按钮编号
52+
*/
53+
wasButtonPressed(button: number): boolean;
54+
/**
55+
* 检查某个鼠标按钮是否在当前帧“刚刚被松开” (单次触发)
56+
* @param button 鼠标按钮编号
57+
*/
58+
wasButtonReleased(button: number): boolean;
59+
getMouseLocal(entity: Entity): Vec2;
60+
}

dist/interface.d.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,26 @@ export interface IAttribute {
4040
stride: number;
4141
offset?: number;
4242
}
43+
export interface IEntityTransformOptions {
44+
position?: Vec2;
45+
scale?: Vec2 | number;
46+
rotation?: number;
47+
x?: number;
48+
y?: number;
49+
tags: string[];
50+
}
4351
export interface ITransformOptions {
52+
restoreTransform?: boolean;
53+
saveTransform?: boolean;
4454
position?: Vec2;
4555
scale?: Vec2 | number;
4656
rotation?: number;
47-
offset?: Vec2;
4857
x?: number;
4958
y?: number;
59+
offset?: Vec2;
5060
offsetX?: number;
5161
offsetY?: number;
5262
origin?: Vec2 | number;
53-
restoreTransform?: boolean;
54-
saveTransform?: boolean;
5563
afterSave?(): unknown;
5664
beforRestore?(): unknown;
5765
}

dist/math.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ export declare class Vec2 implements IMathObject<Vec2> {
326326
* @param y - The y coordinate (default is 0).
327327
*/
328328
constructor(x?: number, y?: number);
329+
set(x: number | number[], y?: number): this;
329330
/**
330331
* Adds another vector to this vector.
331332
* @param v - The vector to add.

dist/rapid.global.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/rapid.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/rapid.umd.cjs

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

dist/render.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,5 +249,7 @@ declare class Rapid {
249249
*/
250250
drawLightShadowMask(options: ILightRenderOptions): void;
251251
createParticleEmitter(options: IParticleOptions): ParticleEmitter;
252+
cssToGameCoords(x: number | Vec2, y?: number): Vec2;
253+
gameToCssCoords(x: number | Vec2, y?: number): Vec2;
252254
}
253255
export default Rapid;

dist/utils.d.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,26 @@
1+
import { IEntityTransformOptions } from "./interface";
2+
import { MatrixStack, Vec2 } from "./math";
3+
import Rapid from "./render";
14
export declare const isPlainObject: (obj: any) => boolean;
5+
export declare class Entity {
6+
position: Vec2;
7+
scale: Vec2;
8+
rotation: number;
9+
parent: Entity | null;
10+
readonly children: Entity[];
11+
transform: MatrixStack;
12+
rapid: Rapid;
13+
tags: string[];
14+
constructor(rapid: Rapid, options: IEntityTransformOptions);
15+
getParentTransform(): MatrixStack;
16+
update(deltaTime: number): void;
17+
updateTransform(deep?: boolean): void;
18+
render(): void;
19+
postRender(): void;
20+
postUpdate(deltaTime: number): void;
21+
addChild(child: Entity): void;
22+
removeChild(child: Entity): void;
23+
root(dt: number): void;
24+
findDescendant(predicate: (entity: Entity) => boolean, onlyFirst?: boolean): Entity[] | Entity | null;
25+
findDescendantByTag(tags: string[], onlyFirst?: boolean): Entity | Entity[] | null;
26+
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rapid-render",
3-
"version": "0.1.20",
3+
"version": "0.1.21",
44
"type": "module",
55
"files": [
66
"dist"

0 commit comments

Comments
 (0)