|
- -- 被选择节点显示高亮框
- cc.RectNode = {
-
- }
-
- function cc.RectNode:create(node)
- local glNode = gl.glNodeCreate()
- glNode:setAnchorPoint(cc.p(0.5, 0.5))
-
- function glNode:setNode(node)
- local function onNodeEvent(node , eventType)
- if eventType == cc.NodeEvent.OnExit then
- if self.Node == node then
- self.Node = nil;
- end
- end
- end
- if node then
- node:addNodeEventListener(onNodeEvent)
- end
-
- self.Node = node;
- end
-
- glNode:setNode(node)
- local material3d = cc.MaterialCache:getInstance():load("core/preload/shaders/ccDefault.material#ShaderPosition_uColor3D");
- cc.Default2DMaterials:getInstance():bindValue(material3d:getParameter("CC_MVPMatrix") , "WORLD_VIEW_PROJECTION_MATRIX");
-
- local function primitivesDraw(transform, transformUpdated)
- local node = glNode.Node;
- if not tolua.isnull(node) then
- cc.DrawPrimitives.setMaterial(material3d);
- -- 绑定相机、世界矩阵
- cc.DrawPrimitives.setCamera(node:getActiveCamera());
- cc.DrawPrimitives.setWorldTransform(cc.Mat4:identity());
-
- -- 画矩形
- gl.lineWidth( 1 )
- cc.DrawPrimitives.drawColor4B(0, 255, 0, 255)
- cc.DrawPrimitives.drawBoundingBox(node:getSelectBox())
-
- -- 状态恢复
- gl.lineWidth(1)
- cc.DrawPrimitives.drawColor4B(255,255,255,255)
- cc.DrawPrimitives.setPointSize(1)
-
- -- 材质状态恢复
- cc.DrawPrimitives.setCamera(nil);
- cc.DrawPrimitives.setMaterial(nil);
- end
- end
-
- glNode:registerScriptDrawHandler(primitivesDraw)
-
- return glNode
- end
|