Ejemplo n.º 1
0
void testApp::mouseDragged(int x, int y, int button){
	
	trails.push_back( Trail( ofPoint(x, y), ofPoint(-1, -1).getNormalized() ) );
	if(trails.size()>400){
		trails.erase(trails.begin());
	}
}
Ejemplo n.º 2
0
int main(int argc, char* argv[]) {
    Screen& screen = Screen::Instance();
    const Renderer& renderer = Renderer::Instance();

    screen.Open(screen.GetDesktopWidth(), screen.GetDesktopHeight(), true);
    //screen.Open(800, 600, false);
    renderer.SetBlendMode(Renderer::ALPHA);

	// Cargamos la imagen
    Image* image = ResourceManager::Instance().LoadImage("data/images/ball.png");
    image->SetMidHandle();
	
	float angle = 0;
	double accum = 0;
    Array<Trail> trails;
    while ( screen.IsOpened()  &&  !screen.KeyPressed(GLFW_KEY_ESC) ) {
		// Actualizamos angulo de la imagen
        angle += 30 * screen.ElapsedTime();

		// Actualizamos los rastros
        accum += screen.ElapsedTime();
		if ( accum >= 0.05 ) {
            trails.Add(Trail(screen.GetMouseX(), screen.GetMouseY(), angle));
            if ( trails.Size() > NUMTRAILS ) {
                trails.RemoveAt(0);
				accum = 0;
			}
		}

		// Limpiamos fondo de pantalla
        renderer.Clear(0, 0, 0);

		// Dibujamos rastro
        for ( int i = 0; i < trails.Size(); i++ ) {
            renderer.SetColor(255, 255, 255, 256/(trails.Size()-i+1));
            renderer.DrawImage(image, trails[i].x, trails[i].y, 0, 0, 0, trails[i].angle);
		}

		// Dibujamos imagen
        renderer.SetColor(255, 255, 255, 255);
        renderer.DrawImage(image, screen.GetMouseX(), screen.GetMouseY(), 0, 0, 0, angle);

		// Refrescamos la pantalla
        screen.Refresh();
	}

    ResourceManager::Instance().FreeResources();

	return 0;
}
Ejemplo n.º 3
0
static void
make_new_attvar(Word p ARG_LD)
{ Word gp;

  assert(gTop+3 <= gMax && tTop+1 <= tMax);

  gp = link_attvar(PASS_LD1);
  gp[1] = ATOM_nil;
  gp[0] = consPtr(&gp[1], TAG_ATTVAR|STG_GLOBAL);
  gTop += 2;

  trail_new_attvar(gp PASS_LD);
  Trail(p, makeRefG(gp));
}
Ejemplo n.º 4
0
static int
assign_in_dict(Word dp, Word val ARG_LD)
{ deRef(val);

  if ( !canBind(*val) )
  { *dp = *val;
  } else if ( isAttVar(*val) )
  { *dp = makeRef(val);
  } else
  { if ( dp < val )
    { if ( unlikely(tTop+1 >= tMax) )
	return TRAIL_OVERFLOW;
      setVar(*dp);
      Trail(val, makeRef(dp));
    } else
    { *dp = makeRef(val);
    }
  }

  return TRUE;
}
Ejemplo n.º 5
0
static void
put_new_attvar(Word p, atom_t name, Word value ARG_LD)
{ Word gp, at;

  assert(gTop+7 <= gMax && tTop+1 <= tMax);

  gp = link_attvar(PASS_LD1);
  gTop += 6;
  at = &gp[1];
  setVar(*at);
  gp[0] = consPtr(&gp[1], TAG_ATTVAR|STG_GLOBAL);

  at[1] = FUNCTOR_att3;
  at[2] = name;
  at[3] = linkVal(value);
  at[4] = ATOM_nil;
  at[0] = consPtr(&at[1], TAG_COMPOUND|STG_GLOBAL);

  trail_new_attvar(gp PASS_LD);
  Trail(p, makeRefG(gp));
}