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;
}
}
}
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);
}
}
Aggregations