You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.2 KiB

  1. require("luaScript.Tools.Nodes.CCNode")
  2. cc.Node3D.ClassName = "Node3D";
  3. function cc.Node3D:extend(node)
  4. end
  5. function cc.Node3D:cloneLua(node)
  6. end
  7. function cc.Node3D:saveToXmlNode(xmlNode)
  8. cc.Node.saveToXmlNode(self , xmlNode);
  9. end
  10. function cc.Node3D:loadFromXmlNode(xmlNode)
  11. cc.Node.loadFromXmlNode(self , xmlNode);
  12. end
  13. function cc.Node3D:createNode()
  14. local node = cc.Node3D:create();
  15. self:extend(node);
  16. return node;
  17. end
  18. -- 获得选择框,用来编辑器框选的,其中xy是盒子左下角坐标,width/height是盒子宽高
  19. function cc.Node3D:getSelectRect()
  20. local anchor = self:getAnchorPointInPoints();
  21. return cc.rect(-anchor.x , -anchor.y , self:getContentSize().width , self:getContentSize().height);
  22. end
  23. -- 计算矩形rect是否跟节点相交,用来给编辑器框选的
  24. function cc.Node3D:selectTest(rect)
  25. local selectRect = self:getSelectRect();
  26. -- 计算左下角的世界坐标
  27. local pos = self:getParent():convertToWorldSpace(cc.p(self:getPositionX() + selectRect.x , self:getPositionY() + selectRect.y));
  28. -- 计算包围盒
  29. local box = cc.Rectangle:new(pos.x , pos.y , selectRect.width , selectRect.height);
  30. -- 看是否相交
  31. return cc.rectIntersectsRect(rect , box)
  32. end