Show klight.h syntax highlighted
/*
Copyright (C) 2003, 2004, 2005 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 __KLIGHT_H__
#define __KLIGHT_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 (KLight, 0, 0, 1);
struct KLight : public csObject, public iKXMLWriter, public iKXMLReader
{
protected:
csRef<iEngine> m_engine;
csRef<iGraphics3D> m_g3d;
csRef<iMeshWrapper> m_ballMW;
csRef<iMeshFactoryWrapper> m_meshFactW;
csRef<iLoader> m_loader;
csRef<iLight> m_light;
bool m_relighted;
bool m_constructedProperly;
bool m_visible;
public:
KLight ();
virtual ~KLight ();
bool Create (const char* p_name, const csVector3& p_center,
float p_radius, const csColor& p_color, csLightDynamicType p_type,
csLightAttenuationMode p_attenuation);
const char* GetName () const;
bool IsConstructedProperly () const;
//
//Light'ish methods.
//
iLight* GetLight ();
bool HasRelighted () const;
bool Relight ();
csLightAttenuationMode GetAttenuationMode () const;
void SetAttenuationMode (csLightAttenuationMode);
float GetDirectionalCutoffRadius () const;
void SetDirectionalCutoffRadius (float pRadius);
csLightDynamicType GetDynamicType () const;
const csColor& GetColor () const;
//
//Mesh'ish methods
//
void UnlinkToMesh ();
void LinkToMesh ();
iMeshWrapper* GetMeshWrapper () const;
iMeshFactoryWrapper* GetMeshFactoryWrapper () const;
iMovable* GetMovable () const;
void SetZBufMode (csZBufMode p_zBufMode);
void 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 () const;
void SetPosition (const csVector3& p_pos );
const csVector3& GetPosition () const;
void UpdateMove ();
void GetBoundingBox (csBox3&) const;
void SetSector (iSector* p_sector);
void SetVisible (bool);
bool IsVisible () const;
//
float GetYRotation () const;
void SetYRotation (float);
void SetYRotationPosition (float p_yRotation, const csVector3& p_pos );
//
//iKXMLWriter and iKXMLReader interfaces.
bool Read (iDocumentNode* p_parent);
bool Write (iDocumentNode* p_parent) const;
SCF_DECLARE_IBASE_EXT (csObject);
//
//iKDragHandler interface.
struct eiKDragHandler : public KBaseDragHandler
{
SCF_DECLARE_EMBEDDED_IBASE (KLight);
bool HandleDrag (float p_x, float p_y);
} scfiKDragHandler;
friend struct eiKDragHandler;
//
//iKDragHandler interface.
struct eiKDraggable : public KBaseDraggable
{
SCF_DECLARE_EMBEDDED_IBASE (KLight);
bool Supports (DRAG_TYPE p_dT) const;
const csRefArray<iMeshWrapper> GetMeshWrappers () const;
} scfiKDraggable;
};
#endif
See more files for this project here