mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-25 19:04:43 +00:00
提交RVO寻路
This commit is contained in:
parent
2b467e56ad
commit
8f2fb1010c
@ -41,16 +41,19 @@
|
||||
<ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Assets\Game\Plugins\App\Game\RVO2\JNGRVO2Agent.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Game\RVO\JNGRVOObstacle.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Sync\JNGSyncFrameEntrust.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Sync\JNGSyncFrame.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\JNGSyncFrame.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Game\RVO2\JNGRVO2Obstacle.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Sync\JNGSyncFrameDefault.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Game\RVO\JNGRVOManager.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Game\RVO\JNGRVOAgent.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\App.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Util\JNRandom.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\JNGSocket.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\App\Game\RVO2\JNGRVO2Manager.cs" />
|
||||
<None Include="Assets\Game\Plugins\App\App.asmdef" />
|
||||
<Reference Include="UnityEngine">
|
||||
<HintPath>D:\Unity\2021.3.33f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.dll</HintPath>
|
||||
|
@ -71,7 +71,9 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (116)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (154)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (189)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (4)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (209)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (2)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (11)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (217)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (42)).json" />
|
||||
@ -92,7 +94,9 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (119)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (137)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (62)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (6)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (88)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (3)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (187)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Sample)-Map_(Island Map).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (160)).json" />
|
||||
@ -132,6 +136,7 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (45)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (48)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (143)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (9)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (108)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (48)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (207)).json" />
|
||||
@ -548,6 +553,7 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (160)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (178)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (212)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (116)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (119)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (63)).json" />
|
||||
@ -630,6 +636,7 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Map Grid)-Map_(7).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (38)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (164)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (5)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Seams)-Map_(No Name (7)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (92)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Seams)-Map_(No Name (2)).json" />
|
||||
@ -647,6 +654,7 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (144)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (117)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(New Scene)-Map_(Map 2).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (8)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (51)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (148)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (52)).json" />
|
||||
@ -676,6 +684,7 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Numbers)-Map_(Sub Map).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (154)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (49)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (1)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (47)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (87)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (194)).json" />
|
||||
@ -693,6 +702,7 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (142)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (158)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (29)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Simulation Agents Large Map)-Map_(No Name (7)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (29)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (132)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (204)).json" />
|
||||
@ -761,6 +771,7 @@
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (191)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Large)-Map_(No Name (33)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Large Map)-Map_(No Name (139)).json" />
|
||||
<None Include="Assets\StreamingAssets\Saved Maps\Scene_(New Scene)-Map_().json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (198)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (62)).json" />
|
||||
<None Include="Assets\HPJ Pathfinding Pro\Scenes\Examples\Example Saves Nav Save Data\Scene_(Spawn Demo Extra Large)-Map_(No Name (92)).json" />
|
||||
|
@ -8,7 +8,7 @@ namespace Game.Plugins.App
|
||||
|
||||
public static readonly JNGSocket Socket = new JNGSocket();
|
||||
public static readonly JNGSyncFrame Sync = new JNGSyncFrame();
|
||||
public static readonly JAPI Api = new(new JAPIConfig(){BaseURL = "http://192.168.0.126:8080"});
|
||||
public static readonly JAPI Api = new(new JAPIConfig(){BaseURL = "http://192.168.0.123:8080"});
|
||||
public static readonly EventDispatcher Event = EventDispatcher.Event;
|
||||
|
||||
public static SystemBase[] System()
|
||||
|
3
JNFrame/Assets/Game/Plugins/App/Game/RVO2.meta
Normal file
3
JNFrame/Assets/Game/Plugins/App/Game/RVO2.meta
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 137b1b51468447048d60cf74f154783e
|
||||
timeCreated: 1708511241
|
87
JNFrame/Assets/Game/Plugins/App/Game/RVO2/JNGRVO2Agent.cs
Normal file
87
JNFrame/Assets/Game/Plugins/App/Game/RVO2/JNGRVO2Agent.cs
Normal file
@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using Game.Plugins.App.Sync;
|
||||
using Plugins.JNGame.Sync.Frame.AStar.RVO2;
|
||||
using RVO;
|
||||
using UnityEngine;
|
||||
using Object = UnityEngine.Object;
|
||||
using Vector2 = RVO.Vector2;
|
||||
|
||||
namespace Game.Plugins.App.Game.RVO2
|
||||
{
|
||||
public class JNGRVO2Agent : JNGSyncFrameDefault
|
||||
{
|
||||
|
||||
private JNRVO2Simulator Simulator => GetComponentInParent<JNGRVO2Manager>().Simulator;
|
||||
public float maxSpeed = 20;
|
||||
public float radius = 0.5f;
|
||||
[HideInInspector] public int sid = -1;
|
||||
private Vector2 target;
|
||||
|
||||
public override void OnSyncLoad()
|
||||
{
|
||||
base.OnSyncLoad();
|
||||
|
||||
var position = this.transform.position;
|
||||
//设置Agent的默认属性
|
||||
float neighborDist = 15.0f;//检测与邻居避障的最大距离(要关心的范围),越大纳入思考的数据量越大,越小越不安全
|
||||
int maxNeighbors = 10;//检测与邻居避障的最大个数(要关心的其他单位),越大纳入思考的数据量越大,越小越不安全
|
||||
float timeHorizon = 5.0f; //预测提前规避时间, 提前得越多,速度变化越频繁
|
||||
float timeHorizonObst = 5.0f; //预测提前规避时间(针对固定障碍), 提前得越多,速度变化越频繁
|
||||
float radius = this.radius;//阻挡半径
|
||||
float maxSpeed = this.maxSpeed;//所能达到得最大速度
|
||||
Vector2 velocity = new Vector2(0.0f, 0.0f);//初始的 2元线性速度,影响出生单位时排挤其他的速度
|
||||
sid = Simulator.addAgent(new Vector2(position.x, position.z), neighborDist, maxNeighbors, timeHorizon,
|
||||
timeHorizonObst, radius, maxSpeed,velocity);
|
||||
|
||||
}
|
||||
|
||||
//设置目标点
|
||||
public void SetTarget(Vector2 targetPoint)
|
||||
{
|
||||
this.target = targetPoint;
|
||||
}
|
||||
public void SetTarget(Vector3 targetPoint)
|
||||
{
|
||||
this.target = new Vector2(targetPoint.x,targetPoint.z);
|
||||
}
|
||||
|
||||
public override void OnSyncUpdate(int dt, JNFrameInfo frame, Object input)
|
||||
{
|
||||
base.OnSyncUpdate(dt, frame, input);
|
||||
|
||||
if (sid >= 0)
|
||||
{
|
||||
Vector2 pos = Simulator.getAgentPosition(sid);
|
||||
Vector2 vel = Simulator.getAgentPrefVelocity(sid);
|
||||
transform.position = new Vector3(pos.x(), transform.position.y , pos.y());
|
||||
if (Math.Abs(vel.x()) > 0.01f && Math.Abs(vel.y()) > 0.01f)
|
||||
//以Y轴为移动朝向
|
||||
transform.forward = new Vector3(vel.x(), 0, vel.y()).normalized;
|
||||
}
|
||||
|
||||
// if (!Input.GetMouseButton(1))//如果没有按下右键的话, 就不给予速度向量
|
||||
// {
|
||||
// Simulator.Instance.setAgentPrefVelocity(sid, new Vector2(0, 0));
|
||||
// return;
|
||||
// }
|
||||
|
||||
Vector2 goalVector = new Vector2(target.x(),target.y()) - Simulator.getAgentPosition(sid);
|
||||
if (RVOMath.absSq(goalVector) > 1.0f)
|
||||
{
|
||||
goalVector = RVOMath.normalize(goalVector);
|
||||
}
|
||||
Simulator.setAgentPrefVelocity(sid, goalVector);
|
||||
|
||||
/* Perturb a little to avoid deadlocks due to perfect symmetry. */
|
||||
/* 因为完美对称,所以需要加入些许抖动用来避免死锁
|
||||
* 这里的完美对称,测试出是指两个完全一样的单位,不抖动=中心点一样=无法把其他排斥出去
|
||||
*/
|
||||
float angle = (float)GetSync().nRandomFloat(0,1) * 2.0f * (float)Math.PI;
|
||||
float dist = (float)GetSync().nRandomFloat(0,1) * 0.0001f;
|
||||
|
||||
Simulator.setAgentPrefVelocity(sid, Simulator.getAgentPrefVelocity(sid) +
|
||||
dist *
|
||||
new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)));
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ba4af5643174f63918b15ca9c43c791
|
||||
timeCreated: 1708511254
|
47
JNFrame/Assets/Game/Plugins/App/Game/RVO2/JNGRVO2Manager.cs
Normal file
47
JNFrame/Assets/Game/Plugins/App/Game/RVO2/JNGRVO2Manager.cs
Normal file
@ -0,0 +1,47 @@
|
||||
using Game.Plugins.App.Sync;
|
||||
using Plugins.JNGame.Sync.Frame.AStar.RVO2;
|
||||
using UnityEngine;
|
||||
using Vector2 = RVO.Vector2;
|
||||
|
||||
namespace Game.Plugins.App.Game.RVO2
|
||||
{
|
||||
public class JNGRVO2Manager : JNGSyncFrameDefault
|
||||
{
|
||||
|
||||
public readonly JNRVO2Simulator Simulator = new JNRVO2Simulator();
|
||||
|
||||
|
||||
public override void OnSyncLoad()
|
||||
{
|
||||
|
||||
base.OnSyncLoad();
|
||||
Simulator.setTimeStep(0.25f);
|
||||
// Simulator.setAgentDefaults(15.0f, 10, 5.0f, 5.0f, 2.0f, 2.0f, new Vector2(0.0f, 0.0f));
|
||||
Simulator.processObstacles();
|
||||
// //设置Agent的默认属性
|
||||
float neighborDist = 15.0f;//检测与邻居避障的最大距离(要关心的范围),越大纳入思考的数据量越大,越小越不安全
|
||||
int maxNeighbors = 10;//检测与邻居避障的最大个数(要关心的其他单位),越大纳入思考的数据量越大,越小越不安全
|
||||
float timeHorizon = 5.0f; //预测提前规避时间, 提前得越多,速度变化越频繁
|
||||
float timeHorizonObst = 5.0f; //预测提前规避时间(针对固定障碍), 提前得越多,速度变化越频繁
|
||||
float radius = .25f;//阻挡半径
|
||||
float maxSpeed = 20f;//所能达到得最大速度
|
||||
Vector2 velocity = new Vector2(0.0f, 0.0f);//初始的 2元线性速度,影响出生单位时排挤其他的速度
|
||||
Simulator.setAgentDefaults(neighborDist, maxNeighbors, timeHorizon, timeHorizonObst,
|
||||
radius, maxSpeed, velocity);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override void OnSyncUpdate(int dt, JNFrameInfo frame, Object input)
|
||||
{
|
||||
base.OnSyncUpdate(dt, frame, input);
|
||||
// Simulator.doStep();
|
||||
// if (frame.Index > 0)
|
||||
// {
|
||||
// Simulator.doStep();
|
||||
// }
|
||||
Simulator.doStep();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 19fc411c2057411598f3006923e2767a
|
||||
timeCreated: 1708511299
|
41
JNFrame/Assets/Game/Plugins/App/Game/RVO2/JNGRVO2Obstacle.cs
Normal file
41
JNFrame/Assets/Game/Plugins/App/Game/RVO2/JNGRVO2Obstacle.cs
Normal file
@ -0,0 +1,41 @@
|
||||
using System.Collections.Generic;
|
||||
using Game.Plugins.App.Sync;
|
||||
using Plugins.JNGame.Sync.Frame.AStar.RVO2;
|
||||
using UnityEngine;
|
||||
using Vector2 = RVO.Vector2;
|
||||
|
||||
namespace Game.Plugins.App.Game.RVO2
|
||||
{
|
||||
public class JNGRVO2Obstacle : JNGSyncFrameDefault
|
||||
{
|
||||
|
||||
private JNRVO2Simulator Simulator => GetComponentInParent<JNGRVO2Manager>().Simulator;
|
||||
|
||||
public override void OnSyncLoad()
|
||||
{
|
||||
base.OnSyncLoad();
|
||||
CreateObstacles();
|
||||
}
|
||||
|
||||
public void CreateObstacles()
|
||||
{
|
||||
var boxCollider = this.GetComponent<BoxCollider>();
|
||||
float minX = boxCollider.transform.position.x -
|
||||
boxCollider.size.x*boxCollider.transform.lossyScale.x*0.5f;
|
||||
float minZ = boxCollider.transform.position.z -
|
||||
boxCollider.size.z*boxCollider.transform.lossyScale.z*0.5f;
|
||||
float maxX = boxCollider.transform.position.x +
|
||||
boxCollider.size.x*boxCollider.transform.lossyScale.x*0.5f;
|
||||
float maxZ = boxCollider.transform.position.z +
|
||||
boxCollider.size.z*boxCollider.transform.lossyScale.z*0.5f;
|
||||
IList<Vector2> obstacle = new List<Vector2>();
|
||||
obstacle.Add(new Vector2(maxX, maxZ));
|
||||
obstacle.Add(new Vector2(minX, maxZ));
|
||||
obstacle.Add(new Vector2(minX, minZ));
|
||||
obstacle.Add(new Vector2(maxX, minZ));
|
||||
Simulator.addObstacle(obstacle);
|
||||
Simulator.processObstacles();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1285797067a24053bd74d9c6acdec716
|
||||
timeCreated: 1708568245
|
@ -8,7 +8,7 @@ namespace Game.Plugins.App
|
||||
protected override async UniTask<string> GetUrl()
|
||||
{
|
||||
await UniTask.NextFrame();
|
||||
return "ws://192.168.0.126:8080/websocket";
|
||||
return "ws://192.168.0.123:8080/websocket";
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d2ce9624f28d4a21895096978accd208
|
||||
timeCreated: 1708498100
|
@ -0,0 +1,8 @@
|
||||
using RVO;
|
||||
|
||||
namespace Plugins.JNGame.Sync.Frame.AStar.RVO2
|
||||
{
|
||||
public class JNRVO2Simulator : Simulator
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f6cb8cf568a74351b80ac824ae622734
|
||||
timeCreated: 1708509872
|
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0950c0aa028d5c747b6a5b42e0707b3c
|
||||
folderAsset: yes
|
||||
timeCreated: 1509520805
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,730 @@
|
||||
/*
|
||||
* Agent.cs
|
||||
* RVO2 Library C#
|
||||
*
|
||||
* Copyright 2008 University of North Carolina at Chapel Hill
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Please send all bug reports to <geom@cs.unc.edu>.
|
||||
*
|
||||
* The authors may be contacted via:
|
||||
*
|
||||
* Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
|
||||
* Dept. of Computer Science
|
||||
* 201 S. Columbia St.
|
||||
* Frederick P. Brooks, Jr. Computer Science Bldg.
|
||||
* Chapel Hill, N.C. 27599-3175
|
||||
* United States of America
|
||||
*
|
||||
* <http://gamma.cs.unc.edu/RVO2/>
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace RVO
|
||||
{
|
||||
/**
|
||||
* <summary>Defines an agent in the simulation.</summary>
|
||||
*/
|
||||
internal class Agent
|
||||
{
|
||||
internal IList<KeyValuePair<float, Agent>> agentNeighbors_ = new List<KeyValuePair<float, Agent>>();
|
||||
internal IList<KeyValuePair<float, Obstacle>> obstacleNeighbors_ = new List<KeyValuePair<float, Obstacle>>();
|
||||
internal IList<Line> orcaLines_ = new List<Line>();
|
||||
internal Vector2 position_;
|
||||
internal Vector2 prefVelocity_;
|
||||
internal Vector2 velocity_;
|
||||
internal int id_ = 0;
|
||||
internal int maxNeighbors_ = 0;
|
||||
internal float maxSpeed_ = 0.0f;
|
||||
internal float neighborDist_ = 0.0f;
|
||||
internal float radius_ = 0.0f;
|
||||
internal float timeHorizon_ = 0.0f;
|
||||
internal float timeHorizonObst_ = 0.0f;
|
||||
internal bool needDelete_ = false;
|
||||
|
||||
private Vector2 newVelocity_;
|
||||
|
||||
/**
|
||||
* <summary>Computes the neighbors of this agent.</summary>
|
||||
*/
|
||||
internal void computeNeighbors(Simulator simulator)
|
||||
{
|
||||
obstacleNeighbors_.Clear();
|
||||
float rangeSq = RVOMath.sqr(timeHorizonObst_ * maxSpeed_ + radius_);
|
||||
simulator.kdTree_.computeObstacleNeighbors(this, rangeSq);
|
||||
|
||||
agentNeighbors_.Clear();
|
||||
|
||||
if (maxNeighbors_ > 0)
|
||||
{
|
||||
rangeSq = RVOMath.sqr(neighborDist_);
|
||||
simulator.kdTree_.computeAgentNeighbors(this, ref rangeSq);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the new velocity of this agent.</summary>
|
||||
*/
|
||||
internal void computeNewVelocity(Simulator simulator)
|
||||
{
|
||||
orcaLines_.Clear();
|
||||
|
||||
float invTimeHorizonObst = 1.0f / timeHorizonObst_;
|
||||
|
||||
/* Create obstacle ORCA lines. */
|
||||
for (int i = 0; i < obstacleNeighbors_.Count; ++i)
|
||||
{
|
||||
|
||||
Obstacle obstacle1 = obstacleNeighbors_[i].Value;
|
||||
Obstacle obstacle2 = obstacle1.next_;
|
||||
|
||||
Vector2 relativePosition1 = obstacle1.point_ - position_;
|
||||
Vector2 relativePosition2 = obstacle2.point_ - position_;
|
||||
|
||||
/*
|
||||
* Check if velocity obstacle of obstacle is already taken care
|
||||
* of by previously constructed obstacle ORCA lines.
|
||||
*/
|
||||
bool alreadyCovered = false;
|
||||
|
||||
for (int j = 0; j < orcaLines_.Count; ++j)
|
||||
{
|
||||
if (RVOMath.det(invTimeHorizonObst * relativePosition1 - orcaLines_[j].point, orcaLines_[j].direction) - invTimeHorizonObst * radius_ >= -RVOMath.RVO_EPSILON && RVOMath.det(invTimeHorizonObst * relativePosition2 - orcaLines_[j].point, orcaLines_[j].direction) - invTimeHorizonObst * radius_ >= -RVOMath.RVO_EPSILON)
|
||||
{
|
||||
alreadyCovered = true;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (alreadyCovered)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Not yet covered. Check for collisions. */
|
||||
float distSq1 = RVOMath.absSq(relativePosition1);
|
||||
float distSq2 = RVOMath.absSq(relativePosition2);
|
||||
|
||||
float radiusSq = RVOMath.sqr(radius_);
|
||||
|
||||
Vector2 obstacleVector = obstacle2.point_ - obstacle1.point_;
|
||||
float s = (-relativePosition1 * obstacleVector) / RVOMath.absSq(obstacleVector);
|
||||
float distSqLine = RVOMath.absSq(-relativePosition1 - s * obstacleVector);
|
||||
|
||||
Line line;
|
||||
|
||||
if (s < 0.0f && distSq1 <= radiusSq)
|
||||
{
|
||||
/* Collision with left vertex. Ignore if non-convex. */
|
||||
if (obstacle1.convex_)
|
||||
{
|
||||
line.point = new Vector2(0.0f, 0.0f);
|
||||
line.direction = RVOMath.normalize(new Vector2(-relativePosition1.y(), relativePosition1.x()));
|
||||
orcaLines_.Add(line);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
else if (s > 1.0f && distSq2 <= radiusSq)
|
||||
{
|
||||
/*
|
||||
* Collision with right vertex. Ignore if non-convex or if
|
||||
* it will be taken care of by neighboring obstacle.
|
||||
*/
|
||||
if (obstacle2.convex_ && RVOMath.det(relativePosition2, obstacle2.direction_) >= 0.0f)
|
||||
{
|
||||
line.point = new Vector2(0.0f, 0.0f);
|
||||
line.direction = RVOMath.normalize(new Vector2(-relativePosition2.y(), relativePosition2.x()));
|
||||
orcaLines_.Add(line);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
else if (s >= 0.0f && s < 1.0f && distSqLine <= radiusSq)
|
||||
{
|
||||
/* Collision with obstacle segment. */
|
||||
line.point = new Vector2(0.0f, 0.0f);
|
||||
line.direction = -obstacle1.direction_;
|
||||
orcaLines_.Add(line);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* No collision. Compute legs. When obliquely viewed, both legs
|
||||
* can come from a single vertex. Legs extend cut-off line when
|
||||
* non-convex vertex.
|
||||
*/
|
||||
|
||||
Vector2 leftLegDirection, rightLegDirection;
|
||||
|
||||
if (s < 0.0f && distSqLine <= radiusSq)
|
||||
{
|
||||
/*
|
||||
* Obstacle viewed obliquely so that left vertex
|
||||
* defines velocity obstacle.
|
||||
*/
|
||||
if (!obstacle1.convex_)
|
||||
{
|
||||
/* Ignore obstacle. */
|
||||
continue;
|
||||
}
|
||||
|
||||
obstacle2 = obstacle1;
|
||||
|
||||
float leg1 = RVOMath.sqrt(distSq1 - radiusSq);
|
||||
leftLegDirection = new Vector2(relativePosition1.x() * leg1 - relativePosition1.y() * radius_, relativePosition1.x() * radius_ + relativePosition1.y() * leg1) / distSq1;
|
||||
rightLegDirection = new Vector2(relativePosition1.x() * leg1 + relativePosition1.y() * radius_, -relativePosition1.x() * radius_ + relativePosition1.y() * leg1) / distSq1;
|
||||
}
|
||||
else if (s > 1.0f && distSqLine <= radiusSq)
|
||||
{
|
||||
/*
|
||||
* Obstacle viewed obliquely so that
|
||||
* right vertex defines velocity obstacle.
|
||||
*/
|
||||
if (!obstacle2.convex_)
|
||||
{
|
||||
/* Ignore obstacle. */
|
||||
continue;
|
||||
}
|
||||
|
||||
obstacle1 = obstacle2;
|
||||
|
||||
float leg2 = RVOMath.sqrt(distSq2 - radiusSq);
|
||||
leftLegDirection = new Vector2(relativePosition2.x() * leg2 - relativePosition2.y() * radius_, relativePosition2.x() * radius_ + relativePosition2.y() * leg2) / distSq2;
|
||||
rightLegDirection = new Vector2(relativePosition2.x() * leg2 + relativePosition2.y() * radius_, -relativePosition2.x() * radius_ + relativePosition2.y() * leg2) / distSq2;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Usual situation. */
|
||||
if (obstacle1.convex_)
|
||||
{
|
||||
float leg1 = RVOMath.sqrt(distSq1 - radiusSq);
|
||||
leftLegDirection = new Vector2(relativePosition1.x() * leg1 - relativePosition1.y() * radius_, relativePosition1.x() * radius_ + relativePosition1.y() * leg1) / distSq1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Left vertex non-convex; left leg extends cut-off line. */
|
||||
leftLegDirection = -obstacle1.direction_;
|
||||
}
|
||||
|
||||
if (obstacle2.convex_)
|
||||
{
|
||||
float leg2 = RVOMath.sqrt(distSq2 - radiusSq);
|
||||
rightLegDirection = new Vector2(relativePosition2.x() * leg2 + relativePosition2.y() * radius_, -relativePosition2.x() * radius_ + relativePosition2.y() * leg2) / distSq2;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Right vertex non-convex; right leg extends cut-off line. */
|
||||
rightLegDirection = obstacle1.direction_;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Legs can never point into neighboring edge when convex
|
||||
* vertex, take cutoff-line of neighboring edge instead. If
|
||||
* velocity projected on "foreign" leg, no constraint is added.
|
||||
*/
|
||||
|
||||
Obstacle leftNeighbor = obstacle1.previous_;
|
||||
|
||||
bool isLeftLegForeign = false;
|
||||
bool isRightLegForeign = false;
|
||||
|
||||
if (obstacle1.convex_ && RVOMath.det(leftLegDirection, -leftNeighbor.direction_) >= 0.0f)
|
||||
{
|
||||
/* Left leg points into obstacle. */
|
||||
leftLegDirection = -leftNeighbor.direction_;
|
||||
isLeftLegForeign = true;
|
||||
}
|
||||
|
||||
if (obstacle2.convex_ && RVOMath.det(rightLegDirection, obstacle2.direction_) <= 0.0f)
|
||||
{
|
||||
/* Right leg points into obstacle. */
|
||||
rightLegDirection = obstacle2.direction_;
|
||||
isRightLegForeign = true;
|
||||
}
|
||||
|
||||
/* Compute cut-off centers. */
|
||||
Vector2 leftCutOff = invTimeHorizonObst * (obstacle1.point_ - position_);
|
||||
Vector2 rightCutOff = invTimeHorizonObst * (obstacle2.point_ - position_);
|
||||
Vector2 cutOffVector = rightCutOff - leftCutOff;
|
||||
|
||||
/* Project current velocity on velocity obstacle. */
|
||||
|
||||
/* Check if current velocity is projected on cutoff circles. */
|
||||
float t = obstacle1 == obstacle2 ? 0.5f : ((velocity_ - leftCutOff) * cutOffVector) / RVOMath.absSq(cutOffVector);
|
||||
float tLeft = (velocity_ - leftCutOff) * leftLegDirection;
|
||||
float tRight = (velocity_ - rightCutOff) * rightLegDirection;
|
||||
|
||||
if ((t < 0.0f && tLeft < 0.0f) || (obstacle1 == obstacle2 && tLeft < 0.0f && tRight < 0.0f))
|
||||
{
|
||||
/* Project on left cut-off circle. */
|
||||
Vector2 unitW = RVOMath.normalize(velocity_ - leftCutOff);
|
||||
|
||||
line.direction = new Vector2(unitW.y(), -unitW.x());
|
||||
line.point = leftCutOff + radius_ * invTimeHorizonObst * unitW;
|
||||
orcaLines_.Add(line);
|
||||
|
||||
continue;
|
||||
}
|
||||
else if (t > 1.0f && tRight < 0.0f)
|
||||
{
|
||||
/* Project on right cut-off circle. */
|
||||
Vector2 unitW = RVOMath.normalize(velocity_ - rightCutOff);
|
||||
|
||||
line.direction = new Vector2(unitW.y(), -unitW.x());
|
||||
line.point = rightCutOff + radius_ * invTimeHorizonObst * unitW;
|
||||
orcaLines_.Add(line);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Project on left leg, right leg, or cut-off line, whichever is
|
||||
* closest to velocity.
|
||||
*/
|
||||
float distSqCutoff = (t < 0.0f || t > 1.0f || obstacle1 == obstacle2) ? float.PositiveInfinity : RVOMath.absSq(velocity_ - (leftCutOff + t * cutOffVector));
|
||||
float distSqLeft = tLeft < 0.0f ? float.PositiveInfinity : RVOMath.absSq(velocity_ - (leftCutOff + tLeft * leftLegDirection));
|
||||
float distSqRight = tRight < 0.0f ? float.PositiveInfinity : RVOMath.absSq(velocity_ - (rightCutOff + tRight * rightLegDirection));
|
||||
|
||||
if (distSqCutoff <= distSqLeft && distSqCutoff <= distSqRight)
|
||||
{
|
||||
/* Project on cut-off line. */
|
||||
line.direction = -obstacle1.direction_;
|
||||
line.point = leftCutOff + radius_ * invTimeHorizonObst * new Vector2(-line.direction.y(), line.direction.x());
|
||||
orcaLines_.Add(line);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (distSqLeft <= distSqRight)
|
||||
{
|
||||
/* Project on left leg. */
|
||||
if (isLeftLegForeign)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
line.direction = leftLegDirection;
|
||||
line.point = leftCutOff + radius_ * invTimeHorizonObst * new Vector2(-line.direction.y(), line.direction.x());
|
||||
orcaLines_.Add(line);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Project on right leg. */
|
||||
if (isRightLegForeign)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
line.direction = -rightLegDirection;
|
||||
line.point = rightCutOff + radius_ * invTimeHorizonObst * new Vector2(-line.direction.y(), line.direction.x());
|
||||
orcaLines_.Add(line);
|
||||
}
|
||||
|
||||
int numObstLines = orcaLines_.Count;
|
||||
|
||||
float invTimeHorizon = 1.0f / timeHorizon_;
|
||||
|
||||
/* Create agent ORCA lines. */
|
||||
for (int i = 0; i < agentNeighbors_.Count; ++i)
|
||||
{
|
||||
Agent other = agentNeighbors_[i].Value;
|
||||
|
||||
Vector2 relativePosition = other.position_ - position_;
|
||||
Vector2 relativeVelocity = velocity_ - other.velocity_;
|
||||
float distSq = RVOMath.absSq(relativePosition);
|
||||
float combinedRadius = radius_ + other.radius_;
|
||||
float combinedRadiusSq = RVOMath.sqr(combinedRadius);
|
||||
|
||||
Line line;
|
||||
Vector2 u;
|
||||
|
||||
if (distSq > combinedRadiusSq)
|
||||
{
|
||||
/* No collision. */
|
||||
Vector2 w = relativeVelocity - invTimeHorizon * relativePosition;
|
||||
|
||||
/* Vector from cutoff center to relative velocity. */
|
||||
float wLengthSq = RVOMath.absSq(w);
|
||||
float dotProduct1 = w * relativePosition;
|
||||
|
||||
if (dotProduct1 < 0.0f && RVOMath.sqr(dotProduct1) > combinedRadiusSq * wLengthSq)
|
||||
{
|
||||
/* Project on cut-off circle. */
|
||||
float wLength = RVOMath.sqrt(wLengthSq);
|
||||
Vector2 unitW = w / wLength;
|
||||
|
||||
line.direction = new Vector2(unitW.y(), -unitW.x());
|
||||
u = (combinedRadius * invTimeHorizon - wLength) * unitW;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Project on legs. */
|
||||
float leg = RVOMath.sqrt(distSq - combinedRadiusSq);
|
||||
|
||||
if (RVOMath.det(relativePosition, w) > 0.0f)
|
||||
{
|
||||
/* Project on left leg. */
|
||||
line.direction = new Vector2(relativePosition.x() * leg - relativePosition.y() * combinedRadius, relativePosition.x() * combinedRadius + relativePosition.y() * leg) / distSq;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Project on right leg. */
|
||||
line.direction = -new Vector2(relativePosition.x() * leg + relativePosition.y() * combinedRadius, -relativePosition.x() * combinedRadius + relativePosition.y() * leg) / distSq;
|
||||
}
|
||||
|
||||
float dotProduct2 = relativeVelocity * line.direction;
|
||||
u = dotProduct2 * line.direction - relativeVelocity;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Collision. Project on cut-off circle of time timeStep. */
|
||||
float invTimeStep = 1.0f / simulator.timeStep_;
|
||||
|
||||
/* Vector from cutoff center to relative velocity. */
|
||||
Vector2 w = relativeVelocity - invTimeStep * relativePosition;
|
||||
|
||||
float wLength = RVOMath.abs(w);
|
||||
Vector2 unitW = w / wLength;
|
||||
|
||||
line.direction = new Vector2(unitW.y(), -unitW.x());
|
||||
u = (combinedRadius * invTimeStep - wLength) * unitW;
|
||||
}
|
||||
|
||||
line.point = velocity_ + 0.5f * u;
|
||||
orcaLines_.Add(line);
|
||||
}
|
||||
|
||||
int lineFail = linearProgram2(orcaLines_, maxSpeed_, prefVelocity_, false, ref newVelocity_);
|
||||
|
||||
if (lineFail < orcaLines_.Count)
|
||||
{
|
||||
linearProgram3(orcaLines_, numObstLines, lineFail, maxSpeed_, ref newVelocity_);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Inserts an agent neighbor into the set of neighbors of this
|
||||
* agent.</summary>
|
||||
*
|
||||
* <param name="agent">A pointer to the agent to be inserted.</param>
|
||||
* <param name="rangeSq">The squared range around this agent.</param>
|
||||
*/
|
||||
internal void insertAgentNeighbor(Agent agent, ref float rangeSq)
|
||||
{
|
||||
if (this != agent)
|
||||
{
|
||||
float distSq = RVOMath.absSq(position_ - agent.position_);
|
||||
|
||||
if (distSq < rangeSq)
|
||||
{
|
||||
if (agentNeighbors_.Count < maxNeighbors_)
|
||||
{
|
||||
agentNeighbors_.Add(new KeyValuePair<float, Agent>(distSq, agent));
|
||||
}
|
||||
|
||||
int i = agentNeighbors_.Count - 1;
|
||||
|
||||
while (i != 0 && distSq < agentNeighbors_[i - 1].Key)
|
||||
{
|
||||
agentNeighbors_[i] = agentNeighbors_[i - 1];
|
||||
--i;
|
||||
}
|
||||
|
||||
agentNeighbors_[i] = new KeyValuePair<float, Agent>(distSq, agent);
|
||||
|
||||
if (agentNeighbors_.Count == maxNeighbors_)
|
||||
{
|
||||
rangeSq = agentNeighbors_[agentNeighbors_.Count - 1].Key;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Inserts a static obstacle neighbor into the set of neighbors
|
||||
* of this agent.</summary>
|
||||
*
|
||||
* <param name="obstacle">The number of the static obstacle to be
|
||||
* inserted.</param>
|
||||
* <param name="rangeSq">The squared range around this agent.</param>
|
||||
*/
|
||||
internal void insertObstacleNeighbor(Obstacle obstacle, float rangeSq)
|
||||
{
|
||||
Obstacle nextObstacle = obstacle.next_;
|
||||
|
||||
float distSq = RVOMath.distSqPointLineSegment(obstacle.point_, nextObstacle.point_, position_);
|
||||
|
||||
if (distSq < rangeSq)
|
||||
{
|
||||
obstacleNeighbors_.Add(new KeyValuePair<float, Obstacle>(distSq, obstacle));
|
||||
|
||||
int i = obstacleNeighbors_.Count - 1;
|
||||
|
||||
while (i != 0 && distSq < obstacleNeighbors_[i - 1].Key)
|
||||
{
|
||||
obstacleNeighbors_[i] = obstacleNeighbors_[i - 1];
|
||||
--i;
|
||||
}
|
||||
obstacleNeighbors_[i] = new KeyValuePair<float, Obstacle>(distSq, obstacle);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Updates the two-dimensional position and two-dimensional
|
||||
* velocity of this agent.</summary>
|
||||
*/
|
||||
internal void update(Simulator simulator)
|
||||
{
|
||||
velocity_ = newVelocity_;
|
||||
position_ += velocity_ * simulator.timeStep_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Solves a one-dimensional linear program on a specified line
|
||||
* subject to linear constraints defined by lines and a circular
|
||||
* constraint.</summary>
|
||||
*
|
||||
* <returns>True if successful.</returns>
|
||||
*
|
||||
* <param name="lines">Lines defining the linear constraints.</param>
|
||||
* <param name="lineNo">The specified line constraint.</param>
|
||||
* <param name="radius">The radius of the circular constraint.</param>
|
||||
* <param name="optVelocity">The optimization velocity.</param>
|
||||
* <param name="directionOpt">True if the direction should be optimized.
|
||||
* </param>
|
||||
* <param name="result">A reference to the result of the linear program.
|
||||
* </param>
|
||||
*/
|
||||
private bool linearProgram1(IList<Line> lines, int lineNo, float radius, Vector2 optVelocity, bool directionOpt, ref Vector2 result)
|
||||
{
|
||||
float dotProduct = lines[lineNo].point * lines[lineNo].direction;
|
||||
float discriminant = RVOMath.sqr(dotProduct) + RVOMath.sqr(radius) - RVOMath.absSq(lines[lineNo].point);
|
||||
|
||||
if (discriminant < 0.0f)
|
||||
{
|
||||
/* Max speed circle fully invalidates line lineNo. */
|
||||
return false;
|
||||
}
|
||||
|
||||
float sqrtDiscriminant = RVOMath.sqrt(discriminant);
|
||||
float tLeft = -dotProduct - sqrtDiscriminant;
|
||||
float tRight = -dotProduct + sqrtDiscriminant;
|
||||
|
||||
for (int i = 0; i < lineNo; ++i)
|
||||
{
|
||||
float denominator = RVOMath.det(lines[lineNo].direction, lines[i].direction);
|
||||
float numerator = RVOMath.det(lines[i].direction, lines[lineNo].point - lines[i].point);
|
||||
|
||||
if (RVOMath.fabs(denominator) <= RVOMath.RVO_EPSILON)
|
||||
{
|
||||
/* Lines lineNo and i are (almost) parallel. */
|
||||
if (numerator < 0.0f)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
float t = numerator / denominator;
|
||||
|
||||
if (denominator >= 0.0f)
|
||||
{
|
||||
/* Line i bounds line lineNo on the right. */
|
||||
tRight = Math.Min(tRight, t);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Line i bounds line lineNo on the left. */
|
||||
tLeft = Math.Max(tLeft, t);
|
||||
}
|
||||
|
||||
if (tLeft > tRight)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (directionOpt)
|
||||
{
|
||||
/* Optimize direction. */
|
||||
if (optVelocity * lines[lineNo].direction > 0.0f)
|
||||
{
|
||||
/* Take right extreme. */
|
||||
result = lines[lineNo].point + tRight * lines[lineNo].direction;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Take left extreme. */
|
||||
result = lines[lineNo].point + tLeft * lines[lineNo].direction;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Optimize closest point. */
|
||||
float t = lines[lineNo].direction * (optVelocity - lines[lineNo].point);
|
||||
|
||||
if (t < tLeft)
|
||||
{
|
||||
result = lines[lineNo].point + tLeft * lines[lineNo].direction;
|
||||
}
|
||||
else if (t > tRight)
|
||||
{
|
||||
result = lines[lineNo].point + tRight * lines[lineNo].direction;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = lines[lineNo].point + t * lines[lineNo].direction;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Solves a two-dimensional linear program subject to linear
|
||||
* constraints defined by lines and a circular constraint.</summary>
|
||||
*
|
||||
* <returns>The number of the line it fails on, and the number of lines
|
||||
* if successful.</returns>
|
||||
*
|
||||
* <param name="lines">Lines defining the linear constraints.</param>
|
||||
* <param name="radius">The radius of the circular constraint.</param>
|
||||
* <param name="optVelocity">The optimization velocity.</param>
|
||||
* <param name="directionOpt">True if the direction should be optimized.
|
||||
* </param>
|
||||
* <param name="result">A reference to the result of the linear program.
|
||||
* </param>
|
||||
*/
|
||||
private int linearProgram2(IList<Line> lines, float radius, Vector2 optVelocity, bool directionOpt, ref Vector2 result)
|
||||
{
|
||||
if (directionOpt)
|
||||
{
|
||||
/*
|
||||
* Optimize direction. Note that the optimization velocity is of
|
||||
* unit length in this case.
|
||||
*/
|
||||
result = optVelocity * radius;
|
||||
}
|
||||
else if (RVOMath.absSq(optVelocity) > RVOMath.sqr(radius))
|
||||
{
|
||||
/* Optimize closest point and outside circle. */
|
||||
result = RVOMath.normalize(optVelocity) * radius;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Optimize closest point and inside circle. */
|
||||
result = optVelocity;
|
||||
}
|
||||
|
||||
for (int i = 0; i < lines.Count; ++i)
|
||||
{
|
||||
if (RVOMath.det(lines[i].direction, lines[i].point - result) > 0.0f)
|
||||
{
|
||||
/* Result does not satisfy constraint i. Compute new optimal result. */
|
||||
Vector2 tempResult = result;
|
||||
if (!linearProgram1(lines, i, radius, optVelocity, directionOpt, ref result))
|
||||
{
|
||||
result = tempResult;
|
||||
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return lines.Count;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Solves a two-dimensional linear program subject to linear
|
||||
* constraints defined by lines and a circular constraint.</summary>
|
||||
*
|
||||
* <param name="lines">Lines defining the linear constraints.</param>
|
||||
* <param name="numObstLines">Count of obstacle lines.</param>
|
||||
* <param name="beginLine">The line on which the 2-d linear program
|
||||
* failed.</param>
|
||||
* <param name="radius">The radius of the circular constraint.</param>
|
||||
* <param name="result">A reference to the result of the linear program.
|
||||
* </param>
|
||||
*/
|
||||
private void linearProgram3(IList<Line> lines, int numObstLines, int beginLine, float radius, ref Vector2 result)
|
||||
{
|
||||
float distance = 0.0f;
|
||||
|
||||
for (int i = beginLine; i < lines.Count; ++i)
|
||||
{
|
||||
if (RVOMath.det(lines[i].direction, lines[i].point - result) > distance)
|
||||
{
|
||||
/* Result does not satisfy constraint of line i. */
|
||||
IList<Line> projLines = new List<Line>();
|
||||
for (int ii = 0; ii < numObstLines; ++ii)
|
||||
{
|
||||
projLines.Add(lines[ii]);
|
||||
}
|
||||
|
||||
for (int j = numObstLines; j < i; ++j)
|
||||
{
|
||||
Line line;
|
||||
|
||||
float determinant = RVOMath.det(lines[i].direction, lines[j].direction);
|
||||
|
||||
if (RVOMath.fabs(determinant) <= RVOMath.RVO_EPSILON)
|
||||
{
|
||||
/* Line i and line j are parallel. */
|
||||
if (lines[i].direction * lines[j].direction > 0.0f)
|
||||
{
|
||||
/* Line i and line j point in the same direction. */
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Line i and line j point in opposite direction. */
|
||||
line.point = 0.5f * (lines[i].point + lines[j].point);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
line.point = lines[i].point + (RVOMath.det(lines[j].direction, lines[i].point - lines[j].point) / determinant) * lines[i].direction;
|
||||
}
|
||||
|
||||
line.direction = RVOMath.normalize(lines[j].direction - lines[i].direction);
|
||||
projLines.Add(line);
|
||||
}
|
||||
|
||||
Vector2 tempResult = result;
|
||||
if (linearProgram2(projLines, radius, new Vector2(-lines[i].direction.y(), lines[i].direction.x()), true, ref result) < projLines.Count)
|
||||
{
|
||||
/*
|
||||
* This should in principle not happen. The result is by
|
||||
* definition already in the feasible region of this
|
||||
* linear program. If it fails, it is due to small
|
||||
* floating point error, and the current result is kept.
|
||||
*/
|
||||
result = tempResult;
|
||||
}
|
||||
|
||||
distance = RVOMath.det(lines[i].direction, lines[i].point - result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c89cdc06092e4cfab700ca0a1b02396a
|
||||
timeCreated: 1708509745
|
@ -0,0 +1,678 @@
|
||||
/*
|
||||
* KdTree.cs
|
||||
* RVO2 Library C#
|
||||
*
|
||||
* Copyright 2008 University of North Carolina at Chapel Hill
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Please send all bug reports to <geom@cs.unc.edu>.
|
||||
*
|
||||
* The authors may be contacted via:
|
||||
*
|
||||
* Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
|
||||
* Dept. of Computer Science
|
||||
* 201 S. Columbia St.
|
||||
* Frederick P. Brooks, Jr. Computer Science Bldg.
|
||||
* Chapel Hill, N.C. 27599-3175
|
||||
* United States of America
|
||||
*
|
||||
* <http://gamma.cs.unc.edu/RVO2/>
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
|
||||
namespace RVO
|
||||
{
|
||||
/**
|
||||
* <summary>Defines k-D trees for agents and static obstacles in the
|
||||
* simulation.</summary>
|
||||
*/
|
||||
internal class KdTree
|
||||
{
|
||||
/**
|
||||
* <summary>Defines a node of an agent k-D tree.</summary>
|
||||
*/
|
||||
private struct AgentTreeNode
|
||||
{
|
||||
internal int begin_;
|
||||
internal int end_;
|
||||
internal int left_;
|
||||
internal int right_;
|
||||
internal float maxX_;
|
||||
internal float maxY_;
|
||||
internal float minX_;
|
||||
internal float minY_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Defines a pair of scalar values.</summary>
|
||||
*/
|
||||
private struct FloatPair
|
||||
{
|
||||
private float a_;
|
||||
private float b_;
|
||||
|
||||
/**
|
||||
* <summary>Constructs and initializes a pair of scalar
|
||||
* values.</summary>
|
||||
*
|
||||
* <param name="a">The first scalar value.</returns>
|
||||
* <param name="b">The second scalar value.</returns>
|
||||
*/
|
||||
internal FloatPair(float a, float b)
|
||||
{
|
||||
a_ = a;
|
||||
b_ = b;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns true if the first pair of scalar values is less
|
||||
* than the second pair of scalar values.</summary>
|
||||
*
|
||||
* <returns>True if the first pair of scalar values is less than the
|
||||
* second pair of scalar values.</returns>
|
||||
*
|
||||
* <param name="pair1">The first pair of scalar values.</param>
|
||||
* <param name="pair2">The second pair of scalar values.</param>
|
||||
*/
|
||||
public static bool operator <(FloatPair pair1, FloatPair pair2)
|
||||
{
|
||||
return pair1.a_ < pair2.a_ || !(pair2.a_ < pair1.a_) && pair1.b_ < pair2.b_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns true if the first pair of scalar values is less
|
||||
* than or equal to the second pair of scalar values.</summary>
|
||||
*
|
||||
* <returns>True if the first pair of scalar values is less than or
|
||||
* equal to the second pair of scalar values.</returns>
|
||||
*
|
||||
* <param name="pair1">The first pair of scalar values.</param>
|
||||
* <param name="pair2">The second pair of scalar values.</param>
|
||||
*/
|
||||
public static bool operator <=(FloatPair pair1, FloatPair pair2)
|
||||
{
|
||||
return (pair1.a_ == pair2.a_ && pair1.b_ == pair2.b_) || pair1 < pair2;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns true if the first pair of scalar values is
|
||||
* greater than the second pair of scalar values.</summary>
|
||||
*
|
||||
* <returns>True if the first pair of scalar values is greater than
|
||||
* the second pair of scalar values.</returns>
|
||||
*
|
||||
* <param name="pair1">The first pair of scalar values.</param>
|
||||
* <param name="pair2">The second pair of scalar values.</param>
|
||||
*/
|
||||
public static bool operator >(FloatPair pair1, FloatPair pair2)
|
||||
{
|
||||
return !(pair1 <= pair2);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns true if the first pair of scalar values is
|
||||
* greater than or equal to the second pair of scalar values.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>True if the first pair of scalar values is greater than
|
||||
* or equal to the second pair of scalar values.</returns>
|
||||
*
|
||||
* <param name="pair1">The first pair of scalar values.</param>
|
||||
* <param name="pair2">The second pair of scalar values.</param>
|
||||
*/
|
||||
public static bool operator >=(FloatPair pair1, FloatPair pair2)
|
||||
{
|
||||
return !(pair1 < pair2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Defines a node of an obstacle k-D tree.</summary>
|
||||
*/
|
||||
private class ObstacleTreeNode
|
||||
{
|
||||
internal Obstacle obstacle_;
|
||||
internal ObstacleTreeNode left_;
|
||||
internal ObstacleTreeNode right_;
|
||||
};
|
||||
|
||||
/**
|
||||
* <summary>The maximum size of an agent k-D tree leaf.</summary>
|
||||
*/
|
||||
private const int MAX_LEAF_SIZE = 10;
|
||||
|
||||
private Agent[] agents_;
|
||||
private AgentTreeNode[] agentTree_;
|
||||
private ObstacleTreeNode obstacleTree_;
|
||||
|
||||
/**
|
||||
* <summary>Builds an agent k-D tree.</summary>
|
||||
*/
|
||||
internal void buildAgentTree(Simulator simulator)
|
||||
{
|
||||
if (agents_ == null || agents_.Length != simulator.agents_.Count)
|
||||
{
|
||||
agents_ = new Agent[simulator.agents_.Count];
|
||||
|
||||
for (int i = 0; i < agents_.Length; ++i)
|
||||
{
|
||||
agents_[i] = simulator.agents_[i];
|
||||
}
|
||||
|
||||
agentTree_ = new AgentTreeNode[2 * agents_.Length];
|
||||
|
||||
for (int i = 0; i < agentTree_.Length; ++i)
|
||||
{
|
||||
agentTree_[i] = new AgentTreeNode();
|
||||
}
|
||||
}
|
||||
|
||||
if (agents_.Length != 0)
|
||||
{
|
||||
buildAgentTreeRecursive(0, agents_.Length, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Builds an obstacle k-D tree.</summary>
|
||||
*/
|
||||
internal void buildObstacleTree(Simulator simulator)
|
||||
{
|
||||
obstacleTree_ = new ObstacleTreeNode();
|
||||
|
||||
IList<Obstacle> obstacles = new List<Obstacle>(simulator.obstacles_.Count);
|
||||
|
||||
for (int i = 0; i < simulator.obstacles_.Count; ++i)
|
||||
{
|
||||
obstacles.Add(simulator.obstacles_[i]);
|
||||
}
|
||||
|
||||
obstacleTree_ = buildObstacleTreeRecursive(simulator,obstacles);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the agent neighbors of the specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <param name="agent">The agent for which agent neighbors are to be
|
||||
* computed.</param>
|
||||
* <param name="rangeSq">The squared range around the agent.</param>
|
||||
*/
|
||||
internal void computeAgentNeighbors(Agent agent, ref float rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(agent, ref rangeSq, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the obstacle neighbors of the specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <param name="agent">The agent for which obstacle neighbors are to be
|
||||
* computed.</param>
|
||||
* <param name="rangeSq">The squared range around the agent.</param>
|
||||
*/
|
||||
internal void computeObstacleNeighbors(Agent agent, float rangeSq)
|
||||
{
|
||||
queryObstacleTreeRecursive(agent, rangeSq, obstacleTree_);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Queries the visibility between two points within a specified
|
||||
* radius.</summary>
|
||||
*
|
||||
* <returns>True if q1 and q2 are mutually visible within the radius;
|
||||
* false otherwise.</returns>
|
||||
*
|
||||
* <param name="q1">The first point between which visibility is to be
|
||||
* tested.</param>
|
||||
* <param name="q2">The second point between which visibility is to be
|
||||
* tested.</param>
|
||||
* <param name="radius">The radius within which visibility is to be
|
||||
* tested.</param>
|
||||
*/
|
||||
internal bool queryVisibility(Vector2 q1, Vector2 q2, float radius)
|
||||
{
|
||||
return queryVisibilityRecursive(q1, q2, radius, obstacleTree_);
|
||||
}
|
||||
|
||||
internal int queryNearAgent(Vector2 point, float radius)
|
||||
{
|
||||
float rangeSq = float.MaxValue;
|
||||
int agentNo = -1;
|
||||
queryAgentTreeRecursive(point, ref rangeSq, ref agentNo, 0);
|
||||
if (rangeSq < radius*radius)
|
||||
return agentNo;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Recursive method for building an agent k-D tree.</summary>
|
||||
*
|
||||
* <param name="begin">The beginning agent k-D tree node node index.
|
||||
* </param>
|
||||
* <param name="end">The ending agent k-D tree node index.</param>
|
||||
* <param name="node">The current agent k-D tree node index.</param>
|
||||
*/
|
||||
private void buildAgentTreeRecursive(int begin, int end, int node)
|
||||
{
|
||||
agentTree_[node].begin_ = begin;
|
||||
agentTree_[node].end_ = end;
|
||||
agentTree_[node].minX_ = agentTree_[node].maxX_ = agents_[begin].position_.x_;
|
||||
agentTree_[node].minY_ = agentTree_[node].maxY_ = agents_[begin].position_.y_;
|
||||
|
||||
for (int i = begin + 1; i < end; ++i)
|
||||
{
|
||||
agentTree_[node].maxX_ = Math.Max(agentTree_[node].maxX_, agents_[i].position_.x_);
|
||||
agentTree_[node].minX_ = Math.Min(agentTree_[node].minX_, agents_[i].position_.x_);
|
||||
agentTree_[node].maxY_ = Math.Max(agentTree_[node].maxY_, agents_[i].position_.y_);
|
||||
agentTree_[node].minY_ = Math.Min(agentTree_[node].minY_, agents_[i].position_.y_);
|
||||
}
|
||||
|
||||
if (end - begin > MAX_LEAF_SIZE)
|
||||
{
|
||||
/* No leaf node. */
|
||||
bool isVertical = agentTree_[node].maxX_ - agentTree_[node].minX_ > agentTree_[node].maxY_ - agentTree_[node].minY_;
|
||||
float splitValue = 0.5f * (isVertical ? agentTree_[node].maxX_ + agentTree_[node].minX_ : agentTree_[node].maxY_ + agentTree_[node].minY_);
|
||||
|
||||
int left = begin;
|
||||
int right = end;
|
||||
|
||||
while (left < right)
|
||||
{
|
||||
while (left < right && (isVertical ? agents_[left].position_.x_ : agents_[left].position_.y_) < splitValue)
|
||||
{
|
||||
++left;
|
||||
}
|
||||
|
||||
while (right > left && (isVertical ? agents_[right - 1].position_.x_ : agents_[right - 1].position_.y_) >= splitValue)
|
||||
{
|
||||
--right;
|
||||
}
|
||||
|
||||
if (left < right)
|
||||
{
|
||||
Agent tempAgent = agents_[left];
|
||||
agents_[left] = agents_[right - 1];
|
||||
agents_[right - 1] = tempAgent;
|
||||
++left;
|
||||
--right;
|
||||
}
|
||||
}
|
||||
|
||||
int leftSize = left - begin;
|
||||
|
||||
if (leftSize == 0)
|
||||
{
|
||||
++leftSize;
|
||||
++left;
|
||||
++right;
|
||||
}
|
||||
|
||||
agentTree_[node].left_ = node + 1;
|
||||
agentTree_[node].right_ = node + 2 * leftSize;
|
||||
|
||||
buildAgentTreeRecursive(begin, left, agentTree_[node].left_);
|
||||
buildAgentTreeRecursive(left, end, agentTree_[node].right_);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Recursive method for building an obstacle k-D tree.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>An obstacle k-D tree node.</returns>
|
||||
*
|
||||
* <param name="obstacles">A list of obstacles.</param>
|
||||
*/
|
||||
private ObstacleTreeNode buildObstacleTreeRecursive(Simulator simulator,IList<Obstacle> obstacles)
|
||||
{
|
||||
if (obstacles.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
ObstacleTreeNode node = new ObstacleTreeNode();
|
||||
|
||||
int optimalSplit = 0;
|
||||
int minLeft = obstacles.Count;
|
||||
int minRight = obstacles.Count;
|
||||
|
||||
for (int i = 0; i < obstacles.Count; ++i)
|
||||
{
|
||||
int leftSize = 0;
|
||||
int rightSize = 0;
|
||||
|
||||
Obstacle obstacleI1 = obstacles[i];
|
||||
Obstacle obstacleI2 = obstacleI1.next_;
|
||||
|
||||
/* Compute optimal split node. */
|
||||
for (int j = 0; j < obstacles.Count; ++j)
|
||||
{
|
||||
if (i == j)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Obstacle obstacleJ1 = obstacles[j];
|
||||
Obstacle obstacleJ2 = obstacleJ1.next_;
|
||||
|
||||
float j1LeftOfI = RVOMath.leftOf(obstacleI1.point_, obstacleI2.point_, obstacleJ1.point_);
|
||||
float j2LeftOfI = RVOMath.leftOf(obstacleI1.point_, obstacleI2.point_, obstacleJ2.point_);
|
||||
|
||||
if (j1LeftOfI >= -RVOMath.RVO_EPSILON && j2LeftOfI >= -RVOMath.RVO_EPSILON)
|
||||
{
|
||||
++leftSize;
|
||||
}
|
||||
else if (j1LeftOfI <= RVOMath.RVO_EPSILON && j2LeftOfI <= RVOMath.RVO_EPSILON)
|
||||
{
|
||||
++rightSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
++leftSize;
|
||||
++rightSize;
|
||||
}
|
||||
|
||||
if (new FloatPair(Math.Max(leftSize, rightSize), Math.Min(leftSize, rightSize)) >= new FloatPair(Math.Max(minLeft, minRight), Math.Min(minLeft, minRight)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (new FloatPair(Math.Max(leftSize, rightSize), Math.Min(leftSize, rightSize)) < new FloatPair(Math.Max(minLeft, minRight), Math.Min(minLeft, minRight)))
|
||||
{
|
||||
minLeft = leftSize;
|
||||
minRight = rightSize;
|
||||
optimalSplit = i;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
/* Build split node. */
|
||||
IList<Obstacle> leftObstacles = new List<Obstacle>(minLeft);
|
||||
|
||||
for (int n = 0; n < minLeft; ++n)
|
||||
{
|
||||
leftObstacles.Add(null);
|
||||
}
|
||||
|
||||
IList<Obstacle> rightObstacles = new List<Obstacle>(minRight);
|
||||
|
||||
for (int n = 0; n < minRight; ++n)
|
||||
{
|
||||
rightObstacles.Add(null);
|
||||
}
|
||||
|
||||
int leftCounter = 0;
|
||||
int rightCounter = 0;
|
||||
int i = optimalSplit;
|
||||
|
||||
Obstacle obstacleI1 = obstacles[i];
|
||||
Obstacle obstacleI2 = obstacleI1.next_;
|
||||
|
||||
for (int j = 0; j < obstacles.Count; ++j)
|
||||
{
|
||||
if (i == j)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Obstacle obstacleJ1 = obstacles[j];
|
||||
Obstacle obstacleJ2 = obstacleJ1.next_;
|
||||
|
||||
float j1LeftOfI = RVOMath.leftOf(obstacleI1.point_, obstacleI2.point_, obstacleJ1.point_);
|
||||
float j2LeftOfI = RVOMath.leftOf(obstacleI1.point_, obstacleI2.point_, obstacleJ2.point_);
|
||||
|
||||
if (j1LeftOfI >= -RVOMath.RVO_EPSILON && j2LeftOfI >= -RVOMath.RVO_EPSILON)
|
||||
{
|
||||
leftObstacles[leftCounter++] = obstacles[j];
|
||||
}
|
||||
else if (j1LeftOfI <= RVOMath.RVO_EPSILON && j2LeftOfI <= RVOMath.RVO_EPSILON)
|
||||
{
|
||||
rightObstacles[rightCounter++] = obstacles[j];
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Split obstacle j. */
|
||||
float t = RVOMath.det(obstacleI2.point_ - obstacleI1.point_, obstacleJ1.point_ - obstacleI1.point_) / RVOMath.det(obstacleI2.point_ - obstacleI1.point_, obstacleJ1.point_ - obstacleJ2.point_);
|
||||
|
||||
Vector2 splitPoint = obstacleJ1.point_ + t * (obstacleJ2.point_ - obstacleJ1.point_);
|
||||
|
||||
Obstacle newObstacle = new Obstacle();
|
||||
newObstacle.point_ = splitPoint;
|
||||
newObstacle.previous_ = obstacleJ1;
|
||||
newObstacle.next_ = obstacleJ2;
|
||||
newObstacle.convex_ = true;
|
||||
newObstacle.direction_ = obstacleJ1.direction_;
|
||||
|
||||
newObstacle.id_ = simulator.obstacles_.Count;
|
||||
|
||||
simulator.obstacles_.Add(newObstacle);
|
||||
|
||||
obstacleJ1.next_ = newObstacle;
|
||||
obstacleJ2.previous_ = newObstacle;
|
||||
|
||||
if (j1LeftOfI > 0.0f)
|
||||
{
|
||||
leftObstacles[leftCounter++] = obstacleJ1;
|
||||
rightObstacles[rightCounter++] = newObstacle;
|
||||
}
|
||||
else
|
||||
{
|
||||
rightObstacles[rightCounter++] = obstacleJ1;
|
||||
leftObstacles[leftCounter++] = newObstacle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
node.obstacle_ = obstacleI1;
|
||||
node.left_ = buildObstacleTreeRecursive(simulator,leftObstacles);
|
||||
node.right_ = buildObstacleTreeRecursive(simulator,rightObstacles);
|
||||
|
||||
return node;
|
||||
}
|
||||
}
|
||||
|
||||
private void queryAgentTreeRecursive(Vector2 position, ref float rangeSq, ref int agentNo, int node)
|
||||
{
|
||||
if (agentTree_[node].end_ - agentTree_[node].begin_ <= MAX_LEAF_SIZE)
|
||||
{
|
||||
for (int i = agentTree_[node].begin_; i < agentTree_[node].end_; ++i)
|
||||
{
|
||||
float distSq = RVOMath.absSq(position - agents_[i].position_);
|
||||
if (distSq < rangeSq)
|
||||
{
|
||||
rangeSq = distSq;
|
||||
agentNo = agents_[i].id_;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
float distSqLeft = RVOMath.sqr(Math.Max(0.0f, agentTree_[agentTree_[node].left_].minX_ - position.x_)) + RVOMath.sqr(Math.Max(0.0f, position.x_ - agentTree_[agentTree_[node].left_].maxX_)) + RVOMath.sqr(Math.Max(0.0f, agentTree_[agentTree_[node].left_].minY_ - position.y_)) + RVOMath.sqr(Math.Max(0.0f, position.y_ - agentTree_[agentTree_[node].left_].maxY_));
|
||||
float distSqRight = RVOMath.sqr(Math.Max(0.0f, agentTree_[agentTree_[node].right_].minX_ - position.x_)) + RVOMath.sqr(Math.Max(0.0f, position.x_ - agentTree_[agentTree_[node].right_].maxX_)) + RVOMath.sqr(Math.Max(0.0f, agentTree_[agentTree_[node].right_].minY_ - position.y_)) + RVOMath.sqr(Math.Max(0.0f, position.y_ - agentTree_[agentTree_[node].right_].maxY_));
|
||||
|
||||
if (distSqLeft < distSqRight)
|
||||
{
|
||||
if (distSqLeft < rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(position, ref rangeSq, ref agentNo, agentTree_[node].left_);
|
||||
|
||||
if (distSqRight < rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(position, ref rangeSq, ref agentNo, agentTree_[node].right_);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (distSqRight < rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(position, ref rangeSq, ref agentNo, agentTree_[node].right_);
|
||||
|
||||
if (distSqLeft < rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(position, ref rangeSq, ref agentNo, agentTree_[node].left_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Recursive method for computing the agent neighbors of the
|
||||
* specified agent.</summary>
|
||||
*
|
||||
* <param name="agent">The agent for which agent neighbors are to be
|
||||
* computed.</param>
|
||||
* <param name="rangeSq">The squared range around the agent.</param>
|
||||
* <param name="node">The current agent k-D tree node index.</param>
|
||||
*/
|
||||
private void queryAgentTreeRecursive(Agent agent, ref float rangeSq, int node)
|
||||
{
|
||||
if (agentTree_[node].end_ - agentTree_[node].begin_ <= MAX_LEAF_SIZE)
|
||||
{
|
||||
for (int i = agentTree_[node].begin_; i < agentTree_[node].end_; ++i)
|
||||
{
|
||||
agent.insertAgentNeighbor(agents_[i], ref rangeSq);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
float distSqLeft = RVOMath.sqr(Math.Max(0.0f, agentTree_[agentTree_[node].left_].minX_ - agent.position_.x_)) + RVOMath.sqr(Math.Max(0.0f, agent.position_.x_ - agentTree_[agentTree_[node].left_].maxX_)) + RVOMath.sqr(Math.Max(0.0f, agentTree_[agentTree_[node].left_].minY_ - agent.position_.y_)) + RVOMath.sqr(Math.Max(0.0f, agent.position_.y_ - agentTree_[agentTree_[node].left_].maxY_));
|
||||
float distSqRight = RVOMath.sqr(Math.Max(0.0f, agentTree_[agentTree_[node].right_].minX_ - agent.position_.x_)) + RVOMath.sqr(Math.Max(0.0f, agent.position_.x_ - agentTree_[agentTree_[node].right_].maxX_)) + RVOMath.sqr(Math.Max(0.0f, agentTree_[agentTree_[node].right_].minY_ - agent.position_.y_)) + RVOMath.sqr(Math.Max(0.0f, agent.position_.y_ - agentTree_[agentTree_[node].right_].maxY_));
|
||||
|
||||
if (distSqLeft < distSqRight)
|
||||
{
|
||||
if (distSqLeft < rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(agent, ref rangeSq, agentTree_[node].left_);
|
||||
|
||||
if (distSqRight < rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(agent, ref rangeSq, agentTree_[node].right_);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (distSqRight < rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(agent, ref rangeSq, agentTree_[node].right_);
|
||||
|
||||
if (distSqLeft < rangeSq)
|
||||
{
|
||||
queryAgentTreeRecursive(agent, ref rangeSq, agentTree_[node].left_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Recursive method for computing the obstacle neighbors of the
|
||||
* specified agent.</summary>
|
||||
*
|
||||
* <param name="agent">The agent for which obstacle neighbors are to be
|
||||
* computed.</param>
|
||||
* <param name="rangeSq">The squared range around the agent.</param>
|
||||
* <param name="node">The current obstacle k-D node.</param>
|
||||
*/
|
||||
private void queryObstacleTreeRecursive(Agent agent, float rangeSq, ObstacleTreeNode node)
|
||||
{
|
||||
if (node != null)
|
||||
{
|
||||
Obstacle obstacle1 = node.obstacle_;
|
||||
Obstacle obstacle2 = obstacle1.next_;
|
||||
|
||||
float agentLeftOfLine = RVOMath.leftOf(obstacle1.point_, obstacle2.point_, agent.position_);
|
||||
|
||||
queryObstacleTreeRecursive(agent, rangeSq, agentLeftOfLine >= 0.0f ? node.left_ : node.right_);
|
||||
|
||||
float distSqLine = RVOMath.sqr(agentLeftOfLine) / RVOMath.absSq(obstacle2.point_ - obstacle1.point_);
|
||||
|
||||
if (distSqLine < rangeSq)
|
||||
{
|
||||
if (agentLeftOfLine < 0.0f)
|
||||
{
|
||||
/*
|
||||
* Try obstacle at this node only if agent is on right side of
|
||||
* obstacle (and can see obstacle).
|
||||
*/
|
||||
agent.insertObstacleNeighbor(node.obstacle_, rangeSq);
|
||||
}
|
||||
|
||||
/* Try other side of line. */
|
||||
queryObstacleTreeRecursive(agent, rangeSq, agentLeftOfLine >= 0.0f ? node.right_ : node.left_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Recursive method for querying the visibility between two
|
||||
* points within a specified radius.</summary>
|
||||
*
|
||||
* <returns>True if q1 and q2 are mutually visible within the radius;
|
||||
* false otherwise.</returns>
|
||||
*
|
||||
* <param name="q1">The first point between which visibility is to be
|
||||
* tested.</param>
|
||||
* <param name="q2">The second point between which visibility is to be
|
||||
* tested.</param>
|
||||
* <param name="radius">The radius within which visibility is to be
|
||||
* tested.</param>
|
||||
* <param name="node">The current obstacle k-D node.</param>
|
||||
*/
|
||||
private bool queryVisibilityRecursive(Vector2 q1, Vector2 q2, float radius, ObstacleTreeNode node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
Obstacle obstacle1 = node.obstacle_;
|
||||
Obstacle obstacle2 = obstacle1.next_;
|
||||
|
||||
float q1LeftOfI = RVOMath.leftOf(obstacle1.point_, obstacle2.point_, q1);
|
||||
float q2LeftOfI = RVOMath.leftOf(obstacle1.point_, obstacle2.point_, q2);
|
||||
float invLengthI = 1.0f / RVOMath.absSq(obstacle2.point_ - obstacle1.point_);
|
||||
|
||||
if (q1LeftOfI >= 0.0f && q2LeftOfI >= 0.0f)
|
||||
{
|
||||
return queryVisibilityRecursive(q1, q2, radius, node.left_) && ((RVOMath.sqr(q1LeftOfI) * invLengthI >= RVOMath.sqr(radius) && RVOMath.sqr(q2LeftOfI) * invLengthI >= RVOMath.sqr(radius)) || queryVisibilityRecursive(q1, q2, radius, node.right_));
|
||||
}
|
||||
|
||||
if (q1LeftOfI <= 0.0f && q2LeftOfI <= 0.0f)
|
||||
{
|
||||
return queryVisibilityRecursive(q1, q2, radius, node.right_) && ((RVOMath.sqr(q1LeftOfI) * invLengthI >= RVOMath.sqr(radius) && RVOMath.sqr(q2LeftOfI) * invLengthI >= RVOMath.sqr(radius)) || queryVisibilityRecursive(q1, q2, radius, node.left_));
|
||||
}
|
||||
|
||||
if (q1LeftOfI >= 0.0f && q2LeftOfI <= 0.0f)
|
||||
{
|
||||
/* One can see through obstacle from left to right. */
|
||||
return queryVisibilityRecursive(q1, q2, radius, node.left_) && queryVisibilityRecursive(q1, q2, radius, node.right_);
|
||||
}
|
||||
|
||||
float point1LeftOfQ = RVOMath.leftOf(q1, q2, obstacle1.point_);
|
||||
float point2LeftOfQ = RVOMath.leftOf(q1, q2, obstacle2.point_);
|
||||
float invLengthQ = 1.0f / RVOMath.absSq(q2 - q1);
|
||||
|
||||
return point1LeftOfQ * point2LeftOfQ >= 0.0f && RVOMath.sqr(point1LeftOfQ) * invLengthQ > RVOMath.sqr(radius) && RVOMath.sqr(point2LeftOfQ) * invLengthQ > RVOMath.sqr(radius) && queryVisibilityRecursive(q1, q2, radius, node.left_) && queryVisibilityRecursive(q1, q2, radius, node.right_);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 843e733cda984e1f9609e15ea17aae14
|
||||
timeCreated: 1708509745
|
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Line.cs
|
||||
* RVO2 Library C#
|
||||
*
|
||||
* Copyright 2008 University of North Carolina at Chapel Hill
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Please send all bug reports to <geom@cs.unc.edu>.
|
||||
*
|
||||
* The authors may be contacted via:
|
||||
*
|
||||
* Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
|
||||
* Dept. of Computer Science
|
||||
* 201 S. Columbia St.
|
||||
* Frederick P. Brooks, Jr. Computer Science Bldg.
|
||||
* Chapel Hill, N.C. 27599-3175
|
||||
* United States of America
|
||||
*
|
||||
* <http://gamma.cs.unc.edu/RVO2/>
|
||||
*/
|
||||
|
||||
namespace RVO
|
||||
{
|
||||
/**
|
||||
* <summary>Defines a directed line.</summary>
|
||||
*/
|
||||
public struct Line
|
||||
{
|
||||
public Vector2 direction;
|
||||
public Vector2 point;
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 561d472d76e84e58bf85b3a4500de88e
|
||||
timeCreated: 1708509745
|
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Obstacle.cs
|
||||
* RVO2 Library C#
|
||||
*
|
||||
* Copyright 2008 University of North Carolina at Chapel Hill
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Please send all bug reports to <geom@cs.unc.edu>.
|
||||
*
|
||||
* The authors may be contacted via:
|
||||
*
|
||||
* Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
|
||||
* Dept. of Computer Science
|
||||
* 201 S. Columbia St.
|
||||
* Frederick P. Brooks, Jr. Computer Science Bldg.
|
||||
* Chapel Hill, N.C. 27599-3175
|
||||
* United States of America
|
||||
*
|
||||
* <http://gamma.cs.unc.edu/RVO2/>
|
||||
*/
|
||||
|
||||
namespace RVO
|
||||
{
|
||||
/**
|
||||
* <summary>Defines static obstacles in the simulation.</summary>
|
||||
*/
|
||||
internal class Obstacle
|
||||
{
|
||||
|
||||
internal Obstacle next_;
|
||||
internal Obstacle previous_;
|
||||
internal Vector2 direction_;
|
||||
internal Vector2 point_;
|
||||
internal int id_;
|
||||
internal bool convex_;
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5b53ac8ae25f4c2b9045a0e4d598eda3
|
||||
timeCreated: 1708509745
|
@ -0,0 +1,192 @@
|
||||
/*
|
||||
* RVOMath.cs
|
||||
* RVO2 Library C#
|
||||
*
|
||||
* Copyright 2008 University of North Carolina at Chapel Hill
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Please send all bug reports to <geom@cs.unc.edu>.
|
||||
*
|
||||
* The authors may be contacted via:
|
||||
*
|
||||
* Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
|
||||
* Dept. of Computer Science
|
||||
* 201 S. Columbia St.
|
||||
* Frederick P. Brooks, Jr. Computer Science Bldg.
|
||||
* Chapel Hill, N.C. 27599-3175
|
||||
* United States of America
|
||||
*
|
||||
* <http://gamma.cs.unc.edu/RVO2/>
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace RVO
|
||||
{
|
||||
/**
|
||||
* <summary>Contains functions and constants used in multiple classes.
|
||||
* </summary>
|
||||
*/
|
||||
public struct RVOMath
|
||||
{
|
||||
/**
|
||||
* <summary>A sufficiently small positive number.</summary>
|
||||
*/
|
||||
internal const float RVO_EPSILON = 0.00001f;
|
||||
|
||||
/**
|
||||
* <summary>Computes the length of a specified two-dimensional vector.
|
||||
* </summary>
|
||||
*
|
||||
* <param name="vector">The two-dimensional vector whose length is to be
|
||||
* computed.</param>
|
||||
* <returns>The length of the two-dimensional vector.</returns>
|
||||
*/
|
||||
public static float abs(Vector2 vector)
|
||||
{
|
||||
return sqrt(absSq(vector));
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the squared length of a specified two-dimensional
|
||||
* vector.</summary>
|
||||
*
|
||||
* <returns>The squared length of the two-dimensional vector.</returns>
|
||||
*
|
||||
* <param name="vector">The two-dimensional vector whose squared length
|
||||
* is to be computed.</param>
|
||||
*/
|
||||
public static float absSq(Vector2 vector)
|
||||
{
|
||||
return vector * vector;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the normalization of the specified two-dimensional
|
||||
* vector.</summary>
|
||||
*
|
||||
* <returns>The normalization of the two-dimensional vector.</returns>
|
||||
*
|
||||
* <param name="vector">The two-dimensional vector whose normalization
|
||||
* is to be computed.</param>
|
||||
*/
|
||||
public static Vector2 normalize(Vector2 vector)
|
||||
{
|
||||
return vector / abs(vector);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the determinant of a two-dimensional square matrix
|
||||
* with rows consisting of the specified two-dimensional vectors.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The determinant of the two-dimensional square matrix.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="vector1">The top row of the two-dimensional square
|
||||
* matrix.</param>
|
||||
* <param name="vector2">The bottom row of the two-dimensional square
|
||||
* matrix.</param>
|
||||
*/
|
||||
internal static float det(Vector2 vector1, Vector2 vector2)
|
||||
{
|
||||
return vector1.x_ * vector2.y_ - vector1.y_ * vector2.x_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the squared distance from a line segment with the
|
||||
* specified endpoints to a specified point.</summary>
|
||||
*
|
||||
* <returns>The squared distance from the line segment to the point.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="vector1">The first endpoint of the line segment.</param>
|
||||
* <param name="vector2">The second endpoint of the line segment.
|
||||
* </param>
|
||||
* <param name="vector3">The point to which the squared distance is to
|
||||
* be calculated.</param>
|
||||
*/
|
||||
internal static float distSqPointLineSegment(Vector2 vector1, Vector2 vector2, Vector2 vector3)
|
||||
{
|
||||
float r = ((vector3 - vector1) * (vector2 - vector1)) / absSq(vector2 - vector1);
|
||||
|
||||
if (r < 0.0f)
|
||||
{
|
||||
return absSq(vector3 - vector1);
|
||||
}
|
||||
|
||||
if (r > 1.0f)
|
||||
{
|
||||
return absSq(vector3 - vector2);
|
||||
}
|
||||
|
||||
return absSq(vector3 - (vector1 + r * (vector2 - vector1)));
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the absolute value of a float.</summary>
|
||||
*
|
||||
* <returns>The absolute value of the float.</returns>
|
||||
*
|
||||
* <param name="scalar">The float of which to compute the absolute
|
||||
* value.</param>
|
||||
*/
|
||||
internal static float fabs(float scalar)
|
||||
{
|
||||
return Math.Abs(scalar);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the signed distance from a line connecting the
|
||||
* specified points to a specified point.</summary>
|
||||
*
|
||||
* <returns>Positive when the point c lies to the left of the line ab.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="a">The first point on the line.</param>
|
||||
* <param name="b">The second point on the line.</param>
|
||||
* <param name="c">The point to which the signed distance is to be
|
||||
* calculated.</param>
|
||||
*/
|
||||
internal static float leftOf(Vector2 a, Vector2 b, Vector2 c)
|
||||
{
|
||||
return det(a - c, b - a);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the square of a float.</summary>
|
||||
*
|
||||
* <returns>The square of the float.</returns>
|
||||
*
|
||||
* <param name="scalar">The float to be squared.</param>
|
||||
*/
|
||||
internal static float sqr(float scalar)
|
||||
{
|
||||
return scalar * scalar;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the square root of a float.</summary>
|
||||
*
|
||||
* <returns>The square root of the float.</returns>
|
||||
*
|
||||
* <param name="scalar">The float of which to compute the square root.
|
||||
* </param>
|
||||
*/
|
||||
internal static float sqrt(float scalar)
|
||||
{
|
||||
return (float)Math.Sqrt(scalar);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bd22ac7d066645e1bd1e8b9ca83a11a5
|
||||
timeCreated: 1708509745
|
@ -0,0 +1,936 @@
|
||||
/*
|
||||
* Simulator.cs
|
||||
* RVO2 Library C#
|
||||
*
|
||||
* Copyright 2008 University of North Carolina at Chapel Hill
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Please send all bug reports to <geom@cs.unc.edu>.
|
||||
*
|
||||
* The authors may be contacted via:
|
||||
*
|
||||
* Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
|
||||
* Dept. of Computer Science
|
||||
* 201 S. Columbia St.
|
||||
* Frederick P. Brooks, Jr. Computer Science Bldg.
|
||||
* Chapel Hill, N.C. 27599-3175
|
||||
* United States of America
|
||||
*
|
||||
* <http://gamma.cs.unc.edu/RVO2/>
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
|
||||
namespace RVO
|
||||
{
|
||||
/**
|
||||
* <summary>Defines the simulation.</summary>
|
||||
*/
|
||||
public class Simulator
|
||||
{
|
||||
/**
|
||||
* <summary>Defines a worker.</summary>
|
||||
*/
|
||||
private class Worker
|
||||
{
|
||||
private ManualResetEvent doneEvent_;
|
||||
private int end_;
|
||||
private int start_;
|
||||
|
||||
/**
|
||||
* <summary>Constructs and initializes a worker.</summary>
|
||||
*
|
||||
* <param name="start">Start.</param>
|
||||
* <param name="end">End.</param>
|
||||
* <param name="doneEvent">Done event.</param>
|
||||
*/
|
||||
internal Worker(int start, int end, ManualResetEvent doneEvent)
|
||||
{
|
||||
start_ = start;
|
||||
end_ = end;
|
||||
doneEvent_ = doneEvent;
|
||||
}
|
||||
|
||||
internal void config(int start, int end)
|
||||
{
|
||||
start_ = start;
|
||||
end_ = end;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Performs a simulation step.</summary>
|
||||
*
|
||||
* <param name="obj">Unused.</param>
|
||||
*/
|
||||
internal void step(Simulator simulator)
|
||||
{
|
||||
for (int index = start_; index < end_; ++index)
|
||||
{
|
||||
simulator.agents_[index].computeNeighbors(simulator);
|
||||
simulator.agents_[index].computeNewVelocity(simulator);
|
||||
}
|
||||
doneEvent_.Set();
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>updates the two-dimensional position and
|
||||
* two-dimensional velocity of each agent.</summary>
|
||||
*
|
||||
* <param name="obj">Unused.</param>
|
||||
*/
|
||||
internal void update(Simulator simulator)
|
||||
{
|
||||
for (int index = start_; index < end_; ++index)
|
||||
{
|
||||
simulator.agents_[index].update(simulator);
|
||||
}
|
||||
|
||||
doneEvent_.Set();
|
||||
}
|
||||
}
|
||||
|
||||
internal IDictionary<int, int> agentNo2indexDict_;
|
||||
internal IDictionary<int, int> index2agentNoDict_;
|
||||
internal IList<Agent> agents_;
|
||||
internal IList<Obstacle> obstacles_;
|
||||
internal KdTree kdTree_;
|
||||
internal float timeStep_;
|
||||
|
||||
private Agent defaultAgent_;
|
||||
private ManualResetEvent[] doneEvents_;
|
||||
private Worker[] workers_;
|
||||
private int numWorkers_;
|
||||
private int workerAgentCount_;
|
||||
private float globalTime_;
|
||||
|
||||
public void delAgent(int agentNo)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].needDelete_ = true;
|
||||
}
|
||||
|
||||
void updateDeleteAgent()
|
||||
{
|
||||
bool isDelete = false;
|
||||
for (int i = agents_.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (agents_[i].needDelete_)
|
||||
{
|
||||
agents_.RemoveAt(i);
|
||||
isDelete = true;
|
||||
}
|
||||
}
|
||||
if (isDelete)
|
||||
onDelAgent();
|
||||
}
|
||||
|
||||
static int s_totalID = 0;
|
||||
/**
|
||||
* <summary>Adds a new agent with default properties to the simulation.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The number of the agent, or -1 when the agent defaults have
|
||||
* not been set.</returns>
|
||||
*
|
||||
* <param name="position">The two-dimensional starting position of this
|
||||
* agent.</param>
|
||||
*/
|
||||
public int addAgent(Vector2 position)
|
||||
{
|
||||
if (defaultAgent_ == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
Agent agent = new Agent();
|
||||
agent.id_ = s_totalID;
|
||||
s_totalID++;
|
||||
agent.maxNeighbors_ = defaultAgent_.maxNeighbors_;
|
||||
agent.maxSpeed_ = defaultAgent_.maxSpeed_;
|
||||
agent.neighborDist_ = defaultAgent_.neighborDist_;
|
||||
agent.position_ = position;
|
||||
agent.radius_ = defaultAgent_.radius_;
|
||||
agent.timeHorizon_ = defaultAgent_.timeHorizon_;
|
||||
agent.timeHorizonObst_ = defaultAgent_.timeHorizonObst_;
|
||||
agent.velocity_ = defaultAgent_.velocity_;
|
||||
agents_.Add(agent);
|
||||
onAddAgent();
|
||||
return agent.id_;
|
||||
}
|
||||
|
||||
void onDelAgent()
|
||||
{
|
||||
agentNo2indexDict_.Clear();
|
||||
index2agentNoDict_.Clear();
|
||||
|
||||
for (int i = 0; i < agents_.Count; i++)
|
||||
{
|
||||
int agentNo = agents_[i].id_;
|
||||
agentNo2indexDict_.Add(agentNo, i);
|
||||
index2agentNoDict_.Add(i, agentNo);
|
||||
}
|
||||
}
|
||||
|
||||
void onAddAgent()
|
||||
{
|
||||
if (agents_.Count == 0)
|
||||
return;
|
||||
|
||||
int index = agents_.Count - 1;
|
||||
int agentNo = agents_[index].id_;
|
||||
agentNo2indexDict_.Add(agentNo, index);
|
||||
index2agentNoDict_.Add(index, agentNo);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Adds a new agent to the simulation.</summary>
|
||||
*
|
||||
* <returns>The number of the agent.</returns>
|
||||
*
|
||||
* <param name="position">The two-dimensional starting position of this
|
||||
* agent.</param>
|
||||
* <param name="neighborDist">The maximum distance (center point to
|
||||
* center point) to other agents this agent takes into account in the
|
||||
* navigation. The larger this number, the longer the running time of
|
||||
* the simulation. If the number is too low, the simulation will not be
|
||||
* safe. Must be non-negative.</param>
|
||||
* <param name="maxNeighbors">The maximum number of other agents this
|
||||
* agent takes into account in the navigation. The larger this number,
|
||||
* the longer the running time of the simulation. If the number is too
|
||||
* low, the simulation will not be safe.</param>
|
||||
* <param name="timeHorizon">The minimal amount of time for which this
|
||||
* agent's velocities that are computed by the simulation are safe with
|
||||
* respect to other agents. The larger this number, the sooner this
|
||||
* agent will respond to the presence of other agents, but the less
|
||||
* freedom this agent has in choosing its velocities. Must be positive.
|
||||
* </param>
|
||||
* <param name="timeHorizonObst">The minimal amount of time for which
|
||||
* this agent's velocities that are computed by the simulation are safe
|
||||
* with respect to obstacles. The larger this number, the sooner this
|
||||
* agent will respond to the presence of obstacles, but the less freedom
|
||||
* this agent has in choosing its velocities. Must be positive.</param>
|
||||
* <param name="radius">The radius of this agent. Must be non-negative.
|
||||
* </param>
|
||||
* <param name="maxSpeed">The maximum speed of this agent. Must be
|
||||
* non-negative.</param>
|
||||
* <param name="velocity">The initial two-dimensional linear velocity of
|
||||
* this agent.</param>
|
||||
*/
|
||||
public int addAgent(Vector2 position, float neighborDist, int maxNeighbors, float timeHorizon, float timeHorizonObst, float radius, float maxSpeed, Vector2 velocity)
|
||||
{
|
||||
Agent agent = new Agent();
|
||||
agent.id_ = s_totalID;
|
||||
s_totalID++;
|
||||
agent.maxNeighbors_ = maxNeighbors;
|
||||
agent.maxSpeed_ = maxSpeed;
|
||||
agent.neighborDist_ = neighborDist;
|
||||
agent.position_ = position;
|
||||
agent.radius_ = radius;
|
||||
agent.timeHorizon_ = timeHorizon;
|
||||
agent.timeHorizonObst_ = timeHorizonObst;
|
||||
agent.velocity_ = velocity;
|
||||
agents_.Add(agent);
|
||||
onAddAgent();
|
||||
return agent.id_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Adds a new obstacle to the simulation.</summary>
|
||||
*
|
||||
* <returns>The number of the first vertex of the obstacle, or -1 when
|
||||
* the number of vertices is less than two.</returns>
|
||||
*
|
||||
* <param name="vertices">List of the vertices of the polygonal obstacle
|
||||
* in counterclockwise order.</param>
|
||||
*
|
||||
* <remarks>To add a "negative" obstacle, e.g. a bounding polygon around
|
||||
* the environment, the vertices should be listed in clockwise order.
|
||||
* </remarks>
|
||||
*/
|
||||
public int addObstacle(IList<Vector2> vertices)
|
||||
{
|
||||
if (vertices.Count < 2)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
int obstacleNo = obstacles_.Count;
|
||||
|
||||
for (int i = 0; i < vertices.Count; ++i)
|
||||
{
|
||||
Obstacle obstacle = new Obstacle();
|
||||
obstacle.point_ = vertices[i];
|
||||
|
||||
if (i != 0)
|
||||
{
|
||||
obstacle.previous_ = obstacles_[obstacles_.Count - 1];
|
||||
obstacle.previous_.next_ = obstacle;
|
||||
}
|
||||
|
||||
if (i == vertices.Count - 1)
|
||||
{
|
||||
obstacle.next_ = obstacles_[obstacleNo];
|
||||
obstacle.next_.previous_ = obstacle;
|
||||
}
|
||||
|
||||
obstacle.direction_ = RVOMath.normalize(vertices[(i == vertices.Count - 1 ? 0 : i + 1)] - vertices[i]);
|
||||
|
||||
if (vertices.Count == 2)
|
||||
{
|
||||
obstacle.convex_ = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
obstacle.convex_ = (RVOMath.leftOf(vertices[(i == 0 ? vertices.Count - 1 : i - 1)], vertices[i], vertices[(i == vertices.Count - 1 ? 0 : i + 1)]) >= 0.0f);
|
||||
}
|
||||
|
||||
obstacle.id_ = obstacles_.Count;
|
||||
obstacles_.Add(obstacle);
|
||||
}
|
||||
|
||||
return obstacleNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Clears the simulation.</summary>
|
||||
*/
|
||||
public void Clear()
|
||||
{
|
||||
agents_ = new List<Agent>();
|
||||
agentNo2indexDict_ = new Dictionary<int, int>();
|
||||
index2agentNoDict_ = new Dictionary<int, int>();
|
||||
defaultAgent_ = null;
|
||||
kdTree_ = new KdTree();
|
||||
obstacles_ = new List<Obstacle>();
|
||||
globalTime_ = 0.0f;
|
||||
timeStep_ = 0.1f;
|
||||
|
||||
SetNumWorkers(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Performs a simulation step and updates the two-dimensional
|
||||
* position and two-dimensional velocity of each agent.</summary>
|
||||
*
|
||||
* <returns>The global time after the simulation step.</returns>
|
||||
*/
|
||||
public float doStep()
|
||||
{
|
||||
updateDeleteAgent();
|
||||
|
||||
if (workers_ == null)
|
||||
{
|
||||
workers_ = new Worker[numWorkers_];
|
||||
doneEvents_ = new ManualResetEvent[workers_.Length];
|
||||
workerAgentCount_ = getNumAgents();
|
||||
|
||||
for (int block = 0; block < workers_.Length; ++block)
|
||||
{
|
||||
doneEvents_[block] = new ManualResetEvent(false);
|
||||
workers_[block] = new Worker(block * getNumAgents() / workers_.Length, (block + 1) * getNumAgents() / workers_.Length, doneEvents_[block]);
|
||||
}
|
||||
}
|
||||
|
||||
if (workerAgentCount_ != getNumAgents())
|
||||
{
|
||||
workerAgentCount_ = getNumAgents();
|
||||
for (int block = 0; block < workers_.Length; ++block)
|
||||
{
|
||||
workers_[block].config(block * getNumAgents() / workers_.Length, (block + 1) * getNumAgents() / workers_.Length);
|
||||
}
|
||||
}
|
||||
|
||||
kdTree_.buildAgentTree(this);
|
||||
|
||||
for (int block = 0; block < workers_.Length; ++block)
|
||||
{
|
||||
workers_[block].step(this);
|
||||
}
|
||||
|
||||
for (int block = 0; block < workers_.Length; ++block)
|
||||
{
|
||||
doneEvents_[block].Reset();
|
||||
workers_[block].update(this);
|
||||
}
|
||||
|
||||
globalTime_ += timeStep_;
|
||||
|
||||
return globalTime_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the specified agent neighbor of the specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The number of the neighboring agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose agent neighbor is
|
||||
* to be retrieved.</param>
|
||||
* <param name="neighborNo">The number of the agent neighbor to be
|
||||
* retrieved.</param>
|
||||
*/
|
||||
public int getAgentAgentNeighbor(int agentNo, int neighborNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].agentNeighbors_[neighborNo].Value.id_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the maximum neighbor count of a specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The present maximum neighbor count of the agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose maximum neighbor
|
||||
* count is to be retrieved.</param>
|
||||
*/
|
||||
public int getAgentMaxNeighbors(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].maxNeighbors_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the maximum speed of a specified agent.</summary>
|
||||
*
|
||||
* <returns>The present maximum speed of the agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose maximum speed is
|
||||
* to be retrieved.</param>
|
||||
*/
|
||||
public float getAgentMaxSpeed(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].maxSpeed_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the maximum neighbor distance of a specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The present maximum neighbor distance of the agent.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose maximum neighbor
|
||||
* distance is to be retrieved.</param>
|
||||
*/
|
||||
public float getAgentNeighborDist(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].neighborDist_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the count of agent neighbors taken into account to
|
||||
* compute the current velocity for the specified agent.</summary>
|
||||
*
|
||||
* <returns>The count of agent neighbors taken into account to compute
|
||||
* the current velocity for the specified agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose count of agent
|
||||
* neighbors is to be retrieved.</param>
|
||||
*/
|
||||
public int getAgentNumAgentNeighbors(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].agentNeighbors_.Count;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the count of obstacle neighbors taken into account
|
||||
* to compute the current velocity for the specified agent.</summary>
|
||||
*
|
||||
* <returns>The count of obstacle neighbors taken into account to
|
||||
* compute the current velocity for the specified agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose count of obstacle
|
||||
* neighbors is to be retrieved.</param>
|
||||
*/
|
||||
public int getAgentNumObstacleNeighbors(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].obstacleNeighbors_.Count;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the specified obstacle neighbor of the specified
|
||||
* agent.</summary>
|
||||
*
|
||||
* <returns>The number of the first vertex of the neighboring obstacle
|
||||
* edge.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose obstacle neighbor
|
||||
* is to be retrieved.</param>
|
||||
* <param name="neighborNo">The number of the obstacle neighbor to be
|
||||
* retrieved.</param>
|
||||
*/
|
||||
public int getAgentObstacleNeighbor(int agentNo, int neighborNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].obstacleNeighbors_[neighborNo].Value.id_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the ORCA constraints of the specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>A list of lines representing the ORCA constraints.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose ORCA constraints
|
||||
* are to be retrieved.</param>
|
||||
*
|
||||
* <remarks>The halfplane to the left of each line is the region of
|
||||
* permissible velocities with respect to that ORCA constraint.
|
||||
* </remarks>
|
||||
*/
|
||||
public IList<Line> getAgentOrcaLines(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].orcaLines_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the two-dimensional position of a specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The present two-dimensional position of the (center of the)
|
||||
* agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose two-dimensional
|
||||
* position is to be retrieved.</param>
|
||||
*/
|
||||
public Vector2 getAgentPosition(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].position_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the two-dimensional preferred velocity of a
|
||||
* specified agent.</summary>
|
||||
*
|
||||
* <returns>The present two-dimensional preferred velocity of the agent.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose two-dimensional
|
||||
* preferred velocity is to be retrieved.</param>
|
||||
*/
|
||||
public Vector2 getAgentPrefVelocity(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].prefVelocity_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the radius of a specified agent.</summary>
|
||||
*
|
||||
* <returns>The present radius of the agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose radius is to be
|
||||
* retrieved.</param>
|
||||
*/
|
||||
public float getAgentRadius(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].radius_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the time horizon of a specified agent.</summary>
|
||||
*
|
||||
* <returns>The present time horizon of the agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose time horizon is
|
||||
* to be retrieved.</param>
|
||||
*/
|
||||
public float getAgentTimeHorizon(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].timeHorizon_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the time horizon with respect to obstacles of a
|
||||
* specified agent.</summary>
|
||||
*
|
||||
* <returns>The present time horizon with respect to obstacles of the
|
||||
* agent.</returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose time horizon with
|
||||
* respect to obstacles is to be retrieved.</param>
|
||||
*/
|
||||
public float getAgentTimeHorizonObst(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].timeHorizonObst_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the two-dimensional linear velocity of a specified
|
||||
* agent.</summary>
|
||||
*
|
||||
* <returns>The present two-dimensional linear velocity of the agent.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose two-dimensional
|
||||
* linear velocity is to be retrieved.</param>
|
||||
*/
|
||||
public Vector2 getAgentVelocity(int agentNo)
|
||||
{
|
||||
return agents_[agentNo2indexDict_[agentNo]].velocity_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the global time of the simulation.</summary>
|
||||
*
|
||||
* <returns>The present global time of the simulation (zero initially).
|
||||
* </returns>
|
||||
*/
|
||||
public float getGlobalTime()
|
||||
{
|
||||
return globalTime_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the count of agents in the simulation.</summary>
|
||||
*
|
||||
* <returns>The count of agents in the simulation.</returns>
|
||||
*/
|
||||
public int getNumAgents()
|
||||
{
|
||||
return agents_.Count;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the count of obstacle vertices in the simulation.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The count of obstacle vertices in the simulation.</returns>
|
||||
*/
|
||||
public int getNumObstacleVertices()
|
||||
{
|
||||
return obstacles_.Count;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the count of workers.</summary>
|
||||
*
|
||||
* <returns>The count of workers.</returns>
|
||||
*/
|
||||
public int GetNumWorkers()
|
||||
{
|
||||
return numWorkers_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the two-dimensional position of a specified obstacle
|
||||
* vertex.</summary>
|
||||
*
|
||||
* <returns>The two-dimensional position of the specified obstacle
|
||||
* vertex.</returns>
|
||||
*
|
||||
* <param name="vertexNo">The number of the obstacle vertex to be
|
||||
* retrieved.</param>
|
||||
*/
|
||||
public Vector2 getObstacleVertex(int vertexNo)
|
||||
{
|
||||
return obstacles_[vertexNo].point_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the number of the obstacle vertex succeeding the
|
||||
* specified obstacle vertex in its polygon.</summary>
|
||||
*
|
||||
* <returns>The number of the obstacle vertex succeeding the specified
|
||||
* obstacle vertex in its polygon.</returns>
|
||||
*
|
||||
* <param name="vertexNo">The number of the obstacle vertex whose
|
||||
* successor is to be retrieved.</param>
|
||||
*/
|
||||
public int getNextObstacleVertexNo(int vertexNo)
|
||||
{
|
||||
return obstacles_[vertexNo].next_.id_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the number of the obstacle vertex preceding the
|
||||
* specified obstacle vertex in its polygon.</summary>
|
||||
*
|
||||
* <returns>The number of the obstacle vertex preceding the specified
|
||||
* obstacle vertex in its polygon.</returns>
|
||||
*
|
||||
* <param name="vertexNo">The number of the obstacle vertex whose
|
||||
* predecessor is to be retrieved.</param>
|
||||
*/
|
||||
public int getPrevObstacleVertexNo(int vertexNo)
|
||||
{
|
||||
return obstacles_[vertexNo].previous_.id_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the time step of the simulation.</summary>
|
||||
*
|
||||
* <returns>The present time step of the simulation.</returns>
|
||||
*/
|
||||
public float getTimeStep()
|
||||
{
|
||||
return timeStep_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Processes the obstacles that have been added so that they
|
||||
* are accounted for in the simulation.</summary>
|
||||
*
|
||||
* <remarks>Obstacles added to the simulation after this function has
|
||||
* been called are not accounted for in the simulation.</remarks>
|
||||
*/
|
||||
public void processObstacles()
|
||||
{
|
||||
kdTree_.buildObstacleTree(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Performs a visibility query between the two specified points
|
||||
* with respect to the obstacles.</summary>
|
||||
*
|
||||
* <returns>A boolean specifying whether the two points are mutually
|
||||
* visible. Returns true when the obstacles have not been processed.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="point1">The first point of the query.</param>
|
||||
* <param name="point2">The second point of the query.</param>
|
||||
* <param name="radius">The minimal distance between the line connecting
|
||||
* the two points and the obstacles in order for the points to be
|
||||
* mutually visible (optional). Must be non-negative.</param>
|
||||
*/
|
||||
public bool queryVisibility(Vector2 point1, Vector2 point2, float radius)
|
||||
{
|
||||
return kdTree_.queryVisibility(point1, point2, radius);
|
||||
}
|
||||
|
||||
public int queryNearAgent(Vector2 point, float radius)
|
||||
{
|
||||
if (getNumAgents() == 0)
|
||||
return -1;
|
||||
return kdTree_.queryNearAgent(point, radius);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the default properties for any new agent that is added.
|
||||
* </summary>
|
||||
*
|
||||
* <param name="neighborDist">The default maximum distance (center point
|
||||
* to center point) to other agents a new agent takes into account in
|
||||
* the navigation. The larger this number, the longer he running time of
|
||||
* the simulation. If the number is too low, the simulation will not be
|
||||
* safe. Must be non-negative.</param>
|
||||
* <param name="maxNeighbors">The default maximum number of other agents
|
||||
* a new agent takes into account in the navigation. The larger this
|
||||
* number, the longer the running time of the simulation. If the number
|
||||
* is too low, the simulation will not be safe.</param>
|
||||
* <param name="timeHorizon">The default minimal amount of time for
|
||||
* which a new agent's velocities that are computed by the simulation
|
||||
* are safe with respect to other agents. The larger this number, the
|
||||
* sooner an agent will respond to the presence of other agents, but the
|
||||
* less freedom the agent has in choosing its velocities. Must be
|
||||
* positive.</param>
|
||||
* <param name="timeHorizonObst">The default minimal amount of time for
|
||||
* which a new agent's velocities that are computed by the simulation
|
||||
* are safe with respect to obstacles. The larger this number, the
|
||||
* sooner an agent will respond to the presence of obstacles, but the
|
||||
* less freedom the agent has in choosing its velocities. Must be
|
||||
* positive.</param>
|
||||
* <param name="radius">The default radius of a new agent. Must be
|
||||
* non-negative.</param>
|
||||
* <param name="maxSpeed">The default maximum speed of a new agent. Must
|
||||
* be non-negative.</param>
|
||||
* <param name="velocity">The default initial two-dimensional linear
|
||||
* velocity of a new agent.</param>
|
||||
*/
|
||||
public void setAgentDefaults(float neighborDist, int maxNeighbors, float timeHorizon, float timeHorizonObst, float radius, float maxSpeed, Vector2 velocity)
|
||||
{
|
||||
if (defaultAgent_ == null)
|
||||
{
|
||||
defaultAgent_ = new Agent();
|
||||
}
|
||||
|
||||
defaultAgent_.maxNeighbors_ = maxNeighbors;
|
||||
defaultAgent_.maxSpeed_ = maxSpeed;
|
||||
defaultAgent_.neighborDist_ = neighborDist;
|
||||
defaultAgent_.radius_ = radius;
|
||||
defaultAgent_.timeHorizon_ = timeHorizon;
|
||||
defaultAgent_.timeHorizonObst_ = timeHorizonObst;
|
||||
defaultAgent_.velocity_ = velocity;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the maximum neighbor count of a specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose maximum neighbor
|
||||
* count is to be modified.</param>
|
||||
* <param name="maxNeighbors">The replacement maximum neighbor count.
|
||||
* </param>
|
||||
*/
|
||||
public void setAgentMaxNeighbors(int agentNo, int maxNeighbors)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].maxNeighbors_ = maxNeighbors;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the maximum speed of a specified agent.</summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose maximum speed is
|
||||
* to be modified.</param>
|
||||
* <param name="maxSpeed">The replacement maximum speed. Must be
|
||||
* non-negative.</param>
|
||||
*/
|
||||
public void setAgentMaxSpeed(int agentNo, float maxSpeed)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].maxSpeed_ = maxSpeed;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the maximum neighbor distance of a specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose maximum neighbor
|
||||
* distance is to be modified.</param>
|
||||
* <param name="neighborDist">The replacement maximum neighbor distance.
|
||||
* Must be non-negative.</param>
|
||||
*/
|
||||
public void setAgentNeighborDist(int agentNo, float neighborDist)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].neighborDist_ = neighborDist;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the two-dimensional position of a specified agent.
|
||||
* </summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose two-dimensional
|
||||
* position is to be modified.</param>
|
||||
* <param name="position">The replacement of the two-dimensional
|
||||
* position.</param>
|
||||
*/
|
||||
public void setAgentPosition(int agentNo, Vector2 position)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].position_ = position;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the two-dimensional preferred velocity of a specified
|
||||
* agent.</summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose two-dimensional
|
||||
* preferred velocity is to be modified.</param>
|
||||
* <param name="prefVelocity">The replacement of the two-dimensional
|
||||
* preferred velocity.</param>
|
||||
*/
|
||||
public void setAgentPrefVelocity(int agentNo, Vector2 prefVelocity)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].prefVelocity_ = prefVelocity;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the radius of a specified agent.</summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose radius is to be
|
||||
* modified.</param>
|
||||
* <param name="radius">The replacement radius. Must be non-negative.
|
||||
* </param>
|
||||
*/
|
||||
public void setAgentRadius(int agentNo, float radius)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].radius_ = radius;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the time horizon of a specified agent with respect to
|
||||
* other agents.</summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose time horizon is
|
||||
* to be modified.</param>
|
||||
* <param name="timeHorizon">The replacement time horizon with respect
|
||||
* to other agents. Must be positive.</param>
|
||||
*/
|
||||
public void setAgentTimeHorizon(int agentNo, float timeHorizon)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].timeHorizon_ = timeHorizon;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the time horizon of a specified agent with respect to
|
||||
* obstacles.</summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose time horizon with
|
||||
* respect to obstacles is to be modified.</param>
|
||||
* <param name="timeHorizonObst">The replacement time horizon with
|
||||
* respect to obstacles. Must be positive.</param>
|
||||
*/
|
||||
public void setAgentTimeHorizonObst(int agentNo, float timeHorizonObst)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].timeHorizonObst_ = timeHorizonObst;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the two-dimensional linear velocity of a specified
|
||||
* agent.</summary>
|
||||
*
|
||||
* <param name="agentNo">The number of the agent whose two-dimensional
|
||||
* linear velocity is to be modified.</param>
|
||||
* <param name="velocity">The replacement two-dimensional linear
|
||||
* velocity.</param>
|
||||
*/
|
||||
public void setAgentVelocity(int agentNo, Vector2 velocity)
|
||||
{
|
||||
agents_[agentNo2indexDict_[agentNo]].velocity_ = velocity;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the global time of the simulation.</summary>
|
||||
*
|
||||
* <param name="globalTime">The global time of the simulation.</param>
|
||||
*/
|
||||
public void setGlobalTime(float globalTime)
|
||||
{
|
||||
globalTime_ = globalTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the number of workers.</summary>
|
||||
*
|
||||
* <param name="numWorkers">The number of workers.</param>
|
||||
*/
|
||||
public void SetNumWorkers(int numWorkers)
|
||||
{
|
||||
numWorkers_ = numWorkers;
|
||||
|
||||
if (numWorkers_ <= 0)
|
||||
{
|
||||
int completionPorts;
|
||||
ThreadPool.GetMinThreads(out numWorkers_, out completionPorts);
|
||||
}
|
||||
workers_ = null;
|
||||
workerAgentCount_ = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Sets the time step of the simulation.</summary>
|
||||
*
|
||||
* <param name="timeStep">The time step of the simulation. Must be
|
||||
* positive.</param>
|
||||
*/
|
||||
public void setTimeStep(float timeStep)
|
||||
{
|
||||
timeStep_ = timeStep;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Constructs and initializes a simulation.</summary>
|
||||
*/
|
||||
protected Simulator()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bb91eae09aaa4ddd9584412824b4ba8c
|
||||
timeCreated: 1708509745
|
@ -0,0 +1,197 @@
|
||||
/*
|
||||
* Vector2.cs
|
||||
* RVO2 Library C#
|
||||
*
|
||||
* Copyright 2008 University of North Carolina at Chapel Hill
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Please send all bug reports to <geom@cs.unc.edu>.
|
||||
*
|
||||
* The authors may be contacted via:
|
||||
*
|
||||
* Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
|
||||
* Dept. of Computer Science
|
||||
* 201 S. Columbia St.
|
||||
* Frederick P. Brooks, Jr. Computer Science Bldg.
|
||||
* Chapel Hill, N.C. 27599-3175
|
||||
* United States of America
|
||||
*
|
||||
* <http://gamma.cs.unc.edu/RVO2/>
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
|
||||
namespace RVO
|
||||
{
|
||||
/**
|
||||
* <summary>Defines a two-dimensional vector.</summary>
|
||||
*/
|
||||
public struct Vector2
|
||||
{
|
||||
internal float x_;
|
||||
internal float y_;
|
||||
|
||||
/**
|
||||
* <summary>Constructs and initializes a two-dimensional vector from the
|
||||
* specified xy-coordinates.</summary>
|
||||
*
|
||||
* <param name="x">The x-coordinate of the two-dimensional vector.
|
||||
* </param>
|
||||
* <param name="y">The y-coordinate of the two-dimensional vector.
|
||||
* </param>
|
||||
*/
|
||||
public Vector2(float x, float y)
|
||||
{
|
||||
x_ = x;
|
||||
y_ = y;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the string representation of this vector.</summary>
|
||||
*
|
||||
* <returns>The string representation of this vector.</returns>
|
||||
*/
|
||||
public override string ToString()
|
||||
{
|
||||
return "(" + x_.ToString(new CultureInfo("").NumberFormat) + "," + y_.ToString(new CultureInfo("").NumberFormat) + ")";
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the x-coordinate of this two-dimensional vector.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The x-coordinate of the two-dimensional vector.</returns>
|
||||
*/
|
||||
public float x()
|
||||
{
|
||||
return x_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Returns the y-coordinate of this two-dimensional vector.
|
||||
* </summary>
|
||||
*
|
||||
* <returns>The y-coordinate of the two-dimensional vector.</returns>
|
||||
*/
|
||||
public float y()
|
||||
{
|
||||
return y_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the dot product of the two specified
|
||||
* two-dimensional vectors.</summary>
|
||||
*
|
||||
* <returns>The dot product of the two specified two-dimensional
|
||||
* vectors.</returns>
|
||||
*
|
||||
* <param name="vector1">The first two-dimensional vector.</param>
|
||||
* <param name="vector2">The second two-dimensional vector.</param>
|
||||
*/
|
||||
public static float operator *(Vector2 vector1, Vector2 vector2)
|
||||
{
|
||||
return vector1.x_ * vector2.x_ + vector1.y_ * vector2.y_;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the scalar multiplication of the specified
|
||||
* two-dimensional vector with the specified scalar value.</summary>
|
||||
*
|
||||
* <returns>The scalar multiplication of the specified two-dimensional
|
||||
* vector with the specified scalar value.</returns>
|
||||
*
|
||||
* <param name="scalar">The scalar value.</param>
|
||||
* <param name="vector">The two-dimensional vector.</param>
|
||||
*/
|
||||
public static Vector2 operator *(float scalar, Vector2 vector)
|
||||
{
|
||||
return vector * scalar;
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the scalar multiplication of the specified
|
||||
* two-dimensional vector with the specified scalar value.</summary>
|
||||
*
|
||||
* <returns>The scalar multiplication of the specified two-dimensional
|
||||
* vector with the specified scalar value.</returns>
|
||||
*
|
||||
* <param name="vector">The two-dimensional vector.</param>
|
||||
* <param name="scalar">The scalar value.</param>
|
||||
*/
|
||||
public static Vector2 operator *(Vector2 vector, float scalar)
|
||||
{
|
||||
return new Vector2(vector.x_ * scalar, vector.y_ * scalar);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the scalar division of the specified
|
||||
* two-dimensional vector with the specified scalar value.</summary>
|
||||
*
|
||||
* <returns>The scalar division of the specified two-dimensional vector
|
||||
* with the specified scalar value.</returns>
|
||||
*
|
||||
* <param name="vector">The two-dimensional vector.</param>
|
||||
* <param name="scalar">The scalar value.</param>
|
||||
*/
|
||||
public static Vector2 operator /(Vector2 vector, float scalar)
|
||||
{
|
||||
return new Vector2(vector.x_ / scalar, vector.y_ / scalar);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the vector sum of the two specified two-dimensional
|
||||
* vectors.</summary>
|
||||
*
|
||||
* <returns>The vector sum of the two specified two-dimensional vectors.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="vector1">The first two-dimensional vector.</param>
|
||||
* <param name="vector2">The second two-dimensional vector.</param>
|
||||
*/
|
||||
public static Vector2 operator +(Vector2 vector1, Vector2 vector2)
|
||||
{
|
||||
return new Vector2(vector1.x_ + vector2.x_, vector1.y_ + vector2.y_);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the vector difference of the two specified
|
||||
* two-dimensional vectors</summary>
|
||||
*
|
||||
* <returns>The vector difference of the two specified two-dimensional
|
||||
* vectors.</returns>
|
||||
*
|
||||
* <param name="vector1">The first two-dimensional vector.</param>
|
||||
* <param name="vector2">The second two-dimensional vector.</param>
|
||||
*/
|
||||
public static Vector2 operator -(Vector2 vector1, Vector2 vector2)
|
||||
{
|
||||
return new Vector2(vector1.x_ - vector2.x_, vector1.y_ - vector2.y_);
|
||||
}
|
||||
|
||||
/**
|
||||
* <summary>Computes the negation of the specified two-dimensional
|
||||
* vector.</summary>
|
||||
*
|
||||
* <returns>The negation of the specified two-dimensional vector.
|
||||
* </returns>
|
||||
*
|
||||
* <param name="vector">The two-dimensional vector.</param>
|
||||
*/
|
||||
public static Vector2 operator -(Vector2 vector)
|
||||
{
|
||||
return new Vector2(-vector.x_, -vector.y_);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3e3cacbab9ea44c3a3f2778d7d63d56f
|
||||
timeCreated: 1708509745
|
8
JNFrame/Assets/Game/Scenes/Mode/Demo.meta
Normal file
8
JNFrame/Assets/Game/Scenes/Mode/Demo.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bad6592c3b3b46a408120f354906056d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
303
JNFrame/Assets/Game/Scenes/Mode/Demo/GameDemo1.unity
Normal file
303
JNFrame/Assets/Game/Scenes/Mode/Demo/GameDemo1.unity
Normal file
@ -0,0 +1,303 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
OcclusionCullingSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: 0.25
|
||||
backfaceThreshold: 100
|
||||
m_SceneGUID: 00000000000000000000000000000000
|
||||
m_OcclusionCullingData: {fileID: 0}
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 9
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: 0.01
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||
m_AmbientIntensity: 1
|
||||
m_AmbientMode: 0
|
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_HaloStrength: 0.5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_DefaultReflectionMode: 0
|
||||
m_DefaultReflectionResolution: 128
|
||||
m_ReflectionBounces: 1
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 0}
|
||||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 12
|
||||
m_GIWorkflowMode: 1
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 12
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 1024
|
||||
m_AO: 0
|
||||
m_AOMaxDistance: 1
|
||||
m_CompAOExponent: 1
|
||||
m_CompAOExponentDirect: 0
|
||||
m_ExtractAmbientOcclusion: 0
|
||||
m_Padding: 2
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_FinalGather: 0
|
||||
m_FinalGatherFiltering: 1
|
||||
m_FinalGatherRayCount: 256
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 512
|
||||
m_PVRBounces: 2
|
||||
m_PVREnvironmentSampleCount: 256
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_PVRFilteringMode: 1
|
||||
m_PVRDenoiserTypeDirect: 1
|
||||
m_PVRDenoiserTypeIndirect: 1
|
||||
m_PVRDenoiserTypeAO: 1
|
||||
m_PVRFilterTypeDirect: 0
|
||||
m_PVRFilterTypeIndirect: 0
|
||||
m_PVRFilterTypeAO: 0
|
||||
m_PVREnvironmentMIS: 1
|
||||
m_PVRCulling: 1
|
||||
m_PVRFilteringGaussRadiusDirect: 1
|
||||
m_PVRFilteringGaussRadiusIndirect: 5
|
||||
m_PVRFilteringGaussRadiusAO: 2
|
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_ExportTrainingData: 0
|
||||
m_TrainingDataDestination: TrainingData
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_LightingDataAsset: {fileID: 0}
|
||||
m_LightingSettings: {fileID: 0}
|
||||
--- !u!196 &4
|
||||
NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: 0.4
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
minRegionArea: 2
|
||||
manualCellSize: 0
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &801885703
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 801885705}
|
||||
- component: {fileID: 801885704}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!108 &801885704
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 801885703}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 10
|
||||
m_Type: 1
|
||||
m_Shape: 0
|
||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||
m_Intensity: 1
|
||||
m_Range: 10
|
||||
m_SpotAngle: 30
|
||||
m_InnerSpotAngle: 21.80208
|
||||
m_CookieSize: 10
|
||||
m_Shadows:
|
||||
m_Type: 2
|
||||
m_Resolution: -1
|
||||
m_CustomResolution: -1
|
||||
m_Strength: 1
|
||||
m_Bias: 0.05
|
||||
m_NormalBias: 0.4
|
||||
m_NearPlane: 0.2
|
||||
m_CullingMatrixOverride:
|
||||
e00: 1
|
||||
e01: 0
|
||||
e02: 0
|
||||
e03: 0
|
||||
e10: 0
|
||||
e11: 1
|
||||
e12: 0
|
||||
e13: 0
|
||||
e20: 0
|
||||
e21: 0
|
||||
e22: 1
|
||||
e23: 0
|
||||
e30: 0
|
||||
e31: 0
|
||||
e32: 0
|
||||
e33: 1
|
||||
m_UseCullingMatrixOverride: 0
|
||||
m_Cookie: {fileID: 0}
|
||||
m_DrawHalo: 0
|
||||
m_Flare: {fileID: 0}
|
||||
m_RenderMode: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingLayerMask: 1
|
||||
m_Lightmapping: 4
|
||||
m_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
m_BounceIntensity: 1
|
||||
m_ColorTemperature: 6570
|
||||
m_UseColorTemperature: 0
|
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_UseBoundingSphereOverride: 0
|
||||
m_UseViewFrustumForShadowCasterCull: 1
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &801885705
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 801885703}
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!1 &1182931063
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1182931066}
|
||||
- component: {fileID: 1182931065}
|
||||
- component: {fileID: 1182931064}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &1182931064
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1182931063}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &1182931065
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1182931063}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 60
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &1182931066
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1182931063}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a88bea1b7768e934a9141804ed045794
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
23480
JNFrame/Assets/Game/Scenes/Mode/RVO/RVO2DemoMode.unity
Normal file
23480
JNFrame/Assets/Game/Scenes/Mode/RVO/RVO2DemoMode.unity
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1a09bf58b85932a4a8efb415c3faab8f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -26,7 +26,7 @@ namespace Script.battle
|
||||
public class GBattleModeManager : SingletonScene<GBattleModeManager>
|
||||
{
|
||||
|
||||
private static readonly string[] Worlds = { "RVODemoMode", };
|
||||
private static readonly string[] Worlds = { "NavDemo1", };
|
||||
|
||||
//当前模式
|
||||
private GBattleMode _current = GBattleMode.Not;
|
||||
|
@ -1,17 +1,75 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Game.Plugins.App.Game.RVO;
|
||||
using Game.Plugins.App.Game.RVO2;
|
||||
using Game.Plugins.App.Sync;
|
||||
using HPJ.Presentation;
|
||||
using Plugins.JNGame.Sync.Frame.game.Time;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class PlayerController : JNGSyncFrameDefault
|
||||
{
|
||||
|
||||
// Vector3 _target;
|
||||
private NavMeshPath _path;
|
||||
private Queue<Vector3> _queue = new();
|
||||
//下一个目标点
|
||||
private Vector3 nextPos;
|
||||
|
||||
//多久没有移动到下一个目标
|
||||
private int timeNextPos;
|
||||
|
||||
public override void OnSyncLoad()
|
||||
{
|
||||
this.GetComponent<NavMeshAgent>().SetDestination(new Vector3(10, 0, 10));
|
||||
this.GetComponent<NavMeshAgent>().updatePosition = false;
|
||||
this.GetComponent<NavMeshAgent>().updateRotation = false;
|
||||
// this.GetComponent<NavMeshAgent>().Stop();
|
||||
}
|
||||
|
||||
public void SetPath(Vector3 target)
|
||||
{
|
||||
_path = new NavMeshPath();
|
||||
_queue.Clear();
|
||||
NavMesh.CalculatePath(this.transform.position,target,NavMesh.AllAreas,_path);
|
||||
if (_path.status == NavMeshPathStatus.PathComplete)
|
||||
{
|
||||
Vector3 lastPos = this.transform.position;
|
||||
for (var i = 0; i < _path.corners.Length; i++)
|
||||
{
|
||||
while (Vector3.Distance(lastPos,_path.corners[i]) >= 1)
|
||||
{
|
||||
Vector3 directionToTarget = (_path.corners[i] - lastPos).normalized;
|
||||
float distanceToMove = Mathf.Min(1, Vector3.Distance(lastPos, _path.corners[i]));
|
||||
lastPos = lastPos + (directionToTarget * distanceToMove);
|
||||
_queue.Enqueue(lastPos);
|
||||
}
|
||||
_queue.Enqueue(_path.corners[i]);
|
||||
}
|
||||
_queue.TryDequeue(out nextPos);
|
||||
this.GetComponent<JNGRVO2Agent>().SetTarget(nextPos);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnSyncUpdate(int dt, JNFrameInfo frame, Object input)
|
||||
{
|
||||
if(_queue.Count > 0 && (timeNextPos += dt) > 3000)
|
||||
this.SetPath(new Vector3(10, 0, 10));
|
||||
// // this.SetPath(new Vector3(10, 0, 10));
|
||||
while(_queue.Count > 0 && Vector2.Distance(new Vector2(nextPos.x,nextPos.z),new Vector2(this.transform.position.x,this.transform.position.z)) <= 1.5)
|
||||
{
|
||||
timeNextPos = 0;
|
||||
if (_queue.TryDequeue(out nextPos))
|
||||
{
|
||||
this.GetComponent<JNGRVO2Agent>().SetTarget(nextPos);
|
||||
}
|
||||
// SetPath(new Vector3(10, 0, 10));
|
||||
}
|
||||
|
||||
if (frame.Index == 20)
|
||||
{
|
||||
this.SetPath(new Vector3(10, 0, 10));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -648,9 +648,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 726955db545851e45b09d589d5fbe540, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_agentSpawnCount: 50
|
||||
TestAgents: {fileID: 2440570578306729436, guid: 7730f92ca2b591949b126a64e5c3c57c,
|
||||
type: 3}
|
||||
_agentSpawnCount: 200
|
||||
TestAgents: {fileID: 2440570578306729436, guid: 7730f92ca2b591949b126a64e5c3c57c, type: 3}
|
||||
_rollOutSlow: 0
|
||||
_closeRangeRandomPosition: 0
|
||||
_closeRangeRadius: 50
|
||||
@ -742,8 +741,6 @@ MonoBehaviour:
|
||||
SimulationSettings:
|
||||
UseExtraSimulation: 1
|
||||
UseAgentAvoidance: 1
|
||||
AgentRightOfWay: 0
|
||||
AvoidenceType: 1
|
||||
DesiredHelperTickrate: 60
|
||||
MapSeamSettings:
|
||||
DisplaySeams: 0
|
||||
@ -792,6 +789,7 @@ MonoBehaviour:
|
||||
OnlyPaintTheseTypes: 0104
|
||||
DisplayPaintedTilesMapIndex: -1
|
||||
DisplayMapGizmos_ForMapIndecies:
|
||||
DisplayAgentOwnedTiles: 0
|
||||
--- !u!1 &1837046880
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc45507d0c73d414fb143328897f1e7c
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20188da779956d54c90d7065245cf777
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 802ca1a083e0d5d43b20a804c8cbc266
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 100d47d13afce904899359ff9ef2ac59
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bba98dc78a711a045b0b271cdbbc0d04
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 80c75c11bc8da6e48926a3ed3a75a070
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3dcc559052e4b96458e410835255682e
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c5aa5c6368ddb24daf5b2830f5d9f4c
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 516337fcf73b1004f894119b011e81a7
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a1b23b62a8f0284dbf6fbe9f721ed05
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,481 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
OcclusionCullingSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: 0.25
|
||||
backfaceThreshold: 100
|
||||
m_SceneGUID: 00000000000000000000000000000000
|
||||
m_OcclusionCullingData: {fileID: 0}
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 9
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: 0.01
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||
m_AmbientIntensity: 1
|
||||
m_AmbientMode: 0
|
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_HaloStrength: 0.5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_DefaultReflectionMode: 0
|
||||
m_DefaultReflectionResolution: 128
|
||||
m_ReflectionBounces: 1
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 0}
|
||||
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 12
|
||||
m_GIWorkflowMode: 1
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 12
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 1024
|
||||
m_AO: 0
|
||||
m_AOMaxDistance: 1
|
||||
m_CompAOExponent: 1
|
||||
m_CompAOExponentDirect: 0
|
||||
m_ExtractAmbientOcclusion: 0
|
||||
m_Padding: 2
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_FinalGather: 0
|
||||
m_FinalGatherFiltering: 1
|
||||
m_FinalGatherRayCount: 256
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 512
|
||||
m_PVRBounces: 2
|
||||
m_PVREnvironmentSampleCount: 256
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_PVRFilteringMode: 1
|
||||
m_PVRDenoiserTypeDirect: 1
|
||||
m_PVRDenoiserTypeIndirect: 1
|
||||
m_PVRDenoiserTypeAO: 1
|
||||
m_PVRFilterTypeDirect: 0
|
||||
m_PVRFilterTypeIndirect: 0
|
||||
m_PVRFilterTypeAO: 0
|
||||
m_PVREnvironmentMIS: 1
|
||||
m_PVRCulling: 1
|
||||
m_PVRFilteringGaussRadiusDirect: 1
|
||||
m_PVRFilteringGaussRadiusIndirect: 5
|
||||
m_PVRFilteringGaussRadiusAO: 2
|
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_ExportTrainingData: 0
|
||||
m_TrainingDataDestination: TrainingData
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_LightingDataAsset: {fileID: 0}
|
||||
m_LightingSettings: {fileID: 0}
|
||||
--- !u!196 &4
|
||||
NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: 0.4
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
minRegionArea: 2
|
||||
manualCellSize: 0
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &364441439
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 364441440}
|
||||
- component: {fileID: 364441441}
|
||||
m_Layer: 0
|
||||
m_Name: GameObject
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &364441440
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 364441439}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &364441441
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 364441439}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3fb381a4e8dbf044fa4fa25dd4a20448, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_mapSets:
|
||||
- SetSettings:
|
||||
Name:
|
||||
MapSettings:
|
||||
TileSize: 20
|
||||
MapWidth: 100
|
||||
MapHeight: 100
|
||||
Offset:
|
||||
x: -1109
|
||||
y: 0
|
||||
z: -1122
|
||||
CornerCutting: 0
|
||||
TileData: []
|
||||
MapInfo:
|
||||
Width: 100
|
||||
Height: 100
|
||||
DefaultTraversaleTiles:
|
||||
InstanceID: 0
|
||||
_bridges: []
|
||||
_seams: []
|
||||
ManagerSettings:
|
||||
MapRedundancy: 4
|
||||
PathfindingParrellism: 4
|
||||
MapAutoCreationGridSize: {x: 1, y: 1}
|
||||
MapAutoGridTileWidthAndHeight: {x: 1, y: 1}
|
||||
MapAutoGridTileSize: 100
|
||||
MapAutoGridOffset:
|
||||
x: 0
|
||||
y: 0
|
||||
z: 0
|
||||
MapAutoGridAutoSeam: 1
|
||||
MapSaveDataFolder: None
|
||||
SimulationSettings:
|
||||
UseExtraSimulation: 0
|
||||
UseAgentAvoidance: 0
|
||||
DesiredHelperTickrate: 60
|
||||
MapSeamSettings:
|
||||
DisplaySeams: 0
|
||||
MapAInsertSettings:
|
||||
MapIndex: -1
|
||||
ConnectionSide: 3
|
||||
MapBInsertSettings:
|
||||
MapIndex: -1
|
||||
ConnectionSide: 3
|
||||
Painter:
|
||||
CurrentPainterRadius: 1
|
||||
CurrentPainterType: 1
|
||||
PainterType: 0
|
||||
CleanMapIndex: 0
|
||||
AutoPainter:
|
||||
AutoPainterType: 5
|
||||
AutoPainterCheckForLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
AutoPainterCheckAgainstLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
AutoPainterElavationIncrease: 20
|
||||
AutoPainterElavationIDecrease: 100
|
||||
AutoPaintMapIndex: 0
|
||||
AboveMapTypeChangeHeight: 10
|
||||
AutoPainterAboveHeightType: 1
|
||||
BelowMapTypeChangeHeight: 10
|
||||
AutoPainterBelowHeightType: 1
|
||||
GizmosSettings:
|
||||
DisplayGizmos: 1
|
||||
DisplayBridges: 0
|
||||
DisplayBridgeDirections: 0
|
||||
InsertBridgePointIndex: -1
|
||||
DisplayTiles: 0
|
||||
DisplayMapHandles: 1
|
||||
DisplayMapLabels: 1
|
||||
DisplayMapBase: 1
|
||||
DisplayMapEdge: 1
|
||||
DisplayMapAlpha: 1
|
||||
DisplayMapArrows: 1
|
||||
DisplayArrowSize: 12
|
||||
DisplayPaintBrush: 0
|
||||
DebugPaintBrushPosition: 0
|
||||
DisplayPaintedTiles: 0
|
||||
OnlyPaintTheseTypes:
|
||||
DisplayPaintedTilesMapIndex: -1
|
||||
DisplayMapGizmos_ForMapIndecies:
|
||||
DisplayAgentOwnedTiles: 0
|
||||
--- !u!1 &419301820
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 419301823}
|
||||
- component: {fileID: 419301822}
|
||||
- component: {fileID: 419301821}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &419301821
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 419301820}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &419301822
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 419301820}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 60
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &419301823
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 419301820}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &787344805
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 787344806}
|
||||
- component: {fileID: 787344807}
|
||||
m_Layer: 0
|
||||
m_Name: GameObject (1)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &787344806
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 787344805}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &787344807
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 787344805}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 726955db545851e45b09d589d5fbe540, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_agentSpawnCount: 100
|
||||
TestAgents: {fileID: 4653686088517519016, guid: a8473a725de512d49be6662ebe419f2c, type: 3}
|
||||
_rollOutSlow: 0
|
||||
_closeRangeRandomPosition: 0
|
||||
_closeRangeRadius: 50
|
||||
_keepAgentsOnSameMap: 0
|
||||
--- !u!1 &1448369052
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1448369054}
|
||||
- component: {fileID: 1448369053}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!108 &1448369053
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1448369052}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 10
|
||||
m_Type: 1
|
||||
m_Shape: 0
|
||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||
m_Intensity: 1
|
||||
m_Range: 10
|
||||
m_SpotAngle: 30
|
||||
m_InnerSpotAngle: 21.80208
|
||||
m_CookieSize: 10
|
||||
m_Shadows:
|
||||
m_Type: 2
|
||||
m_Resolution: -1
|
||||
m_CustomResolution: -1
|
||||
m_Strength: 1
|
||||
m_Bias: 0.05
|
||||
m_NormalBias: 0.4
|
||||
m_NearPlane: 0.2
|
||||
m_CullingMatrixOverride:
|
||||
e00: 1
|
||||
e01: 0
|
||||
e02: 0
|
||||
e03: 0
|
||||
e10: 0
|
||||
e11: 1
|
||||
e12: 0
|
||||
e13: 0
|
||||
e20: 0
|
||||
e21: 0
|
||||
e22: 1
|
||||
e23: 0
|
||||
e30: 0
|
||||
e31: 0
|
||||
e32: 0
|
||||
e33: 1
|
||||
m_UseCullingMatrixOverride: 0
|
||||
m_Cookie: {fileID: 0}
|
||||
m_DrawHalo: 0
|
||||
m_Flare: {fileID: 0}
|
||||
m_RenderMode: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingLayerMask: 1
|
||||
m_Lightmapping: 4
|
||||
m_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
m_BounceIntensity: 1
|
||||
m_ColorTemperature: 6570
|
||||
m_UseColorTemperature: 0
|
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_UseBoundingSphereOverride: 0
|
||||
m_UseViewFrustumForShadowCasterCull: 1
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &1448369054
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1448369052}
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5ecf1e16740a004db24c3119bff8897
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
BIN
JNFrame/Assets/New Terrain 1.asset
Normal file
BIN
JNFrame/Assets/New Terrain 1.asset
Normal file
Binary file not shown.
@ -1,8 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 84e050c280baab14bbe3b453ccc9be71
|
||||
guid: a2729c36f8a7f7d4685ae069c3c6357a
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 23800000
|
||||
mainObjectFileID: 15600000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
JNFrame/Assets/New Terrain.asset
Normal file
BIN
JNFrame/Assets/New Terrain.asset
Normal file
Binary file not shown.
8
JNFrame/Assets/New Terrain.asset.meta
Normal file
8
JNFrame/Assets/New Terrain.asset.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 96ba7836651fedf45b8789ebeb346309
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 15600000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
JNFrame/Assets/StreamingAssets/Saved Maps.meta
Normal file
8
JNFrame/Assets/StreamingAssets/Saved Maps.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6dee28a139b2c1847ba8569c776b03f7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ae34260be2064514bbc5037128d08a1e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1 +1 @@
|
||||
Build from PC-20230316NUNE at 2024/2/20 18:37:41
|
||||
Build from PC-20230316NUNE at 2024/2/22 19:22:15
|
@ -15,12 +15,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HPJ.Presentation", "HPJ.Pre
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.DOTween", "UniTask.DOTween.csproj", "{99c4c7d2-ca96-1038-95e0-77e225df2b06}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "App", "App.csproj", "{86f5a836-c92e-bcf7-bc96-4683fb573cb1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HPJ_Simulation", "HPJ_Simulation.csproj", "{70aa14d9-7285-6815-34bf-271d00b8c175}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{3ca4410c-c33b-25ce-55bc-3a432b9830ed}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "App", "App.csproj", "{86f5a836-c92e-bcf7-bc96-4683fb573cb1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.Addressables", "UniTask.Addressables.csproj", "{6d8bd378-3e5b-6997-5e5e-288243f0f72b}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.TextMeshPro", "UniTask.TextMeshPro.csproj", "{4b964c85-7c9d-2d07-a2e0-8595262e4e96}"
|
||||
@ -52,12 +52,12 @@ Global
|
||||
{0e7776eb-ee05-4bc9-0e83-5325dc548854}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{99c4c7d2-ca96-1038-95e0-77e225df2b06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{99c4c7d2-ca96-1038-95e0-77e225df2b06}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{86f5a836-c92e-bcf7-bc96-4683fb573cb1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{86f5a836-c92e-bcf7-bc96-4683fb573cb1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{70aa14d9-7285-6815-34bf-271d00b8c175}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{70aa14d9-7285-6815-34bf-271d00b8c175}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3ca4410c-c33b-25ce-55bc-3a432b9830ed}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3ca4410c-c33b-25ce-55bc-3a432b9830ed}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{86f5a836-c92e-bcf7-bc96-4683fb573cb1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{86f5a836-c92e-bcf7-bc96-4683fb573cb1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6d8bd378-3e5b-6997-5e5e-288243f0f72b}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6d8bd378-3e5b-6997-5e5e-288243f0f72b}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4b964c85-7c9d-2d07-a2e0-8595262e4e96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
|
@ -151,6 +151,7 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\CollisionTests\Manifolds\InstancedMeshContactManifold.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\Navmesh\NavMeshGenerator.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Paths\FiniteDifferenceSpline3D.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO2\src\Obstacle.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\RayCastResult.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\UpdateableSystems\IBeforePositionUpdateUpdateable.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\Quaternion.cs" />
|
||||
@ -204,6 +205,7 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\NarrowPhaseSystems\Pairs\GroupPairHandler.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Constraints\TwoEntity\Motors\TwistMotor.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\BroadPhaseEntries\MobileCollidables\MobileMeshCollidable.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO2\src\RVOMath.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\DataStructures\BoundingBoxTree.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\PositionUpdating\ContinuousPositionUpdater.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Materials\Material.cs" />
|
||||
@ -345,6 +347,7 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Character\SupportFinder.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\BroadPhaseEntries\Events\IContactEventTriggerer.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\CollisionTests\Manifolds\ContactManifold.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO2\src\Simulator.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\CollisionShapes\ConvexShapes\TriangleShape.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\DataStructures\StaticMeshData.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\NarrowPhaseSystems\Pairs\ConvexPairHandler.cs" />
|
||||
@ -382,6 +385,7 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\NarrowPhaseSystems\Pairs\TerrainPairHandler.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Paths\VariableLinearSpeedCurve.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Constraints\SingleEntity\SingleEntityAngularMotor.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO2\src\Line.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\OtherSpaceStages\DeferredEventDispatcher.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Constraints\Collision\ConvexContactManifoldConstraint.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Paths\CardinalSpline3D.cs" />
|
||||
@ -409,6 +413,7 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\BroadPhaseSystems\SortAndSweep\SortedGrid2DSet.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO\JNRVOSimulator.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\UpdateableSystems\ForceFields\BoundingSphereForceFieldShape.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO2\JNRVO2Simulator.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Character\VerticalMotionConstraint.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\Matrix3x3.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\DeactivationManagement\SimulationIsland.cs" />
|
||||
@ -427,6 +432,7 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\CollisionTests\Manifolds\TriangleConvexContactManifold.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\MathHelper.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Constraints\SingleEntity\SingleEntityLinearMotor.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\JNFrameUtil.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Entities\Entity.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Constraints\Collision\NonConvexContactManifoldConstraint.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\DataStructures\TriangleMesh.cs" />
|
||||
@ -437,6 +443,7 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\PermutationMapper.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\Entity\Graph\NavmeshBase.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\BroadPhaseEntries\MobileCollidables\CompoundHierarchy.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO2\src\KdTree.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Constraints\Collision\SlidingFrictionTwoAxis.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\OtherSpaceStages\BoundingBoxUpdater.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\ConvexHullHelper.cs" />
|
||||
@ -452,11 +459,13 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\NarrowPhaseSystems\Pairs\InstancedMeshPairHandler.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\AI\JNAISeeker.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\CollisionShapes\ShapeDistributionInformation.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO2\src\Agent.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\BroadPhaseEntries\Collidable.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\DataStructures\ReadOnlyList.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\Entity\GraphNode.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\DataStructures\QuickSet.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\NarrowPhaseSystems\Pairs\MobileMeshConvexPairHandler.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\AStar\RVO2\src\Vector2.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\CollisionTests\Manifolds\InstancedMeshSphereContactManifold.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\ResourceManagement\LockingResourcePool.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUutilities\TriangleSidedness.cs" />
|
||||
@ -499,7 +508,6 @@
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\CollisionTests\Manifolds\MobileMeshTriangleContactManifold.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\BroadPhaseEntries\Events\CollisionEventTypes.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics1\BEPUphysics\Entities\EntitySolverUpdateableCollection.cs" />
|
||||
<Compile Include="Assets\Game\Plugins\JNGame\Sync\Frame\JNFrameUtil.cs" />
|
||||
<None Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics2\BepuUtilities.2.3.4\lib\netstandard2.0\BepuUtilities.xml" />
|
||||
<None Include="Assets\Game\Plugins\JNGame\JNGame.asmdef" />
|
||||
<None Include="Assets\Game\Plugins\JNGame\BepuPhysics\Core\BepuPhysics2\BepuPhysics.2.3.4\lib\netstandard2.0\BepuPhysics.xml" />
|
||||
|
File diff suppressed because it is too large
Load Diff
496
JNFrame/Logs/AssetImportWorker0.log
Normal file
496
JNFrame/Logs/AssetImportWorker0.log
Normal file
@ -0,0 +1,496 @@
|
||||
Using pre-set license
|
||||
Built from '2021.3/china_unity/release' branch; Version is '2021.3.33f1c1 (682b9db7927c) revision 6826909'; Using compiler version '192829333'; Build Type 'Release'
|
||||
OS: 'Windows 11 (10.0.22621) 64bit Professional' Language: 'zh' Physical Memory: 32651 MB
|
||||
BatchMode: 1, IsHumanControllingUs: 0, StartBugReporterOnCrash: 0, Is64bit: 1, IsPro: 1
|
||||
|
||||
COMMAND LINE ARGUMENTS:
|
||||
D:\Unity\2021.3.33f1c1\Editor\Unity.exe
|
||||
-adb2
|
||||
-batchMode
|
||||
-noUpm
|
||||
-name
|
||||
AssetImportWorker0
|
||||
-projectPath
|
||||
D:/myproject/JisolGame/JNFrame
|
||||
-logFile
|
||||
Logs/AssetImportWorker0.log
|
||||
-srvPort
|
||||
53065
|
||||
Successfully changed project path to: D:/myproject/JisolGame/JNFrame
|
||||
D:/myproject/JisolGame/JNFrame
|
||||
[UnityMemory] Configuration Parameters - Can be set up in boot.config
|
||||
"memorysetup-bucket-allocator-granularity=16"
|
||||
"memorysetup-bucket-allocator-bucket-count=8"
|
||||
"memorysetup-bucket-allocator-block-size=33554432"
|
||||
"memorysetup-bucket-allocator-block-count=8"
|
||||
"memorysetup-main-allocator-block-size=16777216"
|
||||
"memorysetup-thread-allocator-block-size=16777216"
|
||||
"memorysetup-gfx-main-allocator-block-size=16777216"
|
||||
"memorysetup-gfx-thread-allocator-block-size=16777216"
|
||||
"memorysetup-cache-allocator-block-size=4194304"
|
||||
"memorysetup-typetree-allocator-block-size=2097152"
|
||||
"memorysetup-profiler-bucket-allocator-granularity=16"
|
||||
"memorysetup-profiler-bucket-allocator-bucket-count=8"
|
||||
"memorysetup-profiler-bucket-allocator-block-size=33554432"
|
||||
"memorysetup-profiler-bucket-allocator-block-count=8"
|
||||
"memorysetup-profiler-allocator-block-size=16777216"
|
||||
"memorysetup-profiler-editor-allocator-block-size=1048576"
|
||||
"memorysetup-temp-allocator-size-main=16777216"
|
||||
"memorysetup-job-temp-allocator-block-size=2097152"
|
||||
"memorysetup-job-temp-allocator-block-size-background=1048576"
|
||||
"memorysetup-job-temp-allocator-reduction-small-platforms=262144"
|
||||
"memorysetup-temp-allocator-size-background-worker=32768"
|
||||
"memorysetup-temp-allocator-size-job-worker=262144"
|
||||
"memorysetup-temp-allocator-size-preload-manager=33554432"
|
||||
"memorysetup-temp-allocator-size-nav-mesh-worker=65536"
|
||||
"memorysetup-temp-allocator-size-audio-worker=65536"
|
||||
"memorysetup-temp-allocator-size-cloud-worker=32768"
|
||||
"memorysetup-temp-allocator-size-gi-baking-worker=262144"
|
||||
"memorysetup-temp-allocator-size-gfx=262144"
|
||||
Player connection [29204] Host "[IP] 192.168.0.123 [Port] 0 [Flags] 2 [Guid] 1579450969 [EditorId] 1579450969 [Version] 1048832 [Id] WindowsEditor(7,PC-20230316NUNE) [Debug] 1 [PackageName] WindowsEditor [ProjectName] Editor" joined multi-casting on [225.0.0.222:54997]...
|
||||
|
||||
Player connection [29204] Host "[IP] 192.168.0.123 [Port] 0 [Flags] 2 [Guid] 1579450969 [EditorId] 1579450969 [Version] 1048832 [Id] WindowsEditor(7,PC-20230316NUNE) [Debug] 1 [PackageName] WindowsEditor [ProjectName] Editor" joined alternative multi-casting on [225.0.0.222:34997]...
|
||||
|
||||
AS: AutoStreaming module initializing.
|
||||
[Physics::Module] Initialized MultithreadedJobDispatcher with {0} workers.
|
||||
Refreshing native plugins compatible for Editor in 174.36 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Initialize engine version: 2021.3.33f1c1 (682b9db7927c)
|
||||
[Subsystems] Discovering subsystems at path D:/Unity/2021.3.33f1c1/Editor/Data/Resources/UnitySubsystems
|
||||
[Subsystems] Discovering subsystems at path D:/myproject/JisolGame/JNFrame/Assets
|
||||
GfxDevice: creating device client; threaded=0; jobified=0
|
||||
Direct3D:
|
||||
Version: Direct3D 11.0 [level 11.1]
|
||||
Renderer: NVIDIA GeForce GTX 1660 SUPER (ID=0x21c4)
|
||||
Vendor: NVIDIA
|
||||
VRAM: 5980 MB
|
||||
Driver: 31.0.15.3623
|
||||
Initialize mono
|
||||
Mono path[0] = 'D:/Unity/2021.3.33f1c1/Editor/Data/Managed'
|
||||
Mono path[1] = 'D:/Unity/2021.3.33f1c1/Editor/Data/MonoBleedingEdge/lib/mono/unityjit-win32'
|
||||
Mono config path = 'D:/Unity/2021.3.33f1c1/Editor/Data/MonoBleedingEdge/etc'
|
||||
Using monoOptions --debugger-agent=transport=dt_socket,embedding=1,server=y,suspend=n,address=127.0.0.1:56772
|
||||
Begin MonoManager ReloadAssembly
|
||||
Registering precompiled unity dll's ...
|
||||
Register platform support module: D:/Unity/2021.3.33f1c1/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll
|
||||
Register platform support module: D:/Unity/2021.3.33f1c1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll
|
||||
Registered in 0.005125 seconds.
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Android Extension - Scanning For ADB Devices 270 ms
|
||||
Refreshing native plugins compatible for Editor in 156.81 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.060 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1061ms)
|
||||
BeginReloadAssembly (113ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (0ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (1ms)
|
||||
EndReloadAssembly (846ms)
|
||||
LoadAssemblies (109ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (104ms)
|
||||
ReleaseScriptCaches (0ms)
|
||||
RebuildScriptCaches (27ms)
|
||||
SetupLoadedEditorAssemblies (667ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (364ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (157ms)
|
||||
BeforeProcessingInitializeOnLoad (1ms)
|
||||
ProcessInitializeOnLoadAttributes (99ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (46ms)
|
||||
AfterProcessingInitializeOnLoad (0ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (0ms)
|
||||
Platform modules already initialized, skipping
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.022056 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 152.21 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Package Manager log level set to [2]
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 2.125 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (2126ms)
|
||||
BeginReloadAssembly (160ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (7ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (23ms)
|
||||
EndReloadAssembly (1824ms)
|
||||
LoadAssemblies (181ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (431ms)
|
||||
ReleaseScriptCaches (1ms)
|
||||
RebuildScriptCaches (73ms)
|
||||
SetupLoadedEditorAssemblies (1123ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (23ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (152ms)
|
||||
BeforeProcessingInitializeOnLoad (136ms)
|
||||
ProcessInitializeOnLoadAttributes (701ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (99ms)
|
||||
AfterProcessingInitializeOnLoad (12ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (7ms)
|
||||
Platform modules already initialized, skipping
|
||||
========================================================================
|
||||
Worker process is ready to serve import requests
|
||||
Launched and connected shader compiler UnityShaderCompiler.exe after 0.06 seconds
|
||||
Refreshing native plugins compatible for Editor in 1.20 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7771 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 48 unused Assets / (0.7 MB). Loaded Objects now: 8241.
|
||||
Memory consumption went from 308.3 MB to 307.6 MB.
|
||||
Total: 4.926600 ms (FindLiveObjects: 0.538200 ms CreateObjectMapping: 0.274100 ms MarkObjects: 3.674400 ms DeleteObjects: 0.438200 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.020006 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.76 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.907 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1908ms)
|
||||
BeginReloadAssembly (182ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (4ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (49ms)
|
||||
EndReloadAssembly (1611ms)
|
||||
LoadAssemblies (155ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (402ms)
|
||||
ReleaseScriptCaches (3ms)
|
||||
RebuildScriptCaches (55ms)
|
||||
SetupLoadedEditorAssemblies (960ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (27ms)
|
||||
SetLoadedEditorAssemblies (1ms)
|
||||
RefreshPlugins (2ms)
|
||||
BeforeProcessingInitializeOnLoad (133ms)
|
||||
ProcessInitializeOnLoadAttributes (654ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (123ms)
|
||||
AfterProcessingInitializeOnLoad (21ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (11ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 1.38 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.7 MB). Loaded Objects now: 8244.
|
||||
Memory consumption went from 299.5 MB to 298.8 MB.
|
||||
Total: 3.102400 ms (FindLiveObjects: 0.629900 ms CreateObjectMapping: 0.277200 ms MarkObjects: 1.947200 ms DeleteObjects: 0.246600 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Import Request.
|
||||
Time since last request: 28622.567704 seconds.
|
||||
path: Assets/Game/Scenes/Mode/Nav/NavDemo1.unity
|
||||
artifactKey: Guid(60c3109dddb001d4e98de05e7b75c9d0) Importer(815301076,1909f56bfc062723c751e8b465ee728b)
|
||||
Number of updated assets reloaded before import = 0
|
||||
Start importing Assets/Game/Scenes/Mode/Nav/NavDemo1.unity using Guid(60c3109dddb001d4e98de05e7b75c9d0) Importer(815301076,1909f56bfc062723c751e8b465ee728b) -> (artifact id: 'abd992cb0f617ee123e48d50ecba05d8') in 0.018354 seconds
|
||||
Number of asset objects unloaded after import = 0
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.020639 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.46 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.902 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1903ms)
|
||||
BeginReloadAssembly (185ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (5ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (51ms)
|
||||
EndReloadAssembly (1603ms)
|
||||
LoadAssemblies (174ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (435ms)
|
||||
ReleaseScriptCaches (5ms)
|
||||
RebuildScriptCaches (78ms)
|
||||
SetupLoadedEditorAssemblies (874ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (24ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (2ms)
|
||||
BeforeProcessingInitializeOnLoad (104ms)
|
||||
ProcessInitializeOnLoadAttributes (644ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (87ms)
|
||||
AfterProcessingInitializeOnLoad (13ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (11ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 1.04 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.7 MB). Loaded Objects now: 8247.
|
||||
Memory consumption went from 299.5 MB to 298.9 MB.
|
||||
Total: 3.718800 ms (FindLiveObjects: 0.539300 ms CreateObjectMapping: 0.254600 ms MarkObjects: 2.685300 ms DeleteObjects: 0.238100 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.018285 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.30 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.796 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1797ms)
|
||||
BeginReloadAssembly (180ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (5ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (42ms)
|
||||
EndReloadAssembly (1513ms)
|
||||
LoadAssemblies (156ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (377ms)
|
||||
ReleaseScriptCaches (2ms)
|
||||
RebuildScriptCaches (55ms)
|
||||
SetupLoadedEditorAssemblies (892ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (19ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (1ms)
|
||||
BeforeProcessingInitializeOnLoad (112ms)
|
||||
ProcessInitializeOnLoadAttributes (651ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (93ms)
|
||||
AfterProcessingInitializeOnLoad (15ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (10ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 2.57 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.7 MB). Loaded Objects now: 8250.
|
||||
Memory consumption went from 299.5 MB to 298.9 MB.
|
||||
Total: 4.878700 ms (FindLiveObjects: 0.598300 ms CreateObjectMapping: 0.416700 ms MarkObjects: 3.540600 ms DeleteObjects: 0.320900 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.026561 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 2.35 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.746 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1747ms)
|
||||
BeginReloadAssembly (168ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (5ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (47ms)
|
||||
EndReloadAssembly (1476ms)
|
||||
LoadAssemblies (145ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (374ms)
|
||||
ReleaseScriptCaches (2ms)
|
||||
RebuildScriptCaches (62ms)
|
||||
SetupLoadedEditorAssemblies (839ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (21ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (2ms)
|
||||
BeforeProcessingInitializeOnLoad (106ms)
|
||||
ProcessInitializeOnLoadAttributes (606ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (87ms)
|
||||
AfterProcessingInitializeOnLoad (15ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (10ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 2.42 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.6 MB). Loaded Objects now: 8253.
|
||||
Memory consumption went from 299.5 MB to 298.9 MB.
|
||||
Total: 4.261200 ms (FindLiveObjects: 0.573100 ms CreateObjectMapping: 0.276600 ms MarkObjects: 2.759300 ms DeleteObjects: 0.650100 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.024178 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.51 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.806 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1807ms)
|
||||
BeginReloadAssembly (212ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (4ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (43ms)
|
||||
EndReloadAssembly (1479ms)
|
||||
LoadAssemblies (211ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (354ms)
|
||||
ReleaseScriptCaches (3ms)
|
||||
RebuildScriptCaches (53ms)
|
||||
SetupLoadedEditorAssemblies (866ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (24ms)
|
||||
SetLoadedEditorAssemblies (1ms)
|
||||
RefreshPlugins (2ms)
|
||||
BeforeProcessingInitializeOnLoad (111ms)
|
||||
ProcessInitializeOnLoadAttributes (620ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (90ms)
|
||||
AfterProcessingInitializeOnLoad (18ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (9ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 1.21 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.6 MB). Loaded Objects now: 8256.
|
||||
Memory consumption went from 299.5 MB to 298.9 MB.
|
||||
Total: 4.788600 ms (FindLiveObjects: 0.998200 ms CreateObjectMapping: 0.811300 ms MarkObjects: 2.715400 ms DeleteObjects: 0.262200 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Refreshing native plugins compatible for Editor in 19.59 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 41 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 41 unused Assets / (0.7 MB). Loaded Objects now: 8256.
|
||||
Memory consumption went from 146.9 MB to 146.2 MB.
|
||||
Total: 12.126000 ms (FindLiveObjects: 1.469600 ms CreateObjectMapping: 1.245100 ms MarkObjects: 7.911900 ms DeleteObjects: 1.494900 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
File diff suppressed because it is too large
Load Diff
488
JNFrame/Logs/AssetImportWorker1.log
Normal file
488
JNFrame/Logs/AssetImportWorker1.log
Normal file
@ -0,0 +1,488 @@
|
||||
Using pre-set license
|
||||
Built from '2021.3/china_unity/release' branch; Version is '2021.3.33f1c1 (682b9db7927c) revision 6826909'; Using compiler version '192829333'; Build Type 'Release'
|
||||
OS: 'Windows 11 (10.0.22621) 64bit Professional' Language: 'zh' Physical Memory: 32651 MB
|
||||
BatchMode: 1, IsHumanControllingUs: 0, StartBugReporterOnCrash: 0, Is64bit: 1, IsPro: 1
|
||||
|
||||
COMMAND LINE ARGUMENTS:
|
||||
D:\Unity\2021.3.33f1c1\Editor\Unity.exe
|
||||
-adb2
|
||||
-batchMode
|
||||
-noUpm
|
||||
-name
|
||||
AssetImportWorker1
|
||||
-projectPath
|
||||
D:/myproject/JisolGame/JNFrame
|
||||
-logFile
|
||||
Logs/AssetImportWorker1.log
|
||||
-srvPort
|
||||
53065
|
||||
Successfully changed project path to: D:/myproject/JisolGame/JNFrame
|
||||
D:/myproject/JisolGame/JNFrame
|
||||
[UnityMemory] Configuration Parameters - Can be set up in boot.config
|
||||
"memorysetup-bucket-allocator-granularity=16"
|
||||
"memorysetup-bucket-allocator-bucket-count=8"
|
||||
"memorysetup-bucket-allocator-block-size=33554432"
|
||||
"memorysetup-bucket-allocator-block-count=8"
|
||||
"memorysetup-main-allocator-block-size=16777216"
|
||||
"memorysetup-thread-allocator-block-size=16777216"
|
||||
"memorysetup-gfx-main-allocator-block-size=16777216"
|
||||
"memorysetup-gfx-thread-allocator-block-size=16777216"
|
||||
"memorysetup-cache-allocator-block-size=4194304"
|
||||
"memorysetup-typetree-allocator-block-size=2097152"
|
||||
"memorysetup-profiler-bucket-allocator-granularity=16"
|
||||
"memorysetup-profiler-bucket-allocator-bucket-count=8"
|
||||
"memorysetup-profiler-bucket-allocator-block-size=33554432"
|
||||
"memorysetup-profiler-bucket-allocator-block-count=8"
|
||||
"memorysetup-profiler-allocator-block-size=16777216"
|
||||
"memorysetup-profiler-editor-allocator-block-size=1048576"
|
||||
"memorysetup-temp-allocator-size-main=16777216"
|
||||
"memorysetup-job-temp-allocator-block-size=2097152"
|
||||
"memorysetup-job-temp-allocator-block-size-background=1048576"
|
||||
"memorysetup-job-temp-allocator-reduction-small-platforms=262144"
|
||||
"memorysetup-temp-allocator-size-background-worker=32768"
|
||||
"memorysetup-temp-allocator-size-job-worker=262144"
|
||||
"memorysetup-temp-allocator-size-preload-manager=33554432"
|
||||
"memorysetup-temp-allocator-size-nav-mesh-worker=65536"
|
||||
"memorysetup-temp-allocator-size-audio-worker=65536"
|
||||
"memorysetup-temp-allocator-size-cloud-worker=32768"
|
||||
"memorysetup-temp-allocator-size-gi-baking-worker=262144"
|
||||
"memorysetup-temp-allocator-size-gfx=262144"
|
||||
Player connection [18192] Host "[IP] 192.168.0.123 [Port] 0 [Flags] 2 [Guid] 2931019668 [EditorId] 2931019668 [Version] 1048832 [Id] WindowsEditor(7,PC-20230316NUNE) [Debug] 1 [PackageName] WindowsEditor [ProjectName] Editor" joined multi-casting on [225.0.0.222:54997]...
|
||||
|
||||
Player connection [18192] Host "[IP] 192.168.0.123 [Port] 0 [Flags] 2 [Guid] 2931019668 [EditorId] 2931019668 [Version] 1048832 [Id] WindowsEditor(7,PC-20230316NUNE) [Debug] 1 [PackageName] WindowsEditor [ProjectName] Editor" joined alternative multi-casting on [225.0.0.222:34997]...
|
||||
|
||||
AS: AutoStreaming module initializing.
|
||||
[Physics::Module] Initialized MultithreadedJobDispatcher with {0} workers.
|
||||
Refreshing native plugins compatible for Editor in 194.66 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Initialize engine version: 2021.3.33f1c1 (682b9db7927c)
|
||||
[Subsystems] Discovering subsystems at path D:/Unity/2021.3.33f1c1/Editor/Data/Resources/UnitySubsystems
|
||||
[Subsystems] Discovering subsystems at path D:/myproject/JisolGame/JNFrame/Assets
|
||||
GfxDevice: creating device client; threaded=0; jobified=0
|
||||
Direct3D:
|
||||
Version: Direct3D 11.0 [level 11.1]
|
||||
Renderer: NVIDIA GeForce GTX 1660 SUPER (ID=0x21c4)
|
||||
Vendor: NVIDIA
|
||||
VRAM: 5980 MB
|
||||
Driver: 31.0.15.3623
|
||||
Initialize mono
|
||||
Mono path[0] = 'D:/Unity/2021.3.33f1c1/Editor/Data/Managed'
|
||||
Mono path[1] = 'D:/Unity/2021.3.33f1c1/Editor/Data/MonoBleedingEdge/lib/mono/unityjit-win32'
|
||||
Mono config path = 'D:/Unity/2021.3.33f1c1/Editor/Data/MonoBleedingEdge/etc'
|
||||
Using monoOptions --debugger-agent=transport=dt_socket,embedding=1,server=y,suspend=n,address=127.0.0.1:56740
|
||||
Begin MonoManager ReloadAssembly
|
||||
Registering precompiled unity dll's ...
|
||||
Register platform support module: D:/Unity/2021.3.33f1c1/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll
|
||||
Register platform support module: D:/Unity/2021.3.33f1c1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll
|
||||
Registered in 0.005603 seconds.
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Android Extension - Scanning For ADB Devices 267 ms
|
||||
Refreshing native plugins compatible for Editor in 157.50 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.045 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1045ms)
|
||||
BeginReloadAssembly (105ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (0ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (1ms)
|
||||
EndReloadAssembly (841ms)
|
||||
LoadAssemblies (101ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (101ms)
|
||||
ReleaseScriptCaches (0ms)
|
||||
RebuildScriptCaches (25ms)
|
||||
SetupLoadedEditorAssemblies (663ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (353ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (158ms)
|
||||
BeforeProcessingInitializeOnLoad (1ms)
|
||||
ProcessInitializeOnLoadAttributes (98ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (51ms)
|
||||
AfterProcessingInitializeOnLoad (0ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (0ms)
|
||||
Platform modules already initialized, skipping
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.019851 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 157.18 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Package Manager log level set to [2]
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 2.143 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (2144ms)
|
||||
BeginReloadAssembly (156ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (8ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (28ms)
|
||||
EndReloadAssembly (1835ms)
|
||||
LoadAssemblies (171ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (434ms)
|
||||
ReleaseScriptCaches (1ms)
|
||||
RebuildScriptCaches (73ms)
|
||||
SetupLoadedEditorAssemblies (1131ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (19ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (157ms)
|
||||
BeforeProcessingInitializeOnLoad (137ms)
|
||||
ProcessInitializeOnLoadAttributes (718ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (87ms)
|
||||
AfterProcessingInitializeOnLoad (12ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (8ms)
|
||||
Platform modules already initialized, skipping
|
||||
========================================================================
|
||||
Worker process is ready to serve import requests
|
||||
Launched and connected shader compiler UnityShaderCompiler.exe after 0.06 seconds
|
||||
Refreshing native plugins compatible for Editor in 1.37 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7771 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 48 unused Assets / (0.7 MB). Loaded Objects now: 8241.
|
||||
Memory consumption went from 308.3 MB to 307.6 MB.
|
||||
Total: 4.564800 ms (FindLiveObjects: 0.675800 ms CreateObjectMapping: 0.393000 ms MarkObjects: 3.141100 ms DeleteObjects: 0.352800 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.017579 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.81 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.905 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1906ms)
|
||||
BeginReloadAssembly (185ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (7ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (47ms)
|
||||
EndReloadAssembly (1607ms)
|
||||
LoadAssemblies (155ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (386ms)
|
||||
ReleaseScriptCaches (4ms)
|
||||
RebuildScriptCaches (55ms)
|
||||
SetupLoadedEditorAssemblies (973ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (26ms)
|
||||
SetLoadedEditorAssemblies (1ms)
|
||||
RefreshPlugins (2ms)
|
||||
BeforeProcessingInitializeOnLoad (135ms)
|
||||
ProcessInitializeOnLoadAttributes (666ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (124ms)
|
||||
AfterProcessingInitializeOnLoad (20ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (11ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 1.08 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.7 MB). Loaded Objects now: 8244.
|
||||
Memory consumption went from 299.5 MB to 298.8 MB.
|
||||
Total: 3.710300 ms (FindLiveObjects: 0.669700 ms CreateObjectMapping: 0.440200 ms MarkObjects: 2.257600 ms DeleteObjects: 0.341100 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.022508 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.59 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.903 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1904ms)
|
||||
BeginReloadAssembly (187ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (5ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (51ms)
|
||||
EndReloadAssembly (1602ms)
|
||||
LoadAssemblies (178ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (435ms)
|
||||
ReleaseScriptCaches (3ms)
|
||||
RebuildScriptCaches (76ms)
|
||||
SetupLoadedEditorAssemblies (874ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (22ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (2ms)
|
||||
BeforeProcessingInitializeOnLoad (108ms)
|
||||
ProcessInitializeOnLoadAttributes (639ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (89ms)
|
||||
AfterProcessingInitializeOnLoad (13ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (11ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 1.38 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.7 MB). Loaded Objects now: 8247.
|
||||
Memory consumption went from 299.5 MB to 298.9 MB.
|
||||
Total: 3.063300 ms (FindLiveObjects: 0.529400 ms CreateObjectMapping: 0.291000 ms MarkObjects: 1.989400 ms DeleteObjects: 0.252100 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.019137 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.63 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.778 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1779ms)
|
||||
BeginReloadAssembly (173ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (5ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (41ms)
|
||||
EndReloadAssembly (1507ms)
|
||||
LoadAssemblies (151ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (373ms)
|
||||
ReleaseScriptCaches (2ms)
|
||||
RebuildScriptCaches (60ms)
|
||||
SetupLoadedEditorAssemblies (888ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (25ms)
|
||||
SetLoadedEditorAssemblies (1ms)
|
||||
RefreshPlugins (2ms)
|
||||
BeforeProcessingInitializeOnLoad (110ms)
|
||||
ProcessInitializeOnLoadAttributes (640ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (96ms)
|
||||
AfterProcessingInitializeOnLoad (15ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (11ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 1.20 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.6 MB). Loaded Objects now: 8250.
|
||||
Memory consumption went from 299.5 MB to 298.9 MB.
|
||||
Total: 4.131400 ms (FindLiveObjects: 0.507900 ms CreateObjectMapping: 0.889000 ms MarkObjects: 2.381800 ms DeleteObjects: 0.351200 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.023761 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.20 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.761 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1762ms)
|
||||
BeginReloadAssembly (175ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (5ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (51ms)
|
||||
EndReloadAssembly (1477ms)
|
||||
LoadAssemblies (146ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (378ms)
|
||||
ReleaseScriptCaches (2ms)
|
||||
RebuildScriptCaches (68ms)
|
||||
SetupLoadedEditorAssemblies (841ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (21ms)
|
||||
SetLoadedEditorAssemblies (0ms)
|
||||
RefreshPlugins (1ms)
|
||||
BeforeProcessingInitializeOnLoad (110ms)
|
||||
ProcessInitializeOnLoadAttributes (602ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (90ms)
|
||||
AfterProcessingInitializeOnLoad (15ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (12ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 1.93 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.7 MB). Loaded Objects now: 8253.
|
||||
Memory consumption went from 299.5 MB to 298.9 MB.
|
||||
Total: 3.235200 ms (FindLiveObjects: 0.493000 ms CreateObjectMapping: 0.317300 ms MarkObjects: 2.186000 ms DeleteObjects: 0.237900 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Registering precompiled user dll's ...
|
||||
Registered in 0.021527 seconds.
|
||||
Begin MonoManager ReloadAssembly
|
||||
Native extension for WindowsStandalone target not found
|
||||
Native extension for Android target not found
|
||||
Refreshing native plugins compatible for Editor in 1.25 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
[Package Manager] Server::EnsureServerProcessIsRunning -- launch failed, reason: Unity was launched with the -noUpm command-line argument
|
||||
[Package Manager] Cannot connect to Unity Package Manager local server
|
||||
Mono: successfully reloaded assembly
|
||||
- Completed reload, in 1.833 seconds
|
||||
Domain Reload Profiling:
|
||||
ReloadAssembly (1835ms)
|
||||
BeginReloadAssembly (215ms)
|
||||
ExecutionOrderSort (0ms)
|
||||
DisableScriptedObjects (4ms)
|
||||
BackupInstance (0ms)
|
||||
ReleaseScriptingObjects (0ms)
|
||||
CreateAndSetChildDomain (46ms)
|
||||
EndReloadAssembly (1510ms)
|
||||
LoadAssemblies (219ms)
|
||||
RebuildTransferFunctionScriptingTraits (0ms)
|
||||
SetupTypeCache (360ms)
|
||||
ReleaseScriptCaches (2ms)
|
||||
RebuildScriptCaches (59ms)
|
||||
SetupLoadedEditorAssemblies (873ms)
|
||||
LogAssemblyErrors (0ms)
|
||||
InitializePlatformSupportModulesInManaged (23ms)
|
||||
SetLoadedEditorAssemblies (1ms)
|
||||
RefreshPlugins (1ms)
|
||||
BeforeProcessingInitializeOnLoad (115ms)
|
||||
ProcessInitializeOnLoadAttributes (625ms)
|
||||
ProcessInitializeOnLoadMethodAttributes (92ms)
|
||||
AfterProcessingInitializeOnLoad (15ms)
|
||||
EditorAssembliesLoaded (0ms)
|
||||
ExecutionOrderSort2 (0ms)
|
||||
AwakeInstancesAfterBackupRestoration (8ms)
|
||||
Platform modules already initialized, skipping
|
||||
Refreshing native plugins compatible for Editor in 1.22 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 7686 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 43 unused Assets / (0.6 MB). Loaded Objects now: 8256.
|
||||
Memory consumption went from 299.5 MB to 298.9 MB.
|
||||
Total: 4.445500 ms (FindLiveObjects: 0.938200 ms CreateObjectMapping: 0.473200 ms MarkObjects: 2.710900 ms DeleteObjects: 0.321200 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
========================================================================
|
||||
Received Prepare
|
||||
Refreshing native plugins compatible for Editor in 30.17 ms, found 3 plugins.
|
||||
Preloading 0 native plugins for Editor in 0.00 ms.
|
||||
Unloading 41 Unused Serialized files (Serialized files now loaded: 0)
|
||||
Unloading 41 unused Assets / (0.6 MB). Loaded Objects now: 8256.
|
||||
Memory consumption went from 146.9 MB to 146.2 MB.
|
||||
Total: 8.587700 ms (FindLiveObjects: 0.883600 ms CreateObjectMapping: 0.996400 ms MarkObjects: 5.949400 ms DeleteObjects: 0.756300 ms)
|
||||
|
||||
AssetImportParameters requested are different than current active one (requested -> active):
|
||||
custom:video-decoder-ogg-theora: a1e56fd34408186e4bbccfd4996cb3dc ->
|
||||
custom:container-muxer-webm: aa71ff27fc2769a1b78a27578f13a17b ->
|
||||
custom:container-demuxer-webm: 4f35f7cbe854078d1ac9338744f61a02 ->
|
||||
custom:video-encoder-webm-vp8: eb34c28f22e8b96e1ab97ce403110664 ->
|
||||
custom:CustomObjectIndexerAttribute: 6b0e35c9178b02a6363f3721b7b8e397 ->
|
||||
custom:audio-encoder-webm-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
||||
custom:framework-win-MediaFoundation: 216162199b28c13a410421893ffa2e32 ->
|
||||
custom:SearchIndexIgnoredProperties: e643bd26f0fe6173181afceb89e7c659 ->
|
||||
custom:container-demuxer-ogg: 62fdf1f143b41e24485cea50d1cbac27 ->
|
||||
custom:video-decoder-webm-vp8: 9c59270c3fd7afecdb556c50c9e8de78 ->
|
||||
custom:audio-decoder-ogg-vorbis: bf7c407c2cedff20999df2af8eb42d56 ->
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
3
JNFrame/Logs/shadercompiler-AssetImportWorker0.log
Normal file
3
JNFrame/Logs/shadercompiler-AssetImportWorker0.log
Normal file
@ -0,0 +1,3 @@
|
||||
Base path: 'D:/Unity/2021.3.33f1c1/Editor/Data', plugins path 'D:/Unity/2021.3.33f1c1/Editor/Data/PlaybackEngines'
|
||||
Cmd: initializeCompiler
|
||||
|
@ -0,0 +1,18 @@
|
||||
{
|
||||
"MonoBehaviour": {
|
||||
"Version": 4,
|
||||
"EnableBurstCompilation": true,
|
||||
"EnableOptimisations": true,
|
||||
"EnableSafetyChecks": false,
|
||||
"EnableDebugInAllBuilds": false,
|
||||
"DebugDataKind": 1,
|
||||
"EnableArmv9SecurityFeatures": false,
|
||||
"CpuMinTargetX32": 0,
|
||||
"CpuMaxTargetX32": 0,
|
||||
"CpuMinTargetX64": 0,
|
||||
"CpuMaxTargetX64": 0,
|
||||
"CpuTargetsX32": 6,
|
||||
"CpuTargetsX64": 72,
|
||||
"OptimizeFor": 0
|
||||
}
|
||||
}
|
@ -11,31 +11,37 @@ EditorBuildSettings:
|
||||
- enabled: 1
|
||||
path: Assets/Game/Scenes/UIScene.unity
|
||||
guid: 786aa53c6477525459c2f878d3c43a13
|
||||
- enabled: 1
|
||||
- enabled: 0
|
||||
path: Assets/Game/Scenes/Mode/WorldSceneMode.unity
|
||||
guid: 9249f4afb3db3c4489d1a29ea88a2f1c
|
||||
- enabled: 1
|
||||
- enabled: 0
|
||||
path: Assets/Game/Scenes/Mode/Example3_Recast_Navmesh1/WorldSync01.unity
|
||||
guid: 3db087e06073e834f99488917ceb5e74
|
||||
- enabled: 1
|
||||
- enabled: 0
|
||||
path: Assets/Game/Scenes/Mode/Example3_Recast_Navmesh1/WorldSync01_1.unity
|
||||
guid: b678704b40de4ea4eaa9bc391ff5f803
|
||||
- enabled: 1
|
||||
- enabled: 0
|
||||
path: Assets/Game/Scenes/Mode/Example3_Recast_Navmesh1/JNWorldSync01.unity
|
||||
guid: e7793c2a31991de4ba4d03f36dc06366
|
||||
- enabled: 1
|
||||
- enabled: 0
|
||||
path: Assets/Game/Scenes/Mode/Example11_RVO/RVOLightweight.unity
|
||||
guid: 8e0330a3995e1f64baf253a026021f09
|
||||
- enabled: 1
|
||||
- enabled: 0
|
||||
path: Assets/Game/Scenes/Mode/Example11_RVO/GRVO01World.unity
|
||||
guid: 6601635721611064e92978155e3f0134
|
||||
- enabled: 0
|
||||
path: Assets/Game/Scenes/Mode/Example11_RVO/GRVO02World.unity
|
||||
guid: 20b9deb2a5e66a14bbd648adf2b7b9b2
|
||||
- enabled: 0
|
||||
- enabled: 1
|
||||
path: Assets/Game/Scenes/Mode/Nav/NavDemo1.unity
|
||||
guid: 60c3109dddb001d4e98de05e7b75c9d0
|
||||
- enabled: 1
|
||||
- enabled: 0
|
||||
path: Assets/Game/Scenes/Mode/RVO/RVODemoMode.unity
|
||||
guid: 981ee349220c683439f641749b4a1ba5
|
||||
- enabled: 1
|
||||
path: Assets/HPJ Pathfinding Pro/Scenes/Examples/Avoidence Agent.unity
|
||||
guid: 15444fa13fac44f48ae8e71af030b6ac
|
||||
- enabled: 1
|
||||
path: Assets/Game/Scenes/Mode/RVO/RVO2DemoMode.unity
|
||||
guid: 1a09bf58b85932a4a8efb415c3faab8f
|
||||
m_configObjects: {}
|
||||
|
@ -21,32 +21,32 @@ EditorUserSettings:
|
||||
value: 184c
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-0:
|
||||
value: 550157555405505f090a0e7240725b44134e402e297873357a2b4a66e1b93068
|
||||
value: 0650065500505e595c5b0824467b06444f16482b2e7f23652f7d4465b3e26c3b
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-1:
|
||||
value: 520457570405590c5b560e7b41770f461216497a7e7b72687c2b1f65e0b0603d
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-2:
|
||||
value: 5304525206500f02085f5a7a41775916454e4872787d71347e7e1e37e1e2676b
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-3:
|
||||
value: 5409020704005a585b5a5b7545710a44434e1b782a707168297a1e67b1e1656b
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-4:
|
||||
value: 05010d5e06540d0d5d0d5c7141755e44134f19797a7e72642c7d456ab7b3323a
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-5:
|
||||
value: 5b54045556050808545759274125094414161e78797b27607f7f4d61b3e66461
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-6:
|
||||
value: 5507045753065c0c5f5f5a7341730944134e4a737b707765782c4e35b2b1676c
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-7:
|
||||
RecentlyUsedSceneGuid-2:
|
||||
value: 05010d5e06540d0d5d0d5c7141755e44134f19797a7e72642c7d456ab7b3323a
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-3:
|
||||
value: 5b54045556050808545759274125094414161e78797b27607f7f4d61b3e66461
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-4:
|
||||
value: 5101565f01500b090c5b097446220e4414151c7c787027342b7b1f64e0b9366a
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-8:
|
||||
RecentlyUsedSceneGuid-5:
|
||||
value: 5250045f07535c030f56597b43715e44174f1d2c2e7c77652e7a1b32e3e26c3e
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-6:
|
||||
value: 5a09050300065d025f5c5c21467b0c44454e1e7c78797164742b4932b3e2356d
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-7:
|
||||
value: 550157555405505f090a0e7240725b44134e402e297873357a2b4a66e1b93068
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-8:
|
||||
value: 5409020704005a585b5a5b7545710a44434e1b782a707168297a1e67b1e1656b
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-9:
|
||||
value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a
|
||||
flags: 0
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user