/******************************************************************************* * Copyright (c) 2007 VTT Technical Research Centre of Finland and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.proconf.g3d.shapes; import com.jme.renderer.ColorRGBA; import com.jme.renderer.Renderer; import com.jme.scene.Geometry; import com.jme.scene.Line; import com.jme.scene.state.MaterialState; import com.jme.util.geom.BufferUtils; public class GridShape { public static Geometry getShape(Renderer renderer, int lineCount, float delta) { float[] coords = new float[lineCount*lineCount*2*3]; float size = delta * lineCount; float halfSize = size * 0.5f; for (int i = 0 ; i <= lineCount; i++) { int index = i*3*2; coords[index++] = -halfSize + i * delta; coords[index++] = 0.f; coords[index++] = -halfSize; coords[index++] = -halfSize + i * delta; coords[index++] = 0.f; coords[index++] = +halfSize; } for (int i = 0 ; i <= lineCount; i++) { int index = (i + lineCount + 1)*3*2; coords[index++] = -halfSize; coords[index++] = 0.f; coords[index++] = -halfSize + i * delta; coords[index++] = +halfSize; coords[index++] = 0.f; coords[index++] = -halfSize + i * delta; } Line shape = new Line("",BufferUtils.createFloatBuffer(coords),null,null,null); MaterialState ms = renderer.createMaterialState(); ms.setEmissive(new ColorRGBA(1.f,1.f,1.f,0.f)); shape.setRenderState(ms); shape.setCullMode(Geometry.CULL_NEVER); return shape; } }