Add new meta files and interfaces for project structure
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"name": "AstarPathfindingProjectExamples",
|
||||
"rootNamespace": "",
|
||||
"references": [
|
||||
"GUID:2bafac87e7f4b9b418d9448d219b01ab",
|
||||
"GUID:f4059aaf6c60a4a58a177a2609feb769",
|
||||
"GUID:2665a8d13d1b3f18800f46e256720795",
|
||||
"GUID:d8b63aba1907145bea998dd612889d6b",
|
||||
"GUID:e0cd26848372d4e5c891c569017e11f1",
|
||||
"GUID:8a2eafa29b15f444eb6d74f94a930e1d",
|
||||
"GUID:de4e6084e6d474788bb8c799d6b461eb",
|
||||
"GUID:734d92eba21c94caba915361bd5ac177",
|
||||
"GUID:a5baed0c9693541a5bd947d336ec7659",
|
||||
"GUID:efa45043feb7e4147a305b73b5cea642"
|
||||
],
|
||||
"includePlatforms": [],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": true,
|
||||
"overrideReferences": true,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [
|
||||
"MODULE_BURST",
|
||||
"MODULE_MATHEMATICS",
|
||||
"MODULE_COLLECTIONS"
|
||||
],
|
||||
"versionDefines": [
|
||||
{
|
||||
"name": "com.unity.burst",
|
||||
"expression": "1.8.7",
|
||||
"define": "MODULE_BURST"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.mathematics",
|
||||
"expression": "1.2.6",
|
||||
"define": "MODULE_MATHEMATICS"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.collections",
|
||||
"expression": "1.5.1",
|
||||
"define": "MODULE_COLLECTIONS"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.collections",
|
||||
"expression": "0.11-preview",
|
||||
"define": "MODULE_COLLECTIONS_0_11_0_OR_NEWER"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.entities",
|
||||
"expression": "1.1.0-pre.3",
|
||||
"define": "MODULE_ENTITIES"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.entities",
|
||||
"expression": "1.0.8",
|
||||
"define": "MODULE_ENTITIES_1_0_8_OR_NEWER"
|
||||
}
|
||||
],
|
||||
"noEngineReferences": false
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fc7298e05e4fb644bfd10f41ae01ac3
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/AstarPathfindingProjectExamples.asmdef
|
||||
uploadId: 764484
|
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e6852ce581432417ba95e2115d89c478
|
@@ -0,0 +1,25 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
[ExecuteInEditMode]
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/documentationbutton.html")]
|
||||
public class DocumentationButton : MonoBehaviour {
|
||||
public string page;
|
||||
|
||||
const string UrlBase = "https://arongranberg.com/astar/docs/";
|
||||
|
||||
GUIContent buttonContent = new GUIContent("Example Scene Documentation");
|
||||
|
||||
void Awake () {
|
||||
useGUILayout = false;
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
void OnGUI () {
|
||||
if (GUI.Button(new Rect(Screen.width - 250, Screen.height - 60, 240, 50), buttonContent)) {
|
||||
Application.OpenURL(UrlBase + page + ".html");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a705f1fd95105f4582d18bf472edc13
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/DocumentationButton.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,59 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
/// <summary>Example script used in the example scenes</summary>
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/doorcontroller.html")]
|
||||
public class DoorController : MonoBehaviour {
|
||||
private bool open = false;
|
||||
|
||||
public PathfindingTag opentag = 1;
|
||||
public PathfindingTag closedtag = 1;
|
||||
public bool updateGraphsWithGUO = true;
|
||||
public float yOffset = 5;
|
||||
|
||||
Bounds bounds;
|
||||
|
||||
public void Start () {
|
||||
// Capture the bounds of the collider while it is closed
|
||||
bounds = GetComponent<Collider>().bounds;
|
||||
|
||||
// Initially open the door
|
||||
SetState(open);
|
||||
}
|
||||
|
||||
void OnGUI () {
|
||||
// Show a UI button for opening and closing the door
|
||||
if (GUI.Button(new Rect(5, yOffset, 100, 22), "Toggle Door")) {
|
||||
SetState(!open);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetState (bool open) {
|
||||
this.open = open;
|
||||
|
||||
if (updateGraphsWithGUO) {
|
||||
// Update the graph below the door
|
||||
// Set the tag of the nodes below the door
|
||||
// To something indicating that the door is open or closed
|
||||
GraphUpdateObject guo = new GraphUpdateObject(bounds);
|
||||
var tag = open ? opentag : closedtag;
|
||||
|
||||
// There are only 32 tags
|
||||
if (tag > 31) { Debug.LogError("tag > 31"); return; }
|
||||
|
||||
guo.modifyTag = true;
|
||||
guo.setTag = tag;
|
||||
guo.updatePhysics = false;
|
||||
|
||||
AstarPath.active.UpdateGraphs(guo);
|
||||
}
|
||||
|
||||
// Play door animations
|
||||
if (open) {
|
||||
GetComponent<Animation>().Play("Open");
|
||||
} else {
|
||||
GetComponent<Animation>().Play("Close");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e96422fbb088f477baaf6f2ada396863
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/DoorController.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d8f8f1c1cdcd4c849af88d75ed47987e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"name": "AstarPathfindingProjectExamplesEditor",
|
||||
"rootNamespace": "",
|
||||
"references": [
|
||||
"GUID:efa45043feb7e4147a305b73b5cea642",
|
||||
"GUID:774e21169c4ac4ec8a01db9cdb98d33b",
|
||||
"GUID:f4059aaf6c60a4a58a177a2609feb769",
|
||||
"GUID:de4e6084e6d474788bb8c799d6b461eb",
|
||||
"GUID:9fc7298e05e4fb644bfd10f41ae01ac3"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": true,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [
|
||||
"MODULE_BURST",
|
||||
"MODULE_MATHEMATICS",
|
||||
"MODULE_COLLECTIONS"
|
||||
],
|
||||
"versionDefines": [
|
||||
{
|
||||
"name": "com.unity.burst",
|
||||
"expression": "1.8.7",
|
||||
"define": "MODULE_BURST"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.mathematics",
|
||||
"expression": "1.2.6",
|
||||
"define": "MODULE_MATHEMATICS"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.collections",
|
||||
"expression": "1.5.1",
|
||||
"define": "MODULE_COLLECTIONS"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.collections",
|
||||
"expression": "0.11-preview",
|
||||
"define": "MODULE_COLLECTIONS_0_11_0_OR_NEWER"
|
||||
},
|
||||
{
|
||||
"name": "com.unity.entities",
|
||||
"expression": "1.1.0-pre.3",
|
||||
"define": "MODULE_ENTITIES"
|
||||
}
|
||||
],
|
||||
"noEngineReferences": false
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5d2c271bbce11444b0479e9cf877d6d
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/Editor/AstarPathfindingProjectExamplesEditor.asmdef
|
||||
uploadId: 764484
|
@@ -0,0 +1,132 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEditorInternal;
|
||||
using Pathfinding.Examples;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine.AI;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
[CustomEditor(typeof(Interactable))]
|
||||
[CanEditMultipleObjects]
|
||||
public class InteractableEditor : EditorBase {
|
||||
ReorderableList actions;
|
||||
|
||||
static Rect SliceRow (ref Rect rect, float height) {
|
||||
return GUIUtilityx.SliceRow(ref rect, height);
|
||||
}
|
||||
|
||||
protected override void OnEnable () {
|
||||
base.OnEnable();
|
||||
actions = new ReorderableList(serializedObject, serializedObject.FindProperty("actions"), true, true, true, true);
|
||||
actions.drawElementCallback = (Rect rect, int index, bool active, bool isFocused) => {
|
||||
var item = actions.serializedProperty.GetArrayElementAtIndex(index);
|
||||
var ob = item.managedReferenceValue as Interactable.InteractableAction;
|
||||
if (ob == null) {
|
||||
EditorGUI.LabelField(rect, "Null");
|
||||
return;
|
||||
}
|
||||
var tp = ob.GetType();
|
||||
|
||||
var lineHeight = EditorGUIUtility.singleLineHeight;
|
||||
if (tp == typeof(Interactable.AnimatorSetBoolAction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Set Animator Property", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("animator"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("propertyName"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("value"));
|
||||
} else if (tp == typeof(Interactable.AnimatorPlay)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Play Animator State", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("animator"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("stateName"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("normalizedTime"));
|
||||
} else if (tp == typeof(Interactable.ActivateParticleSystem)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Activate Particle System", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("particleSystem"));
|
||||
} else if (tp == typeof(Interactable.DelayAction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Delay", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("delay"));
|
||||
} else if (tp == typeof(Interactable.SetObjectActiveAction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Set Object Active", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("target"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("active"));
|
||||
} else if (tp == typeof(Interactable.TeleportAgentAction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Teleport Agent", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("destination"));
|
||||
} else if (tp == typeof(Interactable.TeleportAgentOnLinkAction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Teleport Agent on Off-Mesh Link", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("destination"));
|
||||
} else if (tp == typeof(Interactable.SetTransformAction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Set Transform", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("transform"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("source"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("setPosition"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("setRotation"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("setScale"));
|
||||
} else if (tp == typeof(Interactable.MoveToAction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Move To", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("destination"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("useRotation"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("waitUntilReached"));
|
||||
} else if (tp == typeof(Interactable.InstantiatePrefab)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Instantiate Prefab", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("prefab"));
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("position"));
|
||||
} else if (tp == typeof(Interactable.CallFunction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Call Function", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("function"));
|
||||
} else if (tp == typeof(Interactable.InteractAction)) {
|
||||
EditorGUI.LabelField(SliceRow(ref rect, lineHeight), "Interact", EditorStyles.boldLabel);
|
||||
EditorGUI.PropertyField(SliceRow(ref rect, lineHeight), item.FindPropertyRelative("interactable"));
|
||||
}
|
||||
};
|
||||
actions.elementHeightCallback = (int index) => {
|
||||
var actions = (target as Interactable).actions;
|
||||
var tp = index < actions.Count ? actions[index]?.GetType() : null;
|
||||
var h = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
|
||||
if (tp == null) return h;
|
||||
else if (tp == typeof(Interactable.AnimatorSetBoolAction)) return 4*h;
|
||||
else if (tp == typeof(Interactable.AnimatorPlay)) return 4*h;
|
||||
else if (tp == typeof(Interactable.ActivateParticleSystem)) return 2*h;
|
||||
else if (tp == typeof(Interactable.DelayAction)) return 2*h;
|
||||
else if (tp == typeof(Interactable.SetObjectActiveAction)) return 3*h;
|
||||
else if (tp == typeof(Interactable.TeleportAgentAction)) return 2*h;
|
||||
else if (tp == typeof(Interactable.TeleportAgentOnLinkAction)) return 2*h;
|
||||
else if (tp == typeof(Interactable.SetTransformAction)) return 6*h;
|
||||
else if (tp == typeof(Interactable.MoveToAction)) return 4*h;
|
||||
else if (tp == typeof(Interactable.InstantiatePrefab)) return 3*h;
|
||||
else if (tp == typeof(Interactable.InteractAction)) return 2*h;
|
||||
else if (tp == typeof(Interactable.CallFunction)) {
|
||||
return (3.5f + Mathf.Max(1, (actions[index] as Interactable.CallFunction).function.GetPersistentEventCount())*2.5f) * h;
|
||||
} else throw new System.Exception("Unexpected type " + tp);
|
||||
};
|
||||
actions.drawHeaderCallback = (Rect rect) => {
|
||||
EditorGUI.LabelField(rect, "Actions");
|
||||
};
|
||||
actions.onAddDropdownCallback = (rect, _) => {
|
||||
GenericMenu menu = new GenericMenu();
|
||||
var interactable = target as Interactable;
|
||||
menu.AddItem(new GUIContent("AnimatorSetBool"), false, () => interactable.actions.Add(new Interactable.AnimatorSetBoolAction()));
|
||||
menu.AddItem(new GUIContent("AnimatorPlay"), false, () => interactable.actions.Add(new Interactable.AnimatorPlay()));
|
||||
menu.AddItem(new GUIContent("ActivateParticleSystem"), false, () => interactable.actions.Add(new Interactable.ActivateParticleSystem()));
|
||||
menu.AddItem(new GUIContent("Delay"), false, () => interactable.actions.Add(new Interactable.DelayAction()));
|
||||
menu.AddItem(new GUIContent("SetObjectActive"), false, () => interactable.actions.Add(new Interactable.SetObjectActiveAction()));
|
||||
menu.AddItem(new GUIContent("TeleportAgent"), false, () => interactable.actions.Add(new Interactable.TeleportAgentAction()));
|
||||
if (interactable.TryGetComponent<NodeLink2>(out var _)) {
|
||||
menu.AddItem(new GUIContent("Teleport Agent on Off-Mesh Link"), false, () => interactable.actions.Add(new Interactable.TeleportAgentOnLinkAction()));
|
||||
}
|
||||
menu.AddItem(new GUIContent("SetTransform"), false, () => interactable.actions.Add(new Interactable.SetTransformAction()));
|
||||
menu.AddItem(new GUIContent("MoveTo"), false, () => interactable.actions.Add(new Interactable.MoveToAction()));
|
||||
menu.AddItem(new GUIContent("InstantiatePrefab"), false, () => interactable.actions.Add(new Interactable.InstantiatePrefab()));
|
||||
menu.AddItem(new GUIContent("CallFunction"), false, () => interactable.actions.Add(new Interactable.CallFunction()));
|
||||
menu.AddItem(new GUIContent("Interact with other interactable"), false, () => interactable.actions.Add(new Interactable.InteractAction()));
|
||||
menu.DropDown(rect);
|
||||
};
|
||||
}
|
||||
|
||||
protected override void Inspector () {
|
||||
var script = target as Interactable;
|
||||
|
||||
script.actions = script.actions ?? new List<Interactable.InteractableAction>();
|
||||
actions.DoLayoutList();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ebafa3cffbc5f3d4f90cbca561882b97
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/Editor/InteractableEditor.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,65 @@
|
||||
#if MODULE_ENTITIES
|
||||
/// <summary>[followerEntity.onTraverseOffMeshLink]</summary>
|
||||
using UnityEngine;
|
||||
using Pathfinding;
|
||||
using System.Collections;
|
||||
using Pathfinding.ECS;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/followerjumplink.html")]
|
||||
public class FollowerJumpLink : MonoBehaviour, IOffMeshLinkHandler, IOffMeshLinkStateMachine {
|
||||
// Register this class as the handler for off-mesh links when the component is enabled
|
||||
void OnEnable() => GetComponent<NodeLink2>().onTraverseOffMeshLink = this;
|
||||
void OnDisable() => GetComponent<NodeLink2>().onTraverseOffMeshLink = null;
|
||||
|
||||
IOffMeshLinkStateMachine IOffMeshLinkHandler.GetOffMeshLinkStateMachine(AgentOffMeshLinkTraversalContext context) => this;
|
||||
|
||||
void IOffMeshLinkStateMachine.OnFinishTraversingOffMeshLink (AgentOffMeshLinkTraversalContext context) {
|
||||
Debug.Log("An agent finished traversing an off-mesh link");
|
||||
}
|
||||
|
||||
void IOffMeshLinkStateMachine.OnAbortTraversingOffMeshLink () {
|
||||
Debug.Log("An agent aborted traversing an off-mesh link");
|
||||
}
|
||||
|
||||
IEnumerable IOffMeshLinkStateMachine.OnTraverseOffMeshLink (AgentOffMeshLinkTraversalContext ctx) {
|
||||
var start = (Vector3)ctx.link.relativeStart;
|
||||
var end = (Vector3)ctx.link.relativeEnd;
|
||||
var dir = end - start;
|
||||
|
||||
// Disable local avoidance while traversing the off-mesh link.
|
||||
// If it was enabled, it will be automatically re-enabled when the agent finishes traversing the link.
|
||||
ctx.DisableLocalAvoidance();
|
||||
|
||||
// Move and rotate the agent to face the other side of the link.
|
||||
// When reaching the off-mesh link, the agent may be facing the wrong direction.
|
||||
while (!ctx.MoveTowards(
|
||||
position: start,
|
||||
rotation: Quaternion.LookRotation(dir, ctx.movementPlane.up),
|
||||
gravity: true,
|
||||
slowdown: true).reached) {
|
||||
yield return null;
|
||||
}
|
||||
|
||||
var bezierP0 = start;
|
||||
var bezierP1 = start + Vector3.up*5;
|
||||
var bezierP2 = end + Vector3.up*5;
|
||||
var bezierP3 = end;
|
||||
var jumpDuration = 1.0f;
|
||||
|
||||
// Animate the AI to jump from the start to the end of the link
|
||||
for (float t = 0; t < jumpDuration; t += ctx.deltaTime) {
|
||||
ctx.transform.Position = AstarSplines.CubicBezier(bezierP0, bezierP1, bezierP2, bezierP3, Mathf.SmoothStep(0, 1, t / jumpDuration));
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>[followerEntity.onTraverseOffMeshLink]</summary>
|
||||
#else
|
||||
using UnityEngine;
|
||||
namespace Pathfinding.Examples {
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/followerjumplink.html")]
|
||||
public class FollowerJumpLink : MonoBehaviour {}
|
||||
}
|
||||
#endif
|
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f063fb6ec3f77440b73fc7776d9cb53
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/FollowerJumpLink.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,21 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
/// <summary>Activates a GameObject when the cursor is over this object.</summary>
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/highlightonhover.html")]
|
||||
public class HighlightOnHover : VersionedMonoBehaviour {
|
||||
public GameObject highlight;
|
||||
|
||||
void Start () {
|
||||
highlight.SetActive(false);
|
||||
}
|
||||
|
||||
public void OnMouseEnter () {
|
||||
highlight.SetActive(true);
|
||||
}
|
||||
|
||||
public void OnMouseExit () {
|
||||
highlight.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8153462638516974f975960db23f964b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/HighlightOnHover.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,323 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Pathfinding.ECS;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
/// <summary>
|
||||
/// Example script for handling interactable objects in the example scenes.
|
||||
///
|
||||
/// It implements a very simple and lightweight state machine.
|
||||
///
|
||||
/// Note: This is an example script intended for the A* Pathfinding Project's example scenes.
|
||||
/// If you need a proper state machine for your game, you may be better served by other state machine solutions on the Unity Asset Store.
|
||||
///
|
||||
/// It works by keeping a linear list of states, each with an associated action.
|
||||
/// When an agent iteracts with this object, it immediately does the first action in the list.
|
||||
/// Once that action is done, it will do the next action and so on.
|
||||
///
|
||||
/// Some actions may cancel the whole interaction. For example the MoveTo action will cancel the interaction if the agent
|
||||
/// suddenly had its destination to something else. Presumably because the agent was interrupted by something.
|
||||
///
|
||||
/// If this component is added to the same GameObject as a <see cref="NodeLink2"/> component, the interactable will automatically trigger when the agent traverses the link.
|
||||
/// Some components behave differently when used during an off-mesh link component.
|
||||
/// For example the <see cref="MoveToAction"/> will move the agent without taking the navmesh into account (becoming a thin wrapper for <see cref="AgentOffMeshLinkTraversalContext.MoveTowards"/>).
|
||||
/// </summary>
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/interactable.html")]
|
||||
public class Interactable : VersionedMonoBehaviour, IOffMeshLinkHandler, IOffMeshLinkStateMachine {
|
||||
public enum CoroutineAction {
|
||||
Tick,
|
||||
Cancel,
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public abstract class InteractableAction {
|
||||
public virtual IEnumerator<CoroutineAction> Execute (IAstarAI ai) {
|
||||
return Execute();
|
||||
}
|
||||
|
||||
#if MODULE_ENTITIES
|
||||
public virtual IEnumerator<CoroutineAction> Execute (Pathfinding.ECS.AgentOffMeshLinkTraversalContext context) {
|
||||
return Execute();
|
||||
}
|
||||
#endif
|
||||
|
||||
public virtual IEnumerator<CoroutineAction> Execute () {
|
||||
throw new System.NotImplementedException("This action has no implementation");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[System.Serializable]
|
||||
public class AnimatorPlay : InteractableAction {
|
||||
public string stateName;
|
||||
public float normalizedTime = 0;
|
||||
public Animator animator;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute () {
|
||||
animator.Play(stateName, -1, normalizedTime);
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class AnimatorSetBoolAction : InteractableAction {
|
||||
public string propertyName;
|
||||
public bool value;
|
||||
public Animator animator;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute () {
|
||||
animator.SetBool(propertyName, value);
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class ActivateParticleSystem : InteractableAction {
|
||||
public ParticleSystem particleSystem;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute () {
|
||||
particleSystem.Play();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class DelayAction : InteractableAction {
|
||||
public float delay;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute () {
|
||||
float time = Time.time + delay;
|
||||
while (Time.time < time) yield return CoroutineAction.Tick;
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SetObjectActiveAction : InteractableAction {
|
||||
public GameObject target;
|
||||
public bool active;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute () {
|
||||
target.SetActive(active);
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class InstantiatePrefab : InteractableAction {
|
||||
public GameObject prefab;
|
||||
public Transform position;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute () {
|
||||
if (prefab != null && position != null) {
|
||||
GameObject.Instantiate(prefab, position.position, position.rotation);
|
||||
}
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class CallFunction : InteractableAction {
|
||||
public UnityEngine.Events.UnityEvent function;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute () {
|
||||
function.Invoke();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class TeleportAgentAction : InteractableAction {
|
||||
public Transform destination;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute (IAstarAI ai) {
|
||||
ai.Teleport(destination.position);
|
||||
yield break;
|
||||
}
|
||||
|
||||
#if MODULE_ENTITIES
|
||||
public override IEnumerator<CoroutineAction> Execute (AgentOffMeshLinkTraversalContext context) {
|
||||
context.Teleport(destination.position);
|
||||
yield break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class TeleportAgentOnLinkAction : InteractableAction {
|
||||
public enum Destination {
|
||||
/// <summary>The side of the link that the agent starts traversing it from</summary>
|
||||
RelativeStartOfLink,
|
||||
/// <summary>The side of the link that is opposite the one the agent starts traversing it from</summary>
|
||||
RelativeEndOfLink,
|
||||
}
|
||||
|
||||
public Destination destination = Destination.RelativeEndOfLink;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute() => throw new System.NotImplementedException("This action only works for agents traversing off-mesh links.");
|
||||
|
||||
#if MODULE_ENTITIES
|
||||
public override IEnumerator<CoroutineAction> Execute (AgentOffMeshLinkTraversalContext context) {
|
||||
context.Teleport(destination == Destination.RelativeStartOfLink ? context.link.relativeStart : context.link.relativeEnd);
|
||||
yield break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class SetTransformAction : InteractableAction {
|
||||
public Transform transform;
|
||||
public Transform source;
|
||||
public bool setPosition = true;
|
||||
public bool setRotation;
|
||||
public bool setScale;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute () {
|
||||
if (setPosition) transform.position = source.position;
|
||||
if (setRotation) transform.rotation = source.rotation;
|
||||
if (setScale) transform.localScale = source.localScale;
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class MoveToAction : InteractableAction {
|
||||
public Transform destination;
|
||||
public bool useRotation;
|
||||
public bool waitUntilReached;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute (IAstarAI ai) {
|
||||
var dest = destination.position;
|
||||
#if MODULE_ENTITIES
|
||||
if (useRotation && ai is FollowerEntity follower) {
|
||||
follower.SetDestination(dest, destination.rotation * Vector3.forward);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
if (useRotation) Debug.LogError("useRotation is only supported for FollowerEntity agents", ai as MonoBehaviour);
|
||||
ai.destination = dest;
|
||||
}
|
||||
|
||||
if (waitUntilReached) {
|
||||
if (ai is AIBase || ai is AILerp) {
|
||||
// Only the FollowerEntity component is good enough to set the reachedDestination property to false immediately.
|
||||
// The other movement scripts need to wait for the new path to be available, which is somewhat annoying.
|
||||
ai.SearchPath();
|
||||
while (ai.pathPending) yield return CoroutineAction.Tick;
|
||||
}
|
||||
|
||||
while (!ai.reachedDestination) {
|
||||
if (ai.destination != dest) {
|
||||
// Something else must have changed the destination
|
||||
yield return CoroutineAction.Cancel;
|
||||
}
|
||||
if (ai.reachedEndOfPath) {
|
||||
// We have reached the end of the path, but not the destination
|
||||
// This must mean that we cannot get any closer
|
||||
// TODO: More accurate 'cannot move forwards' check
|
||||
yield return CoroutineAction.Cancel;
|
||||
}
|
||||
yield return CoroutineAction.Tick;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if MODULE_ENTITIES
|
||||
public override IEnumerator<CoroutineAction> Execute (AgentOffMeshLinkTraversalContext context) {
|
||||
while (!context.MoveTowards(destination.position, destination.rotation, true, true).reached) {
|
||||
yield return CoroutineAction.Tick;
|
||||
}
|
||||
yield break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class InteractAction : InteractableAction {
|
||||
public Interactable interactable;
|
||||
|
||||
public override IEnumerator<CoroutineAction> Execute (IAstarAI ai) {
|
||||
var it = interactable.InteractCoroutine(ai);
|
||||
while (it.MoveNext()) {
|
||||
yield return it.Current;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeReference]
|
||||
public List<InteractableAction> actions;
|
||||
|
||||
public void Interact (IAstarAI ai) {
|
||||
StartCoroutine(InteractCoroutine(ai));
|
||||
}
|
||||
|
||||
#if MODULE_ENTITIES
|
||||
IOffMeshLinkStateMachine IOffMeshLinkHandler.GetOffMeshLinkStateMachine(AgentOffMeshLinkTraversalContext context) => this;
|
||||
|
||||
IEnumerable IOffMeshLinkStateMachine.OnTraverseOffMeshLink (AgentOffMeshLinkTraversalContext context) {
|
||||
var it = InteractCoroutine(context);
|
||||
while (it.MoveNext()) {
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator<CoroutineAction> InteractCoroutine (Pathfinding.ECS.AgentOffMeshLinkTraversalContext context) {
|
||||
if (actions.Count == 0) {
|
||||
Debug.LogWarning("No actions have been set up for this interactable", this);
|
||||
yield break;
|
||||
}
|
||||
|
||||
var actionIndex = 0;
|
||||
while (actionIndex < actions.Count) {
|
||||
var action = actions[actionIndex];
|
||||
if (action == null) {
|
||||
actionIndex++;
|
||||
continue;
|
||||
}
|
||||
|
||||
var enumerator = action.Execute(context);
|
||||
while (enumerator.MoveNext()) {
|
||||
yield return enumerator.Current;
|
||||
if (enumerator.Current == CoroutineAction.Cancel) yield break;
|
||||
}
|
||||
|
||||
actionIndex++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
public IEnumerator<CoroutineAction> InteractCoroutine (IAstarAI ai) {
|
||||
if (actions.Count == 0) {
|
||||
Debug.LogWarning("No actions have been set up for this interactable", this);
|
||||
yield break;
|
||||
}
|
||||
|
||||
var actionIndex = 0;
|
||||
while (actionIndex < actions.Count) {
|
||||
var action = actions[actionIndex];
|
||||
if (action == null) {
|
||||
actionIndex++;
|
||||
continue;
|
||||
}
|
||||
|
||||
var enumerator = action.Execute(ai);
|
||||
while (enumerator.MoveNext()) {
|
||||
yield return enumerator.Current;
|
||||
if (enumerator.Current == CoroutineAction.Cancel) yield break;
|
||||
}
|
||||
|
||||
actionIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
void OnEnable () {
|
||||
// Allow the interactable to be triggered by an agent traversing an off-mesh link
|
||||
if (TryGetComponent<NodeLink2>(out var link)) link.onTraverseOffMeshLink = this;
|
||||
}
|
||||
|
||||
void OnDisable () {
|
||||
if (TryGetComponent<NodeLink2>(out var link) && link.onTraverseOffMeshLink == (IOffMeshLinkHandler)this) link.onTraverseOffMeshLink = null;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb8246096363e0b48b549a58001a0bc4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/Interactable.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,38 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
using Pathfinding.RVO;
|
||||
|
||||
/// <summary>
|
||||
/// Player controlled character which RVO agents will avoid.
|
||||
/// This script is intended to show how you can make NPCs avoid
|
||||
/// a player controlled (or otherwise externally controlled) character.
|
||||
///
|
||||
/// See: Pathfinding.RVO.RVOController
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(RVOController))]
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/manualrvoagent.html")]
|
||||
public class ManualRVOAgent : MonoBehaviour {
|
||||
RVOController rvo;
|
||||
|
||||
public float speed = 1;
|
||||
|
||||
void Awake () {
|
||||
rvo = GetComponent<RVOController>();
|
||||
}
|
||||
|
||||
/// <summary>[ManualRVOVelocity]</summary>
|
||||
void Update () {
|
||||
var x = Input.GetAxis("Horizontal");
|
||||
var y = Input.GetAxis("Vertical");
|
||||
|
||||
var v = new Vector3(x, 0, y) * speed;
|
||||
|
||||
// Override the RVOController's velocity. This will disable local avoidance calculations for one simulation step.
|
||||
rvo.velocity = v;
|
||||
transform.position += v * Time.deltaTime;
|
||||
}
|
||||
/// <summary>[ManualRVOVelocity]</summary>
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 235da29a51432412ca18f3924e2d4c2d
|
||||
timeCreated: 1466892028
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/ManualRVOAgent.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,90 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
/// <summary>
|
||||
/// Helper for adding animation to agents.
|
||||
///
|
||||
/// This script will forward the movement velocity to the animator component using the following animator parameters:
|
||||
///
|
||||
/// - InputMagnitude: Movement speed, normalized by the agent's natural speed. 1 if the agent is moving at its natural speed, and 0 if it is standing still.
|
||||
/// - X: Horizontal movement speed, normalized by the agent's natural speed.
|
||||
/// - Y: Vertical movement speed, normalized by the agent's natural speed.
|
||||
/// </summary>
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/mecanimbridge2d.html")]
|
||||
public class MecanimBridge2D : VersionedMonoBehaviour {
|
||||
/// <summary>
|
||||
/// How much to smooth the velocity of the agent.
|
||||
///
|
||||
/// The velocity will be smoothed out over approximately this number of seconds.
|
||||
/// A value of zero indicates no smoothing.
|
||||
/// </summary>
|
||||
public float velocitySmoothing = 1;
|
||||
|
||||
/// <summary>
|
||||
/// The natural movement speed is the speed that the animations are designed for.
|
||||
///
|
||||
/// One can for example configure the animator to speed up the animation if the agent moves faster than this, or slow it down if the agent moves slower than this.
|
||||
/// </summary>
|
||||
public float naturalSpeed = 5;
|
||||
|
||||
/// <summary>
|
||||
/// How the agent's rotation is handled.
|
||||
///
|
||||
/// See: <see cref="RotationMode"/>
|
||||
/// </summary>
|
||||
public RotationMode rotationMode = RotationMode.Hide;
|
||||
|
||||
public enum RotationMode {
|
||||
/// <summary>The agent's transform will rotate towards the movement direction</summary>
|
||||
RotateTransform,
|
||||
/// <summary>
|
||||
/// The agent will not visibly rotate.
|
||||
///
|
||||
/// This is useful if your animation changes the agent's sprite to show a rotation.
|
||||
/// Internally, the agent's rotation property will still return the true rotation of the agent.
|
||||
///
|
||||
/// This is implemented by setting <see cref="FollowerEntity.updateRotation"/> to false on the agent.
|
||||
/// </summary>
|
||||
Hide,
|
||||
}
|
||||
|
||||
/// <summary>Cached reference to the movement script</summary>
|
||||
IAstarAI ai;
|
||||
|
||||
/// <summary>Cached Animator component</summary>
|
||||
Animator anim;
|
||||
|
||||
Vector2 smoothedVelocity;
|
||||
|
||||
protected override void Awake () {
|
||||
base.Awake();
|
||||
ai = GetComponent<IAstarAI>();
|
||||
anim = GetComponentInChildren<Animator>();
|
||||
}
|
||||
|
||||
void Update () {
|
||||
if (ai == null || anim == null) return;
|
||||
|
||||
var updateRotation = rotationMode == RotationMode.RotateTransform;
|
||||
// TODO: Expose this property using an interface
|
||||
if (ai is AIBase aiBase) aiBase.updateRotation = updateRotation;
|
||||
else if (ai is AILerp aiLerp) aiLerp.updateRotation = updateRotation;
|
||||
#if MODULE_ENTITIES
|
||||
else if (ai is FollowerEntity follower) follower.updateRotation = updateRotation;
|
||||
#endif
|
||||
|
||||
var desiredVelocity = naturalSpeed > 0 ? ai.desiredVelocity / naturalSpeed : ai.desiredVelocity;
|
||||
var movementPlane = ai.movementPlane;
|
||||
var desiredVelocity2D = (Vector2)movementPlane.ToPlane(desiredVelocity, out var _);
|
||||
anim.SetFloat("NormalizedSpeed", ai.reachedEndOfPath || desiredVelocity2D.magnitude < 0.1f ? 0f : desiredVelocity2D.magnitude);
|
||||
|
||||
smoothedVelocity = Vector3.Lerp(smoothedVelocity, desiredVelocity2D, velocitySmoothing > 0 ? Time.deltaTime / velocitySmoothing : 1);
|
||||
if (smoothedVelocity.magnitude < 0.4f) {
|
||||
smoothedVelocity = smoothedVelocity.normalized * 0.4f;
|
||||
}
|
||||
|
||||
anim.SetFloat("X", smoothedVelocity.x);
|
||||
anim.SetFloat("Y", smoothedVelocity.y);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dbd490669bd16fc4bab5cd103415a535
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/MecanimBridge2D.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,3 @@
|
||||
// This file has been removed from the package. Since UnityPackages cannot
|
||||
// delete files, only replace them, this message is left here to prevent old
|
||||
// files from causing compiler errors.
|
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f35b84b127b849e38b74966118e7e0f
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/MineBotAI.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,109 @@
|
||||
using Pathfinding.Util;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
/// <summary>
|
||||
/// Animation helper specifically made for the spider robot in the example scenes.
|
||||
/// The spider robot (or mine-bot) which has been copied from the Unity Example Project
|
||||
/// can have this script attached to be able to pathfind around with animations working properly.
|
||||
///
|
||||
/// This script should be attached to a parent GameObject however since the original bot has Z+ as up.
|
||||
/// This component requires Z+ to be forward and Y+ to be up.
|
||||
///
|
||||
/// A movement script (e.g AIPath) must also be attached to the same GameObject to actually move the unit.
|
||||
///
|
||||
/// This script will forward the movement speed to the animator component (<see cref="anim)"/> using the following animator parameter:
|
||||
/// - NormalizedSpeed: Movement speed in world units, divided by <see cref="MineBotAnimation.naturalSpeed"/> and the character's scale. This will be 1 when the agent is moving at the natural speed, and 0 when it is standing still.
|
||||
///
|
||||
/// When the end of path is reached, if the <see cref="endOfPathEffect"/> is not null, it will be instantiated at the current position. However, a check will be
|
||||
/// done so that it won't spawn effects too close to the previous spawn-point.
|
||||
/// [Open online documentation to see images]
|
||||
/// </summary>
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/minebotanimation.html")]
|
||||
public class MineBotAnimation : VersionedMonoBehaviour {
|
||||
/// <summary>Animator component</summary>
|
||||
public Animator anim;
|
||||
|
||||
/// <summary>
|
||||
/// Effect which will be instantiated when end of path is reached.
|
||||
/// See: <see cref="OnTargetReached"/>
|
||||
/// </summary>
|
||||
public GameObject endOfPathEffect;
|
||||
|
||||
/// <summary>
|
||||
/// The natural movement speed is the speed that the animations are designed for.
|
||||
///
|
||||
/// One can for example configure the animator to speed up the animation if the agent moves faster than this, or slow it down if the agent moves slower than this.
|
||||
/// </summary>
|
||||
public float naturalSpeed = 5f;
|
||||
|
||||
bool isAtEndOfPath;
|
||||
|
||||
IAstarAI ai;
|
||||
Transform tr;
|
||||
|
||||
const string NormalizedSpeedKey = "NormalizedSpeed";
|
||||
static int NormalizedSpeedKeyHash = Animator.StringToHash(NormalizedSpeedKey);
|
||||
|
||||
protected override void Awake () {
|
||||
base.Awake();
|
||||
ai = GetComponent<IAstarAI>();
|
||||
tr = GetComponent<Transform>();
|
||||
if (anim != null && !HasParameter(anim, NormalizedSpeedKey)) {
|
||||
Debug.LogError($"No '{NormalizedSpeedKey}' parameter found on the animator. The animator must have a float parameter called '{NormalizedSpeedKey}'", this);
|
||||
enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
static bool HasParameter (Animator animator, string paramName) {
|
||||
foreach (AnimatorControllerParameter param in animator.parameters) if (param.name == paramName) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>Point for the last spawn of <see cref="endOfPathEffect"/></summary>
|
||||
protected Vector3 lastTarget;
|
||||
|
||||
/// <summary>
|
||||
/// Called when the end of path has been reached.
|
||||
/// An effect (<see cref="endOfPathEffect)"/> is spawned when this function is called
|
||||
/// However, since paths are recalculated quite often, we only spawn the effect
|
||||
/// when the current position is some distance away from the previous spawn-point
|
||||
/// </summary>
|
||||
void OnTargetReached () {
|
||||
if (endOfPathEffect != null && Vector3.Distance(tr.position, lastTarget) > 1) {
|
||||
GameObject.Instantiate(endOfPathEffect, tr.position, tr.rotation);
|
||||
lastTarget = tr.position;
|
||||
}
|
||||
}
|
||||
|
||||
void OnEnable () {
|
||||
// Process all components in a batched fashion to avoid Unity overhead
|
||||
// See https://blog.unity.com/engine-platform/10000-update-calls
|
||||
BatchedEvents.Add(this, BatchedEvents.Event.Update, OnUpdate);
|
||||
}
|
||||
|
||||
void OnDisable () {
|
||||
BatchedEvents.Remove(this);
|
||||
}
|
||||
|
||||
static void OnUpdate (MineBotAnimation[] components, int count) {
|
||||
for (int i = 0; i < count; i++) components[i].OnUpdate();
|
||||
}
|
||||
|
||||
void OnUpdate () {
|
||||
if (ai == null) return;
|
||||
|
||||
if (ai.reachedEndOfPath) {
|
||||
if (!isAtEndOfPath) OnTargetReached();
|
||||
isAtEndOfPath = true;
|
||||
} else isAtEndOfPath = false;
|
||||
|
||||
// Calculate the velocity relative to this transform's orientation
|
||||
Vector3 relVelocity = tr.InverseTransformDirection(ai.velocity);
|
||||
relVelocity.y = 0;
|
||||
|
||||
// Speed relative to the character size
|
||||
anim.SetFloat(NormalizedSpeedKeyHash, relVelocity.magnitude / (naturalSpeed * anim.transform.lossyScale.x));
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8503d71a898994d3288ce1708e2707fe
|
||||
timeCreated: 1516539312
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/MineBotAnimation.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,72 @@
|
||||
#pragma warning disable IDE0051
|
||||
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using Pathfinding.Util;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
[ExecuteInEditMode]
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/minimumunityversionwarning.html")]
|
||||
public class MinimumUnityVersionWarning : MonoBehaviour {
|
||||
#if !MODULE_ENTITIES || !UNITY_2022_2_OR_NEWER || !UNITY_2022_3_OR_NEWER
|
||||
bool requiresUnity2022_2;
|
||||
bool requiresUnity2022_3;
|
||||
bool requiresEntities;
|
||||
|
||||
|
||||
void Awake () {
|
||||
requiresEntities = UnityCompatibility.FindAnyObjectByType<Pathfinding.FollowerEntity>() != null || UnityCompatibility.FindAnyObjectByType<Pathfinding.Examples.LightweightRVO>() != null;
|
||||
// Box colliders from scenes created in Unity 2022+ are not compatible with older versions of Unity. They will end with the wrong size.
|
||||
// The minimum version of the entitites package also requires Unity 2022
|
||||
requiresUnity2022_2 = UnityCompatibility.FindAnyObjectByType<BoxCollider>() != null || requiresEntities;
|
||||
// Navmesh cutting requires Unity 2022.3 or newer due to unity bugs in earlier versions
|
||||
requiresUnity2022_3 = UnityCompatibility.FindAnyObjectByType<NavmeshCut>() != null || UnityCompatibility.FindAnyObjectByType<NavmeshAdd>() != null;
|
||||
}
|
||||
|
||||
IEnumerator Start () {
|
||||
// Catch dynamically spawned prefabs
|
||||
yield return null;
|
||||
Awake();
|
||||
}
|
||||
|
||||
void OnGUI () {
|
||||
#if !UNITY_2022_3_OR_NEWER
|
||||
if (requiresUnity2022_3) {
|
||||
var rect = new Rect(Screen.width/2 - 325, Screen.height/2 - 30, 650, 60);
|
||||
GUILayout.BeginArea(rect, "", "box");
|
||||
GUILayout.Label($"<b>Unity version too low</b>\nThis example scene can unfortunately not be played in your version of Unity, due to a Unity bug.\nYou must upgrade to Unity 2022.3 or later.");
|
||||
GUILayout.EndArea();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !UNITY_2022_2_OR_NEWER
|
||||
if (requiresUnity2022_2) {
|
||||
var rect = new Rect(Screen.width/2 - 325, Screen.height/2 - 30, 650, 60);
|
||||
GUILayout.BeginArea(rect, "", "box");
|
||||
GUILayout.Label($"<b>Unity version too low</b>\nThis example scene can unfortunately not be played in your version of Unity, due to compatibility issues.\nYou must upgrade to Unity 2022.2 or later.");
|
||||
GUILayout.EndArea();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !MODULE_ENTITIES
|
||||
if (requiresEntities) {
|
||||
var rect = new Rect(Screen.width/2 - 325, Screen.height/2 - 30, 650, 80);
|
||||
GUILayout.BeginArea(rect, "", "box");
|
||||
#if UNITY_EDITOR
|
||||
GUILayout.Label("<b>Just one more step</b>\nThis example scene requires version 1.0 or higher of the <b>Entities</b> package to be installed.");
|
||||
if (GUILayout.Button("Install")) {
|
||||
UnityEditor.PackageManager.Client.Add("com.unity.entities");
|
||||
}
|
||||
#else
|
||||
GUILayout.Label("<b>Just one more step</b>\nThis example scene requires version 1.0 or higher of the <b>Entities</b> package to be installed\nYou can install it from the Unity Package Manager");
|
||||
#endif
|
||||
GUILayout.EndArea();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 786ae4169b6714241b0ba3c766cdc57f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/MinimumUnityVersionWarning.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,54 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding {
|
||||
/// <summary>
|
||||
/// Attach to any GameObject and the object will be clamped to the navmesh.
|
||||
/// If a GameObject has this component attached, one or more graph linecasts will be carried out every frame to ensure that the object
|
||||
/// does not leave the navmesh area.
|
||||
///
|
||||
/// It can be used with grid graphs, layered grid graphs, navmesh graphs and recast graphs.
|
||||
/// </summary>
|
||||
[AddComponentMenu("Pathfinding/Navmesh Clamp")]
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/navmeshclamp.html")]
|
||||
public class NavmeshClamp : MonoBehaviour {
|
||||
GraphNode prevNode;
|
||||
Vector3 prevPos;
|
||||
|
||||
// Update is called once per frame
|
||||
void LateUpdate () {
|
||||
if (prevNode == null || prevNode.Destroyed) {
|
||||
var nninfo = AstarPath.active.GetNearest(transform.position);
|
||||
prevNode = nninfo.node;
|
||||
prevPos = transform.position;
|
||||
}
|
||||
|
||||
if (prevNode == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (prevNode != null) {
|
||||
var graph = AstarData.GetGraph(prevNode) as IRaycastableGraph;
|
||||
if (graph != null) {
|
||||
GraphHitInfo hit;
|
||||
if (graph.Linecast(prevPos, transform.position, out hit) && hit.node != null) {
|
||||
hit.point.y = transform.position.y;
|
||||
Vector3 closest = VectorMath.ClosestPointOnLine(hit.tangentOrigin, hit.tangentOrigin+hit.tangent, transform.position);
|
||||
Vector3 ohit = hit.point;
|
||||
ohit = ohit + Vector3.ClampMagnitude((Vector3)hit.node.position-ohit, 0.008f);
|
||||
if (graph.Linecast(ohit, closest, out hit)) {
|
||||
hit.point.y = transform.position.y;
|
||||
transform.position = hit.point;
|
||||
} else {
|
||||
closest.y = transform.position.y;
|
||||
|
||||
transform.position = closest;
|
||||
}
|
||||
}
|
||||
prevNode = hit.node;
|
||||
}
|
||||
}
|
||||
|
||||
prevPos = transform.position;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c46a80ea33e9a403ea2308975022ec42
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/NavmeshClamp.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,88 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
/// <summary>Small sample script for placing obstacles</summary>
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/objectplacer.html")]
|
||||
public class ObjectPlacer : MonoBehaviour {
|
||||
/// <summary>
|
||||
/// GameObject to place.
|
||||
/// When using a Grid Graph you need to make sure the object's layer is included in the collision mask in the GridGraph settings.
|
||||
/// </summary>
|
||||
public GameObject go;
|
||||
|
||||
/// <summary>Flush Graph Updates directly after placing. Slower, but updates are applied immidiately</summary>
|
||||
public bool direct = false;
|
||||
|
||||
/// <summary>Issue a graph update object after placement</summary>
|
||||
public bool issueGUOs = true;
|
||||
|
||||
/// <summary>Align created objects to the surface normal where it is created</summary>
|
||||
public bool alignToSurface = false;
|
||||
|
||||
/// <summary>Global offset of the placed object relative to the mouse cursor</summary>
|
||||
public Vector3 offset;
|
||||
|
||||
/// <summary>Randomize rotation of the placed object</summary>
|
||||
public bool randomizeRotation = false;
|
||||
|
||||
float lastPlacedTime;
|
||||
|
||||
/// <summary>Update is called once per frame</summary>
|
||||
void Update () {
|
||||
// Check if P is being pressed.
|
||||
// Don't place objects if ctrl is pressed to avoid conflicts with the pause shortcut (ctrl+shift+P)
|
||||
if (!Input.GetKey(KeyCode.LeftControl) && (Input.GetKeyDown("p") || (Input.GetKey("p") && Time.time - lastPlacedTime > 0.3f))) {
|
||||
PlaceObject();
|
||||
}
|
||||
|
||||
if (Input.GetKeyDown("r")) {
|
||||
RemoveObject();
|
||||
}
|
||||
}
|
||||
|
||||
public void PlaceObject () {
|
||||
lastPlacedTime = Time.time;
|
||||
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||||
|
||||
// Figure out where the ground is
|
||||
if (Physics.Raycast(ray, out var hit, Mathf.Infinity, ~0)) {
|
||||
Vector3 p = hit.point + offset;
|
||||
var rot = Quaternion.identity;
|
||||
if (alignToSurface) rot = Quaternion.LookRotation(hit.normal, Vector3.right) * Quaternion.Euler(90, 0, 0);
|
||||
if (randomizeRotation) rot = Random.rotation;
|
||||
GameObject obj = GameObject.Instantiate(go, p, rot) as GameObject;
|
||||
|
||||
if (issueGUOs) {
|
||||
Bounds b = obj.GetComponent<Collider>().bounds;
|
||||
GraphUpdateObject guo = new GraphUpdateObject(b);
|
||||
AstarPath.active.UpdateGraphs(guo);
|
||||
if (direct) {
|
||||
AstarPath.active.FlushGraphUpdates();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveObject () {
|
||||
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||||
|
||||
// Check what object is under the mouse cursor
|
||||
if (Physics.Raycast(ray, out var hit, Mathf.Infinity)) {
|
||||
// Ignore ground and triggers
|
||||
if (hit.collider.isTrigger || hit.transform.gameObject.name == "Ground") return;
|
||||
|
||||
Bounds b = hit.collider.bounds;
|
||||
Destroy(hit.collider);
|
||||
Destroy(hit.collider.gameObject);
|
||||
|
||||
if (issueGUOs) {
|
||||
GraphUpdateObject guo = new GraphUpdateObject(b);
|
||||
AstarPath.active.UpdateGraphs(guo);
|
||||
if (direct) {
|
||||
AstarPath.active.FlushGraphUpdates();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 687e3bc0934ac46d3957e59872965f3c
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/ObjectPlacer.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,51 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding {
|
||||
/// <summary>
|
||||
/// Updates the recast tile(s) it is in at start, needs RecastTileUpdateHandler.
|
||||
///
|
||||
/// If there is a collider attached to the same GameObject, the bounds
|
||||
/// of that collider will be used for updating, otherwise
|
||||
/// only the position of the object will be used.
|
||||
///
|
||||
/// Note: This class needs a RecastTileUpdateHandler somewhere in the scene.
|
||||
/// See the documentation for that class, it contains more information.
|
||||
///
|
||||
/// Note: This does not use navmesh cutting. If you only ever add
|
||||
/// obstacles, but never add any new walkable surfaces then you might
|
||||
/// want to use navmesh cutting instead. See navmeshcutting (view in online documentation for working links).
|
||||
///
|
||||
/// See: RecastTileUpdateHandler
|
||||
///
|
||||
/// Deprecated: Since version 5.0, this component is not necessary, since normal graph updates on recast graphs are now batched together if they update the same tiles.
|
||||
/// Use e.g. the <see cref="DynamicObstacle"/> component instead.
|
||||
/// </summary>
|
||||
[System.Obsolete("This component is no longer necessary. Normal graph updates on recast graphs are now batched together if they update the same tiles. Use the DynamicObstacle component instead")]
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/recasttileupdate.html")]
|
||||
public class RecastTileUpdate : MonoBehaviour {
|
||||
public static event System.Action<Bounds> OnNeedUpdates;
|
||||
|
||||
void Start () {
|
||||
ScheduleUpdate();
|
||||
}
|
||||
|
||||
void OnDestroy () {
|
||||
ScheduleUpdate();
|
||||
}
|
||||
|
||||
/// <summary>Schedule a tile update for all tiles that contain this object</summary>
|
||||
public void ScheduleUpdate () {
|
||||
var collider = GetComponent<Collider>();
|
||||
|
||||
if (collider != null) {
|
||||
if (OnNeedUpdates != null) {
|
||||
OnNeedUpdates(collider.bounds);
|
||||
}
|
||||
} else {
|
||||
if (OnNeedUpdates != null) {
|
||||
OnNeedUpdates(new Bounds(transform.position, Vector3.zero));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c17ca1d2569424ba1be3606fe1bb5c7d
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/RecastTileUpdate.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,162 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding {
|
||||
/// <summary>
|
||||
/// Helper for easier fast updates to recast graphs.
|
||||
///
|
||||
/// When updating recast graphs, you might just have plonked down a few
|
||||
/// GraphUpdateScene objects or issued a few GraphUpdateObjects to the
|
||||
/// system. This works fine if you are only issuing a few but the problem
|
||||
/// is that they don't have any coordination in between themselves. So if
|
||||
/// you have 10 GraphUpdateScene objects in one tile, they will all update
|
||||
/// that tile (10 times in total) instead of just updating it once which
|
||||
/// is all that is required (meaning it will be 10 times slower than just
|
||||
/// updating one tile). This script exists to help with updating only the
|
||||
/// tiles that need updating and only updating them once instead of
|
||||
/// multiple times.
|
||||
///
|
||||
/// It is coupled with the RecastTileUpdate component, which works a bit
|
||||
/// like the GraphUpdateScene component, just with fewer options. You can
|
||||
/// attach the RecastTileUpdate to any GameObject to have it schedule an
|
||||
/// update for the tile(s) that contain the GameObject. E.g if you are
|
||||
/// creating a new building somewhere, you can attach the RecastTileUpdate
|
||||
/// component to it to make it update the graph when it is instantiated.
|
||||
///
|
||||
/// If a single tile contains multiple RecastTileUpdate components and
|
||||
/// many try to update the graph at the same time, only one tile update
|
||||
/// will be done, which greatly improves performance.
|
||||
///
|
||||
/// If you have objects that are instantiated at roughly the same time
|
||||
/// but not exactly the same frame, you can use the maxThrottlingDelay
|
||||
/// field. It will delay updates up to that number of seconds to allow
|
||||
/// more updates to be batched together.
|
||||
///
|
||||
/// Note: You should only have one instance of this script in the scene
|
||||
/// if you only have a single recast graph. If you have more than one
|
||||
/// graph you can have more than one instance of this script but you need
|
||||
/// to manually call the SetGraph method to configure it with the correct
|
||||
/// graph.
|
||||
///
|
||||
/// Note: This does not use navmesh cutting. If you only ever add
|
||||
/// obstacles, but never add any new walkable surfaces then you might
|
||||
/// want to use navmesh cutting instead. See navmeshcutting (view in online documentation for working links).
|
||||
///
|
||||
/// Deprecated: Since version 5.0, this component is not necessary, since normal graph updates on recast graphs are now batched together if they update the same tiles.
|
||||
/// Use e.g. the <see cref="DynamicObstacle"/> component instead.
|
||||
/// </summary>
|
||||
[System.Obsolete("This component is no longer necessary. Normal graph updates on recast graphs are now batched together if they update the same tiles. Use the DynamicObstacle component instead")]
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/recasttileupdatehandler.html")]
|
||||
public class RecastTileUpdateHandler : MonoBehaviour {
|
||||
/// <summary>Graph that handles the updates</summary>
|
||||
RecastGraph graph;
|
||||
|
||||
/// <summary>True for a tile if it needs updating</summary>
|
||||
bool[] dirtyTiles;
|
||||
|
||||
/// <summary>True if any elements in dirtyTiles are true</summary>
|
||||
bool anyDirtyTiles = false;
|
||||
|
||||
/// <summary>Earliest update request we are handling right now</summary>
|
||||
float earliestDirty = float.NegativeInfinity;
|
||||
|
||||
/// <summary>All tile updates will be performed within (roughly) this number of seconds</summary>
|
||||
public float maxThrottlingDelay = 0.5f;
|
||||
|
||||
public void SetGraph (RecastGraph graph) {
|
||||
this.graph = graph;
|
||||
|
||||
if (graph == null)
|
||||
return;
|
||||
|
||||
dirtyTiles = new bool[graph.tileXCount*graph.tileZCount];
|
||||
anyDirtyTiles = false;
|
||||
}
|
||||
|
||||
/// <summary>Requests an update to all tiles which touch the specified bounds</summary>
|
||||
public void ScheduleUpdate (Bounds bounds) {
|
||||
if (graph == null) {
|
||||
// If no graph has been set, use the first graph available
|
||||
if (AstarPath.active != null) {
|
||||
SetGraph(AstarPath.active.data.recastGraph);
|
||||
}
|
||||
|
||||
if (graph == null) {
|
||||
Debug.LogError("Received tile update request (from RecastTileUpdate), but no RecastGraph could be found to handle it");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure that tiles which do not strictly
|
||||
// contain this bounds object but which still
|
||||
// might need to be updated are actually updated
|
||||
int voxelCharacterRadius = Mathf.CeilToInt(graph.characterRadius/graph.cellSize);
|
||||
int borderSize = voxelCharacterRadius + 3;
|
||||
|
||||
// Expand borderSize voxels on each side
|
||||
bounds.Expand(new Vector3(borderSize, 0, borderSize)*graph.cellSize*2);
|
||||
|
||||
var touching = graph.GetTouchingTiles(bounds);
|
||||
|
||||
if (touching.Width * touching.Height > 0) {
|
||||
if (!anyDirtyTiles) {
|
||||
earliestDirty = Time.time;
|
||||
anyDirtyTiles = true;
|
||||
}
|
||||
|
||||
for (int z = touching.ymin; z <= touching.ymax; z++) {
|
||||
for (int x = touching.xmin; x <= touching.xmax; x++) {
|
||||
dirtyTiles[z*graph.tileXCount + x] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnEnable () {
|
||||
RecastTileUpdate.OnNeedUpdates += ScheduleUpdate;
|
||||
}
|
||||
|
||||
void OnDisable () {
|
||||
RecastTileUpdate.OnNeedUpdates -= ScheduleUpdate;
|
||||
}
|
||||
|
||||
void Update () {
|
||||
if (anyDirtyTiles && Time.time - earliestDirty >= maxThrottlingDelay && graph != null) {
|
||||
UpdateDirtyTiles();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Update all dirty tiles now</summary>
|
||||
public void UpdateDirtyTiles () {
|
||||
if (graph == null) {
|
||||
new System.InvalidOperationException("No graph is set on this object");
|
||||
}
|
||||
|
||||
if (graph.tileXCount * graph.tileZCount != dirtyTiles.Length) {
|
||||
Debug.LogError("Graph has changed dimensions. Clearing queued graph updates and resetting.");
|
||||
SetGraph(graph);
|
||||
return;
|
||||
}
|
||||
|
||||
for (int z = 0; z < graph.tileZCount; z++) {
|
||||
for (int x = 0; x < graph.tileXCount; x++) {
|
||||
if (dirtyTiles[z*graph.tileXCount + x]) {
|
||||
dirtyTiles[z*graph.tileXCount + x] = false;
|
||||
|
||||
var bounds = graph.GetTileBounds(x, z);
|
||||
|
||||
// Shrink it a bit to make sure other tiles
|
||||
// are not included because of rounding errors
|
||||
bounds.extents *= 0.5f;
|
||||
|
||||
var guo = new GraphUpdateObject(bounds);
|
||||
guo.nnConstraint.graphMask = 1 << (int)graph.graphIndex;
|
||||
|
||||
AstarPath.active.UpdateGraphs(guo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
anyDirtyTiles = false;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e5e3ec6ef8d2e4827b1645ee843bbe16
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/RecastTileUpdateHandler.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,37 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
/// <summary>
|
||||
/// Smooth Camera Following.
|
||||
/// \author http://wiki.unity3d.com/index.php/SmoothFollow2
|
||||
/// </summary>
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/smoothcamerafollow.html")]
|
||||
public class SmoothCameraFollow : VersionedMonoBehaviour {
|
||||
public Transform target;
|
||||
public float distance = 3.0f;
|
||||
public float height = 3.0f;
|
||||
public float damping = 5.0f;
|
||||
public bool enableRotation = true;
|
||||
public bool smoothRotation = true;
|
||||
public float rotationDamping = 10.0f;
|
||||
public bool staticOffset = false;
|
||||
|
||||
void LateUpdate () {
|
||||
Vector3 wantedPosition;
|
||||
|
||||
if (staticOffset) {
|
||||
wantedPosition = target.position + new Vector3(0, height, distance);
|
||||
} else {
|
||||
wantedPosition = target.TransformPoint(0, height, -distance);
|
||||
}
|
||||
transform.position = Vector3.Lerp(transform.position, wantedPosition, Time.deltaTime * damping);
|
||||
|
||||
if (enableRotation) {
|
||||
if (smoothRotation) {
|
||||
Quaternion wantedRotation = Quaternion.LookRotation(target.position - transform.position, target.up);
|
||||
transform.rotation = Quaternion.Slerp(transform.rotation, wantedRotation, Time.deltaTime * rotationDamping);
|
||||
} else transform.LookAt(target, target.up);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 46fb00c7e6ad9485282a146ad398a2a5
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/SmoothCameraFollow.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,25 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using Pathfinding;
|
||||
|
||||
namespace Pathfinding.Examples {
|
||||
/// <summary>
|
||||
/// Helper editor script to snap an object to the closest node.
|
||||
/// Used in the "Turn Based" example scene for snapping obstacles to the hexagon grid.
|
||||
/// </summary>
|
||||
[ExecuteInEditMode]
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/snaptonode.html")]
|
||||
public class SnapToNode : MonoBehaviour {
|
||||
/// <summary>[Update]</summary>
|
||||
void Update () {
|
||||
if (transform.hasChanged && AstarPath.active != null) {
|
||||
var node = AstarPath.active.GetNearest(transform.position, NNConstraint.None).node;
|
||||
if (node != null) {
|
||||
transform.position = (Vector3)node.position;
|
||||
transform.hasChanged = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>[Update]</summary>
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c0acfdba178b145239678a03b9df938a
|
||||
timeCreated: 1453723051
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/SnapToNode.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,190 @@
|
||||
#pragma warning disable 649
|
||||
using UnityEngine;
|
||||
using System.Linq;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Pathfinding.Util;
|
||||
|
||||
namespace Pathfinding {
|
||||
/// <summary>
|
||||
/// Moves the target in example scenes.
|
||||
/// This is a simple script which has the sole purpose
|
||||
/// of moving the target point of agents in the example
|
||||
/// scenes for the A* Pathfinding Project.
|
||||
///
|
||||
/// It is not meant to be pretty, but it does the job.
|
||||
/// </summary>
|
||||
[HelpURL("https://arongranberg.com/astar/documentation/stable/targetmover.html")]
|
||||
public class TargetMover : VersionedMonoBehaviour {
|
||||
/// <summary>Mask for the raycast placement</summary>
|
||||
public LayerMask mask;
|
||||
|
||||
public Transform target;
|
||||
|
||||
/// <summary>Determines if the target position should be updated every frame or only on double-click</summary>
|
||||
bool onlyOnDoubleClick;
|
||||
public Trigger trigger;
|
||||
public GameObject clickEffect;
|
||||
public bool use2D;
|
||||
public PathUtilities.FormationMode formationMode = PathUtilities.FormationMode.SinglePoint;
|
||||
|
||||
Camera cam;
|
||||
|
||||
public enum Trigger {
|
||||
Continuously,
|
||||
SingleClick,
|
||||
DoubleClick
|
||||
}
|
||||
|
||||
public void Start () {
|
||||
// Cache the Main Camera
|
||||
cam = Camera.main;
|
||||
useGUILayout = false;
|
||||
}
|
||||
|
||||
public void OnGUI () {
|
||||
if (trigger != Trigger.Continuously && cam != null && Event.current.type == EventType.MouseDown) {
|
||||
if (Event.current.clickCount == (trigger == Trigger.DoubleClick ? 2 : 1)) {
|
||||
UpdateTargetPosition();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Update is called once per frame</summary>
|
||||
void Update () {
|
||||
if (trigger == Trigger.Continuously && cam != null) {
|
||||
UpdateTargetPosition();
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateTargetPosition () {
|
||||
Vector3 newPosition = Vector3.zero;
|
||||
bool positionFound = false;
|
||||
Transform hitObject = null;
|
||||
|
||||
// If the game view has never been rendered, the mouse position can be infinite
|
||||
if (!float.IsFinite(Input.mousePosition.x)) return;
|
||||
|
||||
if (use2D) {
|
||||
newPosition = cam.ScreenToWorldPoint(Input.mousePosition);
|
||||
newPosition.z = 0;
|
||||
positionFound = true;
|
||||
var collider = Physics2D.OverlapPoint(newPosition, mask);
|
||||
if (collider != null) hitObject = collider.transform;
|
||||
} else {
|
||||
// Fire a ray through the scene at the mouse position and place the target where it hits
|
||||
if (cam.pixelRect.Contains(Input.mousePosition) && Physics.Raycast(cam.ScreenPointToRay(Input.mousePosition), out var hit, Mathf.Infinity, mask)) {
|
||||
newPosition = hit.point;
|
||||
hitObject = hit.transform;
|
||||
positionFound = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (positionFound) {
|
||||
if (target != null) target.position = newPosition;
|
||||
|
||||
if (trigger != Trigger.Continuously) {
|
||||
// Slightly inefficient way of finding all AIs, but this is just an example script, so it doesn't matter much.
|
||||
// FindObjectsByType does not support interfaces unfortunately.
|
||||
var ais = UnityCompatibility.FindObjectsByTypeSorted<MonoBehaviour>().OfType<IAstarAI>().ToList();
|
||||
StopAllCoroutines();
|
||||
|
||||
if (hitObject != null && hitObject.TryGetComponent<Pathfinding.Examples.Interactable>(out var interactable)) {
|
||||
// Pick the first AI to interact with the interactable
|
||||
if (ais.Count > 0) interactable.Interact(ais[0]);
|
||||
} else {
|
||||
if (clickEffect != null) {
|
||||
GameObject.Instantiate(clickEffect, newPosition, Quaternion.identity);
|
||||
}
|
||||
|
||||
// This will calculate individual destinations for each agent, like in a formation pattern.
|
||||
// The simplest mode, FormationMode.SinglePoint, just assigns newPosition to all entries of the 'destinations' list.
|
||||
var destinations = PathUtilities.FormationDestinations(ais, newPosition, formationMode, 0.5f);
|
||||
for (int i = 0; i < ais.Count; i++) {
|
||||
#if MODULE_ENTITIES
|
||||
var isFollowerEntity = ais[i] is FollowerEntity;
|
||||
#else
|
||||
var isFollowerEntity = false;
|
||||
#endif
|
||||
if (ais[i] != null) {
|
||||
ais[i].destination = destinations[i];
|
||||
|
||||
// Make the agents recalculate their path immediately for slighly increased responsiveness.
|
||||
// The FollowerEntity is better at doing this automatically.
|
||||
if (!isFollowerEntity) ais[i].SearchPath();
|
||||
}
|
||||
}
|
||||
|
||||
StartCoroutine(OptimizeFormationDestinations(ais, destinations));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Swap the destinations of pairs of agents if it reduces the total distance they need to travel.
|
||||
///
|
||||
/// This is a simple optimization algorithm to make group movement smoother and more efficient.
|
||||
/// It is not perfect and may not always find the optimal solution, but it is very fast and works well in practice.
|
||||
/// It will not work great for large groups of agents, as the optimization becomes too hard for this simple algorithm.
|
||||
///
|
||||
/// See: https://en.wikipedia.org/wiki/Assignment_problem
|
||||
/// </summary>
|
||||
IEnumerator OptimizeFormationDestinations (List<IAstarAI> ais, List<Vector3> destinations) {
|
||||
// Prevent swapping the same agents multiple times.
|
||||
// This is because the distance measurement is only an approximation, and agents
|
||||
// may temporarily have to move away from their destination before they can move towards it.
|
||||
// Allowing multiple swaps could make the agents move back and forth indefinitely as the targets shift around.
|
||||
var alreadySwapped = new HashSet<(IAstarAI, IAstarAI)>();
|
||||
|
||||
const int IterationsPerFrame = 4;
|
||||
|
||||
while (true) {
|
||||
for (int i = 0; i < IterationsPerFrame; i++) {
|
||||
var a = Random.Range(0, ais.Count);
|
||||
var b = Random.Range(0, ais.Count);
|
||||
if (a == b) continue;
|
||||
if (b < a) Memory.Swap(ref a, ref b);
|
||||
var aiA = ais[a];
|
||||
var aiB = ais[b];
|
||||
|
||||
if ((MonoBehaviour)aiA == null) continue;
|
||||
if ((MonoBehaviour)aiB == null) continue;
|
||||
|
||||
if (alreadySwapped.Contains((aiA, aiB))) continue;
|
||||
|
||||
var pA = aiA.position;
|
||||
var pB = aiB.position;
|
||||
var distA = (pA - destinations[a]).sqrMagnitude;
|
||||
var distB = (pB - destinations[b]).sqrMagnitude;
|
||||
|
||||
var newDistA = (pA - destinations[b]).sqrMagnitude;
|
||||
var newDistB = (pB - destinations[a]).sqrMagnitude;
|
||||
var cost1 = distA + distB;
|
||||
var cost2 = newDistA + newDistB;
|
||||
if (cost2 < cost1 * 0.98f) {
|
||||
// Swap the destinations
|
||||
var tmp = destinations[a];
|
||||
destinations[a] = destinations[b];
|
||||
destinations[b] = tmp;
|
||||
|
||||
aiA.destination = destinations[a];
|
||||
aiB.destination = destinations[b];
|
||||
|
||||
alreadySwapped.Add((aiA, aiB));
|
||||
}
|
||||
}
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnUpgradeSerializedData (ref Serialization.Migrations migrations, bool unityThread) {
|
||||
if (migrations.TryMigrateFromLegacyFormat(out var legacyVersion)) {
|
||||
if (legacyVersion < 2) {
|
||||
trigger = onlyOnDoubleClick ? Trigger.DoubleClick : Trigger.Continuously;
|
||||
}
|
||||
}
|
||||
base.OnUpgradeSerializedData(ref migrations, unityThread);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f903c2eb621d8418d88f8dad81b13dc6
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/ExampleScripts/TargetMover.cs
|
||||
uploadId: 764484
|
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d2fa9a928cd7a49c8afd1146a49db3ce
|
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a532dcc0d3a2cc242976c9d4e0f00536
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@@ -0,0 +1,44 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: AI
|
||||
m_Shader: {fileID: 4800000, guid: 5c4aad560e4da4a59aa10f6f2f6e84ce, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- _Parallax: 0.02
|
||||
- _Shininess: 0.28499067
|
||||
m_Colors:
|
||||
- _Color: {r: 0.003782494, g: 0.60894793, b: 0.8018868, a: 1}
|
||||
- _Emission: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _NotVisibleColor: {r: 0.26148093, g: 0.43469155, b: 0.49056602, a: 1}
|
||||
- _SpecColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db55ebdb9473a4a80a0037f64aafccce
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/AI.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,38 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: BlueBox
|
||||
m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 1
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats: []
|
||||
m_Colors:
|
||||
- _Color: {r: 0.17616302, g: 0.42104328, b: 0.5686275, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 99dbb3f3abc3c4845a9b650ff678e7c1
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/BlueBox.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,80 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: BlueCheckerGround
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: ee2523340e7944c4297a80937a51484c, type: 3}
|
||||
m_Scale: {x: 440, y: 440}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 1
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 3
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 0.18195976, g: 0.45678923, b: 0.8207547, a: 1}
|
||||
- _EmisColor: {r: 0.6492537, g: 0.6492537, b: 0.6492537, a: 0.15686275}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.34100214, g: 0.5011083, b: 0.745283, a: 1}
|
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f4d5503fdeab441e8c6c041504cf535
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/BlueCheckerGround.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,30 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: BlueGround
|
||||
m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 2
|
||||
m_TexEnvs:
|
||||
data:
|
||||
first:
|
||||
name: _MainTex
|
||||
second:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 50, y: 50}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats: {}
|
||||
m_Colors:
|
||||
data:
|
||||
first:
|
||||
name: _Color
|
||||
second: {r: .194386765, g: .46459946, b: .627451003, a: 1}
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b71b71b0a1f9a48768a27ca6eefcfbdf
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/BlueGround.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,45 @@
|
||||
Shader "Diffuse - Always visible" {
|
||||
Properties {
|
||||
_NotVisibleColor ("X-ray color (RGB)", Color) = (0,1,0,1)
|
||||
_Color ("Main Color",Color) = (0.5,0.5,0.5,1)
|
||||
_MainTex ("Base (RGB)", 2D) = "white" {}
|
||||
}
|
||||
SubShader {
|
||||
Tags { "RenderType"="Opaque-1" }
|
||||
LOD 200
|
||||
|
||||
|
||||
|
||||
Pass {
|
||||
ZTest LEqual
|
||||
Material {
|
||||
Diffuse [_Color]
|
||||
Ambient [_Color]
|
||||
}
|
||||
Lighting On
|
||||
|
||||
SetTexture [_MainTex] {
|
||||
Combine texture * primary DOUBLE, texture * primary
|
||||
}
|
||||
}
|
||||
|
||||
Pass {
|
||||
|
||||
ZTest Greater
|
||||
|
||||
Material {
|
||||
Diffuse [_NotVisibleColor]
|
||||
}
|
||||
|
||||
Color [_NotVisibleColor]
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
FallBack "Diffuse"
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c4aad560e4da4a59aa10f6f2f6e84ce
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/DiffuseAlwaysVisible.shader
|
||||
uploadId: 764484
|
@@ -0,0 +1,30 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Door
|
||||
m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 2
|
||||
m_TexEnvs:
|
||||
data:
|
||||
first:
|
||||
name: _MainTex
|
||||
second:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats: {}
|
||||
m_Colors:
|
||||
data:
|
||||
first:
|
||||
name: _Color
|
||||
second: {r: .638857961, g: .854667306, b: 1, a: 1}
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 863174fbef875425ca78e4c949f12318
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/Door.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,140 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Ground
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AddPrecomputedVelocity: 0
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _BlendModePreserveSpecular: 1
|
||||
- _BumpScale: 1
|
||||
- _ClearCoatMask: 0
|
||||
- _ClearCoatSmoothness: 0
|
||||
- _Cull: 2
|
||||
- _Cutoff: 0.5
|
||||
- _DetailAlbedoMapScale: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _EnvironmentReflections: 1
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _QueueOffset: 0
|
||||
- _ReceiveShadows: 1
|
||||
- _Smoothness: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _UVSec: 0
|
||||
- _WorkflowMode: 1
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
||||
--- !u!114 &6330748051324432766
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
version: 9
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3219de2d574674beb889c87b844502b5
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/Ground.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,30 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: OrangeGround
|
||||
m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 2
|
||||
m_TexEnvs:
|
||||
data:
|
||||
first:
|
||||
name: _MainTex
|
||||
second:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats: {}
|
||||
m_Colors:
|
||||
data:
|
||||
first:
|
||||
name: _Color
|
||||
second: {r: .776470602, g: .343709856, b: .185743943, a: 1}
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20e84239fa93246fe8f7f753e8ee4ef2
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/OrangeGround.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,42 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: PathBlueArea
|
||||
m_Shader: {fileID: 6, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 2
|
||||
m_TexEnvs:
|
||||
data:
|
||||
first:
|
||||
name: _MainTex
|
||||
second:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
data:
|
||||
first:
|
||||
name: _Shininess
|
||||
second: .699999988
|
||||
m_Colors:
|
||||
data:
|
||||
first:
|
||||
name: _Color
|
||||
second: {r: 0, g: 0, b: 0, a: 1}
|
||||
data:
|
||||
first:
|
||||
name: _SpecColor
|
||||
second: {r: 1, g: 1, b: 1, a: 0}
|
||||
data:
|
||||
first:
|
||||
name: _Emission
|
||||
second: {r: .263175696, g: .324492931, b: .427450985, a: 1}
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e0bae036cdbd42bfb17a675c07df5f9
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/PathBlueArea.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,42 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: PathRedArea
|
||||
m_Shader: {fileID: 6, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 2
|
||||
m_TexEnvs:
|
||||
data:
|
||||
first:
|
||||
name: _MainTex
|
||||
second:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
data:
|
||||
first:
|
||||
name: _Shininess
|
||||
second: .699999988
|
||||
m_Colors:
|
||||
data:
|
||||
first:
|
||||
name: _Color
|
||||
second: {r: 0, g: 0, b: 0, a: 1}
|
||||
data:
|
||||
first:
|
||||
name: _SpecColor
|
||||
second: {r: 1, g: 1, b: 1, a: 0}
|
||||
data:
|
||||
first:
|
||||
name: _Emission
|
||||
second: {r: .427450985, g: .263175696, b: .263175696, a: 1}
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: deda211578c2d47f69bee1211faed775
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/PathRedArea.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,26 @@
|
||||
Shader "Projector/Light" {
|
||||
Properties {
|
||||
_Color ("Main Color", Color) = (1,1,1,1)
|
||||
_ShadowTex ("Cookie", 2D) = "" { TexGen ObjectLinear }
|
||||
_FalloffTex ("FallOff", 2D) = "" { TexGen ObjectLinear }
|
||||
}
|
||||
Subshader {
|
||||
Pass {
|
||||
ZWrite off
|
||||
Fog { Color (0, 0, 0) }
|
||||
Color [_Color]
|
||||
ColorMask RGB
|
||||
Blend DstColor One
|
||||
Offset -1, -1
|
||||
SetTexture [_ShadowTex] {
|
||||
combine texture * primary, ONE - texture
|
||||
Matrix [_Projector]
|
||||
}
|
||||
SetTexture [_FalloffTex] {
|
||||
constantColor (0,0,0,0)
|
||||
combine previous lerp (texture) constant
|
||||
Matrix [_ProjectorClip]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2bec400a4eb5244d5b08b2425411bc8b
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/Projector
|
||||
Light.shader
|
||||
uploadId: 764484
|
@@ -0,0 +1,56 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: SomeBox
|
||||
m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 2
|
||||
m_TexEnvs:
|
||||
data:
|
||||
first:
|
||||
name: _MainTex
|
||||
second:
|
||||
m_Texture: {fileID: 2800000, guid: 527965173b00f43f9a1b8fc9e8c2e64b, type: 3}
|
||||
m_Scale: {x: 15, y: 15}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
data:
|
||||
first:
|
||||
name: _BumpMap
|
||||
second:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
data:
|
||||
first:
|
||||
name: _Detail
|
||||
second:
|
||||
m_Texture: {fileID: 2800000, guid: 527965173b00f43f9a1b8fc9e8c2e64b, type: 3}
|
||||
m_Scale: {x: 10, y: 10}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
data:
|
||||
first:
|
||||
name: _Shininess
|
||||
second: 1
|
||||
m_Colors:
|
||||
data:
|
||||
first:
|
||||
name: _Color
|
||||
second: {r: 1, g: .800000012, b: .400000006, a: .968627453}
|
||||
data:
|
||||
first:
|
||||
name: _SpecColor
|
||||
second: {r: .5, g: .5, b: .5, a: 1}
|
||||
data:
|
||||
first:
|
||||
name: _NotVisibleColor
|
||||
second: {r: 0, g: 1, b: 0, a: 1}
|
||||
--- !u!1002 &2100001
|
||||
EditorExtensionImpl:
|
||||
serializedVersion: 6
|
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 86ebf3c4b42174d2a9d3c1dfd2476f32
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/Classic/SomeBox.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 310f9ca054f55c5498bc919fd7950b33
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@@ -0,0 +1,84 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Blue_Mat
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 0.37647063, g: 0.81568635, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 71a858ba546c4384ba82023e8ab44986
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Blue_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,84 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Crystal_Mat
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.443
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 0.582
|
||||
- _Glossiness: 0.658
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0.407
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 1
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 0.14308177, b: 0.1273585, a: 1}
|
||||
- _EmissionColor: {r: 0.6698113, g: 0.072668225, b: 0.072668225, a: 1}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 46bfd23cf2ee42d4aa7f51037f216531
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Crystal_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,83 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Diffuse_Mat
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 1
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: d17b17981e4ecc44ea647636e4c17e84, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4e16e0433c380794a9c23754d7ffe414
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Diffuse_Mat.mat
|
||||
uploadId: 764484
|
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,147 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d17b17981e4ecc44ea647636e4c17e84
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Diffuse_Texture.png
|
||||
uploadId: 764484
|
@@ -0,0 +1,83 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Grass_Mat
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 0.4207503, g: 0.5754717, b: 0.05700427, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6126e4994db73964388a14e900a04d28
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Grass_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,87 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Hidden
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _ALPHAPREMULTIPLY_ON
|
||||
- _GLOSSYREFLECTIONS_OFF
|
||||
- _SPECULARHIGHLIGHTS_OFF
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 3000
|
||||
stringTagMap:
|
||||
RenderType: Transparent
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 10
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _Metallic: 0
|
||||
- _Mode: 3
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 0
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 0
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b2bc65b93544b3c47a26df7eb4b21a32
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Hidden.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,83 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: ObstacleFloor_Mat
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 33ae24b11035ddb4880db078773c9fba
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/ObstacleFloor_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e537d3729cd624e449ec3e19d4c5c4a2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SciFi_Arrow_Mat
|
||||
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 75627434f47f6154c914c8abc898978e, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 3
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 73b6ebb77b682684d9e6c0208c405849
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Particle/SciFi_Arrow_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SciFi_Beam_Mat
|
||||
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 2fd7aebd58fcc5249b25424d1372cdba, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: daaf7b225ca66364e8cd5c340579f3de
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Particle/SciFi_Beam_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SciFi_Cloud_Mat
|
||||
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 0fdb2777633228545959b03372afb4ae, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 3
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9161fa2725e54dd4191863e28bcb55af
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Particle/SciFi_Cloud_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SciFi_Halo_Mat
|
||||
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: cae36fb8742b2d946ba74c88276f8ffc, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 3
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f80b7ffcc9cf934887564b802c008b3
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Particle/SciFi_Halo_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SciFi_Particle_Mat
|
||||
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 403cbaf6949a0bf4d85e4af60cc36628, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 16e52134cda9efb4faca6f788ac1b7e8
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Particle/SciFi_Particle_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SciFi_Ripple_Mat
|
||||
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: bb3eb4aa148900d47954a8c1f2a379f5, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d17436d25056a4d40850e2362edbfdbc
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Particle/SciFi_Ripple_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SciFi_Scan_Mat
|
||||
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 9eb009f85d52c994e847abbf73f2ae1c, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0f9aaa518dfb5eb4697379ced547432f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Particle/SciFi_Scan_Mat.mat
|
||||
uploadId: 764484
|
@@ -0,0 +1,85 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SciFi_Sparkle_Mat
|
||||
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 290c81c52083eef4c922d78fdbb80838, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _InvFade: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
||||
m_BuildTextureStacks: []
|
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0234891270ff6084290fe84a62c5c124
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 87744
|
||||
packageName: A* Pathfinding Project Pro
|
||||
packageVersion: 5.3.8
|
||||
assetPath: Packages/com.arongranberg.astar/ExampleScenes~/Materials/SciFi/Particle/SciFi_Sparkle_Mat.mat
|
||||
uploadId: 764484
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user