Originally Posted By: bart_the_13th
[...]store the original mesh vertex position into an array before you do any transformation and use it to restore it back?

That's what I do - within A8, but it shouldn't make a difference in A6.

Something like the following:
Code:
var vertices_stored[20][2000][4];
	
function store_model_vertices()
{
	if(vertices_store_slot <= vertices_stored_max)
	{
		vertices_store_slot += 1;
		vertices_stored_last = vertices_store_slot;
		vertices_max = ent_status(my, 0);
		vertex_counter = 0;
		while(vertex_counter < vertices_max)//save all vertices in an array to get them for resetting the model
		{
			vec_for_mesh(temp, me, vertex_counter);
			vertices_stored[vertices_store_slot][vertex_counter][0] = vertex_counter;
			vertices_stored[vertices_store_slot][vertex_counter][1] = temp.x;
			vertices_stored[vertices_store_slot][vertex_counter][2] = temp.y;
			vertices_stored[vertices_store_slot][vertex_counter][3] = temp.z;
			vertex_counter += 1;
		}
		vertex_counter = 0;
	}
}

function reset_model_vertices()
{
	if(vertices_store_slot < vertices_stored_last)
	{
		vertices_store_slot += 1;
		vertices_max = ent_status(my, 0);
		vertex_counter = 0;
		while(vertex_counter < vertices_max)
		{
			temp.x = vertices_stored[vertices_store_slot][vertex_counter][1];
			temp.y = vertices_stored[vertices_store_slot][vertex_counter][2];
			temp.z = vertices_stored[vertices_store_slot][vertex_counter][3];
			vec_to_mesh(temp, me, vertex_counter);
				
			vertex_counter += 1;
		}
		vertex_counter = 0;
		ent_fixnormals(my,0);//recalculate the normal after moving the vertices
		c_updatehull(me,1);//recalculate the collision
	}
}