@Override public void handle(int aEventType, Object aEventData) { if (aEventType == FlameMain.EVT_ASSET_RELOADED) { Object[] data = (Object[]) aEventData; if (data[0] instanceof ParticleEffect) { ParticleEffect oldEffect = (ParticleEffect) data[0]; int currentCount = value.templates.size; value.templates.removeAll(oldEffect.getControllers(), true); if (value.templates.size != currentCount) { int diff = currentCount - value.templates.size; if (diff > 0) { ParticleEffect newEffect = (ParticleEffect) data[1]; Array<ParticleController> newControllers = newEffect.getControllers(); if (newControllers.size > 0) { for (int i = 0, c = Math.min(diff, newControllers.size); i < c; ++i) value.templates.add(newControllers.get(i)); } } else { value.templates.addAll( ((ParticleEffect) editor.assetManager.get(FlameMain.DEFAULT_BILLBOARD_PARTICLE)) .getControllers()); } controllerPicker.reloadTemplates(); controllerPicker.setValue(value.templates); editor.restart(); } } } }
private void reloadControllers() { Array<ParticleEffect> effects = new Array<ParticleEffect>(); Array<ParticleController> controllers = new Array<ParticleController>(); editor.assetManager.getAll(ParticleEffect.class, effects); for (ParticleEffect effect : effects) { controllers.addAll(effect.getControllers()); } controllerPicker.setLoadedTemplates(controllers); }
public ParticleControllerInfluencerPanel( FlameMain editor, ParticleControllerInfluencer influencer, boolean single, String name, String desc) { super(editor, influencer, name, desc, true, false); controllerPicker.setMultipleSelectionAllowed(!single); EventManager.get().attach(FlameMain.EVT_ASSET_RELOADED, this); }
protected void initializeComponents() { super.initializeComponents(); controllerPicker = new TemplatePickerPanel<ParticleController>(editor, null, this, ParticleController.class) { @Override protected String getTemplateName(ParticleController template, int index) { return template.name; } }; reloadControllers(); controllerPicker.setIsAlwayShown(true); contentPanel.add( new LoaderButton.ParticleEffectLoaderButton(editor, this), new GridBagConstraints( 0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 6), 0, 0)); contentPanel.add( controllerPicker, new GridBagConstraints( 0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 6), 0, 0)); }
@Override public void setValue(ParticleControllerInfluencer value) { super.setValue(value); if (value == null) return; controllerPicker.setValue(value.templates); }