Pārlūkot izejas kodu

- Adding the Script resource
- Populizing the Vec3 interface

Panagiotis Christopoulos Charitos 15 gadi atpakaļ
vecāks
revīzija
cbd06dac89

+ 10 - 4
build/debug/Makefile

@@ -6,8 +6,8 @@ PHFLAGS = -DDEBUG_ENABLED -DPLATFORM_LINUX -DREVISION=\"`svnversion -c ../..`\"
 LFLAGS = -rdynamic -L../../extern/lib-x86-64-linux -Wl,-Bstatic -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath -lGLEW -lGLU -lboost_system -lboost_python -lboost_filesystem -Wl,-Bdynamic -lGL -ljpeg -lSDL -lpng -lpython2.6 -pg
 EXECUTABLE = anki
 INCPATH = -I./ -I../../src/Math/ -I../../src/Util/Tokenizer/ -I../../src/Misc/ -I../../src/ -I../../src/Renderer/ -I../../src/Scene/ -I../../src/Ui/ -I../../src/Resources/ -I../../src/Util/ -I../../src/Scene/Controllers/ -I../../src/Physics/ -I../../src/Renderer/BufferObjects/ -I../../src/Resources/Helpers/ -I../../src/Resources/Core/ -I../../src/Core/ -I../../src/Scripting/ -I../../src/Scripting/Math -I../../src/Scripting/Util -I../../src/Scripting/Core -I../../src/Scripting/Scene -I../../extern/include -I../../extern/include/bullet -I/usr/include/python2.6 
-SOURCES = ../../src/Util/Tokenizer//Scanner.cpp ../../src/Misc//collision.cpp ../../src/Misc//skybox.cpp ../../src/Misc//map.cpp ../../src/Misc//memory.cpp ../../src/Misc//TestHeader.cpp ../../src//Main.cpp ../../src/Renderer//Renderer.cpp ../../src/Renderer//Hdr.cpp ../../src/Renderer//Bs.cpp ../../src/Renderer//Sm.cpp ../../src/Renderer//Dbg.cpp ../../src/Renderer//Smo.cpp ../../src/Renderer//Pps.cpp ../../src/Renderer//Ms.cpp ../../src/Renderer//MainRenderer.cpp ../../src/Renderer//Is.cpp ../../src/Renderer//Ssao.cpp ../../src/Renderer//Ez.cpp ../../src/Scene//MeshNode.cpp ../../src/Scene//Camera.cpp ../../src/Scene//SkelModelNode.cpp ../../src/Scene//SkelNode.cpp ../../src/Scene//Light.cpp ../../src/Scene//Scene.cpp ../../src/Scene//SceneNode.cpp ../../src/Scene//ParticleEmitter.cpp ../../src/Ui//Ui.cpp ../../src/Resources//ShaderProg.cpp ../../src/Resources//Mesh.cpp ../../src/Resources//SkelAnim.cpp ../../src/Resources//Skeleton.cpp ../../src/Resources//ParticleEmitterProps.cpp ../../src/Resources//LightProps.cpp ../../src/Resources//Texture.cpp ../../src/Resources//Extension.cpp ../../src/Resources//Material.cpp ../../src/Util//Input.cpp ../../src/Util//Util.cpp ../../src/Scene/Controllers//Controller.cpp ../../src/Scene/Controllers//SkelAnimCtrl.cpp ../../src/Physics//Physics.cpp ../../src/Physics//RigidBody.cpp ../../src/Physics//PhyCharacter.cpp ../../src/Resources/Helpers//Image.cpp ../../src/Resources/Helpers//ShaderPrePreprocessor.cpp ../../src/Resources/Core//RsrcPtr.cpp ../../src/Resources/Core//RsrcContainers.cpp ../../src/Core//App.cpp ../../src/Core//Common.cpp ../../src/Scripting//ScriptingEngine.cpp ../../src/Scripting//BoostPythonInterfaces.cpp 
-OBJECTS = Scanner.o collision.o skybox.o map.o memory.o TestHeader.o Main.o Renderer.o Hdr.o Bs.o Sm.o Dbg.o Smo.o Pps.o Ms.o MainRenderer.o Is.o Ssao.o Ez.o MeshNode.o Camera.o SkelModelNode.o SkelNode.o Light.o Scene.o SceneNode.o ParticleEmitter.o Ui.o ShaderProg.o Mesh.o SkelAnim.o Skeleton.o ParticleEmitterProps.o LightProps.o Texture.o Extension.o Material.o Input.o Util.o Controller.o SkelAnimCtrl.o Physics.o RigidBody.o PhyCharacter.o Image.o ShaderPrePreprocessor.o RsrcPtr.o RsrcContainers.o App.o Common.o ScriptingEngine.o BoostPythonInterfaces.o 
+SOURCES = ../../src/Util/Tokenizer//Scanner.cpp ../../src/Misc//collision.cpp ../../src/Misc//skybox.cpp ../../src/Misc//map.cpp ../../src/Misc//memory.cpp ../../src/Misc//TestHeader.cpp ../../src//Main.cpp ../../src/Renderer//Renderer.cpp ../../src/Renderer//Hdr.cpp ../../src/Renderer//Bs.cpp ../../src/Renderer//Sm.cpp ../../src/Renderer//Dbg.cpp ../../src/Renderer//Smo.cpp ../../src/Renderer//Pps.cpp ../../src/Renderer//Ms.cpp ../../src/Renderer//MainRenderer.cpp ../../src/Renderer//Is.cpp ../../src/Renderer//Ssao.cpp ../../src/Renderer//Ez.cpp ../../src/Scene//MeshNode.cpp ../../src/Scene//Camera.cpp ../../src/Scene//SkelModelNode.cpp ../../src/Scene//SkelNode.cpp ../../src/Scene//Light.cpp ../../src/Scene//Scene.cpp ../../src/Scene//SceneNode.cpp ../../src/Scene//ParticleEmitter.cpp ../../src/Ui//Ui.cpp ../../src/Resources//ShaderProg.cpp ../../src/Resources//Mesh.cpp ../../src/Resources//SkelAnim.cpp ../../src/Resources//Script.cpp ../../src/Resources//Skeleton.cpp ../../src/Resources//ParticleEmitterProps.cpp ../../src/Resources//LightProps.cpp ../../src/Resources//Texture.cpp ../../src/Resources//Extension.cpp ../../src/Resources//Material.cpp ../../src/Util//Input.cpp ../../src/Util//Util.cpp ../../src/Scene/Controllers//Controller.cpp ../../src/Scene/Controllers//SkelAnimCtrl.cpp ../../src/Physics//Physics.cpp ../../src/Physics//RigidBody.cpp ../../src/Physics//PhyCharacter.cpp ../../src/Resources/Helpers//Image.cpp ../../src/Resources/Helpers//ShaderPrePreprocessor.cpp ../../src/Resources/Core//RsrcPtr.cpp ../../src/Resources/Core//RsrcContainers.cpp ../../src/Core//App.cpp ../../src/Core//Common.cpp ../../src/Scripting//ScriptingEngine.cpp ../../src/Scripting//BoostPythonInterfaces.cpp 
+OBJECTS = Scanner.o collision.o skybox.o map.o memory.o TestHeader.o Main.o Renderer.o Hdr.o Bs.o Sm.o Dbg.o Smo.o Pps.o Ms.o MainRenderer.o Is.o Ssao.o Ez.o MeshNode.o Camera.o SkelModelNode.o SkelNode.o Light.o Scene.o SceneNode.o ParticleEmitter.o Ui.o ShaderProg.o Mesh.o SkelAnim.o Script.o Skeleton.o ParticleEmitterProps.o LightProps.o Texture.o Extension.o Material.o Input.o Util.o Controller.o SkelAnimCtrl.o Physics.o RigidBody.o PhyCharacter.o Image.o ShaderPrePreprocessor.o RsrcPtr.o RsrcContainers.o App.o Common.o ScriptingEngine.o BoostPythonInterfaces.o 
 PRECOMPILED_HEADERS = 
 
 all: $(PRECOMPILED_HEADERS) $(SOURCES) $(EXECUTABLE)
@@ -3129,6 +3129,12 @@ SkelAnim.o: ../../src/Resources//SkelAnim.cpp \
 	@echo Compiling ../../src/Resources//SkelAnim.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources//SkelAnim.cpp -o SkelAnim.o
 
+Script.o: ../../src/Resources//Script.cpp ../../src/Resources//Script.h \
+ ../../src/Core/Common.h ../../src/Resources/Core/Resource.h \
+ ../../src/Util/Util.h ../../src/Util/Vec.h
+	@echo Compiling ../../src/Resources//Script.cpp...
+	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources//Script.cpp -o Script.o
+
 Skeleton.o: ../../src/Resources//Skeleton.cpp \
  ../../src/Resources//Skeleton.h ../../src/Core/Common.h \
  ../../src/Math/Math.h ../../src/Math/Vec2.h \
@@ -4100,7 +4106,7 @@ RsrcPtr.o: ../../src/Resources/Core//RsrcPtr.cpp \
  ../../src/Renderer/BufferObjects/BufferObject.h \
  ../../src/Misc/collision.h ../../src/Resources/Skeleton.h \
  ../../src/Resources/SkelAnim.h ../../src/Resources/LightProps.h \
- ../../src/Resources/ParticleEmitterProps.h
+ ../../src/Resources/ParticleEmitterProps.h ../../src/Resources/Script.h
 	@echo Compiling ../../src/Resources/Core//RsrcPtr.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources/Core//RsrcPtr.cpp -o RsrcPtr.o
 
@@ -4128,7 +4134,7 @@ RsrcContainers.o: ../../src/Resources/Core//RsrcContainers.cpp \
  ../../src/Renderer/BufferObjects/BufferObject.h \
  ../../src/Misc/collision.h ../../src/Resources/Skeleton.h \
  ../../src/Resources/SkelAnim.h ../../src/Resources/LightProps.h \
- ../../src/Resources/ParticleEmitterProps.h
+ ../../src/Resources/ParticleEmitterProps.h ../../src/Resources/Script.h
 	@echo Compiling ../../src/Resources/Core//RsrcContainers.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources/Core//RsrcContainers.cpp -o RsrcContainers.o
 

+ 3 - 2
src/Resources/Core/Resource.h

@@ -29,7 +29,8 @@ class Resource
 			RT_SKEL_ANIM,
 			RT_LIGHT_PROPS,
 			RT_EXTENSION,
-			RT_PARTICLE_EMITTER_PROPS
+			RT_PARTICLE_EMITTER_PROPS,
+			RT_SCRIPT
 		};
 
 	PROPERTY_R(string, path, getRsrcPath);
@@ -51,7 +52,7 @@ class Resource
 		/**
 		 * Special unload func for stuff that the destructor cannot cleanup (eg OpenGL stuff)
 		 */
-		virtual void unload() = 0;
+		virtual void unload();
 };
 
 

+ 2 - 0
src/Resources/Core/RsrcContainers.cpp

@@ -7,6 +7,7 @@
 #include "SkelAnim.h"
 #include "LightProps.h"
 #include "ParticleEmitterProps.h"
+#include "Script.h"
 
 
 namespace RsrcContainers {
@@ -19,5 +20,6 @@ RsrcContainer<Skeleton>   skeletons;
 RsrcContainer<SkelAnim>   skelAnims;
 RsrcContainer<LightProps> lightProps;
 RsrcContainer<ParticleEmitterProps> particleEmitterProps;
+RsrcContainer<Script> scripts;
 
 }

+ 22 - 0
src/Resources/Core/RsrcPtr.cpp

@@ -8,6 +8,7 @@
 #include "SkelAnim.h"
 #include "LightProps.h"
 #include "ParticleEmitterProps.h"
+#include "Script.h"
 
 
 namespace RsrcContainers {
@@ -20,6 +21,7 @@ extern RsrcContainer<Skeleton> skeletons;
 extern RsrcContainer<SkelAnim> skelAnims;
 extern RsrcContainer<LightProps> lightProps;
 extern RsrcContainer<ParticleEmitterProps> particleEmitterProps;
+extern RsrcContainer<Script> scripts;
 
 }
 
@@ -117,6 +119,16 @@ bool RsrcPtr<ParticleEmitterProps>::loadRsrc(const char* filename)
 }
 
 
+//======================================================================================================================
+// loadRsrc <Script>                                                                                     =
+//======================================================================================================================
+template<>
+bool RsrcPtr<Script>::loadRsrc(const char* filename)
+{
+	LOAD_RSRC(scripts);
+}
+
+
 //======================================================================================================================
 // unload <Texture>                                                                                                    =
 //======================================================================================================================
@@ -196,3 +208,13 @@ void RsrcPtr<ParticleEmitterProps>::unload()
 {
 	UNLOAD_RSRC(particleEmitterProps);
 }
+
+
+//======================================================================================================================
+// unload <Script>                                                                                                     =
+//======================================================================================================================
+template<>
+void RsrcPtr<Script>::unload()
+{
+	UNLOAD_RSRC(scripts);
+}

+ 17 - 0
src/Resources/Script.cpp

@@ -0,0 +1,17 @@
+#include "Script.h"
+#include "Util.h"
+
+
+//======================================================================================================================
+// load                                                                                                                =
+//======================================================================================================================
+bool Script::load(const char* filename)
+{
+	source = Util::readFile(filename);
+	if(source.length() < 1)
+	{
+		ERROR("Cannot load script \"" << filename << "\"");
+		return false;
+	}
+	return true;
+}

+ 29 - 0
src/Resources/Script.h

@@ -0,0 +1,29 @@
+#ifndef SCRIPT_H
+#define SCRIPT_H
+
+#include "Common.h"
+#include "Resource.h"
+
+
+/**
+ * Python script resource
+ */
+class Script: public Resource
+{
+	public:
+		Script();
+		~Script() {}
+
+		bool load(const char* filename);
+
+	private:
+		string source;
+};
+
+
+Script::Script():
+	Resource(RT_SCRIPT)
+{}
+
+
+#endif

+ 21 - 1
src/Scripting/Math/Vec3.bpi.h

@@ -4,4 +4,24 @@ class_<Vec3>("Vec3")
 	.def(init<float>())
 	.def_readwrite("x", &Vec3::x)
 	.def_readwrite("y", &Vec3::y)
-	.def_readwrite("z", &Vec3::z);
+	.def_readwrite("z", &Vec3::z)
+	// ops with self
+	.def(self + self) // +
+	.def(self += self) // +=
+	.def(self - self) // -
+	.def(self -= self) // -=
+	.def(self * self) // *
+	.def(self *= self) // *=
+	.def(self / self) // /
+	.def(self /= self) // /=
+	.def(- self) // negative
+	// ops with float
+	.def(self + float()) // +
+	.def(self += float()) // +=
+	.def(self - float()) // -
+	.def(self -= float()) // -=
+	.def(self * float()) // *
+	.def(self *= float()) // *=
+	.def(self / float()) // /
+	.def(self /= float()) // /=
+;