提交 f3632a78 编写于 作者: T tanghai

删除AStar,推荐用recastnavigation代替

上级 8b4d081d

using PF;
using UnityEngine;
using UnityEngine;
namespace ET
{
......
using System;
using PF;
using UnityEngine;
namespace ET
......
using System.Collections.Generic;
using System.Threading;
using PF;
using UnityEngine;
namespace ET
......@@ -23,7 +20,7 @@ namespace ET
self.BroadcastPath(path, i, 3);
}
Vector3 v3 = path[i];
await self.Parent.GetComponent<MoveComponent>().MoveToAsync(v3, self.CancellationToken);
//await self.Parent.GetComponent<MoveComponent>().MoveToAsync(v3, self.CancellationToken);
}
}
......@@ -37,17 +34,6 @@ namespace ET
self.Target = target;
Unit unit = self.GetParent<Unit>();
PathfindingComponent pathfindingComponent = self.Domain.GetComponent<PathfindingComponent>();
self.ABPath = EntityFactory.Create<ABPathWrap, Vector3, Vector3>(self.Domain, unit.Position, new Vector3(target.x, target.y, target.z));
pathfindingComponent.Search(self.ABPath);
Log.Debug($"find result: {self.ABPath.Result.ListToString()}");
self.CancellationToken?.Cancel();
self.CancellationToken = new ETCancellationToken();
await self.MoveAsync(self.ABPath.Result);
self.CancellationToken = null;
}
// 从index找接下来3个点,广播
......@@ -60,18 +46,8 @@ namespace ET
m2CPathfindingResult.Y = unitPos.y;
m2CPathfindingResult.Z = unitPos.z;
m2CPathfindingResult.Id = unit.Id;
for (int i = 0; i < offset; ++i)
{
if (index + i >= self.ABPath.Result.Count)
{
break;
}
Vector3 v = self.ABPath.Result[index + i];
m2CPathfindingResult.Xs.Add(v.x);
m2CPathfindingResult.Ys.Add(v.y);
m2CPathfindingResult.Zs.Add(v.z);
}
MessageHelper.Broadcast(unit, m2CPathfindingResult);
}
}
......
......@@ -29,7 +29,6 @@ namespace ET
break;
case SceneType.Map:
scene.AddComponent<UnitComponent>();
scene.AddComponent<PathfindingComponent>();
break;
case SceneType.Location:
scene.AddComponent<LocationComponent>();
......
using PF;
using UnityEngine;
using UnityEngine;
namespace ET
{
......
using System.Collections.Generic;
using System.Threading;
using PF;
using UnityEngine;
namespace ET
......@@ -8,35 +5,5 @@ namespace ET
public class UnitPathComponent: Entity
{
public Vector3 Target;
private ABPathWrap abPath;
public List<Vector3> Path;
public ETCancellationToken CancellationToken;
public ABPathWrap ABPath
{
get
{
return this.abPath;
}
set
{
this.abPath?.Dispose();
this.abPath = value;
}
}
public override void Dispose()
{
if (this.IsDisposed)
{
return;
}
base.Dispose();
this.abPath?.Dispose();
}
}
}
\ No newline at end of file
using System.Collections.Generic;
using PF;
using UnityEngine;
namespace ET
{
public class ABPathAwakeSystem : AwakeSystem<ABPathWrap, Vector3, Vector3>
{
public override void Awake(ABPathWrap self, Vector3 start, Vector3 end)
{
self.Awake(start, end);
}
}
public class ABPathWrap: Entity
{
public ABPath Path { get; private set; }
public void Awake(Vector3 start, Vector3 end)
{
this.Path = ABPath.Construct(start, end);
this.Path.Claim(this);
}
public List<Vector3> Result
{
get
{
return this.Path.vectorPath;
}
}
public override void Dispose()
{
if (this.IsDisposed)
{
return;
}
base.Dispose();
this.Path.Release(this);
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using PF;
using Guid = PF.Guid;
namespace ET
{
public static class DeserializeHelper
{
public static NavGraph[] Load(string filePath)
{
byte[] bytes = AstarSerializer.LoadFromFile(filePath);
AstarSerializer sr = new AstarSerializer();
if (!sr.OpenDeserialize(bytes))
{
throw new Exception("Invalid data file (cannot read zip).\nThe data is either corrupt or it was saved using a 3.0.x or earlier version of the system");
}
var gr = new List<NavGraph>();
// Set an offset so that the deserializer will load
// the graphs with the correct graph indexes
sr.SetGraphIndexOffset(gr.Count);
gr.AddRange(sr.DeserializeGraphs());
NavGraph[] graphs = gr.ToArray();
sr.DeserializeEditorSettingsCompatibility();
sr.DeserializeExtraInfo();
//Assign correct graph indices.
for (int i = 0; i < graphs.Length; i++)
{
if (graphs[i] == null)
{
continue;
}
int i1 = i;
graphs[i].GetNodes(node => node.GraphIndex = (uint)i1);
}
for (int i = 0; i < graphs.Length; i++)
{
for (int j = i+1; j < graphs.Length; j++)
{
if (graphs[i] != null && graphs[j] != null && graphs[i].guid == graphs[j].guid)
{
graphs[i].guid = Guid.NewGuid();
break;
}
}
}
sr.PostDeserialization();
sr.CloseDeserialize();
return graphs;
}
}
}
\ No newline at end of file
using System.Collections.Generic;
using PF;
using UnityEngine;
namespace ET
{
public static class PathModifyHelper
{
public static void StartEndModify(PF.ABPath abPath)
{
if (abPath.vectorPath.Count == 1)
{
abPath.vectorPath.Add(abPath.vectorPath[0]);
}
abPath.vectorPath[0] = abPath.startPoint;
abPath.vectorPath[abPath.vectorPath.Count - 1] = abPath.endPoint;
}
public static void FunnelModify (Path p) {
if (p.path == null || p.path.Count == 0 || p.vectorPath == null || p.vectorPath.Count == 0) {
return;
}
List<Vector3> funnelPath = ListPool<Vector3>.Claim();
// Split the path into different parts (separated by custom links)
// and run the funnel algorithm on each of them in turn
var parts = Funnel.SplitIntoParts(p);
if (parts.Count == 0) {
// As a really special case, it might happen that the path contained only a single node
// and that node was part of a custom link (e.g added by the NodeLink2 component).
// In that case the SplitIntoParts method will not know what to do with it because it is
// neither a link (as only 1 of the 2 nodes of the link was part of the path) nor a normal
// path part. So it will skip it. This will cause it to return an empty list.
// In that case we want to simply keep the original path, which is just a single point.
return;
}
for (int i = 0; i < parts.Count; i++) {
var part = parts[i];
if (!part.isLink) {
var portals = Funnel.ConstructFunnelPortals(p.path, part);
var result = Funnel.Calculate(portals, true, false);
funnelPath.AddRange(result);
ListPool<Vector3>.Release(ref portals.left);
ListPool<Vector3>.Release(ref portals.right);
ListPool<Vector3>.Release(ref result);
} else {
// non-link parts will add the start/end points for the adjacent parts.
// So if there is no non-link part before this one, then we need to add the start point of the link
// and if there is no non-link part after this one, then we need to add the end point.
if (i == 0 || parts[i-1].isLink) {
funnelPath.Add(part.startPoint);
}
if (i == parts.Count - 1 || parts[i+1].isLink) {
funnelPath.Add(part.endPoint);
}
}
}
ListPool<Funnel.PathPart>.Release(ref parts);
// Pool the previous vectorPath
ListPool<Vector3>.Release(ref p.vectorPath);
p.vectorPath = funnelPath;
}
}
}
\ No newline at end of file
using PF;
namespace ET
{
public class PathfindingComponentAwakeSystem : AwakeSystem<PathfindingComponent>
{
public override void Awake(PathfindingComponent self)
{
self.PathReturnQueue = new PathReturnQueue(self);
self.PathProcessor = new PathProcessor(self.PathReturnQueue, 1, false);
// 读取寻路配置
self.AStarConfig = new AStarConfig(); //MongoHelper.FromJson<AStarConfig>(File.ReadAllText("./pathfinding.config"));
self.AStarConfig.pathProcessor = self.PathProcessor;
// 读取地图数据
self.AStarConfig.graphs = DeserializeHelper.Load("../Config/graph.bytes");
}
}
public class PathfindingComponent: Entity
{
public PathReturnQueue PathReturnQueue;
public PathProcessor PathProcessor;
public AStarConfig AStarConfig;
public bool Search(ABPathWrap path)
{
this.PathProcessor.queue.Push(path.Path);
while (this.PathProcessor.CalculatePaths().MoveNext())
{
if (path.Path.CompleteState != PathCompleteState.NotCalculated)
{
break;
}
}
if (path.Path.CompleteState != PathCompleteState.Complete)
{
return false;
}
PathModifyHelper.StartEndModify(path.Path);
PathModifyHelper.FunnelModify(path.Path);
return true;
}
}
}
\ No newline at end of file
......@@ -264,135 +264,6 @@
<Compile Include="..\..\Unity\Assets\Model\Module\Numeric\NumericWatcherComponent.cs">
<Link>Module\Numeric\NumericWatcherComponent.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\ArrayPool.cs">
<Link>Module\Pathfinding\Recast\ArrayPool.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\AstarChecksum.cs">
<Link>Module\Pathfinding\Recast\AstarChecksum.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\AStarConfig.cs">
<Link>Module\Pathfinding\Recast\AStarConfig.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\AstarDeserializer.cs">
<Link>Module\Pathfinding\Recast\AstarDeserializer.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\AstarMath.cs">
<Link>Module\Pathfinding\Recast\AstarMath.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\AstarMemory.cs">
<Link>Module\Pathfinding\Recast\AstarMemory.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\BBTree.cs">
<Link>Module\Pathfinding\Recast\BBTree.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\BinaryHeap.cs">
<Link>Module\Pathfinding\Recast\BinaryHeap.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\EuclideanEmbedding.cs">
<Link>Module\Pathfinding\Recast\EuclideanEmbedding.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Funnel.cs">
<Link>Module\Pathfinding\Recast\Funnel.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\GraphNode.cs">
<Link>Module\Pathfinding\Recast\GraphNode.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\GraphTransform.cs">
<Link>Module\Pathfinding\Recast\GraphTransform.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Guid.cs">
<Link>Module\Pathfinding\Recast\Guid.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\INavmesh.cs">
<Link>Module\Pathfinding\Recast\INavmesh.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Int3.cs">
<Link>Module\Pathfinding\Recast\Int3.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\IntRect.cs">
<Link>Module\Pathfinding\Recast\IntRect.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\ListPool.cs">
<Link>Module\Pathfinding\Recast\ListPool.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\NavGraph.cs">
<Link>Module\Pathfinding\Recast\NavGraph.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\NavmeshBase.cs">
<Link>Module\Pathfinding\Recast\NavmeshBase.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\NavmeshTile.cs">
<Link>Module\Pathfinding\Recast\NavmeshTile.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\NN.cs">
<Link>Module\Pathfinding\Recast\NN.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\ObjectPool.cs">
<Link>Module\Pathfinding\Recast\ObjectPool.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Path.cs">
<Link>Module\Pathfinding\Recast\Path.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Pathfinders\ABPath.cs">
<Link>Module\Pathfinding\Recast\Pathfinders\ABPath.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Pathfinders\ConstantPath.cs">
<Link>Module\Pathfinding\Recast\Pathfinders\ConstantPath.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Pathfinders\FleePath.cs">
<Link>Module\Pathfinding\Recast\Pathfinders\FleePath.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Pathfinders\FloodPath.cs">
<Link>Module\Pathfinding\Recast\Pathfinders\FloodPath.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Pathfinders\FloodPathTracer.cs">
<Link>Module\Pathfinding\Recast\FloodPathTracer.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Pathfinders\MultiTargetPath.cs">
<Link>Module\Pathfinding\Recast\Pathfinders\MultiTargetPath.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Pathfinders\RandomPath.cs">
<Link>Module\Pathfinding\Recast\Pathfinders\RandomPath.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Pathfinders\XPath.cs">
<Link>Module\Pathfinding\Recast\Pathfinders\XPath.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\PathFindHelper.cs">
<Link>Module\Pathfinding\Recast\PathFindHelper.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\PathHandler.cs">
<Link>Module\Pathfinding\Recast\PathHandler.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\PathPool.cs">
<Link>Module\Pathfinding\Recast\PathPool.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\PathProcessor.cs">
<Link>Module\Pathfinding\Recast\PathProcessor.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\PathReturnQueue.cs">
<Link>Module\Pathfinding\Recast\PathReturnQueue.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\RecastGenerator.cs">
<Link>Module\Pathfinding\Recast\RecastGenerator.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Serialization\JsonSerializer.cs">
<Link>Module\Pathfinding\Recast\Serialization\JsonSerializer.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Serialization\SimpleZipReplacement.cs">
<Link>Module\Pathfinding\Recast\Serialization\SimpleZipReplacement.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\Serialization\TinyJson.cs">
<Link>Module\Pathfinding\Recast\Serialization\TinyJson.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\ThreadControlQueue.cs">
<Link>Module\Pathfinding\Recast\ThreadControlQueue.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\TriangleMeshNode.cs">
<Link>Module\Pathfinding\Recast\TriangleMeshNode.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Model\Module\Pathfinding\Recast\WindowsStoreCompatibility.cs">
<Link>Module\Pathfinding\Recast\WindowsStoreCompatibility.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.2.1" />
......
using UnityEditor;
using UnityEngine;
namespace Pathfinding {
[CustomEditor(typeof(AIBase), true)]
[CanEditMultipleObjects]
public class BaseAIEditor : EditorBase {
protected SerializedProperty gravity, groundMask, centerOffset, rotationIn2D, acceleration;
float lastSeenCustomGravity = float.NegativeInfinity;
protected override void OnEnable () {
base.OnEnable();
gravity = serializedObject.FindProperty("gravity");
groundMask = serializedObject.FindProperty("groundMask");
centerOffset = serializedObject.FindProperty("centerOffset");
rotationIn2D = serializedObject.FindProperty("rotationIn2D");
acceleration = serializedObject.FindProperty("maxAcceleration");
}
protected override void Inspector () {
// Iterate over all properties of the script
var p = serializedObject.GetIterator();
p.Next(true);
while (p.NextVisible(false)) {
if (!SerializedProperty.EqualContents(p, groundMask) && !SerializedProperty.EqualContents(p, centerOffset) && !SerializedProperty.EqualContents(p, gravity) && !SerializedProperty.EqualContents(p, rotationIn2D)) {
if (SerializedProperty.EqualContents(p, acceleration) && typeof(AIPath).IsAssignableFrom(target.GetType())) {
EditorGUI.BeginChangeCheck();
int grav = acceleration.hasMultipleDifferentValues ? -1 : (acceleration.floatValue >= 0 ? 1 : 0);
var ngrav = EditorGUILayout.Popup("Max Acceleration", grav, new [] { "Default", "Custom" });
if (EditorGUI.EndChangeCheck()) {
if (ngrav == 0) acceleration.floatValue = -2.5f;
else if (acceleration.floatValue < 0) acceleration.floatValue = 10;
}
if (!acceleration.hasMultipleDifferentValues && ngrav == 1) {
EditorGUI.indentLevel++;
PropertyField(acceleration.propertyPath);
EditorGUI.indentLevel--;
acceleration.floatValue = Mathf.Max(acceleration.floatValue, 0.01f);
}
} else {
PropertyField(p);
}
}
}
PropertyField(rotationIn2D);
var mono = target as MonoBehaviour;
var rigid = mono.GetComponent<Rigidbody>();
var rigid2D = mono.GetComponent<Rigidbody2D>();
var controller = mono.GetComponent<CharacterController>();
var canUseGravity = (controller != null && controller.enabled) || ((rigid == null || rigid.isKinematic) && (rigid2D == null || rigid2D.isKinematic));
if (canUseGravity) {
EditorGUI.BeginChangeCheck();
int grav = gravity.hasMultipleDifferentValues ? -1 : (gravity.vector3Value == Vector3.zero ? 0 : (float.IsNaN(gravity.vector3Value.x) ? 1 : 2));
var ngrav = EditorGUILayout.Popup("Gravity", grav, new [] { "None", "Use Project Settings", "Custom" });
if (EditorGUI.EndChangeCheck()) {
if (ngrav == 0) gravity.vector3Value = Vector3.zero;
else if (ngrav == 1) gravity.vector3Value = new Vector3(float.NaN, float.NaN, float.NaN);
else if (float.IsNaN(gravity.vector3Value.x) || gravity.vector3Value == Vector3.zero) gravity.vector3Value = Physics.gravity;
lastSeenCustomGravity = float.NegativeInfinity;
}
if (!gravity.hasMultipleDifferentValues) {
// A sort of delayed Vector3 field (to prevent the field from dissappearing if you happen to enter zeroes into x, y and z for a short time)
// Note: cannot use != in this case because that will not give the correct result in case of NaNs
if (!(gravity.vector3Value == Vector3.zero)) lastSeenCustomGravity = Time.realtimeSinceStartup;
if (Time.realtimeSinceStartup - lastSeenCustomGravity < 2f) {
EditorGUI.indentLevel++;
if (!float.IsNaN(gravity.vector3Value.x)) {
PropertyField(gravity.propertyPath);
}
if (controller == null || !controller.enabled) {
PropertyField(groundMask.propertyPath, "Raycast Ground Mask");
PropertyField(centerOffset.propertyPath, "Raycast Center Offset");
}
EditorGUI.indentLevel--;
}
}
} else {
EditorGUI.BeginDisabledGroup(true);
EditorGUILayout.Popup(new GUIContent(gravity.displayName, "Disabled because a non-kinematic rigidbody is attached"), 0, new [] { new GUIContent("Handled by Rigidbody") });
EditorGUI.EndDisabledGroup();
}
if ((rigid != null || rigid2D != null) && (controller != null && controller.enabled)) {
EditorGUILayout.HelpBox("You are using both a Rigidbody and a Character Controller. Those components are not really designed for that. Please use only one of them.", MessageType.Warning);
}
}
}
}
fileFormatVersion: 2
guid: ab4eeab9df88a4d069163baf60aad496
timeCreated: 1489745284
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using UnityEditor;
using UnityEngine;
namespace Pathfinding {
[CustomEditor(typeof(AILerp), true)]
[CanEditMultipleObjects]
public class AILerpEditor : EditorBase {
protected override void Inspector () {
PropertyField("speed");
PropertyField("repathRate");
PropertyField("canSearch");
PropertyField("canMove");
if (PropertyField("enableRotation")) {
EditorGUI.indentLevel++;
PropertyField("rotationSpeed");
PropertyField("rotationIn2D");
EditorGUI.indentLevel--;
}
if (PropertyField("interpolatePathSwitches")) {
EditorGUI.indentLevel++;
PropertyField("switchPathInterpolationSpeed");
EditorGUI.indentLevel--;
}
}
}
}
fileFormatVersion: 2
guid: e9e1d37b65158413c85aad4706d94ff0
timeCreated: 1495016528
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: aa27fa41f8abe460a8b64e13d7be43ad
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.Linq;
namespace Pathfinding {
/** Handles update checking for the A* Pathfinding Project */
[InitializeOnLoad]
public static class AstarUpdateChecker {
/** Used for downloading new version information */
static WWW updateCheckDownload;
static System.DateTime _lastUpdateCheck;
static bool _lastUpdateCheckRead;
static System.Version _latestVersion;
static System.Version _latestBetaVersion;
/** Description of the latest update of the A* Pathfinding Project */
static string _latestVersionDescription;
static bool hasParsedServerMessage;
/** Number of days between update checks */
const double updateCheckRate = 1F;
/** URL to the version file containing the latest version number. */
const string updateURL = "http://www.arongranberg.com/astar/version.php";
/** Last time an update check was made */
public static System.DateTime lastUpdateCheck {
get {
try {
// Reading from EditorPrefs is relatively slow, avoid it
if (_lastUpdateCheckRead) return _lastUpdateCheck;
_lastUpdateCheck = System.DateTime.Parse(EditorPrefs.GetString("AstarLastUpdateCheck", "1/1/1971 00:00:01"), System.Globalization.CultureInfo.InvariantCulture);
_lastUpdateCheckRead = true;
}
catch (System.FormatException) {
lastUpdateCheck = System.DateTime.UtcNow;
Debug.LogWarning("Invalid DateTime string encountered when loading from preferences");
}
return _lastUpdateCheck;
}
private set {
_lastUpdateCheck = value;
EditorPrefs.SetString("AstarLastUpdateCheck", _lastUpdateCheck.ToString(System.Globalization.CultureInfo.InvariantCulture));
}
}
/** Latest version of the A* Pathfinding Project */
public static System.Version latestVersion {
get {
RefreshServerMessage();
return _latestVersion ?? AstarPath.Version;
}
private set {
_latestVersion = value;
}
}
/** Latest beta version of the A* Pathfinding Project */
public static System.Version latestBetaVersion {
get {
RefreshServerMessage();
return _latestBetaVersion ?? AstarPath.Version;
}
private set {
_latestBetaVersion = value;
}
}
/** Summary of the latest update */
public static string latestVersionDescription {
get {
RefreshServerMessage();
return _latestVersionDescription ?? "";
}
private set {
_latestVersionDescription = value;
}
}
/** Holds various URLs and text for the editor.
* This info can be updated when a check for new versions is done to ensure that there are no invalid links.
*/
static Dictionary<string, string> astarServerData = new Dictionary<string, string> {
{ "URL:modifiers", "http://www.arongranberg.com/astar/docs/modifiers.php" },
{ "URL:astarpro", "http://arongranberg.com/unity/a-pathfinding/astarpro/" },
{ "URL:documentation", "http://arongranberg.com/astar/docs/" },
{ "URL:findoutmore", "http://arongranberg.com/astar" },
{ "URL:download", "http://arongranberg.com/unity/a-pathfinding/download" },
{ "URL:changelog", "http://arongranberg.com/astar/docs/changelog.php" },
{ "URL:tags", "http://arongranberg.com/astar/docs/tags.php" },
{ "URL:homepage", "http://arongranberg.com/astar/" }
};
static AstarUpdateChecker() {
// Add a callback so that we can parse the message when it has been downloaded
EditorApplication.update += UpdateCheckLoop;
}
static void RefreshServerMessage () {
if (!hasParsedServerMessage) {
var serverMessage = EditorPrefs.GetString("AstarServerMessage");
if (!string.IsNullOrEmpty(serverMessage)) {
ParseServerMessage(serverMessage);
ShowUpdateWindowIfRelevant();
}
}
}
public static string GetURL (string tag) {
RefreshServerMessage();
string url;
astarServerData.TryGetValue("URL:"+tag, out url);
return url ?? "";
}
/** Initiate a check for updates now, regardless of when the last check was done */
public static void CheckForUpdatesNow () {
lastUpdateCheck = System.DateTime.UtcNow.AddDays(-5);
// Remove the callback if it already exists
EditorApplication.update -= UpdateCheckLoop;
// Add a callback so that we can parse the message when it has been downloaded
EditorApplication.update += UpdateCheckLoop;
}
/**
* Checking for updates...
* Should be called from EditorApplication.update
*/
static void UpdateCheckLoop () {
// Go on until the update check has been completed
if (!CheckForUpdates()) {
EditorApplication.update -= UpdateCheckLoop;
}
}
/** Checks for updates if there was some time since last check.
* It must be called repeatedly to ensure that the result is processed.
* \returns True if an update check is progressing (WWW request)
*/
static bool CheckForUpdates () {
if (updateCheckDownload != null && updateCheckDownload.isDone) {
if (!string.IsNullOrEmpty(updateCheckDownload.error)) {
Debug.LogWarning("There was an error checking for updates to the A* Pathfinding Project\n" +
"The error might disappear if you switch build target from Webplayer to Standalone because of the webplayer security emulation\nError: " +
updateCheckDownload.error);
updateCheckDownload = null;
return false;
}
UpdateCheckCompleted(updateCheckDownload.text);
updateCheckDownload = null;
}
// Check if it is time to check for updates
// Check for updates a bit earlier if we are in play mode or have the AstarPath object in the scene
// as then the collected statistics will be a bit more accurate
var offsetMinutes = (Application.isPlaying && Time.time > 60) || AstarPath.active != null ? -20 : 20;
var minutesUntilUpdate = lastUpdateCheck.AddDays(updateCheckRate).AddMinutes(offsetMinutes).Subtract(System.DateTime.UtcNow).TotalMinutes;
if (minutesUntilUpdate < 0) {
DownloadVersionInfo();
}
return updateCheckDownload != null || minutesUntilUpdate < 10;
}
static void DownloadVersionInfo () {
var script = AstarPath.active != null ? AstarPath.active : GameObject.FindObjectOfType(typeof(AstarPath)) as AstarPath;
if (script != null) {
script.ConfigureReferencesInternal();
if ((!Application.isPlaying && (script.data.graphs == null || script.data.graphs.Length == 0)) || script.data.graphs == null) {
script.data.DeserializeGraphs();
}
}
bool mecanim = GameObject.FindObjectOfType(typeof(Animator)) != null;
string query = updateURL+
"?v="+AstarPath.Version+
"&pro=1"+
"&check="+updateCheckRate+"&distr="+AstarPath.Distribution+
"&unitypro="+(Application.HasProLicense() ? "1" : "0")+
"&inscene="+(script != null ? "1" : "0")+
"&targetplatform="+EditorUserBuildSettings.activeBuildTarget+
"&devplatform="+Application.platform+
"&mecanim="+(mecanim ? "1" : "0")+
"&hasNavmesh=" + (script != null && script.data.graphs.Any(g => g.GetType().Name == "NavMeshGraph") ? 1 : 0) +
"&hasPoint=" + (script != null && script.data.graphs.Any(g => g.GetType().Name == "PointGraph") ? 1 : 0) +
"&hasGrid=" + (script != null && script.data.graphs.Any(g => g.GetType().Name == "GridGraph") ? 1 : 0) +
"&hasLayered=" + (script != null && script.data.graphs.Any(g => g.GetType().Name == "LayerGridGraph") ? 1 : 0) +
"&hasRecast=" + (script != null && script.data.graphs.Any(g => g.GetType().Name == "RecastGraph") ? 1 : 0) +
"&hasGrid=" + (script != null && script.data.graphs.Any(g => g.GetType().Name == "GridGraph") ? 1 : 0) +
"&hasCustom=" + (script != null && script.data.graphs.Any(g => g != null && !g.GetType().FullName.Contains("Pathfinding.")) ? 1 : 0) +
"&graphCount=" + (script != null ? script.data.graphs.Count(g => g != null) : 0) +
"&unityversion="+Application.unityVersion +
"&branch="+AstarPath.Branch;
updateCheckDownload = new WWW(query);
lastUpdateCheck = System.DateTime.UtcNow;
}
/** Handles the data from the update page */
static void UpdateCheckCompleted (string result) {
EditorPrefs.SetString("AstarServerMessage", result);
ParseServerMessage(result);
ShowUpdateWindowIfRelevant();
}
static void ParseServerMessage (string result) {
if (string.IsNullOrEmpty(result)) {
return;
}
hasParsedServerMessage = true;
#if ASTARDEBUG
Debug.Log("Result from update check:\n"+result);
#endif
string[] splits = result.Split('|');
latestVersionDescription = splits.Length > 1 ? splits[1] : "";
if (splits.Length > 4) {
// First 4 are just compatibility fields
var fields = splits.Skip(4).ToArray();
// Take all pairs of fields
for (int i = 0; i < (fields.Length/2)*2; i += 2) {
string key = fields[i];
string val = fields[i+1];
astarServerData[key] = val;
}
}
try {
latestVersion = new System.Version(astarServerData["VERSION:branch"]);
} catch (System.Exception ex) {
Debug.LogWarning("Could not parse version\n"+ex);
}
try {
latestBetaVersion = new System.Version(astarServerData["VERSION:beta"]);
} catch (System.Exception ex) {
Debug.LogWarning("Could not parse version\n"+ex);
}
}
static void ShowUpdateWindowIfRelevant () {
try {
System.DateTime remindDate;
var remindVersion = new System.Version(EditorPrefs.GetString("AstarRemindUpdateVersion", "0.0.0.0"));
if (latestVersion == remindVersion && System.DateTime.TryParse(EditorPrefs.GetString("AstarRemindUpdateDate", "1/1/1971 00:00:01"), out remindDate)) {
if (System.DateTime.UtcNow < remindDate) {
// Don't remind yet
return;
}
} else {
EditorPrefs.DeleteKey("AstarRemindUpdateDate");
EditorPrefs.DeleteKey("AstarRemindUpdateVersion");
}
} catch {
Debug.LogError("Invalid AstarRemindUpdateVersion or AstarRemindUpdateDate");
}
var skipVersion = new System.Version(EditorPrefs.GetString("AstarSkipUpToVersion", AstarPath.Version.ToString()));
if (AstarPathEditor.FullyDefinedVersion(latestVersion) != AstarPathEditor.FullyDefinedVersion(skipVersion) && AstarPathEditor.FullyDefinedVersion(latestVersion) > AstarPathEditor.FullyDefinedVersion(AstarPath.Version)) {
EditorPrefs.DeleteKey("AstarSkipUpToVersion");
EditorPrefs.DeleteKey("AstarRemindUpdateDate");
EditorPrefs.DeleteKey("AstarRemindUpdateVersion");
AstarUpdateWindow.Init(latestVersion, latestVersionDescription);
}
}
}
}
fileFormatVersion: 2
guid: 8df9913c9ee004459b24d89644e573d7
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
using System;
using UnityEditor;
using UnityEngine;
namespace Pathfinding {
public class AstarUpdateWindow : EditorWindow {
static GUIStyle largeStyle;
static GUIStyle normalStyle;
Version version;
string summary;
bool setReminder;
public static AstarUpdateWindow Init (Version version, string summary) {
// Get existing open window or if none, make a new one:
AstarUpdateWindow window = EditorWindow.GetWindow<AstarUpdateWindow>(true, "", true);
window.position = new Rect(Screen.currentResolution.width/2 - 300, Mathf.Max(5, Screen.currentResolution.height/3 - 150), 600, 400);
window.version = version;
window.summary = summary;
#if UNITY_4_6 || UNITY_5_0
window.title = "New Version of the A* Pathfinding Project";
#else
window.titleContent = new GUIContent("New Version of the A* Pathfinding Project");
#endif
return window;
}
public void OnDestroy () {
if (version != null && !setReminder) {
Debug.Log("Closed window, reminding again tomorrow");
EditorPrefs.SetString("AstarRemindUpdateDate", DateTime.UtcNow.AddDays(1).ToString(System.Globalization.CultureInfo.InvariantCulture));
EditorPrefs.SetString("AstarRemindUpdateVersion", version.ToString());
}
}
void OnGUI () {
if (largeStyle == null) {
largeStyle = new GUIStyle(EditorStyles.largeLabel);
largeStyle.fontSize = 32;
largeStyle.alignment = TextAnchor.UpperCenter;
largeStyle.richText = true;
normalStyle = new GUIStyle(EditorStyles.label);
normalStyle.wordWrap = true;
normalStyle.richText = true;
}
if (version == null) {
return;
}
GUILayout.Label("New Update Available!", largeStyle);
GUILayout.Label("There is a new version of the <b>A* Pathfinding Project</b> available for download.\n" +
"The new version is <b>" + version + "</b> you have <b>" + AstarPath.Version + "</b>\n\n"+
"<i>Summary:</i>\n"+summary, normalStyle
);
GUILayout.FlexibleSpace();
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
GUILayout.BeginVertical();
Color col = GUI.color;
GUI.backgroundColor *= new Color(0.5f, 1f, 0.5f);
if (GUILayout.Button("Take me to the download page!", GUILayout.Height(30), GUILayout.MaxWidth(300))) {
Application.OpenURL(AstarUpdateChecker.GetURL("download"));
}
GUI.backgroundColor = col;
if (GUILayout.Button("What's new? (full changelog)")) {
Application.OpenURL(AstarUpdateChecker.GetURL("changelog"));
}
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
GUILayout.FlexibleSpace();
GUILayout.BeginHorizontal();
if (GUILayout.Button("Skip this version", GUILayout.MaxWidth(100))) {
EditorPrefs.SetString("AstarSkipUpToVersion", version.ToString());
setReminder = true;
Close();
}
if (GUILayout.Button("Remind me later ( 1 week )", GUILayout.MaxWidth(200))) {
EditorPrefs.SetString("AstarRemindUpdateDate", DateTime.UtcNow.AddDays(7).ToString(System.Globalization.CultureInfo.InvariantCulture));
EditorPrefs.SetString("AstarRemindUpdateVersion", version.ToString());
setReminder = true;
Close();
}
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
}
}
}
fileFormatVersion: 2
guid: 97d8d5fc46a644f22b0d66c6ee18e753
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
namespace Pathfinding {
/** Added to editors of custom graph types */
[System.AttributeUsage(System.AttributeTargets.All, Inherited = false, AllowMultiple = true)]
public class CustomGraphEditorAttribute : System.Attribute {
/** Graph type which this is an editor for */
public System.Type graphType;
/** Name displayed in the inpector */
public string displayName;
/** Type of the editor for the graph */
public System.Type editorType;
public CustomGraphEditorAttribute (System.Type t, string displayName) {
graphType = t;
this.displayName = displayName;
}
}
}
fileFormatVersion: 2
guid: 576dcf42aca804a48b5923974edaee01
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
fileFormatVersion: 2
guid: 43c4f2e196bd25a429f1383adc6615a4
folderAsset: yes
timeCreated: 1536749367
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 253c7abd5d5cd044789918a8880fc867
folderAsset: yes
timeCreated: 1536749367
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 0790ee8db18ed49ed8369be285199835
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
fileFormatVersion: 2
guid: b5a4a564ac2dc4261a13719673f157e1
timeCreated: 1498132652
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: c730485723dee4bcbad9d8a7593a8799
timeCreated: 1498131761
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: d0f7738d6b5b2420b9a77bfef3926e2a
timeCreated: 1498133640
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: b9d7d6d7befb34b9c889e6195746c452
timeCreated: 1498133640
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 705155b2c3fce47f0a818ac32d5abe3f
timeCreated: 1499339103
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: e8ebb72a41d314b288545fddfd20cafd
timeCreated: 1499339103
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: e0cb3cc51f25a48bf8b0c647452b09b1
timeCreated: 1499339103
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: f6a4baf90a7bb4e4a92abe07f1a0a9d3
timeCreated: 1499339103
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: b05124c2b9dc5429a84ef0195a916fce
timeCreated: 1498128537
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 3772050cdbd2a472789aa76d6de5b270
timeCreated: 1498128911
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 54ad5f6eb8a9349568e58cd1204388a2
timeCreated: 1498131017
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: a454b67ef7bd04780aca99e364202679
timeCreated: 1498131017
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 11b8d44fcb3cf4c048a576df708e0ec6
TextureImporter:
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
userData:
fileFormatVersion: 2
guid: db5b85df63e094a1c96f11019bccc577
TextureImporter:
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
userData:
fileFormatVersion: 2
guid: dd113e7f4ceed0945903fc146a961735
folderAsset: yes
timeCreated: 1536749367
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 0758c9e42111d4aec99694c875e9badc
TextureImporter:
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
fileFormatVersion: 2
guid: 5006aa4ede39e49198b851d98e267b5d
TextureImporter:
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
fileFormatVersion: 2
guid: 37972c32346084c13bfddb8c3dbed143
TextureImporter:
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
fileFormatVersion: 2
guid: 7ea4fc739ffbb4af1a466f655bf1d178
TextureImporter:
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
fileFormatVersion: 2
guid: 1986ec06d68774254928f44b896a3913
timeCreated: 1498131401
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 623f6adf01f324cb7bc6aefe7f87d623
timeCreated: 1498131297
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: d008deade2077407fbf14446df2547c9
timeCreated: 1498131543
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 9b266e42522c048f6b62832985be51ed
timeCreated: 1498131543
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: aaae516f9c5404f77a3e586cdd59695b
timeCreated: 1498137820
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 0
linearTexture: 1
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 1024
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 6c38830c1556942fcb6ce893085d1daa
timeCreated: 1498137820
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: c43744025f7024e20b5fe880600d19a7
timeCreated: 1498138222
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 0
linearTexture: 1
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 1024
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 957d0fd6ae3494da9aed50c5d7d7ce4e
timeCreated: 1498138222
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 5d951d0a838a34f40ac2b9ce8968a7d6
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 7991166a167af4b4793b4fc8fcc3bfe2
timeCreated: 1498136635
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 9043fef44c60647b7a763eb86f912ba1
timeCreated: 1498136635
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 3a08de11a34c44da28de4c086fd13461
TextureImporter:
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
userData:
fileFormatVersion: 2
guid: f1713f58b9a99154d8a227c3e34972e6
folderAsset: yes
timeCreated: 1536749367
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 9bf4f8f9d8795455bb87213dd56ed793
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 1024
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
fileFormatVersion: 2
guid: 3240f334343ca4dee8239c16d2de57c6
timeCreated: 1498135848
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 6444e8eb74e6f40e0a966d1e26744d08
timeCreated: 1498135848
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 0
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册