cc.GridLine = class("GridLine") cc.GridLine.ClassName = "GridLine" function cc.GridLine:saveToXmlNode(xmlNode) cc.Layout.saveToXmlNode(self , xmlNode); end function cc.GridLine:loadFromXmlNode(xmlNode) cc.Layout.loadFromXmlNode(self , xmlNode); end function cc.GridLine:extend(layout) cc.Layout:extend(layout); layout:setName("GridLine") -- 把lua的类函数扩展给node(C++对象) layout:extendClass(cc.GridLine); local vertexFormat = {}; table.insert(vertexFormat , {size = 3 , usage = cc.VertexFormatUsage.POSITION}); table.insert(vertexFormat , {size = 4 , usage = cc.VertexFormatUsage.COLOR}); local vertices = ManualVertices:new(vertexFormat); vertices:setColor(cc.c4f(1,1,1,1)); -- 画轴 vertices:drawLine(cc.vec3(-100000 , 0 , 0) , cc.vec3(100000 , 0 , 0)) vertices:drawLine(cc.vec3(0 , -100000 , 0) , cc.vec3(0 , 100000 , 0)) local mesh = cc.Mesh:createMesh(vertexFormat , vertices:getVertexCount()); mesh:setPrimitiveType(cc.PrimitiveType.LINES); mesh:setVertexData(vertices:getVertices() , 0 , vertices:getVertexCount()); mesh:setBoundingBox(vertices:getBoundingBox()); local model = cc.Model:create(mesh); local material = cc.Material:create("preload/shaders/ccDefault.material#ShaderPositionColor3D"); material:setParameterAutoBinding("CC_MVPMatrix" , "WORLD_VIEW_PROJECTION_MATRIX"); model:setMaterialPointer(material); local node = cc.Node3D:create(); node:addComponent(model); layout:addProtectedChild(node); end function cc.GridLine:createNode() local layer = cc.Layout:create(); cc.GridLine:extend(layer); return layer; end -- 设置默认值 function cc.GridLine:setDefaults() self:setSize(cc.size(100,100)); self:setBackGroundColorType(cc.LayoutBackGroundColorType.none); end