| 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 |