Add documentation for mesh animation

stable-5.2
Armin Burgmeier 2010-01-24 23:12:49 +01:00
parent 4a951c75ff
commit 4d4a68e0f6
22 changed files with 1364 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,353 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="599.47015"
height="187.92317"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="animstack2.svg"
inkscape:export-filename="/home/ck/Desktop/animstack.png"
inkscape:export-xdpi="90.079544"
inkscape:export-ydpi="90.079544">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path3867"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path3870"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective3602"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3646"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3646-7"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3708"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3772"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3796"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4314"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-1"
style="overflow:visible">
<path
id="path3870-5"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<inkscape:perspective
id="perspective4908"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-6"
style="overflow:visible">
<path
id="path3867-3"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<inkscape:perspective
id="perspective5516"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-1-4"
style="overflow:visible">
<path
id="path3870-5-5"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="232.20208"
inkscape:cy="82.427533"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(229.06069,-97.879494)">
<g
id="g5536"
transform="matrix(0.48585493,0,0,0.48585493,-117.77042,50.324259)">
<g
transform="translate(30.630173,0)"
id="g3633">
<rect
style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect2816"
width="73.888489"
height="73.888489"
x="70.874451"
y="100.37949" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="95.299164"
y="151.62061"
id="text3590"><tspan
sodipodi:role="line"
id="tspan3592"
x="95.299164"
y="151.62061">5</tspan></text>
</g>
<g
transform="translate(76.897738,224.28571)"
id="g3684">
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:6.31386852;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3622-4"
sodipodi:cx="380.71429"
sodipodi:cy="357.36218"
sodipodi:rx="177.85715"
sodipodi:ry="59.285713"
d="m 558.57144,357.36218 c 0,32.7426 -79.62936,59.28572 -177.85715,59.28572 -98.22779,0 -177.85714,-26.54312 -177.85714,-59.28572 0,-32.74259 79.62935,-59.28571 177.85714,-59.28571 98.22779,0 177.85715,26.54312 177.85715,59.28571 z"
transform="matrix(0.79190751,0,0,0.79190751,-15.776223,-72.064185)" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="225.29436"
y="225.84572"
id="text3624-0"><tspan
sodipodi:role="line"
id="tspan3626-1"
x="225.29436"
y="225.84572">Stand</tspan></text>
</g>
<g
transform="translate(-60,88.571429)"
id="g3689">
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:6.31386852;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3622-7"
sodipodi:cx="380.71429"
sodipodi:cy="357.36218"
sodipodi:rx="177.85715"
sodipodi:ry="59.285713"
d="m 558.57144,357.36218 c 0,32.7426 -79.62936,59.28572 -177.85715,59.28572 -98.22779,0 -177.85714,-26.54312 -177.85714,-59.28572 0,-32.74259 79.62935,-59.28571 177.85714,-59.28571 98.22779,0 177.85715,26.54312 177.85715,59.28571 z"
transform="matrix(0.79190751,0,0,0.79190751,-327.20479,63.650101)" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="-74.190842"
y="361.56"
id="text3624-8"><tspan
sodipodi:role="line"
id="tspan3626-0"
x="-74.190842"
y="361.56">Walk</tspan></text>
</g>
<path
sodipodi:nodetypes="cc"
id="path3762"
d="m 138.44887,237.41432 0,-55.35168"
style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:url(#Arrow1Mend-1)" />
<path
id="path3786"
d="m 15.256528,318.61275 -74.086113,71.25176"
style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:none" />
<path
id="path3786-4"
d="m 261.92136,318.5892 74.1619,70.56979"
style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:none" />
<path
transform="matrix(0.79190751,0,0,0.79190751,-163.04164,2.2302486)"
d="m 558.57144,357.36218 c 0,32.7426 -79.62936,59.28572 -177.85715,59.28572 -98.22779,0 -177.85714,-26.54312 -177.85714,-59.28572 0,-32.74259 79.62935,-59.28571 177.85714,-59.28571 98.22779,0 177.85715,26.54312 177.85715,59.28571 z"
sodipodi:ry="59.285713"
sodipodi:rx="177.85715"
sodipodi:cy="357.36218"
sodipodi:cx="380.71429"
id="path3622-9"
style="fill:none;stroke:#484848;stroke-width:6.31386852;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<g
transform="translate(284.28571,-2.1813049)"
id="g3628">
<rect
style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect2816-8"
width="73.888489"
height="73.888489"
x="450.19861"
y="102.5608" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="460.81473"
y="154.06558"
id="text3590-4"><tspan
sodipodi:role="line"
id="tspan3592-6"
x="460.81473"
y="154.06558">10</tspan></text>
</g>
<g
transform="translate(218.71803,-50.621459)"
id="g3694">
<g
id="g3679"
transform="translate(66.670068,48.487322)">
<path
transform="matrix(0.79190751,0,0,0.79190751,184.54996,4.3643858)"
d="m 558.57144,357.36218 c 0,32.7426 -79.62936,59.28572 -177.85715,59.28572 -98.22779,0 -177.85714,-26.54312 -177.85714,-59.28572 0,-32.74259 79.62935,-59.28571 177.85714,-59.28571 98.22779,0 177.85715,26.54312 177.85715,59.28571 z"
sodipodi:ry="59.285713"
sodipodi:rx="177.85715"
sodipodi:cy="357.36218"
sodipodi:cx="380.71429"
id="path3622"
style="fill:none;stroke:#000000;stroke-width:6.31386852;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<text
id="text3624"
y="302.27429"
x="425.62054"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="302.27429"
x="425.62054"
id="tspan3626"
sodipodi:role="line">Throw</tspan></text>
</g>
</g>
<path
id="path3840"
d="m 176.15585,137.32374 548.08375,0"
style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
<path
id="path3840-0"
d="m 810.5358,138.07647 187.99944,0"
style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
<path
sodipodi:nodetypes="cc"
id="path3762-5"
d="m 771.42856,237.41432 0,-55.35168"
style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:url(#Arrow1Mend-1)" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -144,6 +144,11 @@ oben gez
<col>Integer</col>
<col>Nötige Energie für diese Aktion. Maschinen 500.</col>
</row>
<row>
<col>Animation</col>
<col>Zeichenfolge</col>
<col>Ab OC. Bestimmt die auszuführende Animation im Mesh des Objekts. Funktioniert nur wenn ein solches vorhanden ist. Wenn gegeben werden Facet, FacetBase, FacetTopFace und FacetTargetStretch ignoriert. Die Length mal Delay verschiedenen Animationsphasen werden linear auf die Länge der Animation abgebildet. Wenn Delay 0 ist wird nur Length verwendet und die Animation spielt nicht automatisch. Siehe <emlink href="definition/animations.html">Animationen</emlink> für weitergehende Dokumentation zu Animationen.</col>
</row>
</table>
</text>
<author>Sven2</author><date>April 2002</date>

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE doc SYSTEM "../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../clonk.xsl"?>
<doc>
<title>Animationen</title>
<!-- TODO: Explain how to use a mesh for an object in general -->
<h id="Controls">Animationen</h>
<part>
<text>Ab OC ist es möglich, direkt 3D-Modelle (Meshes) als Grafik für Objekte zu verwenden. Eine der neuen Möglichkeiten die diese Funktionalität bietet ist es, einzelne Animationen miteinander zu kombinieren. So kann zum Beispiel der Clonk leicht während des Laufens oder Springens einen Gegenstand werfen oder flüssig Übergänge zwischen einzelnen Animationen darstellen.</text>
<text>Jedes Objekt hat dazu einen sogenannten "Animation-Stack". Dieser besteht aus beliebig vielen Einträgen mit eindeutiger Priorität, die im folgenden Slots genannt werden. Slots mit höherer Priorität überschreiben Slots mit niedriger Priorität, dies gilt jedoch nur für Bones die von der Animation des höheren Slots überhaupt betroffen sind. Um obiges Beispiel aufzugreifen kann somit also die Werf-Animation eine höhere Priorität als der Lauf- oder Spring-Animation eingeräumt werden, so dass die Armbewegung der Werfanimation die der anderen Animation überschreibt. Da die Werfanimation aber keine Beinbewegung beschreibt wird diese vom Laufen oder Springen übernommen.</text>
<text>Bleibt noch zu klären, wie die Animationen in den einzelnen Slots zustande kommen. Ein Slot kann entweder eine einzelne Animation sein, oder eine Interpolation zwischen zwei anderen Animationen (von denen eine oder beide wieder Interpolationen zweier anderer Animationen sein können). Wird eine solche Interpolation verwendet, so kann zusätzlich eine Gewichtung angegeben werden, das heißt wie sehr die jeweils beiden Animationen zur Gesamtanimation beitragen. Eine Gewichtung von 0 bedeutet, dass nur die erste Animation beiträgt (als ob die zweite gar nicht vorhaden wäre), und eine Gewichtung von 1000 bedeutet, dass nur die zweite Animation beiträgt. Werte dazwischen bewirken einen Übergang zwischen den Animationen. Um erneut auf das Beispiel von oben zurückzukommen: Wenn der Clonk zum Zeitpunkt des Werfens steht, dann aber beginnt loszulaufen bevor die Wurfanimation fertig ist, so liegt es nahe, zu der Stehen-Animation noch eine Laufen-Animation hinzuzufügen, die mit der Zeit immer mehr gewichtet wird bis die Gewichtung 1000 erreicht und der Übergang zum Laufen somit beendet ist. Da die Wurf-Animation in einem anderen Slot stattfindet ist sie von dem Übergang nicht betroffen und wird ganz normal abgespielt.</text>
<text>Folgende Grafik veranschaulicht das Konzept anhand des gewählten Beispiels:</text>
<text><img src="../../images/AnimationStack.png" width="600" height="188"/></text>
<text>Zuerst werden die Animationen "Walk" und "Stand" kombiniert. Das Ergebnis dieser Kombination wird als Animation für Slot 5 verwendet, die einzelne Animation "Throw" hingegen für Slot 10. Da 10 größer als 5 ist überschreibt Throw das Ergebnis der Kombination in Slot 5 (für von "Throw" betroffene Bones). Das Ergebnis davon wird dann schlussendlich auf dem Bildschirm angezeigt.</text>
<h id="Play">Abspielen von Animationen</h>
<text>Der Animation Stack kann durch Scriptfunktionen beeinflusst, das heißt Animationen hinzugefügt oder gelöscht werden. Dazu wird jedem Beitrag (im folgenden Knoten genannt) zu einer Animation - das heißt jede Animation selbst, aber auch jede Kombination von zwei anderen Animationen - eine eindeutige Nummer, die Animationsnummer, zugeordnet. Beim Einfügen einer Animation entstehen nun ein oder zwei neue Knoten (ein Animationsknoten wenn der betreffende Slot leer ist, oder ein Animations- und ein Kombinationsknoten wenn der betroffende Slot bereits Knoten enthält).</text>
<text>Beide Knotentypen haben unterschiedliche Eigenschaften, für Animationsknoten spielt die aktuelle Animationsposition eine Rolle und für Kombinationsknoten die aktuelle Gewichtung. Beide Werte müssen je nach Art der Animation mehr oder weniger oft geändert werden. Hierbei gibt es mehrere Möglichkeiten: Simple Animationen sollen einfach mit der Zeit fortlaufen, andere (zum Beispiel die Laufanimation des Clonks) hängen von der Geschwindigkeit oder der Richtung eines Objekts ab, von der Mausposition (Zielanimationen) oder von der Windgeschwindigkeit (Windrad).</text>
<text>Um sowohl einfache Animationen ohne viel Scriptaufwand abspielen zu können, zum anderen aber auch komplexe Kombinationen zu ermöglichen gibt es sogenannte Animations-Wertquellen (AVPs, von engl. Animation Value Provider). Sie legen fest, wie die gerade zu verwendende Animationsposition oder das Interpolationsgewicht zu bestimmen sind. An die Scriptfunktion <funclink>PlayAnimation</funclink>, die eine neue Animation startet, werden zwei solcher AVPs für Position und Gewicht übergeben. Mit <funclink>SetAnimationPosition</funclink> und <funclink>SetAnimationWeight</funclink> können die beiden im Nachhinein geändert werden.</text>
<text>Folgende AVPs stehen zur Auswahl:</text>
<text><table>
<caption id="AVP">Verfügbare Wertquellen</caption>
<rowh>
<col>Funktion</col>
<col>Kurzbeschreibung</col>
</rowh>
<row>
<col><funclink>Anim_Const</funclink></col>
<col>Ein vorher festgelegter konstanter Wert wird verwendet. Dies ist nützlich wenn sich der Wert nicht ändern soll, oder sich keiner der anderen AVPs eignet, wenn jeden Frame ein neuer AVP diesen Typs mit einem anderen Wert gesetzt wird.</col>
</row>
<row>
<col><funclink>Anim_Linear</funclink></col>
<col>Linear mit der Zeit zu- oder abnehmend. Auch dieser AVP kann verwedet werden wenn sich sonst keiner anbietet, aber es zu aufwendig ist die neue Position jeden Frame auszurechnen. In dem Fall kann die Animation bis zur nächsten genauen Positionsbestimmung fortlaufen.</col>
</row>
<row>
<col><funclink>Anim_X</funclink></col>
<col>Linear mit der X-Position. Bewegung des Objekts nach Links spielt die Animation in die entgegengesetzte Richtung ab. Kann verwendet werden falls die Animation eines Objekts synchron zu seiner horizontalen Bewegung stattfinden soll.</col>
</row>
<row>
<col><funclink>Anim_Y</funclink></col>
<col>Linear mit der Y-Position. Bewegung des Objekts nach Oben spielt die Animation in die entgegengesetzte Richtung ab. Kann verwendet werden falls die Animation eines Objekts synchron zu seiner vertikalen Bewegung stattfinden soll.</col>
</row>
<row>
<col><funclink>Anim_AbsX</funclink></col>
<col>Linear mit der X-Position, allerdings spielt die Animation immer in die gleiche Richtung, egal ob sich das Objekt nach rechts oder nach links bewegt.</col>
</row>
<row>
<col><funclink>Anim_AbsY</funclink></col>
<col>Linear mit der Y-Position, allerdings spielt die Animation immer in die gleiche Richtung, egal ob sich das Objekt nach oben oder nach unten bewegt.</col>
</row>
<row>
<col><funclink>Anim_XDir</funclink></col>
<col>Proportional zur X-Geschwindigkeit eines Objekts.</col>
</row>
<row>
<col><funclink>Anim_YDir</funclink></col>
<col>Proportional zur Y-Geschwindigkeit eines Objekts.</col>
</row>
<row>
<col><funclink>Anim_Action</funclink></col>
<col>Proportional zur Phase der aktuell ausgeführten Action.</col>
</row>
<!-- TODO: There are some more, but I am not convinced they are actually useful -->
</table></text>
<text>Für Beispiele zu den einzelnen AVPs siehe die Dokumentation zu den entsprechenden Scriptfunktion.</text>
<h id="ActMap">Animationen der ActMap</h>
<text>Einzelnen Actions in der <emlink href="definition/actmap.html">ActMap</emlink> kann eine Animation zugeordnet werden. Diese Animationen werden immer in Slot 0 abgespielt. Das bedeutet unter anderem, dass in Slot 0 höchstens eine Animation abgespielt wird, es gibt keine Kombinationen. Es ist auch nicht möglich, diese durch Scriptfunktionen wie <funclink>StopAnimation</funclink> oder <funclink>SetAnimationPosition</funclink> zu beeinflussen. Es ist jedoch sehr wohl möglich, Eigenschaften von ActMap-Animationen abzufragen, zum Beispiel mit <funclink>GetAnimationPosition</funclink>. Es existieren auch negative Slotnummern, sodass man eigene Animationen eine geringere Priorität als ActMap-Animationen zuweisen kann.</text>
</part>
<author>Clonk-Karl</author><date>Januar 2010</date>
</doc>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_AbsX</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
<param>
<type>int</type>
<name>iPosition</name>
<desc>Startwert. Sollte innerhalb des von iBegin und iEnd aufgespannten Intervalls liegen.</desc>
</param>
<param>
<type>int</type>
<name>iBegin</name>
<desc>Beginn des Intervalls.</desc>
</param>
<param>
<type>int</type>
<name>iEnd</name>
<desc>Schluss des Intervalls. Wenn iEnd größer als iBegin ist, so nimmt der Wert mit der Bewegung des Objekts zu, andernfalls nimmt er ab.</desc>
</param>
<param>
<type>int</type>
<name>iLength</name>
<desc>Anzahl Pixel die in X-Richtung zurückgelegt werden müssen um die Animation von iBegin bis nach iEnd durchzuspielen.</desc>
</param>
</params>
</syntax>
<desc>Der Wert hängt von der Bewegung des Objekts in X-Richtung ab. Jeder Pixel den sich das Objekt in X-Richtung bewegt erhöht den Wert etwas. Wenn iEnd erreicht wurde wird der Wert wieder auf iBegin zurückgesetzt. Im Gegensatz zu <funclink>Anim_X</funclink> bewegt sich der Wert immer auf iEnd zu, egal in welche Richtung sich das Objekt bewegt.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("Walk", 5, <funclink>Anim_AbsX</funclink>(0, 0, <funclink>GetAnimationLength</funclink>("Walk"), 20), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "Walk" in Slot 5 ab und überlagert dabei eventuelle andere Animationen in Slot 5. Die Animation wird dabei umso schneller abgespielt je schneller sich das Objekt in X-Richtung bewegt. Nachdem es 20 Pixel zurückgelegt hat ist die Animation einmal von vorne bis hinten durchgespielt worden und fängt wieder von vorne an.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_AbsY</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
<param>
<type>int</type>
<name>iPosition</name>
<desc>Startwert. Sollte innerhalb des von iBegin und iEnd aufgespannten Intervalls liegen.</desc>
</param>
<param>
<type>int</type>
<name>iBegin</name>
<desc>Beginn des Intervalls.</desc>
</param>
<param>
<type>int</type>
<name>iEnd</name>
<desc>Schluss des Intervalls. Wenn iEnd größer als iBegin ist, so nimmt der Wert mit der Bewegung des Objekts zu, andernfalls nimmt er ab.</desc>
</param>
<param>
<type>int</type>
<name>iLength</name>
<desc>Anzahl Pixel die in Y-Richtung zurückgelegt werden müssen um die Animation von iBegin bis nach iEnd durchzuspielen.</desc>
</param>
</params>
</syntax>
<desc>Der Wert hängt von der Bewegung des Objekts in Y-Richtung ab. Jeder Pixel den sich das Objekt in Y-Richtung bewegt erhöht den Wert etwas. Wenn iEnd erreicht wurde wird der Wert wieder auf iBegin zurückgesetzt. Im Gegensatz zu <funclink>Anim_Y</funclink> bewegt sich der Wert immer auf iEnd zu, egal in welche Richtung sich das Objekt bewegt.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("Lift", 5, <funclink>Anim_AbsY</funclink>(0, 0, <funclink>GetAnimationLength</funclink>("Lift"), 25), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "Lift" in Slot 5 ab und überlagert dabei eventuelle andere Animationen in Slot 5. Die Animation wird dabei umso schneller abgespielt je schneller sich das Objekt in Y-Richtung bewegt. Nachdem es 25 Pixel zurückgelegt hat ist die Animation einmal von vorne bis hinten durchgespielt worden und fängt wieder von vorne an.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_Action</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
</params>
</syntax>
<desc>Der Wert hängt von der Phase der aktuellen Action ab. Die Phase wird linear auf die von der Action zur Zeit abgespielte Animation abgebildet (siehe <emlink href="definition/actmap.html">ActMap</emlink>). Dies kann verwendet werden um Animationen synchron zur ActMap-Animation zu spielen.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("Walk", 10, <funclink>Anim_Action</funclink>(), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "Walk" in Slot 10 synchron zur aktuellen Action ab.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_Const</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
<param>
<type>int</type>
<name>iValue</name>
<desc>Zu verwendender Wert.</desc>
</param>
</params>
</syntax>
<desc>Wertangabe für <funclink>PlayAnimation</funclink>, <funclink>SetAnimationPosition</funclink> oder <funclink>SetAnimationWeight</funclink>: Über die komplette Zeitdauer der Animation wird der gegebene konstante Wert verwendet.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("HangleStand", 5, <funclink>Anim_Linear</funclink>(0, 0, 2000, 100, ANIM_Loop), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "HangleStand" ab und verwendet dabei kontant den Wert 1000 als Gewicht (volles Gewicht). Die Position der Animation ist nicht konstant sondern verändert sich (linear) mit der Zeit, siehe <funclink>Anim_Linear</funclink>.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_Linear</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
<param>
<type>int</type>
<name>iPosition</name>
<desc>Startwert. Sollte innerhalb des von iBegin und iEnd aufgespannten Intervalls liegen.</desc>
</param>
<param>
<type>int</type>
<name>iBegin</name>
<desc>Beginn des Intervalls.</desc>
</param>
<param>
<type>int</type>
<name>iEnd</name>
<desc>Schluss des Intervalls. Wenn iEnd größer als iBegin ist, so steigt der Wert mit der Zeit an, andernfalls nimmt er ab.</desc>
</param>
<param>
<type>int</type>
<name>iLength</name>
<desc>Anzahl Frames die ein Durchspielen von iBegin bis iEnd dauert.</desc>
</param>
<param>
<type>int</type>
<name>iEnding</name>
<desc>Bestimmt, was nach dem Erreichen von iEnd geschieht. Folgende Möglichkeiten existieren:
<table>
<rowh><col>Konstante</col><col>Wert</col><col>Beschreibung</col></rowh>
<row><col>ANIM_Loop</col><col>0</col><col>Der Wert wird nach dem Erreichen von iEnd wieder auf iBegin gesetzt und der Durchgang beginnt von neuem.</col></row>
<row><col>ANIM_Hold</col><col>1</col><col>Nach Erreichen von iEnd bleibt der Wert konstant auf iEnd.</col></row>
<row><col>ANIM_Remove</col><col>2</col><col>Nach Erreichen von iEnd wird die zugehörige Animation entfernt wie wenn zum entsprechenden Zeitpunkt <funclink>StopAnimation</funclink> aufgerufen würde. Bei Kombinationsknoten wird der Kindknoten mit der kleineren Gewichtung entfernt.</col></row>
</table>
</desc>
</param>
</params>
</syntax>
<desc>Der Wert nimmt linear mit der Zeit (in Frames) zu oder ab (je nachdem ob iEnd größer oder kleiner als iBegin ist). Anfangs beträgt der Wert iPosition und läuft dann Richtung iEnd. Ein Durchgang von iBegin bis nach iEnd dauert iLength Frames. Wenn iPosition von iBegin abweicht dann wird iEnd bereits früher erreicht sein. iEnding bestimmt, was passiert, wenn das Ende erreicht ist.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code>var start = 0;
var end = <funclink>GetAnimationLength</funclink>("Turn");
if(<funclink>GetWind</funclink>() &lt; 0)
{
start = end;
end = 0;
}
if(<funclink>GetWind</funclink>() != 0)
<funclink>SetAnimationPosition</funclink>(<funclink>GetRootAnimation</funclink>(5), <funclink>Anim_Linear</funclink>(<funclink>GetAnimationPosition</funclink>(<funclink>GetRootAnimation</funclink>(5)), start, end, 7200/<funclink>GetWind</funclink>(), ANIM_Loop));
else
<funclink>SetAnimationPosition</funclink>(<funclink>GetRootAnimation</funclink>(5), <funclink>Anim_Const</funclink>(<funclink>GetAnimationPosition</funclink>(<funclink>GetRootAnimation</funclink>(5))));</code>
<text>Setzt die Geschwindigkeit mit der die Animation im Slot 5 abgespielt wird abhängig von der Windgeschwindigkeit. Weht der Wind nach links so wird die Animation rückwärts abgespielt. Es wäre auch möglich die Position jeden Frame mit <funclink>Anim_Const</funclink> zu setzen, bei der Lösung mit <funclink>Anim_Linear</funclink> reicht es aber aus wenn die Funktion nur alle paar Frames aufgerufen wird, da sich das Windrad in der Zwischenzeit mit konstanter Geschwindigkeit weiter dreht (es wird also die Näherung gemacht, dass die Windgeschwindigkeit für kleine Zeitintervalle konstant ist).</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_X</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
<param>
<type>int</type>
<name>iPosition</name>
<desc>Startwert. Sollte innerhalb des von iBegin und iEnd aufgespannten Intervalls liegen.</desc>
</param>
<param>
<type>int</type>
<name>iBegin</name>
<desc>Beginn des Intervalls.</desc>
</param>
<param>
<type>int</type>
<name>iEnd</name>
<desc>Schluss des Intervalls. Wenn iEnd größer als iBegin ist, so nimmt der Wert mit der Bewegung des Objekts in positiver X-Richtung zu, andernfalls nimmt er ab.</desc>
</param>
<param>
<type>int</type>
<name>iLength</name>
<desc>Anzahl Pixel die in X-Richtung zurückgelegt werden müssen um die Animation von iBegin bis nach iEnd durchzuspielen.</desc>
</param>
</params>
</syntax>
<desc>Der Wert hängt von der Bewegung des Objekts in X-Richtung ab. Jeder Pixel den sich das Objekt in positiver X-Richtung bewegt erhöht den Wert etwas, und jeder Pixel in negative X-Richtung verringert ihn etwas. Wenn iEnd erreicht wurde wird der Wert wieder auf iBegin zurückgesetzt, und wenn iBegin erreicht wurde wird er auf iEnd gesetzt.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("Drive", 5, <funclink>Anim_X</funclink>(0, <funclink>GetAnimationLength</funclink>("Drive"), 0, 15), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "Drive" in Slot 5 ab und überlagert dabei eventuelle andere Animationen in Slot 5. Die Animation wird dabei umso schneller abgespielt je schneller sich das Objekt in X-Richtung bewegt. Nachdem es 15 Pixel zurückgelegt hat ist die Animation einmal von vorne bis hinten durchgespielt worden und fängt wieder von vorne an. Hier wird <funclink>Anim_X</funclink> anstelle von <funclink>Anim_AbsX</funclink> verwendet, da sich die Räder eines Fahrzeugs beim Rückwärtsfahren auch rückwärts drehen sollen.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_XDir</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
<param>
<type>int</type>
<name>iBegin</name>
<desc>Beginn des Intervalls.</desc>
</param>
<param>
<type>int</type>
<name>iEnd</name>
<desc>Schluss des Intervalls. Wenn iEnd größer als iBegin ist, so nimmt der Wert mit größerer XDir zu, sonst nimmt er ab.</desc>
</param>
<param>
<type>int</type>
<name>iMaxXDir</name>
<desc>Größter Wert der XDir der abgebildet soll. Noch größere Geschwindigkeiten führen zum gleichen Animationswert (iEnd).</desc>
</param>
</params>
</syntax>
<desc>Der Wert ist proportional zur X-Geschwindigkeit des Objekts. Die Geschwindigkeiten 0 bis iMaxXDir werden linear auf den Wertebereich von iBegin bis iEnd abgebildet.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("ShowSpeed", 10, <funclink>Anim_XDir</funclink>(0, <funclink>GetAnimationLength</funclink>("ShowSpeed"), 100), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "ShowSpeed" in Slot 10 ab. Diese könnte eine Geschwindigkeitsanzeige in einem Fahrzeug darstellen.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_Y</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
<param>
<type>int</type>
<name>iPosition</name>
<desc>Startwert. Sollte innerhalb des von iBegin und iEnd aufgespannten Intervalls liegen.</desc>
</param>
<param>
<type>int</type>
<name>iBegin</name>
<desc>Beginn des Intervalls.</desc>
</param>
<param>
<type>int</type>
<name>iEnd</name>
<desc>Schluss des Intervalls. Wenn iEnd größer als iBegin ist, so nimmt der Wert mit Bewegung des Objekts in positiver Y-Richtung zu, andernfalls nimmt er ab.</desc>
</param>
<param>
<type>int</type>
<name>iLength</name>
<desc>Anzahl Pixel die in Y-Richtung zurückgelegt werden müssen um die Animation von iBegin bis nach iEnd durchzuspielen.</desc>
</param>
</params>
</syntax>
<desc>Der Wert hängt von der Bewegung des Objekts in Y-Richtung ab. Jeder Pixel den sich das Objekt in positiver Y-Richtung bewegt erhöht den Wert etwas, und jeder Pixel in negative Y-Richtung verringert ihn etwas. Wenn iEnd erreicht wurde wird der Wert wieder auf iBegin zurückgesetzt, und wenn iBegin erreicht wurde wird er auf iEnd gesetzt.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("Scale", 5, <funclink>Anim_Y</funclink>(0, <funclink>GetAnimationLength</funclink>("Scale"), 0, 15), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "Scale" in Slot 5 ab und überlagert dabei eventuelle andere Animationen in Slot 5. Die Animation wird dabei umso schneller abgespielt je schneller sich das Objekt in Y-Richtung bewegt. Nachdem es 15 Pixel zurückgelegt hat ist die Animation einmal von vorne bis hinten durchgespielt worden und fängt wieder von vorne an. Hier wird <funclink>Anim_Y</funclink> anstelle von <funclink>Anim_AbsY</funclink> verwendet, da beim Runterklettern die Animation in die andere Richtung abgespielt werden soll wie beim Raufklettern. iBegin wurde größer als iEnd gewählt, da die Animation in bei Bewegung in negative Y-Richtung (Raufklettern) vorwärts und bei Bewegung in positive Y-Richtung (Herabklettern) rückwärts abgespielt werden soll.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>Anim_YDir</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>
<param>
<type>int</type>
<name>iBegin</name>
<desc>Beginn des Intervalls.</desc>
</param>
<param>
<type>int</type>
<name>iEnd</name>
<desc>Schluss des Intervalls. Wenn iEnd größer als iBegin ist, so nimmt der Wert mit größerer XDir zu, sonst nimmt er ab.</desc>
</param>
<param>
<type>int</type>
<name>iMaxYDir</name>
<desc>Größter Wert der YDir der abgebildet soll. Noch größere Geschwindigkeiten führen zum gleichen Animationswert (iEnd).</desc>
</param>
</params>
</syntax>
<desc>Der Wert ist proportional zur Y-Geschwindigkeit des Objekts. Die Geschwindigkeiten 0 bis iMaxYDir werden linear auf den Wertebereich von iBegin bis iEnd abgebildet.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("ShowSpeed", 10, <funclink>Anim_YDir</funclink>(0, <funclink>GetAnimationLength</funclink>("ShowSpeed"), 100), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "ShowSpeed" in Slot 10 ab. Diese könnte eine Geschwindigkeitsanzeige in einem Aufzug darstellen.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>GetAnimationLength</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>
<param>
<type>string</type>
<name>szAnimation</name>
<desc>Name der Animation deren Länge abgefragt werden soll.</desc>
</param>
</params>
</syntax>
<desc>Gibt die Länge der Animation mit dem angegebenen Namen zurück, oder nil wenn keine solche Animation existiert. Gültige Positionen (für <funclink>PlayAnimation</funclink> und <funclink>SetAnimationPosition</funclink>) liegen zwischen 0 und der Länge der Animation. Die zurückgegebene Zahl entspricht der Animationslänge (wie sie im Modellierungstool eingestellt wurde) in Millisekunden.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("Turn", 5, <funclink>Anim_Linear</funclink>(0, 0, <funclink>GetAnimationLength</funclink>("Turn"), 50, ANIM_Loop), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt eine neue Animation namens "Turn" in Slot 5 ab, die eventuell andere Animationen in Slot 5 überlagert. Ein Animationsdurchgang dauert 50 Frames. Danach fängt die Animation wieder von vorne an.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>GetAnimationName</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>string</rtype>
<params>
<param>
<type>int</type>
<name>iAnimationNumber</name>
<desc>Animationsnummer der Animation deren Name abgefragt werden soll.</desc>
</param>
</params>
</syntax>
<desc>Gibt den Namen der Animation mit der angegebenen Nummer zurück. Falls keine Animation mit der angegebenen Nummer existiert, oder falls es sich dabei um einen Kombinationsknoten handelt gibt die Funktion nil zurück.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>if</funclink>(<funclink>GetAnimationName</funclink>(<funclink>GetRootAnimation</funclink>(5)) == "Walk") <funclink>StopAnimation</funclink>(<funclink>GetRootAnimation</funclink>(5));</code>
<text>Falls in Slot 5 derzeit nur eine Animation gespielt wird, und falls diese "Walk" ist, dann wird sie gestoppt.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>StopAnimation</funclink>
<funclink>GetRootAnimation</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>GetAnimationPosition</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>
<param>
<type>int</type>
<name>iAnimationNumber</name>
<desc>Animationsnummer der Animation deren Position abgefragt werden soll.</desc>
</param>
</params>
</syntax>
<desc>Gibt die Stelle zurück an der die Animation mit der angegebenen Nummer gerade ist. Die Zahl liegt zwischen 0 und <funclink>GetAnimationLength</funclink>(<funclink>GetAnimationName</funclink>(iAnimationNumber)). Falls es keine Animation mit der angegebenen Nummer gibt oder es sich dabei um einen Kombinationsknoten handelt gibt die Funktion nil zurück.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>SetAnimationPosition</funclink>(iAnimationNumber, <funclink>Anim_Const</funclink>(<funclink>GetAnimationPosition</funclink>(iAnimationNumber)+100));</code>
<text>Script für einen Timer: Bei jeder Durchführung wird die Animation um 100 Millisekunden weitergespielt. Falls der Timer im gleichen Abstand aufgerufen wird kann stattdessen auch <funclink>Anim_Linear</funclink> verwendet werden.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>GetAnimationWeight</funclink>
<funclink>SetAnimationWeight</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>GetAnimationWeight</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>
<param>
<type>int</type>
<name>iAnimationNumber</name>
<desc>Animationsnummer der Animation deren Gewichtung abgefragt werden soll.</desc>
</param>
</params>
</syntax>
<desc>Gibt die Gewichtung eines Kombinationsknotens zurück. Die Gewichtung bestimmt, zu welchem Anteil die beiden kombinierten Animationen in die Gesamtanimation einfließen. Die Zahl liegt immer zwischen 0 (erste Animation geht voll ein) und 1000 (zweite Animation geht voll ein). Gibt nil zurück falls es keine Animation mit der angegebenen Nummer gibt, oder falls es sich dabei um einen Animationsknoten handelt.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>if</funclink>(<funclink>GetAnimationWeight</funclink>(iAnimationNumber) == 1000) <funclink>StopAnimation</funclink>(iAnimationNumber);</code>
<text>Entfernt den Kombinationsknoten "iAnimationNumber" wenn seine Gewichtung 1000 erreicht hat.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>GetAnimationPosition</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>GetRootAnimation</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>
<param>
<type>int</type>
<name>iSlot</name>
<desc>Slot dessen oberste Animation zurückgegeben werden soll.</desc>
</param>
</params>
</syntax>
<desc>Gibt die Nummer der obersten Animation im angegebenen Slot zurück. Diese Animation wird mit der Animation der nächstkleineren Slotnummer kombiniert um dann mit der obersten Animation der nächsthöheren Slotnummer kombiniert zu werden, oder, falls es keinen nächsthöheren Slot gibt, auf dem Bildschirm angezeigt zu werden. Enthält der Slot mehr als eine Animation, so ist die oberste Animation immer ein Kombinationsknoten, der die Einzelanimationen oder Kombinationen derselben zu dem Gesamtergebnis des Slots kombiniert. Gibt nil zurück wenn der angegebene Slot gar keine Animation enthält.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>StopAnimation</funclink>(<funclink>GetRootAnimation</funclink>(5));</code>
<text>Entfernt alle Animationen aus Slot 5 sodass dieser im Anschluss keine Animationen mehr enthält.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>StopAnimation</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>PlayAnimation</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>
<param>
<type>string</type>
<name>szAnimationName</name>
<desc>Name der abzuspielenden Animation.</desc>
</param>
<param>
<type>int</type>
<name>iSlot</name>
<desc>Slot im Animation Stack in den die Animation eingefügt werden soll. Siehe <emlink href="definition/animations.html">Animationen</emlink>.</desc>
</param>
<param>
<type>array</type>
<name>Position</name>
<desc>Bestimmt, wie die aktuelle Position der Animation berechnet wird. Diese wird mittels Animationsfunktionen der Form "Anim_" angegeben.</desc>
</param>
<param>
<type>array</type>
<name>Weight</name>
<desc>Bestimmt, wie die aktuelle Gewichtung der Animation berechnet wird, falls die Animation mit einer anderen Animation im gegebenen Slot kombiniert wird. Diese wird mittels Animationsfunktionen der Form "Anim_" angegeben.</desc>
</param>
<param>
<type>int</type>
<name>iSibling</name>
<desc>Falls die Animation mit einer anderen Animation kombiniert wird, dann gibt dies den Knoten an, mit dem die neue Animation kombiniert wird. Falls nicht angegeben oder nil wird die Animation mit der obersten Animation des Slots verknüpft wie sie von <funclink>GetRootAnimation</funclink> zurückgeliefert wird.</desc>
<optional />
</param>
</params>
</syntax>
<desc>Spielt eine neue neue Animation ab. Der Rückgabewert der Funktion ist die Animationsnummer des eingefügten Animationsknotens, mit der die Animation später manipuliert oder wieder entfernt werden kann. Falls im angegebenen Slot bereits Animationen vorhanden sind, so wird auch ein Kombinationsknoten erstellt. Dieser erhält die zurückgegebene Nummer plus 1.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>PlayAnimation</funclink>("Scale", 5, <funclink>Anim_Y</funclink>(0, <funclink>GetAnimationLength</funclink>("Scale"), 0, 15), <funclink>Anim_Const</funclink>(1000));</code>
<text>Spielt die Animation "Scale" ab und überschreibt dabei eventuell bereits existierende Animationen in Slot 5 ohne sie zu entfernen. Die Animationsposition wird nach der Y-Position des Objekts gewählt, so dass die Animation mit der Fortbewegung des Clonks während des Kletterns synchronisiert ist.</text>
</example>
<example>
<code>var swim_up = <funclink>PlayAnimation</funclink>("SwimDiveUp", 5, <funclink>Anim_Linear</funclink>(0, 0, <funclink>GetAnimationLength</funclink>("SwimDiveUp"), 40, ANIM_Loop), <funclink>Anim_Linear</funclink>(0, 0, 1000, 15, ANIM_Remove));
var swim_down = <funclink>PlayAnimation</funclink>("SwimDiveDown", 5, <funclink>Anim_Linear</funclink>(0, 0, <funclink>GetAnimationLength</funclink>("SwimDiveDown"), 40, ANIM_Loop), <funclink>Anim_Const</funclink>(500), swim_up);
var swim_comb = swim_down + 1;</code>
<text>Überlagert eine SwimDiveUp- mit einer SwimDiveDown-Animation so, dass beide Animationen gleich viel Gewicht haben. Das Ergebnis ist, dass der Clonk waagerecht im Wasser liegt. Falls zuvor eine andere Animation in Slot 5 abgespielt wurde, so wird ein 15 Frames dauernder Übergang gemacht an dessen Ende die vorherige Animation entfernt wird. Mithilfe der Variablen swim_comb kann das Gewicht zwischen den beiden Animationen in weiteren Code der Schwimmrichtung angepasst werden.</text>
</example>
</examples>
<related>
<funclink>StopAnimation</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>SetAnimationPosition</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>
<param>
<type>int</type>
<name>iAnimationNumber</name>
<desc>Animationsnummer der Animation deren Position gesetzt werden soll.</desc>
</param>
<param>
<type>array</type>
<name>Position</name>
<desc>Bestimmt, wie die aktuelle Position der Animation berechnet wird. Diese wird mittels Animationsfunktionen der Form "Anim_" angegeben.</desc>
</param>
</params>
</syntax>
<desc>Setzt die Position der angegebenen Animation neu. Rückgabewert true falls der neue AVP gesetzt wurde oder false wenn es keine Animation mit der angegebenen Nummer gibt oder es sich bei ihr um einen Kombinationsknoten handelt.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>SetAnimationPosition</funclink>(iAnimationNumber, <funclink>Anim_Const</funclink>(<funclink>GetAnimationPosition</funclink>(iAnimationNumber)+100));</code>
<text>Script für einen Timer: Bei jeder Durchführung wird die Animation um 100 Millisekunden weitergespielt. Falls der Timer im gleichen Abstand aufgerufen wird kann stattdessen auch <funclink>Anim_Linear</funclink> verwendet werden.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>GetAnimationPosition</funclink>
<funclink>GetAnimationWeight</funclink>
<funclink>SetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink> </related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>SetAnimationWeight</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>
<param>
<type>int</type>
<name>iAnimationNumber</name>
<desc>Animationsnummer der Animation deren Position gesetzt werden soll.</desc>
</param>
<param>
<type>array</type>
<name>Weight</name>
<desc>Bestimmt, wie die aktuelle Gewichtung der Animation berechnet wird, falls die Animation mit einer anderen Animation im gegebenen Slot kombiniert wird. Diese wird mittels Animationsfunktionen der Form "Anim_" angegeben.</desc>
</param>
</params>
</syntax>
<desc>Setzt die Gewichtung der angegebenen Animation neu. Rückgabewert true falls der neue AVP gesetzt wurde oder false wenn es keine Animation mit der angegebenen Nummer gibt oder es sich bei ihr um einen Animationsknoten handelt.</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code>var iAngle = <funclink>Angle</funclink>(0, 0, <funclink>GetXDir</funclink>(), <funclink>GetYDir</funclink>());
<funclink>if</funclink>(iAngle > 360) iAngle = 360 - iAngle;
<funclink>SetAnimationWeight</funclink>(swim_comb, <funclink>Anim_Const</funclink>(500+<funclink>Cos</funclink>(iAngle, 500)));</code>
<text>Ist in swim_comb die Animationsnummer eines Animationsknoten gespeichert, welcher eine Nach-Oben-Schwimmen- und eine Nach-Unten-Schwimmen-Animation kombiniert (siehe Beispiel zu <funclink>PlayAnimation</funclink>), so wird hier das Gewicht kosinusförmig abhängig von der aktuellen Schwimmrichtung gesetzt.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
<funclink>GetAnimationPosition</funclink>
<funclink>SetAnimationPosition</funclink>
<funclink>GetAnimationWeight</funclink>
<funclink>Anim_Const</funclink>
<funclink>Anim_Linear</funclink>
<funclink>Anim_X</funclink>
<funclink>Anim_Y</funclink>
<funclink>Anim_AbsX</funclink>
<funclink>Anim_AbsY</funclink>
<funclink>Anim_XDir</funclink>
<funclink>Anim_YDir</funclink>
<funclink>Anim_Action</funclink> </related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE funcs SYSTEM "../../../clonk.dtd">
<?xml-stylesheet type="text/xsl" href="../../../clonk.xsl"?>
<funcs>
<func>
<title>StopAnimation</title>
<category>Animationen</category>
<version>4.10.0.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>
<param>
<type>int</type>
<name>iAnimationNumber</name>
<desc>Nummer der zu stoppenden Animation.</desc>
</param>
</params>
</syntax>
<desc>Stoppt die Animation mit der angegeben Nummer (wie sie von <funclink>PlayAnimation</funclink> zurückgegeben wird) und entfernt die Animation aus dem zugehörigen Slot im Animations-Stack. Gehört ein Kombinationsknoten zur Nummer, so werden beide Animationen entfernt die kombiniert werden; wenn eine oder beide davon wieder Kombinationen sind werden auch deren Animationen entfernt, und so weiter. Wird die gestoppte Animation mit einer anderen kombiniert, so wird auch der zugehörige Kombinationsknoten entfernt, da es nun nichts mehr zu kombinieren gibt. Gibt true zurück wenn die Animation entfernt wurde, oder 0 wenn dies nicht möglich war (zum Beispiel wenn es keine Animation zur gegebenen Nummer gibt, oder die Animation zu Slot 0 gehört).</desc>
<remark>Siehe die <emlink href="definition/animations.html">Animations-Dokumentation</emlink> für eine Beschreibung des Animationssystems.</remark>
<examples>
<example>
<code><funclink>StopAnimation</funclink>(<funclink>GetRootAnimation</funclink>(5));</code>
<text>Entfernt alle Animationen aus Slot 5 sodass dieser im Anschluss keine Animationen mehr enthält.</text>
</example>
</examples>
<related>
<funclink>PlayAnimation</funclink>
</related>
</func>
<author>Clonk-Karl</author><date>Januar 2010</date>
</funcs>