COFFEE | Iteration, geht nicht ******!

nux95

Erfahrenes Mitglied
Hallo Leutem kurz und knapp, ich rege mich schon seit einer halben Stunde auf wieso der COFFEE Node sowie ein davon unabhängiger Hierarchienode sich geöb fährt sobald ich einen Iterationsnode an den COFFEE Node hänge ****!

Der eigentliche Skript ist erstmal egal:

PHP:
main()
{

	var rad = new(Random); //Random
	rad->Init(89742);
	rad = rad->Get01();		//Random Seed

	var vec01 = vector(rad*multi,rad*multi,rad*multi);	//Random Vector
	vec_out = vec01;

println(Input1);
println(vec_out);

}


Schaltung siehe Anhang

Die Konsole sagt darüber nichts und gibt nur 0 und den vector 'vec_out' aus. :confused::mad:

lg nux
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    3,2 KB · Aufrufe: 16
Hi!

Hm, Du gehst davon aus, Hierarchie-Node und Iterator laufen "parallel"; ist dem so?! Ein schneller Versuch nur mit Hierarchie, Iterator und Objekt-Node bei mir durchläuft die Hierarchie brav, liefert aber vom Iterator nur den letzten Wert.
Ich sehe nicht, wie Du Input1 nutzen möchtest, aber wenn dies dem Objekt-Index entspricht, arbeite doch nur mit Hierarchie-Node und erhalte den Index per Objekt-Index-Node ...?

Liebe Grüße,
Mark.
 
Ahh haha cool danke =)
****t perfekt ;-)

Ich will nähmlich mehreren Texturtags zufällige Werte zuteilen. Dann kann man mittels einer großen textur zB jede Menge Bretter texturieren :)

Werde das als Preset machen und online stellen :D

//EDIT:
Ja ähm und wie komm ich an die Offset Parameter des texturtags ?

mit SetPosition kann ich die Position setzen, aber das Offset ?!

lg nux
 
Zuletzt bearbeitet:
Hi!

Du kannst doch am Node des Texture-Tags die beiden Eingänge Offset X und Offset Y erzeugen und "bespielen" ...?!

Liebe Grüße,
Mark.

//edit: per Coffee:
Code:
main()
{
	var bc = textur->GetContainer();
	bc->SetData(TEXTURETAG_OFFSETX, offsetX);
	bc->SetData(TEXTURETAG_OFFSETY, offsetY);
	textur->SetContainer(bc);
}
 

Anhänge

  • coffeeoffset.jpg
    coffeeoffset.jpg
    19,7 KB · Aufrufe: 44
Stimmt aber ich wuerds gern ueber Coffe machen :D


Ahh so greift man auf die einzelnen Attribute zu :)
Danke ;-)
Funktioniert super ! ^^

lg nux
 
Achja kurze Frage noch.
Kann ich den Hirarchie-Iterator auch in coffee erzeugen ?
Ich kenne den Befehl "->GetNext();" usw aber ich weis nicht wie e man macht dass dann noch ein GetNext usw folgt also eine Iteration.

lg nux
 
Hi!

Code:
main()
{
	var obj = root->GetDown();
	while(obj) {
		println(obj->GetName());
		obj = obj->GetNext();
	}
}

Liebe Grüße,
Mark.

//edit: "root" ist das übergeordnete Objekt der Hierarchie, gelle?! :)
 
Und der Objekt Index ? ^^

Ich wuerds naehmlich lieber ald Skript machen :)
PHP:
var obj = doc->GetActiveObject()->GetDown();
...

sollte auch funktionieren oder ? :)

Wie kann man das mit dem "while" verstehen ?
Whaerend "obj" noch ein Objekt ist nimm das naechste oder was ? ^^

lg nux
 
Hi!
Und der Objekt Index ? ^^
Code:
i++;
:)
PHP:
var obj = doc->GetActiveObject()->GetDown();
...
sollte auch funktionieren oder ? :)
Probiere es doch einfach aus :) Eventuelle Fehler würde ich allerdings noch abfangen, also ob ein Objekt selektiert ist...
Wie kann man das mit dem "while" verstehen ?
Whaerend "obj" noch ein Objekt ist nimm das naechste oder was ? ^^
Solange die Bedingung in Klammern wahr ist, wird die Schleife ausgeführt; d.h. solange die Variable obj nicht "null" ist, wird sie ausgeführt. obj wird null, wenn kein obj->GetNext() existiert (bzw. auch, wenn bereits obj->GetDown() nicht existierte).

Liebe Grüße,
Mark.

//edit: doc->GetActiveObject()->GetDown() liefert natürlich, wenn kein Kindobjekt existiert keinen Fehler, der abgefangen werden muss :rolleyes: es wird einfach nur null zurückgegeben. Anders, wenn kein Objekt selektiert ist...
 
Cool Mark, danke für deine hilfe habe den Skript nun fast fertig. :)

Das mit dem i++ habe ich nicht ganz verstanden, ausserdem ist die documentation wirklich schwer zu verstehen. :(

Stattdesssen habe ich in der while-Schleife eine Variable +1 gesetzt. :)


Das einzige Prolem, welches eigentlich kein Großes ist, ist, dass in der Konsole nach dem Ablauf ein Fehler ausgegeben wird daas obj NIL ist. Das liegt wsch daran dass beim letzten Objekt das obj noch ein OBJECT ist aber danach keine mehr kommt.
Kann man das verhindern ? Son Fehler in der Konsole sieht halt nicht so schön aus :D

Kann man mit COFFEE jetzt noch ein Dialogfenster öffnen, in welchem man Werte eingeben kann die wiederum im Skript verarbeitet werden können ?

In der documentation habe ich mir GeBaseDialog angeschaut, aber ich bekomms nicht gebacken, denn cih versteh ncihts davon :p


hier der Skript:

PHP:
//Variables

var obj = doc->GetActiveObject();
var obj_tag = obj->GetFirstTag();
var bc = obj_tag->GetContainer();
var rndm = new(Random);
rndm->Init(2389294);
rndm = rndm->Get01();
println("Random value = ", tostring(rndm));
var it = rndm;

//Action

while (obj)
{
	it = it+1;

	bc->SetData(TEXTURETAG_OFFSETX, (it*rndm));
	bc->SetData(TEXTURETAG_OFFSETY, (it*rndm));
	obj_tag->SetContainer(bc);

	obj = obj->GetNext();
	obj_tag = obj->GetFirstTag();
}

PS: Praktisch wäre es noch wenn zB die Texturtags nicht an erster Stelle liegen müssten. Ist das auch möglich ?

lg nux
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück