Thanks! I'm glad you like it. It is on Steam: Greenlight right now if anyone's interested:https://steamcommunity.com/sharedfiles/filedetails/?id=700074180

I have a whole bunch of small grass models, each one with this function as part of the action. I am not using the waving feature at this point, but I might try it in the future. They simply wait until the player moves a certain distance away, then they re-position themselves at a distance from the player. it's pretty seamless. I also added a feature that checks if they would appear under the water level, or on a steep angle, and it turns them invisible in case they do. I think I'm using around 900 different grass models or so...

Quote:

grass_drop = c_trace(vector(my.x + 1536,my.y,my.z + 1000),vector(my.x + 1536,my.y,my.z -1000),IGNORE_ME|IGNORE_PASSABLE|USE_POLYGON|IGNORE_FLAG2);
if(var_boiled == -1 && hit.z <= ice_level)
{
set(my,INVISIBLE);
my.x = hit.x;
my.y = hit.y;
my.z = hit.z;
}
else if(hit.z < fog_level || normal.z < .95)
{
set(my,INVISIBLE);
my.x = hit.x;
my.y = hit.y;
my.z = hit.z;
}
else
{
reset(my,INVISIBLE);
my.x = hit.x;
my.y = hit.y;
my.z = hit.z;

vec_to_angle (my.pan, normal); // and align it properly
}


This function runs in a while loop in the grass action, and it checks the player's position as compared to the grass position like this: if(planet_character.x > my.x + 768) in all four directions.