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
  1. Mai 2004 Gloinson