more restructuring of code into logical files and moving functions into
classes
This commit is contained in:
		
							parent
							
								
									c64e191879
								
							
						
					
					
						commit
						dd65cc83b0
					
				|  | @ -8,7 +8,9 @@ | ||||||
|   :components ((:file "package") |   :components ((:file "package") | ||||||
| 	       (:file "util") | 	       (:file "util") | ||||||
| 	       (:file "math") | 	       (:file "math") | ||||||
|  | 	       (:file "graphics") | ||||||
| 	       (:file "model") | 	       (:file "model") | ||||||
| 	       (:file "phsyics") | 	       (:file "phsyics") | ||||||
|  | 	       (:file "objects") | ||||||
|                (:file "flight-sim"))) |                (:file "flight-sim"))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,10 +5,6 @@ | ||||||
| ;;; "flight-sim" goes here. Hacks and glory await! | ;;; "flight-sim" goes here. Hacks and glory await! | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| (defclass game-object () |  | ||||||
|   ((model :initarg :model :accessor model :initform (make-instance 'model)) |  | ||||||
|    (body :initarg :body :accessor body :inotform (make-instance 'body)))) |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| (defclass engine-object (game-object) | (defclass engine-object (game-object) | ||||||
|   ((active :initarg :active :reader active :initform nil) |   ((active :initarg :active :reader active :initform nil) | ||||||
|  | @ -102,44 +98,7 @@ | ||||||
| (defparameter *num-frames* 0) | (defparameter *num-frames* 0) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| (defun draw-triangle (tri colors) |  | ||||||
|   (declare (type shape-vector tri)) |  | ||||||
|   (declare (type shape-vector colors)) |  | ||||||
|   (gl:with-primitive :triangles |  | ||||||
|     (let ((c (aref colors 0))) |  | ||||||
|       (gl:color (aref c 0) (aref c 1) (aref c 2))) |  | ||||||
|     (let ((v (aref tri 0))) |  | ||||||
|       (gl:vertex (aref v 0) (aref v 1) (aref v 2))) |  | ||||||
| 
 | 
 | ||||||
|     (let ((c (aref colors 1))) |  | ||||||
|       (gl:color (aref c 0) (aref c 1) (aref c 2))) |  | ||||||
|     (let ((v (aref tri 1))) |  | ||||||
|       (gl:vertex (aref v 0) (aref v 1) (aref v 2))) |  | ||||||
|      |  | ||||||
|     (let ((c (aref colors 2))) |  | ||||||
|       (gl:color (aref c 0) (aref c 1) (aref c 2))) |  | ||||||
|     (let ((v (aref tri 2))) |  | ||||||
|       (gl:vertex (aref v 0) (aref v 1) (aref v 2))))) |  | ||||||
| 
 |  | ||||||
| (defun draw-entity (entity) |  | ||||||
|   (gl:translate (aref (coords (motion entity)) 0) (aref (coords (motion entity)) 1) (aref (coords (motion entity)) 2)) |  | ||||||
|   (gl:rotate (aref (angles entity) 0) 1 0 0) |  | ||||||
|   (gl:rotate (aref (angles entity) 1) 0 1 0) |  | ||||||
|   (gl:rotate (aref (angles entity) 2) 0 0 1) |  | ||||||
|   (loop for i from 0 to (1- (length (faces (model entity)))) do |  | ||||||
|        (draw-triangle (get-vertecies (aref (faces (model entity)) i) (vertices (model entity))) |  | ||||||
| 		      (get-vertecies (aref (face-colors (model entity)) i) (colors (model entity)))))) |  | ||||||
| 
 |  | ||||||
| (defgeneric object-draw (object)) |  | ||||||
| 
 |  | ||||||
| (defmethod object-draw :before ((object game-object)) |  | ||||||
|   (gl:push-matrix)) |  | ||||||
| 
 |  | ||||||
| (defmethod object-draw :after ((object game-object)) |  | ||||||
|   (gl:pop-matrix)) |  | ||||||
| 
 |  | ||||||
| (defmethod object-draw ((object game-object)) |  | ||||||
|   (draw-entity object)) |  | ||||||
| 
 | 
 | ||||||
| (defmethod object-draw ((object powered-object)) | (defmethod object-draw ((object powered-object)) | ||||||
|   (draw-entity object) |   (draw-entity object) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,25 @@ | ||||||
|  | (in-package #:flight-sim) | ||||||
|  | 
 | ||||||
|  | (defun draw-triangle (tri colors) | ||||||
|  |   (declare (type shape-vector tri)) | ||||||
|  |   (declare (type shape-vector colors)) | ||||||
|  |   (gl:with-primitive :triangles | ||||||
|  |     (let ((c (aref colors 0))) | ||||||
|  |       (gl:color (aref c 0) (aref c 1) (aref c 2))) | ||||||
|  |     (let ((v (aref tri 0))) | ||||||
|  |       (gl:vertex (aref v 0) (aref v 1) (aref v 2))) | ||||||
|  |      | ||||||
|  |     (let ((c (aref colors 1))) | ||||||
|  |       (gl:color (aref c 0) (aref c 1) (aref c 2))) | ||||||
|  |     (let ((v (aref tri 1))) | ||||||
|  |       (gl:vertex (aref v 0) (aref v 1) (aref v 2))) | ||||||
|  |      | ||||||
|  |     (let ((c (aref colors 2))) | ||||||
|  |       (gl:color (aref c 0) (aref c 1) (aref c 2))) | ||||||
|  |     (let ((v (aref tri 2))) | ||||||
|  |       (gl:vertex (aref v 0) (aref v 1) (aref v 2))))) | ||||||
|  | 
 | ||||||
|  | ;(defun draw-entity (entity) | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | (defgeneric draw (object)) | ||||||
|  | @ -6,6 +6,14 @@ | ||||||
|    (colors :initarg :colors :reader colors :initform (vector) :type shape-vector) |    (colors :initarg :colors :reader colors :initform (vector) :type shape-vector) | ||||||
|    (face-colors :initarg :face-colors :accessor face-colors :initform (vector) :type shape-ref-vector))) |    (face-colors :initarg :face-colors :accessor face-colors :initform (vector) :type shape-ref-vector))) | ||||||
| 
 | 
 | ||||||
|  | (defmethod draw ((model model)) | ||||||
|  |   (loop for i from 0 to (1- (length (faces model))) do | ||||||
|  |        (draw-triangle (get-vertecies (aref (faces model) i) (vertices model)) | ||||||
|  | 		      (get-vertecies (aref (face-colors model) i) (colors model))))) | ||||||
|  | 
 | ||||||
|  | (defclass animated-model () | ||||||
|  |   ((start-time :initarg :start-time :accessor start-time :initform 0.0))) | ||||||
|  | 
 | ||||||
| (defmethod scale-colors ((model model)) | (defmethod scale-colors ((model model)) | ||||||
|   (let ((colors (colors model))) |   (let ((colors (colors model))) | ||||||
|     (loop for i from 0 to (1- (length colors)) do  |     (loop for i from 0 to (1- (length colors)) do  | ||||||
|  |  | ||||||
|  | @ -0,0 +1,25 @@ | ||||||
|  | (in-package #:flight-sim) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | (defclass game-object () | ||||||
|  |   ((model :initarg :model :accessor model :initform (make-instance 'model)) | ||||||
|  |    (body :initarg :body :accessor body :initform (make-instance 'body)) | ||||||
|  |    (attachments :initarg :attachments :accessor attachments :initform '()) | ||||||
|  |    (active-attachments :initarg :active-attachments :accessor active-attachments :initform '()))) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | (defmethod draw :before ((object game-object)) | ||||||
|  |   (gl:push-matrix) | ||||||
|  |   (gl:translate (aref (coords (motion entity)) 0) (aref (coords (motion entity)) 1) (aref (coords (motion entity)) 2)) | ||||||
|  |   (gl:rotate (aref (angles entity) 0) 1 0 0) | ||||||
|  |   (gl:rotate (aref (angles entity) 1) 0 1 0) | ||||||
|  |   (gl:rotate (aref (angles entity) 2) 0 0 1)) | ||||||
|  | 
 | ||||||
|  | (defmethod draw :after ((object game-object)) | ||||||
|  |   (gl:pop-matrix)) | ||||||
|  | 
 | ||||||
|  | (defmethod draw ((object game-object)) | ||||||
|  |   (draw (model object))) | ||||||
		Loading…
	
		Reference in New Issue