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;
|
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_model_name = model_name;
|
||||||
m_layer_mask = layer_mask;
|
m_layer_mask = layer_mask;
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ class KRCollider : public KRNode
|
|||||||
public:
|
public:
|
||||||
static void InitNodeInfo(KrNodeInfo* nodeInfo);
|
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);
|
KRCollider(KRScene& scene, std::string collider_name, std::string model_name, unsigned int layer_mask, float audio_occlusion);
|
||||||
virtual ~KRCollider();
|
virtual ~KRCollider();
|
||||||
|
|
||||||
|
|||||||
@@ -793,7 +793,7 @@ KrResult KRContext::createNode(const KrCreateNodeInfo* pCreateNodeInfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
KRNode* newNode = nullptr;
|
KRNode* newNode = nullptr;
|
||||||
KrResult res = KRNode::createNode(pCreateNodeInfo, &newNode);
|
KrResult res = KRNode::createNode(pCreateNodeInfo, scene, &newNode);
|
||||||
if (res != KR_SUCCESS) {
|
if (res != KR_SUCCESS) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,35 @@ void KRModel::InitNodeInfo(KrNodeInfo* nodeInfo)
|
|||||||
nodeInfo->model.rim_power = 0.0f;
|
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_lightMap = light_map;
|
||||||
m_pLightMap = NULL;
|
m_pLightMap = NULL;
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class KRModel : public KRNode
|
|||||||
public:
|
public:
|
||||||
static void InitNodeInfo(KrNodeInfo* nodeInfo);
|
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);
|
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();
|
virtual ~KRModel();
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,11 @@ void KRNode::InitNodeInfo(KrNodeInfo* nodeInfo)
|
|||||||
nodeInfo->scale_pivot = Vector3::Zero();
|
nodeInfo->scale_pivot = Vector3::Zero();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KRNode::update(const KrNodeInfo* nodeInfo)
|
||||||
|
{
|
||||||
|
// TODO - Implement
|
||||||
|
}
|
||||||
|
|
||||||
KRNode::KRNode(KRScene& scene, std::string name) : KRContextObject(scene.getContext())
|
KRNode::KRNode(KRScene& scene, std::string name) : KRContextObject(scene.getContext())
|
||||||
{
|
{
|
||||||
m_name = name;
|
m_name = name;
|
||||||
@@ -217,9 +222,56 @@ tinyxml2::XMLElement* KRNode::saveXML(tinyxml2::XMLNode* parent)
|
|||||||
return e;
|
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)
|
void KRNode::loadXML(tinyxml2::XMLElement* e)
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void InitNodeInfo(KrNodeInfo* nodeInfo);
|
static void InitNodeInfo(KrNodeInfo* nodeInfo);
|
||||||
|
virtual void update(const KrNodeInfo* nodeInfo);
|
||||||
|
|
||||||
KRNode(KRScene& scene, std::string name);
|
KRNode(KRScene& scene, std::string name);
|
||||||
virtual ~KRNode();
|
virtual ~KRNode();
|
||||||
@@ -115,7 +116,7 @@ public:
|
|||||||
virtual tinyxml2::XMLElement* saveXML(tinyxml2::XMLNode* parent);
|
virtual tinyxml2::XMLElement* saveXML(tinyxml2::XMLNode* parent);
|
||||||
|
|
||||||
static KRNode* LoadXML(KRScene& scene, tinyxml2::XMLElement* e);
|
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 void loadXML(tinyxml2::XMLElement* e);
|
||||||
|
|
||||||
virtual std::string getElementName();
|
virtual std::string getElementName();
|
||||||
|
|||||||
Reference in New Issue
Block a user