Search in sources :

Example 1 with Engine

use of net.drewke.tdme.engine.Engine in project tdme by andreasdr.

the class Object3DGroup method dispose.

/**
	 * Dispose
	 */
protected void dispose() {
    // dispose text
    Engine engine = Engine.getInstance();
    TextureManager textureManager = engine.getTextureManager();
    // dispose textures
    FacesEntity[] facesEntities = group.getFacesEntities();
    for (int j = 0; j < facesEntities.length; j++) {
        // get entity's material
        Material material = facesEntities[j].getMaterial();
        //	skip if no material was set up
        if (material == null)
            continue;
        // diffuse texture
        int glDiffuseTextureId = materialDiffuseTextureIdsByEntities[j];
        if (glDiffuseTextureId != Object3DGroup.GLTEXTUREID_NONE && glDiffuseTextureId != Object3DGroup.GLTEXTUREID_NOTUSED) {
            // remove texture from texture manager
            if (material.getDiffuseTexture() != null)
                textureManager.removeTexture(material.getDiffuseTexture().getId());
            // mark as removed
            materialDiffuseTextureIdsByEntities[j] = Object3DGroup.GLTEXTUREID_NONE;
        }
        // specular texture
        int glSpecularTextureId = materialSpecularTextureIdsByEntities[j];
        if (glSpecularTextureId != Object3DGroup.GLTEXTUREID_NONE && glSpecularTextureId != Object3DGroup.GLTEXTUREID_NOTUSED) {
            // remove texture from texture manager
            if (material.getDiffuseTexture() != null)
                textureManager.removeTexture(material.getSpecularTexture().getId());
            // mark as removed
            materialSpecularTextureIdsByEntities[j] = Object3DGroup.GLTEXTUREID_NONE;
        }
        // displacement texture
        int glDisplacementTextureId = materialDisplacementTextureIdsByEntities[j];
        if (glDisplacementTextureId != Object3DGroup.GLTEXTUREID_NONE && glDisplacementTextureId != Object3DGroup.GLTEXTUREID_NOTUSED) {
            // remove texture from texture manager
            if (material.getDisplacementTexture() != null)
                textureManager.removeTexture(material.getDisplacementTexture().getId());
            // mark as removed
            materialDisplacementTextureIdsByEntities[j] = Object3DGroup.GLTEXTUREID_NONE;
        }
        // normal texture
        int glNormalTextureId = materialNormalTextureIdsByEntities[j];
        if (glNormalTextureId != Object3DGroup.GLTEXTUREID_NONE && glNormalTextureId != Object3DGroup.GLTEXTUREID_NOTUSED) {
            // remove texture from texture manager
            if (material.getNormalTexture() != null)
                textureManager.removeTexture(material.getNormalTexture().getId());
            // mark as removed
            materialNormalTextureIdsByEntities[j] = Object3DGroup.GLTEXTUREID_NONE;
        }
    }
}
Also used : FacesEntity(net.drewke.tdme.engine.model.FacesEntity) TextureManager(net.drewke.tdme.engine.subsystems.manager.TextureManager) Material(net.drewke.tdme.engine.model.Material) Engine(net.drewke.tdme.engine.Engine) Joint(net.drewke.tdme.engine.model.Joint)

Example 2 with Engine

use of net.drewke.tdme.engine.Engine in project tdme by andreasdr.

the class Object3DBase method computeTransformations.

/**
	 * Pre render step, computes transformations
	 */
public void computeTransformations() {
    // do transformations if we have a animation
    if (baseAnimation.setup != null) {
        Engine engine = Engine.getInstance();
        // animation timing
        Timing timing = engine.getTiming();
        baseAnimation.lastAtTime = baseAnimation.currentAtTime;
        long currentFrameAtTime = timing.getCurrentFrameAtTime();
        long lastFrameAtTime = timing.getLastFrameAtTime();
        // do progress of base animation
        baseAnimation.lastAtTime = baseAnimation.currentAtTime;
        if (lastFrameAtTime != Timing.UNDEFINED) {
            baseAnimation.currentAtTime += currentFrameAtTime - lastFrameAtTime;
        }
        // do progress of overlay animations
        for (AnimationState overlayAnimationState : overlayAnimationsById.getValuesIterator()) {
            overlayAnimationState.lastAtTime = overlayAnimationState.currentAtTime;
            if (lastFrameAtTime != Timing.UNDEFINED) {
                overlayAnimationState.currentAtTime += currentFrameAtTime - lastFrameAtTime;
            }
        }
        // set up parent transformations matrix
        parentTransformationsMatrix.set(model.getImportTransformationsMatrix());
        if (animationProcessingTarget == Engine.AnimationProcessingTarget.CPU_NORENDERING) {
            parentTransformationsMatrix.multiply(transformationsMatrix);
        }
        // calculate transformations matrices
        computeTransformationsMatrices(model.getSubGroups(), parentTransformationsMatrix, baseAnimation, 0);
        // do transformations in group render data
        Object3DGroup.computeTransformations(object3dGroups, transformationsMatrices);
    } else if (animationProcessingTarget == Engine.AnimationProcessingTarget.CPU_NORENDERING) {
        // set up parent transformations matrix
        parentTransformationsMatrix.set(model.getImportTransformationsMatrix());
        if (animationProcessingTarget == Engine.AnimationProcessingTarget.CPU_NORENDERING) {
            parentTransformationsMatrix.multiply(transformationsMatrix);
        }
        // calculate transformations matrices
        computeTransformationsMatrices(model.getSubGroups(), parentTransformationsMatrix, baseAnimation, 0);
        // do transformations in group render data
        Object3DGroup.computeTransformations(object3dGroups, transformationsMatrices);
    }
}
Also used : Timing(net.drewke.tdme.engine.Timing) Engine(net.drewke.tdme.engine.Engine)

Aggregations

Engine (net.drewke.tdme.engine.Engine)2 Timing (net.drewke.tdme.engine.Timing)1 FacesEntity (net.drewke.tdme.engine.model.FacesEntity)1 Joint (net.drewke.tdme.engine.model.Joint)1 Material (net.drewke.tdme.engine.model.Material)1 TextureManager (net.drewke.tdme.engine.subsystems.manager.TextureManager)1