Creating object model to store lights returned by FBX import in preparation of deferred rendering.
--HG-- extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%4029
This commit is contained in:
26
KREngine/KREngine/Classes/KRDirectionalLight.cpp
Normal file
26
KREngine/KREngine/Classes/KRDirectionalLight.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// KRDirectionalLight.cpp
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#import "KRDirectionalLight.h"
|
||||
|
||||
KRDirectionalLight::KRDirectionalLight(std::string name) : KRLight(name)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
KRDirectionalLight::~KRDirectionalLight()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool KRDirectionalLight::save(const std::string& path)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
24
KREngine/KREngine/Classes/KRDirectionalLight.h
Normal file
24
KREngine/KREngine/Classes/KRDirectionalLight.h
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// KRDirectionalLight.h
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef KREngine_KRDirectionalLight_h
|
||||
#define KREngine_KRDirectionalLight_h
|
||||
|
||||
#import "KRLight.h"
|
||||
|
||||
class KRDirectionalLight : public KRLight {
|
||||
|
||||
public:
|
||||
KRDirectionalLight(std::string name);
|
||||
~KRDirectionalLight();
|
||||
|
||||
virtual bool save(const std::string& path);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -39,6 +39,7 @@
|
||||
#import "KRMaterialManager.h"
|
||||
#import "KRShaderManager.h"
|
||||
#import "KRModelManager.h"
|
||||
#import "KRLightManager.h"
|
||||
#import "KRCamera.h"
|
||||
|
||||
#import "KREngine-common.h"
|
||||
@@ -84,6 +85,7 @@ typedef enum KREngineParameterType {KRENGINE_PARAMETER_INT, KRENGINE_PARAMETER_F
|
||||
KRMaterialManager *m_pMaterialManager;
|
||||
KRShaderManager *m_pShaderManager;
|
||||
KRModelManager *m_pModelManager;
|
||||
KRLightManager *m_pLightManager;
|
||||
|
||||
int m_iFrame;
|
||||
|
||||
|
||||
@@ -82,6 +82,7 @@ double const PI = 3.141592653589793f;
|
||||
m_pTextureManager = new KRTextureManager();
|
||||
m_pMaterialManager = new KRMaterialManager(m_pTextureManager, m_pShaderManager);
|
||||
m_pModelManager = new KRModelManager(m_pMaterialManager);
|
||||
m_pLightManager = new KRLightManager();
|
||||
|
||||
if (![self createBuffers] || ![self loadShaders] /*|| ![self loadObjects]*/ )
|
||||
{
|
||||
@@ -548,6 +549,8 @@ double const PI = 3.141592653589793f;
|
||||
} else if([path hasSuffix: @".mtl"]) {
|
||||
NSLog(@"material: %@", path);
|
||||
m_pMaterialManager->loadFile([path UTF8String]);
|
||||
} else if([path hasSuffix: @".krlight"]) {
|
||||
m_pLightManager->loadFile([path UTF8String]);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@@ -575,7 +578,10 @@ double const PI = 3.141592653589793f;
|
||||
m_pShaderManager = NULL;
|
||||
}
|
||||
|
||||
|
||||
if(m_pLightManager) {
|
||||
delete m_pLightManager;
|
||||
m_pLightManager = NULL;
|
||||
}
|
||||
|
||||
[self invalidatePostShader];
|
||||
[self destroyBuffers];
|
||||
|
||||
26
KREngine/KREngine/Classes/KRLight.cpp
Normal file
26
KREngine/KREngine/Classes/KRLight.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// KRLight.cpp
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#import "KRLight.h"
|
||||
|
||||
KRLight::KRLight(std::string name) : KRResource(name)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
KRLight::~KRLight()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
std::string KRLight::getExtension()
|
||||
{
|
||||
return "krlight";
|
||||
}
|
||||
24
KREngine/KREngine/Classes/KRLight.h
Normal file
24
KREngine/KREngine/Classes/KRLight.h
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// KRLight.h
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef KREngine_KRLight_h
|
||||
#define KREngine_KRLight_h
|
||||
|
||||
#import "KRResource.h"
|
||||
|
||||
class KRLight : public KRResource {
|
||||
public:
|
||||
~KRLight();
|
||||
|
||||
virtual std::string getExtension();
|
||||
virtual bool save(const std::string& path) = 0;
|
||||
protected:
|
||||
KRLight(std::string name);
|
||||
};
|
||||
|
||||
#endif
|
||||
26
KREngine/KREngine/Classes/KRLightManager.cpp
Normal file
26
KREngine/KREngine/Classes/KRLightManager.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// KRLightManager.cpp
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "KRLightManager.h"
|
||||
|
||||
KRLightManager::KRLightManager()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
KRLightManager::~KRLightManager()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool KRLightManager::loadFile(const char *szPath)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
20
KREngine/KREngine/Classes/KRLightManager.h
Normal file
20
KREngine/KREngine/Classes/KRLightManager.h
Normal file
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// KRLightManager.h
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef KREngine_KRLightManager_h
|
||||
#define KREngine_KRLightManager_h
|
||||
|
||||
class KRLightManager {
|
||||
public:
|
||||
KRLightManager();
|
||||
~KRLightManager();
|
||||
|
||||
bool loadFile(const char *szPath);
|
||||
};
|
||||
|
||||
#endif
|
||||
26
KREngine/KREngine/Classes/KRPointLight.cpp
Normal file
26
KREngine/KREngine/Classes/KRPointLight.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// KRPointLight.cpp
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#import "KRPointLight.h"
|
||||
|
||||
KRPointLight::KRPointLight(std::string name) : KRLight(name)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
KRPointLight::~KRPointLight()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool KRPointLight::save(const std::string& path)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
23
KREngine/KREngine/Classes/KRPointLight.h
Normal file
23
KREngine/KREngine/Classes/KRPointLight.h
Normal file
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// KRPointLight.h
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef KREngine_KRPointLight_h
|
||||
#define KREngine_KRPointLight_h
|
||||
|
||||
#import "KRLight.h"
|
||||
|
||||
class KRPointLight : public KRLight {
|
||||
|
||||
public:
|
||||
KRPointLight(std::string name);
|
||||
~KRPointLight();
|
||||
|
||||
virtual bool save(const std::string& path);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -24,6 +24,10 @@
|
||||
#include "KRResource.h"
|
||||
#include "KRMesh.h"
|
||||
#include "KRMaterial.h"
|
||||
#include "KRLight.h"
|
||||
#include "KRPointLight.h"
|
||||
#include "KRDirectionalLight.h"
|
||||
#include "KRSpotLight.h"
|
||||
|
||||
#ifdef IOS_REF
|
||||
#undef IOS_REF
|
||||
@@ -35,6 +39,7 @@ void DestroySdkObjects(KFbxSdkManager* pSdkManager);
|
||||
bool LoadScene(KFbxSdkManager* pSdkManager, KFbxDocument* pScene, const char* pFilename);
|
||||
void LoadNode(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeometryConverter, KFbxNode* pNode);
|
||||
void LoadMesh(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeometryConverter, KFbxNode* pNode);
|
||||
void LoadLight(std::vector<KRResource *> &resources, KFbxNode* pNode);
|
||||
|
||||
|
||||
std::vector<KRResource *> KRResource::LoadFbx(const std::string& path)
|
||||
@@ -72,21 +77,6 @@ std::vector<KRResource *> KRResource::LoadFbx(const std::string& path)
|
||||
|
||||
DestroySdkObjects(lSdkManager);
|
||||
|
||||
/*
|
||||
|
||||
KRMesh *new_mesh = new KRMesh(KRResource::GetFileBase(path));
|
||||
|
||||
std::vector<KRVector3> vertices;
|
||||
std::vector<KRVector2> uva;
|
||||
std::vector<KRVector3> normals;
|
||||
std::vector<KRVector3> tangents;
|
||||
std::vector<int> submesh_lengths;
|
||||
std::vector<int> submesh_starts;
|
||||
std::vector<std::string> material_names;
|
||||
|
||||
new_mesh->LoadData(vertices, uva, normals, tangents, submesh_starts, submesh_lengths, material_names);
|
||||
resources.push_back(new_mesh);
|
||||
*/
|
||||
return resources;
|
||||
}
|
||||
|
||||
@@ -259,6 +249,9 @@ void LoadNode(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeom
|
||||
case KFbxNodeAttribute::eMESH:
|
||||
LoadMesh(resources, pGeometryConverter, pNode);
|
||||
break;
|
||||
case KFbxNodeAttribute::eLIGHT:
|
||||
LoadLight(resources, pNode);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -336,156 +329,6 @@ void LoadMesh(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeom
|
||||
|
||||
|
||||
// ----====---- Read UVs ----====----
|
||||
// for (int l = 0; l < uv_count; ++l)
|
||||
// {
|
||||
// KFbxVector2 uv;
|
||||
// KFbxGeometryElementUV* leUV = pMesh->GetElementUV(l);
|
||||
//
|
||||
// switch (leUV->GetMappingMode()) {
|
||||
// case KFbxGeometryElement::eBY_CONTROL_POINT:
|
||||
// switch (leUV->GetReferenceMode()) {
|
||||
// case KFbxGeometryElement::eDIRECT:
|
||||
// uv = leUV->GetDirectArray().GetAt(lControlPointIndex);
|
||||
// break;
|
||||
// case KFbxGeometryElement::eINDEX_TO_DIRECT:
|
||||
// {
|
||||
// int id = leUV->GetIndexArray().GetAt(lControlPointIndex);
|
||||
// uv = leUV->GetDirectArray().GetAt(id);
|
||||
// }
|
||||
// break;
|
||||
// default:
|
||||
// break; // other reference modes not shown here!
|
||||
// }
|
||||
// break;
|
||||
//
|
||||
// case KFbxGeometryElement::eBY_POLYGON_VERTEX:
|
||||
// switch (leUV->GetReferenceMode()) {
|
||||
// case KFbxGeometryElement::eDIRECT:
|
||||
// uv = leUV->GetDirectArray().GetAt(source_vertex_id);
|
||||
// break;
|
||||
// case KFbxGeometryElement::eINDEX_TO_DIRECT:
|
||||
// {
|
||||
// int id = leUV->GetIndexArray().GetAt(source_vertex_id);
|
||||
// uv = leUV->GetDirectArray().GetAt(id);
|
||||
// }
|
||||
// break;
|
||||
// default:
|
||||
// break; // other reference modes not shown here!
|
||||
// }
|
||||
// break;
|
||||
//
|
||||
//
|
||||
//// case KFbxGeometryElement::eBY_POLYGON_VERTEX:
|
||||
//// {
|
||||
//// int lTextureUVIndex = pMesh->GetTextureUVIndex(iPolygon, iVertex);
|
||||
//// switch (leUV->GetReferenceMode())
|
||||
//// {
|
||||
//// case KFbxGeometryElement::eDIRECT:
|
||||
//// case KFbxGeometryElement::eINDEX_TO_DIRECT:
|
||||
//// {
|
||||
//// uv = leUV->GetDirectArray().GetAt(lTextureUVIndex);
|
||||
//// }
|
||||
//// break;
|
||||
//// default:
|
||||
//// break; // other reference modes not shown here!
|
||||
//// }
|
||||
//// }
|
||||
//// break;
|
||||
////
|
||||
//
|
||||
// case KFbxGeometryElement::eBY_POLYGON: // doesn't make much sense for UVs
|
||||
// case KFbxGeometryElement::eALL_SAME: // doesn't make much sense for UVs
|
||||
// case KFbxGeometryElement::eNONE: // doesn't make much sense for UVs
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// if(l == 0) {
|
||||
// new_uva = KRVector2(uv[0], uv[1]);
|
||||
// // uva.push_back(KRVector2(uv[0], uv[1]));
|
||||
// } else if(l == 1) {
|
||||
// new_uvb = KRVector2(uv[0], uv[1]);
|
||||
// // uvb.push_back(KRVector2(uv[0], uv[1]));
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if(uv_count > 0) {
|
||||
// uva.push_back(new_uva);
|
||||
// }
|
||||
// if(uv_count > 1) {
|
||||
// uvb.push_back(new_uvb);
|
||||
// }
|
||||
|
||||
|
||||
// KFbxLayerElementArrayTemplate<KFbxVector2>* lUVArray = NULL;
|
||||
// pMesh->GetTextureUV(&lUVArray, KFbxLayerElement::eDIFFUSE_TEXTURES);
|
||||
//
|
||||
// int lCurrentUVIndex = pMesh->GetTextureUVIndex(iPolygon, iVertex, KFbxLayerElement::eDIFFUSE_TEXTURES);
|
||||
//
|
||||
// KFbxVector2 uv = lUVArray->GetAt(lCurrentUVIndex);
|
||||
// new_uva = KRVector2(uv[0], uv[1]);
|
||||
|
||||
|
||||
// if(pMesh->GetLayerCount() >= 1) {
|
||||
// KFbxLayerElementUV* uvs = pMesh->GetLayer(0)->GetUVs();
|
||||
// KFbxVector2 uv;
|
||||
// int index = 0;
|
||||
// switch (uvs->GetMappingMode())
|
||||
// {
|
||||
// case KFbxLayerElement::eBY_CONTROL_POINT:
|
||||
// index = pMesh->GetPolygonVertex(iPolygon, iVertex);
|
||||
// break;
|
||||
// case KFbxLayerElement::eBY_POLYGON_VERTEX:
|
||||
// index = source_vertex_id;
|
||||
// break;
|
||||
// case KFbxLayerElement::eBY_POLYGON:
|
||||
// index = iPolygon;
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// if (uvs->GetReferenceMode() != KFbxLayerElement::eDIRECT)
|
||||
// {
|
||||
// index = uvs->GetIndexArray().GetAt(index);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// uv = uvs->GetDirectArray().GetAt(index);
|
||||
//
|
||||
// new_uva = KRVector2(uv[0], uv[1]);
|
||||
// }
|
||||
//
|
||||
// if(pMesh->GetLayerCount() >= 2) {
|
||||
// KFbxLayerElementUV* uvs = pMesh->GetLayer(1)->GetUVs();
|
||||
// KFbxVector2 uv;
|
||||
// int index = 0;
|
||||
// switch (uvs->GetMappingMode())
|
||||
// {
|
||||
// case KFbxLayerElement::eBY_CONTROL_POINT:
|
||||
// index = pMesh->GetPolygonVertex(iPolygon, iVertex);
|
||||
// break;
|
||||
// case KFbxLayerElement::eBY_POLYGON_VERTEX:
|
||||
// index = source_vertex_id;
|
||||
// break;
|
||||
// case KFbxLayerElement::eBY_POLYGON:
|
||||
// index = iPolygon;
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// if (uvs->GetReferenceMode() != KFbxLayerElement::eDIRECT)
|
||||
// {
|
||||
// index = uvs->GetIndexArray().GetAt(index);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// uv = uvs->GetDirectArray().GetAt(index);
|
||||
//
|
||||
// new_uva = KRVector2(uv[0], uv[1]);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
KStringList uvNames;
|
||||
pMesh->GetUVSetNames(uvNames);
|
||||
@@ -495,6 +338,7 @@ void LoadMesh(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeom
|
||||
if(pMesh->GetPolygonVertexUV(iPolygon, iVertex, setName, uv)) {
|
||||
new_uva = KRVector2(uv[0], uv[1]);
|
||||
}
|
||||
uva.push_back(new_uva);
|
||||
}
|
||||
|
||||
if(uv_count >= 2) {
|
||||
@@ -503,78 +347,8 @@ void LoadMesh(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeom
|
||||
if(pMesh->GetPolygonVertexUV(iPolygon, iVertex, setName, uv)) {
|
||||
new_uvb = KRVector2(uv[0], uv[1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
for (int iLayer = 0; iLayer < pMesh->GetLayerCount(); iLayer++)
|
||||
{
|
||||
KFbxLayerElementUV* uvs = pMesh->GetLayer(iLayer)->GetUVs();
|
||||
KFbxVector2 uv;
|
||||
if (uvs == NULL) continue;
|
||||
|
||||
|
||||
switch (uvs->GetMappingMode())
|
||||
{
|
||||
case KFbxLayerElement::eBY_CONTROL_POINT:
|
||||
//uvs_index_vector[iLayer] = cpIndex; break;
|
||||
switch (uvs->GetReferenceMode())
|
||||
{
|
||||
case KFbxLayerElement::eDIRECT:
|
||||
uv = uvs->GetDirectArray().GetAt(cpIndex));
|
||||
break;
|
||||
case KFbxLayerElement::eINDEX_TO_DIRECT:
|
||||
{
|
||||
int id = uvs->GetIndexArray().GetAt(cpIndex);
|
||||
uv = uvs->GetDirectArray().GetAt(id));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break; // other reference modes not shown here!
|
||||
}
|
||||
break;
|
||||
case KFbxLayerElement::eBY_POLYGON_VERTEX: //BUG: This wont work in some FBXs, so we will skip the uvs
|
||||
{
|
||||
//int id = fbxmesh->GetTextureUVIndex(lPolygonIndex, iVertex);
|
||||
int id = lCurrentPolygonIndex + iVertex;
|
||||
|
||||
switch (uvs->GetReferenceMode() )
|
||||
{
|
||||
case KFbxLayerElement::eDIRECT:
|
||||
break;
|
||||
case KFbxLayerElement::eINDEX_TO_DIRECT:
|
||||
//uvs_index_vector[iLayer] = id;
|
||||
id = uvs->GetIndexArray().GetAt(id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Display2DVector(header, uvs->GetDirectArray().GetAt(id));
|
||||
int numuvs = uvs->GetDirectArray().GetCount();
|
||||
assert( id < numuvs );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(iLayer == 0) {
|
||||
new_uva = KRVector2(uv[0], uv[1]);
|
||||
// uva.push_back(KRVector2(uv[0], uv[1]));
|
||||
} else if(iLayer == 1) {
|
||||
new_uvb = KRVector2(uv[0], uv[1]);
|
||||
// uvb.push_back(KRVector2(uv[0], uv[1]));
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
if(uv_count > 0) {
|
||||
uva.push_back(new_uva);
|
||||
}
|
||||
if(uv_count > 1) {
|
||||
uvb.push_back(new_uvb);
|
||||
}
|
||||
}
|
||||
|
||||
// ----====---- Read Normals ----====----
|
||||
|
||||
@@ -778,3 +552,22 @@ void LoadMesh(std::vector<KRResource *> &resources, KFbxGeometryConverter *pGeom
|
||||
|
||||
}
|
||||
|
||||
void LoadLight(std::vector<KRResource *> &resources, KFbxNode* pNode) {
|
||||
KFbxLight* pLight = (KFbxLight*) pNode->GetNodeAttribute();
|
||||
const char *szName = pNode->GetName();
|
||||
switch(pLight->LightType.Get()) {
|
||||
case KFbxLight::ePOINT:
|
||||
resources.push_back(new KRPointLight(szName));
|
||||
break;
|
||||
case KFbxLight::eDIRECTIONAL:
|
||||
resources.push_back(new KRDirectionalLight(szName));
|
||||
break;
|
||||
case KFbxLight::eSPOT:
|
||||
resources.push_back(new KRSpotLight(szName));
|
||||
break;
|
||||
case KFbxLight::eAREA:
|
||||
// Not supported yet
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
25
KREngine/KREngine/Classes/KRSpotLight.cpp
Normal file
25
KREngine/KREngine/Classes/KRSpotLight.cpp
Normal file
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// KRSpotLight.cpp
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#import "KRSpotLight.h"
|
||||
|
||||
KRSpotLight::KRSpotLight(std::string name) : KRLight(name)
|
||||
{
|
||||
}
|
||||
|
||||
KRSpotLight::~KRSpotLight()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool KRSpotLight::save(const std::string& path)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
23
KREngine/KREngine/Classes/KRSpotLight.h
Normal file
23
KREngine/KREngine/Classes/KRSpotLight.h
Normal file
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// KRSpotLight.h
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 12-04-05.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef KREngine_KRSpotLight_h
|
||||
#define KREngine_KRSpotLight_h
|
||||
|
||||
#import "KRLight.h"
|
||||
|
||||
class KRSpotLight : public KRLight {
|
||||
public:
|
||||
KRSpotLight(std::string name);
|
||||
~KRSpotLight();
|
||||
|
||||
virtual bool save(const std::string& path);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user