Subversion Repositories AndroidProjects

Rev

Rev 1767 | Rev 1778 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.bauzoid2.graphics.model;

import com.gebauz.bauzoid2.game.Engine;
import com.gebauz.bauzoid2.math.Matrix4;
import com.gebauz.bauzoid2.math.Quaternion;
import com.gebauz.bauzoid2.math.Vector3;
import com.gebauz.bauzoid2.math.Vector4;

/**
 * Created by chris on 14.12.2014.
 */

public class ModelNode
{
    // Constants========================================================================================

    // Embedded Types===================================================================================

    // Fields===========================================================================================

    private String mName = null;

    private int mParentIndex = -1;

    public ModelPart[] parts = null;

    private Matrix4 mGlobalTransform = Matrix4.createIdentity();
    //private Matrix4 mLocalTransform = Matrix4.createIdentity();

        private Vector3 mTranslation = null;
        private Quaternion mRotation = null;
        private Vector3 mScale = null;

    // Methods==========================================================================================

    public ModelNode(String name, int parentIndex)
    {
        mName = name;
        mParentIndex = parentIndex;
    }

        /*
    public void render()
    {
        Engine.graphics.renderStates.pushModelMatrix();
        Engine.graphics.renderStates.model.preMultiply(mLocalTransform);

        //Engine.graphics.getPrimitiveShader().activate(new Vector4(0, 0, 1, 1));

        if (parts != null)
        {
            for (ModelPart part : parts)
            {
                part.render();
            }
        }

        //Engine.graphics.getPrimitiveShader().deactivate();

        Engine.graphics.renderStates.popModelMatrix();
    }*/


        public Matrix4 calcLocalTransform()
        {
                Matrix4 local = Matrix4.createIdentity();
                if (mScale != null)
                        local.multiply(Matrix4.createScale(mScale));
                if (mRotation != null)
                        local.multiply(mRotation.toMatrix());
                if (mTranslation != null)
                        local.multiply(Matrix4.createTranslation(mTranslation));
                return local;
                /*nodes[newNodeIndex].getLocalTransform().identity();
                if (nodeData.scale != null)
                {
                        nodes[newNodeIndex].getLocalTransform().multiply(Matrix4.createScale(nodeData.scale[0], nodeData.scale[1], nodeData.scale[2]));
                }
                if (nodeData.rotation != null)
                {
                        Quaternion q = new Quaternion(nodeData.rotation);
                        nodes[newNodeIndex].getLocalTransform().multiply(q.toMatrix());
                }
                if (nodeData.translation != null)
                {
                        nodes[newNodeIndex].getLocalTransform().multiply(Matrix4.createTranslation(nodeData.translation[0], nodeData.translation[1], nodeData.translation[2]));
                }*/

        }

    // Getters/Setters==================================================================================

    public final String getName() { return mName; }

    /*public final Matrix4 getLocalTransform() { return mLocalTransform; }
    public final void setLocalTransform(Matrix4 transform) { mLocalTransform = transform; }*/

        public final Vector3 getTranslation() { return mTranslation; }
        public final void setTranslation(Vector3 v) { mTranslation = v; }

        public final Quaternion getRotation() { return mRotation; }
        public final void setRotation(Quaternion q) { mRotation = q; }

        public final Vector3 getScale() { return mScale; }
        public final void setScale(Vector3 v) { mScale = v; }

    public final Matrix4 getGlobalTransform() { return mGlobalTransform; }
    public final void setGlobalTransform(Matrix4 transform) { mGlobalTransform = transform; }

    public final int getParentIndex() { return mParentIndex; }
}