public override string Execute(params string[] parameters) { try { StringBuilder result = new StringBuilder(); if (parameters.Length < 2) { return("Error: Invalid parameters. Usage: showcoll <target: enemy|player|bullet|id|all|none> <mode: quad|line> [params: id]"); } if (parameters[0] == "id" && parameters.Length == 2) { return("Error: You should specify instance ids if the target is id."); } if (parameters[0] != "id" && parameters.Length > 2) { return("Error: Do not specify instance ids if the target is not id."); } switch (parameters[0]) { case "enemy": targetCamera.RenderEnemies(); break; case "player": targetCamera.RenderPlayer(); break; case "bullet": targetCamera.RenderBullets(); break; case "id": { int[] ids = new int[parameters.Length - 2]; for (int i = 0; i < ids.Length; i++) { ids[i] = int.Parse(parameters[i + 2]); } var exists = targetCamera.RenderInstanceID(ids); for (int i = 0; i < exists.Length; i++) { if (!exists[i]) { result.AppendLine($"Warning: The instance with id {ids[i]} does not exist or have collider."); } } } break; case "all": targetCamera.RenderAll(); break; case "none": targetCamera.StopRendering(); break; default: return("Error: Invalid parameters. Usage: showcoll <target: enemy|player|bullet|id|all|none> <mode: quad|line> [params: id]"); } switch (parameters[1]) { case "quad": targetCamera.DrawingMode = GLDraw.DrawMode.QUADS; break; case "line": targetCamera.DrawingMode = GLDraw.DrawMode.LINES; break; default: return("Error: Invalid parameters. Usage: showcoll <target: enemy|player|bullet|id|all|none> <mode: quad|line> [params: id]"); } return(result.ToString()); } catch (Exception) { return("Error: Invalid parameters. Usage: showcoll <target: enemy|player|bullet|id|all|none> <mode: quad|line> [params: id]"); } }