| 1565 | class ProjectNode : public Node { |
| 1566 | public: |
| 1567 | virtual void render() override { |
| 1568 | Size viewSize = SharedView.getSize(); |
| 1569 | float viewPort[4]{0, 0, viewSize.width, viewSize.height}; |
| 1570 | float winX, winY, winZ; |
| 1571 | if (project(_nodePoint.x, _nodePoint.y, 0, getWorld(), SharedDirector.getViewProjection(), viewPort, &winX, &winY, &winZ)) { |
| 1572 | Size winSize = SharedApplication.getWinSize(); |
| 1573 | winX = winX * winSize.width / viewSize.width; |
| 1574 | winY = winY * winSize.height / viewSize.height; |
| 1575 | if (SharedView.getName() != "UI"_slice) { |
| 1576 | winY = winSize.height - winY; |
| 1577 | } |
| 1578 | _convertHandler(Vec2{winX, winY}); |
| 1579 | } else { |
| 1580 | _convertHandler(Vec2::zero); |
| 1581 | } |
| 1582 | WRef<Node> wref(this); |
| 1583 | schedule([wref](double deltaTime) { |
| 1584 | if (wref) wref->removeFromParent(); |
| 1585 | return true; |
| 1586 | }); |
| 1587 | } |
| 1588 | CREATE_FUNC_NOT_NULL(ProjectNode); |
| 1589 | |
| 1590 | protected: |
nothing calls this directly
no test coverage detected