I have a model that I'm using for a thrown grenade that will become invisible under certain conditions. The model is visible just prior to release, but will disappear at least one second after release. After that, the projectile will be invisible so long as, from your point of view, the projectile is in front of either bricks or terrain. However, the projectile will become visible if you see it in front of the skybox.
I don't know if it has anything to do with it, but I'm making the grenade bounce around before it detonates.
I have tried letting Blender automatically set a hierarchy, it proved futile.
AddDamageType("smokegrenadeDirect", '<bitmap:base/client/ui/ci/generic> %1', '%2 <bitmap:base/client/ui/ci/generic> %1',1,1);
AddDamageType("smokegrenadeRadius", '<bitmap:base/client/ui/ci/generic> %1', '%2 <bitmap:base/client/ui/ci/generic> %1',1,0);
datablock ProjectileData(smokegrenadeProjectile)
{
projectileShapeName = "./smokegrenadeThrown.dts";
directDamage = 0;
directDamageType = $DamageType::smokegrenadeDirect;
radiusDamageType = $DamageType::smokegrenadeRadius;
impactImpulse = 1000;
verticalImpulse = 1000;
explosion = smokegrenadeExplosion;
particleEmitter = ImpactGrenadeTrailEmitter;
brickExplosionRadius = 0;
brickExplosionImpact = false; //destroy a brick if we hit it directly?
brickExplosionForce = 0; //30
brickExplosionMaxVolume = 0; //30 //max volume of bricks that we can destroy
brickExplosionMaxVolumeFloating = 0; //max volume of bricks that we can destroy if they aren't connected to the ground (should always be >= brickExplosionMaxVolume)
muzzleVelocity = 38; //50
velInheritFactor = 1.0;
explodeOnPlayerImpact = false;
explodeOnDeath = true;
armingDelay = 2990;
lifetime = 3000;
fadeDelay = 0;
bounceElasticity = 0.5;
bounceFriction = 0.20;
isBallistic = true;
gravityMod = 1.0;
hasLight = false;
lightRadius = 3.0;
lightColor = "1 0 0.0";
uiName = "Smoke Grenade";
};