Hi,

I discovered that when changing the bounding box, it is needed to hide the shadow, wait 1 frame and show the shadow again for the shadow size to be updated. But I don't know if it is the correct way to use it.

Code:
reset(ent_player, SHADOW);
wait(1);
set(ent_player, SHADOW);



Sample code:
Code:
#include <acknex.h>
#include <default.c>

/////////////////////////////////////////////////////////////////////////////
// Decal shadow problem App
void main()
{
	// Wait 1 frame
	wait(1);
	
	// Load empty level
	level_load(NULL);
	
	// Position camera
	vec_set(camera.x,vector(-150,0,50));
	
	// Create terrain
	you = ent_createterrain(NULL,NULL,32,32,1000);
	bmap_fill(bmap_for_entity(you,0), vector(60, 60, 60), 100);  
	
	// Create shadow casting entity
	ENTITY *ent_player = ent_create(CUBE_MDL, vector(0, 0, 60), NULL);
	c_setminmax(ent_player);
	set(ent_player, SHADOW);
		
	// Main loop
	while(1)	
	{
		// Morph entity into cube if UP key
		if (key_cuu)
		{
			// Morph entity to cube
			ent_morph(ent_player, CUBE_MDL);
			// Scale cube
			vec_set(ent_player->scale_x, vector(0.5, 0.5, 0.5));		
			//ent_player->min_x = -5;
			//ent_player->max_x = 5;
			
			reset(ent_player, SHADOW);
			wait(1);
			set(ent_player, SHADOW);
				
			// Wait for key release
			while(key_cuu)
			{
				wait(1);
			}
		}
		
		// Morph entity to sphere if DOWN key
		if (key_cud)
		{
			ent_morph(ent_player, SPHERE_MDL);
			// scale sphere
			vec_set(ent_player->scale_x, vector(2, 2, 2));
			
			//ent_player->min_x = -20;
			//ent_player->max_x = 20;
			
			reset(ent_player, SHADOW);
			wait(1);
			set(ent_player, SHADOW);
			
			// Wait for key release
			while(key_cud)
			{
				wait(1);
			}
		}
		
		DEBUG_VAR(ent_player->min_x, 100);
		DEBUG_VAR(ent_player->max_x, 150);
		
		// Wait 1 frame
		wait(1);
	}
}
/////////////////////////////////////////////////////////////////////////////



Best regards.

Last edited by 3dgs_snake; 09/14/11 15:03.