All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.badlogic.gdx.tools.flame.RegionInfluencerPanel Maven / Gradle / Ivy

The newest version!

package com.badlogic.gdx.tools.flame;

import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;

import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.g3d.particles.influencers.RegionInfluencer;
import com.badlogic.gdx.utils.Array;

/** @author Inferno */
public class RegionInfluencerPanel extends InfluencerPanel implements RegionPickerPanel.Listener {
	JDialog regionSelectDialog;
	RegionPickerPanel regionPickerPanel;

	public RegionInfluencerPanel (FlameMain editor, String name, String desc, RegionInfluencer influencer) {
		super(editor, influencer, name, desc);
		setValue(influencer);
	}

	@Override
	protected void initializeComponents () {
		super.initializeComponents();

		JButton pickButton;
		regionSelectDialog = new JDialog(editor, "Pick regions", true);
		regionPickerPanel = new RegionPickerPanel(this);
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setViewportView(regionPickerPanel);
		regionSelectDialog.setContentPane(scrollPane);
		regionSelectDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);

		addContent(0, 0, pickButton = new JButton("Pick Regions"), false, GridBagConstraints.WEST, GridBagConstraints.NONE);

		pickButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed (ActionEvent arg0) {
				if (editor.isUsingDefaultTexture()) {
					JOptionPane.showMessageDialog(editor, "Load a Texture or an Atlas first.");
					return;
				}

				TextureAtlas atlas = editor.getAtlas();
				String atlasFilename = editor.getAtlasFilename();
				if (atlas != null)
					regionPickerPanel.setAtlas(atlas, atlasFilename);
				else
					regionPickerPanel.setTexture(editor.getTexture());

				regionPickerPanel.revalidate();
				regionPickerPanel.repaint();
				regionSelectDialog.validate();
				regionSelectDialog.repaint();
				regionSelectDialog.pack();
				regionSelectDialog.setVisible(true);
			}
		});
	}

	@Override
	public void onRegionsSelected (Array regions, String atlasName) {
		regionSelectDialog.setVisible(false);
		if (regions.size == 0) return;
		value.clear();
		value.setAtlasName(atlasName);
		value.add((TextureRegion[])regions.toArray(TextureRegion.class));
		editor.setTexture(regions.get(0).getTexture());
		editor.restart();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy