Merge pull request #2372 from QuantumCoderQC/decal-fix

Decal fix
This commit is contained in:
Lubos Lenco 2021-11-01 20:51:37 +01:00 committed by GitHub
commit b2566a8249
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 6 deletions

View file

@ -1,6 +1,7 @@
package armory.logicnode; package armory.logicnode;
import iron.object.MeshObject; import iron.object.MeshObject;
import iron.object.DecalObject;
class GetMaterialNode extends LogicNode { class GetMaterialNode extends LogicNode {
@ -9,11 +10,27 @@ class GetMaterialNode extends LogicNode {
} }
override function get(from: Int): Dynamic { override function get(from: Int): Dynamic {
var object: MeshObject = inputs[0].get();
var slot: Int = inputs[1].get();
if (object == null) return null; var object = inputs[0].get();
return object.materials[slot]; assert(Error, object != null, "The object input must not be null");
#if rp_decals
if (Std.isOfType(object, DecalObject)) {
var decal = cast(object, DecalObject);
return decal.material;
}
#end
if (Std.isOfType(object, MeshObject)) {
var mesh = cast(object, MeshObject);
var slot: Int = inputs[1].get();
if (mesh == null) return null;
return mesh.materials[slot];
}
return null;
} }
} }

View file

@ -1,5 +1,6 @@
package armory.trait.internal; package armory.trait.internal;
import iron.object.DecalObject;
import iron.object.MeshObject; import iron.object.MeshObject;
import iron.Trait; import iron.Trait;
import kha.Image; import kha.Image;
@ -39,15 +40,28 @@ class UniformsManager extends Trait{
} }
function init() { function init() {
var materials = cast(object, MeshObject).materials; if(Std.isOfType(object, MeshObject)){
var materials = cast(object, MeshObject).materials;
for (material in materials){ for (material in materials){
var exists = registerShaderUniforms(material);
if(exists) {
uniformExists = true;
}
}
}
#if rp_decals
if(Std.isOfType(object, DecalObject)){
var material = cast(object, DecalObject).material;
var exists = registerShaderUniforms(material); var exists = registerShaderUniforms(material);
if(exists) { if(exists) {
uniformExists = true; uniformExists = true;
} }
} }
#end
} }
static function removeScene() { static function removeScene() {