Thanx, it helped some, but when if I set my.cast=ON it goes back to thinking it's the same entity.
Also if I set my.shadow=ON and leave my.cast=OFF, it animates the shadow of the first entity of the same type.
I have shadow_stencil=on if that matters.
It would be nice to have shadows if possible.
Thanx for any help.
Code:
////////////////////////////
//plant.wdl
/////////////////
//a quazi dynamic plant that reacts do dinos
/////////////////
DEFINE kPlantNada 0;
DEFINE kPlantIdle 1;
DEFINE kPlantN 2;
DEFINE kPlantS 3;
DEFINE plantAnimRate my.skill1;
DEFINE plantMode my.skill40;
DEFINE plantWasMode my.skill41;
DEFINE plantNum my.skill42;
var gNumPlants;
function update_dinoplant()
{
while(1)
{
if(dinomgr_dinoHit(40)==1)
{
var dinoDir;
var plantDir;
var dot;
vec_for_angle(dinoDir,dinoTmp.pan);
vec_for_angle(plantDir,my.pan);
dot =vec_dot(plantDir,dinoDir);
//dotProduct =vec_dot(dinoDir,plantDir);
if(dot<0)
{
plantMode =kPlantN;
}
else
{
plantMode =kPlantS;
}
return;
}
wait(1);
}
}
function anim_plantidle()
{
my.skill67 =random(10000);
var percent =0;
var animRate =60;
var animThresh =99.5;
if(my.flag1==1)
{
animRate =plantAnimRate;
}
while(1)
{
percent +=GetSeconds()*animRate;
if(percent>=animThresh)
{
percent =0;
}
ent_animate(my,"idle",percent,0);
if(plantMode!=kPlantIdle)
{
return;
}
wait(1);
}
}
function anim_plantN()
{
my.skill67 =random(10000);
var percent =0;
var animRate =90;
var animThresh =99.5;
ent_animate(me,NULL,0,0);
if(my.flag1==1)
{
animRate =plantAnimRate;
}
while(1)
{
percent +=GetSeconds()*animRate;
if(percent>=animThresh)
{
percent =0;
plantMode =kPlantIdle;
return;
}
ent_animate(my,"north",percent,0);
wait(1);
}
}
function anim_plantS()
{
my.skill67 =random(10000);
var percent =0;
var animRate =90;
var animThresh =99.5;
ent_animate(me,NULL,0,0);
if(my.flag1==1)
{
animRate =plantAnimRate;
}
while(1)
{
percent +=GetSeconds()*animRate;
if(percent>=animThresh)
{
percent =0;
plantMode =kPlantIdle;
return;
}
ent_animate(my,"south",percent,0);
wait(1);
}
}
function update_plant()
{
plantNum =gNumPlants;
gNumPlants+=1;
plantWasMode =kPlantNada;
plantMode =kPlantIdle;
// my.shadow =ON;
// my.cast =ON;
while(1)
{
//start-up
if(plantMode==kPlantIdle && plantWasMode==kPlantNada)
{
anim_plantidle();
update_dinoplant();
}
if(plantMode==kPlantIdle && (plantWasMode==kPlantN || plantWasMode==kPlantS))
{
anim_plantidle();
update_dinoplant();
}
//idle to plant getting bent forward
if(plantMode==kPlantN && plantWasMode==kPlantIdle)
{
anim_plantN();
}
//idle to plant getting bent forward
if(plantMode==kPlantS && plantWasMode==kPlantIdle)
{
anim_plantS();
}
plantWasMode =plantMode;
wait(1);
}
}
action plant_action
{
update_plant();
}
action plant_action2
{
update_plant();
}
action plant_action3
{
update_plant();
}