changeset 27:8b80f670cf1c

cordinate fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 14 Dec 2010 12:58:20 +0900
parents 6a8cb917e0ad
children 789e845ea192
files Dandy.cc sgoex.c
diffstat 2 files changed, 23 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/Dandy.cc	Tue Dec 14 10:48:26 2010 +0900
+++ b/Dandy.cc	Tue Dec 14 12:58:20 2010 +0900
@@ -545,13 +545,8 @@
     m->color = (color & 32);
     m->mx = w / 2;
     m->my = h / 2;
-    m->tex_w = power_of_two(sptable[number].w);
-    m->tex_h = power_of_two(sptable[number].h);
-    //texMinX[number] = 0.0f;
-    //texMinY[number] = 0.0f;
-    //texMaxX[number] = (GLfloat)sptable[number].w / sptable[number].tex_w;
-    //texMaxY[number] = (GLfloat)sptable[number].h / sptable[number].tex_h;  
-    // printf("texMaxX = %f, w = %d, tex_w = %d\n", texMaxX[number], sptable[number].w, sptable[number].tex_w);
+    m->tex_w = power_of_two(m->w);
+    m->tex_h = power_of_two(m->h);
     m->texture = (int *)name;
 
 }
@@ -568,11 +563,11 @@
     return;
 }
     SceneGraphPtr object = sgroot->createSceneGraph(name);
-    object->xyz[0] = x;
-    object->xyz[1] = y;
+    object->xyz[0] = x - object->c_xyz[0] * my_scale;
+    object->xyz[1] = y - object->c_xyz[1] * my_scale;
     object->xyz[2] = 0;
-    object->c_xyz[0] = m->mx;
-    object->c_xyz[1] = m->my;
+    //object->c_xyz[0] = m->mx;
+    //object->c_xyz[1] = m->my;
     root->addChild(object);
 
     float scale[] = {my_scale,my_scale,1};
@@ -580,19 +575,6 @@
     get_matrix(object->matrix, object->angle, object->xyz, scale, root->matrix);
     /*法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている)*/
     get_matrix(object->real_matrix, object->angle, object->xyz, scale, root->real_matrix);
-#if 0
-if (my_scale == 1 && m->w > 32) {
-float v0[] = {m->w,0,0,0};
-float v1[] = {1,0,0,0};
-float w;
-applyMatrix(v1, object->matrix, v0);
-w = sqrtf( v1[0]*v1[0] + v1[1]*v1[1] + v1[2]*v1[2] );
-my_scale =  w / ((float) m->w);
-printf("scale = %g\n", my_scale);
-}
-#endif
-
-
 }
 
 void
@@ -605,11 +587,11 @@
     return;
 }
     SceneGraphPtr object = sgroot->createSceneGraph(name);
-    object->xyz[0] = x;
-    object->xyz[1] = y;
+    object->xyz[0] = x - object->c_xyz[0] * my_scale-m->w*my_scale;
+    object->xyz[1] = y - object->c_xyz[1] * my_scale-m->h*my_scale;
     object->xyz[2] = 0;
-    object->c_xyz[0] = m->mx;
-    object->c_xyz[1] = m->my;
+    //object->c_xyz[0] = m->mx;
+    //object->c_xyz[1] = m->my;
     object->angle[3] = angle;
     root->addChild(object);
 
--- a/sgoex.c	Tue Dec 14 10:48:26 2010 +0900
+++ b/sgoex.c	Tue Dec 14 12:58:20 2010 +0900
@@ -57,13 +57,6 @@
   関数プロトタイプ
   ---------------------------------------------------------------*/
 
-void DefSpriteEx(int number, short middlex, short middley)
-{
-    sptable[number].mx = middlex;
-    sptable[number].my = middley;
-}
-
-
 void SDL_GL_Enter2DMode()
 {
     //	SDL_Surface *sc = SDL_GetVideoSurface();
@@ -119,8 +112,15 @@
     return value;
 }
 
+void
+DefSpriteEx(int number, short middlex, short middley)
+{
+    sptable[number].mx = middlex;
+    sptable[number].my = middley;
+}
 
-void DefSprite(int number, const char *name, float w, float h, int color, OBJECT *obj)
+void
+DefSprite(int number, const char *name, float w, float h, int color, OBJECT *obj)
 {
     SURFACE *surfaces;
     surfaces = search_node(obj, name);
@@ -142,12 +142,12 @@
     texMinY[number] = 0.0f;
     texMaxX[number] = (GLfloat)sptable[number].w / sptable[number].tex_w;
     texMaxY[number] = (GLfloat)sptable[number].h / sptable[number].tex_h;  
-    printf("texMaxX = %f, w = %d, tex_w = %d\n",
-	   texMaxX[number], sptable[number].w, sptable[number].tex_w);
+//    printf("texMaxX = %f, w = %d, tex_w = %d\n", texMaxX[number], sptable[number].w, sptable[number].tex_w);
     sptable[number].texture = surfaces->texture;
 }
 
-void PutSprite(int zorder, short x, short y, int number)
+void
+PutSprite(int zorder, short x, short y, int number)
 {
     glBindTexture(GL_TEXTURE_2D, (GLuint&)sptable[number].texture);
     glEnable(GL_BLEND);
@@ -161,7 +161,8 @@
     glDisable(GL_BLEND);
 }
 
-void PutSpriteEx(int number, int x, int y, float scalex, float scaley, float angle)
+void
+PutSpriteEx(int number, int x, int y, float scalex, float scaley, float angle)
 {
     SpriteTable *m = &sptable[number];
     x -= m->w;