P_MATERIAL
NAME:
     P_MATERIAL					"material"

DEFINIERT IN:
     <thing/material.h>

BESCHREIBUNG:
     Mapping mit prozentualen Anteilen von Materialien, aus denen ein Objekt 
     besteht.

BEMERKUNGEN:
     Bei SetProp kann man zu Vereinfachung auch ein einzelnes Material oder 
     ein Array aus Materialien angeben. Die Anteile werden dann 
     gleichmaessig verteilt.

BEISPIELE:
     // 100% Eis
     SetProp(P_MATERIAL, MAT_ICE);
     // QueryProp(P_MATERIAL) -> ([MAT_ICE:100])

     // 50% Eis, 50% Misc-Holz
     SetProp(P_MATERIAL, ({ MAT_ICE, MAT_MISC_WOOD }));
     // QueryProp(P_MATERIAL) -> ([MAT_ICE:50, MAT_MISC_WOOD: 50])

     // 60% Eis, 40% Misc-Holz
     SetProp(P_MATERIAL, ([ MAT_ICE: 60, MAT_MISC_WOOD: 40 ]));

     // 100% Papier
     SetProp(P_MATERIAL, MAT_PAPER);
     // QueryProp(P_MATERIAL) -> ([MAT_PAPER:100])

     // 50% Silber, 50% Gold
     SetProp(P_MATERIAL, ({MAT_SILVER, MAT_GOLD}))
     // QueryProp(P_MATERIAL) -> ([MAT_SILVER:50,MAT_GOLD:50])

     // ein weiser Schmied, der was daraus macht:
     int i;
     string *mat, mname, mgroup;
     mat=m_indices(ob->QueryProp(P_MATERIAL));
     i=sizeof(mat);

     write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
     while(i--) {
      // den Namen erkennen/aussprechen:
      // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
      // alles aus Metall wird zu +100% gut erkannt ...
      mname=MATERIALDB->MaterialName(mat[i], WER,
	     ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
			({MATGROUP_METAL, 100})])}));

      // und nur Metalle analysieren ...
      if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
       int j;
       string *mgr;
       mgr=MATERIALDB->GetMatMembership(mat[i]);
       j=sizeof(mgr);
       mgroup=" gehoert zu ";
       while(j--) {
        mgroup+=MATERIALDB->GroupName(mgr[j]);
        if(j>0) mgroup+=", ";
       }
      } else mgroup=" kenne ich nicht";
      printf("%-12.12s: %s\n",mname, mgroup);
     }


SIEHE AUCH:
     Konzepte:	  material, materialerkennung
     Grundlegend: /sys/thing/material.h
     Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
     Listen:	  AllMaterials(), AllGroups(), Dump()
		  materialliste, materialgruppen
     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
		  GroupName(), MaterialName(),
		  GetGroupMembers(), GetMatMembership()
     Sonstiges:	  P_MATERIAL_KNOWLEDGE

7. Mai 2004 Gloinson