Added standard constructor with just scene and name for KRModel and KRCollider.
Implemented KRNode::createNode, to create nodes declared in KrCreateNodeInfo structs. Added stub function, KRNode::update to update node attributes from a KrNodeInfo struct.
This commit is contained in:
@@ -43,7 +43,17 @@ void KRCollider::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||
nodeInfo->collider.mesh = -1;
|
||||
}
|
||||
|
||||
KRCollider::KRCollider(KRScene& scene, std::string collider_name, std::string model_name, unsigned int layer_mask, float audio_occlusion) : KRNode(scene, collider_name)
|
||||
KRCollider::KRCollider(KRScene& scene, std::string name)
|
||||
: KRNode(scene, name)
|
||||
, m_model(nullptr)
|
||||
, m_layer_mask(0xffff)
|
||||
, m_audio_occlusion(1.0f)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
KRCollider::KRCollider(KRScene& scene, std::string collider_name, std::string model_name, unsigned int layer_mask, float audio_occlusion)
|
||||
: KRNode(scene, collider_name)
|
||||
{
|
||||
m_model_name = model_name;
|
||||
m_layer_mask = layer_mask;
|
||||
|
||||
@@ -52,6 +52,7 @@ class KRCollider : public KRNode
|
||||
public:
|
||||
static void InitNodeInfo(KrNodeInfo* nodeInfo);
|
||||
|
||||
KRCollider(KRScene& scene, std::string name);
|
||||
KRCollider(KRScene& scene, std::string collider_name, std::string model_name, unsigned int layer_mask, float audio_occlusion);
|
||||
virtual ~KRCollider();
|
||||
|
||||
|
||||
@@ -793,7 +793,7 @@ KrResult KRContext::createNode(const KrCreateNodeInfo* pCreateNodeInfo)
|
||||
}
|
||||
|
||||
KRNode* newNode = nullptr;
|
||||
KrResult res = KRNode::createNode(pCreateNodeInfo, &newNode);
|
||||
KrResult res = KRNode::createNode(pCreateNodeInfo, scene, &newNode);
|
||||
if (res != KR_SUCCESS) {
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,35 @@ void KRModel::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||
nodeInfo->model.rim_power = 0.0f;
|
||||
}
|
||||
|
||||
KRModel::KRModel(KRScene& scene, std::string instance_name, std::string model_name, std::string light_map, float lod_min_coverage, bool receives_shadow, bool faces_camera, Vector3 rim_color, float rim_power) : KRNode(scene, instance_name)
|
||||
KRModel::KRModel(KRScene& scene, std::string name)
|
||||
: KRNode(scene, name)
|
||||
, m_pLightMap(nullptr)
|
||||
, m_min_lod_coverage(0.0f)
|
||||
, m_receivesShadow(true)
|
||||
, m_faces_camera(false)
|
||||
, m_rim_color(Vector3::Zero())
|
||||
, m_rim_power(0.0f)
|
||||
{
|
||||
m_boundsCachedMat.c[0] = -1.0f;
|
||||
m_boundsCachedMat.c[1] = -1.0f;
|
||||
m_boundsCachedMat.c[2] = -1.0f;
|
||||
m_boundsCachedMat.c[3] = -1.0f;
|
||||
m_boundsCachedMat.c[4] = -1.0f;
|
||||
m_boundsCachedMat.c[5] = -1.0f;
|
||||
m_boundsCachedMat.c[6] = -1.0f;
|
||||
m_boundsCachedMat.c[7] = -1.0f;
|
||||
m_boundsCachedMat.c[8] = -1.0f;
|
||||
m_boundsCachedMat.c[9] = -1.0f;
|
||||
m_boundsCachedMat.c[10] = -1.0f;
|
||||
m_boundsCachedMat.c[11] = -1.0f;
|
||||
m_boundsCachedMat.c[12] = -1.0f;
|
||||
m_boundsCachedMat.c[13] = -1.0f;
|
||||
m_boundsCachedMat.c[14] = -1.0f;
|
||||
m_boundsCachedMat.c[15] = -1.0f;
|
||||
}
|
||||
|
||||
KRModel::KRModel(KRScene& scene, std::string instance_name, std::string model_name, std::string light_map, float lod_min_coverage, bool receives_shadow, bool faces_camera, Vector3 rim_color, float rim_power)
|
||||
: KRNode(scene, instance_name)
|
||||
{
|
||||
m_lightMap = light_map;
|
||||
m_pLightMap = NULL;
|
||||
|
||||
@@ -49,6 +49,7 @@ class KRModel : public KRNode
|
||||
public:
|
||||
static void InitNodeInfo(KrNodeInfo* nodeInfo);
|
||||
|
||||
KRModel(KRScene& scene, std::string name);
|
||||
KRModel(KRScene& scene, std::string instance_name, std::string model_name, std::string light_map, float lod_min_coverage, bool receives_shadow, bool faces_camera, Vector3 rim_color = Vector3::Zero(), float rim_power = 0.0f);
|
||||
virtual ~KRModel();
|
||||
|
||||
|
||||
@@ -63,6 +63,11 @@ void KRNode::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||
nodeInfo->scale_pivot = Vector3::Zero();
|
||||
}
|
||||
|
||||
void KRNode::update(const KrNodeInfo* nodeInfo)
|
||||
{
|
||||
// TODO - Implement
|
||||
}
|
||||
|
||||
KRNode::KRNode(KRScene& scene, std::string name) : KRContextObject(scene.getContext())
|
||||
{
|
||||
m_name = name;
|
||||
@@ -217,9 +222,56 @@ tinyxml2::XMLElement* KRNode::saveXML(tinyxml2::XMLNode* parent)
|
||||
return e;
|
||||
}
|
||||
|
||||
KrResult KRNode::createNode(const KrCreateNodeInfo* pCreateNodeInfo, KRNode** node)
|
||||
KrResult KRNode::createNode(const KrCreateNodeInfo* pCreateNodeInfo, KRScene* scene, KRNode** node)
|
||||
{
|
||||
return KR_ERROR_NOT_IMPLEMENTED;
|
||||
switch (pCreateNodeInfo->node.sType) {
|
||||
case KR_STRUCTURE_TYPE_NODE_CAMERA:
|
||||
*node = new KRCamera(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_LOD_SET:
|
||||
*node = new KRLODSet(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_LOD_GROUP:
|
||||
*node = new KRLODGroup(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_POINT_LIGHT:
|
||||
*node = new KRPointLight(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_DIRECTIONAL_LIGHT:
|
||||
*node = new KRDirectionalLight(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_SPOT_LIGHT:
|
||||
*node = new KRSpotLight(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_SPRITE:
|
||||
*node = new KRSprite(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_MODEL:
|
||||
*node = new KRModel(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_COLLIDER:
|
||||
*node = new KRCollider(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_BONE:
|
||||
*node = new KRBone(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_LOCATOR:
|
||||
*node = new KRLocator(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_AUDIO_SOURCE:
|
||||
*node = new KRAudioSource(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_AMBIENT_ZONE:
|
||||
*node = new KRAmbientZone(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
case KR_STRUCTURE_TYPE_NODE_REVERB_ZONE:
|
||||
*node = new KRReverbZone(*scene, pCreateNodeInfo->node.pName);
|
||||
break;
|
||||
default:
|
||||
return KR_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
(*node)->update(&pCreateNodeInfo->node);
|
||||
return KR_SUCCESS;
|
||||
}
|
||||
|
||||
void KRNode::loadXML(tinyxml2::XMLElement* e)
|
||||
|
||||
@@ -108,6 +108,7 @@ public:
|
||||
};
|
||||
|
||||
static void InitNodeInfo(KrNodeInfo* nodeInfo);
|
||||
virtual void update(const KrNodeInfo* nodeInfo);
|
||||
|
||||
KRNode(KRScene& scene, std::string name);
|
||||
virtual ~KRNode();
|
||||
@@ -115,7 +116,7 @@ public:
|
||||
virtual tinyxml2::XMLElement* saveXML(tinyxml2::XMLNode* parent);
|
||||
|
||||
static KRNode* LoadXML(KRScene& scene, tinyxml2::XMLElement* e);
|
||||
static KrResult createNode(const KrCreateNodeInfo* pCreateNodeInfo, KRNode** node);
|
||||
static KrResult createNode(const KrCreateNodeInfo* pCreateNodeInfo, KRScene* scene, KRNode** node);
|
||||
virtual void loadXML(tinyxml2::XMLElement* e);
|
||||
|
||||
virtual std::string getElementName();
|
||||
|
||||
Reference in New Issue
Block a user