blob: 5be1bef5ca2f029a675f5d4975cebd6f2d53534d [file] [log] [blame]
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