use crate::core::*;
use crate::w32a::*;
use std::{result::Result, error::Error};
use windows::{
Win32::Graphics::Direct3D9::*
};
pub trait TSpace {
fn setup(&mut self, dx: &mut Dx9) -> Result<(), Box<dyn Error>>;
fn dispose(&mut self, dx: &mut Dx9) -> Result<(), Box<dyn Error>>;
fn render(&mut self, dx: &mut Dx9, t: &mut TransScreen) ->
Result<(), Box<dyn Error>>;
fn step(&mut self, dx: &mut Dx9) -> Result<(), Box<dyn Error>>;
}
pub struct Space {
pub obj: Vec<u64>
}
impl TSpace for Space {
fn setup(&mut self, _dx: &mut Dx9) -> Result<(), Box<dyn Error>> {
Ok(())
}
fn dispose(&mut self, _dx: &mut Dx9) -> Result<(), Box<dyn Error>> {
Ok(())
}
fn render(&mut self, dx: &mut Dx9, t: &mut TransScreen) ->
Result<(), Box<dyn Error>> {
let dif = [1.0f32, 1.0f32, 1.0f32, 1.0f32]; let spc = [1.0f32, 1.0f32, 1.0f32, 1.0f32]; let amb = [1.0f32, 1.0f32, 1.0f32, 1.0f32]; let pos = [0.0f32, 0.0f32, 0.0f32, 0.0f32]; let dir = [1.0f32, -1.0f32, 1.0f32, 1.0f32]; let _ = dx.set_light(0, D3DLIGHT_DIRECTIONAL,
&dif, &spc, &amb, &pos, &dir, 200.0f32);
let _ = dx.draw_d3d(t);
Ok(())
}
fn step(&mut self, dx: &mut Dx9) -> Result<(), Box<dyn Error>> {
let _ = dx.update_d3d();
Ok(())
}
}