2012-04-12 00:43:53 +00:00
|
|
|
//
|
|
|
|
|
// KRNode.h
|
|
|
|
|
// KREngine
|
|
|
|
|
//
|
|
|
|
|
// Created by Kearwood Gilbert on 12-04-11.
|
|
|
|
|
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#ifndef KREngine_KRNode_h
|
|
|
|
|
#define KREngine_KRNode_h
|
|
|
|
|
|
|
|
|
|
#import "KRResource.h"
|
|
|
|
|
#import "KRVector3.h"
|
2012-10-26 01:17:35 +00:00
|
|
|
#import "KRViewport.h"
|
2012-04-12 00:43:53 +00:00
|
|
|
#import "tinyxml2.h"
|
2012-06-14 19:33:17 +00:00
|
|
|
|
2012-04-12 06:04:15 +00:00
|
|
|
class KRCamera;
|
|
|
|
|
class KRShaderManager;
|
|
|
|
|
class KRModelManager;
|
|
|
|
|
class KRMaterialManager;
|
|
|
|
|
class KRMat4;
|
|
|
|
|
class KRTextureManager;
|
2012-04-12 19:43:08 +00:00
|
|
|
class KRContext;
|
2012-08-29 21:43:11 +00:00
|
|
|
class KRScene;
|
2012-09-11 03:06:35 +00:00
|
|
|
class KRAABB;
|
2012-04-12 00:43:53 +00:00
|
|
|
|
2012-08-17 01:04:49 +00:00
|
|
|
class KRNode : public KRContextObject
|
2012-04-12 00:43:53 +00:00
|
|
|
{
|
|
|
|
|
public:
|
2012-06-14 19:33:17 +00:00
|
|
|
enum RenderPass {
|
|
|
|
|
RENDER_PASS_FORWARD_OPAQUE,
|
|
|
|
|
RENDER_PASS_DEFERRED_GBUFFER,
|
|
|
|
|
RENDER_PASS_DEFERRED_LIGHTS,
|
|
|
|
|
RENDER_PASS_DEFERRED_OPAQUE,
|
|
|
|
|
RENDER_PASS_FORWARD_TRANSPARENT,
|
2012-06-15 00:05:56 +00:00
|
|
|
RENDER_PASS_FLARES,
|
2012-10-25 18:48:25 +00:00
|
|
|
RENDER_PASS_SHADOWMAP
|
2012-06-14 19:33:17 +00:00
|
|
|
};
|
|
|
|
|
|
2012-08-29 21:43:11 +00:00
|
|
|
KRNode(KRScene &scene, std::string name);
|
2012-04-12 00:43:53 +00:00
|
|
|
virtual ~KRNode();
|
|
|
|
|
|
|
|
|
|
virtual tinyxml2::XMLElement *saveXML( tinyxml2::XMLNode *parent);
|
2012-08-29 21:43:11 +00:00
|
|
|
static KRNode *LoadXML(KRScene &scene, tinyxml2::XMLElement *e);
|
2012-04-12 01:27:30 +00:00
|
|
|
virtual void loadXML(tinyxml2::XMLElement *e);
|
|
|
|
|
|
2012-04-12 00:43:53 +00:00
|
|
|
virtual std::string getElementName();
|
2012-04-26 09:06:45 +00:00
|
|
|
const std::string &getName();
|
2012-04-12 00:43:53 +00:00
|
|
|
|
|
|
|
|
void addChild(KRNode *child);
|
2012-04-19 23:39:32 +00:00
|
|
|
const std::vector<KRNode *> &getChildren();
|
2012-04-12 00:43:53 +00:00
|
|
|
|
|
|
|
|
void setLocalTranslation(const KRVector3 &v);
|
|
|
|
|
void setLocalScale(const KRVector3 &v);
|
|
|
|
|
void setLocalRotation(const KRVector3 &v);
|
|
|
|
|
|
|
|
|
|
const KRVector3 &getLocalTranslation();
|
|
|
|
|
const KRVector3 &getLocalScale();
|
|
|
|
|
const KRVector3 &getLocalRotation();
|
|
|
|
|
|
2012-04-19 23:39:32 +00:00
|
|
|
const KRVector3 &getWorldTranslation();
|
|
|
|
|
const KRVector3 &getWorldScale();
|
|
|
|
|
const KRVector3 &getWorldRotation();
|
|
|
|
|
|
2012-09-11 03:06:35 +00:00
|
|
|
virtual KRAABB getBounds();
|
2012-08-29 21:43:11 +00:00
|
|
|
|
|
|
|
|
KRScene &getScene();
|
2012-04-12 06:04:15 +00:00
|
|
|
#if TARGET_OS_IPHONE
|
|
|
|
|
|
2012-10-26 01:17:35 +00:00
|
|
|
virtual void render(KRCamera *pCamera, KRContext *pContext, const KRViewport &viewport, KRVector3 &lightDirection, KRMat4 *pShadowMatrices, GLuint *shadowDepthTextures, int cShadowBuffers, RenderPass renderPass);
|
2012-04-12 06:04:15 +00:00
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
protected:
|
2012-04-12 00:43:53 +00:00
|
|
|
KRVector3 m_localTranslation;
|
|
|
|
|
KRVector3 m_localScale;
|
|
|
|
|
KRVector3 m_localRotation;
|
|
|
|
|
|
2012-10-04 22:29:01 +00:00
|
|
|
private:
|
2012-09-13 20:09:19 +00:00
|
|
|
|
2012-04-12 00:43:53 +00:00
|
|
|
std::string m_name;
|
|
|
|
|
|
|
|
|
|
std::vector<KRNode *> m_childNodes;
|
2012-04-12 06:04:15 +00:00
|
|
|
KRNode *m_parentNode;
|
|
|
|
|
|
2012-08-29 21:43:11 +00:00
|
|
|
KRScene *m_pScene;
|
|
|
|
|
|
2012-04-12 00:43:53 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|