diff options
Diffstat (limited to 'Spear/Scene/Light.hs')
-rw-r--r-- | Spear/Scene/Light.hs | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/Spear/Scene/Light.hs b/Spear/Scene/Light.hs index 5f43b19..f63b91d 100644 --- a/Spear/Scene/Light.hs +++ b/Spear/Scene/Light.hs | |||
@@ -29,58 +29,3 @@ data Light | |||
29 | , specular :: Vector3 | 29 | , specular :: Vector3 |
30 | , transform :: M.Matrix4 | 30 | , transform :: M.Matrix4 |
31 | } | 31 | } |
32 | |||
33 | |||
34 | instance S.Spatial3 Light where | ||
35 | move _ l@DirectionalLight {} = l | ||
36 | move v l = l { transform = M.translv v * transform l} | ||
37 | |||
38 | moveFwd _ l@DirectionalLight {} = l | ||
39 | moveFwd f l = l { transform = M.translv (scale f $ S.fwd l) * transform l } | ||
40 | |||
41 | moveBack _ l@DirectionalLight {} = l | ||
42 | moveBack f l = l { transform = M.translv (scale (-f) $ S.fwd l) * transform l } | ||
43 | |||
44 | strafeLeft _ l@DirectionalLight {} = l | ||
45 | strafeLeft f l = l { transform = M.translv (scale (-f) $ S.right l) * transform l } | ||
46 | |||
47 | strafeRight _ l@DirectionalLight {} = l | ||
48 | strafeRight f l = l { transform = M.translv (scale f $ S.right l) * transform l } | ||
49 | |||
50 | pitch _ l@DirectionalLight {} = l | ||
51 | pitch a l = l { transform = transform l * M.axisAngle (S.right l) a } | ||
52 | |||
53 | yaw _ l@DirectionalLight {} = l | ||
54 | yaw a l = l { transform = transform l * M.axisAngle (S.up l) a } | ||
55 | |||
56 | roll _ l@DirectionalLight {} = l | ||
57 | roll a l = l { transform = transform l * M.axisAngle (S.fwd l) a } | ||
58 | |||
59 | pos l@DirectionalLight {} = vec3 0 0 0 | ||
60 | pos l = M.position . transform $ l | ||
61 | |||
62 | fwd (DirectionalLight _ _ _ f) = f | ||
63 | fwd l = M.forward . transform $ l | ||
64 | |||
65 | up l@DirectionalLight {} = vec3 0 1 0 | ||
66 | up l = M.up . transform $ l | ||
67 | |||
68 | right l@DirectionalLight {} = vec3 1 0 0 | ||
69 | right l = M.right . transform $ l | ||
70 | |||
71 | transform (PointLight _ _ _ transf) = transf | ||
72 | transform (DirectionalLight _ _ _ fwd) = | ||
73 | let up' = vec3 0 1 0 | ||
74 | right = up `cross` fwd | ||
75 | up = fwd `cross` right | ||
76 | in | ||
77 | M.transform up right fwd (vec3 0 0 0) | ||
78 | transform (SpotLight _ _ _ transf) = transf | ||
79 | |||
80 | setTransform _ l@DirectionalLight {} = l | ||
81 | setTransform t l = l { Spear.Scene.Light.transform = t } | ||
82 | |||
83 | setPos _ l@DirectionalLight {} = l | ||
84 | setPos pos l = | ||
85 | let t = Spear.Scene.Light.transform l | ||
86 | in l { transform = M.transform (M.right t) (M.up t) (M.forward t) pos } | ||