Test suite modernization
This commit is contained in:
parent
0969f7c2f6
commit
52fdfd0347
141 changed files with 9947 additions and 4665 deletions
96
tests/demo/viewport3d_screenshot.py
Normal file
96
tests/demo/viewport3d_screenshot.py
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
# viewport3d_screenshot.py - Quick screenshot of Viewport3D demo
|
||||
import mcrfpy
|
||||
from mcrfpy import automation
|
||||
import sys
|
||||
|
||||
print("Script starting...", flush=True)
|
||||
|
||||
# Create demo scene
|
||||
scene = mcrfpy.Scene('viewport3d_demo')
|
||||
print("Scene created")
|
||||
|
||||
# Dark background frame
|
||||
bg = mcrfpy.Frame(pos=(0, 0), size=(1024, 768), fill_color=mcrfpy.Color(20, 20, 30))
|
||||
scene.children.append(bg)
|
||||
|
||||
# Title
|
||||
title = mcrfpy.Caption(text='Viewport3D Demo - PS1-Style 3D Rendering', pos=(20, 10))
|
||||
title.fill_color = mcrfpy.Color(255, 255, 255)
|
||||
scene.children.append(title)
|
||||
|
||||
# Create the 3D viewport - the main feature!
|
||||
print("Creating Viewport3D...")
|
||||
viewport = mcrfpy.Viewport3D(
|
||||
pos=(50, 60),
|
||||
size=(600, 450),
|
||||
render_resolution=(320, 240),
|
||||
fov=60.0,
|
||||
camera_pos=(5.0, 3.0, 5.0),
|
||||
camera_target=(0.0, 0.0, 0.0),
|
||||
bg_color=mcrfpy.Color(25, 25, 50)
|
||||
)
|
||||
print(f"Viewport3D created: {viewport}")
|
||||
scene.children.append(viewport)
|
||||
print("Viewport3D added to scene")
|
||||
|
||||
# Info panel on the right
|
||||
info_panel = mcrfpy.Frame(pos=(670, 60), size=(330, 450),
|
||||
fill_color=mcrfpy.Color(30, 30, 40),
|
||||
outline_color=mcrfpy.Color(80, 80, 100),
|
||||
outline=2.0)
|
||||
scene.children.append(info_panel)
|
||||
|
||||
# Panel title
|
||||
panel_title = mcrfpy.Caption(text='Viewport Properties', pos=(690, 70))
|
||||
panel_title.fill_color = mcrfpy.Color(200, 200, 255)
|
||||
scene.children.append(panel_title)
|
||||
|
||||
# Property labels
|
||||
props = [
|
||||
('Position:', f'({viewport.x}, {viewport.y})'),
|
||||
('Size:', f'{viewport.w}x{viewport.h}'),
|
||||
('Render Res:', f'{viewport.render_resolution[0]}x{viewport.render_resolution[1]}'),
|
||||
('FOV:', f'{viewport.fov} degrees'),
|
||||
('Camera Pos:', f'({viewport.camera_pos[0]:.1f}, {viewport.camera_pos[1]:.1f}, {viewport.camera_pos[2]:.1f})'),
|
||||
('Camera Target:', f'({viewport.camera_target[0]:.1f}, {viewport.camera_target[1]:.1f}, {viewport.camera_target[2]:.1f})'),
|
||||
('', ''),
|
||||
('PS1 Effects:', ''),
|
||||
(' Vertex Snap:', 'ON' if viewport.enable_vertex_snap else 'OFF'),
|
||||
(' Affine Map:', 'ON' if viewport.enable_affine else 'OFF'),
|
||||
(' Dithering:', 'ON' if viewport.enable_dither else 'OFF'),
|
||||
(' Fog:', 'ON' if viewport.enable_fog else 'OFF'),
|
||||
(' Fog Range:', f'{viewport.fog_near} - {viewport.fog_far}'),
|
||||
]
|
||||
|
||||
y_offset = 100
|
||||
for label, value in props:
|
||||
if label:
|
||||
cap = mcrfpy.Caption(text=f'{label} {value}', pos=(690, y_offset))
|
||||
cap.fill_color = mcrfpy.Color(180, 180, 200)
|
||||
scene.children.append(cap)
|
||||
y_offset += 22
|
||||
|
||||
# Instructions at bottom
|
||||
instructions = mcrfpy.Caption(
|
||||
text='[1-4] Toggle PS1 effects | [WASD] Move camera | [Q/E] Camera height | [ESC] Quit',
|
||||
pos=(20, 530)
|
||||
)
|
||||
instructions.fill_color = mcrfpy.Color(150, 150, 150)
|
||||
scene.children.append(instructions)
|
||||
|
||||
# Status line
|
||||
status = mcrfpy.Caption(text='Status: Viewport3D ready (placeholder mode - GL shaders pending)', pos=(20, 555))
|
||||
status.fill_color = mcrfpy.Color(100, 200, 100)
|
||||
scene.children.append(status)
|
||||
|
||||
scene.activate()
|
||||
|
||||
def take_screenshot(timer, runtime):
|
||||
print(f'Timer callback fired at runtime: {runtime}')
|
||||
automation.screenshot('viewport3d_demo.png')
|
||||
print('Screenshot saved to viewport3d_demo.png')
|
||||
sys.exit(0)
|
||||
|
||||
print('Setting up screenshot timer...')
|
||||
mcrfpy.Timer('screenshot', take_screenshot, 500, once=True)
|
||||
print('Timer set, entering game loop...')
|
||||
Loading…
Add table
Add a link
Reference in a new issue