猫史档案馆


对于box3的一个想法

用户:SCS_user_LoeheodVOQSCS_user_LoeheodVOQ查看:8 回复:9 评论:8 创建时间:2022-11-26T16:41:12



回复

上一页1 页 / 共 1下一页
SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

目前代码:

((global, noGlobal) => {
    var version = "0.2.0-beta",
        bQuery = function (selector) {
            return new bQuery.init(selector);
        };
    Object.assign(bQuery, {
        version: version,
        init: function (selector) {
            if (selector) {
                Object.assign(this, {
                    get ens() { return world.querySelectorAll(selector) },
                    toString: () => this.ens.toString(),
                    get en() { return this.ens.length === 1 ? this.ens[0] : this.ens },
                    pos(pos) {
                        if (!arguments.length) {
                            return this.ens[0].position;
                        }
                        if (Array.isArray(pos)) {
                            pos = bQuery.vect3(...pos);
                        } else if (arguments.length === 3) {
                            pos = bQuery.vect3(...arguments);
                        }
                        this.ens.forEach(e => {
                            e.position.copy(pos);
                        });
                    },
                    vel(vel) {
                        if (!arguments.length) {
                            return this.ens[0].velocity;
                        }
                        if (Array.isArray(vel)) {
                            vel = bQuery.vect3(...vel);
                        } else if (arguments.length === 3) {
                            vel = bQuery.vect3(...arguments);
                        }
                        this.ens.forEach(e => {
                            e.velocity.copy(vel)
                        });
                    },
                    col(col) {
                        if (!arguments.length) {
                            return this.ens[0].collides;
                        }
                        this.ens.forEach(e => {
                            e.collides = col;
                        });
                    },
                    mesh(mesh) {
                        if (!arguments.length) {
                            return this.ens[0].mesh;
                        }
                        if (!/^mesh\/.*\.vb$/.test(mesh)) {
                            if (!/.*\.vb$/.test(mesh)) {
                                mesh += '.vb';
                            }
                            if (!/\/.*\.vb$/.test(mesh)) {
                                mesh = '/' + mesh;
                            }
                            if (!/^mesh\//.test(mesh)) {
                                mesh = 'mesh' + mesh;
                            }
                        }
                        this.ens.forEach(e => {
                            e.mesh = mesh;
                        });
                    },
                    color(color) {
                        if (!arguments.length) {
                            return this.ens[0].meshColor;
                        }
                        if (Array.isArray(color)) {
                            color = color.length === 4 ? bQuery.rgb(...color) : bQuery.rgb(...color, 1);
                        } else if (arguments.length === 3 || arguments.length === 4) {
                            color = arguments.length === 4 ? bQuery.rgba(...arguments) : bQuery.rgba(...arguments, 1);
                        }
                        console.log(color)
                        this.ens.forEach(e => {
                            e.meshColor.copy(color);
                        });
                    },
                    scale(scale) {
                        if (!arguments.length) {
                            return this.ens[0].meshScale;
                        }
                        if (Array.isArray(scale)) {
                            scale = bQuery.vect3(...scale);
                        } else if (arguments.length === 3) {
                            scale = bQuery.vect3(...arguments);
                        } else if (typeof scale === "number" && !isNaN(scale)) {
                            scale = bQuery.vect3(scale, scale, scale);
                        }
                        this.ens.forEach(e => {
                            e.meshScale.copy(scale);
                        });
                    },
                    orien(orien) {
                        if (!arguments.length) {
                            return this.ens[0].meshOrientation;
                        }
                        if (Array.isArray(orien)) {
                            orien = bQuery.quat(...orien);
                        } else if (arguments.length === 4) {
                            orien = bQuery.quat(...arguments);
                        }
                        this.ens.forEach(e => {
                            e.meshOrientation.copy(orien);
                        });
                    }
                });
            } else {
                Object.assign(this, bQuery);
            }
        },
        log: console.log,
        warn: console.warn,
        err: console.error,
        clear: console.clear,
        say: world.say,
        rgb: (r, g, b) => new Box3RGBColor(r, g, b),
        rgba: (r, g, b, a) => new Box3RGBAColor(r, g, b, a),
        rgb255: (r, g, b) => bQuery.rgb(r / 255, g / 255, b / 255),
        rgba255: (r, g, b, a) => bQuery.rgba(r / 255, g / 255, b / 255, a / 255),
        vect3: (x, y, z) => new Box3Vector3(x, y, z),
        quat: (w, x, y, z) => new Box3Quaternion(w, x, y, z)
    });
    console.log(new bQuery.init('player').toString())
    if (!noGlobal) {
        global.$ = global.bQuery = bQuery;
    }
    return bQuery;
})(global)

点赞2


评论


D453D453

什么玩意?

点赞0


评论


NeutronNeutron

emotion_编程猫_加油

 

点赞1


评论


SKQASKQA

巧了,我也在做一个类似的,也叫bquery,哈哈哈哈

点赞2


评论


星星上的雪花星星上的雪花

……

点赞1


评论


可小嘉可小嘉

('*')

点赞1


评论


NeutronNeutron

我还是JS萌新,还在学中哈,问一下,你上面这个代码是一个类似于一个小程序的吗?看起来好高级呀emotion_编程猫_点赞

点赞1


评论


SKQASKQA

rgba的a一般不会用十六进制表示的吧,只要r g b除以255就行了

点赞0


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

开发进度:https://shequ.codemao.cn/community/502005

点赞0


评论