Add Server and client
This commit is contained in:
parent
3d7c9e3f7f
commit
6258438d44
262 changed files with 2661 additions and 0 deletions
6
Unity Server Project/.classpath
Normal file
6
Unity Server Project/.classpath
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
17
Unity Server Project/.project
Normal file
17
Unity Server Project/.project
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>Unity Server Project</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
11
Unity Server Project/.settings/org.eclipse.jdt.core.prefs
Normal file
11
Unity Server Project/.settings/org.eclipse.jdt.core.prefs
Normal file
|
@ -0,0 +1,11 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
9
Unity Server Project/data/world/worldList.xml
Normal file
9
Unity Server Project/data/world/worldList.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<worldList>
|
||||
<worlds>
|
||||
<entry>
|
||||
<key>10000001</key>
|
||||
<value>10000001.map</value>
|
||||
</entry>
|
||||
</worlds>
|
||||
</worldList>
|
BIN
Unity Server Project/ressources/world/10000001.map
Normal file
BIN
Unity Server Project/ressources/world/10000001.map
Normal file
Binary file not shown.
0
Unity Server Project/settings/network.conf
Normal file
0
Unity Server Project/settings/network.conf
Normal file
22
Unity Server Project/src/fr/technicalgames/MainServer.java
Normal file
22
Unity Server Project/src/fr/technicalgames/MainServer.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package fr.technicalgames;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Map.*;
|
||||
|
||||
import javax.xml.bind.*;
|
||||
|
||||
import fr.technicalgames.data.*;
|
||||
import fr.technicalgames.network.*;
|
||||
import fr.technicalgames.settings.Settings;
|
||||
|
||||
public class MainServer{
|
||||
|
||||
public static Server server;
|
||||
|
||||
public static void main(String[] args) throws JAXBException {
|
||||
Settings.loadSettings();
|
||||
World.loadWorlds();
|
||||
server = new Server(9999);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package fr.technicalgames.client;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
|
||||
import fr.technicalgames.entity.*;
|
||||
import fr.technicalgames.entity.player.Player;
|
||||
import fr.technicalgames.network.*;
|
||||
import fr.technicalgames.network.common.*;
|
||||
|
||||
public class Client {
|
||||
|
||||
private InetAddress address;
|
||||
private int port;
|
||||
private Player player;
|
||||
|
||||
public Client(InetAddress address,int port){
|
||||
this.address = address;
|
||||
this.port = port;
|
||||
this.player = new Player("Default");
|
||||
}
|
||||
|
||||
public void send(DatagramSocket server,IPacket packet){
|
||||
try {
|
||||
DataBuffer data = new DataBuffer();
|
||||
data.put(Register.getId(packet.getClass()));
|
||||
packet.write(data);
|
||||
Server.up += data.getPointer();
|
||||
server.send(new DatagramPacket(data.getData(),data.getPointer(),address,port));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public InetAddress getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(InetAddress address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
public void setPlayer(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
125
Unity Server Project/src/fr/technicalgames/data/World.java
Normal file
125
Unity Server Project/src/fr/technicalgames/data/World.java
Normal file
|
@ -0,0 +1,125 @@
|
|||
package fr.technicalgames.data;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.*;
|
||||
import java.util.*;
|
||||
import java.util.Map.*;
|
||||
|
||||
import javax.xml.bind.*;
|
||||
|
||||
import fr.technicalgames.data.xml.WorldList;
|
||||
import fr.technicalgames.io.*;
|
||||
import fr.technicalgames.math.*;
|
||||
import fr.technicalgames.network.common.*;
|
||||
|
||||
public class World {
|
||||
|
||||
private int heightmapWidth,heightmapHeight;
|
||||
private float mapWidth,mapHeight;
|
||||
private float[][] heightsMap;
|
||||
|
||||
private static Map<Integer,World> worlds = new HashMap<Integer,World>();
|
||||
|
||||
public World(String filename) throws IOException{
|
||||
Path path = Paths.get("ressources/world/" + filename);
|
||||
byte[] data = Files.readAllBytes(path);
|
||||
|
||||
DataBuffer d = new DataBuffer(data);
|
||||
heightmapWidth = d.getInt();
|
||||
heightmapHeight = d.getInt();
|
||||
mapWidth = d.getFloat();
|
||||
mapHeight = d.getFloat();
|
||||
|
||||
heightsMap = new float[heightmapWidth][heightmapHeight];
|
||||
|
||||
for(int x = 0;x < heightmapWidth;x++){
|
||||
for(int y = 0;y < heightmapHeight;y++){
|
||||
heightsMap[x][y] = d.getFloat();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public float getHeights(float x,float y){
|
||||
float rx = (x * (float)heightmapWidth)/mapWidth;
|
||||
float ry = (y * (float)heightmapHeight)/mapHeight;
|
||||
|
||||
int ix = (int)rx;
|
||||
int iy = (int)ry;
|
||||
|
||||
float interpolate1 = Mathf.linearInterpolate(heightsMap[ix][iy],heightsMap[ix + 1][iy],rx - ix);
|
||||
float interpolate2 = Mathf.linearInterpolate(heightsMap[ix][iy + 1],heightsMap[ix + 1][iy + 1],rx - ix);
|
||||
|
||||
return Mathf.linearInterpolate(interpolate1,interpolate2,ry - iy);
|
||||
}
|
||||
|
||||
public static void loadWorlds(){
|
||||
Log.println(Log.INFO, "Loading World ...");
|
||||
try {
|
||||
JAXBContext jc = JAXBContext.newInstance(WorldList.class);
|
||||
Unmarshaller jaxbUnmarshaller = jc.createUnmarshaller();
|
||||
WorldList worldList = (WorldList)jaxbUnmarshaller.unmarshal(new File("data/world/worldList.xml"));
|
||||
for(Entry<Integer, String> s : worldList.getWorlds().entrySet()){
|
||||
try {
|
||||
World w = new World(s.getValue());
|
||||
worlds.put(s.getKey(), w);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} catch (JAXBException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Log.println(Log.INFO, "World loaded !");
|
||||
}
|
||||
|
||||
public static Map<Integer, World> getWorlds() {
|
||||
return worlds;
|
||||
}
|
||||
|
||||
public static void setWorlds(Map<Integer, World> worlds) {
|
||||
World.worlds = worlds;
|
||||
}
|
||||
|
||||
public int getHeightmapWidth() {
|
||||
return heightmapWidth;
|
||||
}
|
||||
|
||||
public void setHeightmapWidth(int heightmapWidth) {
|
||||
this.heightmapWidth = heightmapWidth;
|
||||
}
|
||||
|
||||
public int getHeightmapHeight() {
|
||||
return heightmapHeight;
|
||||
}
|
||||
|
||||
public void setHeightmapHeight(int heightmapHeight) {
|
||||
this.heightmapHeight = heightmapHeight;
|
||||
}
|
||||
|
||||
public float getMapWidth() {
|
||||
return mapWidth;
|
||||
}
|
||||
|
||||
public void setMapWidth(float mapWidth) {
|
||||
this.mapWidth = mapWidth;
|
||||
}
|
||||
|
||||
public float getMapHeight() {
|
||||
return mapHeight;
|
||||
}
|
||||
|
||||
public void setMapHeight(float mapHeight) {
|
||||
this.mapHeight = mapHeight;
|
||||
}
|
||||
|
||||
public float[][] getHeightsMap() {
|
||||
return heightsMap;
|
||||
}
|
||||
|
||||
public void setHeightsMap(float[][] heightsMap) {
|
||||
this.heightsMap = heightsMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package fr.technicalgames.data.xml;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import javax.xml.bind.annotation.*;
|
||||
|
||||
@XmlRootElement
|
||||
public class WorldList {
|
||||
|
||||
private Map<Integer,String> worlds = new HashMap<Integer,String>();
|
||||
|
||||
public Map<Integer, String> getWorlds() {
|
||||
return worlds;
|
||||
}
|
||||
|
||||
public void setWorlds(Map<Integer, String> worlds) {
|
||||
this.worlds = worlds;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
package fr.technicalgames.entity;
|
||||
|
||||
public abstract class Entity {
|
||||
|
||||
private String name = "";
|
||||
private int id = 0;
|
||||
|
||||
private float px,py,pz,rx,ry,rz;
|
||||
|
||||
public Entity(String name,int id){
|
||||
this.name = name;
|
||||
px = 0;
|
||||
py = 0;
|
||||
pz = 0;
|
||||
rx = 0;
|
||||
ry = 0;
|
||||
rz = 0;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public float getPx() {
|
||||
return px;
|
||||
}
|
||||
|
||||
public void setPx(float px) {
|
||||
this.px = px;
|
||||
}
|
||||
|
||||
public float getPy() {
|
||||
return py;
|
||||
}
|
||||
|
||||
public void setPy(float py) {
|
||||
this.py = py;
|
||||
}
|
||||
|
||||
public float getPz() {
|
||||
return pz;
|
||||
}
|
||||
|
||||
public void setPz(float pz) {
|
||||
this.pz = pz;
|
||||
}
|
||||
|
||||
public float getRx() {
|
||||
return rx;
|
||||
}
|
||||
|
||||
public void setRx(float rx) {
|
||||
this.rx = rx;
|
||||
}
|
||||
|
||||
public float getRy() {
|
||||
return ry;
|
||||
}
|
||||
|
||||
public void setRy(float ry) {
|
||||
this.ry = ry;
|
||||
}
|
||||
|
||||
public float getRz() {
|
||||
return rz;
|
||||
}
|
||||
|
||||
public void setRz(float rz) {
|
||||
this.rz = rz;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package fr.technicalgames.entity.player;
|
||||
|
||||
import fr.technicalgames.entity.Entity;
|
||||
|
||||
public class Player extends Entity{
|
||||
|
||||
public Player(String name) {
|
||||
super(name,-1);
|
||||
}
|
||||
|
||||
}
|
40
Unity Server Project/src/fr/technicalgames/io/Log.java
Normal file
40
Unity Server Project/src/fr/technicalgames/io/Log.java
Normal file
|
@ -0,0 +1,40 @@
|
|||
package fr.technicalgames.io;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
public class Log {
|
||||
|
||||
public static final int INFO = 0,WARNING = 1,ERROR = 2;
|
||||
|
||||
private static PrintStream out = System.out;
|
||||
|
||||
public static void println(int type,String a){
|
||||
switch(type){
|
||||
case INFO:
|
||||
out.println(a);
|
||||
break;
|
||||
case WARNING:
|
||||
out.println(a);
|
||||
break;
|
||||
case ERROR:
|
||||
out.println(a);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static void print(int type,String a){
|
||||
a = "\b" + a;
|
||||
switch(type){
|
||||
case INFO:
|
||||
out.print(a);
|
||||
break;
|
||||
case WARNING:
|
||||
out.print(a);
|
||||
break;
|
||||
case ERROR:
|
||||
out.print(a);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
21
Unity Server Project/src/fr/technicalgames/math/Mathf.java
Normal file
21
Unity Server Project/src/fr/technicalgames/math/Mathf.java
Normal file
|
@ -0,0 +1,21 @@
|
|||
package fr.technicalgames.math;
|
||||
|
||||
public class Mathf {
|
||||
|
||||
public static final float PI = 3.14159265358979323846f;
|
||||
|
||||
public static float linearInterpolate(float y1,float y2,float b){
|
||||
return y1 * (1 - b) + y2 * b;
|
||||
}
|
||||
|
||||
public static float cos(float angle){
|
||||
return (float)Math.cos(angle);
|
||||
}
|
||||
|
||||
public static float cosineInterpolate(float y1,float y2,float b){
|
||||
float ft = b * PI;
|
||||
float f = (1 - cos(ft)) * .5f;
|
||||
return y1 * (1-f) + y2*f;
|
||||
}
|
||||
|
||||
}
|
158
Unity Server Project/src/fr/technicalgames/network/Server.java
Normal file
158
Unity Server Project/src/fr/technicalgames/network/Server.java
Normal file
|
@ -0,0 +1,158 @@
|
|||
package fr.technicalgames.network;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.util.*;
|
||||
|
||||
import fr.technicalgames.client.*;
|
||||
import fr.technicalgames.io.*;
|
||||
import fr.technicalgames.network.common.*;
|
||||
import fr.technicalgames.network.packet.*;
|
||||
|
||||
public class Server extends Thread{
|
||||
|
||||
private ArrayList<Client> clients = new ArrayList<Client>();
|
||||
|
||||
private DatagramSocket server;
|
||||
private boolean running = false;
|
||||
private Scanner sc = new Scanner(System.in);
|
||||
public static int down = 0,up = 0,pup = 0,pdown = 0;
|
||||
public long previous = System.currentTimeMillis(),prev = System.currentTimeMillis();
|
||||
|
||||
public Server(int port){
|
||||
try {
|
||||
this.server = new DatagramSocket(port);
|
||||
Log.println(Log.INFO, "Serveur lance a l'adresse " + server.getLocalAddress().getHostAddress() + ":" + server.getLocalPort());
|
||||
running = true;
|
||||
Register.registerClass();
|
||||
this.start();
|
||||
(new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
while(running){
|
||||
String a = sc.nextLine();
|
||||
sendToClients(new MessagePacket("Server", a));
|
||||
}
|
||||
}
|
||||
})).start();
|
||||
(new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
while(running){
|
||||
if(System.currentTimeMillis() - previous > 1000){
|
||||
pup = up;
|
||||
pdown = down;
|
||||
System.out.print("DOWN: " + pdown/1024.0f + "ko/s UP: " + pup/1024.0f + "ko/s \r");
|
||||
up = 0;
|
||||
down = 0;
|
||||
previous = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
}
|
||||
})).start();
|
||||
} catch (SocketException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(){
|
||||
while(running){
|
||||
try {
|
||||
byte[] data = new byte[DataBuffer.getSize()];
|
||||
DatagramPacket packet = new DatagramPacket(data,data.length);
|
||||
server.receive(packet);
|
||||
int size = packet.getLength();
|
||||
down += size;
|
||||
DataBuffer dataBuffer = new DataBuffer(data);
|
||||
if(packet.getAddress() != null){
|
||||
Client cl = getClient(packet.getAddress(),packet.getPort());
|
||||
if(cl != null){
|
||||
try{
|
||||
IPacket packetObject = (IPacket) Register.instantiate(dataBuffer.getInt());
|
||||
packetObject.read(dataBuffer);
|
||||
packetObject.manage(this,server,cl, packetObject);
|
||||
}catch(Exception e){
|
||||
String log = "Unknown packet : {\n ";
|
||||
int i = 0;
|
||||
for(byte d : data){
|
||||
log += byteToHex(d) + " ";
|
||||
i++;
|
||||
if(i%32 == 0)log += "\n ";
|
||||
if(i >= size)break;
|
||||
}
|
||||
log += "\n}";
|
||||
Log.println(Log.WARNING, log);
|
||||
}
|
||||
}else{
|
||||
try{
|
||||
Log.println(Log.INFO, packet.getAddress().getHostAddress() + ":" + packet.getPort() + " s'est connecter !");
|
||||
clients.add(cl = new Client(packet.getAddress(),packet.getPort()));
|
||||
IPacket packetObject = (IPacket) Register.instantiate(dataBuffer.getInt());
|
||||
packetObject.read(dataBuffer);
|
||||
packetObject.manage(this,server,cl, packetObject);
|
||||
}catch(Exception e){
|
||||
String log = "Unknown packet : {\n ";
|
||||
int i = 0;
|
||||
for(byte d : data){
|
||||
log += byteToHex(d) + " ";
|
||||
i++;
|
||||
if(i%32 == 0)log += "\n ";
|
||||
if(i >= size)break;
|
||||
}
|
||||
log += "\n}";
|
||||
Log.println(Log.WARNING, log);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Client getClient(InetAddress address,int port){
|
||||
for(Client cl : clients){
|
||||
if(cl.getAddress().getHostAddress().equals(address.getHostName()) && port == cl.getPort()){
|
||||
return cl;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Client getClientByName(String name){
|
||||
for(Client cl: clients){
|
||||
if(cl.getPlayer().getName().equals(name))return cl;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void sendToClients(IPacket packet){
|
||||
for(Client cl : clients){
|
||||
cl.send(server, packet);
|
||||
}
|
||||
}
|
||||
|
||||
public static String byteToHex(byte bytes) {
|
||||
final char[] hexArray = "0123456789ABCDEF".toCharArray();
|
||||
char[] hexChars = new char[2];
|
||||
int v = bytes & 0xFF;
|
||||
hexChars[0] = hexArray[v >>> 4];
|
||||
hexChars[1] = hexArray[v & 0x0F];
|
||||
return new String(hexChars);
|
||||
}
|
||||
|
||||
public void closeConnection(Client client){
|
||||
clients.remove(client);
|
||||
Log.println(Log.INFO, client.getAddress().getHostName() + ":" + client.getPort() + " s'est deconnecter !");
|
||||
}
|
||||
|
||||
public void stopServer(){
|
||||
running = false;
|
||||
this.server.close();
|
||||
this.stop();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,184 @@
|
|||
package fr.technicalgames.network.common;
|
||||
|
||||
import java.nio.*;
|
||||
|
||||
import fr.technicalgames.io.*;
|
||||
|
||||
public class DataBuffer {
|
||||
|
||||
public static final int SIZE = 1024;
|
||||
|
||||
private byte[] data;
|
||||
private int pointer;
|
||||
|
||||
public DataBuffer(){
|
||||
data = new byte[SIZE];
|
||||
pointer = 0;
|
||||
}
|
||||
|
||||
public DataBuffer(int size){
|
||||
data = new byte[size];
|
||||
pointer = 0;
|
||||
}
|
||||
|
||||
public DataBuffer(byte[] data){
|
||||
this.data = data;
|
||||
pointer = 0;
|
||||
}
|
||||
|
||||
public void put(byte a){
|
||||
if(pointer >= data.length){
|
||||
Log.println(Log.ERROR, "Databuffer write overflow");
|
||||
return;
|
||||
}
|
||||
data[pointer++] = a;
|
||||
}
|
||||
|
||||
public void put(short a){
|
||||
put((byte)((a >> 8) & 0xff));
|
||||
put((byte)((a >> 0) & 0xff));
|
||||
}
|
||||
|
||||
public void put(int a){
|
||||
put((byte)((a >> 24) & 0xff));
|
||||
put((byte)((a >> 16) & 0xff));
|
||||
put((byte)((a >> 8) & 0xff));
|
||||
put((byte)((a >> 0) & 0xff));
|
||||
}
|
||||
|
||||
public void put(long a){
|
||||
put((byte)((a >> 56) & 0xff));
|
||||
put((byte)((a >> 48) & 0xff));
|
||||
put((byte)((a >> 40) & 0xff));
|
||||
put((byte)((a >> 32) & 0xff));
|
||||
put((byte)((a >> 24) & 0xff));
|
||||
put((byte)((a >> 16) & 0xff));
|
||||
put((byte)((a >> 8) & 0xff));
|
||||
put((byte)((a >> 0) & 0xff));
|
||||
}
|
||||
|
||||
public void put(float b){
|
||||
int a = Float.floatToIntBits(b);
|
||||
put((byte)((a >> 0) & 0xff));
|
||||
put((byte)((a >> 8) & 0xff));
|
||||
put((byte)((a >> 16) & 0xff));
|
||||
put((byte)((a >> 24) & 0xff));
|
||||
}
|
||||
|
||||
public void put(double b){
|
||||
long a = Double.doubleToLongBits(b);
|
||||
put((byte)((a >> 0) & 0xff));
|
||||
put((byte)((a >> 8) & 0xff));
|
||||
put((byte)((a >> 16) & 0xff));
|
||||
put((byte)((a >> 24) & 0xff));
|
||||
put((byte)((a >> 32) & 0xff));
|
||||
put((byte)((a >> 40) & 0xff));
|
||||
put((byte)((a >> 48) & 0xff));
|
||||
put((byte)((a >> 56) & 0xff));
|
||||
}
|
||||
|
||||
public void put(char a){
|
||||
put((byte)a);
|
||||
}
|
||||
|
||||
public void put(String a){
|
||||
char[] b = a.toCharArray();
|
||||
put(b.length);
|
||||
for(int i = 0;i < b.length;i++){
|
||||
put(b[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public byte getByte(){
|
||||
if(pointer >= data.length){
|
||||
Log.println(Log.ERROR, "Databuffer write overflow");
|
||||
return 0;
|
||||
}
|
||||
return data[pointer++];
|
||||
}
|
||||
|
||||
public short getShort(){
|
||||
return (short) ((
|
||||
(getByte() << 8) & 0xff00) |
|
||||
(getByte() & 0xff));
|
||||
}
|
||||
|
||||
public int getInt(){
|
||||
return (int) ((
|
||||
(getByte() << 24) & 0xff000000) |
|
||||
(getByte() << 16 & 0xff0000) |
|
||||
(getByte() << 8 & 0xff00) |
|
||||
(getByte() & 0xff));
|
||||
}
|
||||
|
||||
public long getLong(){
|
||||
return (long) (
|
||||
(((long)getByte() << 56) & 0xff00000000000000l) |
|
||||
(((long)getByte() << 48) & 0xff000000000000l) |
|
||||
(((long)getByte() << 40) & 0xff0000000000l) |
|
||||
(((long)getByte() << 32) & 0xff00000000l) |
|
||||
(((long)getByte() << 24) & 0xff000000l) |
|
||||
(((long)getByte() << 16) & 0xff0000l) |
|
||||
(((long)getByte() << 8) & 0xff00l) |
|
||||
((long)getByte() & 0xffl));
|
||||
}
|
||||
|
||||
public float getFloat(){
|
||||
byte[] array = new byte[]{getByte(),getByte(),getByte(),getByte()};
|
||||
byte tmp = array[0];
|
||||
array[0] = array[3];
|
||||
array[3] = tmp;
|
||||
tmp = array[1];
|
||||
array[1] = array[2];
|
||||
array[2] = tmp;
|
||||
tmp = 0;
|
||||
return Float.intBitsToFloat(ByteBuffer.wrap(array).getInt());
|
||||
}
|
||||
|
||||
public double getDouble(){
|
||||
byte[] array = new byte[]{getByte(),getByte(),getByte(),getByte(),getByte(),getByte(),getByte(),getByte()};
|
||||
byte[] d = new byte[8];
|
||||
for(int i = 0;i < 8;i++){
|
||||
d[7 - i] = array[i];
|
||||
}
|
||||
array = null;
|
||||
return Double.longBitsToDouble(ByteBuffer.wrap(d).getLong());
|
||||
}
|
||||
|
||||
public char getChar(){
|
||||
return (char)getByte();
|
||||
}
|
||||
|
||||
public String getString(){
|
||||
char[] st = new char[getInt()];
|
||||
for(int i = 0;i < st.length;i++){
|
||||
st[i] = getChar();
|
||||
}
|
||||
return new String(st);
|
||||
}
|
||||
|
||||
public byte[] getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(byte[] data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public int getPointer() {
|
||||
return pointer;
|
||||
}
|
||||
|
||||
public void setPointer(int pointer) {
|
||||
this.pointer = pointer;
|
||||
}
|
||||
|
||||
public static int getSize() {
|
||||
return SIZE;
|
||||
}
|
||||
|
||||
public void clear(){
|
||||
pointer = 0;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package fr.technicalgames.network.common;
|
||||
|
||||
import java.net.*;
|
||||
|
||||
import fr.technicalgames.client.*;
|
||||
import fr.technicalgames.network.*;
|
||||
|
||||
public interface IPacket {
|
||||
|
||||
public void read(DataBuffer data);
|
||||
public void write(DataBuffer data);
|
||||
public void manage(Server server,DatagramSocket socket,Client client,IPacket packet);
|
||||
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package fr.technicalgames.network.common;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import fr.technicalgames.network.packet.*;
|
||||
|
||||
public class Register {
|
||||
|
||||
public static ArrayList<Class> registeredClass = new ArrayList<Class>();
|
||||
|
||||
public static void registerClass(){
|
||||
addClass(MessagePacket.class);
|
||||
addClass(MainState_Connection_Request_Packet.class);
|
||||
addClass(Disconnect_Client_Packet.class);
|
||||
}
|
||||
|
||||
public static void addClass(Class cl){
|
||||
registeredClass.add(cl);
|
||||
}
|
||||
|
||||
public static Class getClass(int id){
|
||||
return registeredClass.get(id);
|
||||
}
|
||||
|
||||
public static int getId(Class cl){
|
||||
for(int i = 0;i < registeredClass.size();i++){
|
||||
if(registeredClass.get(i).equals(cl))return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static Object instantiate(int id) {
|
||||
try {
|
||||
return getClass(id).newInstance();
|
||||
} catch (InstantiationException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package fr.technicalgames.network.packet;
|
||||
|
||||
import java.net.*;
|
||||
|
||||
import fr.technicalgames.client.*;
|
||||
import fr.technicalgames.network.*;
|
||||
import fr.technicalgames.network.common.*;
|
||||
|
||||
public class Disconnect_Client_Packet implements IPacket{
|
||||
|
||||
public String pseudo;
|
||||
|
||||
public Disconnect_Client_Packet(){}
|
||||
|
||||
public Disconnect_Client_Packet(String pseudo){
|
||||
this.pseudo = pseudo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(DataBuffer data) {
|
||||
this.pseudo = data.getString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(DataBuffer data) {
|
||||
data.put(this.pseudo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void manage(Server server, DatagramSocket socket, Client client, IPacket packet) {
|
||||
server.closeConnection(client);
|
||||
server.sendToClients(packet);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
package fr.technicalgames.network.packet;
|
||||
|
||||
import java.net.*;
|
||||
|
||||
import fr.technicalgames.client.*;
|
||||
import fr.technicalgames.network.*;
|
||||
import fr.technicalgames.network.common.*;
|
||||
|
||||
public class MainState_Connection_Request_Packet implements IPacket{
|
||||
|
||||
public static final int REQUEST = 0, ACCEPTED = 1, REFUSED = 2,TIME_OUT = 3, ALREADY_CONNECTED = 4, PSEUDO_INCORRECT = 5,DISCONNECTED = 6;
|
||||
|
||||
public String pseudo;
|
||||
public int id;
|
||||
|
||||
public MainState_Connection_Request_Packet() { }
|
||||
|
||||
public MainState_Connection_Request_Packet(String pseudo,int id)
|
||||
{
|
||||
this.pseudo = pseudo;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(DataBuffer data) {
|
||||
this.pseudo = data.getString();
|
||||
this.id = data.getInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(DataBuffer data) {
|
||||
data.put(pseudo);
|
||||
data.put(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void manage(Server server,DatagramSocket socket,Client client,IPacket packet) {
|
||||
if(server.getClientByName(pseudo) == null){
|
||||
client.getPlayer().setName(pseudo);
|
||||
id = ACCEPTED;
|
||||
}else{
|
||||
Client cl = server.getClientByName(pseudo);
|
||||
while(cl != null){
|
||||
server.closeConnection(cl);
|
||||
cl = server.getClientByName(pseudo);
|
||||
}
|
||||
server.closeConnection(client);
|
||||
id = ALREADY_CONNECTED;
|
||||
}
|
||||
client.send(socket, this);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package fr.technicalgames.network.packet;
|
||||
|
||||
import java.net.*;
|
||||
|
||||
import fr.technicalgames.client.*;
|
||||
import fr.technicalgames.io.*;
|
||||
import fr.technicalgames.network.*;
|
||||
import fr.technicalgames.network.common.*;
|
||||
|
||||
public class MessagePacket implements IPacket{
|
||||
|
||||
private String pseudo, message;
|
||||
|
||||
public MessagePacket() { }
|
||||
|
||||
public MessagePacket(String pseudo, String message){
|
||||
this.message = message;
|
||||
this.pseudo = pseudo;
|
||||
}
|
||||
|
||||
public void read(DataBuffer data){
|
||||
this.pseudo = data.getString();
|
||||
this.message = data.getString();
|
||||
}
|
||||
|
||||
public void write(DataBuffer data){
|
||||
data.put(this.pseudo);
|
||||
data.put(this.message);
|
||||
}
|
||||
|
||||
public void manage(Server server,DatagramSocket socket,Client client,IPacket packet){
|
||||
Log.println(Log.INFO, pseudo + " : " + message);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package fr.technicalgames.settings;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
|
||||
import fr.technicalgames.io.Log;
|
||||
|
||||
public class Settings {
|
||||
|
||||
public static void loadSettings(){
|
||||
File t = new File("settings/");
|
||||
for(File f : t.listFiles()){
|
||||
Log.println(Log.INFO, f.getName());
|
||||
}
|
||||
}
|
||||
|
||||
class SettingsFile{
|
||||
|
||||
private String filename;
|
||||
private HashMap<String,String> data = new HashMap<String,String>();
|
||||
|
||||
public SettingsFile(String filename,String path){
|
||||
File f = new File(path + filename);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
BIN
Unity network UDP/.vs/Unity network UDP/v14/.suo
Normal file
BIN
Unity network UDP/.vs/Unity network UDP/v14/.suo
Normal file
Binary file not shown.
111
Unity network UDP/Assembly-CSharp-Editor.csproj
Normal file
111
Unity network UDP/Assembly-CSharp-Editor.csproj
Normal file
|
@ -0,0 +1,111 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>10.0.20506</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<RootNamespace></RootNamespace>
|
||||
<ProjectGuid>{9F543762-BF16-744B-B4B2-7D409B8E4AB7}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<AssemblyName>Assembly-CSharp-Editor</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<BaseDirectory>Assets</BaseDirectory>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>Temp\bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;UNITY_5_3_2;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoWarn>0169</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>Temp\bin\Release\</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoWarn>0169</NoWarn>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.XML" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEngine.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEditor.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Assets\scripts\editor\TerrainExport.cs" />
|
||||
<Reference Include="Assembly-UnityScript">
|
||||
<HintPath>D:/fichiers/programmes/moi/unity/Unity network UDP/Library/ScriptAssemblies/Assembly-UnityScript.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.Advertisements">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/Advertisements/Editor/UnityEditor.Advertisements.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="nunit.framework">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/EditorTestsRunner/Editor/nunit.framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.EditorTestsRunner">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/EditorTestsRunner/Editor/UnityEditor.EditorTestsRunner.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.UI">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.UI">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.Networking">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.Networking">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.TreeEditor">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/TreeEditor/Editor/UnityEditor.TreeEditor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.Graphs">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.Android.Extensions">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.iOS.Extensions">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.WebGL.Extensions">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.LinuxStandalone.Extensions">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.WindowsStandalone.Extensions">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor.OSXStandalone.Extensions">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="Assembly-CSharp.csproj">
|
||||
<Project>{E8AC5320-5607-FFE2-C7E2-3253D342E899}</Project> <Name>Assembly-CSharp</Name> </ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
|
||||
</Project>
|
75
Unity network UDP/Assembly-CSharp.csproj
Normal file
75
Unity network UDP/Assembly-CSharp.csproj
Normal file
|
@ -0,0 +1,75 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>10.0.20506</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<RootNamespace></RootNamespace>
|
||||
<ProjectGuid>{E8AC5320-5607-FFE2-C7E2-3253D342E899}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<AssemblyName>Assembly-CSharp</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<BaseDirectory>Assets</BaseDirectory>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>Temp\bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;UNITY_5_3_2;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoWarn>0169</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>Temp\bin\Release\</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoWarn>0169</NoWarn>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.XML" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEngine.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEditor">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/Managed/UnityEditor.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Assets\scripts\gamestate\GameState.cs" />
|
||||
<Compile Include="Assets\scripts\gamestate\MainState.cs" />
|
||||
<Compile Include="Assets\scripts\network\Client.cs" />
|
||||
<Compile Include="Assets\scripts\network\MainClient.cs" />
|
||||
<Compile Include="Assets\scripts\network\common\DataBuffer.cs" />
|
||||
<Compile Include="Assets\scripts\network\common\IPacket.cs" />
|
||||
<Compile Include="Assets\scripts\network\common\Register.cs" />
|
||||
<Compile Include="Assets\scripts\network\packet\Disconnect_Client_Packet.cs" />
|
||||
<Compile Include="Assets\scripts\network\packet\MainState_Connection_Request_Packet.cs" />
|
||||
<Compile Include="Assets\scripts\network\packet\MessagePacket.cs" />
|
||||
<Compile Include="Assets\scripts\network\packet\PingPacket.cs" />
|
||||
<Reference Include="UnityEngine.UI">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="UnityEngine.Networking">
|
||||
<HintPath>D:/logiciels/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
|
||||
</Project>
|
BIN
Unity network UDP/Assets/DupeHeightMap.png
Normal file
BIN
Unity network UDP/Assets/DupeHeightMap.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
57
Unity network UDP/Assets/DupeHeightMap.png.meta
Normal file
57
Unity network UDP/Assets/DupeHeightMap.png.meta
Normal file
|
@ -0,0 +1,57 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0c3a130c5911fb94da97ee37073f4b81
|
||||
timeCreated: 1461176781
|
||||
licenseType: Free
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
linearTexture: 0
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 7
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
allowsAlphaSplitting: 0
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 0
|
||||
textureType: -1
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
sprites: []
|
||||
outline: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Unity network UDP/Assets/New Terrain.asset
Normal file
BIN
Unity network UDP/Assets/New Terrain.asset
Normal file
Binary file not shown.
8
Unity network UDP/Assets/New Terrain.asset.meta
Normal file
8
Unity network UDP/Assets/New Terrain.asset.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a650dbd5d579bc8499d32782b7c9104c
|
||||
timeCreated: 1461172757
|
||||
licenseType: Free
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Unity network UDP/Assets/heightmap.map
Normal file
BIN
Unity network UDP/Assets/heightmap.map
Normal file
Binary file not shown.
8
Unity network UDP/Assets/heightmap.map.meta
Normal file
8
Unity network UDP/Assets/heightmap.map.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 24249e1e07f50b94d823e5b641b07f67
|
||||
timeCreated: 1461186732
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Unity network UDP/Assets/scenes.meta
Normal file
9
Unity network UDP/Assets/scenes.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cb3879966b4e9284e8e630de5266c03e
|
||||
folderAsset: yes
|
||||
timeCreated: 1461077713
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Unity network UDP/Assets/scenes/GameMenu.unity
Normal file
BIN
Unity network UDP/Assets/scenes/GameMenu.unity
Normal file
Binary file not shown.
8
Unity network UDP/Assets/scenes/GameMenu.unity.meta
Normal file
8
Unity network UDP/Assets/scenes/GameMenu.unity.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4f84caedd08afdb4aa9abf11a8f90022
|
||||
timeCreated: 1461152442
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Unity network UDP/Assets/scenes/MainMenu.unity
Normal file
BIN
Unity network UDP/Assets/scenes/MainMenu.unity
Normal file
Binary file not shown.
8
Unity network UDP/Assets/scenes/MainMenu.unity.meta
Normal file
8
Unity network UDP/Assets/scenes/MainMenu.unity.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 67b343623e0fb7e45af3f4acd9d07b43
|
||||
timeCreated: 1461077713
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Unity network UDP/Assets/scripts.meta
Normal file
9
Unity network UDP/Assets/scripts.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3b4bdb98a5880ed458e0b2db273cbd75
|
||||
folderAsset: yes
|
||||
timeCreated: 1461077658
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
57
Unity network UDP/Assets/scripts/HeightmapExportPNG.js
Normal file
57
Unity network UDP/Assets/scripts/HeightmapExportPNG.js
Normal file
|
@ -0,0 +1,57 @@
|
|||
import UnityEngine;
|
||||
import UnityEditor;
|
||||
import System.Collections;
|
||||
import System.IO;
|
||||
|
||||
class HeightmapExportPNG extends EditorWindow
|
||||
{
|
||||
static var terraindata : TerrainData;
|
||||
|
||||
@MenuItem ("Terrain/Export Height Map as PNG")
|
||||
static function Init () {
|
||||
terraindata = null;
|
||||
var terrain : Terrain = null;
|
||||
|
||||
if ( Selection.activeGameObject )
|
||||
terrain = Selection.activeGameObject.GetComponent( Terrain );
|
||||
|
||||
if (!terrain) {
|
||||
terrain = Terrain.activeTerrain;
|
||||
}
|
||||
if (terrain) {
|
||||
terraindata = terrain.terrainData;
|
||||
}
|
||||
if (terraindata == null) {
|
||||
EditorUtility.DisplayDialog("No terrain selected", "Please select a terrain.", "Cancel");
|
||||
return;
|
||||
}
|
||||
|
||||
//// get the terrain heights into an array and apply them to a texture2D
|
||||
var myBytes : byte[];
|
||||
var myIndex : int = 0;
|
||||
var rawHeights = new Array(0.0,0.0);
|
||||
var duplicateHeightMap = new Texture2D(terraindata.heightmapWidth, terraindata.heightmapHeight, TextureFormat.ARGB32, false);
|
||||
rawHeights = terraindata.GetHeights(0, 0, terraindata.heightmapWidth, terraindata.heightmapHeight);
|
||||
|
||||
/// run through the array row by row
|
||||
for (y=0; y < duplicateHeightMap.height; ++y)
|
||||
{
|
||||
for (x=0; x < duplicateHeightMap.width; ++x)
|
||||
{
|
||||
/// for wach pixel set RGB to the same so it's gray
|
||||
var data = rawHeights[myIndex];
|
||||
var color = Vector4(data, data,data, 1.0);
|
||||
duplicateHeightMap.SetPixel (x, y, color);
|
||||
myIndex++;
|
||||
}
|
||||
}
|
||||
// Apply all SetPixel calls
|
||||
duplicateHeightMap.Apply();
|
||||
|
||||
/// make it a PNG and save it to the Assets folder
|
||||
myBytes = duplicateHeightMap.EncodeToPNG();
|
||||
var filename : String = "DupeHeightMap.png";
|
||||
File.WriteAllBytes(Application.dataPath + "/" + filename, myBytes);
|
||||
EditorUtility.DisplayDialog("Heightmap Duplicated", "Saved as PNG in Assets/ as: " + filename, "");
|
||||
}
|
||||
}
|
12
Unity network UDP/Assets/scripts/HeightmapExportPNG.js.meta
Normal file
12
Unity network UDP/Assets/scripts/HeightmapExportPNG.js.meta
Normal file
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 377b3e4ac5993cb4785ccd432840d615
|
||||
timeCreated: 1461176678
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Unity network UDP/Assets/scripts/editor.meta
Normal file
9
Unity network UDP/Assets/scripts/editor.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 948a750a1a0784a4188bf7767a99be0a
|
||||
folderAsset: yes
|
||||
timeCreated: 1461178066
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
85
Unity network UDP/Assets/scripts/editor/TerrainExport.cs
Normal file
85
Unity network UDP/Assets/scripts/editor/TerrainExport.cs
Normal file
|
@ -0,0 +1,85 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
|
||||
class TerrainExport : EditorWindow
|
||||
{
|
||||
|
||||
static TerrainData terraindata;
|
||||
|
||||
[MenuItem("Terrain/Export Height Map as MAP")]
|
||||
static void Init()
|
||||
{
|
||||
terraindata = null;
|
||||
Terrain terrain = null;
|
||||
|
||||
if (Selection.activeGameObject)
|
||||
terrain = Selection.activeGameObject.GetComponent<Terrain>();
|
||||
|
||||
if (!terrain)
|
||||
{
|
||||
terrain = Terrain.activeTerrain;
|
||||
}
|
||||
if (terrain)
|
||||
{
|
||||
terraindata = terrain.terrainData;
|
||||
}
|
||||
if (terraindata == null)
|
||||
{
|
||||
EditorUtility.DisplayDialog("No terrain selected", "Please select a terrain.", "Cancel");
|
||||
return;
|
||||
}
|
||||
|
||||
float[,] rawHeights = terraindata.GetHeights(0, 0, terraindata.heightmapWidth, terraindata.heightmapHeight);
|
||||
byte[] data = new byte[terraindata.heightmapWidth * terraindata.heightmapHeight * 4 + 16];
|
||||
|
||||
int a = terraindata.heightmapWidth;
|
||||
data[0] = (byte)((a >> 24) & 0xff);
|
||||
data[1] = (byte)((a >> 16) & 0xff);
|
||||
data[2] = (byte)((a >> 8) & 0xff);
|
||||
data[3] = (byte)((a >> 0) & 0xff);
|
||||
|
||||
a = terraindata.heightmapHeight;
|
||||
data[4] = (byte)((a >> 24) & 0xff);
|
||||
data[5] = (byte)((a >> 16) & 0xff);
|
||||
data[6] = (byte)((a >> 8) & 0xff);
|
||||
data[7] = (byte)((a >> 0) & 0xff);
|
||||
|
||||
int pointer = 8;
|
||||
|
||||
byte[] array = BitConverter.GetBytes(terraindata.size.x);
|
||||
foreach (byte b in array)
|
||||
{
|
||||
data[pointer++] = b;
|
||||
}
|
||||
|
||||
array = BitConverter.GetBytes(terraindata.size.z);
|
||||
foreach (byte b in array)
|
||||
{
|
||||
data[pointer++] = b;
|
||||
}
|
||||
|
||||
float max = 0;
|
||||
for (int x = 0; x < terraindata.heightmapWidth; x++)
|
||||
{
|
||||
for (int y = 0; y < terraindata.heightmapHeight; y++)
|
||||
{
|
||||
float s = rawHeights[y, x] * terraindata.heightmapScale.y;
|
||||
max = (s > max) ? s : max;
|
||||
array = BitConverter.GetBytes(s);
|
||||
foreach (byte b in array)
|
||||
{
|
||||
data[pointer++] = b;
|
||||
}
|
||||
}
|
||||
}
|
||||
File.WriteAllBytes(Application.dataPath + "/" + "heightmap.map", data);
|
||||
EditorUtility.DisplayDialog("Heightmap Duplicated", "Saved as PNG in Assets/ as: " + "heightmap.map maxheight:" + max + " width:" + terraindata.size.x + " height:" + terraindata.size.z, "Ok");
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e4e69e764e1d0e444886b477010ea874
|
||||
timeCreated: 1461178068
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Unity network UDP/Assets/scripts/gamestate.meta
Normal file
9
Unity network UDP/Assets/scripts/gamestate.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4433c6aa3dfe38c448fd03c00ae00b54
|
||||
folderAsset: yes
|
||||
timeCreated: 1461099886
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
25
Unity network UDP/Assets/scripts/gamestate/GameState.cs
Normal file
25
Unity network UDP/Assets/scripts/gamestate/GameState.cs
Normal file
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
class GameState : MonoBehaviour
|
||||
{
|
||||
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
12
Unity network UDP/Assets/scripts/gamestate/GameState.cs.meta
Normal file
12
Unity network UDP/Assets/scripts/gamestate/GameState.cs.meta
Normal file
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7764a314530f3b44686c82db227ddf1e
|
||||
timeCreated: 1461152479
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
192
Unity network UDP/Assets/scripts/gamestate/MainState.cs
Normal file
192
Unity network UDP/Assets/scripts/gamestate/MainState.cs
Normal file
|
@ -0,0 +1,192 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
class MainState : MonoBehaviour
|
||||
{
|
||||
public string stringPseudo = "Pseudo";
|
||||
public string stringHost = "IP:PORT";
|
||||
private int preStatus = -1;
|
||||
|
||||
public float preTime = 0;
|
||||
public Boolean windowOpen = false;
|
||||
public int winID = -1;
|
||||
public Rect windowRect = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100);
|
||||
|
||||
void Start()
|
||||
{
|
||||
windowRect = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100);
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if(preStatus != MainClient.connected)
|
||||
{
|
||||
if (MainClient.connected == MainState_Connection_Request_Packet.REQUEST)
|
||||
{
|
||||
preTime = Time.time;
|
||||
}
|
||||
if (MainClient.connected == MainState_Connection_Request_Packet.ACCEPTED)
|
||||
{
|
||||
winID = 0;
|
||||
windowOpen = true;
|
||||
}
|
||||
if (MainClient.connected == MainState_Connection_Request_Packet.REFUSED)
|
||||
{
|
||||
winID = 5;
|
||||
windowOpen = true;
|
||||
}
|
||||
if (MainClient.connected == MainState_Connection_Request_Packet.TIME_OUT)
|
||||
{
|
||||
winID = 4;
|
||||
windowOpen = true;
|
||||
MainClient.client.disconnect();
|
||||
}
|
||||
if (MainClient.connected == MainState_Connection_Request_Packet.ALREADY_CONNECTED)
|
||||
{
|
||||
winID = 7;
|
||||
windowOpen = true;
|
||||
}
|
||||
if (MainClient.connected == MainState_Connection_Request_Packet.PSEUDO_INCORRECT)
|
||||
{
|
||||
winID = 2;
|
||||
windowOpen = true;
|
||||
}
|
||||
preStatus = MainClient.connected;
|
||||
}
|
||||
if(preStatus == 0 && preStatus == MainClient.connected)
|
||||
{
|
||||
if ((Time.time - preTime) >= 10)
|
||||
{
|
||||
MainClient.connected = MainState_Connection_Request_Packet.TIME_OUT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
GUILayout.BeginArea(new Rect(Screen.width/2 - 50, Screen.height / 2 - 50, 100, 100));
|
||||
stringHost = GUILayout.TextField(stringHost);
|
||||
stringPseudo = GUILayout.TextField(stringPseudo);
|
||||
if (GUILayout.Button("Login"))
|
||||
{
|
||||
if(stringHost.Length > 0)
|
||||
{
|
||||
if(stringPseudo.Length > 0)
|
||||
{
|
||||
string[] c = stringHost.Split(':');
|
||||
string host = "";
|
||||
int port = 9999;
|
||||
if (c.Length == 1)
|
||||
{
|
||||
host = c[0];
|
||||
MainClient.connect(host, port, stringPseudo);
|
||||
winID = 6;
|
||||
windowOpen = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
host = c[0];
|
||||
if (Int32.TryParse(c[1], out port))
|
||||
{
|
||||
MainClient.connect(host, port, stringPseudo);
|
||||
winID = 6;
|
||||
windowOpen = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
winID = 1;
|
||||
windowOpen = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
winID = 2;
|
||||
windowOpen = true;
|
||||
}
|
||||
|
||||
}else
|
||||
{
|
||||
winID = 3;
|
||||
windowOpen = true;
|
||||
}
|
||||
}
|
||||
GUILayout.EndArea();
|
||||
if (windowOpen)
|
||||
{
|
||||
GUI.Box(windowRect, "");
|
||||
GUI.Box(windowRect, "");
|
||||
GUI.Box(windowRect, "");
|
||||
GUI.Box(windowRect, "");
|
||||
windowRect = GUILayout.Window(winID, windowRect, connectedWindow, "Information");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void connectedWindow(int windowID)
|
||||
{
|
||||
if(windowID == 0)
|
||||
{
|
||||
GUILayout.Label("Connexion réussi !");
|
||||
if (GUILayout.Button("Valider"))
|
||||
{
|
||||
windowOpen = false;
|
||||
}
|
||||
}
|
||||
else if (windowID == 1)
|
||||
{
|
||||
GUILayout.Label("Le Port entré est incorrect !");
|
||||
if (GUILayout.Button("Valider"))
|
||||
{
|
||||
windowOpen = false;
|
||||
}
|
||||
}
|
||||
else if (windowID == 2)
|
||||
{
|
||||
GUILayout.Label("Pseudo incorrect !");
|
||||
if (GUILayout.Button("Valider"))
|
||||
{
|
||||
windowOpen = false;
|
||||
}
|
||||
}
|
||||
else if (windowID == 3)
|
||||
{
|
||||
GUILayout.Label("Aucune ip entré !");
|
||||
if (GUILayout.Button("Valider"))
|
||||
{
|
||||
windowOpen = false;
|
||||
}
|
||||
}
|
||||
else if (windowID == 4)
|
||||
{
|
||||
GUILayout.Label("Echec de la connexion");
|
||||
if (GUILayout.Button("Valider"))
|
||||
{
|
||||
windowOpen = false;
|
||||
}
|
||||
}
|
||||
else if (windowID == 5)
|
||||
{
|
||||
GUILayout.Label("Connexion refusée !");
|
||||
if (GUILayout.Button("Valider"))
|
||||
{
|
||||
windowOpen = false;
|
||||
}
|
||||
}
|
||||
else if (windowID == 6)
|
||||
{
|
||||
GUILayout.Label("Connexion en cours...");
|
||||
}
|
||||
else if (windowID == 7)
|
||||
{
|
||||
GUILayout.Label("Vous etes déja connecté !");
|
||||
if (GUILayout.Button("Valider"))
|
||||
{
|
||||
windowOpen = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
12
Unity network UDP/Assets/scripts/gamestate/MainState.cs.meta
Normal file
12
Unity network UDP/Assets/scripts/gamestate/MainState.cs.meta
Normal file
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: efde826cbfe60a64ebd845c9080b1d6b
|
||||
timeCreated: 1461099889
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Unity network UDP/Assets/scripts/network.meta
Normal file
9
Unity network UDP/Assets/scripts/network.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e2fc0e66fe770324a8c90d0be6e109c0
|
||||
folderAsset: yes
|
||||
timeCreated: 1461077665
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
60
Unity network UDP/Assets/scripts/network/Client.cs
Normal file
60
Unity network UDP/Assets/scripts/network/Client.cs
Normal file
|
@ -0,0 +1,60 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Threading;
|
||||
|
||||
|
||||
class Client
|
||||
{
|
||||
private UdpClient client;
|
||||
private IPEndPoint ep;
|
||||
private Thread receiveThread;
|
||||
|
||||
private volatile Boolean connected = false;
|
||||
|
||||
public Client(String ip,int port)
|
||||
{
|
||||
ep = new IPEndPoint(IPAddress.Parse(ip), port);
|
||||
client = new UdpClient();
|
||||
receiveThread = new Thread(new ThreadStart(loop));
|
||||
Register.registerClass();
|
||||
}
|
||||
|
||||
public void connect()
|
||||
{
|
||||
client.Connect(ep);
|
||||
connected = true;
|
||||
receiveThread.Start();
|
||||
}
|
||||
|
||||
public void loop()
|
||||
{
|
||||
while (connected)
|
||||
{
|
||||
byte[] data = client.Receive(ref ep);
|
||||
DataBuffer dataBuffer = new DataBuffer(data);
|
||||
int id = dataBuffer.getInt();
|
||||
IPacket packet = (IPacket)Register.instantiate(id);
|
||||
packet.read(dataBuffer);
|
||||
packet.manage(data, this);
|
||||
}
|
||||
}
|
||||
|
||||
public void send(IPacket packet)
|
||||
{
|
||||
DataBuffer data = new DataBuffer();
|
||||
packet.write(data);
|
||||
client.Send(data.getData(), data.getData().Length);
|
||||
}
|
||||
|
||||
public void disconnect()
|
||||
{
|
||||
client.Close();
|
||||
connected = false;
|
||||
}
|
||||
|
||||
}
|
12
Unity network UDP/Assets/scripts/network/Client.cs.meta
Normal file
12
Unity network UDP/Assets/scripts/network/Client.cs.meta
Normal file
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6ef5ac19c402f2c42a01c3f10df1e3e0
|
||||
timeCreated: 1461077674
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
22
Unity network UDP/Assets/scripts/network/MainClient.cs
Normal file
22
Unity network UDP/Assets/scripts/network/MainClient.cs
Normal file
|
@ -0,0 +1,22 @@
|
|||
using UnityEngine;
|
||||
|
||||
class MainClient {
|
||||
|
||||
public static Client client;
|
||||
public static string pseudo;
|
||||
public static int connected = -1;
|
||||
|
||||
public static void connect (string host,int port,string pseudo) {
|
||||
client = new Client(host, port);
|
||||
client.connect();
|
||||
connected = 0;
|
||||
client.send(new MainState_Connection_Request_Packet(pseudo, 0));
|
||||
}
|
||||
|
||||
|
||||
public static void OnGUI()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
12
Unity network UDP/Assets/scripts/network/MainClient.cs.meta
Normal file
12
Unity network UDP/Assets/scripts/network/MainClient.cs.meta
Normal file
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 353dd1b92e911804cba3e451a2a5aa47
|
||||
timeCreated: 1461092835
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Unity network UDP/Assets/scripts/network/common.meta
Normal file
9
Unity network UDP/Assets/scripts/network/common.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 49ebafc3208dd5e42b7dcba1440f6f45
|
||||
folderAsset: yes
|
||||
timeCreated: 1461077683
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
214
Unity network UDP/Assets/scripts/network/common/DataBuffer.cs
Normal file
214
Unity network UDP/Assets/scripts/network/common/DataBuffer.cs
Normal file
|
@ -0,0 +1,214 @@
|
|||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System;
|
||||
|
||||
public class DataBuffer{
|
||||
|
||||
//readonly constant static -> const non static
|
||||
public static readonly int SIZE = 1024;
|
||||
|
||||
private byte[] data;
|
||||
private int pointer;
|
||||
|
||||
public DataBuffer()
|
||||
{
|
||||
data = new byte[SIZE];
|
||||
pointer = 0;
|
||||
}
|
||||
|
||||
public DataBuffer(byte[] data)
|
||||
{
|
||||
this.data = data;
|
||||
pointer = 0;
|
||||
}
|
||||
|
||||
public void put(byte a)
|
||||
{
|
||||
if (pointer >= SIZE)
|
||||
{
|
||||
Debug.Log( "Databuffer write overflow");
|
||||
return;
|
||||
}
|
||||
data[pointer++] = a;
|
||||
}
|
||||
|
||||
public void put(sbyte a)
|
||||
{
|
||||
if (pointer >= SIZE)
|
||||
{
|
||||
Debug.Log("Databuffer write overflow");
|
||||
return;
|
||||
}
|
||||
data[pointer++] = (byte)a;
|
||||
}
|
||||
|
||||
public void put(short a)
|
||||
{
|
||||
put((byte)((a >> 8) & 0xff));
|
||||
put((byte)((a >> 0) & 0xff));
|
||||
}
|
||||
|
||||
public void put(int a)
|
||||
{
|
||||
put((byte)((a >> 24) & 0xff));
|
||||
put((byte)((a >> 16) & 0xff));
|
||||
put((byte)((a >> 8) & 0xff));
|
||||
put((byte)((a >> 0) & 0xff));
|
||||
}
|
||||
|
||||
public void put(long a)
|
||||
{
|
||||
put((byte)((a >> 56) & 0xff));
|
||||
put((byte)((a >> 48) & 0xff));
|
||||
put((byte)((a >> 40) & 0xff));
|
||||
put((byte)((a >> 32) & 0xff));
|
||||
put((byte)((a >> 24) & 0xff));
|
||||
put((byte)((a >> 16) & 0xff));
|
||||
put((byte)((a >> 8) & 0xff));
|
||||
put((byte)((a >> 0) & 0xff));
|
||||
}
|
||||
|
||||
public void put(float a)
|
||||
{
|
||||
byte[] array = BitConverter.GetBytes(a);
|
||||
foreach(byte b in array)
|
||||
{
|
||||
put(b);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void put(double a)
|
||||
{
|
||||
byte[] array = BitConverter.GetBytes(a);
|
||||
foreach (byte b in array)
|
||||
{
|
||||
put(b);
|
||||
}
|
||||
}
|
||||
|
||||
public void put(char a)
|
||||
{
|
||||
put((byte)a);
|
||||
}
|
||||
|
||||
public void put(String a)
|
||||
{
|
||||
char[] b = a.ToCharArray();
|
||||
put(a.Length);
|
||||
for (int i = 0; i < a.Length; i++)
|
||||
{
|
||||
put(b[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public byte getByte()
|
||||
{
|
||||
if (pointer >= SIZE)
|
||||
{
|
||||
Debug.Log("Databuffer write overflow");
|
||||
return 0;
|
||||
}
|
||||
return data[pointer++];
|
||||
}
|
||||
|
||||
public sbyte getSByte()
|
||||
{
|
||||
if (pointer >= SIZE)
|
||||
{
|
||||
Debug.Log("Databuffer write overflow");
|
||||
return 0;
|
||||
}
|
||||
return (sbyte)data[pointer++];
|
||||
}
|
||||
|
||||
public short getShort()
|
||||
{
|
||||
return (short)((
|
||||
(getByte() << 8) & 0xff00) |
|
||||
(getByte() & 0xff));
|
||||
}
|
||||
|
||||
public int getInt()
|
||||
{
|
||||
return (int)((
|
||||
(getByte() << 24) & 0xff000000) |
|
||||
(getByte() << 16 & 0xff0000) |
|
||||
(getByte() << 8 & 0xff00) |
|
||||
(getByte() & 0xff));
|
||||
}
|
||||
|
||||
public long getLong()
|
||||
{
|
||||
return (long)(
|
||||
((ulong)((long)getByte() << 56) & 0xff00000000000000L) |
|
||||
((ulong)((long)getByte() << 48) & 0xff000000000000L) |
|
||||
((ulong)((long)getByte() << 40) & 0xff0000000000L) |
|
||||
(ulong)(((long)getByte() << 32) & 0xff00000000L) |
|
||||
((ulong)((long)getByte() << 24) & 0xff000000L) |
|
||||
((ulong)((long)getByte() << 16) & 0xff0000L) |
|
||||
((ulong)((long)getByte() << 8) & 0xff00L) |
|
||||
((ulong)(long)getByte() & 0xffL));
|
||||
}
|
||||
|
||||
public float getFloat()
|
||||
{
|
||||
byte[] array = new byte[4] { getByte(), getByte(), getByte(), getByte() };
|
||||
return BitConverter.ToSingle(array, 0);
|
||||
}
|
||||
|
||||
public double getDouble()
|
||||
{
|
||||
byte[] array = new byte[8] { getByte(), getByte(), getByte(), getByte(), getByte(), getByte(), getByte(), getByte() };
|
||||
return BitConverter.ToDouble(array, 0);
|
||||
}
|
||||
|
||||
public char getChar()
|
||||
{
|
||||
return (char)getByte();
|
||||
}
|
||||
|
||||
public String getString()
|
||||
{
|
||||
int size = getInt();
|
||||
char[] st = new char[size];
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
st[i] = getChar();
|
||||
}
|
||||
return new String(st);
|
||||
}
|
||||
|
||||
public byte[] getData()
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(byte[] data)
|
||||
{
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public int getPointer()
|
||||
{
|
||||
return pointer;
|
||||
}
|
||||
|
||||
public void setPointer(int pointer)
|
||||
{
|
||||
this.pointer = pointer;
|
||||
}
|
||||
|
||||
public static int getSize()
|
||||
{
|
||||
return SIZE;
|
||||
}
|
||||
|
||||
public void clear()
|
||||
{
|
||||
pointer = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 078e293494940144a9d5d954dc84daed
|
||||
timeCreated: 1461077692
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
11
Unity network UDP/Assets/scripts/network/common/IPacket.cs
Normal file
11
Unity network UDP/Assets/scripts/network/common/IPacket.cs
Normal file
|
@ -0,0 +1,11 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
interface IPacket
|
||||
{
|
||||
void read(DataBuffer data);
|
||||
void write(DataBuffer data);
|
||||
void manage(byte[] data, Client client);
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: c5c6e5983b09e5b45a1c0ff1cb10f177
|
||||
timeCreated: 1461092836
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
36
Unity network UDP/Assets/scripts/network/common/Register.cs
Normal file
36
Unity network UDP/Assets/scripts/network/common/Register.cs
Normal file
|
@ -0,0 +1,36 @@
|
|||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System;
|
||||
|
||||
public class Register {
|
||||
|
||||
public static Type[] registeredClass;
|
||||
|
||||
public static void registerClass()
|
||||
{
|
||||
registeredClass = new Type[] {
|
||||
typeof(MessagePacket),
|
||||
typeof(MainState_Connection_Request_Packet),
|
||||
typeof(Disconnect_Client_Packet)
|
||||
};
|
||||
}
|
||||
|
||||
public static Type getClass(int id)
|
||||
{
|
||||
return registeredClass[id];
|
||||
}
|
||||
|
||||
public static int getId(Type cl)
|
||||
{
|
||||
for (int i = 0; i < registeredClass.Length; i++)
|
||||
{
|
||||
if (cl == registeredClass[i]) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static object instantiate(int id)
|
||||
{
|
||||
return getClass(id).GetConstructor(Type.EmptyTypes).Invoke(Type.EmptyTypes);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7b248295a2003cb4f8f2c02963c4dc69
|
||||
timeCreated: 1461091725
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Unity network UDP/Assets/scripts/network/packet.meta
Normal file
9
Unity network UDP/Assets/scripts/network/packet.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: eafcd88293cff404b855b1726af268b7
|
||||
folderAsset: yes
|
||||
timeCreated: 1461092835
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,39 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
class Disconnect_Client_Packet : IPacket
|
||||
{
|
||||
public string pseudo;
|
||||
|
||||
public Disconnect_Client_Packet() { }
|
||||
|
||||
public Disconnect_Client_Packet(string pseudo) { this.pseudo = pseudo; }
|
||||
|
||||
void IPacket.read(DataBuffer data)
|
||||
{
|
||||
this.pseudo = data.getString();
|
||||
}
|
||||
|
||||
void IPacket.write(DataBuffer data)
|
||||
{
|
||||
data.put(Register.getId(typeof(Disconnect_Client_Packet)));
|
||||
data.put(this.pseudo);
|
||||
}
|
||||
|
||||
void IPacket.manage(byte[] data, Client client)
|
||||
{
|
||||
if (pseudo.Equals(MainClient.pseudo))
|
||||
{
|
||||
MainClient.connected = MainState_Connection_Request_Packet.DISCONNECTED;
|
||||
MainClient.client.disconnect();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 09c2a6099528c8445b15ffe7adbde542
|
||||
timeCreated: 1461172729
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,57 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
class MainState_Connection_Request_Packet : IPacket
|
||||
{
|
||||
|
||||
public static readonly int REQUEST = 0, ACCEPTED = 1, REFUSED = 2, TIME_OUT = 3, ALREADY_CONNECTED = 4, PSEUDO_INCORRECT = 5,DISCONNECTED = 6;
|
||||
|
||||
public String pseudo;
|
||||
public int id;
|
||||
|
||||
public MainState_Connection_Request_Packet() { }
|
||||
|
||||
public MainState_Connection_Request_Packet(String pseudo,int id)
|
||||
{
|
||||
this.pseudo = pseudo;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
void IPacket.write(DataBuffer data)
|
||||
{
|
||||
data.put(Register.getId(typeof(MainState_Connection_Request_Packet)));
|
||||
data.put(pseudo);
|
||||
data.put(id);
|
||||
}
|
||||
|
||||
void IPacket.read(DataBuffer data)
|
||||
{
|
||||
this.pseudo = data.getString();
|
||||
this.id = data.getInt();
|
||||
}
|
||||
|
||||
void IPacket.manage(byte[] data, Client client)
|
||||
{
|
||||
if(id == ACCEPTED)
|
||||
{
|
||||
MainClient.connected = ACCEPTED;
|
||||
MainClient.pseudo = this.pseudo;
|
||||
}
|
||||
else if(id == REFUSED)
|
||||
{
|
||||
MainClient.connected = REFUSED;
|
||||
}
|
||||
else if (id == ALREADY_CONNECTED)
|
||||
{
|
||||
MainClient.connected = ALREADY_CONNECTED;
|
||||
}
|
||||
else if (id == PSEUDO_INCORRECT)
|
||||
{
|
||||
MainClient.connected = PSEUDO_INCORRECT;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e632acbe3e907fb42992ec51c2549272
|
||||
timeCreated: 1461155199
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,38 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
class MessagePacket : IPacket
|
||||
{
|
||||
|
||||
private String pseudo, message;
|
||||
|
||||
public MessagePacket() { }
|
||||
|
||||
public MessagePacket(String pseudo, String message)
|
||||
{
|
||||
this.message = message;
|
||||
this.pseudo = pseudo;
|
||||
}
|
||||
|
||||
void IPacket.read(DataBuffer data)
|
||||
{
|
||||
this.pseudo = data.getString();
|
||||
this.message = data.getString();
|
||||
}
|
||||
|
||||
void IPacket.write(DataBuffer data)
|
||||
{
|
||||
data.put(Register.getId(typeof(MessagePacket)));
|
||||
data.put(this.pseudo);
|
||||
data.put(this.message);
|
||||
}
|
||||
|
||||
void IPacket.manage(byte[] data,Client client)
|
||||
{
|
||||
Debug.Log(this.pseudo + " : " + this.message);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6df0f62eafd1c224ea52a0721bc3e4b1
|
||||
timeCreated: 1461092835
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,27 @@
|
|||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
public class PingPacket : IPacket {
|
||||
|
||||
public long current;
|
||||
|
||||
public PingPacket()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void IPacket.read(DataBuffer data)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void IPacket.write(DataBuffer data)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void IPacket.manage(byte[] data, Client client)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6c3875a60f90ff146950d2ad190f0e09
|
||||
timeCreated: 1462518396
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Unity network UDP/Library/AnnotationManager
Normal file
BIN
Unity network UDP/Library/AnnotationManager
Normal file
Binary file not shown.
1
Unity network UDP/Library/AssetImportState
Normal file
1
Unity network UDP/Library/AssetImportState
Normal file
|
@ -0,0 +1 @@
|
|||
5;0;6;-1
|
BIN
Unity network UDP/Library/AssetServerCacheV3
Normal file
BIN
Unity network UDP/Library/AssetServerCacheV3
Normal file
Binary file not shown.
BIN
Unity network UDP/Library/AssetVersioning.db
Normal file
BIN
Unity network UDP/Library/AssetVersioning.db
Normal file
Binary file not shown.
0
Unity network UDP/Library/BuildPlayer.prefs
Normal file
0
Unity network UDP/Library/BuildPlayer.prefs
Normal file
BIN
Unity network UDP/Library/BuildSettings.asset
Normal file
BIN
Unity network UDP/Library/BuildSettings.asset
Normal file
Binary file not shown.
BIN
Unity network UDP/Library/CurrentLayout.dwlt
Normal file
BIN
Unity network UDP/Library/CurrentLayout.dwlt
Normal file
Binary file not shown.
BIN
Unity network UDP/Library/EditorUserBuildSettings.asset
Normal file
BIN
Unity network UDP/Library/EditorUserBuildSettings.asset
Normal file
Binary file not shown.
BIN
Unity network UDP/Library/EditorUserSettings.asset
Normal file
BIN
Unity network UDP/Library/EditorUserSettings.asset
Normal file
Binary file not shown.
BIN
Unity network UDP/Library/InspectorExpandedItems.asset
Normal file
BIN
Unity network UDP/Library/InspectorExpandedItems.asset
Normal file
Binary file not shown.
4
Unity network UDP/Library/LastSceneManagerSetup.txt
Normal file
4
Unity network UDP/Library/LastSceneManagerSetup.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
sceneSetups:
|
||||
- path: Assets/scenes/GameMenu.unity
|
||||
isLoaded: 1
|
||||
isActive: 1
|
2
Unity network UDP/Library/LibraryFormatVersion.txt
Normal file
2
Unity network UDP/Library/LibraryFormatVersion.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
unityRebuildLibraryVersion: 11
|
||||
unityForwardCompatibleVersion: 40
|
BIN
Unity network UDP/Library/MonoManager.asset
Normal file
BIN
Unity network UDP/Library/MonoManager.asset
Normal file
Binary file not shown.
BIN
Unity network UDP/Library/ProjectSettings.asset
Normal file
BIN
Unity network UDP/Library/ProjectSettings.asset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Unity network UDP/Library/ScriptAssemblies/Assembly-CSharp.dll
Normal file
BIN
Unity network UDP/Library/ScriptAssemblies/Assembly-CSharp.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Unity network UDP/Library/ScriptMapper
Normal file
BIN
Unity network UDP/Library/ScriptMapper
Normal file
Binary file not shown.
BIN
Unity network UDP/Library/ShaderCache.db
Normal file
BIN
Unity network UDP/Library/ShaderCache.db
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue