Subversion Repository Public Repository

Divide-Framework

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "Headers/ASIOImpl.h"
#include <boost/archive/text_iarchive.hpp>
#include "Core/Headers/ParamHandler.h"
#include "Core/Math/Headers/MathHelper.h"
#include "Managers/Headers/SceneManager.h"

namespace Divide {

void ASIOImpl::handlePacket(WorldPacket& p){
	switch(p.getOpcode()){
		case MSG_HEARTBEAT:
			HandleHeartBeatOpCode(p);
			break;
		case SMSG_PONG:
			HandlePongOpCode(p);
			break;
		case SMSG_DISCONNECT:
			HandleDisconnectOpCode(p);
			break;
		case SMSG_GEOMETRY_APPEND:
			HandleGeometryAppendOpCode(p);
			break;
		default:
			ParamHandler::getInstance().setParam("serverResponse", "Unknown OpCode: [ 0x" + Util::toString(p.getOpcode()) + " ]");
			break;
	};
}

void ASIOImpl::HandlePongOpCode(WorldPacket& p){
	F32 time = 0;
	p >> time;
	D32 result = GETMSTIME() - time;
	ParamHandler::getInstance().setParam("serverResponse", 
                                         "Server says: Pinged with : " + Util::toString(floor(result+0.5f)) + " ms latency");
}

void ASIOImpl::HandleDisconnectOpCode(WorldPacket& p){
	U8 code;
	p >> code;
	PRINT_FN(Locale::get("ASIO_CLOSE"));
	if(code == 0) close();
	// else handleError(code);
}

void ASIOImpl::HandleGeometryAppendOpCode(WorldPacket& p){
	PRINT_FN(Locale::get("ASIO_PAK_REC_GEOM_APPEND"));
	U8 size;
	p >> size;
	vectorImpl<FileData> patch;
	for(U8 i = 0; i < size; i++){
		FileData d;
		I8 type = -1;
		p >> d.ItemName;
		p >> d.ModelName;
		p >> d.orientation.x;
		p >> d.orientation.y;
		p >> d.orientation.z;
		p >> d.position.x;
		p >> d.position.y;
		p >> d.position.z;
		p >> d.scale.x;
		p >> d.scale.y;
		p >> d.scale.z;
		p >> type;
		if(type == 0) d.type = GEOMETRY;
		else if(type == 1) d.type = VEGETATION;
		else d.type = PRIMITIVE;
		p >> d.version;
		patch.push_back(d);
	}
	GET_ACTIVE_SCENE()->addPatch(patch);
}

void ASIOImpl::HandleHeartBeatOpCode(WorldPacket& p){
	///nothing. Heartbeats keep us alive \:D/
}

};

Commits for Divide-Framework/trunk/Source Code/Hardware/Network/ASIOImpl.cpp

Diff revisions: vs.
Revision Author Commited Message
331 Diff Diff IonutCava picture IonutCava Sat 06 Dec, 2014 20:53:45 +0000

[Ionut]
- Limited line length to 132 characters to improve readability and diff-comparisons
- Refactored memory allocation/deallocation functions
- Fixed a few compatibility issues with HashMap.h
- Fixed a bug in GPU Skinning shaders (cast a float to int)

321 Diff Diff IonutCava picture IonutCava Wed 03 Sep, 2014 22:05:15 +0000

[Ionut]
- Added support (and enabled by default) for the EASTL library (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html / https://github.com/paulhodge/EASTL)
— Strings, vectors and hash_maps can be combined from EASTL, STL and Boost (not all combinations work. e.g. EASTL strings with STL/Boost containers due to the lack of a proper hash function)

318 Diff Diff IonutCava picture IonutCava Sat 30 Aug, 2014 17:35:53 +0000

[Ionut]
- Wrapped the entire code in a “Divide” namespace
- VertexBuffers now call “shrink_to_fit” on all internal data storage
- Improved some vector performance by preferring “emplace_back” instead of “push_back” + proepr usage of reserve / resize
- Wrapped OIS specific types and classes in Divide::Input namespace
- Added the messageBox.layout file (forgot it in the previous few commits)

186 Diff Diff k1ngp1n picture k1ngp1n Sun 24 Nov, 2013 19:14:54 +0000

[Ionut] [[BR]]
- Increased precision of internal timers (delta time stored as double and computed by the kernel) [[BR]]
- Some thread sync fixes [[BR]]
- More work on the profile timers. Added a main loop timer as an example (Kernel.cpp -> mainLoopApp) [[BR]]
- Physics update <-> SceneGraphNode transform update sync (rather primitive, but it works) [[BR]]
— Setting a position or rotation manually was overridden by the physics engine. Now, manual transform updates have a higher priority [[BR]]

152 k1ngp1n picture k1ngp1n Thu 20 Jun, 2013 14:23:31 +0000

[Ionut] [[BR]]
- New rendering pipeline (experimental and unstable): [[BR]]
— OpenGL 3.x clean context (glLight commands are still used for now, but UBO support is there, but not used yet) [[BR]]
— Custom matrix stacks and UBO based shader data (UBOs cause some link errors on some nVidia cards)[[BR]]
— Multi-threaded texture loading and shader compilation (mt shader compilation disabled for now. needs more tests) [[BR]]
— VAO rendering is self contained (no more enable/disable calls before a draw request) [[BR]]
— Render instance class used for rendering information [[BR]]
[[BR]]
- New unique ID generation base class: GUIDWrapper. Each class that derives from this, gets an application wide unique id on construction [[BR]]
- Added base code for an in-game editor using CEGUI [[BR]]
- Replaced some mutex locks with lockless data structures or atomic data [[BR]]
- CEGUI 0.8.2, FTGL-GL3 and GLIM 0.4 modified to support GLEW_MX if defined [[BR]]
- Dropped VS2008 support [[BR]]
- Networking library, server framework and ReCast files are now projects inside the Divide Framework solution [[BR]]
- New console command “setFov” that modifies the horizontal FoV value in realtime [[BR]]
- New console command “recompileShader” that reparses shader files, recompiles shaders and relinks shader programs who’s names match or contain the argument string [[BR]]
- New debug utility: axis angle drawn in corner of the screen if needed [[BR]]
- More ‘const’-s pasted around the code, more loop performance tweaks (allocations before a loop, tighter loops, etc), more utility member functions added to various classes [[BR]]