summaryrefslogtreecommitdiffstats
path: root/src/entities/Entity.cpp
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2020-10-12 12:57:25 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2020-10-12 12:57:25 +0200
commitd3788a9c70bf857e7990572f1a37184263383e5c (patch)
tree93d41c9ae65761539284f99ddfe5cef8f0e9a9f6 /src/entities/Entity.cpp
parentsync with upstream (diff)
parentMerge pull request #753 from majesticCoding/miami (diff)
downloadre3-d3788a9c70bf857e7990572f1a37184263383e5c.tar
re3-d3788a9c70bf857e7990572f1a37184263383e5c.tar.gz
re3-d3788a9c70bf857e7990572f1a37184263383e5c.tar.bz2
re3-d3788a9c70bf857e7990572f1a37184263383e5c.tar.lz
re3-d3788a9c70bf857e7990572f1a37184263383e5c.tar.xz
re3-d3788a9c70bf857e7990572f1a37184263383e5c.tar.zst
re3-d3788a9c70bf857e7990572f1a37184263383e5c.zip
Diffstat (limited to 'src/entities/Entity.cpp')
-rw-r--r--src/entities/Entity.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp
index cf1dd9e7..2285c93f 100644
--- a/src/entities/Entity.cpp
+++ b/src/entities/Entity.cpp
@@ -1207,4 +1207,37 @@ bool CEntity::IsEntityOccluded(void) {
}
return false;
+}
+
+/*
+0x487A10 - SetAtomicAlphaCB
+0x4879E0 - SetClumpAlphaCB
+*/
+
+RpMaterial* SetAtomicAlphaCB(RpMaterial *material, void *data) {
+ ((RwRGBA*)RpMaterialGetColor(material))->alpha = (uint8)(uintptr)data;
+ return material;
+}
+
+RpAtomic* SetClumpAlphaCB(RpAtomic *atomic, void *data) {
+ RpGeometry *geometry = RpAtomicGetGeometry(atomic);
+ RpGeometrySetFlags(geometry, RpGeometryGetFlags(geometry) | rpGEOMETRYMODULATEMATERIALCOLOR);
+ RpGeometryForAllMaterials(geometry, SetAtomicAlphaCB, (void*)data);
+ return atomic;
+}
+
+void CEntity::SetRwObjectAlpha(int32 alpha) {
+ if (m_rwObject != nil) {
+ switch (RwObjectGetType(m_rwObject)) {
+ case rpATOMIC: {
+ RpGeometry *geometry = RpAtomicGetGeometry((RpAtomic*)m_rwObject);
+ RpGeometrySetFlags(geometry, RpGeometryGetFlags(geometry) | rpGEOMETRYMODULATEMATERIALCOLOR);
+ RpGeometryForAllMaterials(geometry, SetAtomicAlphaCB, (void*)alpha);
+ break;
+ }
+ case rpCLUMP:
+ RpClumpForAllAtomics((RpClump*)m_rwObject, SetClumpAlphaCB, (void*)alpha);
+ break;
+ }
+ }
} \ No newline at end of file