소스 검색

Add serialization to more components

Panagiotis Christopoulos Charitos 1 주 전
부모
커밋
e3817d0e2f

+ 1 - 0
AnKi/Physics/PhysicsBody.h

@@ -63,6 +63,7 @@ class PhysicsBody : public PhysicsObjectBase
 	friend class PhysicsBodyPtrDeleter;
 
 public:
+	// version: It starts from 1
 	const Transform& getTransform(U32* version = nullptr) const
 	{
 		if(version)

+ 9 - 0
AnKi/Scene/Components/BodyComponent.cpp

@@ -166,4 +166,13 @@ void BodyComponent::cleanup()
 	m_collisionShape.reset(nullptr);
 }
 
+Error BodyComponent::serialize(SceneSerializer& serializer)
+{
+	ANKI_SERIALIZE(m_box.m_extend, 1);
+	ANKI_SERIALIZE(m_sphere.m_radius, 1);
+	ANKI_SERIALIZE(m_mass, 1);
+	ANKI_SERIALIZE(m_shapeType, 1);
+	return Error::kNone;
+}
+
 } // end namespace anki

+ 2 - 0
AnKi/Scene/Components/BodyComponent.h

@@ -154,6 +154,8 @@ private:
 
 	void onOtherComponentRemovedOrAdded(SceneComponent* other, Bool added) override;
 
+	Error serialize(SceneSerializer& serializer) override;
+
 	void cleanup();
 };
 

+ 6 - 0
AnKi/Scene/Components/JointComponent.cpp

@@ -83,4 +83,10 @@ void JointComponent::update(SceneComponentUpdateInfo& info, Bool& updated)
 	}
 }
 
+Error JointComponent::serialize(SceneSerializer& serializer)
+{
+	ANKI_SERIALIZE(m_type, 1);
+	return Error::kNone;
+}
+
 } // end namespace anki

+ 2 - 0
AnKi/Scene/Components/JointComponent.h

@@ -58,6 +58,8 @@ private:
 	JointComponentyType m_type = JointComponentyType::kPoint;
 
 	void update(SceneComponentUpdateInfo& info, Bool& updated) override;
+
+	Error serialize(SceneSerializer& serializer) override;
 };
 
 } // end namespace anki

+ 1 - 1
AnKi/Scene/SceneGraph.cpp

@@ -614,7 +614,7 @@ Error SceneGraph::saveScene(CString filename, Scene& scene)
 		}
 
 		node.visitThisAndChildren([&](SceneNode& node) {
-			if((err = serializeNode(node)))
+			if(!node.getSerialization() || (err = serializeNode(node)))
 			{
 				return FunctorContinue::kStop;
 			}