Files
alternativa3d-archive/Alternativa3D7v2/2.7.3.0/src/alternativa/engine3d/loaders/collada/DaeEffectParam.as
2024-10-05 15:14:39 +01:00

86 lines
2.3 KiB
ActionScript

package alternativa.engine3d.loaders.collada {
/**
* @private
*/
public class DaeEffectParam extends DaeElement {
use namespace collada;
private var effect:DaeEffect;
public function DaeEffectParam(data:XML, effect:DaeEffect) {
super(data, effect.document);
this.effect = effect;
}
public function getFloat(setparams:Object):Number {
var floatXML:XML = data.float[0];
if (floatXML != null) {
return parseNumber(floatXML);
}
var paramRef:XML = data.param.@ref[0];
if (paramRef != null) {
var param:DaeParam = effect.getParam(paramRef.toString(), setparams);
if (param != null) {
return param.getFloat();
}
}
return NaN;
}
public function getColor(setparams:Object):Array {
var colorXML:XML = data.color[0];
if (colorXML != null) {
return parseNumbersArray(colorXML);
}
var paramRef:XML = data.param.@ref[0];
if (paramRef != null) {
var param:DaeParam = effect.getParam(paramRef.toString(), setparams);
if (param != null) {
return param.getFloat4();
}
}
return null;
}
private function get texture():String {
var attr:XML = data.texture.@texture[0];
return (attr == null) ? null : attr.toString();
}
public function getSampler(setparams:Object):DaeParam {
var sid:String = texture;
if (sid != null) {
return effect.getParam(sid, setparams);
}
return null;
}
public function getImage(setparams:Object):DaeImage {
var sampler:DaeParam = getSampler(setparams);
if (sampler != null) {
var surfaceSID:String = sampler.surfaceSID;
if (surfaceSID != null) {
var surface:DaeParam = effect.getParam(surfaceSID, setparams);
if (surface != null) {
return surface.image;
}
} else {
return sampler.image;
}
} else {
// Возможно файл был экспортирован стандартным экспортом макса, который забивает на спецификацию и хранит ссылку прямо на image.
return document.findImageByID(texture);
}
return null;
}
public function get texCoord():String {
var attr:XML = data.texture.@texcoord[0];
return (attr == null) ? null : attr.toString();
}
}
}