Code Search for Developers
 
 
  

ksprite3d.h from Spatial Knowledge Experiments at Krugle


Show ksprite3d.h syntax highlighted

/*
    Copyright (C) 2003, 2004 by Luca Cappa
    Written by Luca Cappa groton@users.sourceforge.net
  
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.
  
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.
  
    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef __KSPRITE3D_H__
#define __KSPRITE3D_H__

struct iEngine;
struct iGraphics3D;
struct iLoader;
struct iMaterialWrapper;
struct iMeshWrapper;
struct iSprite3DState;
struct iSprite3DFactoryState;
class csTransform;
struct iPolygon3D;
struct iCollideSystem;
class csVector3;

struct iKDraggable;
struct iKDragHandler;
struct KBaseDraggable;
class BlockId;
class KFlags;
class csBox3;

#include "ikxmlreader.h"
#include "ikxmlwriter.h"

#include "kbasedraggable.h"
#include "kbasedraghandler.h"

SCF_VERSION (KSprite3D, 0, 0, 1);

struct KSprite3D : public csObject, public iKXMLWriter, public iKXMLReader
{
protected:
  csRef<iEngine> m_engine;
  csRef<iGraphics3D> m_g3d;
  csRef<iMeshWrapper> m_meshW;
  csRef<iMeshFactoryWrapper> m_meshFactW;
  csRef<iLoader> m_loader;
  csRef<iSprite3DState> m_state;
  csRef<iSprite3DFactoryState> m_factState;
  
  bool Create (const char* p_mF);
  bool Rescale (float p_x,float p_y, float p_z);
  bool LoadMeshFactory (const char* p_mFName);
  
  
  /**
    
  */
  bool CenterToOrigin ();
  /**
    Put the mesh over the XZ axis.
  */
  void OverTheFloor();

  bool m_constructedProperly;

  bool m_visible;

  //values stored in the constructor.
  csRef<iString> m_modelName;
  csRef<iString> m_materialName;
  float m_xScale;
  float m_yScale;
  float m_zScale;

  bool SetMaterial (iMaterialWrapper* p_mat);
  iMaterialWrapper* GetMaterial ();

public:
  KSprite3D ();
  virtual ~KSprite3D ();

  bool Create (const char* p_name, const char* p_mFName,
    const char* p_materialName,
    float p_x, float p_y, float p_z, const csReversibleTransform* = 0);
  void Release ();

  bool SetMaterialName (const char*);
  const char* GetMaterialName ();

  bool IsConstructedProperly ();

  iMeshWrapper* GetMeshWrapper ();
  iMeshFactoryWrapper& GetMeshFactoryWrapper ();
  
  void SetBaseColor(const csColor& p_color);
  iMovable& GetMovable();
  iSprite3DState& KSprite3D::GetState ();
  void SetAction (const char* p_actionName);

  

  //
  //
  void SetZBufMode (csZBufMode p_zBufMode);
  void KSprite3D::SetRenderPriority (int p_rP);

  bool Resize  (float p_xSize, float p_ySize, float p_zSize);

  void HardTransform (const csReversibleTransform& p_rT );

  //
  //for moving.
  void LookAt (const csVector3& p_to, const csVector3& p_up );
  void Transform (const csMatrix3& p_tr );
  void SetTransform (const csMatrix3& p_tr );
  const csMatrix3& GetTransform ();
  void SetPosition (const csVector3& p_pos );
  const csVector3& GetPosition ();
  void KSprite3D::UpdateMove ();

  void GetBoundingBox (csBox3&);
  void SetSector (iSector* p_sector);
  void SetVisible (bool);
  bool IsVisible ();

  //
  float GetYRotation ();
  void SetYRotation (float);
  float m_yRotation;
  void SetYRotationPosition (float p_yRotation, const csVector3& p_pos );

  //
  //methods related to parameter passed together in the constructor.
  iString* GetModelName ();
  float GetXScale ();
  float GetYScale ();
  float GetZScale ();

  //
  //iKXMLReader and IKXMLWriter interfaces.
  bool Write (iDocumentNode*) const;
  bool Read (iDocumentNode*);

  SCF_DECLARE_IBASE_EXT (csObject);


  bool SetDraggable (iKDraggable* p_draggable);


  struct eiKDraggable : public KBaseDraggable
  {
    SCF_DECLARE_EMBEDDED_IBASE (KSprite3D);

    const csRefArray<iMeshWrapper> GetMeshWrappers () const;

  } scfiKDraggable;
};

#endif




See more files for this project here

Spatial Knowledge Experiments

A simulation of 3D virtual worlds for psychological experiments

Project homepage: http://sourceforge.net/projects/ske
Programming language(s): C,C++,Perl
License: other

  isense/
  joystick/
  Jamfile
  KImageCardinalDirection.h
  SKE.cpp
  SKE.h
  eulerangles.c
  eulerangles.h
  ikdraggable.cpp
  ikdraggable.h
  ikdraghandler.h
  ikmission.h
  ikxmlreader.h
  ikxmlwriter.h
  kappstate.cpp
  kappstate.h
  kbasedraggable.cpp
  kbasedraggable.h
  kbasedraghandler.cpp
  kbasedraghandler.h
  kblock.cpp
  kblock.h
  kblockId.h
  kblockid.cpp
  kcamera.cpp
  kcamera.h
  kcollision.cpp
  kcommandprocessor.cpp
  kcommandprocessor.h
  kconstant.cpp
  kconstant.h
  kcursor3d.cpp
  kcursor3d.h
  kdata.cpp
  kdata.h
  kdatalist.cpp
  kdatalist.h
  kdragmanager.cpp
  kdragmanager.h
  keventhandlermanager.cpp
  keventhandlermanager.h
  kflags.cpp
  kflags.h
  kimagecardinaldirection.cpp
  kkeys.cpp
  kkeys.h
  kkeystate.cpp
  kkeystate.h
  klandmark.cpp
  klandmark.h
  klandmarklist.cpp
  klandmarklist.h
  klight.cpp
  klight.h
  klightlist.cpp
  klightlist.h
  kmap.cpp
  kmap.h
  kmission.cpp
  kmission.h
  kmissiontype.cpp
  kmissiontype.h
  kmode.cpp
  kmode.h
  kmousemanager.cpp
  kmousemanager.h
  kobject3d.cpp
  kobject3d.h
  korientation.cpp
  korientation.h
  kpath.cpp
  kpath.h
  kpathfollower.cpp
  kpathfollower.h
  kplayer.cpp
  kplayer.h
  kposition.cpp
  kposition.h
  kquaternion.cpp
  kquaternion.h
  ksaveddatamanager.cpp
  ksaveddatamanager.h
  ksegment3.h
  ksign.cpp
  ksign.h
  ksprite3d.cpp
  ksprite3d.h
  ksprite3dlist.cpp
  ksprite3dlist.h
  kterrain.cpp
  kterrain.h
  kthing.cpp
  kthing.h
  kutil.cpp
  kutil.h
  kwireframe.cpp
  kwireframe.h
  kxmlhelper.h
  movement1d.h
  movement3d.h
  quattypes.h