coeng

annotate src/co_xform.cc @ 5:0e5da17d589c

decided to really work on this, so first a slight rename
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 14 Feb 2015 01:35:42 +0200
parents src/comp_xform.cc@66d1762eb203
children 2f872a179914
rev   line source
nuclear@2 1 #include <assert.h>
nuclear@5 2 #include "co_xform.h"
nuclear@5 3 #include "gobj.h"
nuclear@2 4
nuclear@5 5 static CoXForm reg_co_xform;
nuclear@5 6 static CoPRS reg_co_prs;
nuclear@3 7
nuclear@5 8 static Component *cons_xform() { return new CoXForm; }
nuclear@5 9 static Component *cons_prs() { return new CoPRS; }
nuclear@2 10
nuclear@5 11 CoXForm::CoXForm()
nuclear@2 12 {
nuclear@2 13 name = "xform";
nuclear@2 14
nuclear@2 15 register_component(name, cons_xform);
nuclear@2 16 }
nuclear@2 17
nuclear@5 18 CoPRS::CoPRS()
nuclear@2 19 {
nuclear@2 20 name = "prs";
nuclear@2 21
nuclear@2 22 register_component(name, cons_prs);
nuclear@2 23 }
nuclear@2 24
nuclear@5 25 void CoPRS::update()
nuclear@2 26 {
nuclear@2 27 if(!gobj) return;
nuclear@2 28
nuclear@2 29 if(!co_xform) {
nuclear@2 30 Component *co = gobj->get_component("xform");
nuclear@5 31 if(!co || !(co_xform = dynamic_cast<CoXForm*>(co))) {
nuclear@2 32 assert(co_xform);
nuclear@2 33 return;
nuclear@2 34 }
nuclear@2 35 }
nuclear@2 36
nuclear@2 37 Matrix4x4 rmat = rot.get_rotation_matrix();
nuclear@2 38 Matrix4x4 tmat, smat;
nuclear@2 39
nuclear@2 40 tmat.set_translation(pos);
nuclear@2 41 smat.set_scaling(scale);
nuclear@2 42
nuclear@2 43 co_xform->xform = rmat * tmat * smat;
nuclear@2 44 }