package org.multiverseking.render.VFX; import com.simsilica.es.EntityComponent; import org.multiverseking.core.utility.SubSystem; /** * * @author Eike Foede, roah */ public class VFXRenderComponent implements EntityComponent { private final String name; private final SubSystem subSystem; private final boolean isVisible; /** * Component used for rendering. rotation == Rotation.A && SubSytem == null * && visibility == true. * * @param name Object name to render. */ public VFXRenderComponent(String name) { this(name, null, true); } /** * Component used for rendering. visibility == true. * * @param name object name to render. * @param system does is to be visible. */ public VFXRenderComponent(String name, SubSystem system) { this(name, system, true); } /** * component used for the rendering. * * @param name Object name to render. * @param system is this object belong to another system. * @param isVisible does is to be visible. */ public VFXRenderComponent(String name, SubSystem system, boolean isVisible) { this.name = name; this.subSystem = system; this.isVisible = isVisible; } /** * component used for the rendering. * * @param name Object name to render. * @param system is this object belong to another system. * @param mode does is to be visible. * @param isVisible does is to be visible. */ public VFXRenderComponent(String name, SubSystem system, EmitterMode mode, boolean isVisible) { this.name = name; this.subSystem = system; this.isVisible = isVisible; } public SubSystem getSubSystem() { return subSystem; } public String getName() { return name; } public boolean isIsVisible() { return isVisible; } public VFXRenderComponent cloneAndHide() { return new VFXRenderComponent(getName(), subSystem, false); } public VFXRenderComponent cloneAndShow() { return new VFXRenderComponent(getName(), subSystem, true); } public enum EmitterMode { pulse, instance } }