diff --git a/clients/unity/.gitignore b/clients/unity/.gitignore new file mode 100644 index 000000000..d784f4250 --- /dev/null +++ b/clients/unity/.gitignore @@ -0,0 +1,11 @@ +[Oo]bj +[Bb]in +*.user +*.suo +*.[Cc]ache +*.bak +*.ncb +*.log +*.DS_Store +[Tt]humbs.db +Ankh.NoLoad diff --git a/clients/unity/simple_sample/Assembly-CSharp-Editor-vs.csproj b/clients/unity/simple_sample/Assembly-CSharp-Editor-vs.csproj new file mode 100644 index 000000000..c22a3b8ce --- /dev/null +++ b/clients/unity/simple_sample/Assembly-CSharp-Editor-vs.csproj @@ -0,0 +1,69 @@ + + + + Debug + AnyCPU + 10.0.20506 + 2.0 + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8} + Library + Properties + + Assembly-CSharp-Editor + v3.5 + 512 + + + true + full + false + Temp\bin\Debug\ + DEBUG;TRACE;UNITY_STANDALONE_WIN;ENABLE_MICROPHONE;ENABLE_IMAGEEFFECTS;ENABLE_WEBCAM;ENABLE_AUDIO_FMOD;UNITY_STANDALONE;ENABLE_NETWORK;ENABLE_MONO;ENABLE_PHYSICS;ENABLE_TERRAIN;ENABLE_CACHING;ENABLE_SUBSTANCE;ENABLE_GENERICS;ENABLE_CLOTH;ENABLE_MOVIES;ENABLE_AUDIO;ENABLE_WWW;ENABLE_SHADOWS;ENABLE_DUCK_TYPING;UNITY_4_1_5;UNITY_4_1;ENABLE_PROFILER;UNITY_EDITOR + prompt + 4 + 0169 + + + pdbonly + true + Temp\bin\Release\ + TRACE + prompt + 4 + 0169 + + + + + + + C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEngine.dll + + + C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEditor.dll + + + + + + + Assets\protobuf-net.dll + + + C:\Program Files (x86)\Unity\Editor\Data\Managed\UnityEditor.Graphs.dll + + + + + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6} Assembly-CSharp-vs + + + + + diff --git a/clients/unity/simple_sample/Assembly-CSharp-Editor.csproj b/clients/unity/simple_sample/Assembly-CSharp-Editor.csproj new file mode 100644 index 000000000..0545b4be8 --- /dev/null +++ b/clients/unity/simple_sample/Assembly-CSharp-Editor.csproj @@ -0,0 +1,69 @@ + + + + Debug + AnyCPU + 10.0.20506 + 2.0 + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8} + Library + Properties + + Assembly-CSharp-Editor + v3.5 + 512 + + + true + full + false + Temp\bin\Debug\ + DEBUG;TRACE;UNITY_STANDALONE_WIN;ENABLE_MICROPHONE;ENABLE_IMAGEEFFECTS;ENABLE_WEBCAM;ENABLE_AUDIO_FMOD;UNITY_STANDALONE;ENABLE_NETWORK;ENABLE_MONO;ENABLE_PHYSICS;ENABLE_TERRAIN;ENABLE_CACHING;ENABLE_SUBSTANCE;ENABLE_GENERICS;ENABLE_CLOTH;ENABLE_MOVIES;ENABLE_AUDIO;ENABLE_WWW;ENABLE_SHADOWS;ENABLE_DUCK_TYPING;UNITY_4_1_5;UNITY_4_1;ENABLE_PROFILER;UNITY_EDITOR + prompt + 4 + 0169 + + + pdbonly + true + Temp\bin\Release\ + TRACE + prompt + 4 + 0169 + + + + + + + C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEngine.dll + + + C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEditor.dll + + + + + + + Assets\protobuf-net.dll + + + C:\Program Files (x86)\Unity\Editor\Data\Managed\UnityEditor.Graphs.dll + + + + + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6} Assembly-CSharp + + + + + diff --git a/clients/unity/simple_sample/Assembly-CSharp-Editor.pidb b/clients/unity/simple_sample/Assembly-CSharp-Editor.pidb new file mode 100644 index 000000000..7aee5c8f3 Binary files /dev/null and b/clients/unity/simple_sample/Assembly-CSharp-Editor.pidb differ diff --git a/clients/unity/simple_sample/Assembly-CSharp-vs.csproj b/clients/unity/simple_sample/Assembly-CSharp-vs.csproj new file mode 100644 index 000000000..0ad90a354 --- /dev/null +++ b/clients/unity/simple_sample/Assembly-CSharp-vs.csproj @@ -0,0 +1,73 @@ + + + + Debug + AnyCPU + 10.0.20506 + 2.0 + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6} + Library + Properties + + Assembly-CSharp + v3.5 + 512 + + + true + full + false + Temp\bin\Debug\ + DEBUG;TRACE;UNITY_STANDALONE_WIN;ENABLE_MICROPHONE;ENABLE_IMAGEEFFECTS;ENABLE_WEBCAM;ENABLE_AUDIO_FMOD;UNITY_STANDALONE;ENABLE_NETWORK;ENABLE_MONO;ENABLE_PHYSICS;ENABLE_TERRAIN;ENABLE_CACHING;ENABLE_SUBSTANCE;ENABLE_GENERICS;ENABLE_CLOTH;ENABLE_MOVIES;ENABLE_AUDIO;ENABLE_WWW;ENABLE_SHADOWS;ENABLE_DUCK_TYPING;UNITY_4_1_5;UNITY_4_1;ENABLE_PROFILER;UNITY_EDITOR + prompt + 4 + 0169 + + + pdbonly + true + Temp\bin\Release\ + TRACE + prompt + 4 + 0169 + + + + + + + C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEngine.dll + + + C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEditor.dll + + + + + + + + + + + + + + + + + + Assets\protobuf-net.dll + + + + + + diff --git a/clients/unity/simple_sample/Assembly-CSharp.csproj b/clients/unity/simple_sample/Assembly-CSharp.csproj new file mode 100644 index 000000000..0ad90a354 --- /dev/null +++ b/clients/unity/simple_sample/Assembly-CSharp.csproj @@ -0,0 +1,73 @@ + + + + Debug + AnyCPU + 10.0.20506 + 2.0 + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6} + Library + Properties + + Assembly-CSharp + v3.5 + 512 + + + true + full + false + Temp\bin\Debug\ + DEBUG;TRACE;UNITY_STANDALONE_WIN;ENABLE_MICROPHONE;ENABLE_IMAGEEFFECTS;ENABLE_WEBCAM;ENABLE_AUDIO_FMOD;UNITY_STANDALONE;ENABLE_NETWORK;ENABLE_MONO;ENABLE_PHYSICS;ENABLE_TERRAIN;ENABLE_CACHING;ENABLE_SUBSTANCE;ENABLE_GENERICS;ENABLE_CLOTH;ENABLE_MOVIES;ENABLE_AUDIO;ENABLE_WWW;ENABLE_SHADOWS;ENABLE_DUCK_TYPING;UNITY_4_1_5;UNITY_4_1;ENABLE_PROFILER;UNITY_EDITOR + prompt + 4 + 0169 + + + pdbonly + true + Temp\bin\Release\ + TRACE + prompt + 4 + 0169 + + + + + + + C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEngine.dll + + + C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEditor.dll + + + + + + + + + + + + + + + + + + Assets\protobuf-net.dll + + + + + + diff --git a/clients/unity/simple_sample/Assembly-CSharp.pidb b/clients/unity/simple_sample/Assembly-CSharp.pidb new file mode 100644 index 000000000..b50da3cb0 Binary files /dev/null and b/clients/unity/simple_sample/Assembly-CSharp.pidb differ diff --git a/clients/unity/simple_sample/Assets/ArenaMode.png b/clients/unity/simple_sample/Assets/ArenaMode.png new file mode 100644 index 000000000..57f5651c2 Binary files /dev/null and b/clients/unity/simple_sample/Assets/ArenaMode.png differ diff --git a/clients/unity/simple_sample/Assets/Bad.mat b/clients/unity/simple_sample/Assets/Bad.mat new file mode 100644 index 000000000..2a2164176 Binary files /dev/null and b/clients/unity/simple_sample/Assets/Bad.mat differ diff --git a/clients/unity/simple_sample/Assets/DFHack/isoworldremote.pb.cs b/clients/unity/simple_sample/Assets/DFHack/isoworldremote.pb.cs new file mode 100644 index 000000000..46c85e370 --- /dev/null +++ b/clients/unity/simple_sample/Assets/DFHack/isoworldremote.pb.cs @@ -0,0 +1,312 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from: isoworldremote.proto +namespace isoworldremote +{ + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EmbarkTileLayer")] + public partial class EmbarkTileLayer : global::ProtoBuf.IExtensible + { + public EmbarkTileLayer() {} + + private readonly global::System.Collections.Generic.List _mat_type_table = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(4, Name=@"mat_type_table", DataFormat = global::ProtoBuf.DataFormat.TwosComplement, Options = global::ProtoBuf.MemberSerializationOptions.Packed)] + public global::System.Collections.Generic.List mat_type_table + { + get { return _mat_type_table; } + } + + private readonly global::System.Collections.Generic.List _mat_subtype_table = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(5, Name=@"mat_subtype_table", DataFormat = global::ProtoBuf.DataFormat.TwosComplement, Options = global::ProtoBuf.MemberSerializationOptions.Packed)] + public global::System.Collections.Generic.List mat_subtype_table + { + get { return _mat_subtype_table; } + } + + private readonly global::System.Collections.Generic.List _tile_shape_table = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(6, Name=@"tile_shape_table", DataFormat = global::ProtoBuf.DataFormat.TwosComplement, Options = global::ProtoBuf.MemberSerializationOptions.Packed)] + public global::System.Collections.Generic.List tile_shape_table + { + get { return _tile_shape_table; } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EmbarkTile")] + public partial class EmbarkTile : global::ProtoBuf.IExtensible + { + public EmbarkTile() {} + + private int _world_x; + [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"world_x", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + public int world_x + { + get { return _world_x; } + set { _world_x = value; } + } + private int _world_y; + [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"world_y", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + public int world_y + { + get { return _world_y; } + set { _world_y = value; } + } + private int _world_z; + [global::ProtoBuf.ProtoMember(3, IsRequired = true, Name=@"world_z", DataFormat = global::ProtoBuf.DataFormat.ZigZag)] + public int world_z + { + get { return _world_z; } + set { _world_z = value; } + } + private readonly global::System.Collections.Generic.List _tile_layer = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(4, Name=@"tile_layer", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List tile_layer + { + get { return _tile_layer; } + } + + + private int _current_year = default(int); + [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"current_year", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int current_year + { + get { return _current_year; } + set { _current_year = value; } + } + + private int _current_season = default(int); + [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name=@"current_season", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int current_season + { + get { return _current_season; } + set { _current_season = value; } + } + + private bool _is_valid = default(bool); + [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name=@"is_valid", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(default(bool))] + public bool is_valid + { + get { return _is_valid; } + set { _is_valid = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"TileRequest")] + public partial class TileRequest : global::ProtoBuf.IExtensible + { + public TileRequest() {} + + + private int _want_x = default(int); + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"want_x", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int want_x + { + get { return _want_x; } + set { _want_x = value; } + } + + private int _want_y = default(int); + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"want_y", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int want_y + { + get { return _want_y; } + set { _want_y = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"MapRequest")] + public partial class MapRequest : global::ProtoBuf.IExtensible + { + public MapRequest() {} + + + private string _save_folder = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"save_folder", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string save_folder + { + get { return _save_folder; } + set { _save_folder = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"MapReply")] + public partial class MapReply : global::ProtoBuf.IExtensible + { + public MapReply() {} + + private bool _available; + [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"available", DataFormat = global::ProtoBuf.DataFormat.Default)] + public bool available + { + get { return _available; } + set { _available = value; } + } + + private int _region_x = default(int); + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"region_x", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int region_x + { + get { return _region_x; } + set { _region_x = value; } + } + + private int _region_y = default(int); + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"region_y", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int region_y + { + get { return _region_y; } + set { _region_y = value; } + } + + private int _region_size_x = default(int); + [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"region_size_x", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int region_size_x + { + get { return _region_size_x; } + set { _region_size_x = value; } + } + + private int _region_size_y = default(int); + [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"region_size_y", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int region_size_y + { + get { return _region_size_y; } + set { _region_size_y = value; } + } + + private int _current_year = default(int); + [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name=@"current_year", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int current_year + { + get { return _current_year; } + set { _current_year = value; } + } + + private int _current_season = default(int); + [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name=@"current_season", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int current_season + { + get { return _current_season; } + set { _current_season = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"RawNames")] + public partial class RawNames : global::ProtoBuf.IExtensible + { + public RawNames() {} + + private bool _available; + [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"available", DataFormat = global::ProtoBuf.DataFormat.Default)] + public bool available + { + get { return _available; } + set { _available = value; } + } + private readonly global::System.Collections.Generic.List _inorganic = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(2, Name=@"inorganic", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List inorganic + { + get { return _inorganic; } + } + + private readonly global::System.Collections.Generic.List _organic = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(3, Name=@"organic", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List organic + { + get { return _organic; } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::ProtoBuf.ProtoContract(Name=@"BasicMaterial")] + public enum BasicMaterial + { + + [global::ProtoBuf.ProtoEnum(Name=@"AIR", Value=0)] + AIR = 0, + + [global::ProtoBuf.ProtoEnum(Name=@"OTHER", Value=1)] + OTHER = 1, + + [global::ProtoBuf.ProtoEnum(Name=@"INORGANIC", Value=2)] + INORGANIC = 2, + + [global::ProtoBuf.ProtoEnum(Name=@"LIQUID", Value=3)] + LIQUID = 3, + + [global::ProtoBuf.ProtoEnum(Name=@"PLANT", Value=4)] + PLANT = 4, + + [global::ProtoBuf.ProtoEnum(Name=@"WOOD", Value=5)] + WOOD = 5 + } + + [global::ProtoBuf.ProtoContract(Name=@"LiquidType")] + public enum LiquidType + { + + [global::ProtoBuf.ProtoEnum(Name=@"ICE", Value=0)] + ICE = 0, + + [global::ProtoBuf.ProtoEnum(Name=@"WATER", Value=1)] + WATER = 1, + + [global::ProtoBuf.ProtoEnum(Name=@"MAGMA", Value=2)] + MAGMA = 2 + } + + [global::ProtoBuf.ProtoContract(Name=@"BasicShape")] + public enum BasicShape + { + + [global::ProtoBuf.ProtoEnum(Name=@"NONE", Value=0)] + NONE = 0, + + [global::ProtoBuf.ProtoEnum(Name=@"OPEN", Value=1)] + OPEN = 1, + + [global::ProtoBuf.ProtoEnum(Name=@"WALL", Value=3)] + WALL = 3, + + [global::ProtoBuf.ProtoEnum(Name=@"FLOOR", Value=4)] + FLOOR = 4 + } + +} \ No newline at end of file diff --git a/clients/unity/simple_sample/Assets/Editor/MapBlockEditor.cs b/clients/unity/simple_sample/Assets/Editor/MapBlockEditor.cs new file mode 100644 index 000000000..c4d5c6a1a --- /dev/null +++ b/clients/unity/simple_sample/Assets/Editor/MapBlockEditor.cs @@ -0,0 +1,104 @@ +using isoworldremote; +using UnityEditor; +using UnityEngine; +using System; + +[CustomEditor(typeof(MapBlock))] +[CanEditMultipleObjects] +public class MapBlockEditor : Editor +{ + static Color32 selectedColor = Color.white; + static BasicShape selectedShape = BasicShape.WALL; + + public override void OnInspectorGUI() + { + MapBlock[] targetBlocks = Array.ConvertAll(targets, element => (MapBlock)element); + if(targets.Length == 1) + EditorGUILayout.LabelField(targets.Length + " Map Block selected."); + else + EditorGUILayout.LabelField(targets.Length + " Map Blocks selected."); + + selectedColor = EditorGUILayout.ColorField("Material Color", selectedColor); + selectedShape = (BasicShape)EditorGUILayout.EnumPopup("Terrain Shape ", selectedShape); + EditorGUILayout.BeginVertical(); + DFHack.DFCoord2d tempCoord = new DFHack.DFCoord2d(); + for (int i = 0; i < 16; i++) + { + EditorGUILayout.BeginHorizontal(); + for (int j = 0; j < 16; j++) + { + tempCoord.x = j; + tempCoord.y = i; + Color currentColor = targetBlocks[0].GetColor(tempCoord); + for (int index = 1; index < targetBlocks.Length; index++) + { + if (currentColor != targetBlocks[index].GetColor(tempCoord)) + { + currentColor = Color.white; + break; + } + } + currentColor.a = 1.0f; + GUI.color = currentColor; + string buttonIcon = "\u00A0"; + BasicShape tile = targetBlocks[0].GetSingleTile(tempCoord); + for (int index = 1; index < targetBlocks.Length; index++) + { + if (tile != targetBlocks[index].GetSingleTile(tempCoord)) + { + tile = BasicShape.NONE; + break; + } + + } + switch (tile) + { + case BasicShape.WALL: + buttonIcon = "▓"; + break; + case BasicShape.FLOOR: + buttonIcon = "+"; + break; + case BasicShape.NONE: + buttonIcon = "?"; + break; + case BasicShape.OPEN: + buttonIcon = "\u00A0"; + break; + default: + buttonIcon = "?"; + break; + } + if (GUILayout.Button(buttonIcon)) + { + for (int index = 0; index < targetBlocks.Length; index++) + { + targetBlocks[index].SetSingleTile(tempCoord, selectedShape); + targetBlocks[index].SetColor(tempCoord, selectedColor); + targetBlocks[index].Regenerate(); + EditorUtility.SetDirty(targetBlocks[index]); + } + } + } + EditorGUILayout.EndHorizontal(); + } + EditorGUILayout.EndVertical(); + GUI.color = Color.white; + if (GUILayout.Button("Fill")) + { + for (int index = 0; index < targetBlocks.Length; index++) + { + for (int i = 0; i < 16; i++) + for (int j = 0; j < 16; j++) + { + DFHack.DFCoord2d here = new DFHack.DFCoord2d(j, i); + targetBlocks[index].SetSingleTile(here, selectedShape); + targetBlocks[index].SetColor(here, selectedColor); + + } + targetBlocks[index].Regenerate(); + EditorUtility.SetDirty(targetBlocks[index]); + } + } + } +} diff --git a/clients/unity/simple_sample/Assets/GameWindow.cs b/clients/unity/simple_sample/Assets/GameWindow.cs new file mode 100644 index 000000000..1760ca4de --- /dev/null +++ b/clients/unity/simple_sample/Assets/GameWindow.cs @@ -0,0 +1,57 @@ +using UnityEngine; +using System.Collections; + +public class GameWindow : MonoBehaviour +{ + public int viewPortWidth = 80; + public int viewPortHeight = 25; + public float verticalShift; + public float viewDistance = 5; + float n, f, r, l, t, b; + Matrix4x4 mat = new Matrix4x4(); + // Use this for initialization + void Start() + { + + } + + // Update is called once per frame + void Update() + { + float screenAspect = (float)Screen.width / (float)Screen.height; + float viewportAspect = (float)viewPortWidth / (float)viewPortHeight; + + float fraction = screenAspect / viewportAspect; + + float height = (viewPortHeight / 2.0f) / Mathf.Sin((camera.fov / 2) * Mathf.Deg2Rad); + transform.localPosition = new Vector3(0, height, -verticalShift); + + camera.nearClipPlane = height - 1.0001f; + camera.farClipPlane = height + viewDistance; + RenderSettings.fogStartDistance = camera.nearClipPlane; + RenderSettings.fogEndDistance = camera.farClipPlane; + if (fraction > 1.0f) //If the screen is wider than the DF Viewport + { + camera.rect = new Rect(0.5f - ((1.0f / fraction) / 2.0f), 0.0f, 1.0f / fraction, 1.0f); + } + else //If the DF Viewport is wider. + { + camera.rect = new Rect(0.0f, 0.5f - (fraction / 2.0f), 1.0f, fraction); + } + //make a custom camera matrix, rather than use the inbuilt one. + n = camera.nearClipPlane; + f = camera.farClipPlane; + r = viewPortWidth / 2.0f; + l = -viewPortWidth / 2.0f; + t = verticalShift + (viewPortHeight / 2.0f); + b = verticalShift - (viewPortHeight / 2.0f); + + + mat[0, 0] = 2 * n / (r - l); mat[1, 0] = 0; mat[2, 0] = 0; mat[3, 0] = 0; + mat[0, 1] = 0; mat[1, 1] = 2 * n / (t - b); mat[2, 1] = 0; mat[3, 1] = 0; + mat[0, 2] = (r + l) / (r - l); mat[1, 2] = (t + b) / (t - b); mat[2, 2] = -(f + n) / (f - n); mat[3, 2] = -1; + mat[0, 3] = 0; mat[1, 3] = 0; mat[2, 3] = -2 * f * n / (f - n); ; mat[3, 3] = 0; + + camera.projectionMatrix = mat; + } +} diff --git a/clients/unity/simple_sample/Assets/HUDFPS.cs b/clients/unity/simple_sample/Assets/HUDFPS.cs new file mode 100644 index 000000000..88fdd3755 --- /dev/null +++ b/clients/unity/simple_sample/Assets/HUDFPS.cs @@ -0,0 +1,79 @@ +using UnityEngine; +using System.Collections; + +[AddComponentMenu("Utilities/HUDFPS")] +public class HUDFPS : MonoBehaviour +{ + // Attach this to any object to make a frames/second indicator. + // + // It calculates frames/second over each updateInterval, + // so the display does not keep changing wildly. + // + // It is also fairly accurate at very low FPS counts (<10). + // We do this not by simply counting frames per interval, but + // by accumulating FPS for each frame. This way we end up with + // corstartRect overall FPS even if the interval renders something like + // 5.5 frames. + + public Rect startRect = new Rect(10, 10, 75, 50); // The rect the window is initially displayed at. + public bool updateColor = true; // Do you want the color to change if the FPS gets low + public bool allowDrag = true; // Do you want to allow the dragging of the FPS window + public float frequency = 0.5F; // The update frequency of the fps + public int nbDecimal = 1; // How many decimal do you want to display + + private float accum = 0f; // FPS accumulated over the interval + private int frames = 0; // Frames drawn over the interval + private Color color = Color.white; // The color of the GUI, depending of the FPS ( R < 10, Y < 30, G >= 30 ) + private string sFPS = ""; // The fps formatted into a string. + private GUIStyle style; // The style the text will be displayed at, based en defaultSkin.label. + + void Start() + { + StartCoroutine(FPS()); + } + + void Update() + { + accum += Time.timeScale / Time.deltaTime; + ++frames; + } + + IEnumerator FPS() + { + // Infinite loop executed every "frenquency" secondes. + while (true) + { + // Update the FPS + float fps = accum / frames; + sFPS = fps.ToString("f" + Mathf.Clamp(nbDecimal, 0, 10)); + + //Update the color + color = (fps >= 30) ? Color.green : ((fps > 10) ? Color.red : Color.yellow); + + accum = 0.0F; + frames = 0; + + yield return new WaitForSeconds(frequency); + } + } + + void OnGUI() + { + // Copy the default label skin, change the color and the alignement + if (style == null) + { + style = new GUIStyle(GUI.skin.label); + style.normal.textColor = Color.white; + style.alignment = TextAnchor.MiddleCenter; + } + + GUI.color = updateColor ? color : Color.white; + startRect = GUI.Window(0, startRect, DoMyWindow, ""); + } + + void DoMyWindow(int windowID) + { + GUI.Label(new Rect(0, 0, startRect.width, startRect.height), sFPS + " FPS", style); + if (allowDrag) GUI.DragWindow(new Rect(0, 0, Screen.width, Screen.height)); + } +} \ No newline at end of file diff --git a/clients/unity/simple_sample/Assets/MapGen/GameMap.cs b/clients/unity/simple_sample/Assets/MapGen/GameMap.cs new file mode 100644 index 000000000..8f7bc1ffc --- /dev/null +++ b/clients/unity/simple_sample/Assets/MapGen/GameMap.cs @@ -0,0 +1,15 @@ +using UnityEngine; +using System.Collections; + +public class GameMap : MonoBehaviour { + + // Use this for initialization + void Start () { + + } + + // Update is called once per frame + void Update () { + + } +} diff --git a/clients/unity/simple_sample/Assets/MapGen/MapBlock.cs b/clients/unity/simple_sample/Assets/MapGen/MapBlock.cs new file mode 100644 index 000000000..6d8f7014a --- /dev/null +++ b/clients/unity/simple_sample/Assets/MapGen/MapBlock.cs @@ -0,0 +1,262 @@ +using DFHack; +using System.Collections.Generic; +using UnityEngine; +using isoworldremote; + +public class MapBlock : MonoBehaviour +{ + public static float floorHeight = 0.1f; + DFCoord coordinates; + GameMap parent; + + [SerializeField] + BasicShape[] terrain = new BasicShape[256]; + [SerializeField] + Color32[] colors = new Color32[256]; + + List finalVertices = new List(); + List finalFaces = new List(); + List finalVertexColors = new List(); + List finalUVs = new List(); + + public enum Openness + { + air, + mixed, + stone + } + Openness openness; + + public void SetOpenness() + { + int air = 0; + int solid = 0; + for (int x = 0; x < 16; x++) + for (int y = 0; y < 16; y++) + { + if (terrain[y * 16 + x] == BasicShape.OPEN || terrain[y * 16 + x] == BasicShape.NONE) + air++; + else if (terrain[y * 16 + x] == BasicShape.WALL) + solid++; + } + if (air == 256) + openness = Openness.air; + else if (solid == 256) + openness = Openness.stone; + else openness = Openness.mixed; + } + + public Openness GetOpenness() + { + return openness; + } + + public Color32 GetColor(DFCoord2d position) + { + return colors[position.x + position.y * 16]; + } + + public void SetColor(DFCoord2d position, Color32 input) + { + colors[position.x + position.y * 16] = input; + } + + public void SetSingleTile(DFCoord2d position, BasicShape tile) + { + terrain[position.x + position.y * 16] = tile; + SetOpenness(); + } + + public BasicShape GetSingleTile(DFCoord2d position) + { + if (position.x >= 0 && position.x < 16 && position.y >= 0 && position.y < 16) + return terrain[position.x + position.y * 16]; + else + return BasicShape.NONE; + } + + public void Regenerate() + { + finalVertices.Clear(); + finalFaces.Clear(); + finalVertexColors.Clear(); + finalUVs.Clear(); + + if (openness == Openness.air) + { + } + else + { + for (int i = 0; i < 16; i++) + for (int j = 0; j < 16; j++) + { + DFCoord2d here = new DFCoord2d(i, j); + switch (GetSingleTile(here)) + { + case BasicShape.WALL: + AddTopFace(here, 1.0f); + break; + case BasicShape.FLOOR: + AddTopFace(here, floorHeight); + break; + } + AddSideFace(here, FaceDirection.North); + AddSideFace(here, FaceDirection.South); + AddSideFace(here, FaceDirection.East); + AddSideFace(here, FaceDirection.West); + } + } + MeshFilter mf = GetComponent(); + Mesh mesh = new Mesh(); + mf.mesh = mesh; + mesh.vertices = finalVertices.ToArray(); + mesh.uv = finalUVs.ToArray(); + mesh.colors32 = finalVertexColors.ToArray(); + mesh.triangles = finalFaces.ToArray(); + mesh.RecalculateBounds(); + mesh.RecalculateNormals(); + } + + enum FaceDirection + { + Up, + Down, + North, + South, + East, + West + } + + BasicShape GetRelativeTile(DFCoord2d position, FaceDirection direction) + { + DFCoord2d relativePosition = new DFCoord2d(position.x, position.y); + switch (direction) + { + case FaceDirection.North: + relativePosition.y--; + break; + case FaceDirection.South: + relativePosition.y++; + break; + case FaceDirection.East: + relativePosition.x++; + break; + case FaceDirection.West: + relativePosition.x--; + break; + } + return GetSingleTile(relativePosition); + } + + void AddSideFace(DFCoord2d position, FaceDirection direction) + { + float currentFloorHeight = -0.5f; + float adjacentFloorHeight = -0.5f; + switch (GetSingleTile(position)) + { + case BasicShape.WALL: + currentFloorHeight = 0.5f; + break; + case BasicShape.FLOOR: + currentFloorHeight = floorHeight - 0.5f; + break; + default: + break; + } + switch (GetRelativeTile(position, direction)) + { + case BasicShape.WALL: + adjacentFloorHeight = 0.5f; + break; + case BasicShape.FLOOR: + adjacentFloorHeight = floorHeight - 0.5f; + break; + default: + break; + } + if (currentFloorHeight <= adjacentFloorHeight) + return; + int startindex = finalVertices.Count; + int uvPos = 0; + switch (direction) + { + case FaceDirection.North: + finalVertices.Add(new Vector3(position.x + 0.5f, currentFloorHeight, -(position.y - 0.5f))); + finalVertices.Add(new Vector3(position.x - 0.5f, currentFloorHeight, -(position.y - 0.5f))); + finalVertices.Add(new Vector3(position.x + 0.5f, adjacentFloorHeight, -(position.y - 0.5f))); + finalVertices.Add(new Vector3(position.x - 0.5f, adjacentFloorHeight, -(position.y - 0.5f))); + uvPos = position.x; + break; + case FaceDirection.South: + finalVertices.Add(new Vector3(position.x - 0.5f, currentFloorHeight, -(position.y + 0.5f))); + finalVertices.Add(new Vector3(position.x + 0.5f, currentFloorHeight, -(position.y + 0.5f))); + finalVertices.Add(new Vector3(position.x - 0.5f, adjacentFloorHeight, -(position.y + 0.5f))); + finalVertices.Add(new Vector3(position.x + 0.5f, adjacentFloorHeight, -(position.y + 0.5f))); + uvPos = 16 - position.x; + break; + case FaceDirection.East: + finalVertices.Add(new Vector3(position.x + 0.5f, currentFloorHeight, -(position.y + 0.5f))); + finalVertices.Add(new Vector3(position.x + 0.5f, currentFloorHeight, -(position.y - 0.5f))); + finalVertices.Add(new Vector3(position.x + 0.5f, adjacentFloorHeight, -(position.y + 0.5f))); + finalVertices.Add(new Vector3(position.x + 0.5f, adjacentFloorHeight, -(position.y - 0.5f))); + uvPos = position.y; + break; + case FaceDirection.West: + finalVertices.Add(new Vector3(position.x - 0.5f, currentFloorHeight, -(position.y - 0.5f))); + finalVertices.Add(new Vector3(position.x - 0.5f, currentFloorHeight, -(position.y + 0.5f))); + finalVertices.Add(new Vector3(position.x - 0.5f, adjacentFloorHeight, -(position.y - 0.5f))); + finalVertices.Add(new Vector3(position.x - 0.5f, adjacentFloorHeight, -(position.y + 0.5f))); + uvPos = 16 - position.y; + break; + default: + break; + } + finalUVs.Add(new Vector2(-(float)(uvPos + 1) / 16.0f, -(float)(0) / 16.0f)); + finalUVs.Add(new Vector2(-(float)(uvPos) / 16.0f, -(float)(0) / 16.0f)); + finalUVs.Add(new Vector2(-(float)(uvPos + 1) / 16.0f, -(float)(0 + 1) / 16.0f)); + finalUVs.Add(new Vector2(-(float)(uvPos) / 16.0f, -(float)(0 + 1) / 16.0f)); + + finalVertexColors.Add(GetColor(position)); + finalVertexColors.Add(GetColor(position)); + finalVertexColors.Add(GetColor(position)); + finalVertexColors.Add(GetColor(position)); + + finalFaces.Add(startindex); + finalFaces.Add(startindex + 1); + finalFaces.Add(startindex + 2); + + finalFaces.Add(startindex + 1); + finalFaces.Add(startindex + 3); + finalFaces.Add(startindex + 2); + } + + void AddTopFace(DFCoord2d position, float height) + { + height -= 0.5f; + //Todo: Weld vertices that should be welded + //On second though, not with vertex colors there. + int startindex = finalVertices.Count; + finalVertices.Add(new Vector3(position.x - 0.5f, height, -(position.y - 0.5f))); + finalVertices.Add(new Vector3(position.x + 0.5f, height, -(position.y - 0.5f))); + finalVertices.Add(new Vector3(position.x - 0.5f, height, -(position.y + 0.5f))); + finalVertices.Add(new Vector3(position.x + 0.5f, height, -(position.y + 0.5f))); + + finalUVs.Add(new Vector2((float)(position.x) / 16.0f, -(float)(position.y) / 16.0f)); + finalUVs.Add(new Vector2((float)(position.x + 1) / 16.0f, -(float)(position.y) / 16.0f)); + finalUVs.Add(new Vector2((float)(position.x) / 16.0f, -(float)(position.y + 1) / 16.0f)); + finalUVs.Add(new Vector2((float)(position.x + 1) / 16.0f, -(float)(position.y + 1) / 16.0f)); + + finalVertexColors.Add(GetColor(position)); + finalVertexColors.Add(GetColor(position)); + finalVertexColors.Add(GetColor(position)); + finalVertexColors.Add(GetColor(position)); + + finalFaces.Add(startindex); + finalFaces.Add(startindex + 1); + finalFaces.Add(startindex + 2); + + finalFaces.Add(startindex + 1); + finalFaces.Add(startindex + 3); + finalFaces.Add(startindex + 2); + } +} diff --git a/clients/unity/simple_sample/Assets/RemoteClient/RemoteClient.cs b/clients/unity/simple_sample/Assets/RemoteClient/RemoteClient.cs index f23faa761..dd315310f 100644 --- a/clients/unity/simple_sample/Assets/RemoteClient/RemoteClient.cs +++ b/clients/unity/simple_sample/Assets/RemoteClient/RemoteClient.cs @@ -58,8 +58,8 @@ namespace DFHack class RPCHandshakeHeader { - public string magic; - public int version; + //public string magic; + //public int version; public static string REQUEST_MAGIC = "DFHack?\n"; public static string RESPONSE_MAGIC = "DFHack!\n"; @@ -93,6 +93,136 @@ namespace DFHack } } + // simple function to store + struct DFCoord + { + public int x, y, z; + //convert + UnityEngine.Vector3 ToVector3() + { + return new UnityEngine.Vector3(x + 0.5f, z + 0.5f, -y - 0.5f); + } + static DFCoord FromVector3(UnityEngine.Vector3 input) + { + DFCoord output = new DFCoord((int)input.x, (int)(-input.z), (int)input.y); + return output; + } + + DFCoord(int inx, int iny, int inz) + { + x = inx; + y = iny; + z = inz; + } + + public bool isValid() + { + return x != -30000; + } + public void clear() + { + x = y = z = -30000; + } + + public static bool operator <(DFCoord a, DFCoord b) + { + if (a.x != b.x) return (a.x < b.x); + if (a.y != b.y) return (a.y < b.y); + return a.z < b.z; + } + public static bool operator >(DFCoord a, DFCoord b) + { + if (a.x != b.x) return (a.x > b.x); + if (a.y != b.y) return (a.y > b.y); + return a.z > b.z; + } + public static DFCoord operator +(DFCoord a, DFCoord b) + { + return new DFCoord(a.x + b.x, a.y + b.y, a.z + b.z); + } + public static DFCoord operator -(DFCoord a, DFCoord b) + { + return new DFCoord(a.x - b.x, a.y - b.y, a.z - b.z); + } + public static DFCoord operator /(DFCoord a, int number) + { + return new DFCoord((a.x < 0 ? a.x - number : a.x) / number, (a.y < 0 ? a.y - number : a.y) / number, a.z); + } + public static DFCoord operator *(DFCoord a, int number) + { + return new DFCoord(a.x * number, a.y * number, a.z); + } + public static DFCoord operator %(DFCoord a, int number) + { + return new DFCoord((a.x + number) % number, (a.y + number) % number, a.z); + } + public static DFCoord operator -(DFCoord a, int number) + { + return new DFCoord(a.x, a.y, a.z - number); + } + public static DFCoord operator +(DFCoord a, int number) + { + return new DFCoord(a.x, a.y, a.z + number); + } + } + public struct DFCoord2d + { + public int x; + public int y; + + public DFCoord2d(int _x, int _y) + { + x = _x; + y = _y; + } + + public bool isValid() + { + return x != -30000; + } + public void clear() + { + x = y = -30000; + } + + public static bool operator <(DFCoord2d a, DFCoord2d b) + { + if (a.x != b.x) return (a.x < b.x); + return a.y < b.y; + } + public static bool operator >(DFCoord2d a, DFCoord2d b) + { + if (a.x != b.x) return (a.x > b.x); + return a.y > b.y; + } + + public static DFCoord2d operator +(DFCoord2d a, DFCoord2d b) + { + return new DFCoord2d(a.x + b.x, a.y + b.y); + } + public static DFCoord2d operator -(DFCoord2d a, DFCoord2d b) + { + return new DFCoord2d(a.x - b.x, a.y - b.y); + } + + + public static DFCoord2d operator /(DFCoord2d a, int number) + { + return new DFCoord2d((a.x < 0 ? a.x - number : a.x) / number, (a.y < 0 ? a.y - number : a.y) / number); + } + public static DFCoord2d operator *(DFCoord2d a, int number) + { + return new DFCoord2d(a.x * number, a.y * number); + } + public static DFCoord2d operator %(DFCoord2d a, int number) + { + return new DFCoord2d((a.x + number) % number, (a.y + number) % number); + } + public static DFCoord2d operator &(DFCoord2d a, int number) + { + return new DFCoord2d(a.x & number, a.y & number); + } + } /* Protocol description: * * 1. Handshake @@ -323,7 +453,7 @@ namespace DFHack this.proto, this.name, header.size); return command_result.CR_LINK_FAILURE; } - + byte[] buf = new byte[header.size]; if (!RemoteClient.readFullBuffer(p_client.socket, buf, header.size)) @@ -361,7 +491,6 @@ namespace DFHack break; } } - return command_result.CR_OK; } @@ -671,7 +800,6 @@ namespace DFHack if (!suspend_ready) { suspend_ready = true; - suspend_call.bind(this, "CoreSuspend"); resume_call.bind(this, "CoreResume"); } @@ -701,7 +829,8 @@ namespace DFHack RemoteFunction runcmd_call; bool suspend_ready; - RemoteFunction suspend_call, resume_call; + RemoteFunction suspend_call = new RemoteFunction(); + RemoteFunction resume_call = new RemoteFunction(); } class RemoteSuspender diff --git a/clients/unity/simple_sample/Assets/RemoteClient/Tools.cs b/clients/unity/simple_sample/Assets/RemoteClient/Tools.cs index bc16a1221..d39110ba9 100644 --- a/clients/unity/simple_sample/Assets/RemoteClient/Tools.cs +++ b/clients/unity/simple_sample/Assets/RemoteClient/Tools.cs @@ -468,7 +468,7 @@ namespace AT.MIN #endregion #region s - string case 's': // string - string t = "{0" + ( fieldLength != int.MinValue ? "," + ( flagLeft2Right ? "-" : String.Empty ) + fieldLength.ToString() : String.Empty ) + ":s}"; + //string t = "{0" + ( fieldLength != int.MinValue ? "," + ( flagLeft2Right ? "-" : String.Empty ) + fieldLength.ToString() : String.Empty ) + ":s}"; w = o.ToString(); if ( fieldPrecision >= 0 ) w = w.Substring( 0, fieldPrecision ); diff --git a/clients/unity/simple_sample/Assets/Start.unity b/clients/unity/simple_sample/Assets/Start.unity index b115f6ec5..71c631052 100644 Binary files a/clients/unity/simple_sample/Assets/Start.unity and b/clients/unity/simple_sample/Assets/Start.unity differ diff --git a/clients/unity/simple_sample/Assets/TestScript.cs b/clients/unity/simple_sample/Assets/TestScript.cs index 27b7186ee..f6568c93d 100644 --- a/clients/unity/simple_sample/Assets/TestScript.cs +++ b/clients/unity/simple_sample/Assets/TestScript.cs @@ -6,12 +6,12 @@ public class TestScript : MonoBehaviour { RemoteClient remoteClient = new RemoteClient(); // Use this for initialization void Start () { - if (!remoteClient.connect()) - Debug.LogError("Could not connect"); - else - { - remoteClient.run_command("ls", new List()); - } + if (!remoteClient.connect()) + Debug.LogError("Could not connect"); + else + { + remoteClient.run_command("ls", new List()); + } } // Update is called once per frame diff --git a/clients/unity/simple_sample/Assets/UV Test.mat b/clients/unity/simple_sample/Assets/UV Test.mat new file mode 100644 index 000000000..4dd4bad68 Binary files /dev/null and b/clients/unity/simple_sample/Assets/UV Test.mat differ diff --git a/clients/unity/simple_sample/Assets/UVTest.png b/clients/unity/simple_sample/Assets/UVTest.png new file mode 100644 index 000000000..2401acdd7 Binary files /dev/null and b/clients/unity/simple_sample/Assets/UVTest.png differ diff --git a/clients/unity/simple_sample/Assets/VertexColor.shader b/clients/unity/simple_sample/Assets/VertexColor.shader new file mode 100644 index 000000000..84ecf2413 --- /dev/null +++ b/clients/unity/simple_sample/Assets/VertexColor.shader @@ -0,0 +1,33 @@ +// Upgrade NOTE: replaced 'SeperateSpecular' with 'SeparateSpecular' + +Shader " Vertex Colored" { +Properties { + _Color ("Main Color", Color) = (1,1,1,1) + _SpecColor ("Spec Color", Color) = (1,1,1,1) + _Emission ("Emmisive Color", Color) = (0,0,0,0) + _Shininess ("Shininess", Range (0.01, 1)) = 0.7 + _MainTex ("Base (RGB)", 2D) = "white" {} +} + +SubShader { + Pass { + Material { + Shininess [_Shininess] + Specular [_SpecColor] + Emission [_Emission] + } + ColorMaterial AmbientAndDiffuse + Lighting On + SeparateSpecular On + SetTexture [_MainTex] { + Combine texture * primary, texture * primary + } + SetTexture [_MainTex] { + constantColor [_Color] + Combine previous * constant DOUBLE, previous * constant + } + } +} + +Fallback " VertexLit", 1 +} \ No newline at end of file diff --git a/clients/unity/simple_sample/Assets/grid.png b/clients/unity/simple_sample/Assets/grid.png new file mode 100644 index 000000000..4fa59d48d Binary files /dev/null and b/clients/unity/simple_sample/Assets/grid.png differ diff --git a/clients/unity/simple_sample/Library/AnnotationManager b/clients/unity/simple_sample/Library/AnnotationManager index 2d1e3612d..15eabbb4e 100644 Binary files a/clients/unity/simple_sample/Library/AnnotationManager and b/clients/unity/simple_sample/Library/AnnotationManager differ diff --git a/clients/unity/simple_sample/Library/AssetVersioning.db b/clients/unity/simple_sample/Library/AssetVersioning.db new file mode 100644 index 000000000..7c4c8d349 Binary files /dev/null and b/clients/unity/simple_sample/Library/AssetVersioning.db differ diff --git a/clients/unity/simple_sample/Library/EditorUserBuildSettings.asset b/clients/unity/simple_sample/Library/EditorUserBuildSettings.asset index 199deaca3..c7036fef2 100644 Binary files a/clients/unity/simple_sample/Library/EditorUserBuildSettings.asset and b/clients/unity/simple_sample/Library/EditorUserBuildSettings.asset differ diff --git a/clients/unity/simple_sample/Library/InspectorExpandedItems.asset b/clients/unity/simple_sample/Library/InspectorExpandedItems.asset index 668a1f364..bd6ab109c 100644 Binary files a/clients/unity/simple_sample/Library/InspectorExpandedItems.asset and b/clients/unity/simple_sample/Library/InspectorExpandedItems.asset differ diff --git a/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll b/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll new file mode 100644 index 000000000..00da08664 Binary files /dev/null and b/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll differ diff --git a/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll.mdb b/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll.mdb new file mode 100644 index 000000000..6efbc8d17 Binary files /dev/null and b/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll.mdb differ diff --git a/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp.dll b/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp.dll index 6f0a04c80..9a5761e46 100644 Binary files a/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp.dll and b/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp.dll differ diff --git a/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp.dll.mdb b/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp.dll.mdb index e4e9c13c8..2c961426f 100644 Binary files a/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp.dll.mdb and b/clients/unity/simple_sample/Library/ScriptAssemblies/Assembly-CSharp.dll.mdb differ diff --git a/clients/unity/simple_sample/Library/ScriptMapper b/clients/unity/simple_sample/Library/ScriptMapper index 50ec33bfc..6ed5d0dae 100644 Binary files a/clients/unity/simple_sample/Library/ScriptMapper and b/clients/unity/simple_sample/Library/ScriptMapper differ diff --git a/clients/unity/simple_sample/Library/assetDatabase3 b/clients/unity/simple_sample/Library/assetDatabase3 index 36cc0c23a..79a8b56cc 100644 Binary files a/clients/unity/simple_sample/Library/assetDatabase3 and b/clients/unity/simple_sample/Library/assetDatabase3 differ diff --git a/clients/unity/simple_sample/Library/guidmapper b/clients/unity/simple_sample/Library/guidmapper index ba300d255..65671f8fe 100644 Binary files a/clients/unity/simple_sample/Library/guidmapper and b/clients/unity/simple_sample/Library/guidmapper differ diff --git a/clients/unity/simple_sample/Library/metadata/2f/2fb12edbd5d56cb4c99ccf773df52492 b/clients/unity/simple_sample/Library/metadata/2f/2fb12edbd5d56cb4c99ccf773df52492 new file mode 100644 index 000000000..2641a4ccb Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/2f/2fb12edbd5d56cb4c99ccf773df52492 differ diff --git a/clients/unity/simple_sample/Library/metadata/36/364a32494f42e934bae30ff47badc45a b/clients/unity/simple_sample/Library/metadata/36/364a32494f42e934bae30ff47badc45a index c3fc1fc87..cf4a6fba4 100644 Binary files a/clients/unity/simple_sample/Library/metadata/36/364a32494f42e934bae30ff47badc45a and b/clients/unity/simple_sample/Library/metadata/36/364a32494f42e934bae30ff47badc45a differ diff --git a/clients/unity/simple_sample/Library/metadata/49/49176d7675a998345966feca21555311 b/clients/unity/simple_sample/Library/metadata/49/49176d7675a998345966feca21555311 new file mode 100644 index 000000000..35b1bc928 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/49/49176d7675a998345966feca21555311 differ diff --git a/clients/unity/simple_sample/Library/metadata/6e/6e1305e96d61f204f8229e0a0cb7f8c1 b/clients/unity/simple_sample/Library/metadata/6e/6e1305e96d61f204f8229e0a0cb7f8c1 new file mode 100644 index 000000000..a5f934d8f Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/6e/6e1305e96d61f204f8229e0a0cb7f8c1 differ diff --git a/clients/unity/simple_sample/Library/metadata/73/73b3c5754a89e43409dcf23866eb0484 b/clients/unity/simple_sample/Library/metadata/73/73b3c5754a89e43409dcf23866eb0484 index 201f2fb77..b2c18736e 100644 Binary files a/clients/unity/simple_sample/Library/metadata/73/73b3c5754a89e43409dcf23866eb0484 and b/clients/unity/simple_sample/Library/metadata/73/73b3c5754a89e43409dcf23866eb0484 differ diff --git a/clients/unity/simple_sample/Library/metadata/89/89b0f8fea628a544a9855c108fbe35dc b/clients/unity/simple_sample/Library/metadata/89/89b0f8fea628a544a9855c108fbe35dc new file mode 100644 index 000000000..27246cfcd Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/89/89b0f8fea628a544a9855c108fbe35dc differ diff --git a/clients/unity/simple_sample/Library/metadata/8d/8d11b6dacbf85e24ead2e95cafce40fd b/clients/unity/simple_sample/Library/metadata/8d/8d11b6dacbf85e24ead2e95cafce40fd new file mode 100644 index 000000000..e5cccaf31 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/8d/8d11b6dacbf85e24ead2e95cafce40fd differ diff --git a/clients/unity/simple_sample/Library/metadata/9f/9fd804cbd377fd445805d7e5eea47877 b/clients/unity/simple_sample/Library/metadata/9f/9fd804cbd377fd445805d7e5eea47877 new file mode 100644 index 000000000..99a3a6de7 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/9f/9fd804cbd377fd445805d7e5eea47877 differ diff --git a/clients/unity/simple_sample/Library/metadata/aa/aa92a0e1eefe93b40bec1e868142e050 b/clients/unity/simple_sample/Library/metadata/aa/aa92a0e1eefe93b40bec1e868142e050 new file mode 100644 index 000000000..f8e09bbdf Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/aa/aa92a0e1eefe93b40bec1e868142e050 differ diff --git a/clients/unity/simple_sample/Library/metadata/b5/b54fa8be8a38a9f4e8f53b4399135e30 b/clients/unity/simple_sample/Library/metadata/b5/b54fa8be8a38a9f4e8f53b4399135e30 new file mode 100644 index 000000000..e286f442f Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/b5/b54fa8be8a38a9f4e8f53b4399135e30 differ diff --git a/clients/unity/simple_sample/Library/metadata/c7/c7e34aa4b4a41d1478337506ce720e18 b/clients/unity/simple_sample/Library/metadata/c7/c7e34aa4b4a41d1478337506ce720e18 new file mode 100644 index 000000000..8f8109e77 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/c7/c7e34aa4b4a41d1478337506ce720e18 differ diff --git a/clients/unity/simple_sample/Library/metadata/d4/d420514133a0fbd4990025b3e1dac764 b/clients/unity/simple_sample/Library/metadata/d4/d420514133a0fbd4990025b3e1dac764 new file mode 100644 index 000000000..da99172e2 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/d4/d420514133a0fbd4990025b3e1dac764 differ diff --git a/clients/unity/simple_sample/Library/metadata/e8/e85d437f881938247992e492006de2df b/clients/unity/simple_sample/Library/metadata/e8/e85d437f881938247992e492006de2df index ffcd58bc3..5790d0184 100644 Binary files a/clients/unity/simple_sample/Library/metadata/e8/e85d437f881938247992e492006de2df and b/clients/unity/simple_sample/Library/metadata/e8/e85d437f881938247992e492006de2df differ diff --git a/clients/unity/simple_sample/Library/metadata/f9/f9efc5e870ab48243b2f508f00b7a740 b/clients/unity/simple_sample/Library/metadata/f9/f9efc5e870ab48243b2f508f00b7a740 new file mode 100644 index 000000000..341b7bf6a Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/f9/f9efc5e870ab48243b2f508f00b7a740 differ diff --git a/clients/unity/simple_sample/Library/metadata/fc/fcc33854b846d0e4aa14f8afb74e173b b/clients/unity/simple_sample/Library/metadata/fc/fcc33854b846d0e4aa14f8afb74e173b new file mode 100644 index 000000000..df99f8b56 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/fc/fcc33854b846d0e4aa14f8afb74e173b differ diff --git a/clients/unity/simple_sample/Library/metadata/fd/fd22bd16464e8784cbd88809cdc697a3 b/clients/unity/simple_sample/Library/metadata/fd/fd22bd16464e8784cbd88809cdc697a3 new file mode 100644 index 000000000..8a2545887 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/fd/fd22bd16464e8784cbd88809cdc697a3 differ diff --git a/clients/unity/simple_sample/Library/metadata/ff/ff990239cc3bc4a45a362f932463d378 b/clients/unity/simple_sample/Library/metadata/ff/ff990239cc3bc4a45a362f932463d378 new file mode 100644 index 000000000..2a13f55f7 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/ff/ff990239cc3bc4a45a362f932463d378 differ diff --git a/clients/unity/simple_sample/Library/metadata/ff/ffba25341839373409b0cd511e9b1761 b/clients/unity/simple_sample/Library/metadata/ff/ffba25341839373409b0cd511e9b1761 new file mode 100644 index 000000000..cdd44b727 Binary files /dev/null and b/clients/unity/simple_sample/Library/metadata/ff/ffba25341839373409b0cd511e9b1761 differ diff --git a/clients/unity/simple_sample/simple_sample-csharp.sln b/clients/unity/simple_sample/simple_sample-csharp.sln new file mode 100644 index 000000000..e72b09594 --- /dev/null +++ b/clients/unity/simple_sample/simple_sample-csharp.sln @@ -0,0 +1,45 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2008 + +Project("{277888DF-B633-98F9-AF58-18CFF25BE876}") = "simple_sample", "Assembly-CSharp-vs.csproj", "{AE3AFC6C-A022-3549-CF6C-7716EC410CE6}" +EndProject +Project("{277888DF-B633-98F9-AF58-18CFF25BE876}") = "simple_sample", "Assembly-CSharp-Editor-vs.csproj", "{AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6}.Release|Any CPU.Build.0 = Release|Any CPU + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = Assembly-CSharp.csproj + Policies = $0 + $0.TextStylePolicy = $1 + $1.inheritsSet = null + $1.scope = text/x-csharp + $0.CSharpFormattingPolicy = $2 + $2.inheritsSet = Mono + $2.inheritsScope = text/x-csharp + $2.scope = text/x-csharp + $0.TextStylePolicy = $3 + $3.FileWidth = 120 + $3.TabWidth = 4 + $3.EolMarker = Unix + $3.inheritsSet = Mono + $3.inheritsScope = text/plain + $3.scope = text/plain + EndGlobalSection + +EndGlobal diff --git a/clients/unity/simple_sample/simple_sample.sln b/clients/unity/simple_sample/simple_sample.sln new file mode 100644 index 000000000..98aaf602e --- /dev/null +++ b/clients/unity/simple_sample/simple_sample.sln @@ -0,0 +1,45 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2008 + +Project("{277888DF-B633-98F9-AF58-18CFF25BE876}") = "simple_sample", "Assembly-CSharp.csproj", "{AE3AFC6C-A022-3549-CF6C-7716EC410CE6}" +EndProject +Project("{277888DF-B633-98F9-AF58-18CFF25BE876}") = "simple_sample", "Assembly-CSharp-Editor.csproj", "{AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE3AFC6C-A022-3549-CF6C-7716EC410CE6}.Release|Any CPU.Build.0 = Release|Any CPU + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AEF4C46B-71B7-6E0B-EF7E-154F411C7DF8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = Assembly-CSharp.csproj + Policies = $0 + $0.TextStylePolicy = $1 + $1.inheritsSet = null + $1.scope = text/x-csharp + $0.CSharpFormattingPolicy = $2 + $2.inheritsSet = Mono + $2.inheritsScope = text/x-csharp + $2.scope = text/x-csharp + $0.TextStylePolicy = $3 + $3.FileWidth = 120 + $3.TabWidth = 4 + $3.EolMarker = Unix + $3.inheritsSet = Mono + $3.inheritsScope = text/plain + $3.scope = text/plain + EndGlobalSection + +EndGlobal diff --git a/clients/unity/simple_sample/simple_sample.userprefs b/clients/unity/simple_sample/simple_sample.userprefs new file mode 100644 index 000000000..8a063dbf7 --- /dev/null +++ b/clients/unity/simple_sample/simple_sample.userprefs @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/plugins/proto/isoworldremote.proto b/plugins/proto/isoworldremote.proto index 68a3b24b5..295cd03f1 100644 --- a/plugins/proto/isoworldremote.proto +++ b/plugins/proto/isoworldremote.proto @@ -18,9 +18,26 @@ enum LiquidType { MAGMA = 2; } +enum BasicShape { + NONE = 0; + OPEN = 1; + WALL = 3; + FLOOR = 4; + RAMP_UP = 5; + RAMP_DOWN = 6; +} + +message ColorDefinition { + required int32 red = 1; + required int32 green = 2; + required int32 blue = 3; +} + message EmbarkTileLayer { repeated BasicMaterial mat_type_table = 4 [packed=true]; repeated int32 mat_subtype_table = 5 [packed=true]; + repeated BasicShape tile_shape_table = 6 [packed=true]; + repeated ColorDefinition tile_color_table = 7 [packed=true]; } message EmbarkTile { diff --git a/plugins/stonesense b/plugins/stonesense index dbcc80ff3..25eae7ef6 160000 --- a/plugins/stonesense +++ b/plugins/stonesense @@ -1 +1 @@ -Subproject commit dbcc80ff364978e9e5fec13e425b0af84c403f10 +Subproject commit 25eae7ef6f19a24b7fc7e0d72ed45cbef7ebe092