Materialdefinitionen (C4M)

In Materialdefinitionen wird Aussehen und Verhalten von Materialien festgelegt.
Sektion [Material]
Wert Datentyp Beschreibung
Name Zeichenfolge (max. 15) Name des Materials.
Color 3 x 3 Integer Die drei Farben des Materials als R,G,B, R,G,B, R,G,B (jeweils 0-255).
ColorAnimation Integer 0 oder 1. Farbanimation.
Shape Integer Landschaftsform: 0 glatt, 1 oben glatt, 2 halbrauh, 3 komplett rauh.
Density Integer Dichte: 50 fest, 25 flüssig (andere Werte nicht zulässig).
Friction Integer 0-100. Reibung.
MinHeightCount Integer GetMaterialCount zählt die Materialpixel erst ab der angegebenen Höhe.
SplashRate Integer Zufallswert im Sinne von !Random(<Wert>) : In 1 von <Wert> Fällen wird der Materialpixel (PXS) nach Aufprall mit dem Boden (Boden hat höhere Density als PXS) aufspringen. Standardwert 10.
DigFree Integer 0 oder 1. Bestimmt, ob das Material freigegraben werden kann.
BlastFree Integer 0 oder 1. Bestimmt, ob das Material freigesprengt werden kann.
Blast2Object Definitions-ID Freigesprengte Objekte.
Dig2Object Definitions-ID Freigegrabene Objekte.
Dig2ObjectRatio Integer ca. 100-500. Massenverhältnis beim Freigraben.
Dig2ObjectRequest Integer 0 oder 1. Wenn 1, werden Objekte nur auf Wunsch freigegraben.
Blast2ObjectRatio Integer ca. 100-500. Massenverhältnis beim Freisprengen.
Blast2PXSRatio Integer Massenverhältnis beim Freisprengen von Kleinmaterial.
Instable Integer 0 oder 1. Stabilität.
MaxAirSpeed Integer ca. 10-100. Fallgeschwindigkeit.
MaxSlide Integer Rutschreichweite.
WindDrift Integer Abtrieb durch Wind.
Inflammable Integer Entzündbarkeit.
Incindiary Integer Entzündung durch dieses Material.
Corrode Integer Verätzung durch dieses Material.
Corrosive Integer Ätzbarkeit.
Extinguisher Integer Feuerlöschkraft.
Soil Integer Nährboden für Pflanzen.
TempConvStrength Integer Stärke der Temperaturumwandlung.
BlastShiftTo Zeichenfolge (max. 15) Materialverwandlung bei Sprengung.
InMatConvert Zeichenfolge (max. 15) In diesem Material verwandelt sich das Material...
InMatConvertTo Zeichenfolge (max. 15) ...in dieses Material...
InMatConvertDepth Integer ...wenn das Materialpixel zur angegebenen Tiefe im angegebenen Material ist. Ab CE.
AboveTempConvert Integer Oberhalb dieser Temperatur verwandelt sich das Material...
AboveTempConvertTo Zeichenfolge (max. 15) ...in dieses Material.
AboveTempConvertDir Integer Richtung der Umwandlung: von oben nach unten (0), von unten nach oben (1)
BelowTempConvert Integer Unterhalb dieser Temperatur verwandelt sich das Material...
BelowTempConvertTo Zeichenfolge (max. 15) ...in dieses Material.
BelowTempConvertDir Integer Richtung der Umwandlung: von oben nach unten (0), von unten nach oben (1)
Alpha 6 Integer Durchsichtigkeit für die drei Materialfarben ober- und unterirdisch.
Placement Integer 0-100. Dieser Wert wird für die Nachbeleuchtung der Landschaft verwendet, und wird normalerweise automatisch aus den anderen Materialwerten berechnet.
TextureOverlay Zeichenfolge (max. 15) Standardtextur für dieses Material, die vom Landschaftsgenerator zusätzlich benutzt wird.
OverlayType Integer Bitmaske für die Berechnung der Textur auf dem Material. Bit 0 (1): Exakt (kein Zoom), Bit 1 (2): Keine Textur, Bit 2 (4): Extragroß gezoomt, Bit 3 (8): Textur auf Graustufen aufrechnen.
PXSGfx Zeichenfolge (max. 30) Grafik für lose Materialpixel. Die Grafik sollte als Materialtextur geladen sein.
PXSGfxRt 4 Integer Zielrechteck auf die Grafik für lose Materialpixel. Es werden weitere Phasen rechts und unterhalb der angegebenen Grafik benutzt. Die Grafik sollte immer oben links beginnen, und die gesamte Texturgröße einnehmen.

Benutzerdefinierte Reaktionen

Zusätzlich zu den Standardroutinen kann jedes Material ab CR weitere Reaktionen definieren, die ausgeführt werden, wenn das Material durch lose Pixel (z.B. Regen oder Explosionsstreuung) oder Materialbewegung (z.B. beim Angraben eines Sees) auf ein anderes Material trifft:
In der .c4m-Datei: Beliebig viele Sektionen [Reaction]
Wert Datentyp Beschreibung
Type Zeichenfolge Art der Reaktion, die stattfinden soll. Siehe Tabelle.
TargetSpec Zeichenfolge Zielmaterial, mit dem das lose Material reagiert. Siehe Materialspezifikationen.
ScriptFunc Zeichenfolge Nur für Reaktionstyp Script: Name der Scriptfunktion, die das Verhalten bestimmt.
ExecMask Integer Bitmaske, die angibt, in welcher Situation die Reaktion stattfindet. Bitindizes sind die Reaktionsereignisse. Standardwert -1 für alle Ereignisse.
Reverse Boolean Normalerweise gibt die Reaktion an, was mit losem Material der Definition, in der die Reaktion definiert ist, passiert, wenn es auf festes Material vom in TargetSpec angegebenen Typ trifft. Ist Reverse gesetzt, so wird die Definition umgekehrt.
InverseSpec Boolean Wenn wahr, wird die Reaktion für alle anderen Materialien (inklusive "Sky"), die die Bedingung in TargetSpec nicht erfüllen, verwendet.
CheckSlide Boolean Wenn wahr, wird vor dem Aufruf der Reaktion das Standardverhalten (Sprenkeln am Boden und Abrutschen nach MaxSlide) ausgeführt.
Depth Integer Nur für Reaktionstyp Convert: Tiefe im Zielmaterial, ab der Material umgewandelt wird.
ConvertMat String Nur für Reaktionstyp Convert: Material, in das umgewandelt wird. Bei Angabe von Sky wird das Material vernichtet.
CorrosionRate Integer Nur für Reaktionstyp Corrode: Chance darauf, dass verätzt wird.
Reaktionsereignisse
Name Wert Ereignis
MEE_PXSPos 0 Check vor jedem Bewegungsframe eines losen Materialpixels gegen das Hintergrundmaterial
MEE_PXSMove 1 Check gegen jedes Pixel, das ein loses Materialpixel in seiner Bewegung berührt
MEE_MassMove 2 Bei größeren Materialbewegungen (z.B. angegrabener See):Check des bewegten Materials gegen das Material, über das es sich bewegt
Reaktionstypen
Name Verhalten
Script Für jedes Aufeinandertreffen wird die in ScriptFunc angegebene Scriptfunktion aufgerufen.
Convert Das Material wird in ein anderes umgewandelt. Vergleichbar mit dem Verhalten von Schnee in Wasser.
Poof Sowohl das lose als auch das feste Material werden entfernt. Außerdem werden wird mit Chance 1:3 eine kleine Rauchwolke erzeugt und mit Chance 1:3 der Sound "Pshshsh" abgespielt. Vergleichbar mit dem Verhalten von Wasser in Lava.
Corrode Das lose Material ätzt das Zielmaterial mit Chance CorrosionRate weg und entfernt sich dabei selber. Wenn geätzt wird, wird mit Chance 1:5 eine kleine Rauchwolke erzeugt und mit Chance 1:20 der Sound "Corrode" abgespielt. Vergleichbar mit dem Verhalten von Säure auf Erde.
Insert Das lose Material wird als festes Material eingefügt. Vergleichbar mit dem Verhalten aller Materialien, wenn sie auf ein Material gleicher oder höherer Dichte treffen.
Materialspezifikationen
Name Materialien
Materialname Entsprcht die Spezifikation direkt dem Namen eines anderen Materials, wird dieses benutzt.
All Alle Materialien inklusive "Sky"
Solid Alle festen Materialien
SemiSolid Alle festen und flüssigen Materialien
Background Alle Hintergrundmaterialien, inklusive "Sky"
Sky Das Hintergrundmaterial.
Incindiary Alle anzündenden Materialien.
Extinguisher Alle feuerlöschenden Materialien.
Inflammable Alle entzündbaren Materialien.
Corrosive Alle verätzbaren Materialien.
Corrode Alle ätzenden Materialien.

Reaktionstyp 'Script'

Mit dieser sehr rechenintensiven Methode kann das Materialveralten frei bestimmt werden. Die Scriptfunktion sollte global deklariert haben und folgende Parameter besitzen:
Parameternummer(n) Name(n) Datentyp Beschreibung
1,2 iX, iY Integer Position des losen Materials. Die Parameter können verändert werden, um das Materialpixel zu verschieben.
3,4 iLSPosX, iLSPosY Integer Position in der Landschaft, auf die das Material trifft.
5,6 iXDir, iYDir Integer Geschwindigkeit (in 1/100px) der Bewegung des Materials. Kann geändert werden, um die Geschwindigkeit des Materialpixels zu beeinflussen. Nicht für MassMover.
7 iPxsMat Integer Materialnummer des losen Materials. Nützlich, wenn die gleiche Funktion für Reaktionen mehrerer Materialen verwendet wird
8 iLsMat Integer Materialnummer des festen Materials.
9 iEvent Integer Siehe Reaktionsereignisse.
Der Rückgabewert der Funktion sollte entweder 1 für Entfernen oder 0 für Erhalten des losen Materials sein.
Sven2, Dezember 2006