示例#1
0
void eol_particle_make_point(eolVec3D position,
                             eolVec3D velocity,
                             eolVec3D accel,
                             eolFloat radius,
                             eolVec3D color,
                             eolFloat alpha,
                             eolUint  lifetime)
{
  eolParticle *part;
  part = eol_particle_new();
  if (part == NULL)return;
  eol_vec3d_copy(part->ori.position,position);
  eol_vec3d_copy(part->vector.position,velocity);
  eol_vec3d_copy(part->accel.position,accel);
  eol_vec3d_copy(part->ori.color,color);
  part->radius = radius;
  part->ori.alpha = alpha;
  part->lifetime = lifetime;
  part->type = eolParticlePoint;
}
示例#2
0
void eol_component_make_label(
    eolComponent * component,
    char         * text,
    eolUint        justify,
    eolInt         fontSize,
    eolBool        wordWrap,
    char         * fontName,
    eolVec3D       color,
    eolFloat       alpha
  )
{
  eolRect r;
  eolComponentLabel * label = NULL;
  if (!component)return;
  eol_component_label_new(component);
  
  label = eol_component_get_label_data(component);
  if (label == NULL)
  {
    return;
  }

  label->buffer = g_string_new(text);
  if (label->buffer == NULL)
  {
    eol_logger_message(
      EOL_LOG_ERROR,
      "eol_component:Failed to duplicate string for new label\n");
    eol_component_label_free(component);
    return;
  }
  
  if ((fontName != NULL)&&(strlen(fontName) > 0))
  {
    label->font = eol_font_load(fontName,fontSize);
    r = eol_font_get_bounds_custom(text,label->font);
  }
  else
  {
    r = eol_font_get_bounds(text,fontSize);
  }
  component->bounds.w = r.w;
  component->bounds.h = r.h;
  label->justify = justify;
  label->fontSize = fontSize;
  label->alpha = alpha;
  label->wordWrap = wordWrap;
  eol_vec3d_copy(label->color,color);
  component->data_free = eol_component_label_free;
  component->data_draw = eol_component_label_draw;
}
eolBool eol_keychain_get_hash_value_as_vec3d(eolVec3D *output, eolKeychain *hash, eolLine key)
{
  eolVec3D temp = {0,0,0};
  eolLine keyValue;
  eolKeychain *chain;
  if ((!hash) || (!output) || (strlen(key) == 0))return eolFalse;
  chain = eol_keychain_get_hash_value(hash,key);
  if (!chain)return eolFalse;
  if (chain->keyType != eolKeychainString)return eolFalse;
  eol_line_cpy(keyValue,chain->keyValue);
  if (sscanf(keyValue,"%lf,%lf,%lf",&temp.x,&temp.y,&temp.z) != 3)return eolFalse;
  eol_vec3d_copy((*output),temp);
  return eolTrue;
}
示例#4
0
void eol_component_make_entry(
    eolComponent * component,
    char         * output,
    eolUint        outputLimit,
    eolUint        justify,
    eolUint        fontSize,
    eolBool        wordWrap,
    eolLine        fontName,
    eolVec3D       color,
    eolFloat       alpha,
    eolVec3D       bgcolor
  )
{
  eolComponentEntry * entry = NULL;
  if (!component)return;
  eol_component_entry_new(component);
  entry = eol_component_get_entry_data(component);
  if (entry == NULL)
  {
    return;
  }
 
  entry->buffer = g_string_new(output);
  if (entry->buffer == NULL)
  {
    eol_logger_message(
      EOL_LOG_ERROR,
      "eol_component:Failed to duplicate string for new entry\n");
    eol_component_entry_free(component);
    return;
  }
  entry->bufferLimit = outputLimit;
  entry->justify = justify;
  entry->fontSize = fontSize;
  entry->alpha = alpha;
  entry->wordWrap = wordWrap;
  eol_vec3d_copy(entry->color,color);
  component->data_free = eol_component_entry_free;
  component->data_draw = eol_component_entry_draw;
  component->data_update = eol_component_entry_update;
}
void eol_light_move(eolLight *light,eolVec3D point)
{
  if (!eol_lighting_initialized())return;
  if (!light)return;
  eol_vec3d_copy(light->position,point);
}