void Unit::DrawDebug() { //Current velocity vector: green float lineX1, lineX2, lineY1, lineY2; C_Vec2<float> line = currentVelocity; line.Normalize(); line *= 3; lineX1 = line.position.x; lineY1 = line.position.y; lineX2 = (line.x * 30 + lineX1); lineY2 = (line.y * 30 + lineY1); App->render->DrawLine((int)lineX1, (int)lineY1, (int)lineX2, (int)lineY2, true, 0, 255, 0); //Desired velocity vector: red C_Vec2<float> line1 = desiredVelocity; line1.Normalize(); line1 *= 3; lineX1 = line1.position.x; lineY1 = line1.position.y; lineX2 = (line1.x * 30 + lineX1); lineY2 = (line1.y * 30 + lineY1); App->render->DrawLine((int)lineX1, (int)lineY1, (int)lineX2, (int)lineY2, true, 255, 0, 0); SDL_Rect rect = collider; App->render->DrawQuad(rect, true, 0, 255, 0, 255, false); //Target position // App->render->DrawCircle(target.x, target.y, 10, true, 255, 255, 255); //Unit position // App->render->DrawCircle((int)round(position.x), (int)round(position.y), 10, true, 255, 255, 255, 255); //Path if (path.Count() > 0) { for (uint i = 0; i < path.Count(); i++) { iPoint position = App->map->MapToWorld(path[i].x, path[i].y); SDL_Rect pos = { position.x, position.y, 8, 8 }; SDL_Rect rect = { 0, 0, 64, 64 }; if (i < (uint)currentNode) rect = { 0, 0, 64, 64 }; App->render->Blit(App->sceneMap->debug_tex, &pos, true, &rect); } } }
//Get the desired velocity: target position - current position void Unit::GetDesiredVelocity() { //TODO 1: Get the velocity we are looking for. //Remember: velocity module must be "maxSpeed" //Set velocity position to entity position for debug C_Vec2<float> velocity = { 0, 0 }; //----------------------------------- velocity.x = (target.x - position.x); velocity.y = (target.y - position.y); velocity.position = position; velocity.Normalize(); velocity *= maxSpeed; //---------------------------------- desiredVelocity = velocity; }