/*******************************************************************************
* Copyright (c) 2013 Philip Collin.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* Philip Collin - initial API and implementation
******************************************************************************/
package com.lyeeedar.Roguelike3D.Graphics.Materials;
import java.io.Serializable;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import com.lyeeedar.Roguelike3D.Graphics.Lights.LightManager;
public abstract class MaterialAttribute implements Serializable {
private static final long serialVersionUID = 7055324739119426496L;
protected static final String FLAG = "Flag";
public String name;
protected final boolean isPooled;
protected MaterialAttribute () {
isPooled = true;
}
public MaterialAttribute (String name) {
this.name = name;
isPooled = false;
}
public abstract void bind (ShaderProgram program, LightManager lights);
public abstract MaterialAttribute copy ();
public abstract MaterialAttribute pooledCopy ();
public abstract void free ();
public abstract void set (MaterialAttribute attr);
public String getShaderFlag () {
return name + FLAG;
}
public abstract void create();
public abstract void dispose();
}