Aktuelle Zeit: 12.05.2025, 20:30

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: RTS Camera
BeitragVerfasst: 02.09.2007, 22:56 
Offline

Registriert: 16.07.2007, 17:34
Beiträge: 9
HI


ich hab eine RTS Camera gefunden, schaffe es aber irgentwie nicht sie zu benutzen. kann sich vielleicht einer die sache anschauen, bitte? Hier der link.
http://www.irrlicht3d.org/wiki/index.ph ... ByCmdKewin

ps: ich wollte eigentlich noch meinen versuch anhängen aber das geht irgentwie nicht.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 04.09.2007, 01:17 
Offline

Registriert: 16.07.2007, 17:34
Beiträge: 9
also ich habe inzwischen zwei fehler eliminieren können. Mit Irrlicht 1.3.1 wurde "Frustrum" in "Frustum" umbenannt und aus "OnPreRender" wurde "OnRegisterSceneNode".

jetzt hab ich aber ein problem mit dem Constructor:
Code:
RTSCamera::RTSCamera(IrrlichtDevice* devicepointer,ISceneNode* parent,ISceneManager* smgr,s32 id,
    f32 rs,f32 zs,f32 ts)
: ICameraSceneNode(parent,smgr,id,vector3df(1.0f,1.0f,1.0f),vector3df(0.0f,0.0f,0.0f),
               vector3df(1.0f,1.0f,1.0f)),InputReceiverEnabled(true)

Code::Blocks sagt mir:
Code:
RTSCamera.cpp:6: error: new types may not be defined in a return type
RTSCamera.cpp:6: error: return type specification for constructor invalid
:: === Build finished: 2 errors, 0 warnings ===


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 04.09.2007, 11:43 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
da ist wohl ein ; vor dem konstruktor vergessen worden.. (sodass die klasse davor als typ angesehen wird, der gleichzeitig rückgabetyp des konstruktors ist, den es nicht gibt... :? )

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 04.09.2007, 15:14 
Offline

Registriert: 16.07.2007, 17:34
Beiträge: 9
ok habs, danke. Das fehlende ; war in einer ganz anderen und unabhängigen datei. Soll ich den Verbesserten quellcode ins Code Snippets forum posten?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 04.09.2007, 15:34 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
ja das wäre nett.

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 04.09.2007, 17:14 
Offline

Registriert: 16.07.2007, 17:34
Beiträge: 9
zu früh gefreut. Ich wollte sie eben einsetzten da sagt mir code::blocks
Zitat:
gamemain.cpp:: In function `int main()':
gamemain.cpp:33: error: cannot allocate an object of type `RTSCamera'
gamemain.cpp:33: error: because the following virtual functions are abstract:
ICameraSceneNode.h:112: error: virtual const irr::scene::SViewFrustum* irr::scene::ICameraSceneNode::getViewFrustum() const
:: === Build finished: 3 errors, 0 warnings ===


hier mal mein quellcode
RTSCamera.h:
Code:
#ifndef __RTSCamera__
#define __RTSCamera__

#include "confic.h"

class RTSCamera : public ICameraSceneNode
{
   public:
      RTSCamera(IrrlichtDevice* devicepointer,ISceneNode* parent,ISceneManager* smgr,s32 id,
         f32 rotateSpeed = -1000.0f,f32 zoomSpeed = 1000.0f,f32 translationSpeed = 1000.0f);

      virtual ~RTSCamera();

      //Events
      virtual bool OnEvent(SEvent event);
      virtual void OnPreRender();
      virtual void render();
      virtual void OnPostRender(u32 timeMs);

      //Setup
      virtual void setInputReceiverEnabled(bool enabled);
      virtual bool isInputReceiverEnabled();

      //Gets
      virtual const aabbox3d<f32>& getBoundingBox() const;
      virtual const matrix4& getProjectionMatrix();
      virtual const SViewFrustum* getViewFrustum();
      virtual vector3df getTarget() const;
      virtual const matrix4& getViewMatrix();
      virtual vector3df getUpVector() const;
      virtual f32 getNearValue();
      virtual f32 getFarValue();
      virtual f32 getAspectRatio();
      virtual f32 getFOV();

      //Sets
      virtual void setNearValue(f32 zn);
      virtual void setFarValue(f32 zf);
      virtual void setAspectRatio(f32 aspect);
      virtual void setFOV(f32 fovy);
      virtual void setUpVector(const vector3df& pos);
      virtual void setProjectionMatrix(const matrix4& projection);
      virtual void setPosition(const vector3df& newpos);
      virtual void setTarget(const vector3df& newpos);

      //Helper Functions
      void pointCameraAtNode(ISceneNode* selectednode);
      void setMinZoom(f32 amount);
      void setMaxZoom(f32 amount);

      //Type Return
      virtual ESCENE_NODE_TYPE getType() { return ESNT_CAMERA; }

   protected:
      //Properties
      vector3df Target;
      vector3df UpVector;
      matrix4 Projection;
      matrix4 View;
      SViewFrustum ViewArea;
      aabbox3d<f32> BBox;
      bool InputReceiverEnabled;
      dimension2d<f32> screenDim;
      f32 Fovy;      //Field of view, in radians.
      f32 Aspect;      //Aspect ratio.
      f32 ZNear;      //Value of the near view-plane.
      f32 ZFar;      //Z-value of the far view-plane.

      void recalculateProjectionMatrix();
      void recalculateViewArea();

   private:
      IrrlichtDevice* device;
      vector3df Pos;
      bool zooming,rotating,moving,translating;
      f32 zoomSpeed;
      f32 translateSpeed;
      f32 rotateSpeed;
      f32 rotateStartX, rotateStartY;
      f32 zoomStartX, zoomStartY;
      f32 translateStartX, translateStartY;
      f32 currentZoom;
      f32 rotX, rotY;
      vector3df oldTarget;
      vector2df MousePos;
      bool Keys[KEY_KEY_CODES_COUNT];
      bool MouseKeys[3];
      f32 targetMinDistance;
      f32 targetMaxDistance;

      enum MOUSE_BUTTON
      {
         MOUSE_BUTTON_LEFT,
         MOUSE_BUTTON_MIDDLE,
         MOUSE_BUTTON_RIGHT
      };

      void allKeysUp();
      void allMouseKeysUp();
      bool isKeyDown(s32 key);
      bool isMouseKeyDown(s32 key);
      void animate();
      void updateAnimationState();
};

#endif


RTSCamera.cpp:
Code:
#include "confic.h"


RTSCamera::RTSCamera(IrrlichtDevice* devicepointer,ISceneNode* parent,ISceneManager* smgr,s32 id,
    f32 rs,f32 zs,f32 ts)
: ICameraSceneNode(parent,smgr,id,vector3df(1.0f,1.0f,1.0f),vector3df(0.0f,0.0f,0.0f),
               vector3df(1.0f,1.0f,1.0f)),InputReceiverEnabled(true)
{
   device = devicepointer;
   BBox.reset(0,0,0);

   UpVector.set(0.0f,1.0f,0.0f);

   Fovy = core::PI / 2.5f;
   Aspect = 4.0f / 3.0f;
   ZNear = 1.0f;
   ZFar = 3000.0f;

   IVideoDriver* d = smgr->getVideoDriver();
   if (d)
   {
      screenDim.Width = (f32)d->getCurrentRenderTargetSize().Width;
      screenDim.Height = (f32)d->getCurrentRenderTargetSize().Height;
      Aspect = screenDim.Width / screenDim.Height;
   }

   zooming = false;
   rotating = false;
   moving = false;
   translating = false;
   zoomSpeed = zs;
   rotateSpeed = rs;
   translateSpeed = ts;
   currentZoom = 100.0f;
   targetMinDistance = 1.0f;
   targetMaxDistance = 2000.0f;
   Target.set(0.0f,0.0f,0.0f);
   rotX = 0;
   rotY = 0;
   oldTarget = Target;

   allKeysUp();
   allMouseKeysUp();

   recalculateProjectionMatrix();
   recalculateViewArea();

   smgr->setActiveCamera(this);
}

RTSCamera::~RTSCamera()
{
}

bool RTSCamera::OnEvent(SEvent event)
{
   if (!InputReceiverEnabled)
      return false;

   ISceneNode* selectednode;
   dimension2d<s32> ssize = SceneManager->getVideoDriver()->getScreenSize();

   if(event.EventType == EET_MOUSE_INPUT_EVENT)
   {
      switch(event.MouseInput.Event)
      {
         case EMIE_LMOUSE_PRESSED_DOWN:
            selectednode = SceneManager->
getSceneCollisionManager()->
getSceneNodeFromScreenCoordinatesBB(
                        device->getCursorControl()->getPosition(),0xFF,false);

            if(selectednode)
               pointCameraAtNode(selectednode);
            else
               MouseKeys[0] = true;
            break;
         case EMIE_RMOUSE_PRESSED_DOWN:
            MouseKeys[2] = true;
            break;
         case EMIE_MMOUSE_PRESSED_DOWN:
            MouseKeys[1] = true;
            break;
         case EMIE_LMOUSE_LEFT_UP:
            MouseKeys[0] = false;
            break;
         case EMIE_RMOUSE_LEFT_UP:
            MouseKeys[2] = false;
            break;
         case EMIE_MMOUSE_LEFT_UP:
            MouseKeys[1] = false;
            break;
         case EMIE_MOUSE_MOVED:
            MousePos.X = event.MouseInput.X / (f32)ssize.Width;
            MousePos.Y = event.MouseInput.Y / (f32)ssize.Height;
            break;
         case EMIE_MOUSE_WHEEL:
            currentZoom -= event.MouseInput.Wheel * zoomSpeed;
            break;
      }
      return true;
   }

   if(event.EventType == EET_KEY_INPUT_EVENT)
   {
      Keys[event.KeyInput.Key] = event.KeyInput.PressedDown;
      return true;
   }

   return false;
}

void RTSCamera::OnPreRender()
{
   IVideoDriver* driver = SceneManager->getVideoDriver();
   if (!driver)
      return;

   if (SceneManager->getActiveCamera() == this)
   {
      screenDim.Width = (f32)driver->getCurrentRenderTargetSize().Width;
      screenDim.Height = (f32)driver->getCurrentRenderTargetSize().Height;

      driver->setTransform(ETS_PROJECTION,Projection);

      //If UpVector and Vector to Target are the same, we have a problem.
      //Correct it.
      vector3df pos = getAbsolutePosition();
      vector3df tgtv = Target - pos;
      tgtv.normalize();

      vector3df up = UpVector;
      up.normalize();

      f32 dp = tgtv.dotProduct(up);
      if ((dp > -1.0001f && dp < -0.9999f) || (dp < 1.0001f && dp > 0.9999f))
         up.X += 1.0f;

      View.buildCameraLookAtMatrixLH(pos,Target,up);
      recalculateViewArea();

      SceneManager->registerNodeForRendering(this,ESNRP_CAMERA);
   }

   if (IsVisible)
      ISceneNode::OnRegisterSceneNode();
}

void RTSCamera::render()
{
   IVideoDriver* driver = SceneManager->getVideoDriver();
   if (!driver)
      return;

   driver->setTransform(ETS_VIEW,View);
}

void RTSCamera::OnPostRender(u32 timeMs)
{
   animate();

   ISceneNode::setPosition(Pos);
   updateAbsolutePosition();

   //TODO Add Animators
}

void RTSCamera::setInputReceiverEnabled(bool enabled)
{
   InputReceiverEnabled = enabled;
}

bool RTSCamera::isInputReceiverEnabled()
{
   _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX;
   return InputReceiverEnabled;
}

const aabbox3d<f32>& RTSCamera::getBoundingBox() const
{
   return BBox;
}

const matrix4& RTSCamera::getProjectionMatrix()
{
   return Projection;
}

const SViewFrustum* RTSCamera::getViewFrustum()
{
   return &ViewArea;
}

vector3df RTSCamera::getTarget() const
{
   return Target;
}

const matrix4& RTSCamera::getViewMatrix()
{
   return View;
}

core::vector3df RTSCamera::getUpVector() const
{
   return UpVector;
}

f32 RTSCamera::getNearValue()
{
   return ZNear;
}

f32 RTSCamera::getFarValue()
{
   return ZFar;
}

f32 RTSCamera::getAspectRatio()
{
   return Aspect;
}

f32 RTSCamera::getFOV()
{
   return Fovy;
}

void RTSCamera::setNearValue(f32 f)
{
   ZNear = f;
   recalculateProjectionMatrix();
}

void RTSCamera::setFarValue(f32 f)
{
   ZFar = f;
   recalculateProjectionMatrix();
}

void RTSCamera::setAspectRatio(f32 f)
{
   Aspect = f;
   recalculateProjectionMatrix();
}

void RTSCamera::setFOV(f32 f)
{
   Fovy = f;
   recalculateProjectionMatrix();
}

void RTSCamera::setUpVector(const vector3df& pos)
{
   UpVector = pos;
}

void RTSCamera::setProjectionMatrix(const core::matrix4& projection)
{
   Projection = projection;
}

void RTSCamera::setPosition(const vector3df& pos)
{
   Pos = pos;
   updateAnimationState();

   ISceneNode::setPosition(pos);
}

void RTSCamera::setTarget(const core::vector3df& pos)
{
   Target = oldTarget = pos;
   updateAnimationState();
}

void RTSCamera::pointCameraAtNode(ISceneNode* selectednode)
{
   vector3df totarget = getPosition() - getTarget();
   setPosition(selectednode->getPosition() + (totarget.normalize() * 100));
   setTarget(selectednode->getPosition());
   updateAnimationState();
}

void RTSCamera::setMinZoom(f32 amount)
{
   targetMinDistance = amount;
}

void RTSCamera::setMaxZoom(f32 amount)
{
   targetMaxDistance = amount;
}

void RTSCamera::recalculateProjectionMatrix()
{
   Projection.buildProjectionMatrixPerspectiveFovLH(Fovy,Aspect,ZNear,ZFar);
}

void RTSCamera::recalculateViewArea()
{
   matrix4 mat = Projection * View;
   ViewArea = (mat);

   ViewArea.cameraPosition = getAbsolutePosition();
   ViewArea.recalculateBoundingBox();
}

void RTSCamera::allKeysUp()
{
   for(int i = 0;i < KEY_KEY_CODES_COUNT;i++)
      Keys[i] = false;
}

void RTSCamera::allMouseKeysUp()
{
   for (s32 i=0; i<3; ++i)
      MouseKeys[i] = false;
}

bool RTSCamera::isKeyDown(s32 key)
{
   return Keys[key];
}

bool RTSCamera::isMouseKeyDown(s32 key)
{
   return MouseKeys[key];
}

void RTSCamera::animate()
{
   //Rotation Vals
   f32 nRotX = rotX;
   f32 nRotY = rotY;
   f32 nZoom = currentZoom;

   //Translation Vals
   vector3df translate(oldTarget);
   vector3df tvectX = Pos - Target;
   tvectX = tvectX.crossProduct(UpVector);
   tvectX.normalize();

   //Zoom
   if (isMouseKeyDown(MOUSE_BUTTON_RIGHT) && isMouseKeyDown(MOUSE_BUTTON_LEFT))
   {
      if (!zooming)
      {
         zoomStartX = MousePos.X;
         zoomStartY = MousePos.Y;
         zooming = true;
         nZoom = currentZoom;
      }
      else
      {
         f32 old = nZoom;
         nZoom += (zoomStartX - MousePos.X) * zoomSpeed * 100;

         if (nZoom < targetMinDistance)
            nZoom = targetMinDistance;
         else if (nZoom > targetMaxDistance)
            nZoom = targetMaxDistance;

         if (nZoom < 0)
            nZoom = old;
      }
   }
   else
   {
      if (zooming)
      {
         f32 old = currentZoom;
         currentZoom = currentZoom + (zoomStartX - MousePos.X ) * zoomSpeed;
         nZoom = currentZoom;

         if (nZoom < 0)
            nZoom = currentZoom = old;
      }

      zooming = false;
   }

   //Rotation
   if (isMouseKeyDown(MOUSE_BUTTON_LEFT) && !zooming)
   {
      if (!rotating)
      {
         rotateStartX = MousePos.X;
         rotateStartY = MousePos.Y;
         rotating = true;
         nRotX = rotX;
         nRotY = rotY;
      }
      else
      {
         nRotX += (rotateStartX - MousePos.X) * rotateSpeed;
         nRotY += (rotateStartY - MousePos.Y) * rotateSpeed;
      }
   }
   else
   {
      if (rotating)
      {
         rotX = rotX + (rotateStartX - MousePos.X) * rotateSpeed;
         rotY = rotY + (rotateStartY - MousePos.Y) * rotateSpeed;
         nRotX = rotX;
         nRotY = rotY;
      }

      rotating = false;
   }

   //Translate
   if (isMouseKeyDown(MOUSE_BUTTON_RIGHT) && !zooming)
   {
      if (!translating)
      {
         translateStartX = MousePos.X;
         translateStartY = MousePos.Y;
         translating = true;
      }
      else
      {
         translate += tvectX * (translateStartX - MousePos.X) * translateSpeed;
         translate.X += tvectX.Z * (translateStartY - MousePos.Y) * translateSpeed;
         translate.Z -= tvectX.X * (translateStartY - MousePos.Y) * translateSpeed;

         oldTarget = translate;
      }
   }
   else if (isKeyDown(KEY_KEY_W) || isKeyDown(KEY_UP) && !zooming)
   {
      if (!translating)
         translating = true;
      else
      {
         vector3df movevector = getPosition() - getTarget();
         movevector.Y = 0;
         movevector.normalize();

         setPosition(getPosition() - movevector * translateSpeed);
         setTarget(getTarget() - movevector * translateSpeed);
         updateAbsolutePosition();
      }
   }
   else if (isKeyDown(KEY_KEY_S) || isKeyDown(KEY_DOWN) && !zooming)
   {
      if (!translating)
         translating = true;
      else
      {
         vector3df movevector = getPosition() - getTarget();
         movevector.Y = 0;
         movevector.normalize();

         setPosition(getPosition() + movevector * translateSpeed);
         setTarget(getTarget() + movevector * translateSpeed);
         updateAbsolutePosition();
      }
   }
   else if (isKeyDown(KEY_KEY_A) || isKeyDown(KEY_LEFT) && !zooming)
   {
      if (!translating)
         translating = true;
      else
      {
         vector3df totargetvector = getPosition() - getTarget();
         totargetvector.normalize();
         vector3df crossvector = totargetvector.crossProduct(getUpVector());
         vector3df strafevector = crossvector.normalize();

         setPosition(getPosition() - strafevector * translateSpeed);
         setTarget(getTarget() - strafevector * translateSpeed);
         updateAbsolutePosition();
      }
   }
   else if (isKeyDown(KEY_KEY_D) || isKeyDown(KEY_RIGHT) && !zooming)
   {
      if (!translating)
         translating = true;
      else
      {
         vector3df totargetvector = getPosition() - getTarget();
         totargetvector.normalize();
         vector3df crossvector = totargetvector.crossProduct(getUpVector());
         vector3df strafevector = crossvector.normalize();

         setPosition(getPosition() + strafevector * translateSpeed);
         setTarget(getTarget() + strafevector * translateSpeed);
         updateAbsolutePosition();
      }
   }
   else //Add Code Here for Normal Mouse Movement
   {
      translating = false;

      if (!translating && !zooming && !rotating)
      {
         //Mouse Coordinates go from 0 to 1 on both axes
         if (MousePos.X < 0.05)   //Up
         {
            vector3df totargetvector = getPosition() - getTarget();
            totargetvector.normalize();
            vector3df crossvector = totargetvector.crossProduct(getUpVector());
            vector3df strafevector = crossvector.normalize();

            setPosition(getPosition() - strafevector * translateSpeed);
            setTarget(getTarget() - strafevector * translateSpeed);
            updateAbsolutePosition();
         }
         else if (MousePos.X > 0.95) //Down
         {
            vector3df totargetvector = getPosition() - getTarget();
            totargetvector.normalize();
            vector3df crossvector = totargetvector.crossProduct(getUpVector());
            vector3df strafevector = crossvector.normalize();

            setPosition(getPosition() + strafevector * translateSpeed);
            setTarget(getTarget() + strafevector * translateSpeed);
            updateAbsolutePosition();
         }
         else if (MousePos.Y < 0.05)   //Up
         {
            vector3df movevector = getPosition() - getTarget();
            movevector.Y = 0;
            movevector.normalize();

            setPosition(getPosition() - movevector * translateSpeed);
            setTarget(getTarget() - movevector * translateSpeed);
            updateAbsolutePosition();
         }
         else if (MousePos.Y > 0.95) //Down
         {
            vector3df movevector = getPosition() - getTarget();
            movevector.Y = 0;
            movevector.normalize();

            setPosition(getPosition() + movevector * translateSpeed);
            setTarget(getTarget() + movevector * translateSpeed);
            updateAbsolutePosition();
         }
      }
   }

   //Set Position
   Target = translate;

   Pos.X = nZoom + Target.X;
   Pos.Y = Target.Y;
   Pos.Z = Target.Z;

   Pos.rotateXYBy(nRotY,Target);
   Pos.rotateXZBy(-nRotX,Target);

   //Correct Rotation Error
   UpVector.set(0,1,0);
   UpVector.rotateXYBy(-nRotY,vector3df(0,0,0));
   UpVector.rotateXZBy(-nRotX+180.f,vector3df(0,0,0));
}

void RTSCamera::updateAnimationState()
{
   vector3df pos(Pos - Target);

   // X rotation
   vector2df vec2d(pos.X,pos.Z);
   rotX = (f32)vec2d.getAngle();

   // Y rotation
   pos.rotateXZBy(rotX,vector3df());
   vec2d.set(pos.X, pos.Y);
   rotY = -(f32)vec2d.getAngle();

   // Zoom
   currentZoom = (f32)Pos.getDistanceFrom(Target);
}


Und hier ein auszug aus der Main:
Code:
RTSCamera* camera = new RTSCamera(device,smgr->getRootSceneNode(),smgr,-1,1000.0f,10.0f,10.0f);
    camera->setPosition(vector3df(600,600,600));


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 04.09.2007, 19:32 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
virtual const SViewFrustum* getViewFrustum() const;

das nächste mal könntest du dir auch einfach mal die fehlermeldung durchlesen und verstehen was dir dein compiler sagen will.
Und dann suchst du die relevanten code passagen und suchst nach dem fehler.
Wenn du dann nicht fündig wirst, dann poste doch bitte nur die relevanten codezeilen. keiner hat lust sich 10 seiten code durchzulesen, nur um ein so triviales problem zu lösen

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 04.09.2007, 22:14 
Offline
Benutzeravatar

Registriert: 24.07.2007, 23:11
Beiträge: 283
mach dir nix draus JustMax sowas hat er mir auch schon gesagt mit dem debugger :D
schließlich ersetzt das forum den debugger



aber wozu is so ne RTS camera?

_________________
Be Fluffy!
kemomi.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 04.09.2007, 22:30 
Offline

Registriert: 16.07.2007, 17:34
Beiträge: 9
Ich hab den Quellcode nicht geposted damit man ihn sich übers Bett nagelt sondern damit man den Fehler reproduzieren kann.

und ach ja das was du da geschrieben hast hilft mir kein stück weiter. Ich glaube ich habe besser verstanden was C::B von mir will als du.
Ich hab den Fehler nämlich gefunden:
Aus "virtual const SViewFrustum* getViewFrustum() = 0;" wurde mit Irrlicht 1.3.1 "virtual const SViewFrustum* getViewFrustum() const = 0;". Was wiederum bedeutet das die klasse RTSCamera die rein virtuelle Methode getViewFrustum() nicht überschrieben hat und dadurch die ganze klasse abstrakt wurde.


edit: RTS = Real Time Strategie. Also eine kamera aus der Vogelperspektive.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 05.09.2007, 11:32 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
lol... türlich hab ich gesehen was der fehler war (und wenn du schon mit dem klugscheißen anfängst: code::blocks ist kein compiler sondern eine IDE)

denkst du ich hab das const umsonst hervorgehoben?
im interface war die methode nunmal als const deklariert aber in deiner abgeleiteten klasse nicht

und zum reproduzieren des fehler benötigt man nicht den kompletten code, aber ich schein ja keine ahnung zu haben was ich hier erzähle ;)

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 05.09.2007, 11:37 
Offline
Benutzeravatar

Registriert: 21.04.2007, 08:40
Beiträge: 70
Wohnort: Monheim
Eh Sylence wenn du keine Ahnung hast dann las es doch einfach :lol:

_________________
Mein Blog
Ich würde gern die welt ändern, aber Gott gibt mir den Quellcode nicht
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: RTS Camera
BeitragVerfasst: 05.09.2007, 12:07 
Offline

Registriert: 16.07.2007, 17:34
Beiträge: 9
Zitat:
(und wenn du schon mit dem klugscheißen anfängst: code::blocks ist kein compiler sondern eine IDE)
Wo habe ich das behauptend?

Zitat:
im interface war die methode nunmal als const deklariert aber in deiner abgeleiteten klasse nicht
Dan schreib das und mach da nicht nur Mystische code fragmente hin, denn ob du es glaubst oder nicht ich habe nicht verstanden was du meinst. Ich Möchte dir ja eigentlich echt nicht böse sein, du wolltest mir ja auch nur helfen, aber du machts mir das grade verdammt schwer.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de