闲聊

用.NET EF Core对Mysql进行INNER JOIN多表查询

之前在网上找了好多资料,也没有比较好的回答

我要写这样一个sql语句:

SELECT
*
FROM
a
JOIN b ON a.PID = b.ID
JOIN c ON a.P2ID = c.ID
JOIN d ON c.PID = d.ID
AND c.P2ID = d.ID2

在.NET EF Core中我是这样做的:

IQueryable<a> cartIQ = from s in _dBContext.a select s;
cartIQ = cartIQ.Where(c => c.ID == param);
var cartList = cartIQ.Join(_dBContext.b, prodCart => prodCart.ProdId, prod => prod.Id, (prodCart, prod) => new { c = prodCart, b = prod })
.Join(_dBContext.SkuInfo, prod => prod.c.SkuId, sku => sku.SkuId, (prod, sku) => new { prod.c, prod.b, SkuInfo = sku })
.Join(_dBContext.SkuColorPic, t => new { t.SkuInfo.ProdId, t.SkuInfo.ColorId }, cpic => new { cpic.ProdId, cpic.ColorId }, (t, cpic) => new { t.c, t.b, t.SkuInfo, SkuColorPic = cpic });

Live 2D

WordPress Live 2D 1.7.6 版本更新

  1. Cubism Core for Web 改为非必要加载项,使用时将从JS中同步加载,完成后执行渲染(此处有缓存)
  2. 减少了不必要的提示信息,净化你的控制台
  3. 屏幕最小尺寸逻辑改为:加载时如果屏幕尺寸不足则放弃加载插件,节省资源(期望各位继续反馈)
  4. 修复在WordPress 5.5 后台报错的问题,报错时颜色设置会出现错误,请更新此版本
  5. 修改了一些文案和主题兼容问题。
Live 2D

最近很懒!

非常抱歉各位issues回复稍微晚了一些,最近想偷懒了!

我会尽量采取各位再issues上提出的问题,并一一解决,但是主要还是我会考虑为何加载速度过慢

下面我有另一个考虑就是将V2版本和V3版本的SDK4.0拆分成2个,按需加载,来避免压力过大的问题。

感谢各位的支持和耐心!

庆祝插件使用超100人!

闲聊

美少女万华镜5通关HE

其实没有完全完成,但是故事差不多结束了,男主被拉回了人偶之间开始了没羞没臊的治疗过程。全程没有HCG,前提是你不变心。

奉上下载链接:中文汉化版

链接:https://pan.baidu.com/s/1rze-D_Hgz2SBAfy0zsbdKA
提取码:9s17
zpw: 菜菜山萌世歌吧

闲聊

干活干活

主要还是处理moc3模型动作影响的东西,framework里面还是有很多方法需要理解,写的很工整,但是学习是需要时间的。。。

Live 2D

Live 2D moc3 动作v3版调整完成

moc3的触发动作在sdk4.0中调用相对简单,也比较直观。

本次调整比较大的是在于预加载时的动作文件处理,和触发动作后寻找预加载文件进行执行的逻辑。

在预加载过程中,Framework先进行json文件的读取,但是由于json文件不一致,导致读取的时候没有动作名称加载进内存,所以动作无法执行。

动作预加载是以分组执行的方式进行的,用户在model3.json中可对动作进行分组,例如Idle事件,如果正确处理应该会在Idle分组中有多个动作,在待机状态下随机执行,但如果我再客户端代码中写太多干预服务器文件的重组,会导致冗余严重,所以就进行了简单处理,只对可触摸部分进行了调整。

在下一个版本,我会修改API部分,让API通过定义符合客户端要求,届时API将会有后台进行设置,欢迎各位使用者fork

感谢railzy提出的建议,也感谢各位使用者。

Live 2D

WordPress Live 2D 1.7.8_beta 版本更新

  • 此版本为测试版本,请在github上下载更新

  • 新增后台设置:moc3模型自定义动作,提供给Cubism Editor 3.x版本的模型明确指定动作文件使用

  • lapplive2dmanager.ts 的 onTap 方法:增加判断自定义的hitAreaList,用户可在WP后台对hitAreaList进行设置
  • 对缩放算法进行修正,由原有lapplive2dmanager.ts 的 onUpdate 方法中计算 projection.scale(zoom, (zoom * width) / height); 改为使用Framework/math/cubismmodelmatrix.ts 中的构造方法this.setHeight(zoom); 进行控制,以确保缩放时触摸区域同比例缩放。
  • 此版本为本地调整版本,下一个版本将直接修改API,从源头来保证生成的文件可被动作调用。
  • 具体调整细节请看上一篇文章中的调整过程。
Live 2D

对于Live2D的Motion可以成功读取

在官方framework里面有一个motion3.json的parse方法,他会转换json中的动作,给到group动作组,提供后续触碰支持,在1.7.3版本中已经实际安装,此版本的debug版已经上传至github,debug版本安装后将会加载并反馈点击模型后触发的提示,如果可以,请协助我安装debug版本,并在留言处留下你的网址。

注意:debug版本会扰乱控制台内容,经常输出很多字符,请慎重安装。

https://github.com/jiangweifang/wp-live2d/releases/tag/1.7.3_dev

  • lappmodel.ts 的 375 行 loadCubismMotion 中需要读取 model3.json含有Motions的内容

  • Motions的组成 :
"Motions" : {
    "动作": [
        {
            "File": "motions/动作组_1.motion3.json"
        },
        {
            "File": "motions/动作组_2.motion3.json"
        },
        {
            "File": "motions/动作组_3.motion3.json"
        }
    ]
}

当前问题:
1. moc3模型制作结果由于v3版本生成和v4版本生成后结果不同,导致model3.json中对于Motions的定义有一定差异。
2. 没有动作组被触发,这个需要设置,我会在后台增加设置来配置动作触发的条件。
3. 触发动作可以在model3.json中配置好后直接使用

model3.json配置成功的例子“Hiyori”:

{
    "Version": 3,
    "FileReferences": {
        "Moc": "Hiyori.moc3",
        "Textures": [
            "Hiyori.2048/texture_00.png",
            "Hiyori.2048/texture_01.png"
        ],
        "Physics": "Hiyori.physics3.json",
        "Pose": "Hiyori.pose3.json",
        "UserData": "Hiyori.userdata3.json",
        "Motions": {
            "Idle": [
                {
                    "File": "motions/Hiyori_m01.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m02.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m03.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m05.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m06.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m07.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m08.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m09.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m10.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                }
            ],
            "TapBody": [
                {
                    "File": "motions/Hiyori_m04.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                }
            ]
        }
    },
    "Groups": [
        {
            "Target": "Parameter",
            "Name": "LipSync",
            "Ids": [
                "ParamMouthOpenY"
            ]
        },
        {
            "Target": "Parameter",
            "Name": "EyeBlink",
            "Ids": [
                "ParamEyeLOpen",
                "ParamEyeROpen"
            ]
        }
    ],
    "HitAreas": [
        {
            "Id": "HitArea",
            "Name": "Body"
        }
    ]
}

例子中“动作”设置为“Idle”为待机动作,模型将会各段时间随机选择“Idle”组中的动作触发,“TapBody”为触发身体触碰时的动作。

在ExStudio中可以看到 hemin_3 有TouchBody、TouchHead、TouchSpecial网格,他们代表触碰这3个位置可以有指定动作触发,这种网格只可以在Cubism Editor工具中进行修改和创建。

鉴于以上情景,我将会在代码中增加读取motions的方法,提供给没有按照Hiyori 配置的model3.json,但是相对的,用户需要在后台对触发的位置进行定义.