Files
cocos-engine/@types/jsb.d.ts
PP fa51b804b5 remove and ban @ts-expect-error (#14572)
* remove ts-expect-error usage in engine

* deprecate Scheduler interface

* remove JavaScriptCore

* set some engineInternal public property as getter setter

* fix build-declaration

* fix releaseManager export name conflict

* update scriptEngineType

* fix and update some comment

* remove  w_mat, w_pos, w_rot, w_scale

* update renderer

* fix setRootBufferDirty not binding on native

* optimize floatToHashString

* mark NOTE
2023-03-20 13:48:26 +08:00

372 lines
12 KiB
TypeScript

// some interfaces might be overridden
/* eslint-disable import/no-mutable-exports */
/**
* API for jsb module
* Author: haroel
* Homepage: https://github.com/haroel/creatorexDTS
*
* @deprecated since v3.6.0, please import `native` from 'cc' module instead like `import { native } from 'cc';`.
*/
declare namespace jsb {
let window: any;
type AccelerationXYZ = number;
type AccelerationIncludingGravityXYZ = number;
type RotationRateAlpha = number;
type RotationRateBeta = number;
type RotationRateGamma = number;
type DeviceMotionValue = [AccelerationXYZ, AccelerationXYZ, AccelerationXYZ,
AccelerationIncludingGravityXYZ, AccelerationIncludingGravityXYZ, AccelerationIncludingGravityXYZ,
RotationRateAlpha, RotationRateBeta, RotationRateGamma];
export namespace device {
export function getBatteryLevel(): number;
export function getDevicePixelRatio(): number;
export function getDeviceOrientation(): number;
export function getNetworkType(): number; // TODO: enum type
export function getSafeAreaEdge(): NativeSafeAreaEdge;
export function setAccelerometerEnabled(isEnabled: boolean);
export function setAccelerometerInterval(intervalInSeconds: number);
export function getDeviceMotionValue(): DeviceMotionValue;
}
export interface NativeSafeAreaEdge {
/**
* top
*/
x: number;
/**
* left
*/
y: number;
/**
* bottom
*/
z: number;
/**
* right
*/
w: number;
}
export interface MouseEvent {
x: number,
y: number,
xDelta: number | undefined,
yDelta: number | undefined,
button: number,
windowId: number,
}
type MouseEventCallback = (mouseEvent: MouseEvent) => void;
export interface MouseWheelEvent extends MouseEvent {
wheelDeltaX: number,
wheelDeltaY: number,
}
type MouseWheelEventCallback = (mouseEvent: MouseWheelEvent) => void;
export let onMouseDown: MouseEventCallback | undefined;
export let onMouseMove: MouseEventCallback | undefined;
export let onMouseUp: MouseEventCallback | undefined;
export let onMouseWheel: MouseWheelEventCallback | undefined;
type TouchEventCallback = (touchList: TouchList, windowId?: number) => void;
export let onTouchStart: TouchEventCallback | undefined;
export let onTouchMove: TouchEventCallback | undefined;
export let onTouchEnd: TouchEventCallback | undefined;
export let onTouchCancel: TouchEventCallback | undefined;
export interface ControllerInfo {
id: number;
axisInfoList: AxisInfo[],
buttonInfoList: ButtonInfo[],
}
export interface AxisInfo {
code: number,
value: number,
}
export interface ButtonInfo {
code: number,
isPressed: boolean,
}
export let onControllerInput: (infoList: ControllerInfo[]) => void | undefined;
export let onHandleInput: (infoList: ControllerInfo[]) => void | undefined;
export let onControllerChange: (controllerIds: number[]) => void | undefined;
export interface PoseInfo {
code: number,
x: number,
y: number,
z: number,
quaternionX: number,
quaternionY: number,
quaternionZ: number,
quaternionW: number,
}
export let onHandlePoseInput: (infoList: PoseInfo[]) => void | undefined;
export let onHMDPoseInput: (infoList: PoseInfo[]) => void | undefined;
export let onHandheldPoseInput: (infoList: PoseInfo[]) => void | undefined;
export interface KeyboardEvent {
altKey: boolean;
ctrlKey: boolean;
metaKey: boolean;
shiftKey: boolean;
repeat: boolean;
keyCode: number;
windowId: number;
}
type KeyboardEventCallback = (keyboardEvent: KeyboardEvent) => void;
export let onKeyDown: KeyboardEventCallback | undefined;
export let onKeyUp: KeyboardEventCallback| undefined;
export interface WindowEvent {
windowId: number;
width: number;
height: number;
}
/**
* @en WindowEvent.width and WindowEvent.height have both been multiplied by DPR
* @zh WindowEvent.width 和 WindowEvent.height 都已乘以 DPR
*/
export let onResize: (event: WindowEvent) => void | undefined;
export let onOrientationChanged: (event: {orientation: number}) => void | undefined; // TODO: enum orientation type
export let onResume: () => void | undefined;
export let onPause: () => void | undefined;
export let onClose: () => void | undefined;
export function openURL(url: string): void;
export function garbageCollect(): void;
enum AudioFormat {
UNKNOWN,
SIGNED_8,
UNSIGNED_8,
SIGNED_16,
UNSIGNED_16,
SIGNED_32,
UNSIGNED_32,
FLOAT_32,
FLOAT_64
}
interface PCMHeader {
totalFrames: number;
sampleRate: number;
bytesPerFrame: number;
audioFormat: AudioFormat;
channelCount: number;
}
export namespace AudioEngine {
export function preload (url: string, cb: (isSuccess: boolean) => void);
export function play2d (url: string, loop: boolean, volume: number): number;
export function pause (id: number);
export function pauseAll ();
export function resume (id: number);
export function resumeAll ();
export function stop (id: number);
export function stopAll ();
export function getPlayingAudioCount (): number;
export function getMaxAudioInstance (): number;
export function getState (id: number): any;
export function getDuration (id: number): number;
export function getVolume (id: number): number;
export function isLoop (id: number): boolean;
export function getCurrentTime (id: number): number;
export function setVolume (id: number, val: number);
export function setLoop (id: number, val: boolean);
export function setCurrentTime (id: number, val: number);
export function uncache (url: string);
export function uncacheAll ();
export function setErrorCallback (id: number, cb: (err: any) => void);
export function setFinishCallback (id: number, cb: () => void);
/**
* Get PCM header without pcm data. if you want to get pcm data, use getOriginalPCMBuffer instead
*/
export function getPCMHeader (url: string): PCMHeader;
/**
* Get PCM Data in decode format for example Int16Array, the format information is written in PCMHeader.
* @param url: file relative path, for example player._path
* @param channelID: ChannelID which should smaller than channel count, start from 0
*/
export function getOriginalPCMBuffer (url: string, channelID: number): ArrayBuffer | undefined;
}
class NativePOD {
underlyingData(): ArrayBuffer;
_data(): TypedArray;
__data: TypedArray;
}
export class Color extends NativePOD {
}
export class Quat extends NativePOD {
}
export class Vec2 extends NativePOD {
}
export class Vec3 extends NativePOD {
}
export class Vec4 extends NativePOD {
}
export class Mat3 extends NativePOD {
}
export class Mat4 extends NativePOD {
}
export interface ManifestAsset {
md5: string;
path: string;
compressed: boolean;
size: number;
downloadState: number;
}
export class Manifest {
constructor (manifestUrl: string);
constructor (content: string, manifestRoot: string);
parseFile (manifestUrl: string): void;
parseJSONString (content: string, manifestRoot: string): void;
getManifestRoot (): string;
getManifestFileUrl (): string;
getVersionFileUrl (): string;
getSearchPaths (): [string];
getVersion (): string;
getPackageUrl (): boolean;
setUpdating (isUpdating: boolean): void;
isUpdating (): boolean;
isVersionLoaded (): boolean;
isLoaded (): boolean;
}
export class EventAssetsManager {
// EventCode
static ERROR_NO_LOCAL_MANIFEST: number;
static ERROR_DOWNLOAD_MANIFEST: number;
static ERROR_PARSE_MANIFEST: number;
static NEW_VERSION_FOUND: number;
static ALREADY_UP_TO_DATE: number;
static UPDATE_PROGRESSION: number;
static ASSET_UPDATED: number;
static ERROR_UPDATING: number;
static UPDATE_FINISHED: number;
static UPDATE_FAILED: number;
static ERROR_DECOMPRESS: number;
constructor (eventName: string, manager: AssetsManager, eventCode: number,
assetId?: string, message?: string, curleCode?: number, curlmCode?: number);
getAssetsManagerEx (): AssetsManager;
isResuming (): boolean;
getDownloadedFiles (): number;
getDownloadedBytes (): number;
getTotalFiles (): number;
getTotalBytes (): number;
getPercent (): number;
getPercentByFile (): number;
getEventCode (): number;
getMessage (): string;
getAssetId (): string;
getCURLECode (): number;
getCURLMCode (): number;
}
export namespace AssetsManager {
export enum State {
UNINITED,
UNCHECKED,
PREDOWNLOAD_VERSION,
DOWNLOADING_VERSION,
VERSION_LOADED,
PREDOWNLOAD_MANIFEST,
DOWNLOADING_MANIFEST,
MANIFEST_LOADED,
NEED_UPDATE,
READY_TO_UPDATE,
UPDATING,
UNZIPPING,
UP_TO_DATE,
FAIL_TO_UPDATE,
}
}
export class AssetsManager {
constructor (manifestUrl: string, storagePath: string, versionCompareHandle?: (versionA: string, versionB: string) => number);
static create (manifestUrl: string, storagePath: string): AssetsManager;
getState (): AssetsManager.State;
getStoragePath (): string
getMaxConcurrentTask (): number;
// setMaxConcurrentTask (max: number): void; // actually not supported
checkUpdate (): void;
prepareUpdate (): void;
update (): void;
isResuming (): boolean;
getDownloadedFiles (): number;
getDownloadedBytes (): number;
getTotalFiles (): number;
getTotalBytes (): number;
downloadFailedAssets (): void;
getLocalManifest (): Manifest;
loadLocalManifest (manifestUrl: string): boolean;
loadLocalManifest (localManifest: Manifest, storagePath: string): boolean;
getRemoteManifest (): Manifest;
loadRemoteManifest (remoteManifest: Manifest): boolean;
/**
* Setup your own version compare handler, versionA and B is versions in string.
* if the return value greater than 0, versionA is greater than B,
* if the return value equals 0, versionA equals to B,
* if the return value smaller than 0, versionA is smaller than B.
*/
setVersionCompareHandle (versionCompareHandle?: (versionA: string, versionB: string) => number): void;
/**
* Setup the verification callback, Return true if the verification passed, otherwise return false
*/
setVerifyCallback (verifyCallback: (path: string, asset: ManifestAsset) => boolean): void;
setEventCallback (eventCallback: (event: EventAssetsManager) => void): void;
}
}
declare namespace ns {
class NativePOD {
underlyingData(): ArrayBuffer;
_arraybuffer(): ArrayBuffer;
}
export class Line extends jsb.NativePOD {
}
export class Plane extends jsb.NativePOD {
}
export class Ray extends jsb.NativePOD {
}
export class Triangle extends jsb.NativePOD {
}
export class Sphere extends jsb.NativePOD {
}
export class AABB extends jsb.NativePOD {
}
export class Capsule extends jsb.NativePOD {
}
export class Frustum extends jsb.NativePOD {
}
}
/**
* Only defined on native platforms.
* Now we only support 'V8'
*/
declare const scriptEngineType: 'V8';