Git Product home page Git Product logo

shootoff-legacy's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shootoff-legacy's Issues

The documentation needs to be updated with 1.2 specific information.

The shot timer starts as soon as the first shot is detected and is cleared when clear_shots is called.

The shot that is selected has a colored border.

The color of selected shots/regions/targets has changed because white doesn't work for the white background most targets have, thus making the border for shots that missed basically impossible to see.

ShootOFF's webcam feed has off colors.

This is because PIL images are in RGB and OpenCV reads frames in BGR. The conversion from BGR to RGB is currently not happening, which causes red to be interpretted as blue and visa versa. This needs to be fixed both for the webcam feed and for the image handed to the target editor.

ShootOFF's icon sucks.

We agree. All of the ShootOFF contributors at this point are scientists and engineers that would rather be doing math or coding. If you can do better, we'd appreciate it. A contribution should come in the form of a vector graphic with PNG outputs in at least 32x32, 48x48, 128x128, and 256x256. If there are other sizes you'd like to include for other window managers, we'll take 'em! Feel free to license your icon under any open source compatible license you like, we'll include the license with ShootOFF.

Same for YouTube videos!

Training protocols should be able to add information to the shot list.

For example, the shoot for score protocol should show the score for a shot.

This should also cover removing training protocol specific information on the reset method of the protocol.

This is a bit of a PITA.

  1. Columns can be added by using treeview.cget("columns") to get a tuple containing all of the current columns, appending to the tuple, using treeview.configure(columns=tuple) to add the new column, and then reconfiguring every single column (if they aren't reconfigured, old columns will not be there anymore).
  2. Data can be added or removed for a column by calling treeview.item(item, values=list_here). If you delete a column but not the value in the column by modifying the item, the value is still there and will show a stale value in that spot if another column is added.

To complete this feature, the following needs to be done:

  1. ProtocolOperations needs a method to add columns (takes in a tuple of column names). This needs to reconfigure the default columns. This also needs to keep track of all of the columns that have been added.
  2. For plugins, both shot_listener and hit_listener need to get the treeview item added for the shot as a parameter.
  3. ProtocolOperations needs a method to delete all of the columns that have been added by the protocol and to iterate through each item to delete the values in columns that no longer exist.

RandomShoot crashes if you have subtarget tags on regions, but the region you shot doesn't have a subtarget tag

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in call
return self.func(_args)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 531, in callit
func(args)
File "shootoff.py", line 118, in detect_shots
self.process_hit(new_shot)
File "shootoff.py", line 162, in process_hit
self.loaded_training.hit_listener(region, tags)
File "training_protocols\random_shoot__init
.py", line 65, in hit_listener
if tags["subtarget"] == self._subtarget_chain[self._subtarget_index]:
KeyError: 'subtarget'

Raising or lowering a lone region on the target editor throws an exception.

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in call
return self.func(*args)
File "C:\Users\Michael\Documents\ShootOFF\ShootOFF-github\target_editor.py", l
ine 69, in send_backward
self.reverse_regions(above, self._selected_region)
File "C:\Users\Michael\Documents\ShootOFF\ShootOFF-github\target_editor.py", l
ine 72, in reverse_regions
r1 = self._regions.index(region1[0])
ValueError: 1 is not in list

There is no training protocol utilizing TTS

Idea:

  1. Using a target for SimpleBullseye_five_small detect what subtargets there are.
  2. Pick 2-5 regions at random.
  3. Tell the user which regions to shoot using TTS.
  4. Give the user a beep to alert them to draw/start shooting.
  5. Repeat the region they are supposed to shoot when they miss.
  6. Back to 2 after they hit all of them.

Shot detection is too fast, causing shots to be marked multiple times.

Shot detection is currently running once every 30 ms. A user using the SIRT trainer has noted their shots are being marked multiple times.

LaserLyte notes that their trainers stay on for 100 ms at every trigger pull: "The Laser Trainer Cartridge activates for 100 milliseconds each time the firing pin strikes the cartridge."

http://www.laserlyte.com/products/trainer-lt-380

This would cause LaserLyte shots to be marked up to 3 times each.

This is what the makers of SIRT had to say after emailing them, "The SIRT Training Pistol uses a "constant on" laser that remains illuminated as long as the trigger is depressed (shot broken)."

We do not currently have data for how long Laser Ammo.

The training protocols API needs a method to return the centroid of a named target.

Training protocol passes in a target name and gets back the coords of the target's centroid.

Use case talked about here: phrack/ShootOFF#46 (comment)

This should offer two modes:

  1. LARGEST_REGION = calculate the centroid of the target based on the largest region. This is useful for targets with stacked regions like a bullseye.
  2. BOUNDING_BOX = calculate the centroid of the target based on the bounding box for all regions. This is useful for targets where regions are not stacked, such as the 5 small bullseyes target.

LARGEST_REGION should be the default.

The wiki needs to be updated with 1.1 information.

-Selected targets/regions are now outlined in white
-Transparency for ovals only works when running on Windows on the webcam feed, always fine on other OSes
-CLI/GUI for configuring ignored laser color
-Play sound no longer a what-if

ShootOFF needs a FAQ page.

Common questions so far:

  1. Will ShootOFF work with my laser trainer?
  2. How do I change the webcam feed resolution?
  3. Will ShootOFF be ported to Android?
  4. I have an idea, can you implement it?
  5. Your YouTube video(s) suck, why don't you make better ones?

The Target Editor needs a mode for drawing arbitrary polygons.

This would allow users to create regions of shapes that aren't currently supported as long as the shapes represent regular polygons with only straight lines as edges (e.g. IDPA/USPSA targets).

In this mode, each click should add a vertex to the shape that is being drawn and a line should be drawn between the current vertex and the last vertex that was added. The vertex and line should be simulated until the user clicks. Right clicking in this mode should reset the drawing mode and make the shape that was being drawn a solid region. Hitting ctrl+z should remove the last vertex. If there are less than 3 vertexes, an error should be shown and the shape should be deleted.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.