mirror of
https://github.com/bombsquad-community/plugin-manager.git
synced 2025-10-08 14:54:36 +00:00
Add new mod: Manual Camera
This commit is contained in:
parent
620a9af71e
commit
d3df12110f
1 changed files with 226 additions and 0 deletions
226
plugins/utilities/manual_camera.py
Normal file
226
plugins/utilities/manual_camera.py
Normal file
|
|
@ -0,0 +1,226 @@
|
|||
# ba_meta require api 8
|
||||
|
||||
###################
|
||||
# Credits - Droopy#3730. #
|
||||
###################
|
||||
|
||||
# Don't edit .
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import _babase, babase
|
||||
import bascenev1 as bs
|
||||
import bauiv1 as bui
|
||||
from bauiv1lib.mainmenu import MainMenuWindow
|
||||
|
||||
|
||||
class Manual_camera_window:
|
||||
def __init__(self):
|
||||
self._root_widget = bui.containerwidget(
|
||||
on_outside_click_call=None,
|
||||
size=(0,0))
|
||||
button_size = (50,50)
|
||||
self._text = bui.textwidget(parent=self._root_widget,
|
||||
scale=0.65,
|
||||
color = (0.75, 0.75, 0.75),
|
||||
text='Cam Position',
|
||||
size=(0, 0),
|
||||
position=(500, 185),
|
||||
h_align='center',
|
||||
v_align='center')
|
||||
self._xminus = bui.buttonwidget(parent=self._root_widget,
|
||||
size=button_size,
|
||||
label=babase.charstr(babase.SpecialChar.LEFT_ARROW),
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(429, 60),
|
||||
on_activate_call=babase.Call(self._change_camera_position, 'x-'))
|
||||
self._xplus = bui.buttonwidget(parent=self._root_widget,
|
||||
size=button_size,
|
||||
label=babase.charstr(babase.SpecialChar.RIGHT_ARROW),
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(538, 60),
|
||||
on_activate_call=babase.Call(self._change_camera_position, 'x'))
|
||||
self._yplus = bui.buttonwidget(parent=self._root_widget,
|
||||
size=button_size,
|
||||
label=babase.charstr(babase.SpecialChar.UP_ARROW),
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(482, 120),
|
||||
on_activate_call=babase.Call(self._change_camera_position, 'y'))
|
||||
self._yminus = bui.buttonwidget(parent=self._root_widget,
|
||||
size=button_size,
|
||||
label=babase.charstr(babase.SpecialChar.DOWN_ARROW),
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(482, 2),
|
||||
on_activate_call=babase.Call(self._change_camera_position, 'y-'))
|
||||
self.inwards = bui.buttonwidget(parent=self._root_widget,
|
||||
size=(100,30),
|
||||
label='Zoom +',
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(-550, -60),
|
||||
on_activate_call=babase.Call(self._change_camera_position, 'z-'))
|
||||
self._outwards = bui.buttonwidget(parent=self._root_widget,
|
||||
size=(100,30),
|
||||
label='Zoom -',
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(-550, -100),
|
||||
on_activate_call=babase.Call(self._change_camera_position, 'z'))
|
||||
self.target_text = bui.textwidget(parent=self._root_widget,
|
||||
scale=0.65,
|
||||
color = (0.75, 0.75, 0.75),
|
||||
text='Cam Angle',
|
||||
size=(0, 0),
|
||||
position=(-462, 185),
|
||||
h_align='center',
|
||||
v_align='center')
|
||||
self.target_xminus = bui.buttonwidget(parent=self._root_widget,
|
||||
size=button_size,
|
||||
label=babase.charstr(babase.SpecialChar.LEFT_ARROW),
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(-538, 60),
|
||||
on_activate_call=babase.Call(self._change_camera_target, 'x-'))
|
||||
self.target_xplus = bui.buttonwidget(parent=self._root_widget,
|
||||
size=button_size,
|
||||
label=babase.charstr(babase.SpecialChar.RIGHT_ARROW),
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(-429, 60),
|
||||
on_activate_call=babase.Call(self._change_camera_target, 'x'))
|
||||
self.target_yplus = bui.buttonwidget(parent=self._root_widget,
|
||||
size=button_size,
|
||||
label=babase.charstr(babase.SpecialChar.UP_ARROW),
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(-482, 120),
|
||||
on_activate_call=babase.Call(self._change_camera_target, 'y'))
|
||||
self.target_yminus = bui.buttonwidget(parent=self._root_widget,
|
||||
size=button_size,
|
||||
label=babase.charstr(babase.SpecialChar.DOWN_ARROW),
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(-482, 2),
|
||||
on_activate_call=babase.Call(self._change_camera_target, 'y-'))
|
||||
self._step_text = bui.textwidget(parent=self._root_widget,
|
||||
scale=0.85,
|
||||
color=(1,1,1),
|
||||
text='Step:',
|
||||
size=(0, 0),
|
||||
position=(450, -38),
|
||||
h_align='center',
|
||||
v_align='center')
|
||||
self._text_field = bui.textwidget(
|
||||
parent=self._root_widget,
|
||||
editable=True,
|
||||
size=(100, 40),
|
||||
position=(480, -55),
|
||||
text='',
|
||||
maxwidth=120,
|
||||
flatness=1.0,
|
||||
autoselect=True,
|
||||
v_align='center',
|
||||
corner_scale=0.7)
|
||||
self._reset = bui.buttonwidget(parent=self._root_widget,
|
||||
size=(50,30),
|
||||
label='Reset',
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(450, -100),
|
||||
on_activate_call=babase.Call(self._change_camera_position, 'reset'))
|
||||
self._done = bui.buttonwidget(parent=self._root_widget,
|
||||
size=(50,30),
|
||||
label='Done',
|
||||
button_type='square',
|
||||
autoselect=True,
|
||||
position=(520, -100),
|
||||
on_activate_call=self._close)
|
||||
bui.containerwidget(edit=self._root_widget,
|
||||
cancel_button=self._done)
|
||||
def _close(self):
|
||||
bui.containerwidget(edit=self._root_widget,
|
||||
transition=('out_scale'))
|
||||
MainMenuWindow()
|
||||
|
||||
def _change_camera_position(self, direction):
|
||||
camera = _babase.get_camera_position()
|
||||
x = camera[0]
|
||||
y = camera[1]
|
||||
z = camera[2]
|
||||
|
||||
try:
|
||||
increment = float(bui.textwidget(query=self._text_field))
|
||||
except:
|
||||
increment = 1
|
||||
|
||||
if direction == 'x':
|
||||
x += increment
|
||||
elif direction == 'x-':
|
||||
x -= increment
|
||||
elif direction == 'y':
|
||||
y += increment
|
||||
elif direction == 'y-':
|
||||
y -= increment
|
||||
elif direction == 'z':
|
||||
z += increment
|
||||
elif direction == 'z-':
|
||||
z -= increment
|
||||
elif direction == 'reset':
|
||||
_babase.set_camera_manual(False)
|
||||
return
|
||||
|
||||
_babase.set_camera_manual(True)
|
||||
_babase.set_camera_position(x, y, z)
|
||||
|
||||
def _change_camera_target(self, direction):
|
||||
camera = _babase.get_camera_target()
|
||||
x = camera[0]
|
||||
y = camera[1]
|
||||
z = camera[2]
|
||||
|
||||
try:
|
||||
increment = float(bui.textwidget(query=self._text_field))
|
||||
except:
|
||||
increment = 1
|
||||
|
||||
if direction == 'x':
|
||||
x += increment
|
||||
elif direction == 'x-':
|
||||
x -= increment
|
||||
elif direction == 'y':
|
||||
y += increment
|
||||
elif direction == 'y-':
|
||||
y -= increment
|
||||
|
||||
_babase.set_camera_manual(True)
|
||||
_babase.set_camera_target(x, y, z)
|
||||
|
||||
|
||||
old_refresh_in_game = MainMenuWindow._refresh_in_game
|
||||
|
||||
def my_refresh_in_game(self, *args, **kwargs):
|
||||
value = old_refresh_in_game.__get__(self)(*args, **kwargs)
|
||||
camera_button = bui.buttonwidget(
|
||||
parent=self._root_widget,
|
||||
autoselect=True,
|
||||
position=(-65, 100),
|
||||
size=(70, 50),
|
||||
button_type='square',
|
||||
label='Manual\nCamera',
|
||||
text_scale=1.5,
|
||||
on_activate_call=self._manual_camera)
|
||||
return value
|
||||
|
||||
def _manual_camera(self):
|
||||
bui.containerwidget(edit=self._root_widget, transition='out_scale')
|
||||
Manual_camera_window()
|
||||
|
||||
# ba_meta export plugin
|
||||
class ByDroopy(babase.Plugin):
|
||||
def __init__(self):
|
||||
MainMenuWindow._refresh_in_game = my_refresh_in_game
|
||||
MainMenuWindow._manual_camera = _manual_camera
|
||||
Loading…
Add table
Add a link
Reference in a new issue