3 registered members (NewbieZorro, TipmyPip, 1 invisible),
19,045
guests, and 8
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Suche Feuer Shader
[Re: MasterQ32]
#420186
03/20/13 22:37
03/20/13 22:37
|
Joined: Jun 2008
Posts: 156
Bastiuscha
OP
Member
|
OP
Member
Joined: Jun 2008
Posts: 156
|
AHHH, ok. vielen Dank. Vieleicht ist das ja der Grund...mal schauen. Hier der Code vom Feuer:
/////////////////////////////////untitled.c/////////////////////////////////
//
//Generated by Parted by Martin Coumont (redphoenix)
//
//LiteC Script file from 15.03.2013 ; 17:49:09:
//
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////////header/////////////////////////////////
#ifndef PARTED_VECTOR_DEF
#define PARTED_VECTOR_DEF
VECTOR* parted_temp_vec = { x=0;y=0;z=0; }
VECTOR* parted_temp2_vec = { x=0;y=0;z=0; }
ANGLE* parted_temp_ang = { pan=0;tilt=0;roll=0; }
#endif
#ifndef fire3_DEF
#define fire3_DEF
BMAP* fire3_map = "fire3.tga";
#endif
/////////////////////////////////particle code/////////////////////////////////
function Base_Effect_base(PARTICLE* p) {
p.size = 4.000;
p.alpha = 100.000;
p.red = 128;
p.green = 128;
p.blue = 128;
p.skill_c = 0.5;
p.vel_x = random(2.000)+(-1.000);
p.vel_y = random(2.000)+(-1.000);
p.vel_z = (3.000);
p.lifespan = 40.000;
p.gravity = 0.000;
p.flags = BRIGHT | TRANSLUCENT | MOVE;
p.skill_x = p.vel_x;
p.skill_y = p.vel_y;
p.skill_z = p.vel_z;
p.event = NULL;
}
function New_child1_child_event(PARTICLE* p) {
p.alpha = clamp(p.alpha-5.000* time_step,-1,100);
p.size -= 500* time_step; //war mal 1.000
if(p.alpha < 0 || p.size < 0) p.lifespan = 0;
}
function New_child1_child(PARTICLE* p) {
p.size = 14.000;
p.alpha = 100.000;
p.red = 113;
p.green = 36;
p.blue = 0;
p.skill_c = 0.5;
p.vel_x = random(2.000)+(-1.000);
p.vel_y = random(2.000)+(-1.000);
p.vel_z = (3.000);
p.lifespan = 40.000;
p.gravity = 0.000;
p.flags = BRIGHT | TRANSLUCENT | MOVE;
p.skill_x = p.vel_x;
p.skill_y = p.vel_y;
p.skill_z = p.vel_z;
p.event = New_child1_child_event;
}
function New_child_child_event(PARTICLE* p) {
p.size += 2.000* time_step;
p.alpha = clamp(p.alpha-3.000* time_step,-1,100);
if(p.alpha < 0 || p.size < 0) p.lifespan = 0;
}
function New_child_child(PARTICLE* p) {
p.size = 10.000; //war mal 20.000
p.alpha = random(45.555)+(22.445);
p.red = 120;
p.green = 120;
p.blue = 120;
p.skill_c = 0.5;
p.vel_x = random(1.000)+(-0.500);
p.vel_y = random(1.000)+(-0.500);
p.vel_z = random(1.117)+(0.883);
p.lifespan = 40.000;
p.gravity = 0.000;
p.flags = TRANSLUCENT | MOVE;
p.skill_x = p.vel_x;
p.skill_y = p.vel_y;
p.skill_z = p.vel_z;
p.event = New_child_child_event;
}
function Base_Effect2_base_event(PARTICLE* p) {
if(p.alpha <= 2.000) {
parted_temp_vec.x = 0.000;
parted_temp_vec.y = 0.000;
parted_temp_vec.z = 0.000;
vec_add(parted_temp_vec,p.x);
if(!(total_frames % 6)) {
p.skill_c += 1.000*time_step*6.25;
if(p.skill_c >= 1){
effect(New_child1_child,integer(p.skill_c),parted_temp_vec,nullvector);
p.skill_c -= integer(p.skill_c);
}
}
}
if(p.alpha <= 2.000) {
parted_temp_vec.x = 0.000;
parted_temp_vec.y = 0.000;
parted_temp_vec.z = 0.000;
vec_add(parted_temp_vec,p.x);
if(!(total_frames % 5)) {
p.skill_c += 1.000*time_step*6.25;
if(p.skill_c >= 1){
effect(New_child_child,integer(p.skill_c),parted_temp_vec,nullvector);
p.skill_c -= integer(p.skill_c);
}
}
}
p.size += 0.399* time_step;
if(p.lifespan <= 32.000 || (p.skill_a & 2)) {
p.skill_a |= 2;
p.alpha = clamp(p.alpha-4.000* time_step,-1,100);
}
if(p.alpha < 0 || p.size < 0) p.lifespan = 0;
}
function Base_Effect2_base(PARTICLE* p) {
p.size = random(1.000)+(1.252); //(1.748)+(3.252);
p.alpha = random(27.535)+(25.465);
p.red = 255;
p.green = 128;
p.blue = 64;
p.skill_c = 0.5;
p.vel_x = random(0.287)+(0.013);
p.vel_y = random(0.281)+(0.019);
p.vel_z = random(1.246)+(1.153);
p.lifespan = 50.000;
p.gravity = 0.000;
p.bmap = fire3_map;
p.flags = BRIGHT | TRANSLUCENT | MOVE;
p.skill_x = p.vel_x;
p.skill_y = p.vel_y;
p.skill_z = p.vel_z;
p.event = Base_Effect2_base_event;
}
function New_effect_base_event(PARTICLE* p) {
p.size += 2.000* time_step;
p.alpha = clamp(p.alpha-3.000* time_step,-1,100);
if(p.alpha < 0 || p.size < 0) p.lifespan = 0;
}
function New_effect_base(PARTICLE* p) {
p.size = 8.000;
p.alpha = 52.000;
p.red = 77;
p.green = 136;
p.blue = 225;
p.skill_c = 0.5;
p.vel_x = random(0.199)+(-0.100);
p.vel_y = random(0.199)+(-0.100);
p.vel_z = random(0.781)+(0.618);
p.lifespan = 40.000;
p.gravity = 0.000;
p.flags = TRANSLUCENT | MOVE;
p.skill_x = p.vel_x;
p.skill_y = p.vel_y;
p.skill_z = p.vel_z;
p.event = New_effect_base_event;
}
/////////////////////////////////emitter actions/////////////////////////////////
action Base_Effect_emitter() {
var eff_frac; eff_frac = 0;
wait(1);
while(my) {
parted_temp_vec.x = 0.000;
parted_temp_vec.y = 0.000;
parted_temp_vec.z = 0.000;
vec_add(parted_temp_vec,my.x);
eff_frac += 1.000*time_step*6.25;
if(eff_frac >= 1){
effect(Base_Effect_base,integer(eff_frac),parted_temp_vec,nullvector);
eff_frac -= integer(eff_frac);
}
wait(1);
}
}
action fire() {
var eff_frac; eff_frac = 0;
wait(1);
while(my) {
parted_temp_vec.x = random(10.000)+-5.000;
parted_temp_vec.y = random(10.000)+-5.000;
parted_temp_vec.z = random(0.000)+0.000;
vec_add(parted_temp_vec,my.x);
if(!(total_frames % 2)) {
eff_frac += 2.000*time_step*6.25;
if(eff_frac >= 1){
effect(Base_Effect2_base,integer(eff_frac),parted_temp_vec,nullvector);
eff_frac -= integer(eff_frac);
}
}
parted_temp_vec.x = random(10.000)+-5.000;
parted_temp_vec.y = random(10.000)+-5.000;
parted_temp_vec.z = random(0.000)+0.000;
vec_add(parted_temp_vec,my.x);
if(!(total_frames % 8)) {
eff_frac += 1.000*time_step*6.25;
if(eff_frac >= 1){
effect(New_effect_base,integer(eff_frac),parted_temp_vec,nullvector);
eff_frac -= integer(eff_frac);
}
}
wait(1);
}
}
/////////////////////////////////creation/////////////////////////////////
function untitled_create(VECTOR* position) {
if(!position)position = nullvector;
wait(3);
you = ent_create(NULL,position,Base_Effect_emitter);
if(you) {
vec_add(you.x,vector(0.000,0.000,0.000));
vec_set(you.pan,vector(0.000,0.000,0.000));
vec_set(you.scale_x,vector(500,500,500)); //(1.000,1.000,1.000));
set(you,PASSABLE);
set(you,INVISIBLE);
}
you = ent_create(NULL,position,fire);
if(you) {
vec_add(you.x,vector(28.613,28.613,0.000));
vec_set(you.pan,vector(0.000,0.000,0.000));
vec_set(you.scale_x,vector(500,500,500)); //(1.000,1.000,1.000));
set(you,PASSABLE);
set(you,INVISIBLE);
}
}
|
|
|
Re: Suche Feuer Shader
[Re: Superku]
#420223
03/21/13 13:19
03/21/13 13:19
|
Joined: Jun 2008
Posts: 156
Bastiuscha
OP
Member
|
OP
Member
Joined: Jun 2008
Posts: 156
|
Also wenn deine Zitierung jetzt auf meinem Quellcode basiert, dann werd ich wohl -einfach- auf ein paar Fackeln verzichten und gut. Denn wenn ich das könnte was du schreibst, wäre ich wohl pro genug, garnicht erst mit so nen Problem hier aufzutauchen. :-) Aber wenn ich meine 100.000 anderen Fragen beantwortet habe, werd ich mich auch das noch anschauen. Ich komm nur aus dem Staunen nicht raus, was ihr hier alle drauf habt und frage mich immer wie ihr das alles gelernt habt. Oft sehe ich wie bei Fragen auf das Handbuch verwiesen wird. "Steht ja alles super beschrieben" Ich bin wohl allerdings zu blöd das zu verstehen, denn wenn ich diese Codebeispiele ausprobier, dann klappt das zu 10%  Naja mal sehen was mit mir wird. Das Interesse ist Riesig...hoffentlich reicht auch die Geduld.
|
|
|
Re: Suche Feuer Shader
[Re: Bastiuscha]
#420225
03/21/13 14:15
03/21/13 14:15
|
Joined: Nov 2007
Posts: 2,568 Germany, BW, Stuttgart
MasterQ32
Expert
|
Expert
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
|
Ich komm nur aus dem Staunen nicht raus, was ihr hier alle drauf habt und frage mich immer wie ihr das alles gelernt habt. Wir machen das ja auch schon seit zig Jahren, jede Woche was, manche weniger, manche mehr... Is wie Fahrrad fahren, irgendwann denkt man fast nicht mehr drüber nach 
|
|
|
Re: Suche Feuer Shader
[Re: MasterQ32]
#420229
03/21/13 15:41
03/21/13 15:41
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
|
Ich verstehe echt nicht, wo hier nun das Problem ist oder wieso du meinem Tipp nicht folgen kannst - sorry wenn das nun etwas forsch klingt. Vergleiche bspw. folgende Aktion:
action part_emitter()
{
while(1)
{
effect(my_effect,30,my.x,nullvector);
wait(1);
}
}
Wenn du diese Aktion nun einigen Entities in deinem Level zuweist, stößt du sehr bald an die max_particles-Grenze. Die wahrscheinlich einfachste Methode, dies zu umgehen, ist eine einfache vec_dist-Abfrage:
action part_emitter()
{
while(1)
{
if(vec_dist(my.x,camera.x) < 1000)
{
effect(my_effect,30,my.x,nullvector);
}
wait(1);
}
}
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual Check out my new game: Pogostuck: Rage With Your Friends
|
|
|
|