Some comments to the current sources (12/07/2011 23:00)

I had some problems in my project, here some stuff I had to change (where no diff is provided I have far more changes)

Perhaps this might prove useful to someone.

nbproject/build-impl.xml, had to change copylibs, perhaps an eclipse issue here (Helios 2)

[patch]

<!-- error copylibs does not support attributeindexMetaInf="${jar.index.metainf}" -->

<copylibs compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifest="@{manifest}" runtimeclasspath="${run.classpath.without.build.classes.dir}">

[/patch]



build.xml when not building the optional packages, the build wil fail because the directory for dist/opt is missing

[patch]

<target name="-post-jar" > <!-- depends="-create-optional-packages"> -->

<mkdir dir="dist/opt" />

</target>

[/patch]

build.xml will report problem about target all not found…



[patch]

Eclipse Workspace Patch 1.0

#P jme3

Index: src/bullet/native/build.xml

===================================================================

— src/bullet/native/build.xml (revision 7554)

+++ src/bullet/native/build.xml (working copy)

@@ -1,5 +1,5 @@

<?xml version="1.0" encoding="UTF-8"?>

-<project name="build bullet natives" default="all" basedir="…/…/…/">

+<project name="build bullet natives" default="build-bullet-natives" basedir="…/…/…/">

<!-- load cpp compiler ant task -->

<taskdef resource="cpptasks.tasks" classpath="lib/antlibs/cpptasks.jar"/>

<!-- load properties -->

[/patch]



A suggestion, AssetConfig could use a case for comments in the cfg files.



[patch]

Eclipse Workspace Patch 1.0

#P jme3

Index: src/core/com/jme3/asset/AssetKey.java

===================================================================

— src/core/com/jme3/asset/AssetKey.java (revision 7554)

+++ src/core/com/jme3/asset/AssetKey.java (working copy)

@@ -61,7 +61,7 @@

protected static String getExtension(String name){

int idx = name.lastIndexOf(’.’);

//workaround for filenames ending with xml and another dot ending before that (my.mesh.xml)

  •    if(name.toLowerCase().indexOf(&quot;.xml&quot;)==name.length()-4){<br />
    
  •    if(name.toLowerCase().endsWith(&quot;.xml&quot;)){<br />
    

idx = name.substring(0, idx).lastIndexOf(’.’);

if(idx==-1){

idx=name.lastIndexOf(’.’);

[/patch]

[patch]

Eclipse Workspace Patch 1.0

#P jme3

Index: src/blender/com/jme3/scene/plugins/blender/helpers/v249/ModifierHelper.java

===================================================================

— src/blender/com/jme3/scene/plugins/blender/helpers/v249/ModifierHelper.java (revision 7853)

+++ src/blender/com/jme3/scene/plugins/blender/helpers/v249/ModifierHelper.java (working copy)

@@ -488,7 +488,7 @@

protected Node applyObjectAnimationModifier(Node node, Modifier modifier, DataRepository dataRepository) {

AnimData ad = (AnimData) modifier.getJmeModifierRepresentation();

  •   ad.skeleton.getBone(0).setAttachNode(node);<br />
    
  •   ad.skeleton.getBone(0).setAttachmentsNode(node);<br />
    

return this.applyArmatureModifierData(node, modifier, dataRepository);

}

[/patch]

[patch]

Eclipse Workspace Patch 1.0

#P jme3

Index: src/blender/com/jme3/scene/plugins/blender/structures/Modifier.java

===================================================================

— src/blender/com/jme3/scene/plugins/blender/structures/Modifier.java (revision 7846)

+++ src/blender/com/jme3/scene/plugins/blender/structures/Modifier.java (working copy)

@@ -11,6 +11,7 @@

public static final String ARMATURE_MODIFIER_DATA = "ArmatureModifierData";

public static final String PARTICLE_MODIFIER_DATA = "ParticleSystemModifierData";

public static final String MIRROR_MODIFIER_DATA = "MirrorModifierData";

  • public static final String OBJECT_ANIMATION_MODIFIER_DATA = “ObjectAnimationModifierData”;

    /** Blender’s type of modifier. */

    private String type;

    [/patch]

    [patch]

Eclipse Workspace Patch 1.0

#P jme3

Index: src/core/com/jme3/animation/Bone.java

===================================================================

— src/core/com/jme3/animation/Bone.java (revision 7692)

+++ src/core/com/jme3/animation/Bone.java (working copy)

@@ -493,7 +493,7 @@

  • Used internally after model cloning.
  • @param attachNode

    */
  • void setAttachmentsNode(Node attachNode) {
  • public void setAttachmentsNode(Node attachNode) {

    this.attachNode = attachNode;

    }

    [/patch]



    Perhaps someone might need this change on BoneTrack too: (no diff)



    [java]

    /**
  • BoneTracks without a bone index but a bone name can be
  • bound to the specified bone index. This can be used for
  • loading animation tracks only and being able to play them
  • on any bone or any skeleton, as long as the bone name does
  • match

    */

    public void rewireBoneTracks(Skeleton skeleton) {

    if(tracks != null){

    for(BoneTrack tr : tracks){

    if(tr.getTargetBoneIndex() < 0)

    tr.setTargetBoneIndex(skeleton.getBoneIndex(tr.getTargetBoneName()));

    else

    return;

    }

    }

    }

    [/java]



    this one is usefull if you want to load just an animations file without any bones or skeleton info in it

    [patch]

Eclipse Workspace Patch 1.0

#P jme3

Index: src/ogre/com/jme3/scene/plugins/ogre/SkeletonLoader.java

===================================================================

— src/ogre/com/jme3/scene/plugins/ogre/SkeletonLoader.java (revision 7847)

+++ src/ogre/com/jme3/scene/plugins/ogre/SkeletonLoader.java (working copy)

@@ -107,8 +107,11 @@

assert elementStack.peek().equals("tracks");

String boneName = SAXUtil.parseString(attribs.getValue("bone"));

Bone bone = nameToBone.get(boneName);

  •        int index = skeleton.getBoneIndex(bone);<br />
    
  •        track = new BoneTrack(index);<br />
    
  •        if(skeleton != null){<br />
    
  •           int index = skeleton.getBoneIndex(bone);<br />
    
  •           track = new BoneTrack(index);<br />
    
  •        }else<br />
    
  •        	track = new BoneTrack(boneName);<br />
    

} else if (qName.equals("boneparent")) {

assert elementStack.peek().equals("bonehierarchy");

String boneName = attribs.getValue("bone");

@@ -171,6 +174,8 @@

indexToBone.clear();

skeleton = new Skeleton(bones);

} else if (qName.equals("animation")) {

  •    	if(animations == null)<br />
    
  •    		animations = new ArrayList&lt;BoneAnimation&gt;();<br />
    

animations.add(animation);

animation = null;

} else if (qName.equals("track")) {

[/patch]

1 Like

Thanks, I applied what I could. The loading animations without a skeleton isn’t possible, by the way.



@Normen: can you take a look at the build.xml fixes and see if they work for us?

I guess we just need to commit a new version of copylibs, changing build-impl is futile anyway.