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;
import iron.object.MeshObject;
import iron.object.DecalObject;
class GetMaterialNode extends LogicNode {
@ -9,11 +10,27 @@ class GetMaterialNode extends LogicNode {
}
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;
import iron.object.DecalObject;
import iron.object.MeshObject;
import iron.Trait;
import kha.Image;
@ -39,15 +40,28 @@ class UniformsManager extends Trait{
}
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);
if(exists) {
uniformExists = true;
}
}
#end
}
static function removeScene() {