Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

58 строки
1.5 KiB

  1. -- 被选择节点显示高亮框
  2. cc.RectNode = {
  3. }
  4. function cc.RectNode:create(node)
  5. local glNode = gl.glNodeCreate()
  6. glNode:setAnchorPoint(cc.p(0.5, 0.5))
  7. function glNode:setNode(node)
  8. local function onNodeEvent(node , eventType)
  9. if eventType == cc.NodeEvent.OnExit then
  10. if self.Node == node then
  11. self.Node = nil;
  12. end
  13. end
  14. end
  15. if node then
  16. node:addNodeEventListener(onNodeEvent)
  17. end
  18. self.Node = node;
  19. end
  20. glNode:setNode(node)
  21. local material3d = cc.MaterialCache:getInstance():load("core/preload/shaders/ccDefault.material#ShaderPosition_uColor3D");
  22. cc.Default2DMaterials:getInstance():bindValue(material3d:getParameter("CC_MVPMatrix") , "WORLD_VIEW_PROJECTION_MATRIX");
  23. local function primitivesDraw(transform, transformUpdated)
  24. local node = glNode.Node;
  25. if not tolua.isnull(node) then
  26. cc.DrawPrimitives.setMaterial(material3d);
  27. -- 绑定相机、世界矩阵
  28. cc.DrawPrimitives.setCamera(node:getActiveCamera());
  29. cc.DrawPrimitives.setWorldTransform(cc.Mat4:identity());
  30. -- 画矩形
  31. gl.lineWidth( 1 )
  32. cc.DrawPrimitives.drawColor4B(0, 255, 0, 255)
  33. cc.DrawPrimitives.drawBoundingBox(node:getSelectBox())
  34. -- 状态恢复
  35. gl.lineWidth(1)
  36. cc.DrawPrimitives.drawColor4B(255,255,255,255)
  37. cc.DrawPrimitives.setPointSize(1)
  38. -- 材质状态恢复
  39. cc.DrawPrimitives.setCamera(nil);
  40. cc.DrawPrimitives.setMaterial(nil);
  41. end
  42. end
  43. glNode:registerScriptDrawHandler(primitivesDraw)
  44. return glNode
  45. end