#define USE_FOR_LOOP
void main(){
fps_max = 60;
level_load("");
BMAP* skinBmp = bmap_createblack(64, 64, 24);
bmap_fill(skinBmp, COLOR_WHITE, NULL);
ENTITY* terrainEnt = ent_createterrain(NULL, nullvector, 6, 6, 24);
ent_setskin(terrainEnt, skinBmp, 0);
d3d_lines = 3;
vec_set(camera.x, vector(-180, 77, 166));
vec_set(camera.pan, vector(339, -49, 0));
mouse_mode = 4;
VECTOR tempVec, vertexVec;
var total_vertices = ent_vertices(terrainEnt);
var hit_vertex = 0;
int i = 0;
while(terrainEnt){
DEBUG_VAR(total_vertices, 10);
DEBUG_VAR(hit_vertex, 40);
vec_set(tempVec, mouse_dir3d);
vec_scale(tempVec, 1000);
vec_add(tempVec, mouse_pos3d);
if(c_trace(mouse_pos3d, tempVec, IGNORE_PASSABLE + SCAN_TEXTURE) > 0){
hit_vertex = hit.vertex;
draw_point3d(hit.x, COLOR_RED, 100, 3);
}
if(HIT_TARGET && you && ent_type(you) == 4){
#ifdef USE_FOR_LOOP
for(i = 1; i < total_vertices + 1; i++){
vec_for_vertex(vertexVec, terrainEnt, i);
if(vec_dist(vertexVec.x, hit.x) < 10){
CONTACT* contact = ent_getvertex(terrainEnt, NULL, i);
contact.z += time_step;
contact.v = NULL;
ent_setvertex(terrainEnt, contact, i);
draw_point3d(vertexVec.x, COLOR_GREEN, 100, 5);
}
}
#else
CONTACT* contact = ent_getvertex(terrainEnt, NULL, hit_vertex);
draw_point3d(contact.x, COLOR_GREEN, 100, 5);
contact.z += time_step;
contact.v = NULL;
ent_setvertex(terrainEnt, contact, hit_vertex);
#endif
}
wait(1);
}
}