Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-02-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
Problema de incompatibilidad de tipos

Me estoy volviendo loco, no se por qué me da error, os cuento.

Estoy intentando hacer una explosión, hasta aquí todo bien, el problema viene cuando me meto a tocar código, mirad:

Código Delphi [-]
GLfireFXManager1.RingExplosion(8,10,5,XVector,YVector);

donde XVector e YVector son de tipo TAffineFltVector.

Intento compilar y me da el siguiente error:

[Error] Unit1.pas(46): Incompatible types: 'TVector3f' and 'TAffineFltVector'

Me voy a ver como está hecha la función RingExplosion con Crt + Botón izquierdo del ratón y está así:

Código Delphi [-]
// RingExplosion
//
procedure TGLFireFXManager.RingExplosion(minInitialSpeed, maxInitialSpeed, lifeBoostFactor : Single;
                                         const ringVectorX, ringVectorY : TAffineVector;
                                         nbParticles : Integer = -1);
var
   n : Integer;
   tmp, refPos : TVector;
   fx, fy, d : Single;
begin
   if nbParticles<0 then n:=MaxInt else n:=nbParticles;
   if Assigned(Reference) then
      refPos:=Reference.AbsolutePosition
   else refPos:=NullHmgPoint;
   while (NPand (n>0) do begin
      // okay, ain't exactly and "isotropic" ring...
      fx:=Random-0.5;
      fy:=Random-0.5;
      d:=RSqrt(Sqr(fx)+Sqr(fy));
      PAffineVector(@tmp)^:=VectorCombine(ringVectorX, ringVectorY, fx*d, fy*d);
      tmp[3]:=1;
      ScaleVector(tmp, minInitialSpeed+Random*(maxInitialSpeed-minInitialSpeed));
      with FFireParticles[NP] do begin
         Position:=VectorAdd(refPos, VectorMake((2*Random-1)*FireRadius, (2*Random-1)*FireRadius, (2*Random-1)*FireRadius));
         Speed:=tmp;
         TimeToLive:=ParticleLife*(Random*0.5+0.5)*lifeBoostFactor;
         LifeLength:=TimeToLive;
         Alpha:=FireDensity;
      end;
      Inc(NP);
      Dec(n);
   end;
end;

El caso es que no se por qué me da el error, se supone que no debería de dar error ya que si me voy a mi unidad Geometry.pas Version 2.6 tengo que:
Código Delphi [-]
TAffineVector = TAffineFltVector;
y
Código Delphi [-]
TVector3f = TAffineFltVector;

Además he mirado por internet y todos usan la función RingExplosion de esa forma pero a ellos se ve que no les da error. ¿Alguna idea?. Me estoy desquiciando. Gracias.

EDITO: Me he bajado una demo que hace uso de la función, mañana lo miro y os cuento. Saludos.

EDITO2: Lo he mirado por encima y creo que el fallo está en usar la unit Geometry.pas en vez de la unit VectorGeometry.pas. Saludos.

EDITO3: En efecto ese era el problema, ya tengo la aplicación montada, además si usais un archivo con extensión 3ds os debeis de asegurar de poner la unidad GLFile3DS en la claúsula uses de vuestro programa.

Última edición por kakarotv5 fecha: 29-04-2007 a las 18:18:40.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
error incompatibilidad tipos integer emeritos Varios 1 13-12-2006 10:48:39
Incompatibilidad de Tipos gusanita SQL 10 18-08-2006 16:06:20
problema con un array de tipos aram2r OOP 5 08-06-2005 09:54:28
Ultimo Problema: Tipos De Variables!! azaagh Varios 2 12-06-2004 15:57:31
Problema con Tipos de Hojas Esau Impresión 2 19-01-2004 23:31:58


La franja horaria es GMT +2. Ahora son las 23:17:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi