diff --git a/examples/cocos-creator-multiplayer/backend/.gitignore b/examples/cocos-creator-multiplayer/backend/.gitignore index d84f0da..7c591ed 100644 --- a/examples/cocos-creator-multiplayer/backend/.gitignore +++ b/examples/cocos-creator-multiplayer/backend/.gitignore @@ -1,3 +1,4 @@ node_modules dist -.DS_STORE \ No newline at end of file +.DS_STORE +*.meta \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/package.json b/examples/cocos-creator-multiplayer/backend/package.json index 6beae18..25c5e18 100644 --- a/examples/cocos-creator-multiplayer/backend/package.json +++ b/examples/cocos-creator-multiplayer/backend/package.json @@ -22,6 +22,6 @@ "typescript": "^4.5.2" }, "dependencies": { - "tsrpc": "^3.1.2" + "tsrpc": "^3.1.3-dev.1" } -} \ No newline at end of file +} diff --git a/examples/cocos-creator-multiplayer/backend/src/api/ApiJoinRoom.ts b/examples/cocos-creator-multiplayer/backend/src/api/ApiJoinRoom.ts new file mode 100644 index 0000000..e64e371 --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/api/ApiJoinRoom.ts @@ -0,0 +1,12 @@ +import { ApiCallWs } from "tsrpc"; +import { roomInstance } from ".."; +import { ReqJoinRoom, ResJoinRoom } from "../shared/protocols/PtlJoinRoom"; + +export async function ApiJoinRoom(call: ApiCallWs) { + let uid = roomInstance.join(call.req, call.conn); + + call.succ({ + uid: uid, + roomState: roomInstance.state + }) +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/api/ApiSend.ts b/examples/cocos-creator-multiplayer/backend/src/api/ApiSend.ts deleted file mode 100644 index e8943fa..0000000 --- a/examples/cocos-creator-multiplayer/backend/src/api/ApiSend.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ApiCall } from "tsrpc"; -import { server } from ".."; -import { ReqSend, ResSend } from "../shared/protocols/PtlSend"; - -// This is a demo code file -// Feel free to delete it - -export async function ApiSend(call: ApiCall) { - // Error - if (call.req.content.length === 0) { - call.error('Content is empty') - return; - } - - // Success - let time = new Date(); - call.succ({ - time: time - }); - - // Broadcast - server.broadcastMsg('Chat', { - content: call.req.content, - time: time - }) -} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/index.ts b/examples/cocos-creator-multiplayer/backend/src/index.ts index 71d481a..9b7d41a 100644 --- a/examples/cocos-creator-multiplayer/backend/src/index.ts +++ b/examples/cocos-creator-multiplayer/backend/src/index.ts @@ -1,5 +1,7 @@ +import 'k8w-extend-native'; import * as path from "path"; import { WsServer } from "tsrpc"; +import { Room } from './models/Room'; import { serviceProto } from './shared/protocols/serviceProto'; // Create the Server @@ -9,6 +11,9 @@ export const server = new WsServer(serviceProto, { json: true }); +// 测试,只有一个房间 +export const roomInstance = new Room(server); + // Initialize before server start async function init() { await server.autoImplementApi(path.resolve(__dirname, 'api')); diff --git a/examples/cocos-creator-multiplayer/backend/src/models/Room.ts b/examples/cocos-creator-multiplayer/backend/src/models/Room.ts new file mode 100644 index 0000000..3dd5783 --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/models/Room.ts @@ -0,0 +1,102 @@ +import { WsConnection, WsServer } from "tsrpc"; +import { ReqJoinRoom } from "../shared/protocols/PtlJoinRoom"; +import { MsgFrame } from "../shared/protocols/serverMsgs/MsgFrame"; +import { ServiceType } from "../shared/protocols/serviceProto"; +import { applyPlayerInput, PlayerInput, PlayerState } from "../shared/states/Player"; +import { RoomState } from "../shared/states/RoomState"; + +/** + * 服务端 - 房间 - 逻辑系统 + */ +export class Room { + + state: RoomState = { + players: [] + } + + // 次数/秒 + syncRate = 10; + lastUid = 0; + + server: WsServer; + conns: WsConnection[] = []; + + pendingInputs: MsgFrame['inputs'] = []; + + constructor(server: WsServer) { + this.server = server; + setInterval(() => { this.sendSyncFrame() }, 1000 / this.syncRate); + } + + sendSyncFrame() { + // 发送同步帧 + this.server.broadcastMsg('serverMsgs/Frame', { + inputs: this.pendingInputs + }, this.conns); + this.pendingInputs = []; + } + + /** 加入房间 */ + join(req: ReqJoinRoom, conn: WsConnection) { + let player: PlayerState = { + ...req, + uid: ++this.lastUid, + // 初始位置随机 + pos: { + x: Math.random() * 10, + y: Math.random() * 10 + } + } + this.conns.push(conn); + this.state.players.push(player); + + conn.uid = player.uid; + conn.listenMsg('clientMsgs/Input', call => { + this.pendingInputs.push({ + uid: player.uid, + msgInput: call.msg + }); + this.applyInput({ + uid: player.uid, + input: call.msg + }); + }); + + this.server.broadcastMsg('serverMsgs/Join', { + player: player + }, this.conns); + + return player.uid; + } + + /** 离开房间 */ + leave(uid: number, conn: WsConnection) { + this.conns.removeOne(v => v.uid === uid); + this.state.players.removeOne(v => v.uid === uid); + + conn.unlistenMsgAll('clientMsgs/Input'); + + this.server.broadcastMsg('serverMsgs/Leave', { + uid: uid + }, this.conns); + } + + applyInput(input: RoomInput) { + let playerIndex = this.state.players.findIndex(v => v.uid === input.uid); + if (playerIndex > -1) { + this.state.players[playerIndex] = applyPlayerInput(this.state.players[playerIndex], input.input); + } + } + +} + +export interface RoomInput { + uid: number, + input: PlayerInput +} + +declare module 'tsrpc' { + export interface WsConnection { + uid?: number; + } +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/MsgChat.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/MsgChat.ts deleted file mode 100644 index b18ed7b..0000000 --- a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/MsgChat.ts +++ /dev/null @@ -1,7 +0,0 @@ -// This is a demo code file -// Feel free to delete it - -export interface MsgChat { - content: string, - time: Date -} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/PtlJoinRoom.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/PtlJoinRoom.ts new file mode 100644 index 0000000..46b96b0 --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/PtlJoinRoom.ts @@ -0,0 +1,14 @@ +import { PlayerState } from "../states/Player"; +import { RoomState } from "../states/RoomState"; + +export interface ReqJoinRoom { + nickname: string; + skinId: number; +} + +export interface ResJoinRoom { + uid: number, + roomState: RoomState +} + +// export const conf = {} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/PtlSend.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/PtlSend.ts deleted file mode 100644 index a732699..0000000 --- a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/PtlSend.ts +++ /dev/null @@ -1,10 +0,0 @@ -// This is a demo code file -// Feel free to delete it - -export interface ReqSend { - content: string -} - -export interface ResSend { - time: Date -} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/base.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/base.ts deleted file mode 100644 index 4626ca8..0000000 --- a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/base.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface BaseRequest { - -} - -export interface BaseResponse { - -} - -export interface BaseConf { - -} - -export interface BaseMessage { - -} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/clientMsgs/MsgInput.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/clientMsgs/MsgInput.ts new file mode 100644 index 0000000..ae0ae07 --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/clientMsgs/MsgInput.ts @@ -0,0 +1,3 @@ +import { PlayerInput } from "../../states/Player"; + +export type MsgInput = { sn: number } & PlayerInput; \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgFrame.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgFrame.ts new file mode 100644 index 0000000..b7716b2 --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgFrame.ts @@ -0,0 +1,8 @@ +import { MsgInput } from "../clientMsgs/MsgInput"; + +export interface MsgFrame { + inputs: { + uid: number, + msgInput: MsgInput + }[] +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgJoin.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgJoin.ts new file mode 100644 index 0000000..34429ae --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgJoin.ts @@ -0,0 +1,5 @@ +import { PlayerState } from "../../states/Player"; + +export interface MsgJoin { + player: PlayerState; +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgLeave.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgLeave.ts new file mode 100644 index 0000000..adf0df5 --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serverMsgs/MsgLeave.ts @@ -0,0 +1,3 @@ +export interface MsgLeave { + uid: number; +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serviceProto.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serviceProto.ts index 5e615d5..5e2448c 100644 --- a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serviceProto.ts +++ b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serviceProto.ts @@ -1,75 +1,279 @@ import { ServiceProto } from 'tsrpc-proto'; -import { MsgChat } from './MsgChat'; -import { ReqSend, ResSend } from './PtlSend'; - -// This is a demo service proto file (auto generated) -// Feel free to delete it +import { MsgInput } from './clientMsgs/MsgInput'; +import { ReqJoinRoom, ResJoinRoom } from './PtlJoinRoom'; +import { MsgFrame } from './serverMsgs/MsgFrame'; +import { MsgJoin } from './serverMsgs/MsgJoin'; +import { MsgLeave } from './serverMsgs/MsgLeave'; export interface ServiceType { api: { - "Send": { - req: ReqSend, - res: ResSend + "JoinRoom": { + req: ReqJoinRoom, + res: ResJoinRoom } }, msg: { - "Chat": MsgChat + "clientMsgs/Input": MsgInput, + "serverMsgs/Frame": MsgFrame, + "serverMsgs/Join": MsgJoin, + "serverMsgs/Leave": MsgLeave } } export const serviceProto: ServiceProto = { + "version": 3, "services": [ { - "id": 0, - "name": "Chat", + "id": 2, + "name": "clientMsgs/Input", "type": "msg" }, { - "id": 1, - "name": "Send", + "id": 3, + "name": "JoinRoom", "type": "api" + }, + { + "id": 7, + "name": "serverMsgs/Frame", + "type": "msg" + }, + { + "id": 4, + "name": "serverMsgs/Join", + "type": "msg" + }, + { + "id": 5, + "name": "serverMsgs/Leave", + "type": "msg" } ], "types": { - "MsgChat/MsgChat": { + "clientMsgs/MsgInput/MsgInput": { + "type": "Intersection", + "members": [ + { + "id": 0, + "type": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "sn", + "type": { + "type": "Number" + } + } + ] + } + }, + { + "id": 1, + "type": { + "type": "Reference", + "target": "../states/Player/PlayerInput" + } + } + ] + }, + "../states/Player/PlayerInput": { + "type": "Reference", + "target": "../states/Player/PlayerMove" + }, + "../states/Player/PlayerMove": { "type": "Interface", "properties": [ { "id": 0, - "name": "content", + "name": "type", + "type": { + "type": "Literal", + "literal": "move" + } + }, + { + "id": 1, + "name": "offset", + "type": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "x", + "type": { + "type": "Number" + } + }, + { + "id": 1, + "name": "y", + "type": { + "type": "Number" + } + } + ] + } + } + ] + }, + "PtlJoinRoom/ReqJoinRoom": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "nickname", "type": { "type": "String" } }, { "id": 1, - "name": "time", + "name": "skinId", "type": { - "type": "Date" + "type": "Number" } } ] }, - "PtlSend/ReqSend": { + "PtlJoinRoom/ResJoinRoom": { "type": "Interface", "properties": [ { "id": 0, - "name": "content", + "name": "uid", + "type": { + "type": "Number" + } + }, + { + "id": 3, + "name": "roomState", + "type": { + "type": "Reference", + "target": "../states/RoomState/RoomState" + } + } + ] + }, + "../states/RoomState/RoomState": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "players", + "type": { + "type": "Array", + "elementType": { + "type": "Reference", + "target": "../states/Player/PlayerState" + } + } + } + ] + }, + "../states/Player/PlayerState": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "uid", + "type": { + "type": "Number" + } + }, + { + "id": 1, + "name": "nickname", "type": { "type": "String" } + }, + { + "id": 2, + "name": "skinId", + "type": { + "type": "Number" + } + }, + { + "id": 3, + "name": "pos", + "type": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "x", + "type": { + "type": "Number" + } + }, + { + "id": 1, + "name": "y", + "type": { + "type": "Number" + } + } + ] + } } ] }, - "PtlSend/ResSend": { + "serverMsgs/MsgFrame/MsgFrame": { "type": "Interface", "properties": [ { "id": 0, - "name": "time", + "name": "inputs", "type": { - "type": "Date" + "type": "Array", + "elementType": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "uid", + "type": { + "type": "Number" + } + }, + { + "id": 1, + "name": "msgInput", + "type": { + "type": "Reference", + "target": "clientMsgs/MsgInput/MsgInput" + } + } + ] + } + } + } + ] + }, + "serverMsgs/MsgJoin/MsgJoin": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "player", + "type": { + "type": "Reference", + "target": "../states/Player/PlayerState" + } + } + ] + }, + "serverMsgs/MsgLeave/MsgLeave": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "uid", + "type": { + "type": "Number" } } ] diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/states/Player.ts b/examples/cocos-creator-multiplayer/backend/src/shared/states/Player.ts new file mode 100644 index 0000000..a152d3d --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/shared/states/Player.ts @@ -0,0 +1,30 @@ +export interface PlayerState { + uid: number, + nickname: string, + skinId: number, + + // 可变状态 + pos: { + x: number, + y: number + } +} + +export interface PlayerMove { + type: 'move', + // 位移距离 + offset: { + x: number, + y: number + } +} +export type PlayerInput = PlayerMove; + +export function applyPlayerInput(state: PlayerState, input: PlayerInput): PlayerState { + if (input.type === 'move') { + state.pos.x += input.offset.x; + state.pos.y += input.offset.y; + } + + return state; +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/states/RoomState.ts b/examples/cocos-creator-multiplayer/backend/src/shared/states/RoomState.ts new file mode 100644 index 0000000..b89f35c --- /dev/null +++ b/examples/cocos-creator-multiplayer/backend/src/shared/states/RoomState.ts @@ -0,0 +1,5 @@ +import { PlayerState } from "./Player"; + +export interface RoomState { + players: PlayerState[] +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/tsrpc.config.ts b/examples/cocos-creator-multiplayer/backend/tsrpc.config.ts index 0bbf318..3fb40fa 100644 --- a/examples/cocos-creator-multiplayer/backend/tsrpc.config.ts +++ b/examples/cocos-creator-multiplayer/backend/tsrpc.config.ts @@ -1,4 +1,4 @@ -import { CodeTemplate, TsrpcConfig } from 'tsrpc-cli'; +import { TsrpcConfig } from 'tsrpc-cli'; const tsrpcConf: TsrpcConfig = { // Generate ServiceProto @@ -8,17 +8,17 @@ const tsrpcConf: TsrpcConfig = { output: 'src/shared/protocols/serviceProto.ts', // Path for generated ServiceProto apiDir: 'src/api', // API dir docDir: 'docs', // API documents dir - ptlTemplate: CodeTemplate.getExtendedPtl(), + // ptlTemplate: CodeTemplate.getExtendedPtl(), // msgTemplate: CodeTemplate.getExtendedMsg(), } ], // Sync shared code sync: [ - // { - // from: 'src/shared', - // to: '../frontend/src/shared', - // type: 'symlink' // Change this to 'copy' if your environment not support symlink - // } + { + from: 'src/shared', + to: '../frontend/assets/scripts/shared', + type: 'symlink' // Change this to 'copy' if your environment not support symlink + } ], // Dev server dev: { diff --git a/examples/cocos-creator-multiplayer/backend/yarn.lock b/examples/cocos-creator-multiplayer/backend/yarn.lock deleted file mode 100644 index 94d8997..0000000 --- a/examples/cocos-creator-multiplayer/backend/yarn.lock +++ /dev/null @@ -1,1302 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@blakeembrey/deque@^1.0.5": - version "1.0.5" - resolved "https://registry.npmmirror.com/@blakeembrey/deque/download/@blakeembrey/deque-1.0.5.tgz#f4fa17fc5ee18317ec01a763d355782c7b395eaf" - integrity sha1-9PoX/F7hgxfsAadj01V4LHs5Xq8= - -"@blakeembrey/template@^1.0.0": - version "1.0.0" - resolved "https://registry.npmmirror.com/@blakeembrey/template/download/@blakeembrey/template-1.0.0.tgz#bf8828bc3ae8004d97904d78f64e3cc2cd216438" - integrity sha1-v4govDroAE2XkE149k48ws0hZDg= - -"@cspotcode/source-map-consumer@0.8.0": - version "0.8.0" - resolved "https://registry.npmmirror.com/@cspotcode/source-map-consumer/download/@cspotcode/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" - integrity sha1-M79LeznBeIIWBvZpu8RHpqYpeGs= - -"@cspotcode/source-map-support@0.7.0": - version "0.7.0" - resolved "https://registry.npmmirror.com/@cspotcode/source-map-support/download/@cspotcode/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" - integrity sha1-R4mECqhZ5G0vMXNyercHxmvzRPU= - dependencies: - "@cspotcode/source-map-consumer" "0.8.0" - -"@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.npmmirror.com/@tsconfig/node10/download/@tsconfig/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - integrity sha1-weToDW+WT77LM1nEO9SLQPfK2tk= - -"@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.npmmirror.com/@tsconfig/node12/download/@tsconfig/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - integrity sha1-YsH23uLr2a6tgNw6+laBDljhoEw= - -"@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.npmmirror.com/@tsconfig/node14/download/@tsconfig/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - integrity sha1-lfLRZ/+5uNIGiwsjUwL6/U33EfI= - -"@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.npmmirror.com/@tsconfig/node16/download/@tsconfig/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - integrity sha1-Qjx3h30Fadsg4fyAiFrEEYMUAQ4= - -"@types/mocha@^8.2.3": - version "8.2.3" - resolved "https://registry.npmmirror.com/@types/mocha/download/@types/mocha-8.2.3.tgz?cache=0&sync_timestamp=1637283988208&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fmocha%2Fdownload%2F%40types%2Fmocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323" - integrity sha1-u+tV+8c/KOpt5gH7+kYT9Y14UyM= - -"@types/node@^15.14.9": - version "15.14.9" - resolved "https://registry.npmmirror.com/@types/node/download/@types/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" - integrity sha1-vEPJkMPJvnKBhou8e4/dbitXrfo= - -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.npmmirror.com/@ungap/promise-all-settled/download/@ungap/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha1-qlgEJxHW4ydd033Fl+XTHowpCkQ= - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.npmmirror.com/acorn-walk/download/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha1-dBIQ8uJCZFRQiFOi9E0KuDt/acE= - -acorn@^8.4.1: - version "8.6.0" - resolved "https://registry.npmmirror.com/acorn/download/acorn-8.6.0.tgz?cache=0&sync_timestamp=1637225522161&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Facorn%2Fdownload%2Facorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== - -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.npmmirror.com/ansi-colors/download/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha1-y7muJWv3UK8eqzRPIpqif+lLo0g= - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.npmmirror.com/ansi-escapes/download/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4= - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmmirror.com/ansi-regex/download/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha1-CCyyyJyf6GWaMRpTvWpNxTAdswQ= - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmmirror.com/ansi-styles/download/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha1-7dgDYornHATIWuegkG7a00tkiTc= - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.npmmirror.com/anymatch/download/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha1-wFV8CWrzLxBhmPT04qODU343hxY= - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^4.1.0, arg@^4.1.3: - version "4.1.3" - resolved "https://registry.npmmirror.com/arg/download/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk= - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/argparse/download/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg= - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmmirror.com/balanced-match/download/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4= - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmmirror.com/base64-js/download/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo= - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmmirror.com/binary-extensions/download/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0= - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/bl/download/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo= - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmmirror.com/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmmirror.com/braces/download/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha1-NFThpGLujVmeI23zNs2epPiv4Qc= - dependencies: - fill-range "^7.0.1" - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.npmmirror.com/browser-stdout/download/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA= - -bson@*: - version "4.6.0" - resolved "https://registry.npmmirror.com/bson/download/bson-4.6.0.tgz#15c3b39ba3940c3d915a0c44d51459f4b4fbf1b2" - integrity sha512-8jw1NU1hglS+Da1jDOUYuNcBJ4cNHCFIqzlwoFNnsTOg2R/ox0aTYcTiBN4dzRa9q7Cvy6XErh3L8ReTEb9AQQ== - dependencies: - buffer "^5.6.0" - -buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.npmmirror.com/buffer/download/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA= - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -camelcase@^6.0.0: - version "6.2.1" - resolved "https://registry.npmmirror.com/camelcase/download/camelcase-6.2.1.tgz?cache=0&sync_timestamp=1636945190375&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcamelcase%2Fdownload%2Fcamelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" - integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== - -chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.npmmirror.com/chalk/download/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha1-qsTit3NKdAhnrrFr8CqtVWoeegE= - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmmirror.com/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1634639163489&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4= - -chokidar@3.5.2, chokidar@^3.3.1, chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.npmmirror.com/chokidar/download/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha1-26OXb8rbAW9m/TZQIdkWANAcHnU= - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmmirror.com/cli-cursor/download/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha1-JkMFp65JDR0Dvwybp8kl0XU68wc= - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.6.1" - resolved "https://registry.npmmirror.com/cli-spinners/download/cli-spinners-2.6.1.tgz?cache=0&sync_timestamp=1633109592807&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha1-rclU6+KBw3pjGb+kAebdJIj/tw0= - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/cli-width/download/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha1-ovSEN6LKqaIkNueUvwceyeYc7fY= - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmmirror.com/cliui/download/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08= - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmmirror.com/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmmirror.com/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= - -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.npmmirror.com/colors/download/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha1-xQSRR51MG9rtLJztMs98fcI2D3g= - -commander@^2.19.0: - version "2.20.3" - resolved "https://registry.npmmirror.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1634886396986&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM= - -commandpost@^1.0.0: - version "1.4.0" - resolved "https://registry.npmmirror.com/commandpost/download/commandpost-1.4.0.tgz#89218012089dfc9b67a337ba162f15c88e0f1048" - integrity sha1-iSGAEgid/Jtnoze6Fi8VyI4PEEg= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmmirror.com/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmmirror.com/create-require/download/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha1-wdfo8eX2z8n/ZfnNNS03NIdWwzM= - -cross-spawn@^7.0.0, cross-spawn@^7.0.1: - version "7.0.3" - resolved "https://registry.npmmirror.com/cross-spawn/download/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha1-9zqFudXUHQRVUcF34ogtSshXKKY= - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -debug@4.3.2: - version "4.3.2" - resolved "https://registry.npmmirror.com/debug/download/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha1-8KScGKyHeeMdSgxgKd+3aHPHQos= - dependencies: - ms "2.1.2" - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/decamelize/download/decamelize-4.0.0.tgz?cache=0&sync_timestamp=1633055713394&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fdecamelize%2Fdownload%2Fdecamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha1-qkcte/Zg6xXzSU79UxyrfypwmDc= - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.npmmirror.com/defaults/download/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -diff@5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/diff/download/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha1-ftatdthZ0DB4fsNYVfWx2vMdhSs= - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmmirror.com/diff/download/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha1-YPOuy4nV+uUgwRqhnvwruYKq3n0= - -editorconfig@^0.15.0: - version "0.15.3" - resolved "https://registry.npmmirror.com/editorconfig/download/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" - integrity sha1-vvhMTnX7jcsM5c7o79UcFZmb78U= - dependencies: - commander "^2.19.0" - lru-cache "^4.1.5" - semver "^5.6.0" - sigmund "^1.0.1" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmmirror.com/emoji-regex/download/emoji-regex-8.0.0.tgz?cache=0&sync_timestamp=1632752198735&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Femoji-regex%2Fdownload%2Femoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc= - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.npmmirror.com/end-of-stream/download/end-of-stream-1.4.4.tgz?cache=0&sync_timestamp=1632469585035&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fend-of-stream%2Fdownload%2Fend-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha1-WuZKX0UFe682JuwU2gyl5LJDHrA= - dependencies: - once "^1.4.0" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmmirror.com/escalade/download/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA= - -escape-string-regexp@4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/escape-string-regexp/download/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmmirror.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/execa/download/execa-4.1.0.tgz?cache=0&sync_timestamp=1637147236741&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fexeca%2Fdownload%2Fexeca-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha1-TlSRrRVy8vF6d9OIxshXE1sihHo= - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmmirror.com/external-editor/download/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha1-ywP3QL764D6k0oPK7SdBqD8zVJU= - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.npmmirror.com/figures/download/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8= - dependencies: - escape-string-regexp "^1.0.5" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmmirror.com/fill-range/download/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha1-GRmmp8df44ssfHflGYU12prN2kA= - dependencies: - to-regex-range "^5.0.1" - -find-up@5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/find-up/download/find-up-5.0.0.tgz?cache=0&sync_timestamp=1633618659233&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ffind-up%2Fdownload%2Ffind-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw= - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmmirror.com/flat/download/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha1-jKb+MyBp/6nTJMMnGYxZglnOskE= - -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.npmmirror.com/fs-extra/download/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha1-n/YbZV3eU/s0qC34S7IUzoAuF8E= - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.npmmirror.com/fsevents/download/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro= - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmmirror.com/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.npmmirror.com/get-stream/download/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha1-SWaheV7lrOZecGxLe+txJX1uItM= - dependencies: - pump "^3.0.0" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmmirror.com/glob-parent/download/glob-parent-5.1.2.tgz?cache=0&sync_timestamp=1632953971963&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ= - dependencies: - is-glob "^4.0.1" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.npmmirror.com/glob/download/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha1-Oxk+kjPwHULQs/eClLvutBj5SpA= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.2.0: - version "7.2.0" - resolved "https://registry.npmmirror.com/glob/download/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha1-0VU1r3cy4C6Uj0xBYovZECk/YCM= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.8" - resolved "https://registry.npmmirror.com/graceful-fs/download/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha1-5BK40z9eAGWTy9PO5t+fLOu+gCo= - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.npmmirror.com/growl/download/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/has-flag/download/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= - -he@1.2.0: - version "1.2.0" - resolved "https://registry.npmmirror.com/he/download/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8= - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.npmmirror.com/human-signals/download/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha1-xbHNFPUK6uCatsWf5jujOV/k36M= - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmmirror.com/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.npmmirror.com/ieee754/download/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I= - -ignore@^5.1.4: - version "5.1.9" - resolved "https://registry.npmmirror.com/ignore/download/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" - integrity sha1-nsGly+jhRG7GDUQgBg1Dqm5zgvs= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmmirror.com/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.npmmirror.com/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= - -inquirer@^8.2.0: - version "8.2.0" - resolved "https://registry.npmmirror.com/inquirer/download/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" - integrity sha1-9E8AjdNEu/xLMAMfRdmE4DSjrDo= - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.2.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -invert-kv@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/invert-kv/download/invert-kv-3.0.1.tgz#a93c7a3d4386a1dc8325b97da9bb1620c0282523" - integrity sha1-qTx6PUOGodyDJbl9qbsWIMAoJSM= - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/is-binary-path/download/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk= - dependencies: - binary-extensions "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmmirror.com/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0= - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.npmmirror.com/is-glob/download/is-glob-4.0.3.tgz?cache=0&sync_timestamp=1632934382080&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fis-glob%2Fdownload%2Fis-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha1-ZPYeQsu7LuwgcanawLKLoeZdUIQ= - dependencies: - is-extglob "^2.1.1" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/is-interactive/download/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4= - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmmirror.com/is-number/download/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss= - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/is-plain-obj/download/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha1-ReQuN/zPH0Dajl927iFRWEDAkoc= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmmirror.com/is-stream/download/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha1-+sHj1TuXrVqdCunO8jifWBClwHc= - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmmirror.com/is-unicode-supported/download/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -js-yaml@4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/js-yaml/download/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha1-wftl+PUBeQHN0slRhkuhhFihBgI= - dependencies: - argparse "^2.0.1" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmmirror.com/jsonfile/download/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4= - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -k8w-crypto@^0.2.0: - version "0.2.0" - resolved "https://registry.npmmirror.com/k8w-crypto/download/k8w-crypto-0.2.0.tgz#00e6f3027832eeade06fd79c9c3a1ebfb76c964f" - integrity sha1-AObzAngy7q3gb9ecnDoev7dslk8= - -k8w-extend-native@^1.4.6: - version "1.4.6" - resolved "https://registry.npmmirror.com/k8w-extend-native/download/k8w-extend-native-1.4.6.tgz#d3008c60f3f85e5b2f2bd8617ff4a5bc9cf743a6" - integrity sha1-0wCMYPP4XlsvK9hhf/SlvJz3Q6Y= - dependencies: - k8w-linq-array "*" - k8w-super-date "*" - k8w-super-object "*" - -k8w-linq-array@*: - version "0.2.8" - resolved "https://registry.npmmirror.com/k8w-linq-array/download/k8w-linq-array-0.2.8.tgz#1ef4d4a2943552cbd5f633a5d9b8e831dc8abd6e" - integrity sha1-HvTUopQ1UsvV9jOl2bjoMdyKvW4= - -k8w-super-date@*: - version "0.1.3" - resolved "https://registry.npmmirror.com/k8w-super-date/download/k8w-super-date-0.1.3.tgz#4f53a39f2b74e21b11268926b710e5a7c27f8848" - integrity sha1-T1Ojnyt04hsRJokmtxDlp8J/iEg= - -k8w-super-object@*: - version "0.3.0" - resolved "https://registry.npmmirror.com/k8w-super-object/download/k8w-super-object-0.3.0.tgz#6430d14956aaf3a936fda7776b0897a04db331dd" - integrity sha1-ZDDRSVaq86k2/ad3awiXoE2zMd0= - -lcid@^3.0.0: - version "3.1.1" - resolved "https://registry.npmmirror.com/lcid/download/lcid-3.1.1.tgz#9030ec479a058fc36b5e8243ebaac8b6ac582fd0" - integrity sha1-kDDsR5oFj8NrXoJD66rItqxYL9A= - dependencies: - invert-kv "^3.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmmirror.com/locate-path/download/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha1-VTIeswn+u8WcSAHZMackUqaB0oY= - dependencies: - p-locate "^5.0.0" - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmmirror.com/lodash/download/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw= - -log-symbols@4.1.0, log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/log-symbols/download/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha1-P727lbRoOsn8eFER55LlWNSr1QM= - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.npmmirror.com/lru-cache/download/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80= - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmmirror.com/make-error/download/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha1-LrLjfqm2fEiR9oShOUeZr0hM96I= - -map-age-cleaner@^0.1.3: - version "0.1.3" - resolved "https://registry.npmmirror.com/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo= - dependencies: - p-defer "^1.0.0" - -mem@^5.0.0: - version "5.1.1" - resolved "https://registry.npmmirror.com/mem/download/mem-5.1.1.tgz#7059b67bf9ac2c924c9f1cff7155a064394adfb3" - integrity sha1-cFm2e/msLJJMnxz/cVWgZDlK37M= - dependencies: - map-age-cleaner "^0.1.3" - mimic-fn "^2.1.0" - p-is-promise "^2.1.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/merge-stream/download/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A= - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= - -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.npmmirror.com/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npmmirror.com/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI= - -mocha@^9.1.3: - version "9.1.3" - resolved "https://registry.npmmirror.com/mocha/download/mocha-9.1.3.tgz?cache=0&sync_timestamp=1634283119059&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmocha%2Fdownload%2Fmocha-9.1.3.tgz#8a623be6b323810493d8c8f6f7667440fa469fdb" - integrity sha1-imI75rMjgQST2Mj292Z0QPpGn9s= - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.2" - debug "4.3.2" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.1.7" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "3.0.4" - ms "2.1.3" - nanoid "3.1.25" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.1.5" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmmirror.com/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= - -ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmmirror.com/ms/download/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha1-V0yBOM4dK1hh8LRFedut1gxmFbI= - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npmmirror.com/mute-stream/download/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha1-FjDEKyJR/4HiooPelqVJfqkuXg0= - -nanoid@3.1.25: - version "3.1.25" - resolved "https://registry.npmmirror.com/nanoid/download/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" - integrity sha1-CcoydHwOVD8OGBS303k0d/nI4VI= - -node-json-color-stringify@^1.1.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/node-json-color-stringify/download/node-json-color-stringify-1.1.0.tgz#8bb124f913859591058026513121d6609d6ef5b7" - integrity sha1-i7Ek+ROFlZEFgCZRMSHWYJ1u9bc= - dependencies: - colors "^1.1.2" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.npmmirror.com/npm-run-path/download/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha1-t+zR5e1T2o43pV4cImnguX7XSOo= - dependencies: - path-key "^3.0.0" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmmirror.com/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onchange@^7.1.0: - version "7.1.0" - resolved "https://registry.npmmirror.com/onchange/download/onchange-7.1.0.tgz#a6f0f7733e4d47014b4cd70aa1ad36c2b4cf3804" - integrity sha1-pvD3cz5NRwFLTNcKoa02wrTPOAQ= - dependencies: - "@blakeembrey/deque" "^1.0.5" - "@blakeembrey/template" "^1.0.0" - arg "^4.1.3" - chokidar "^3.3.1" - cross-spawn "^7.0.1" - ignore "^5.1.4" - tree-kill "^1.2.2" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.npmmirror.com/onetime/download/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4= - dependencies: - mimic-fn "^2.1.0" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmmirror.com/ora/download/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha1-GyZ4Qmr0rEpQkAjl5KyemVnbnhg= - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-locale@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/os-locale/download/os-locale-5.0.0.tgz#6d26c1d95b6597c5d5317bf5fba37eccec3672e0" - integrity sha1-bSbB2Vtll8XVMXv1+6N+zOw2cuA= - dependencies: - execa "^4.0.0" - lcid "^3.0.0" - mem "^5.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/p-defer/download/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/p-is-promise/download/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4= - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmmirror.com/p-limit/download/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs= - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/p-locate/download/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ= - dependencies: - p-limit "^3.0.2" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/path-exists/download/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha1-UTvb4tO5XXdi6METfvoZXGxhtbM= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmmirror.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmmirror.com/path-key/download/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U= - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.0" - resolved "https://registry.npmmirror.com/picomatch/download/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/pseudomap/download/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ= - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/randombytes/download/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo= - dependencies: - safe-buffer "^5.1.0" - -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.npmmirror.com/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1632380409088&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg= - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmmirror.com/readdirp/download/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc= - dependencies: - picomatch "^2.2.1" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmmirror.com/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmmirror.com/restore-cursor/download/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha1-OfZ8VLOnpYzqUjbZXPADQjljH34= - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmmirror.com/run-async/download/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU= - -rxjs@^7.2.0: - version "7.4.0" - resolved "https://registry.npmmirror.com/rxjs/download/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" - integrity sha1-oSpE1+6/AW9f8kQbh/KMmlHOvGg= - dependencies: - tslib "~2.1.0" - -safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmmirror.com/safe-buffer/download/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY= - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.npmmirror.com/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= - -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.npmmirror.com/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= - -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.npmmirror.com/serialize-javascript/download/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha1-765diPRdeSQUHai1w6en5mP+/rg= - dependencies: - randombytes "^2.1.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/shebang-command/download/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo= - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/shebang-regex/download/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI= - -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/sigmund/download/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= - -signal-exit@^3.0.2: - version "3.0.6" - resolved "https://registry.npmmirror.com/signal-exit/download/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.npmmirror.com/string-width/download/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA= - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmmirror.com/string_decoder/download/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4= - dependencies: - safe-buffer "~5.2.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmmirror.com/strip-ansi/download/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk= - dependencies: - ansi-regex "^5.0.1" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/strip-final-newline/download/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0= - -strip-json-comments@3.1.1: - version "3.1.1" - resolved "https://registry.npmmirror.com/strip-json-comments/download/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY= - -supports-color@8.1.1: - version "8.1.1" - resolved "https://registry.npmmirror.com/supports-color/download/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw= - dependencies: - has-flag "^4.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmmirror.com/supports-color/download/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo= - dependencies: - has-flag "^4.0.0" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmmirror.com/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npmmirror.com/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha1-bTQzWIl2jSGyvNoKonfO07G/rfk= - dependencies: - os-tmpdir "~1.0.2" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmmirror.com/to-regex-range/download/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ= - dependencies: - is-number "^7.0.0" - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.npmmirror.com/tree-kill/download/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha1-TKCakJLIi3OnzcXooBtQeweQoMw= - -ts-node@^10.4.0: - version "10.4.0" - resolved "https://registry.npmmirror.com/ts-node/download/ts-node-10.4.0.tgz#680f88945885f4e6cf450e7f0d6223dd404895f7" - integrity sha1-aA+IlFiF9ObPRQ5/DWIj3UBIlfc= - dependencies: - "@cspotcode/source-map-support" "0.7.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - yn "3.1.1" - -tsbuffer-proto-generator@^1.6.0-dev.0: - version "1.6.0-dev.0" - resolved "https://registry.npmmirror.com/tsbuffer-proto-generator/download/tsbuffer-proto-generator-1.6.0-dev.0.tgz#1168a69a62a1bad61752e5f0d32ebbe54dc15156" - integrity sha512-z9p9gHDpR+sp+FSV5Qdjlo663ag8Yv6nrTS8BduSlvfU388RJa+JgMGhpdoDt/L0b++AWApfKUWcGW3iA/8Lmg== - dependencies: - k8w-crypto "^0.2.0" - k8w-extend-native "^1.4.6" - tsbuffer-schema "^2.0.8" - tslib "^2.3.1" - typescript "^4.4.4" - -tsbuffer-schema@^2.0.8, tsbuffer-schema@^2.1.1: - version "2.1.1" - resolved "https://registry.npmmirror.com/tsbuffer-schema/download/tsbuffer-schema-2.1.1.tgz#638a05f728a8ec5c0ed036e126f4f5b350f86cb9" - integrity sha512-c76TmiIJKHTdkByAXsLZ+Oin85y41CBOiGfrrPtBOTxh2pg80bN8wpF79N4teZA/B/u6SF47tsq2XR9Ef8/6kA== - -tsbuffer-validator@^2.0.7: - version "2.0.7" - resolved "https://registry.npmmirror.com/tsbuffer-validator/download/tsbuffer-validator-2.0.7.tgz#733a1d3074437af13acf8c26b6df0c703940d7f5" - integrity sha512-iffKO4LmbZ1l7SZsQB5oRXl58xKqwuGFEUzWzKvwT4ambLaI2jLICVTBmBIYJDrF5hI0ZJm282YmRi4QleR7SA== - dependencies: - k8w-extend-native "^1.4.6" - tsbuffer-schema "^2.0.8" - tslib "^2.3.1" - -tsbuffer@^2.1.4, tsbuffer@^2.1.5: - version "2.1.5" - resolved "https://registry.npmmirror.com/tsbuffer/download/tsbuffer-2.1.5.tgz#1bdb44ece499685a836564b3f087b261c0e2112c" - integrity sha512-xlZjiz7LgteL66orgYKn4FTBadPyEwkUrdSYztGDNcLV9Hlp8tIK3/4vhDYkHqa9n/usX8beCrp6atRwfwVDnw== - dependencies: - k8w-extend-native "^1.4.6" - tsbuffer-validator "^2.0.7" - tslib "^2.3.1" - -tslib@*, tslib@^2.3.1: - version "2.3.1" - resolved "https://registry.npmmirror.com/tslib/download/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha1-6KM1rdXOrlGqJh0ypJAVjvBC7wE= - -tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/tslib/download/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha1-2mCGDxwuyqVwOrfTm8Bba/mIuXo= - -tsrpc-base-client@^1.2.1: - version "1.2.1" - resolved "https://registry.npmmirror.com/tsrpc-base-client/download/tsrpc-base-client-1.2.1.tgz#c1f340e22096ab5c67a5f0f6ebec2efd76272492" - integrity sha512-0ZMa9bJT8jtYQMpBwWP20lAXnDEYDLk0/CSoK8S0i9eoDa6LrMca8x+nUC9zWB4zHbB1dCTATFtyYOt/LW9fYw== - dependencies: - k8w-extend-native "^1.4.6" - tsbuffer "^2.1.4" - tslib "^2.3.1" - tsrpc-proto "^1.3.9" - -tsrpc-cli@^2.2.2: - version "2.2.2" - resolved "https://registry.npmmirror.com/tsrpc-cli/download/tsrpc-cli-2.2.2.tgz#f941bb7f09c125d73f03f80b5362d76a89acf9d7" - integrity sha512-QfjmLZgXMDLBGBuaeiooJTm0L778RGjZHDNsm7z5KPGnHiOgIAZ74vCZFHZFrF+PeVvjgzzQ0dfezv4memBU1g== - dependencies: - chalk "^4.1.2" - chokidar "^3.5.2" - fs-extra "^10.0.0" - glob "^7.2.0" - inquirer "^8.2.0" - k8w-extend-native "^1.4.6" - minimist "^1.2.5" - node-json-color-stringify "^1.1.0" - ora "^5.4.1" - os-locale "^5.0.0" - ts-node "^10.4.0" - tsbuffer "^2.1.5" - tsbuffer-proto-generator "^1.6.0-dev.0" - tsbuffer-schema "^2.1.1" - tsrpc-proto "^1.3.10" - typescript "^4.5.2" - typescript-formatter "^7.2.2" - -tsrpc-proto@^1.3.10, tsrpc-proto@^1.3.9: - version "1.3.10" - resolved "https://registry.npmmirror.com/tsrpc-proto/download/tsrpc-proto-1.3.10.tgz#4a748546a0500362235a1469017e36f3f6a259b2" - integrity sha512-YavKKcOMSs80ev44gqHpSx6Z7UFQYmxItDTuaktiKQmstRbW9D/qK1b0lJltAj4ihPU06OOXePcg0CGEch6kYQ== - dependencies: - tsbuffer-schema "^2.1.1" - tslib "*" - -tsrpc@^3.1.2: - version "3.1.2" - resolved "https://registry.npmmirror.com/tsrpc/download/tsrpc-3.1.2.tgz#c12c015709c5cc141ff979056b2b246b3b7268f0" - integrity sha512-tvxndIc9G3I6GJoe/jcTE5QL6j1Zphmx84Lti+hlrgar31+5ZteJeilILSGEls7uqiV9Fa8s5xHH/3ukOc4gmQ== - dependencies: - bson "*" - chalk "^4.1.2" - tsbuffer "^2.1.4" - tsrpc-base-client "^1.2.1" - tsrpc-proto "^1.3.9" - uuid "^8.3.2" - ws "^7.5.5" - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmmirror.com/type-fest/download/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc= - -typescript-formatter@^7.2.2: - version "7.2.2" - resolved "https://registry.npmmirror.com/typescript-formatter/download/typescript-formatter-7.2.2.tgz#a147181839b7bb09c2377b072f20f6336547c00a" - integrity sha1-oUcYGDm3uwnCN3sHLyD2M2VHwAo= - dependencies: - commandpost "^1.0.0" - editorconfig "^0.15.0" - -typescript@^4.4.4, typescript@^4.5.2: - version "4.5.2" - resolved "https://registry.npmmirror.com/typescript/download/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" - integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/universalify/download/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc= - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.npmmirror.com/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.npmmirror.com/uuid/download/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha1-gNW1ztJxu5r2xEXyGhoExgbO++I= - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/wcwidth/download/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -which@2.0.2, which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmmirror.com/which/download/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE= - dependencies: - isexe "^2.0.0" - -workerpool@6.1.5: - version "6.1.5" - resolved "https://registry.npmmirror.com/workerpool/download/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" - integrity sha1-D3zwdrYhX9fh2pA/9vIt3RiGtYE= - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmmirror.com/wrap-ansi/download/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM= - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmmirror.com/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@^7.5.5: - version "7.5.6" - resolved "https://registry.npmmirror.com/ws/download/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" - integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmmirror.com/y18n/download/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU= - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.npmmirror.com/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.npmmirror.com/yargs-parser/download/yargs-parser-20.2.4.tgz?cache=0&sync_timestamp=1637031026741&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fyargs-parser%2Fdownload%2Fyargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha1-tCiQ8UVmeW+Fro46JSkNIF8VSlQ= - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.npmmirror.com/yargs-parser/download/yargs-parser-20.2.9.tgz?cache=0&sync_timestamp=1637031026741&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fyargs-parser%2Fdownload%2Fyargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha1-LrfcOwKJcY/ClfNidThFxBoMlO4= - -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/yargs-unparser/download/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha1-8TH5ImkRrl2a04xDL+gJNmwjJes= - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@16.2.0: - version "16.2.0" - resolved "https://registry.npmmirror.com/yargs/download/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha1-HIK/D2tqZur85+8w43b0mhJHf2Y= - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmmirror.com/yn/download/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha1-HodAGgnXZ8HV6rJqbkwYUYLS61A= - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmmirror.com/yocto-queue/download/yocto-queue-0.1.0.tgz?cache=0&sync_timestamp=1632753523520&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fyocto-queue%2Fdownload%2Fyocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha1-ApTrPe4FAo0x7hpfosVWpqrxChs= diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d.meta new file mode 100644 index 0000000..d69ad17 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "5ee75bff-6095-4266-a58b-9e215bf1e0a9", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/map.meta new file mode 100644 index 0000000..04b8f79 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "b0e73381-3db4-43a8-8dc3-7b6ba4dfcaf5", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX new file mode 100644 index 0000000..c4e3b47 Binary files /dev/null and b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX differ diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX.meta new file mode 100644 index 0000000..5287e4e --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX.meta @@ -0,0 +1,124 @@ +{ + "ver": "2.1.4", + "importer": "fbx", + "imported": true, + "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f", + "files": [], + "subMetas": { + "f6845": { + "ver": "1.1.0", + "importer": "gltf-mesh", + "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@f6845", + "imported": true, + "files": [ + ".bin", + ".json" + ], + "subMetas": {}, + "userData": { + "gltfIndex": 0 + }, + "displayName": "", + "id": "f6845", + "name": "newMap01.mesh" + }, + "3500c": { + "ver": "1.0.3", + "importer": "gltf-embeded-image", + "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@3500c", + "imported": true, + "files": [ + ".jpg", + ".json" + ], + "subMetas": {}, + "userData": { + "gltfIndex": 0 + }, + "displayName": "", + "id": "3500c", + "name": "newMap01.jpg.image" + }, + "bfae8": { + "ver": "1.0.21", + "importer": "texture", + "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@bfae8", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "wrapModeS": "repeat", + "wrapModeT": "repeat", + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "premultiplyAlpha": false, + "anisotropy": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "c26a63b9-5039-47ae-b027-ef2bce881f6f@3500c" + }, + "displayName": "", + "id": "bfae8", + "name": "贴图 #3.texture" + }, + "7ff75": { + "ver": "1.0.14", + "importer": "gltf-material", + "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@7ff75", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "gltfIndex": 0 + }, + "displayName": "", + "id": "7ff75", + "name": "Material #27.material" + }, + "fc11b": { + "importer": "gltf-scene", + "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@fc11b", + "displayName": "", + "id": "fc11b", + "name": "newMap01.prefab", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.0.12", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + } + }, + "userData": { + "imageMetas": [ + { + "name": "newMap01.jpg", + "uri": "c26a63b9-5039-47ae-b027-ef2bce881f6f@3500c" + } + ], + "redirect": "c26a63b9-5039-47ae-b027-ef2bce881f6f@fc11b", + "assetFinder": { + "meshes": [ + "c26a63b9-5039-47ae-b027-ef2bce881f6f@f6845" + ], + "skeletons": [], + "textures": [ + "c26a63b9-5039-47ae-b027-ef2bce881f6f@bfae8" + ], + "materials": [ + "c26a63b9-5039-47ae-b027-ef2bce881f6f@7ff75" + ], + "scenes": [ + "c26a63b9-5039-47ae-b027-ef2bce881f6f@fc11b" + ] + }, + "legacyFbxImporter": true + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg new file mode 100644 index 0000000..f5a6b65 Binary files /dev/null and b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg differ diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg.meta new file mode 100644 index 0000000..59e0cf5 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg.meta @@ -0,0 +1,41 @@ +{ + "ver": "1.0.21", + "importer": "image", + "imported": true, + "uuid": "27e1fcb7-5016-4252-8c43-ac9c1c97308e", + "files": [ + ".jpg", + ".json" + ], + "subMetas": { + "6c48a": { + "ver": "1.0.21", + "importer": "texture", + "uuid": "27e1fcb7-5016-4252-8c43-ac9c1c97308e@6c48a", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "wrapModeS": "repeat", + "wrapModeT": "repeat", + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "premultiplyAlpha": false, + "anisotropy": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "27e1fcb7-5016-4252-8c43-ac9c1c97308e" + }, + "displayName": "newMap01", + "id": "6c48a", + "name": "texture" + } + }, + "userData": { + "type": "texture", + "redirect": "27e1fcb7-5016-4252-8c43-ac9c1c97308e@6c48a", + "hasAlpha": false + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl new file mode 100644 index 0000000..a2ea13c --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl @@ -0,0 +1,55 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_ALBEDO_MAP": true, + "ROUGHNESS_CHANNEL": "g", + "METALLIC_CHANNEL": "b", + "OCCLUSION_CHANNEL": "r" + } + ], + "_states": [ + { + "blendState": { + "targets": [ + {} + ] + }, + "depthStencilState": {}, + "rasterizerState": {} + } + ], + "_props": [ + { + "albedoScale": { + "__type__": "cc.Vec4", + "x": 1, + "y": 1, + "z": 1, + "w": 1 + }, + "pbrScale": { + "__type__": "cc.Vec4", + "x": 1, + "y": 0.242535620927811, + "z": 0.400000005960464, + "w": 1 + }, + "alphaThreshold": 1, + "normalStrenth": 1, + "mainTexture": { + "__uuid__": "27e1fcb7-5016-4252-8c43-ac9c1c97308e@6c48a" + }, + "occlusion": 1, + "roughness": 0.242535620927811, + "metallic": 0.400000005960464 + } + ] +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl.meta new file mode 100644 index 0000000..36d1e1c --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "b7d6d595-6cd1-43c6-8bc7-3a92644870b9", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier.meta new file mode 100644 index 0000000..4058be8 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "b62bf789-093f-4583-8530-86e00cd8a2a6", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/blue.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/blue.mtl new file mode 100644 index 0000000..85eb1c6 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/blue.mtl @@ -0,0 +1,48 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319", + "__expectedType__": "cc.EffectAsset" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_INSTANCING": true, + "USE_ALBEDO_MAP": true + }, + {}, + {}, + {} + ], + "_states": [ + { + "rasterizerState": {}, + "depthStencilState": {}, + "blendState": { + "targets": [ + {} + ] + } + }, + {}, + {}, + {} + ], + "_props": [ + { + "alphaThreshold": 0, + "roughness": 0.70710676908493, + "metallic": 0.400000005960464, + "mainTexture": { + "__uuid__": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa@6c48a", + "__expectedType__": "cc.Texture2D" + } + }, + {}, + {}, + {} + ] +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/blue.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/blue.mtl.meta new file mode 100644 index 0000000..7e4e674 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/blue.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "225b969b-eb6a-4489-a5a5-08efbcf38b0e", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/red.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/red.mtl new file mode 100644 index 0000000..826c11e --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/red.mtl @@ -0,0 +1,48 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319", + "__expectedType__": "cc.EffectAsset" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_INSTANCING": true, + "USE_ALBEDO_MAP": true + }, + {}, + {}, + {} + ], + "_states": [ + { + "rasterizerState": {}, + "depthStencilState": {}, + "blendState": { + "targets": [ + {} + ] + } + }, + {}, + {}, + {} + ], + "_props": [ + { + "alphaThreshold": 0, + "roughness": 0.70710676908493, + "metallic": 0.400000005960464, + "mainTexture": { + "__uuid__": "f35bcb71-cd72-443c-94a9-5482c2d63d66@6c48a", + "__expectedType__": "cc.Texture2D" + } + }, + {}, + {}, + {} + ] +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/red.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/red.mtl.meta new file mode 100644 index 0000000..9602215 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/red.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "411ae6be-9581-422b-9425-36c8e71651cb", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX new file mode 100644 index 0000000..3774d44 Binary files /dev/null and b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX differ diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX.meta new file mode 100644 index 0000000..6be8c4b --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX.meta @@ -0,0 +1,312 @@ +{ + "ver": "2.1.4", + "importer": "fbx", + "imported": true, + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c", + "files": [ + "__original-animation-0.cconb" + ], + "subMetas": { + "95953": { + "importer": "gltf-material", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@95953", + "displayName": "", + "id": "95953", + "name": "Material #7.material", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.0.14", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "6868c": { + "importer": "gltf-mesh", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@6868c", + "displayName": "", + "id": "6868c", + "name": "soldier01.mesh", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.1.0", + "imported": true, + "files": [ + ".bin", + ".json" + ], + "subMetas": {} + }, + "1f586": { + "importer": "gltf-animation", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@1f586", + "displayName": "", + "id": "1f586", + "name": "idle.animation", + "userData": { + "gltfIndex": 0, + "wrapMode": 2, + "sample": 30, + "span": { + "from": 0, + "to": 0.8 + }, + "events": [] + }, + "ver": "1.0.16", + "imported": true, + "files": [ + ".cconb" + ], + "subMetas": {} + }, + "cf5ee": { + "importer": "gltf-animation", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@cf5ee", + "displayName": "", + "id": "cf5ee", + "name": "run.animation", + "userData": { + "gltfIndex": 0, + "wrapMode": 2, + "sample": 60, + "span": { + "from": 0.8, + "to": 1.5 + }, + "events": [] + }, + "ver": "1.0.16", + "imported": true, + "files": [ + ".cconb" + ], + "subMetas": {} + }, + "989ed": { + "importer": "gltf-animation", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@989ed", + "displayName": "", + "id": "989ed", + "name": "attack.animation", + "userData": { + "gltfIndex": 0, + "wrapMode": 2, + "sample": 60, + "span": { + "from": 1.5333333333333334, + "to": 2.2 + }, + "events": [ + { + "frame": 0.23333333333333334, + "func": "", + "params": [] + }, + { + "frame": 0.23333333333333334, + "func": "triggerEffect", + "params": [] + } + ], + "speed": 1 + }, + "ver": "1.0.16", + "imported": true, + "files": [ + ".cconb" + ], + "subMetas": {} + }, + "ee525": { + "importer": "gltf-animation", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@ee525", + "displayName": "", + "id": "ee525", + "name": "win.animation", + "userData": { + "gltfIndex": 0, + "wrapMode": 2, + "sample": 30, + "span": { + "from": 2.2, + "to": 2.8 + }, + "events": [] + }, + "ver": "1.0.16", + "imported": true, + "files": [ + ".cconb" + ], + "subMetas": {} + }, + "5b2e9": { + "importer": "gltf-animation", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@5b2e9", + "displayName": "", + "id": "5b2e9", + "name": "died.animation", + "userData": { + "gltfIndex": 0, + "wrapMode": 2, + "sample": 30, + "span": { + "from": 2.8, + "to": 4.333333333333333 + }, + "events": [] + }, + "ver": "1.0.16", + "imported": true, + "files": [ + ".cconb" + ], + "subMetas": {} + }, + "438fe": { + "importer": "gltf-skeleton", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@438fe", + "displayName": "", + "id": "438fe", + "name": "UnnamedSkeleton.skeleton", + "userData": { + "gltfIndex": 0, + "jointsLength": 6 + }, + "ver": "1.0.1", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "fa1d4": { + "importer": "gltf-embeded-image", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@fa1d4", + "displayName": "", + "id": "fa1d4", + "name": "soldier01.jpg.image", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.0.3", + "imported": true, + "files": [ + ".jpg", + ".json" + ], + "subMetas": {} + }, + "291d4": { + "importer": "texture", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@291d4", + "displayName": "", + "id": "291d4", + "name": "贴图 #6.texture", + "userData": { + "wrapModeS": "repeat", + "wrapModeT": "repeat", + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "anisotropy": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "57d4c4ef-3199-4596-bf79-7c065964ca9c@fa1d4" + }, + "ver": "1.0.21", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "33dba": { + "importer": "gltf-scene", + "uuid": "57d4c4ef-3199-4596-bf79-7c065964ca9c@33dba", + "displayName": "", + "id": "33dba", + "name": "soldier01.prefab", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.0.12", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + } + }, + "userData": { + "imageMetas": [ + { + "name": "soldier01.jpg", + "uri": "57d4c4ef-3199-4596-bf79-7c065964ca9c@fa1d4" + } + ], + "animationImportSettings": [ + { + "name": "Take 001", + "duration": 4.666666507720947, + "fps": 30, + "splits": [ + { + "name": "idle", + "from": 0, + "to": 0.8, + "wrapMode": 2 + }, + { + "name": "run", + "from": 0.8, + "to": 1.5, + "fps": 60, + "wrapMode": 2 + }, + { + "name": "attack", + "from": 1.5333333333333334, + "to": 2.2, + "fps": 60, + "wrapMode": 2 + }, + { + "name": "win", + "from": 2.2, + "to": 2.8, + "wrapMode": 2 + }, + { + "name": "died", + "from": 2.8, + "to": 4.333333333333333, + "wrapMode": 2 + } + ] + } + ], + "redirect": "57d4c4ef-3199-4596-bf79-7c065964ca9c@33dba", + "assetFinder": { + "meshes": [ + "57d4c4ef-3199-4596-bf79-7c065964ca9c@6868c" + ], + "skeletons": [ + "57d4c4ef-3199-4596-bf79-7c065964ca9c@438fe" + ], + "textures": [ + "57d4c4ef-3199-4596-bf79-7c065964ca9c@291d4" + ], + "materials": [ + "57d4c4ef-3199-4596-bf79-7c065964ca9c@95953" + ], + "scenes": [ + "57d4c4ef-3199-4596-bf79-7c065964ca9c@33dba" + ] + }, + "legacyFbxImporter": true + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg new file mode 100644 index 0000000..73a07f3 Binary files /dev/null and b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg differ diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg.meta new file mode 100644 index 0000000..7007391 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg.meta @@ -0,0 +1,41 @@ +{ + "ver": "1.0.21", + "importer": "image", + "imported": true, + "uuid": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa", + "files": [ + ".jpg", + ".json" + ], + "subMetas": { + "6c48a": { + "ver": "1.0.21", + "importer": "texture", + "uuid": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa@6c48a", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "wrapModeS": "repeat", + "wrapModeT": "repeat", + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "premultiplyAlpha": false, + "anisotropy": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa" + }, + "displayName": "soldier01", + "id": "6c48a", + "name": "texture" + } + }, + "userData": { + "type": "texture", + "redirect": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa@6c48a", + "hasAlpha": false + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg new file mode 100644 index 0000000..0ad1fdd Binary files /dev/null and b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg differ diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg.meta new file mode 100644 index 0000000..5fbe7f7 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg.meta @@ -0,0 +1,41 @@ +{ + "ver": "1.0.21", + "importer": "image", + "imported": true, + "uuid": "f35bcb71-cd72-443c-94a9-5482c2d63d66", + "files": [ + ".jpg", + ".json" + ], + "subMetas": { + "6c48a": { + "ver": "1.0.21", + "importer": "texture", + "uuid": "f35bcb71-cd72-443c-94a9-5482c2d63d66@6c48a", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "wrapModeS": "repeat", + "wrapModeT": "repeat", + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "premultiplyAlpha": false, + "anisotropy": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "f35bcb71-cd72-443c-94a9-5482c2d63d66" + }, + "displayName": "soldier02", + "id": "6c48a", + "name": "texture" + } + }, + "userData": { + "type": "texture", + "redirect": "f35bcb71-cd72-443c-94a9-5482c2d63d66@6c48a", + "hasAlpha": false + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg new file mode 100644 index 0000000..adfebcd Binary files /dev/null and b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg differ diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg.meta new file mode 100644 index 0000000..9f25815 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg.meta @@ -0,0 +1,41 @@ +{ + "ver": "1.0.21", + "importer": "image", + "imported": true, + "uuid": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88", + "files": [ + ".jpg", + ".json" + ], + "subMetas": { + "6c48a": { + "ver": "1.0.21", + "importer": "texture", + "uuid": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88@6c48a", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "wrapModeS": "repeat", + "wrapModeT": "repeat", + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "premultiplyAlpha": false, + "anisotropy": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88" + }, + "displayName": "soldier03", + "id": "6c48a", + "name": "texture" + } + }, + "userData": { + "type": "texture", + "redirect": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88@6c48a", + "hasAlpha": false + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl new file mode 100644 index 0000000..9b85b72 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl @@ -0,0 +1,37 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_SKINNING": 2, + "USE_ALBEDO_MAP": true + } + ], + "_states": [ + { + "blendState": { + "targets": [ + {} + ] + }, + "depthStencilState": {}, + "rasterizerState": {} + } + ], + "_props": [ + { + "alphaThreshold": 0, + "roughness": 0.70710676908493, + "metallic": 0.400000005960464, + "mainTexture": { + "__uuid__": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88@6c48a" + } + } + ] +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl.meta new file mode 100644 index 0000000..a407fcd --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "5620e8a2-444d-4e80-9eb8-f6f54bd4d3cf", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/env.ts b/examples/cocos-creator-multiplayer/frontend/assets/env.ts new file mode 100644 index 0000000..4920adc --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/env.ts @@ -0,0 +1 @@ +import 'k8w-extend-native'; diff --git a/examples/cocos-creator-multiplayer/frontend/assets/env.ts.meta b/examples/cocos-creator-multiplayer/frontend/assets/env.ts.meta new file mode 100644 index 0000000..85236cc --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/env.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.22", + "importer": "typescript", + "imported": true, + "uuid": "0688c02f-a4df-4cc9-8622-d4fce5561390", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/migrate-canvas.ts b/examples/cocos-creator-multiplayer/frontend/assets/migrate-canvas.ts new file mode 100644 index 0000000..ac01940 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/migrate-canvas.ts @@ -0,0 +1,88 @@ +/** + * UI 的渲染在 v3.0 变为使用 node.layer 来判断可见性,为了保证老版本项目升级后表现一致, + * Creator 会在运行时动态分配一个未使用的 layer 给常驻节点的 UI,避免常驻节点的 UI 与场景中 + * 的其他 UI 的 layer 发生冲突,当你确定不会发生冲突时,你可以移除此脚本. + * + * UI rendering has changed in v3.0 to use node.layer to determine visibility. + * To ensure consistent performance after upgrading old projects. + * Creator will dynamically assign an unused layer to the UI node in the persist node at + * runtime to avoid conflicts between the layer of UI in the persist node and the + * layer of other UI in the scene. You can remove this script when you + * are sure there is no conflict + */ + +import { _decorator, Node, director, Director, game, BaseNode, Canvas, Camera } from 'cc'; +import { EDITOR } from 'cc/env'; + +const customLayerMask = 0x000fffff; +const builtinLayerMask = 0xfff00000; + +director.on(Director.EVENT_AFTER_SCENE_LAUNCH, () => { + const roots = director.getScene()?.children as BaseNode[]; + let allCanvases = director.getScene()?.getComponentsInChildren(Canvas) as Canvas[]; + if (allCanvases.length <= 1) return; + allCanvases = allCanvases.filter(x => !!x.cameraComponent); + + let allCameras = director.getScene()?.getComponentsInChildren(Camera) as Camera[]; + let usedLayer = 0; + allCameras.forEach(x => usedLayer |= (x.visibility & customLayerMask)); + + const persistCanvas: Canvas[] = []; + for (let i = 0, l = roots.length; i < l; i++) { + const root = roots[i]; + if (!game.isPersistRootNode(root)) continue; + const canvases = root.getComponentsInChildren(Canvas); + if (canvases.length === 0) continue; + persistCanvas.push(...canvases.filter(x => !!x.cameraComponent)); + } + + persistCanvas.forEach((val) => { + const isLayerCollided = allCanvases.find(x => x !== val && (x.cameraComponent!.visibility & val.cameraComponent!.visibility & customLayerMask)); + if (isLayerCollided) { + const availableLayers = ~usedLayer; + const lastAvailableLayer = availableLayers & ~(availableLayers - 1); + val.cameraComponent!.visibility = lastAvailableLayer | (val.cameraComponent!.visibility & builtinLayerMask); + setChildrenLayer(val.node, lastAvailableLayer); + usedLayer |= availableLayers; + } + }); +}); + +function setChildrenLayer (node: Node, layer: number) { + for (let i = 0, l = node.children.length; i < l; i++) { + node.children[i].layer = layer; + setChildrenLayer(node.children[i], layer); + } +} + +let setParentEngine = Node.prototype.setParent; + +if(!EDITOR) { + Node.prototype.setParent = function(value, keepWorldTransform) { + setParentEngine.call(this, value, keepWorldTransform); + if (!value) return; + // find canvas + let layer = getCanvasCameraLayer(this); + if (layer) { + this.layer = layer; + setChildrenLayer(this, layer); + } + } +} + +function getCanvasCameraLayer (node: Node) { + let layer = 0; + let canvas = node.getComponent(Canvas); + if (canvas && canvas.cameraComponent) { + if (canvas.cameraComponent.visibility & canvas.node.layer) { + layer = canvas.node.layer; + } else { + layer = canvas.cameraComponent.visibility & ~(canvas.cameraComponent.visibility - 1); + } + return layer; + } + if (node.parent) { + layer = getCanvasCameraLayer(node.parent); + } + return layer; +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/frontend/assets/migrate-canvas.ts.meta b/examples/cocos-creator-multiplayer/frontend/assets/migrate-canvas.ts.meta new file mode 100644 index 0000000..41d440f --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/migrate-canvas.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.22", + "importer": "typescript", + "imported": true, + "uuid": "3f14173e-54a7-423d-9c22-0efe5a1c634f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/prefabs.meta b/examples/cocos-creator-multiplayer/frontend/assets/prefabs.meta new file mode 100644 index 0000000..a4582ae --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/prefabs.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "0b89f62b-f696-4a77-809d-aa85c3178bf2", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick.meta b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick.meta new file mode 100644 index 0000000..dce83f5 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "dfd416a2-ba3c-49d2-8200-2ed5fcd41292", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.prefab b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.prefab new file mode 100644 index 0000000..d283edc --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.prefab @@ -0,0 +1,511 @@ +[ + { + "__type__": "cc.Prefab", + "_name": "", + "_objFlags": 0, + "_native": "", + "data": { + "__id__": 1 + }, + "optimizationPolicy": 0, + "asyncLoadAssets": false + }, + { + "__type__": "cc.Node", + "_name": "Joystick", + "_objFlags": 0, + "_parent": null, + "_children": [ + { + "__id__": 2 + } + ], + "_active": true, + "_components": [ + { + "__id__": 18 + }, + { + "__id__": 20 + }, + { + "__id__": 22 + } + ], + "_prefab": { + "__id__": 24 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": -480, + "y": -320, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 524288, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "disk", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 3 + }, + { + "__id__": 9 + } + ], + "_active": true, + "_components": [ + { + "__id__": 15 + } + ], + "_prefab": { + "__id__": 17 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 299.003, + "y": 440.043, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 524288, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "base", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 4 + }, + { + "__id__": 6 + } + ], + "_prefab": { + "__id__": 8 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 524288, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 3 + }, + "_enabled": true, + "__prefab": { + "__id__": 5 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 256, + "height": 256 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "daHOQp4LdBFoenok+XY1Zo" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 3 + }, + "_enabled": true, + "__prefab": { + "__id__": 7 + }, + "_visFlags": 0, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 40 + }, + "_spriteFrame": { + "__uuid__": "521ad970-c5d9-4d2d-af6f-cc08f94230f8@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 0, + "_fillType": 0, + "_sizeMode": 1, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "b4yQwCjWpMRZUnITwiaJW8" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "99DpUW4QRIJ4zS/1nooi0x" + }, + { + "__type__": "cc.Node", + "_name": "stick", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 10 + }, + { + "__id__": 12 + } + ], + "_prefab": { + "__id__": 14 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 0.238, + "y": 0.238, + "z": 0.238 + }, + "_layer": 524288, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 9 + }, + "_enabled": true, + "__prefab": { + "__id__": 11 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 256, + "height": 256 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "7fgMfPZ3pIZ72y8mESbyAp" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 9 + }, + "_enabled": true, + "__prefab": { + "__id__": 13 + }, + "_visFlags": 0, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 200 + }, + "_spriteFrame": { + "__uuid__": "521ad970-c5d9-4d2d-af6f-cc08f94230f8@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 0, + "_fillType": 0, + "_sizeMode": 1, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "d8pnWua/5KaYBq0ggPBL1Y" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "ceQ/tc9/lBPIsW1Hwyb91a" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": { + "__id__": 16 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 256, + "height": 256 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "f8l1UBgYFPm7f/KMYDjdJo" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "d0wZ2A2kRHRL52JXTqW2TD" + }, + { + "__type__": "cc.UITransform", + "_name": "Joystick", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 19 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 960, + "height": 640 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "03ZUWxyGxEKrRNfAAZAjfl" + }, + { + "__type__": "cc.Widget", + "_name": "Joystick", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 21 + }, + "_alignFlags": 45, + "_target": null, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_horizontalCenter": 0, + "_verticalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 40, + "_originalHeight": 36, + "_alignMode": 2, + "_lockFlags": 0, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "dfw8DiwVhOMqNxW3/MvA/u" + }, + { + "__type__": "ccc7fTjElVEQqB07I1JvC+N", + "_name": "Joystick", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 23 + }, + "radius": 128, + "disk": { + "__id__": 2 + }, + "stick": { + "__id__": 9 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "b6/h8KXgpAI6dQQRwusaRr" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "25fHuwytBN2qk6dH5oVJvO" + } +] \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.prefab.meta b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.prefab.meta new file mode 100644 index 0000000..7a76768 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.prefab.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.32", + "importer": "prefab", + "imported": true, + "uuid": "0363f7f8-204e-410e-ade0-03adca6ea835", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "syncNodeName": "Joystick" + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.ts b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.ts new file mode 100644 index 0000000..adda17b --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.ts @@ -0,0 +1,90 @@ +import { _decorator, Component, Node, EventTouch, tween, Vec2, Vec3 } from 'cc'; +import { MathUtil } from '../../../scripts/models/MathUtil'; +const { ccclass, property } = _decorator; + +const v3_1 = new Vec3; +const v3_2 = new Vec3; + +export interface JoystickOptions { + onOperate: (output: JoystickOutput) => void, + onOperateEnd: () => void, +} + +export interface JoystickOutput { + // 0 ~ 1 + x: number, + // 0 ~ 1 + y: number +} + +@ccclass('Joystick') +export class Joystick extends Component { + + @property + radius: number = 128; + + @property(Node) + disk: Node = null as any; + + @property(Node) + stick: Node = null as any; + + + private _options!: JoystickOptions; + public get options(): JoystickOptions { + return this._options; + } + public set options(v: JoystickOptions) { + this._options = v; + } + + + onLoad() { + this.node.on(Node.EventType.TOUCH_START, this.onTouch, this); + this.node.on(Node.EventType.TOUCH_MOVE, this.onTouch, this); + this.node.on(Node.EventType.TOUCH_END, this.onTouchEnd, this); + + this.disk.active = false; + } + + private _touchStartPos?: Vec2; + onTouch(e: EventTouch) { + this.disk.active = true; + let loc = e.touch.getUILocation(); + + if (!this._touchStartPos) { + this._touchStartPos = loc.clone(); + this.disk.setPosition(loc.x, loc.y, 0); + } + + let diskPos = this.disk.position; + + let stickPos: Vec3 = v3_1.set(loc.x - diskPos.x, loc.y - diskPos.y, 0); + let length = stickPos.length(); + if (length === 0) { + this.stick.setPosition(0, 0, 0); + return; + } + let newLength = MathUtil.limit(length, 0, this.radius); + stickPos.multiplyScalar(newLength / length); + + // if (length > newLength) { + // let newDiskPos = this.disk.position.clone().add(stickPos); + // this.disk.setPosition(newDiskPos); + // } + this.stick.setPosition(stickPos); + + stickPos.normalize(); + this.options?.onOperate({ + x: stickPos.x || 0, + y: stickPos.y || 0 + }) + } + + onTouchEnd(e: EventTouch) { + this.disk.active = false; + this._touchStartPos = undefined; + this.options?.onOperateEnd(); + } + +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.ts.meta b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.ts.meta new file mode 100644 index 0000000..ba14ee9 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Joystick/Joystick.ts.meta @@ -0,0 +1,13 @@ +{ + "ver": "4.0.22", + "importer": "typescript", + "imported": true, + "uuid": "ccc7f4e3-1255-4442-a074-ec8d49bc2f8d", + "files": [], + "subMetas": {}, + "userData": { + "importAsPlugin": false, + "moduleId": "project:///assets/scenes/GameScene/scripts/Joystick.js", + "simulateGlobals": [] + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Soldier.meta b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Soldier.meta new file mode 100644 index 0000000..b101e75 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/prefabs/Soldier.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "ceb8a41c-a457-4ec0-b9a3-f02af963096e", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scenes.meta b/examples/cocos-creator-multiplayer/frontend/assets/scenes.meta new file mode 100644 index 0000000..5302778 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scenes.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "b27b7c33-0d34-4728-84cb-cd4dae339cbd", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene.meta b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene.meta new file mode 100644 index 0000000..d4eaab1 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "c9e83364-8449-4378-8949-7580d6c2e980", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene new file mode 100644 index 0000000..9800ca9 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene @@ -0,0 +1,1128 @@ +[ + { + "__type__": "cc.SceneAsset", + "_name": "", + "_objFlags": 0, + "_native": "", + "scene": { + "__id__": 1 + } + }, + { + "__type__": "cc.Scene", + "_name": "GameScene", + "_objFlags": 0, + "_parent": null, + "_children": [ + { + "__id__": 2 + }, + { + "__id__": 5 + }, + { + "__id__": 7 + }, + { + "__id__": 15 + } + ], + "_active": true, + "_components": [], + "_prefab": null, + "autoReleaseAssets": false, + "_globals": { + "__id__": 33 + }, + "_id": "0d3889f6-dc9c-424e-b8cd-6fa78d63af15" + }, + { + "__type__": "cc.Node", + "_name": "Main Light", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 3 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": -0.24999999999999997, + "y": -0.24999999999999997, + "z": -0.06698729810778066, + "w": 0.9330127018922194 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -30, + "y": -30, + "z": 0 + }, + "_id": "c0y6F5f+pAvI805TdmxIjx" + }, + { + "__type__": "cc.DirectionalLight", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": null, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_useColorTemperature": false, + "_colorTemperature": 6550, + "_staticSettings": { + "__id__": 4 + }, + "_illuminance": 100000, + "_id": "597uMYCbhEtJQc0ffJlcgA" + }, + { + "__type__": "cc.StaticLightSettings", + "_baked": false, + "_editorOnly": false, + "_bakeable": false, + "_castShadow": false + }, + { + "__type__": "cc.Node", + "_name": "Main Camera", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 6 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": -10, + "y": 10, + "z": 10 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": -0.27781593346944056, + "y": -0.36497167621709875, + "z": -0.11507512748638377, + "w": 0.8811195706053617 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -35, + "y": -45, + "z": 0 + }, + "_id": "c9DMICJLFO5IeO07EPon7U" + }, + { + "__type__": "cc.Camera", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 5 + }, + "_enabled": true, + "__prefab": null, + "_projection": 1, + "_priority": 0, + "_fov": 45, + "_fovAxis": 0, + "_orthoHeight": 10, + "_near": 1, + "_far": 1000, + "_color": { + "__type__": "cc.Color", + "r": 51, + "g": 51, + "b": 51, + "a": 255 + }, + "_depth": 1, + "_stencil": 0, + "_clearFlags": 7, + "_rect": { + "__type__": "cc.Rect", + "x": 0, + "y": 0, + "width": 1, + "height": 1 + }, + "_aperture": 19, + "_shutter": 7, + "_iso": 0, + "_screenScale": 1, + "_visibility": 1822425087, + "_targetTexture": null, + "_id": "7dWQTpwS5LrIHnc1zAPUtf" + }, + { + "__type__": "cc.Node", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_prefab": { + "__id__": 8 + } + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 7 + }, + "asset": { + "__uuid__": "c26a63b9-5039-47ae-b027-ef2bce881f6f@fc11b", + "__expectedType__": "cc.Prefab" + }, + "fileId": "2cyg9D4KRTnaWvFuyUcwrn", + "instance": { + "__id__": 9 + } + }, + { + "__type__": "cc.PrefabInstance", + "fileId": "b9eQ3gXWlMR4eNhYoDs3g8", + "mountedChildren": [], + "mountedComponents": [], + "propertyOverrides": [ + { + "__id__": 10 + }, + { + "__id__": 12 + }, + { + "__id__": 13 + }, + { + "__id__": 14 + } + ], + "removedComponents": [] + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 11 + }, + "propertyPath": [ + "_name" + ], + "value": "Map" + }, + { + "__type__": "cc.TargetInfo", + "localID": [ + "2cyg9D4KRTnaWvFuyUcwrn" + ] + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 11 + }, + "propertyPath": [ + "_lpos" + ], + "value": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 11 + }, + "propertyPath": [ + "_lrot" + ], + "value": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + } + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 11 + }, + "propertyPath": [ + "_euler" + ], + "value": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "__type__": "cc.Node", + "_name": "players", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 16 + } + ], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "e9eZdnhcBMlJbRHxB2KaB4" + }, + { + "__type__": "cc.Node", + "_name": "Soldier", + "_objFlags": 0, + "_parent": { + "__id__": 15 + }, + "_children": [ + { + "__id__": 17 + } + ], + "_active": true, + "_components": [ + { + "__id__": 32 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0.941, + "y": 0, + "z": -0.76 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "ebyWCPQhZMyLIE8q8DzQ3L" + }, + { + "__type__": "cc.Node", + "_name": "RootNode", + "_objFlags": 0, + "_parent": { + "__id__": 16 + }, + "_children": [ + { + "__id__": 18 + }, + { + "__id__": 25 + }, + { + "__id__": 26 + }, + { + "__id__": 27 + }, + { + "__id__": 30 + }, + { + "__id__": 31 + } + ], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "b1SPz5a7NMd4JcacHxKGsn" + }, + { + "__type__": "cc.Node", + "_name": "Dummy01", + "_objFlags": 0, + "_parent": { + "__id__": 17 + }, + "_children": [ + { + "__id__": 19 + }, + { + "__id__": 21 + }, + { + "__id__": 22 + }, + { + "__id__": 23 + }, + { + "__id__": 24 + } + ], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 4.31247441140831e-32, + "z": 2.27106511374586e-9 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 8.146034247147302e-8, + "y": 0, + "z": 0, + "w": 0.9999999999999967 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 2.53999996185303, + "y": 2.53999996185303, + "z": 2.53999996185303 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0.000009334667642611398, + "y": 0, + "z": 0 + }, + "_id": "63UEIV8jVH6JFCmENPuLUg" + }, + { + "__type__": "cc.Node", + "_name": "Body", + "_objFlags": 0, + "_parent": { + "__id__": 18 + }, + "_children": [ + { + "__id__": 20 + } + ], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": -0.000466376630356535, + "y": 0.0555356666445732, + "z": -4.76837147544984e-9 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0.0000013147252531426701, + "y": 5.898311123805427e-7, + "z": 0.7037748466382776, + "w": 0.7104230888964633 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 0.256809949874878, + "y": 0.439815044403076, + "z": 0.0870304778218269 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0.006324434041980695, + "y": -0.006170109051330866, + "z": 89.46130112452344 + }, + "_id": "c3Kc0wgrVLqLDbm0JqXiO4" + }, + { + "__type__": "cc.Node", + "_name": "head", + "_objFlags": 0, + "_parent": { + "__id__": 19 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0.931041061878204, + "y": -1.62124635494365e-7, + "z": 1.28416282052513e-8 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": -0.000007869318285142453, + "y": -2.023334521019378e-7, + "z": -0.001340885290760051, + "w": 0.9999991009819308 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1.24272096157074, + "y": 1.03568971157074, + "z": 1.0696634054184 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -0.0009017909722726095, + "y": -0.00002439492589956044, + "z": -0.15365418180060705 + }, + "_id": "b5X2VEA8RGd4hx8OiMzv/Z" + }, + { + "__type__": "cc.Node", + "_name": "legRight", + "_objFlags": 0, + "_parent": { + "__id__": 18 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": -0.15381583571434, + "y": 0.0330642610788345, + "z": -4.76837147544984e-9 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0.6775014926325843, + "y": 0.20089959890094192, + "z": 0.6787423421146606, + "w": -0.19984972269874676 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 0.184104666113853, + "y": 0.347824722528458, + "z": 0.0710852295160294 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -147.07673505109858, + "y": -90.12052935501679, + "z": 0.05309133906220757 + }, + "_id": "e1fluQIndNObRTN+XQDXHF" + }, + { + "__type__": "cc.Node", + "_name": "legLeft", + "_objFlags": 0, + "_parent": { + "__id__": 18 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0.150058135390282, + "y": 0.0330642610788345, + "z": -1.43051144263495e-8 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0.6356643535110694, + "y": 0.3106639432517853, + "z": 0.635291228429095, + "w": -0.3095541941561399 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 0.184104397892952, + "y": 0.347825288772583, + "z": 0.0710852593183517 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -127.97583425594252, + "y": -90.01226481486562, + "z": 0.09407173384696697 + }, + "_id": "68iMhCIVZK+7BrYtACLsh8" + }, + { + "__type__": "cc.Node", + "_name": "handRight", + "_objFlags": 0, + "_parent": { + "__id__": 18 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": -0.204364582896233, + "y": 0.240019470453262, + "z": -1.90734859017994e-8 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": -0.00043949465228992625, + "y": -0.00002823252593632647, + "z": 0.9849262411574669, + "w": -0.17297429151986207 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 0.184104412794113, + "y": 0.347825288772583, + "z": 0.07108523696661 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 179.9873448759303, + "y": 179.94664434517173, + "z": -19.921588202819525 + }, + "_id": "7bTKOHx6JFo6TQB1hhAXLX" + }, + { + "__type__": "cc.Node", + "_name": "handLeft", + "_objFlags": 0, + "_parent": { + "__id__": 18 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0.203091412782669, + "y": 0.240019470453262, + "z": -1.90734859017994e-8 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": -0.00001006337055508986, + "y": -0.0003337875805372209, + "z": -0.17397424484232848, + "w": 0.9847501462889564 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 0.184104338288307, + "y": 0.347825139760971, + "z": 0.0710852667689323 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -0.008291917560534557, + "y": -0.04030648567970078, + "z": -20.037940451355507 + }, + "_id": "0cvPWKogRPMoUakKiazJUx" + }, + { + "__type__": "cc.Node", + "_name": "Bip001", + "_objFlags": 0, + "_parent": { + "__id__": 17 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": -2.95868706703186, + "y": 0.568015873432159, + "z": 2.59012746810913 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": -0.5000003129242964, + "y": -0.49999968707550774, + "z": -0.49999968707550774, + "w": 0.5000003129242964 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 6.45159912109375, + "y": 6.45159912109375, + "z": 6.45160007476807 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -90, + "y": -89.99992828301158, + "z": 0 + }, + "_id": "31vrZWcK9HRp5vyFtVjdDB" + }, + { + "__type__": "cc.Node", + "_name": "mixamorig:HeadTop_End", + "_objFlags": 0, + "_parent": { + "__id__": 17 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": -12.6684627532959, + "y": 2.27624535560608, + "z": -0.396418631076813 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0.07992084217915124, + "y": 0.35555240038341984, + "z": 0.03850968875854815, + "w": 0.9304365391786178 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 65.5876159667969, + "y": 65.5876617431641, + "z": 65.587646484375 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 7.027884698082062, + "y": 41.37325087834414, + "z": 7.382559841159056 + }, + "_id": "94wDRuucREC4GyndIAbp/E" + }, + { + "__type__": "cc.Node", + "_name": "soldier01", + "_objFlags": 0, + "_parent": { + "__id__": 17 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 28 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": -0.7071067811865476, + "y": 0, + "z": 0, + "w": 0.7071067811865476 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 2.53999996185303, + "y": 2.53999996185303, + "z": 2.53999996185303 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -90.00000000000003, + "y": 0, + "z": 0 + }, + "_id": "af/w/4nmxBA7EI7p6SWLJ+" + }, + { + "__type__": "cc.SkinnedMeshRenderer", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 27 + }, + "_enabled": true, + "__prefab": null, + "_materials": [ + { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@95953", + "__expectedType__": "cc.Material" + } + ], + "_visFlags": 0, + "lightmapSettings": { + "__id__": 29 + }, + "_mesh": { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@6868c", + "__expectedType__": "cc.Mesh" + }, + "_shadowCastingMode": 0, + "_shadowReceivingMode": 1, + "_enableMorph": true, + "_skeleton": { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@438fe", + "__expectedType__": "cc.Skeleton" + }, + "_skinningRoot": { + "__id__": 16 + }, + "_id": "30YHOawqJAk45mqt1Kv4o4" + }, + { + "__type__": "cc.ModelLightmapSettings", + "texture": null, + "uvParam": { + "__type__": "cc.Vec4", + "x": 0, + "y": 0, + "z": 0, + "w": 0 + }, + "_bakeable": false, + "_castShadow": false, + "_receiveShadow": false, + "_recieveShadow": false, + "_lightmapSize": 64 + }, + { + "__type__": "cc.Node", + "_name": "Bip001(__autogen 4)", + "_objFlags": 0, + "_parent": { + "__id__": 17 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 9.61940002441406, + "y": 0.568015873432159, + "z": 1.51320099830627 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": -0.5000003129242964, + "y": -0.49999968707550774, + "z": -0.49999968707550774, + "w": 0.5000003129242964 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 6.45159912109375, + "y": 6.45159912109375, + "z": 6.45160007476807 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": -90, + "y": -89.99992828301158, + "z": 0 + }, + "_id": "c9relHXCxD8buEcxdgkJHW" + }, + { + "__type__": "cc.Node", + "_name": "mixamorig:HeadTop_End(__autogen 5)", + "_objFlags": 0, + "_parent": { + "__id__": 17 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": -0.0903754904866219, + "y": 2.27624559402466, + "z": -1.47334516048431 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0.07992084217915124, + "y": 0.35555240038341984, + "z": 0.03850968875854815, + "w": 0.9304365391786178 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 65.5876159667969, + "y": 65.5876617431641, + "z": 65.587646484375 + }, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 7.027884698082062, + "y": 41.37325087834414, + "z": 7.382559841159056 + }, + "_id": "18OPyREQRP0bZHBbgBDM0L" + }, + { + "__type__": "cc.SkeletalAnimation", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 16 + }, + "_enabled": true, + "__prefab": null, + "playOnLoad": false, + "_clips": [ + { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@1f586", + "__expectedType__": "cc.AnimationClip" + }, + { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@cf5ee", + "__expectedType__": "cc.AnimationClip" + }, + { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@989ed", + "__expectedType__": "cc.AnimationClip" + }, + { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@ee525", + "__expectedType__": "cc.AnimationClip" + }, + { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@5b2e9", + "__expectedType__": "cc.AnimationClip" + } + ], + "_defaultClip": { + "__uuid__": "57d4c4ef-3199-4596-bf79-7c065964ca9c@1f586", + "__expectedType__": "cc.AnimationClip" + }, + "_useBakedAnimation": true, + "_sockets": [], + "_id": "d4kBjIp3xEdIVjRiQqSIsg" + }, + { + "__type__": "cc.SceneGlobals", + "ambient": { + "__id__": 34 + }, + "shadows": { + "__id__": 35 + }, + "_skybox": { + "__id__": 36 + }, + "fog": { + "__id__": 37 + } + }, + { + "__type__": "cc.AmbientInfo", + "_skyColor": { + "__type__": "cc.Color", + "r": 51, + "g": 128, + "b": 204, + "a": 1 + }, + "_skyIllum": 20000, + "_groundAlbedo": { + "__type__": "cc.Color", + "r": 51, + "g": 51, + "b": 51, + "a": 255 + } + }, + { + "__type__": "cc.ShadowsInfo", + "_type": 0, + "_enabled": false, + "_normal": { + "__type__": "cc.Vec3", + "x": 0, + "y": 1, + "z": 0 + }, + "_distance": 0, + "_shadowColor": { + "__type__": "cc.Color", + "r": 76, + "g": 76, + "b": 76, + "a": 255 + }, + "_fixedArea": false, + "_pcf": 0, + "_bias": 0.00001, + "_normalBias": 0, + "_near": 0.1, + "_far": 10, + "_shadowDistance": 100, + "_invisibleOcclusionRange": 200, + "_orthoSize": 5, + "_maxReceived": 4, + "_size": { + "__type__": "cc.Vec2", + "x": 512, + "y": 512 + }, + "_saturation": 0.75 + }, + { + "__type__": "cc.SkyboxInfo", + "_envmap": null, + "_isRGBE": false, + "_enabled": false, + "_useIBL": false + }, + { + "__type__": "cc.FogInfo", + "_type": 0, + "_fogColor": { + "__type__": "cc.Color", + "r": 200, + "g": 200, + "b": 200, + "a": 255 + }, + "_enabled": false, + "_fogDensity": 0.3, + "_fogStart": 0.5, + "_fogEnd": 300, + "_fogAtten": 5, + "_fogTop": 1.5, + "_fogRange": 1.2 + } +] \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene.meta b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene.meta new file mode 100644 index 0000000..75261e5 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.1.32", + "importer": "scene", + "imported": true, + "uuid": "0d3889f6-dc9c-424e-b8cd-6fa78d63af15", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scripts.meta b/examples/cocos-creator-multiplayer/frontend/assets/scripts.meta new file mode 100644 index 0000000..c768f22 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scripts.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "f40f793d-269b-44f4-b754-684d7d93892c", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scripts/Room.ts b/examples/cocos-creator-multiplayer/frontend/assets/scripts/Room.ts new file mode 100644 index 0000000..b111b9c --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scripts/Room.ts @@ -0,0 +1,101 @@ +import { WsClient } from 'tsrpc-browser'; +import { MsgInput } from './shared/protocols/clientMsgs/MsgInput'; +import { MsgFrame } from './shared/protocols/serverMsgs/MsgFrame'; +import { ServiceType } from "./shared/protocols/serviceProto"; +import { applyPlayerInput, PlayerInput, PlayerState } from "./shared/states/Player"; +import { RoomState } from './shared/states/RoomState'; + +/** + * 客户端 - 房间 - 逻辑系统 + */ +export class Room { + + state: RoomState = { + players: [] + } + + client: WsClient; + + self?: { + uid: number, + // 最后一次权威状态 + lastServerState: PlayerState + } + private _lastSendInputSN = 0; + private _sendingMsgs: MsgInput[] = []; + + constructor(client: WsClient) { + this.client = client; + this.client.listenMsg('serverMsgs/Frame', msg => { + this.applyServerFrame(msg); + }); + this.client.listenMsg('serverMsgs/Join', msg => { + this.state.players.push(msg.player); + }); + this.client.listenMsg('serverMsgs/Leave', msg => { + this.state.players.removeOne(v => v.uid === msg.uid); + }); + } + + init(roomState: RoomState) { + + } + + /** 同步服务端的权威消息 */ + applyServerFrame(msg: MsgFrame) { + msg.inputs.forEach(({ uid, msgInput }) => { + let playerIndex = this.state.players.findIndex(v => v.uid === uid); + if (playerIndex === -1) { + return; + } + let newPlayer: PlayerState = this.state.players[playerIndex]; + + // 自己:和解 + if (uid === this.self?.uid) { + this._sendingMsgs.remove(v => v.sn <= msgInput.sn); + this.state.players[playerIndex] = this.self.lastServerState; + // 预测 + this._sendingMsgs.forEach(v => { + this.state.players[playerIndex] = applyPlayerInput(this.state.players[playerIndex], v); + }) + } + // 其它人:直接同步 + else { + this.state.players[playerIndex] = applyPlayerInput(this.state.players[playerIndex], msgInput); + } + }); + } + + /** 发送客户端输入,并执行本地预测 */ + sendInput(input: PlayerInput) { + if (!this.self) { + return; + } + + let msg: MsgInput = { + ...input, + sn: ++this._lastSendInputSN + } + this._sendingMsgs.push(msg); + this.client.sendMsg('clientMsgs/Input', msg); + } + + async joinRoom() { + let ret = await this.client.callApi('JoinRoom', { + nickname: 'xxx', + skinId: 1 + }); + + if (!ret.isSucc) { + alert(ret.err.message); + return; + } + + this.self = { + uid: ret.res.uid, + lastServerState: ret.res.roomState.players.find(v => v.uid === ret.res!.uid)! + } + this.state = ret.res.roomState; + } + +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scripts/Room.ts.meta b/examples/cocos-creator-multiplayer/frontend/assets/scripts/Room.ts.meta new file mode 100644 index 0000000..3a6640c --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scripts/Room.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.22", + "importer": "typescript", + "imported": true, + "uuid": "45fa3b70-b2ce-40a3-882a-79fbe5e7ae62", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scripts/shared b/examples/cocos-creator-multiplayer/frontend/assets/scripts/shared new file mode 120000 index 0000000..4f09031 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scripts/shared @@ -0,0 +1 @@ +../../../backend/src/shared \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scripts/shared.meta b/examples/cocos-creator-multiplayer/frontend/assets/scripts/shared.meta new file mode 100644 index 0000000..bd4ac41 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/scripts/shared.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "78099e0e-0105-4286-9a60-40235d454bce", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames.meta b/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames.meta new file mode 100644 index 0000000..683c471 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "60d130b7-07a2-41e9-985d-b5511bec8941", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames/circle256.png b/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames/circle256.png new file mode 100644 index 0000000..d5bad8d Binary files /dev/null and b/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames/circle256.png differ diff --git a/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames/circle256.png.meta b/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames/circle256.png.meta new file mode 100644 index 0000000..6aa7edd --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/spriteFrames/circle256.png.meta @@ -0,0 +1,75 @@ +{ + "ver": "1.0.21", + "importer": "image", + "imported": true, + "uuid": "521ad970-c5d9-4d2d-af6f-cc08f94230f8", + "files": [ + ".png", + ".json" + ], + "subMetas": { + "6c48a": { + "importer": "texture", + "uuid": "521ad970-c5d9-4d2d-af6f-cc08f94230f8@6c48a", + "displayName": "circle256", + "id": "6c48a", + "name": "texture", + "ver": "1.0.21", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "wrapModeS": "clamp-to-edge", + "wrapModeT": "clamp-to-edge", + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "premultiplyAlpha": false, + "anisotropy": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "521ad970-c5d9-4d2d-af6f-cc08f94230f8" + } + }, + "f9941": { + "importer": "sprite-frame", + "uuid": "521ad970-c5d9-4d2d-af6f-cc08f94230f8@f9941", + "displayName": "circle256", + "id": "f9941", + "name": "spriteFrame", + "ver": "1.0.9", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 256, + "height": 256, + "rawWidth": 256, + "rawHeight": 256, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "521ad970-c5d9-4d2d-af6f-cc08f94230f8@6c48a", + "atlasUuid": "", + "packable": true + } + } + }, + "userData": { + "type": "sprite-frame", + "redirect": "521ad970-c5d9-4d2d-af6f-cc08f94230f8@f9941", + "hasAlpha": true + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/package.json b/examples/cocos-creator-multiplayer/frontend/package.json index ea5e089..a061085 100644 --- a/examples/cocos-creator-multiplayer/frontend/package.json +++ b/examples/cocos-creator-multiplayer/frontend/package.json @@ -5,5 +5,8 @@ "version": "3.3.2", "creator": { "version": "3.3.2" + }, + "dependencies": { + "tsrpc-browser": "^3.1.2" } } diff --git a/examples/cocos-creator-multiplayer/frontend/settings/v2/packages/project.json b/examples/cocos-creator-multiplayer/frontend/settings/v2/packages/project.json index 70e599e..429e70c 100644 --- a/examples/cocos-creator-multiplayer/frontend/settings/v2/packages/project.json +++ b/examples/cocos-creator-multiplayer/frontend/settings/v2/packages/project.json @@ -1,3 +1,9 @@ { - "__version__": "1.0.1" + "__version__": "1.0.1", + "layer": [ + { + "name": "canvas_19", + "value": 524288 + } + ] } diff --git a/examples/cocos-creator-multiplayer/frontend/tsconfig.json b/examples/cocos-creator-multiplayer/frontend/tsconfig.json index 7dc649a..d7049f6 100644 --- a/examples/cocos-creator-multiplayer/frontend/tsconfig.json +++ b/examples/cocos-creator-multiplayer/frontend/tsconfig.json @@ -1,9 +1,6 @@ { /* Base configuration. Do not edit this field. */ "extends": "./temp/tsconfig.cocos.json", - /* Add your custom configuration here. */ - "compilerOptions": { - "strict": false - } -} + "compilerOptions": {} +} \ No newline at end of file