Passed test again
[tuple-trace.git] / scene.lisp
blob408b9c49e4358a9e74b2aacb2a14ec1f06f06cf8
2 (in-package :tuple-trace)
4 (defclass scene ()
5 ((primitives :accessor primitives-of
6 :initform (make-array 0
7 :element-type 'primitive
8 :adjustable t
9 :fill-pointer 0))))
11 (defgeneric primitive-of (scene index)
12 (:method ((scene scene) index)
13 (aref (primitives-of scene) index)))
15 (defgeneric add-primitive (scene primitive)
16 (:method ((scene scene) primitive)
17 (vector-push-extend primitive (primitives-of scene))))
19 (defmethod (setf primitive-of) (primitive (scene scene) index)
20 (setf (aref (primitives-of scene) index) primitive))
22 (defun make-scene (&rest primitives)
23 (let
24 ((result (make-instance 'scene)))
25 (loop
26 for primitive in primitives
28 (add-primitive result primitive))
29 result))