瀏覽代碼

Add baser/baseg/baseb/basea and ior scalars to egg <Material>

rdb 10 年之前
父節點
當前提交
22fb9dec65
共有 2 個文件被更改,包括 42 次插入2 次删除
  1. 21 1
      panda/src/egg/parser.cxx.prebuilt
  2. 21 1
      panda/src/egg/parser.yxx

+ 21 - 1
panda/src/egg/parser.cxx.prebuilt

@@ -2933,7 +2933,24 @@ yyreduce:
   string name = (yyvsp[(3) - (6)]._string);
   double value = (yyvsp[(5) - (6)]._number);
 
-  if (cmp_nocase_uh(name, "diffr") == 0) {
+  if (cmp_nocase_uh(name, "baser") == 0) {
+    LColor base = material->get_base();
+    base[0] = value;
+    material->set_base(base);
+  } else if (cmp_nocase_uh(name, "baseg") == 0) {
+    LColor base = material->get_base();
+    base[1] = value;
+    material->set_base(base);
+  } else if (cmp_nocase_uh(name, "baseb") == 0) {
+    LColor base = material->get_base();
+    base[2] = value;
+    material->set_base(base);
+  } else if (cmp_nocase_uh(name, "basea") == 0) {
+    LColor base = material->get_base();
+    base[3] = value;
+    material->set_base(base);
+
+  } else if (cmp_nocase_uh(name, "diffr") == 0) {
     LColor diff = material->get_diff();
     diff[0] = value;
     material->set_diff(diff);
@@ -3010,6 +3027,9 @@ yyreduce:
   } else if (cmp_nocase_uh(name, "metallic") == 0) {
     material->set_metallic(value);
 
+  } else if (cmp_nocase_uh(name, "ior") == 0) {
+    material->set_ior(value);
+
   } else if (cmp_nocase_uh(name, "local") == 0) {
     material->set_local(value != 0.0);
 

+ 21 - 1
panda/src/egg/parser.yxx

@@ -757,7 +757,24 @@ material_body:
   string name = $3;
   double value = $<_number>5;
 
-  if (cmp_nocase_uh(name, "diffr") == 0) {
+  if (cmp_nocase_uh(name, "baser") == 0) {
+    LColor base = material->get_base();
+    base[0] = value;
+    material->set_base(base);
+  } else if (cmp_nocase_uh(name, "baseg") == 0) {
+    LColor base = material->get_base();
+    base[1] = value;
+    material->set_base(base);
+  } else if (cmp_nocase_uh(name, "baseb") == 0) {
+    LColor base = material->get_base();
+    base[2] = value;
+    material->set_base(base);
+  } else if (cmp_nocase_uh(name, "basea") == 0) {
+    LColor base = material->get_base();
+    base[3] = value;
+    material->set_base(base);
+
+  } else if (cmp_nocase_uh(name, "diffr") == 0) {
     LColor diff = material->get_diff();
     diff[0] = value;
     material->set_diff(diff);
@@ -834,6 +851,9 @@ material_body:
   } else if (cmp_nocase_uh(name, "metallic") == 0) {
     material->set_metallic(value);
 
+  } else if (cmp_nocase_uh(name, "ior") == 0) {
+    material->set_ior(value);
+
   } else if (cmp_nocase_uh(name, "local") == 0) {
     material->set_local(value != 0.0);