Finish buttons, Add docs

This commit is contained in:
Astatin3
2024-03-18 18:00:14 -06:00
parent bab306310a
commit a5467a244c
5 changed files with 60 additions and 40 deletions
+25 -1
View File
@@ -1,2 +1,26 @@
# autoPlanner
(WIP) An auto creation tool for Ridgebotics 2024
(WIP) An auto creation tool for Ridgebotics 2024
### Install
```shell
git clone https://github.com/astatin3/autoPlanner
cd autoPlanner
pip install -r requirements.txt
python3 ./main.py
```
### Usage:
##### "Path Editor" Tab:
- Click to add nodes
- Click on specific points to manipulate paths and nodes
##### "Button editor" Tab:
- Click on specific frames on the timeline to change to that position
- When selected on a frame, the robot's position in that time should show up.
- Drag positional keyframes around to speed up and speed down the robot's travel between nodes
- While a frame is selected, Press the 'e' key to swap to button mode.
- In button mode select buttons on the driver and operator controllers.
##### "Export" Tab:
- Click export, and save to a file
+1 -2
View File
@@ -7,7 +7,7 @@ from sys import exit
import numpy as np
import src.render as render
import src.menu as menu
import src.pathEditor as pathEditor
import src.buttonEditor as buttonEditor
import src.export as export
@@ -30,7 +30,6 @@ render = render.render(pg, screen, topBarHeight, bottomBarHeight)
tabIndex = 0
tabs = [
menu.menu(pg, render),
pathEditor.pathEditor(render),
buttonEditor.buttonEditor(render, pathEditor),
export.export(pg, render)
+25 -4
View File
@@ -6,7 +6,7 @@ render = None
pathEditor = None
bottomBarRect = None
# leftSide = True
# leftSidee = True
ogNodes = []
ogCtrlNodes = []
@@ -40,6 +40,11 @@ buttonPositions = {
'Dpad': ((549,619),220),
'Dpad_Up': ((549,561),70),
'Dpad_Down': ((549,677),70),
'Dpad_Left': ((485,619),70),
'Dpad_Right': ((607,619),70),
'Menu': ((832,411),100),
'Windows': ((629,411),100),
@@ -335,10 +340,10 @@ def toggleControllerButton(btnStr, controllerIndex):
# Dpad Stuff
elif frame['controllers'][controllerIndex][btnStr] == True:
for btn in ['Dpad_Up', 'Dpad_Down', 'Dpad_Left', 'Dpad_Right']:
frame['controllers'][controllerIndex][btn] == False
frame['controllers'][controllerIndex][btn] = False
else:
for btn in ['Dpad_Up', 'Dpad_Down', 'Dpad_Left', 'Dpad_Right']:
frame['controllers'][controllerIndex][btn] == False
frame['controllers'][controllerIndex][btn] = False
frame['controllers'][controllerIndex][btnStr] = True
@@ -375,6 +380,22 @@ def renderXboxControllers():
render.image(render.invert(buttonImages[btn]), offsetControllerButton(btn))
else:
render.image(buttonImages[btn], offsetControllerButton(btn))
if btns['Dpad_Up']:
render.image(buttonImages['Dpad_Up'], offsetControllerButton('Dpad'))
elif btns['Dpad_Down']:
render.image(buttonImages['Dpad_Down'], offsetControllerButton('Dpad'))
elif btns['Dpad_Left']:
render.image(buttonImages['Dpad_Left'], offsetControllerButton('Dpad'))
elif btns['Dpad_Right']:
render.image(buttonImages['Dpad_Right'], offsetControllerButton('Dpad'))
else:
render.image(buttonImages['Dpad'], offsetControllerButton('Dpad'))
# for btn in ['Dpad_Up','Dpad_Down','Dpad_Left','Dpad_Right']:
# if
# render.drawrect((255,255,255), offsetControllerButton(btn))
@@ -390,7 +411,7 @@ def controllerClick(pos):
rect2 = ((pos[0]-(size/2), pos[1]-(size/2), size, size))
return (rect[0]+(rect2[0])*offsetSize,rect[1]+(rect2[1])*offsetSize,rect2[2]*offsetSize,rect2[2]*offsetSize)
for btn in ['A','B','X','Y','Menu','Windows','LB','RB','LT','RT','Left_Stick','Right_Stick']:
for btn in ['A','B','X','Y','Menu','Windows','LB','RB','LT','RT','Left_Stick','Right_Stick','Dpad_Up','Dpad_Down','Dpad_Left','Dpad_Right']:
if render.isInRect(pos, offsetControllerButton(btn)):
toggleControllerButton(btn, i)
-30
View File
@@ -1,30 +0,0 @@
pg = None
render = None
class menu:
name = "Menu"
def __init__(self, tmppg, tmprender):
global pg
pg = tmppg
global render
render = tmprender
def mouseDown(self, pos):
pass
def mouseUp(self, pos):
pass
def mouseMove(self, pos):
pass
def doubleClick(self, pos):
pass
def keyDown(self, key):
pass
def load(self):
render.clear()
pg.display.update()
+9 -3
View File
@@ -1,5 +1,6 @@
import math
import os
import sys
from pygame.locals import *
import numpy as np
@@ -15,7 +16,7 @@ nodeSquareWidth = 3
nodeTickLength = 5
def resource_path(relative_path):
def image_path(relative_path):
try:
base_path = sys._MEIPASS
except Exception:
@@ -46,11 +47,16 @@ class render():
self.elements = []
def invert(self, img):
inv = self.pg.Surface(img.get_rect().size, self.pg.SRCALPHA)
inv.fill((255,255,255,255))
inv.fill((255,255,255))
inv.blit(img, (0,0), None, BLEND_RGB_SUB)
return inv
def line(self, color, pos1, pos2, width):
self.pg.draw.line(self.screen, color, pos1, pos2, round(width/self.offsetSize))
@@ -92,7 +98,7 @@ class render():
def loadImg(self, path):
return self.pg.image.load(resource_path(path)).convert_alpha()
return self.pg.image.load(image_path(path)).convert_alpha()