• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.jme3.scene.plugins.blender.modifiers;
2 
3 import com.jme3.scene.Node;
4 import com.jme3.scene.plugins.blender.BlenderContext;
5 import com.jme3.scene.plugins.blender.file.Pointer;
6 import com.jme3.scene.plugins.blender.file.Structure;
7 
8 /**
9  * This class represents an object's modifier. The modifier object can be varied
10  * and the user needs to know what is the type of it for the specified type
11  * name. For example "ArmatureModifierData" type specified in blender is
12  * represented by AnimData object from jMonkeyEngine.
13  *
14  * @author Marcin Roguski (Kaelthas)
15  */
16 public abstract class Modifier {
17 
18 	public static final String ARRAY_MODIFIER_DATA = "ArrayModifierData";
19 	public static final String ARMATURE_MODIFIER_DATA = "ArmatureModifierData";
20 	public static final String PARTICLE_MODIFIER_DATA = "ParticleSystemModifierData";
21 	public static final String MIRROR_MODIFIER_DATA = "MirrorModifierData";
22 	public static final String SUBSURF_MODIFIER_DATA = "SubsurfModifierData";
23 	public static final String OBJECT_ANIMATION_MODIFIER_DATA = "ObjectAnimationModifierData";
24 
25 	/** This variable indicates if the modifier is invalid (<b>true</b>) or not (<b>false</b>). */
26 	protected boolean invalid;
27 
28 	/**
29 	 * This method applies the modifier to the given node.
30 	 *
31 	 * @param node
32 	 *            the node that will have modifier applied
33 	 * @param blenderContext
34 	 *            the blender context
35 	 * @return the node with applied modifier
36 	 */
apply(Node node, BlenderContext blenderContext)37 	public abstract Node apply(Node node, BlenderContext blenderContext);
38 
39 	/**
40 	 * This method returns blender's type of modifier.
41 	 *
42 	 * @return blender's type of modifier
43 	 */
getType()44 	public abstract String getType();
45 
validate(Structure modifierStructure, BlenderContext blenderContext)46 	protected boolean validate(Structure modifierStructure, BlenderContext blenderContext) {
47 		Structure modifierData = (Structure)modifierStructure.getFieldValue("modifier");
48 		Pointer pError = (Pointer) modifierData.getFieldValue("error");
49 		invalid = pError.isNotNull();
50 		return !invalid;
51 	}
52 }
53