mirror of
https://github.com/Astatin3/autoPlanner.git
synced 2026-06-08 23:58:00 -06:00
Finish buttons, Add docs
This commit is contained in:
@@ -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
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -376,6 +381,22 @@ def renderXboxControllers():
|
||||
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))
|
||||
|
||||
|
||||
|
||||
def controllerClick(pos):
|
||||
@@ -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
@@ -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
@@ -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,12 +47,17 @@ 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()
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user