Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: feat: 移动建筑位置 #1

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft

Conversation

2dengyu2
Copy link

@2dengyu2 2dengyu2 commented Jun 3, 2022

通过修改building的offset中的xyz坐标实现移动建筑位置

  • 移动单一位置参数建筑,如传送带、喷涂机
  • 移动双位置参数建筑,如分拣器
  • 添加xyz参数取值范围限制

进一步调整

  • 复制传送带至相邻格

通过修改offset的z参数实现修改传送带等建筑高度。分拣器由两个localOffset构成,由于不确定直接修改高度是否会影响连接判定,目前会同步提升两个参数。
通过修改offset的xyz参数实现修改传送带等建筑位置,移动分拣器功能待补充。
@huww98
Copy link
Owner

huww98 commented Jun 3, 2022

感谢贡献。移动分拣器感觉会很难呢,要考虑同步修改它两端建筑连接的slot的变化,如果连接到传送带,还有可能移动后变成连接到另一节传送带。移动建筑的话,也难免需要移动与之相连的分拣器。

渲染方面,目前每次修改全局刷新的策略的效率也难以接受。

所以,这个PR的merge可能还有很长的路要走。

@2dengyu2
Copy link
Author

2dengyu2 commented Jun 4, 2022

  • 此pr目前阶段所实现的是移动 无连接的传送带、穿过喷涂机的传送带以及喷涂机 ,解决了我自己使用蓝图时需要微调喷涂机的需求。
  • 移动 分拣器 确实是需要考虑已连接的其他建筑,实现这个功能确实需要分很多步骤,也许这个pr也需要拆分成多个feature。
  • 实现移动 生产建筑 ,是否应该先批量移动传送带,然后移动建筑,此时分拣器和游戏中一样绑定在建筑中,移动完毕后检测传送带,如果这样做这个pr可以转换为仅实现 不包含slot逻辑 的各类建筑(传送带、电力、喷涂机等)的移动、添加、删除以及相关批量操作,实现slot的检测可以单独考虑或是后续实现
  • 渲染方面目前全局刷新是为了能够重新生成压缩后的蓝图代码,此处确实没有考虑到效率问题。

@huww98
Copy link
Owner

huww98 commented Jun 4, 2022

  • 渲染方面目前全局刷新是为了能够重新生成压缩后的蓝图代码,此处确实没有考虑到效率问题。

其实我最近计划实现更细粒度的刷新,并借此机会实现撤销和重做功能。

@huww98
Copy link
Owner

huww98 commented Jun 5, 2022

我上线了撤销重做功能,和细粒度的3D场景刷新。

目前所有对蓝图的修改应该通过实现Command接口完成。Updater类负责通知界面各部分刷新。建筑位置的更新应该比目前我实现的这些更复杂一些,还需要对BVH进行更新。BVH不断更新效率会下降,可能还需要定期进行完全重建,不过这个可以先放一放。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants