/** * Constructor * * @param state */ public Grid(GridState state) { super(state.name); this.state = state; this.cellSize = state.size; this.color = state.color; this.lineWidth = state.lineWidth; offset = new Vector3(); setLocation(state.location, false); lattice = new HiddenLine("_lattice", IndexMode.Lines); SpatialUtil.setPickHost(lattice, this); lattice.setColor(color); lattice.setModelBound(new BoundingBox()); MaterialState ms = new MaterialState(); ms.setColorMaterial(ColorMaterial.Emissive); ms.setColorMaterialFace(MaterialState.MaterialFace.FrontAndBack); ms.setEnabled(true); text = new Node("_text"); text.getSceneHints().setLightCombineMode(LightCombineMode.Off); text.getSceneHints().setPickingHint(PickingHint.Pickable, false); text.setRenderState(ms); setLabelVisible(state.labelVisible); attachChild(lattice); attachChild(text); setVisible(state.visible); setPinned(state.pinned); state.setMapElement(this); }
/** * Constructor * * @param color */ public SimpleCrosshair(ReadOnlyColorRGBA color) { super("Crosshair"); ReadOnlyColorRGBA[] crosshairColor = {color, color, color, color}; getMeshData().setIndexMode(IndexMode.Lines); getMeshData().setVertexBuffer(BufferUtils.createFloatBuffer(crosshairVertex)); FloatBuffer colorBuffer = BufferUtils.createFloatBuffer(crosshairColor); colorBuffer.rewind(); getMeshData().setColorBuffer(colorBuffer); getMeshData().setIndexBuffer(BufferUtils.createIntBuffer(crosshairIndex)); getMeshData().getIndexBuffer().limit(4); getMeshData().getIndexBuffer().rewind(); getSceneHints().setAllPickingHints(false); setModelBound(new BoundingBox()); updateModelBound(); MaterialState crosshairMaterialState = new MaterialState(); crosshairMaterialState.setColorMaterial(MaterialState.ColorMaterial.Emissive); crosshairMaterialState.setEnabled(true); getSceneHints().setLightCombineMode(LightCombineMode.Off); setRenderState(crosshairMaterialState); updateGeometricState(0, true); }
@Override protected void initExample() { _canvas.setTitle("Various size imposters - Example"); _canvas.getCanvasRenderer().getCamera().setLocation(new Vector3(0, 60, 80)); _canvas.getCanvasRenderer().getCamera().lookAt(new Vector3(), Vector3.UNIT_Y); final BasicText keyText = BasicText.createDefaultTextLabel("Text", "[SPACE] Switch imposters off"); keyText.getSceneHints().setRenderBucketType(RenderBucketType.Ortho); keyText.getSceneHints().setLightCombineMode(LightCombineMode.Off); keyText.setTranslation(new Vector3(0, 20, 0)); _root.attachChild(keyText); final Box box = new Box("Box", new Vector3(), 150, 1, 150); box.setModelBound(new BoundingBox()); box.setTranslation(new Vector3(0, -10, 0)); _root.attachChild(box); final QuadImposterNode imposter0 = new QuadImposterNode( "Imposter1", 256, 256, _settings.getDepthBits(), _settings.getSamples(), _timer); imposter0.setRedrawRate(0.0); // No timed update imposter0.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD); imposter0.setCameraDistanceThreshold(0.1); _root.attachChild(imposter0); final Node scene1 = createModel(); scene1.setTranslation(0, 0, 0); imposter0.attachChild(scene1); final QuadImposterNode imposter1 = new QuadImposterNode( "Imposter1", 128, 128, _settings.getDepthBits(), _settings.getSamples(), _timer); imposter1.setRedrawRate(0.0); // No timed update imposter1.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD); imposter1.setCameraDistanceThreshold(0.1); _root.attachChild(imposter1); final Node scene2 = createModel(); scene2.setTranslation(-15, 0, -25); imposter1.attachChild(scene2); final QuadImposterNode imposter2 = new QuadImposterNode( "Imposter2", 64, 64, _settings.getDepthBits(), _settings.getSamples(), _timer); imposter2.setRedrawRate(0.0); // No timed update imposter2.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD); imposter2.setCameraDistanceThreshold(0.1); _root.attachChild(imposter2); final Node scene3 = createModel(); scene3.setTranslation(15, 0, -25); imposter2.attachChild(scene3); _logicalLayer.registerTrigger( new InputTrigger( new KeyPressedCondition(Key.SPACE), new TriggerAction() { public void perform( final Canvas source, final TwoInputStates inputStates, final double tpf) { showImposter = !showImposter; if (showImposter) { _root.detachChild(scene1); _root.detachChild(scene2); _root.detachChild(scene3); imposter0.attachChild(scene1); imposter1.attachChild(scene2); imposter2.attachChild(scene3); _root.attachChild(imposter0); _root.attachChild(imposter1); _root.attachChild(imposter2); keyText.setText("[SPACE] Switch imposters off"); } else { _root.detachChild(imposter0); _root.detachChild(imposter1); _root.detachChild(imposter2); _root.attachChild(scene1); _root.attachChild(scene2); _root.attachChild(scene3); keyText.setText("[SPACE] Switch imposters on"); } } })); final TextureState ts = new TextureState(); ts.setEnabled(true); ts.setTexture( TextureManager.load( "images/ardor3d_white_256.jpg", Texture.MinificationFilter.Trilinear, true)); final MaterialState ms = new MaterialState(); ms.setColorMaterial(ColorMaterial.Diffuse); _root.setRenderState(ms); _root.setRenderState(ts); _root.acceptVisitor(new UpdateModelBoundVisitor(), false); }