Browse Source

allow group alpha scalar to override texture alpha scalar

David Rose 24 years ago
parent
commit
f03c4c40ff
1 changed files with 37 additions and 17 deletions
  1. 37 17
      panda/src/egg/eggPrimitive.cxx

+ 37 - 17
panda/src/egg/eggPrimitive.cxx

@@ -42,10 +42,14 @@ determine_alpha_mode() {
   if (get_alpha_mode() != AM_unspecified) {
     return this;
   }
-  if (has_texture() && get_texture()->get_alpha_mode() != AM_unspecified) {
-    return get_texture();
+
+  EggRenderMode *result = EggNode::determine_alpha_mode();
+  if (result == (EggRenderMode *)NULL) {
+    if (has_texture() && get_texture()->get_alpha_mode() != AM_unspecified) {
+      result = get_texture();
+    }
   }
-  return EggNode::determine_alpha_mode();
+  return result;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -62,11 +66,15 @@ determine_depth_write_mode() {
   if (get_depth_write_mode() != DWM_unspecified) {
     return this;
   }
-  if (has_texture() &&
-      get_texture()->get_depth_write_mode() != DWM_unspecified) {
-    return get_texture();
+
+  EggRenderMode *result = EggNode::determine_depth_write_mode();
+  if (result == (EggRenderMode *)NULL) {
+    if (has_texture() &&
+        get_texture()->get_depth_write_mode() != DWM_unspecified) {
+      result = get_texture();
+    }
   }
-  return EggNode::determine_depth_write_mode();
+  return result;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -83,11 +91,15 @@ determine_depth_test_mode() {
   if (get_depth_test_mode() != DTM_unspecified) {
     return this;
   }
-  if (has_texture() &&
-      get_texture()->get_depth_test_mode() != DTM_unspecified) {
-    return get_texture();
+
+  EggRenderMode *result = EggNode::determine_depth_test_mode();
+  if (result == (EggRenderMode *)NULL) {
+    if (has_texture() &&
+        get_texture()->get_depth_test_mode() != DTM_unspecified) {
+      result = get_texture();
+    }
   }
-  return EggNode::determine_depth_test_mode();
+  return result;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -104,10 +116,14 @@ determine_draw_order() {
   if (has_draw_order()) {
     return this;
   }
-  if (has_texture() && get_texture()->has_draw_order()) {
-    return get_texture();
+
+  EggRenderMode *result = EggNode::determine_depth_test_mode();
+  if (result == (EggRenderMode *)NULL) {
+    if (has_texture() && get_texture()->has_draw_order()) {
+      result = get_texture();
+    }
   }
-  return EggNode::determine_draw_order();
+  return result;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -124,10 +140,14 @@ determine_bin() {
   if (has_bin()) {
     return this;
   }
-  if (has_texture() && get_texture()->has_bin()) {
-    return get_texture();
+
+  EggRenderMode *result = EggNode::determine_depth_test_mode();
+  if (result == (EggRenderMode *)NULL) {
+    if (has_texture() && get_texture()->has_bin()) {
+      result = get_texture();
+    }
   }
-  return EggNode::determine_bin();
+  return result;
 }
 
 ////////////////////////////////////////////////////////////////////