5 Commits

Author SHA1 Message Date
Thibault Pouch
4c6f8f0768 refactor : add sliding door for room 3 2026-03-10 10:34:01 +01:00
Thibault Pouch
c20993a512 refactor : add slinding door and pressure plate for room 1 2026-03-10 10:30:01 +01:00
Thibault Pouch
4a3811f72e refactor : structure for improved readability and maintainability 2026-03-10 10:23:26 +01:00
Thibault Pouch
da530e2083 feat : Add Dev_trans_grey material and its meta file 2026-03-10 09:49:41 +01:00
Thibault Pouch
f8ef2c1c0e feat : Add Level01 scene meta file to project 2026-03-10 09:49:36 +01:00
147 changed files with 29124 additions and 11260 deletions

View File

@@ -1,8 +0,0 @@
<!-- UNITY CODE ASSIST INSTRUCTIONS START -->
- Project name: HeadlessHazard
- Unity version: Unity 6000.3.10f1
- Active game object:
- Name: Head
- Tag: Player
- Layer: Default
<!-- UNITY CODE ASSIST INSTRUCTIONS END -->

View File

@@ -1,18 +1,5 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %TAG !u! tag:unity3d.com,2011:
--- !u!114 &-4017841189937380044
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
--- !u!21 &2100000 --- !u!21 &2100000
Material: Material:
serializedVersion: 8 serializedVersion: 8
@@ -20,12 +7,12 @@ Material:
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_Name: Trajectory Material m_Name: Dev_trans_grey
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0} m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0 m_ModifiedSerializedProperties: 0
m_ValidKeywords: m_ValidKeywords:
- _SPECULAR_SETUP - _ALPHAPREMULTIPLY_ON
- _SURFACE_TYPE_TRANSPARENT - _SURFACE_TYPE_TRANSPARENT
m_InvalidKeywords: [] m_InvalidKeywords: []
m_LightmapFlags: 4 m_LightmapFlags: 4
@@ -43,7 +30,7 @@ Material:
serializedVersion: 3 serializedVersion: 3
m_TexEnvs: m_TexEnvs:
- _BaseMap: - _BaseMap:
m_Texture: {fileID: 0} m_Texture: {fileID: 2800000, guid: 423391cbbe5ecd94b94ef01cc234a46d, type: 3}
m_Scale: {x: 1, y: 1} m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _BumpMap: - _BumpMap:
@@ -67,7 +54,7 @@ Material:
m_Scale: {x: 1, y: 1} m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _MainTex: - _MainTex:
m_Texture: {fileID: 0} m_Texture: {fileID: 2800000, guid: 423391cbbe5ecd94b94ef01cc234a46d, type: 3}
m_Scale: {x: 1, y: 1} m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _MetallicGlossMap: - _MetallicGlossMap:
@@ -104,7 +91,7 @@ Material:
- _AlphaClip: 0 - _AlphaClip: 0
- _AlphaToMask: 0 - _AlphaToMask: 0
- _Blend: 0 - _Blend: 0
- _BlendModePreserveSpecular: 0 - _BlendModePreserveSpecular: 1
- _BumpScale: 1 - _BumpScale: 1
- _ClearCoatMask: 0 - _ClearCoatMask: 0
- _ClearCoatSmoothness: 0 - _ClearCoatSmoothness: 0
@@ -115,27 +102,42 @@ Material:
- _DstBlend: 10 - _DstBlend: 10
- _DstBlendAlpha: 10 - _DstBlendAlpha: 10
- _EnvironmentReflections: 1 - _EnvironmentReflections: 1
- _GlossMapScale: 0 - _GlossMapScale: 1
- _Glossiness: 0 - _Glossiness: 0.5
- _GlossyReflections: 0 - _GlossyReflections: 1
- _Metallic: 0 - _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1 - _OcclusionStrength: 1
- _Parallax: 0.005 - _Parallax: 0.02
- _QueueOffset: 0 - _QueueOffset: 0
- _ReceiveShadows: 1 - _ReceiveShadows: 1
- _Smoothness: 0.5 - _Smoothness: 0.5
- _SmoothnessTextureChannel: 0 - _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1 - _SpecularHighlights: 1
- _SrcBlend: 5 - _SrcBlend: 1
- _SrcBlendAlpha: 1 - _SrcBlendAlpha: 1
- _Surface: 1 - _Surface: 1
- _WorkflowMode: 0 - _UVSec: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1 - _XRMotionVectorsPass: 1
- _ZWrite: 0 - _ZWrite: 0
m_Colors: m_Colors:
- _BaseColor: {r: 1, g: 0, b: 0, a: 0.6862745} - _BaseColor: {r: 1, g: 1, b: 1, a: 0.4745098}
- _Color: {r: 1, g: 0, b: 0, a: 0.6862745} - _Color: {r: 1, g: 1, b: 1, a: 0.4745098}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: [] m_BuildTextureStacks: []
m_AllowLocking: 1 m_AllowLocking: 1
--- !u!114 &2556394321436131706
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 51588d9f6325eb54eaa0c67389672860 guid: e2ff028127aed49898d5db254c679ffa
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 2100000 mainObjectFileID: 2100000

View File

@@ -25,7 +25,7 @@
"initialStateCheck": true "initialStateCheck": true
}, },
{ {
"name": "HeadInteract", "name": "Pickup",
"type": "Button", "type": "Button",
"id": "5a0c555a-8fc4-4188-9eed-401eb8f017b5", "id": "5a0c555a-8fc4-4188-9eed-401eb8f017b5",
"expectedControlType": "", "expectedControlType": "",
@@ -100,16 +100,7 @@
"name": "Sprint", "name": "Sprint",
"type": "Button", "type": "Button",
"id": "641cd816-40e6-41b4-8c3d-04687c349290", "id": "641cd816-40e6-41b4-8c3d-04687c349290",
"expectedControlType": "", "expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "Shift",
"type": "Button",
"id": "082f2b53-d4e1-4cc7-b174-c2975cd57d3f",
"expectedControlType": "",
"processors": "", "processors": "",
"interactions": "", "interactions": "",
"initialStateCheck": false "initialStateCheck": false
@@ -504,7 +495,7 @@
{ {
"name": "", "name": "",
"id": "05a519b8-f991-4f43-a438-fbe3db38625b", "id": "05a519b8-f991-4f43-a438-fbe3db38625b",
"path": "<Mouse>/leftButton", "path": "<Mouse>/rightButton",
"interactions": "", "interactions": "",
"processors": "", "processors": "",
"groups": ";Keyboard&Mouse", "groups": ";Keyboard&Mouse",
@@ -519,18 +510,7 @@
"interactions": "", "interactions": "",
"processors": "", "processors": "",
"groups": ";Keyboard&Mouse", "groups": ";Keyboard&Mouse",
"action": "HeadInteract", "action": "Pickup",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "768d31fb-914a-42c1-900b-45ff3725e46c",
"path": "<Keyboard>/shift",
"interactions": "",
"processors": "",
"groups": ";Touch;Keyboard&Mouse",
"action": "Shift",
"isComposite": false, "isComposite": false,
"isPartOfComposite": false "isPartOfComposite": false
} }

View File

@@ -1,110 +0,0 @@
using UnityEngine;
public class PlayerHeadController : MonoBehaviour
{
public Transform Head;
public Transform CameraTransform;
public float ThrowForce = 10f;
public float PickupDistance = 3f;
public bool isHoldingHead = true;
private Rigidbody m_headRigidbody;
private Vector3 m_headInitialLocalPos;
private Quaternion m_headInitialLocalRot;
private Animator animator;
private PlayerInputController input;
private void Awake()
{
animator = GetComponent<Animator>();
input = GetComponent<PlayerInputController>();
}
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
m_headInitialLocalPos = Head.localPosition;
m_headInitialLocalRot = Head.localRotation;
}
void Update()
{
if (input.HeadInteractionPressed)
{
InteractHead();
}
if (input.ThrowPressed)
{
ThrowHead();
}
}
private void InteractHead()
{
if (!isHoldingHead)
TryPickupHead();
else
DropHead();
}
private void DropHead()
{
animator.SetTrigger("Throw");
isHoldingHead = false;
Head.SetParent(null);
m_headRigidbody = Head.gameObject.AddComponent<Rigidbody>();
m_headRigidbody.mass = 1f;
m_headRigidbody.constraints =
RigidbodyConstraints.FreezeRotationX |
RigidbodyConstraints.FreezeRotationZ |
RigidbodyConstraints.FreezeRotationY;
}
private void ThrowHead()
{
if (!isHoldingHead)
return;
DropHead();
m_headRigidbody.AddForce(CameraTransform.forward * ThrowForce, ForceMode.Impulse);
}
private void TryPickupHead()
{
if (isHoldingHead)
return;
float distance = Vector3.Distance(transform.position, Head.position);
if (distance <= PickupDistance)
{
PickupHead();
}
}
private void PickupHead()
{
isHoldingHead = true;
if (m_headRigidbody != null)
{
Destroy(m_headRigidbody);
}
Head.SetParent(transform);
Head.localPosition = m_headInitialLocalPos;
Head.localRotation = m_headInitialLocalRot;
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 2da51dfecccc45b469912e3bb3f1953b

View File

@@ -1,55 +0,0 @@
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerInputController : MonoBehaviour
{
public InputActionAsset InputActions;
private InputAction m_moveAction;
private InputAction m_lookAction;
private InputAction m_jumpAction;
private InputAction m_throwAction;
private InputAction m_shiftAction;
private InputAction m_headInteractAction;
public Vector2 MoveAmount { get; private set; }
public Vector2 LookAmount { get; private set; }
public bool JumpPressed { get; private set; }
public bool ShiftPressed { get; private set; }
public bool ThrowPressed { get; private set; }
public bool HeadInteractionPressed { get; private set; }
private void Awake()
{
var map = InputActions.FindActionMap("Player");
m_moveAction = map.FindAction("Move");
m_lookAction = map.FindAction("Look");
m_jumpAction = map.FindAction("Jump");
m_shiftAction = map.FindAction("Shift");
m_throwAction = map.FindAction("Throw");
m_headInteractAction = map.FindAction("HeadInteract");
}
private void OnEnable()
{
InputActions.FindActionMap("Player").Enable();
}
private void OnDisable()
{
InputActions.FindActionMap("Player").Disable();
}
private void Update()
{
MoveAmount = m_moveAction.ReadValue<Vector2>();
LookAmount = m_lookAction.ReadValue<Vector2>();
ShiftPressed = m_shiftAction.IsPressed();
JumpPressed = m_jumpAction.WasPressedThisFrame();
ThrowPressed = m_throwAction.WasPressedThisFrame();
HeadInteractionPressed = m_headInteractAction.WasPressedThisFrame();
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 1d8f349ed7dc088a4a6e2690ee87094a

View File

@@ -1,34 +0,0 @@
using UnityEngine;
public class PlayerJump : MonoBehaviour
{
public float JumpForce = 5;
public Transform GroundCheck;
public float GroundCheckRadius = 0.2f;
private Rigidbody m_rigidbody;
private PlayerInputController input;
private void Awake()
{
m_rigidbody = GetComponent<Rigidbody>();
input = GetComponent<PlayerInputController>();
}
private void Update()
{
if (input.JumpPressed)
{
Jump();
}
}
public void Jump()
{
if (Physics.CheckSphere(GroundCheck.position, GroundCheckRadius, LayerMask.GetMask("Ground")))
{
m_rigidbody.AddForce(Vector3.up * JumpForce, ForceMode.Impulse);
}
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 9c524d12bc1668e42a00cbd8050107f6

View File

@@ -1,57 +0,0 @@
using UnityEngine;
public class PlayerLook : MonoBehaviour
{
public Transform CameraTransform;
public Transform Head;
public float RotateSpeed = 5;
public float MaxLookAngle = 90f;
private float m_verticalRotation = 0f;
private Rigidbody m_rigidbody;
private PlayerInputController input;
private PlayerHeadController headController;
private void Awake()
{
m_rigidbody = GetComponent<Rigidbody>();
input = GetComponent<PlayerInputController>();
headController = GetComponent<PlayerHeadController>();
}
private void FixedUpdate()
{
Vector2 m_lookAmt = input.LookAmount;
if (m_lookAmt.magnitude <= 0.01f)
return;
if (!headController.isHoldingHead || input.ShiftPressed && headController.isHoldingHead)
{
float headRotation = m_lookAmt.x * RotateSpeed * Time.deltaTime;
Head.Rotate(0, headRotation, 0);
if (CameraTransform != null)
{
m_verticalRotation -= m_lookAmt.y * RotateSpeed * Time.deltaTime;
m_verticalRotation = Mathf.Clamp(m_verticalRotation, -MaxLookAngle, MaxLookAngle);
CameraTransform.localRotation = Quaternion.Euler(m_verticalRotation, 0, 0);
}
}
else
{
float horizontalRotation = m_lookAmt.x * RotateSpeed * Time.deltaTime;
Quaternion deltaRotation = Quaternion.Euler(0, horizontalRotation, 0);
m_rigidbody.MoveRotation(m_rigidbody.rotation * deltaRotation);
if (CameraTransform != null)
{
m_verticalRotation -= m_lookAmt.y * RotateSpeed * Time.deltaTime;
m_verticalRotation = Mathf.Clamp(m_verticalRotation, -MaxLookAngle, MaxLookAngle);
CameraTransform.localRotation = Quaternion.Euler(m_verticalRotation, 0, 0);
}
}
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 6c1ddada0161b8c4783806ef6775348a

View File

@@ -1,74 +1,216 @@
using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour public class PlayerMovement : MonoBehaviour
{ {
public float WalkSpeed = 10; public InputActionAsset InputActions;
public float rotationSpeed = 10f;
public Animator animator; private InputAction m_moveAction;
public Transform cameraTransform; private InputAction m_lookAction;
private InputAction m_jumpAction;
private InputAction m_throwAction;
private InputAction m_pickupAction;
private Vector2 m_moveAmt;
private Vector2 m_lookAmt;
private Rigidbody m_rigidbody; private Rigidbody m_rigidbody;
private PlayerInputController input;
private PlayerHeadController headController;
private Vector3 moveDirection; [Header("Camera/Head")]
public Transform CameraTransform;
public float MaxLookAngle = 90f;
private float m_verticalRotation = 0f;
public float WalkSpeed = 10;
public float RotateSpeed = 5;
public float JumpForce = 5;
public Transform GroundCheck;
public float GroundCheckRadius = 0.2f;
public Animator animator;
[Header("Head Settings")]
public Transform Head;
public float ThrowForce = 10f;
public float PickupDistance = 3f;
private bool m_isHeadThrown = false;
private Rigidbody m_headRigidbody;
private Vector3 m_headInitialLocalPos;
private Quaternion m_headInitialLocalRot;
private void Awake() private void Awake()
{ {
m_rigidbody = GetComponent<Rigidbody>(); var map = InputActions.FindActionMap("Player");
input = GetComponent<PlayerInputController>();
animator = GetComponent<Animator>();
headController = GetComponent<PlayerHeadController>();
if (m_rigidbody != null) m_moveAction = map.FindAction("Move");
{ m_lookAction = map.FindAction("Look");
m_rigidbody.freezeRotation = true; m_jumpAction = map.FindAction("Jump");
// Support both old and new action names without breaking the scene setup.
m_throwAction = map.FindAction("Throw") ?? map.FindAction("Attack");
m_pickupAction = map.FindAction("Pickup") ?? map.FindAction("Interact");
m_rigidbody = GetComponent<Rigidbody>();
animator = GetComponent<Animator>();
} }
private void OnEnable()
{
InputActions.FindActionMap("Player").Enable();
}
private void OnDisable()
{
InputActions.FindActionMap("Player").Disable();
}
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
m_headInitialLocalPos = Head.localPosition;
m_headInitialLocalRot = Head.localRotation;
}
private void Update()
{
m_moveAmt = m_moveAction != null ? m_moveAction.ReadValue<Vector2>() : Vector2.zero;
m_lookAmt = m_lookAction != null ? m_lookAction.ReadValue<Vector2>() : Vector2.zero;
if (m_jumpAction != null && m_jumpAction.WasPressedThisFrame())
{
Jump();
}
if (m_throwAction != null && m_throwAction.WasPressedThisFrame())
{
ThrowHead();
}
if (m_pickupAction != null && (m_pickupAction.WasPressedThisFrame() || m_pickupAction.WasPerformedThisFrame()))
{
TryPickupHead();
}
} }
private void FixedUpdate() private void FixedUpdate()
{ {
Vector2 m_moveAmt = input.MoveAmount; Walking();
Rotating();
}
float horizontal = m_moveAmt.x; private void Walking()
float vertical = m_moveAmt.y;
Vector3 cameraForward = cameraTransform.forward;
Vector3 cameraRight = cameraTransform.right;
cameraForward.y = 0f;
cameraRight.y = 0f;
cameraForward.Normalize();
cameraRight.Normalize();
moveDirection = (cameraForward * vertical + cameraRight * horizontal).normalized;
if (headController.isHoldingHead)
{ {
Vector3 move =
transform.forward * m_moveAmt.y +
transform.right * m_moveAmt.x;
m_rigidbody.MovePosition( m_rigidbody.MovePosition(
m_rigidbody.position + Time.deltaTime * WalkSpeed * moveDirection m_rigidbody.position + move * WalkSpeed * Time.deltaTime
); );
}
else
{
if (moveDirection.magnitude >= 0.1f)
{
m_rigidbody.MovePosition(
m_rigidbody.position + Time.deltaTime * WalkSpeed * moveDirection
);
Quaternion targetRotation = Quaternion.LookRotation(moveDirection);
transform.rotation = Quaternion.Slerp(
transform.rotation,
targetRotation,
rotationSpeed * Time.deltaTime
);
}
}
bool isMoving = m_moveAmt.magnitude > 0.1f; bool isMoving = m_moveAmt.magnitude > 0.1f;
animator.SetBool("isWalking", isMoving); animator.SetBool("isWalking", isMoving);
} }
private void Rotating()
{
if (m_lookAmt.magnitude <= 0.01f)
return;
if (!m_isHeadThrown)
{
// NORMAL BODY ROTATION
float horizontalRotation = m_lookAmt.x * RotateSpeed * Time.deltaTime;
Quaternion deltaRotation = Quaternion.Euler(0, horizontalRotation, 0);
m_rigidbody.MoveRotation(m_rigidbody.rotation * deltaRotation);
if (CameraTransform != null)
{
m_verticalRotation -= m_lookAmt.y * RotateSpeed * Time.deltaTime;
m_verticalRotation = Mathf.Clamp(m_verticalRotation, -MaxLookAngle, MaxLookAngle);
CameraTransform.localRotation = Quaternion.Euler(m_verticalRotation, 0, 0);
}
}
else
{
// HEAD ROTATION ON GROUND
float headRotation = m_lookAmt.x * RotateSpeed * Time.deltaTime;
Head.Rotate(0, headRotation, 0);
// Add vertical camera rotation when head is on ground
if (CameraTransform != null)
{
m_verticalRotation -= m_lookAmt.y * RotateSpeed * Time.deltaTime;
m_verticalRotation = Mathf.Clamp(m_verticalRotation, -MaxLookAngle, MaxLookAngle);
CameraTransform.localRotation = Quaternion.Euler(m_verticalRotation, 0, 0);
}
}
}
public void Jump()
{
if (Physics.CheckSphere(GroundCheck.position, GroundCheckRadius, LayerMask.GetMask("Ground"))) {
m_rigidbody.AddForce(Vector3.up * JumpForce, ForceMode.Impulse);
}
}
private void ThrowHead()
{
if (m_isHeadThrown)
return;
animator.SetTrigger("Throw");
m_isHeadThrown = true;
Head.SetParent(null);
m_headRigidbody = Head.gameObject.AddComponent<Rigidbody>();
m_headRigidbody.mass = 1f;
m_headRigidbody.constraints =
RigidbodyConstraints.FreezeRotationX |
RigidbodyConstraints.FreezeRotationZ;
m_headRigidbody.AddForce(CameraTransform.forward * ThrowForce, ForceMode.Impulse);
}
private void TryPickupHead()
{
if (!m_isHeadThrown)
return;
float distance = Vector3.Distance(transform.position, Head.position);
if (distance <= PickupDistance)
{
PickupHead();
}
}
private void PickupHead()
{
m_isHeadThrown = false;
// Remove Rigidbody
if (m_headRigidbody != null)
{
Destroy(m_headRigidbody);
}
// Reattach to player
Head.SetParent(transform);
// Reset position & rotation
Head.localPosition = m_headInitialLocalPos;
Head.localRotation = m_headInitialLocalRot;
}
} }

View File

@@ -1,2 +1,2 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7f91586e8c2742341aa8f6925e597bf1 guid: 1d8f349ed7dc088a4a6e2690ee87094a

View File

@@ -1,216 +0,0 @@
//using TMPro;
//using UnityEngine;
//using UnityEngine.InputSystem;
//public class PlayerMovement : MonoBehaviour
//{
// public InputActionAsset InputActions;
// private InputAction m_moveAction;
// private InputAction m_lookAction;
// private InputAction m_jumpAction;
// private InputAction m_throwAction;
// private InputAction m_pickupAction;
// private Vector2 m_moveAmt;
// private Vector2 m_lookAmt;
// private Rigidbody m_rigidbody;
// [Header("Camera/Head")]
// public Transform CameraTransform;
// public float MaxLookAngle = 90f;
// private float m_verticalRotation = 0f;
// public float WalkSpeed = 10;
// public float RotateSpeed = 5;
// public float JumpForce = 5;
// public Transform GroundCheck;
// public float GroundCheckRadius = 0.2f;
// public Animator animator;
// [Header("Head Settings")]
// public Transform Head;
// public float ThrowForce = 10f;
// public float PickupDistance = 3f;
// private bool m_isHeadThrown = false;
// private Rigidbody m_headRigidbody;
// private Vector3 m_headInitialLocalPos;
// private Quaternion m_headInitialLocalRot;
// private void Awake()
// {
// var map = InputActions.FindActionMap("Player");
// m_moveAction = map.FindAction("Move");
// m_lookAction = map.FindAction("Look");
// m_jumpAction = map.FindAction("Jump");
// m_throwAction = map.FindAction("Throw");
// m_pickupAction = map.FindAction("Pickup");
// m_rigidbody = GetComponent<Rigidbody>();
// animator = GetComponent<Animator>();
// }
// private void OnEnable()
// {
// InputActions.FindActionMap("Player").Enable();
// }
// private void OnDisable()
// {
// InputActions.FindActionMap("Player").Disable();
// }
// void Start()
// {
// Cursor.lockState = CursorLockMode.Locked;
// m_headInitialLocalPos = Head.localPosition;
// m_headInitialLocalRot = Head.localRotation;
// }
// private void Update()
// {
// m_moveAmt = m_moveAction.ReadValue<Vector2>();
// m_lookAmt = m_lookAction.ReadValue<Vector2>();
// if (m_jumpAction.WasPressedThisFrame())
// {
// Jump();
// }
// if (m_throwAction.WasPressedThisFrame())
// {
// ThrowHead();
// }
// if (m_pickupAction.WasPressedThisFrame())
// {
// TryPickupHead();
// }
// }
// private void FixedUpdate()
// {
// Walking();
// Rotating();
// }
// private void Walking()
// {
// Vector3 move =
// transform.forward * m_moveAmt.y +
// transform.right * m_moveAmt.x;
// m_rigidbody.MovePosition(
// m_rigidbody.position + move * WalkSpeed * Time.deltaTime
// );
// bool isMoving = m_moveAmt.magnitude > 0.1f;
// animator.SetBool("isWalking", isMoving);
// }
// private void Rotating()
// {
// if (m_lookAmt.magnitude <= 0.01f)
// return;
// if (!m_isHeadThrown)
// {
// NORMAL BODY ROTATION
// float horizontalRotation = m_lookAmt.x * RotateSpeed * Time.deltaTime;
// Quaternion deltaRotation = Quaternion.Euler(0, horizontalRotation, 0);
// m_rigidbody.MoveRotation(m_rigidbody.rotation * deltaRotation);
// if (CameraTransform != null)
// {
// m_verticalRotation -= m_lookAmt.y * RotateSpeed * Time.deltaTime;
// m_verticalRotation = Mathf.Clamp(m_verticalRotation, -MaxLookAngle, MaxLookAngle);
// CameraTransform.localRotation = Quaternion.Euler(m_verticalRotation, 0, 0);
// }
// }
// else
// {
// HEAD ROTATION ON GROUND
// float headRotation = m_lookAmt.x * RotateSpeed * Time.deltaTime;
// Head.Rotate(0, headRotation, 0);
// Add vertical camera rotation when head is on ground
// if (CameraTransform != null)
// {
// m_verticalRotation -= m_lookAmt.y * RotateSpeed * Time.deltaTime;
// m_verticalRotation = Mathf.Clamp(m_verticalRotation, -MaxLookAngle, MaxLookAngle);
// CameraTransform.localRotation = Quaternion.Euler(m_verticalRotation, 0, 0);
// }
// }
// }
// public void Jump()
// {
// if (Physics.CheckSphere(GroundCheck.position, GroundCheckRadius, LayerMask.GetMask("Ground")))
// {
// m_rigidbody.AddForce(Vector3.up * JumpForce, ForceMode.Impulse);
// }
// }
// private void ThrowHead()
// {
// if (m_isHeadThrown)
// return;
// animator.SetTrigger("Throw");
// m_isHeadThrown = true;
// Head.SetParent(null);
// m_headRigidbody = Head.gameObject.AddComponent<Rigidbody>();
// m_headRigidbody.mass = 1f;
// m_headRigidbody.constraints =
// RigidbodyConstraints.FreezeRotationX |
// RigidbodyConstraints.FreezeRotationZ;
// m_headRigidbody.AddForce(CameraTransform.forward * ThrowForce, ForceMode.Impulse);
// }
// private void TryPickupHead()
// {
// if (!m_isHeadThrown)
// return;
// float distance = Vector3.Distance(transform.position, Head.position);
// if (distance <= PickupDistance)
// {
// PickupHead();
// }
// }
// private void PickupHead()
// {
// m_isHeadThrown = false;
// Remove Rigidbody
// if (m_headRigidbody != null)
// {
// Destroy(m_headRigidbody);
// }
// Reattach to player
// Head.SetParent(transform);
// Reset position & rotation
// Head.localPosition = m_headInitialLocalPos;
// Head.localRotation = m_headInitialLocalRot;
// }
//}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 85fce5e45a2682243a133de9ba0a4324

View File

@@ -13,6 +13,7 @@ GameObject:
- component: {fileID: 7188501903215599936} - component: {fileID: 7188501903215599936}
- component: {fileID: 2249752946204529007} - component: {fileID: 2249752946204529007}
- component: {fileID: 8097217384448450469} - component: {fileID: 8097217384448450469}
- component: {fileID: 3970929985668534253}
- component: {fileID: 9200216552899707794} - component: {fileID: 9200216552899707794}
- component: {fileID: 3436190445336344638} - component: {fileID: 3436190445336344638}
m_Layer: 0 m_Layer: 0
@@ -34077,6 +34078,28 @@ MeshFilter:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6532970485135766022} m_GameObject: {fileID: 6532970485135766022}
m_Mesh: {fileID: 0} m_Mesh: {fileID: 0}
--- !u!64 &3970929985668534253
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6532970485135766022}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 0}
--- !u!135 &9200216552899707794 --- !u!135 &9200216552899707794
SphereCollider: SphereCollider:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -12,7 +12,7 @@ GameObject:
m_Layer: 0 m_Layer: 0
m_Name: GroundCheck m_Name: GroundCheck
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 1
@@ -25,7 +25,7 @@ Transform:
m_GameObject: {fileID: 8021212901078439068} m_GameObject: {fileID: 8021212901078439068}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.004, z: -0.06500006} m_LocalPosition: {x: 0, y: 0, z: -0.06500006}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@@ -39,89 +39,21 @@ PrefabInstance:
serializedVersion: 3 serializedVersion: 3
m_TransformParent: {fileID: 7821156882341915560} m_TransformParent: {fileID: 7821156882341915560}
m_Modifications: m_Modifications:
- target: {fileID: 1316595833530241815, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1316595833530241815, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3733736632917204230, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3733736632917204230, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3733736632917204230, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3866203678110391311, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3866203678110391311, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4513738306462009106, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3} - target: {fileID: 4513738306462009106, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_Name propertyPath: m_Name
value: Head value: Head
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4513738306462009106, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_TagString
value: Player
objectReference: {fileID: 0}
- target: {fileID: 4522719369371878407, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4522719369371878407, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5926884563646191324, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5926884563646191324, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5926884563646191324, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7925603877176952742, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7925603877176952742, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8182261421342382278, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.y
value: 1.235
objectReference: {fileID: 0}
- target: {fileID: 8182261421342382278, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.z
value: 0.3157
objectReference: {fileID: 0}
- target: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3} - target: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3} - target: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.y propertyPath: m_LocalPosition.y
value: -0.421 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3} - target: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: 0.475 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3} - target: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
propertyPath: m_LocalRotation.w propertyPath: m_LocalRotation.w
@@ -151,41 +83,11 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: m_RemovedComponents: []
- {fileID: 9037390549028016567, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: m_AddedComponents: []
- targetCorrespondingSourceObject: {fileID: 4513738306462009106, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
insertIndex: -1
addedObject: {fileID: 6096268390463610501}
m_SourcePrefab: {fileID: 100100000, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
--- !u!1 &4446703388580953019 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4513738306462009106, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
m_PrefabInstance: {fileID: 221195622690684073}
m_PrefabAsset: {fileID: 0}
--- !u!65 &6096268390463610501
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4446703388580953019}
m_Material: {fileID: 13400000, guid: 0e9f85473ca372a59bbff5adb28c18d2, type: 2}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 0.79742086, y: 0.5844476, z: 0.75984764}
m_Center: {x: -0.0018145442, y: 1.2922238, z: 0.060781002}
--- !u!4 &8079687630579216978 stripped --- !u!4 &8079687630579216978 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3} m_CorrespondingSourceObject: {fileID: 8300425658720571131, guid: 8ae6d0072edd3ef6a8e8fab748ba5098, type: 3}
@@ -249,32 +151,10 @@ PrefabInstance:
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: m_RemovedGameObjects: []
- {fileID: 2059550454731354505, guid: 459ef74c4ee79d3eb8e1ba6a0f06c9a7, type: 3}
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: m_AddedComponents: []
- targetCorrespondingSourceObject: {fileID: 1015176535145037065, guid: 459ef74c4ee79d3eb8e1ba6a0f06c9a7, type: 3}
insertIndex: -1
addedObject: {fileID: 2084843937911841166}
m_SourcePrefab: {fileID: 100100000, guid: 459ef74c4ee79d3eb8e1ba6a0f06c9a7, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 459ef74c4ee79d3eb8e1ba6a0f06c9a7, type: 3}
--- !u!1 &1446289441119343760 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1015176535145037065, guid: 459ef74c4ee79d3eb8e1ba6a0f06c9a7, type: 3}
m_PrefabInstance: {fileID: 1874870990122559897}
m_PrefabAsset: {fileID: 0}
--- !u!114 &2084843937911841166
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1446289441119343760}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1d8f349ed7dc088a4a6e2690ee87094a, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement
InputActions: {fileID: 0}
--- !u!4 &6975610370707183838 stripped --- !u!4 &6975610370707183838 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 8848088476524540231, guid: 459ef74c4ee79d3eb8e1ba6a0f06c9a7, type: 3} m_CorrespondingSourceObject: {fileID: 8848088476524540231, guid: 459ef74c4ee79d3eb8e1ba6a0f06c9a7, type: 3}
@@ -570,15 +450,15 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
propertyPath: m_LocalPosition.y propertyPath: m_LocalPosition.y
value: 0.5 value: 1
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: 0 value: -3
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
propertyPath: m_LocalRotation.w propertyPath: m_LocalRotation.w
value: 0.7071068 value: 1
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
propertyPath: m_LocalRotation.x propertyPath: m_LocalRotation.x
@@ -586,7 +466,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
propertyPath: m_LocalRotation.y propertyPath: m_LocalRotation.y
value: 0.7071068 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
propertyPath: m_LocalRotation.z propertyPath: m_LocalRotation.z
@@ -598,7 +478,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
propertyPath: m_LocalEulerAnglesHint.y propertyPath: m_LocalEulerAnglesHint.y
value: 90 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - target: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
@@ -823,18 +703,6 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: -927199367670048503, guid: 82a2914d8f86c62488456950c8330e38, type: 3} - targetCorrespondingSourceObject: {fileID: -927199367670048503, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 3047743202467582630} addedObject: {fileID: 3047743202467582630}
- targetCorrespondingSourceObject: {fileID: -927199367670048503, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
insertIndex: -1
addedObject: {fileID: 2185157095970857719}
- targetCorrespondingSourceObject: {fileID: -927199367670048503, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
insertIndex: -1
addedObject: {fileID: 2343678334924127783}
- targetCorrespondingSourceObject: {fileID: -927199367670048503, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
insertIndex: -1
addedObject: {fileID: 4313489822343726709}
- targetCorrespondingSourceObject: {fileID: -927199367670048503, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
insertIndex: -1
addedObject: {fileID: 2936940972087595065}
m_SourcePrefab: {fileID: 100100000, guid: 82a2914d8f86c62488456950c8330e38, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 82a2914d8f86c62488456950c8330e38, type: 3}
--- !u!95 &144211389547005650 stripped --- !u!95 &144211389547005650 stripped
Animator: Animator:
@@ -871,7 +739,7 @@ Rigidbody:
m_UseGravity: 1 m_UseGravity: 1
m_IsKinematic: 0 m_IsKinematic: 0
m_Interpolate: 0 m_Interpolate: 0
m_Constraints: 112 m_Constraints: 80
m_CollisionDetection: 0 m_CollisionDetection: 0
--- !u!136 &3998354022717239476 --- !u!136 &3998354022717239476
CapsuleCollider: CapsuleCollider:
@@ -892,10 +760,10 @@ CapsuleCollider:
m_ProvidesContacts: 0 m_ProvidesContacts: 0
m_Enabled: 1 m_Enabled: 1
serializedVersion: 2 serializedVersion: 2
m_Radius: 0.26813045 m_Radius: 0.5
m_Height: 1.2649516 m_Height: 1.7
m_Direction: 1 m_Direction: 1
m_Center: {x: -0.029453307, y: 0.63073164, z: 0} m_Center: {x: 0, y: 0.8, z: 0}
--- !u!65 &1215790106131549770 --- !u!65 &1215790106131549770
BoxCollider: BoxCollider:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -915,8 +783,8 @@ BoxCollider:
m_ProvidesContacts: 0 m_ProvidesContacts: 0
m_Enabled: 1 m_Enabled: 1
serializedVersion: 3 serializedVersion: 3
m_Size: {x: 0.6, y: 0.4560688, z: 0.3978837} m_Size: {x: 0.6, y: 0.5, z: 0.6}
m_Center: {x: 0, y: 0.22196558, z: 0.101058155} m_Center: {x: 0, y: 0.2, z: 0}
--- !u!114 &3047743202467582630 --- !u!114 &3047743202467582630
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -929,71 +797,18 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 1d8f349ed7dc088a4a6e2690ee87094a, type: 3} m_Script: {fileID: 11500000, guid: 1d8f349ed7dc088a4a6e2690ee87094a, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement
InputActions: {fileID: -944628639613478452, guid: b319948d6750538498f201a24c05aef3, type: 3} InputActions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
--- !u!114 &2185157095970857719
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6544026473454475707}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6c1ddada0161b8c4783806ef6775348a, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerLook
CameraTransform: {fileID: 8258725777112540271} CameraTransform: {fileID: 8258725777112540271}
Head: {fileID: 8079687630579216978}
RotateSpeed: 5
MaxLookAngle: 90 MaxLookAngle: 90
--- !u!114 &2343678334924127783 WalkSpeed: 5
MonoBehaviour: RotateSpeed: 5
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6544026473454475707}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7f91586e8c2742341aa8f6925e597bf1, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement
WalkSpeed: 7.5
rotationSpeed: 10
animator: {fileID: 144211389547005650}
cameraTransform: {fileID: 8258725777112540271}
--- !u!114 &4313489822343726709
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6544026473454475707}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2da51dfecccc45b469912e3bb3f1953b, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerHeadController
Head: {fileID: 8079687630579216978}
CameraTransform: {fileID: 8258725777112540271}
ThrowForce: 10
PickupDistance: 3
isHoldingHead: 1
--- !u!114 &2936940972087595065
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6544026473454475707}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9c524d12bc1668e42a00cbd8050107f6, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerJump
JumpForce: 5 JumpForce: 5
GroundCheck: {fileID: 5774252285975285596} GroundCheck: {fileID: 5774252285975285596}
GroundCheckRadius: 0.2 GroundCheckRadius: 0.2
animator: {fileID: 144211389547005650}
Head: {fileID: 8079687630579216978}
ThrowForce: 10
PickupDistance: 3
--- !u!4 &7821156882341915560 stripped --- !u!4 &7821156882341915560 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3} m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: 82a2914d8f86c62488456950c8330e38, type: 3}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 89fa2729f0a36ba4986391b4274c4756 guid: f58da68f9b7cd4f1489b7b0e17c841dc
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@@ -0,0 +1,640 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7358282048986567246
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 7620239766451692460, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
m_PrefabInstance: {fileID: 6073171541110751723}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6730954181803855235}
- component: {fileID: 412118018221697532}
- component: {fileID: 7340938401879862527}
- component: {fileID: 7383390462390725690}
- component: {fileID: 6002584575896669468}
- component: {fileID: 4193616611914722518}
m_Layer: 0
m_Name: TileDoorFrame
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6730954181803855235
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
m_PrefabInstance: {fileID: 6073171541110751723}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7358282048986567246}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
m_LocalPosition: {x: -15.4, y: 5, z: -20.000002}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
--- !u!114 &412118018221697532
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 749139187830528030, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
m_PrefabInstance: {fileID: 6073171541110751723}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7358282048986567246}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ProBuilder::UnityEngine.ProBuilder.ProBuilderMesh
m_MeshFormatVersion: 2
m_Faces:
- m_Indexes: 000000000100000002000000010000000300000002000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 040000000500000006000000050000000700000006000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 08000000090000000a000000090000000b0000000a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 100000001100000012000000110000001300000012000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 140000001500000016000000150000001700000016000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 18000000190000001a000000190000001b0000001a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 1c0000001d0000001e0000001d0000001f0000001e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 200000002100000022000000210000002300000022000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 240000002500000026000000250000002700000026000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 28000000290000002a000000290000002b0000002a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 2c0000002d0000002e0000002d0000002f0000002e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 300000003100000032000000310000003300000032000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
m_SharedVertices:
- m_Vertices: 0000000008000000
- m_Vertices: 01000000
- m_Vertices: 0200000009000000100000002900000032000000
- m_Vertices: 0300000030000000
- m_Vertices: 040000002d000000
- m_Vertices: 05000000
- m_Vertices: 060000000d00000011000000280000002f000000
- m_Vertices: 070000000f000000
- m_Vertices: 0a000000
- m_Vertices: 0b00000012000000
- m_Vertices: 0c00000013000000
- m_Vertices: 0e000000
- m_Vertices: 140000001c000000
- m_Vertices: 150000001e000000240000002b00000033000000
- m_Vertices: 16000000
- m_Vertices: 1700000031000000
- m_Vertices: 180000002c000000
- m_Vertices: 1900000022000000260000002a0000002e000000
- m_Vertices: 1a000000
- m_Vertices: 1b00000023000000
- m_Vertices: 1d000000
- m_Vertices: 1f00000025000000
- m_Vertices: 2000000027000000
- m_Vertices: 21000000
m_SharedTextures: []
m_Positions:
- {x: -5, y: 3, z: 0.05}
- {x: -5, y: -5, z: 0.05}
- {x: -3, y: 3, z: 0.05}
- {x: -3, y: -5, z: 0.05}
- {x: 3, y: -5, z: 0.05}
- {x: 5, y: -5, z: 0.05}
- {x: 3, y: 3, z: 0.05}
- {x: 5, y: 3, z: 0.05}
- {x: -5, y: 3, z: 0.05}
- {x: -3, y: 3, z: 0.05}
- {x: -5, y: 5, z: 0.05}
- {x: -3, y: 5, z: 0.05}
- {x: 3, y: 5, z: 0.05}
- {x: 3, y: 3, z: 0.05}
- {x: 5, y: 5, z: 0.05}
- {x: 5, y: 3, z: 0.05}
- {x: -3, y: 3, z: 0.05}
- {x: 3, y: 3, z: 0.05}
- {x: -3, y: 5, z: 0.05}
- {x: 3, y: 5, z: 0.05}
- {x: -5, y: 3, z: -0.05}
- {x: -3, y: 3, z: -0.05}
- {x: -5, y: -5, z: -0.05}
- {x: -3, y: -5, z: -0.05}
- {x: 3, y: -5, z: -0.05}
- {x: 3, y: 3, z: -0.05}
- {x: 5, y: -5, z: -0.05}
- {x: 5, y: 3, z: -0.05}
- {x: -5, y: 3, z: -0.05}
- {x: -5, y: 5, z: -0.05}
- {x: -3, y: 3, z: -0.05}
- {x: -3, y: 5, z: -0.05}
- {x: 3, y: 5, z: -0.05}
- {x: 5, y: 5, z: -0.05}
- {x: 3, y: 3, z: -0.05}
- {x: 5, y: 3, z: -0.05}
- {x: -3, y: 3, z: -0.05}
- {x: -3, y: 5, z: -0.05}
- {x: 3, y: 3, z: -0.05}
- {x: 3, y: 5, z: -0.05}
- {x: 3, y: 3, z: 0.05}
- {x: -3, y: 3, z: 0.05}
- {x: 3, y: 3, z: -0.05}
- {x: -3, y: 3, z: -0.05}
- {x: 3, y: -5, z: -0.05}
- {x: 3, y: -5, z: 0.05}
- {x: 3, y: 3, z: -0.05}
- {x: 3, y: 3, z: 0.05}
- {x: -3, y: -5, z: 0.05}
- {x: -3, y: -5, z: -0.05}
- {x: -3, y: 3, z: 0.05}
- {x: -3, y: 3, z: -0.05}
m_Textures0:
- {x: 5, y: 3}
- {x: 5, y: -5}
- {x: 3, y: 3}
- {x: 3, y: -5}
- {x: -3, y: -5}
- {x: -5, y: -5}
- {x: -3, y: 3}
- {x: -5, y: 3}
- {x: 5, y: 3}
- {x: 3, y: 3}
- {x: 5, y: 5}
- {x: 3, y: 5}
- {x: -3, y: 5}
- {x: -3, y: 3}
- {x: -5, y: 5}
- {x: -5, y: 3}
- {x: 3, y: 3}
- {x: -3, y: 3}
- {x: 3, y: 5}
- {x: -3, y: 5}
- {x: -5, y: 3}
- {x: -3, y: 3}
- {x: -5, y: -5}
- {x: -3, y: -5}
- {x: 3, y: -5}
- {x: 3, y: 3}
- {x: 5, y: -5}
- {x: 5, y: 3}
- {x: -5, y: 3}
- {x: -5, y: 5}
- {x: -3, y: 3}
- {x: -3, y: 5}
- {x: 3, y: 5}
- {x: 5, y: 5}
- {x: 3, y: 3}
- {x: 5, y: 3}
- {x: -3, y: 3}
- {x: -3, y: 5}
- {x: 3, y: 3}
- {x: 3, y: 5}
- {x: -3, y: 0.05}
- {x: 3, y: 0.05}
- {x: -3, y: -0.05}
- {x: 3, y: -0.05}
- {x: 0.05, y: -5}
- {x: -0.05, y: -5}
- {x: 0.05, y: 3}
- {x: -0.05, y: 3}
- {x: 0.05, y: -5}
- {x: -0.05, y: -5}
- {x: 0.05, y: 3}
- {x: -0.05, y: 3}
m_Textures2: []
m_Textures3: []
m_Tangents:
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
m_Colors: []
m_UnwrapParameters:
m_HardAngle: 88
m_PackMargin: 20
m_AngleError: 8
m_AreaError: 15
m_PreserveMeshAssetOnDestroy: 0
assetGuid:
m_Mesh: {fileID: 0}
m_VersionIndex: 30
m_IsSelectable: 1
m_SelectedFaces:
m_SelectedEdges: []
m_SelectedVertices:
--- !u!114 &7340938401879862527
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 7655303172860173597, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
m_PrefabInstance: {fileID: 6073171541110751723}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7358282048986567246}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1ca002da428252441b92f28d83c8a65f, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ProBuilder::UnityEngine.ProBuilder.Shapes.ProBuilderShape
m_Shape:
rid: 1398870395349368919
m_ShapeRotation: {x: 0, y: 0, z: 0, w: 1}
m_UnmodifiedMeshVersion: 21
m_Size: {x: 10, y: 10, z: 0.1}
m_LocalCenter: {x: 0, y: 0, z: 0}
references:
version: 2
RefIds:
- rid: 1398870395349368919
type: {class: Door, ns: UnityEngine.ProBuilder.Shapes, asm: Unity.ProBuilder}
data:
m_DoorHeight: 2
m_LegWidth: 2
--- !u!23 &7383390462390725690
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 7613981380323352024, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
m_PrefabInstance: {fileID: 6073171541110751723}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7358282048986567246}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d6cbb9d7d974ade448bd811a9cec399d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &6002584575896669468
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 6669883714582723838, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
m_PrefabInstance: {fileID: 6073171541110751723}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7358282048986567246}
m_Mesh: {fileID: 0}
--- !u!64 &4193616611914722518
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 3886572594434432308, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
m_PrefabInstance: {fileID: 6073171541110751723}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7358282048986567246}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 0}
--- !u!1001 &6073171541110751723
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 749139187830528030, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_VersionIndex
value: 27
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalPosition.x
value: -15.4
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalPosition.y
value: 5
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalPosition.z
value: -20.000002
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalRotation.w
value: 0.7071068
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalRotation.y
value: 0.7071068
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 90
objectReference: {fileID: 0}
- target: {fileID: 5959526825738353761, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7620239766451692460, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}
propertyPath: m_Name
value: TileDoorFrame
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e0e33d133c87d49df82c73bbf194cba7, type: 3}

View File

@@ -1,6 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 5954e88297a9d80418e76e95e2864a5f guid: 5f58ef95766204095a310e56ba6b80ca
DefaultImporter: PrefabImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:

View File

@@ -0,0 +1,358 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5840335221072158843
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 495342671324507826}
- component: {fileID: 5158937175993662519}
- component: {fileID: 4175848428221556727}
- component: {fileID: 6830455346839416856}
- component: {fileID: 9192243752437355431}
- component: {fileID: 838734381634944549}
m_Layer: 0
m_Name: TileFloor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &495342671324507826
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5840335221072158843}
serializedVersion: 2
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &5158937175993662519
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5840335221072158843}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ProBuilder::UnityEngine.ProBuilder.ProBuilderMesh
m_MeshFormatVersion: 2
m_Faces:
- m_Indexes: 000000000100000002000000010000000300000002000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 040000000500000006000000050000000700000006000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 08000000090000000a000000090000000b0000000a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 100000001100000012000000110000001300000012000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 140000001500000016000000150000001700000016000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
m_SharedVertices:
- m_Vertices: 000000000d00000016000000
- m_Vertices: 010000000400000017000000
- m_Vertices: 020000000f00000010000000
- m_Vertices: 030000000600000011000000
- m_Vertices: 050000000800000015000000
- m_Vertices: 070000000a00000013000000
- m_Vertices: 090000000c00000014000000
- m_Vertices: 0b0000000e00000012000000
m_SharedTextures: []
m_Positions:
- {x: -5, y: -0.05, z: 5}
- {x: 5, y: -0.05, z: 5}
- {x: -5, y: 0.05, z: 5}
- {x: 5, y: 0.05, z: 5}
- {x: 5, y: -0.05, z: 5}
- {x: 5, y: -0.05, z: -5}
- {x: 5, y: 0.05, z: 5}
- {x: 5, y: 0.05, z: -5}
- {x: 5, y: -0.05, z: -5}
- {x: -5, y: -0.05, z: -5}
- {x: 5, y: 0.05, z: -5}
- {x: -5, y: 0.05, z: -5}
- {x: -5, y: -0.05, z: -5}
- {x: -5, y: -0.05, z: 5}
- {x: -5, y: 0.05, z: -5}
- {x: -5, y: 0.05, z: 5}
- {x: -5, y: 0.05, z: 5}
- {x: 5, y: 0.05, z: 5}
- {x: -5, y: 0.05, z: -5}
- {x: 5, y: 0.05, z: -5}
- {x: -5, y: -0.05, z: -5}
- {x: 5, y: -0.05, z: -5}
- {x: -5, y: -0.05, z: 5}
- {x: 5, y: -0.05, z: 5}
m_Textures0:
- {x: 10, y: 0.9}
- {x: 0, y: 0.9}
- {x: 10, y: 1}
- {x: 0, y: 1}
- {x: 10, y: 0.9}
- {x: 0, y: 0.9}
- {x: 10, y: 1}
- {x: 0, y: 1}
- {x: 10, y: 0.9}
- {x: 0, y: 0.9}
- {x: 10, y: 1}
- {x: 0, y: 1}
- {x: 10, y: 0.9}
- {x: 0, y: 0.9}
- {x: 10, y: 1}
- {x: 0, y: 1}
- {x: 0, y: 1}
- {x: 10, y: 1}
- {x: 0, y: -9}
- {x: 10, y: -9}
- {x: 10, y: -9}
- {x: 0, y: -9}
- {x: 10, y: 1}
- {x: 0, y: 1}
m_Textures2: []
m_Textures3: []
m_Tangents:
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
m_Colors: []
m_UnwrapParameters:
m_HardAngle: 88
m_PackMargin: 20
m_AngleError: 8
m_AreaError: 15
m_PreserveMeshAssetOnDestroy: 0
assetGuid:
m_Mesh: {fileID: 0}
m_VersionIndex: 23
m_IsSelectable: 1
m_SelectedFaces:
m_SelectedEdges: []
m_SelectedVertices:
--- !u!114 &4175848428221556727
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5840335221072158843}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1ca002da428252441b92f28d83c8a65f, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ProBuilder::UnityEngine.ProBuilder.Shapes.ProBuilderShape
m_Shape:
rid: 1398870395349368895
m_ShapeRotation: {x: 0, y: 0, z: 0, w: 1}
m_UnmodifiedMeshVersion: 23
m_Size: {x: 10, y: 0.1, z: 10}
m_LocalCenter: {x: 0, y: 0, z: 0}
references:
version: 2
RefIds:
- rid: 1398870395349368895
type: {class: Cube, ns: UnityEngine.ProBuilder.Shapes, asm: Unity.ProBuilder}
data:
--- !u!23 &6830455346839416856
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5840335221072158843}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a7ae6b34c1352bd419c92ad25692fcb1, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &9192243752437355431
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5840335221072158843}
m_Mesh: {fileID: 0}
--- !u!64 &838734381634944549
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5840335221072158843}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 0}

View File

@@ -1,6 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 1c541f26362738d45ad369a0458b7559 guid: 6c473a12ab25142ec90b284ea34213f2
TextScriptImporter: PrefabImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:

View File

@@ -0,0 +1,358 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7423121966632867460
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5676916603420269486}
- component: {fileID: 8715567582214355493}
- component: {fileID: 8404390266503327226}
- component: {fileID: 2553083886184869086}
- component: {fileID: 7112311031510233378}
- component: {fileID: 395850085018812323}
m_Layer: 0
m_Name: TileGlass
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5676916603420269486
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7423121966632867460}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
m_LocalPosition: {x: -20.03938, y: 5, z: -15.141106}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
--- !u!114 &8715567582214355493
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7423121966632867460}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ProBuilder::UnityEngine.ProBuilder.ProBuilderMesh
m_MeshFormatVersion: 2
m_Faces:
- m_Indexes: 000000000100000002000000010000000300000002000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 040000000500000006000000050000000700000006000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 08000000090000000a000000090000000b0000000a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 100000001100000012000000110000001300000012000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 140000001500000016000000150000001700000016000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
m_SharedVertices:
- m_Vertices: 000000000d00000016000000
- m_Vertices: 010000000400000017000000
- m_Vertices: 020000000f00000010000000
- m_Vertices: 030000000600000011000000
- m_Vertices: 050000000800000015000000
- m_Vertices: 070000000a00000013000000
- m_Vertices: 090000000c00000014000000
- m_Vertices: 0b0000000e00000012000000
m_SharedTextures: []
m_Positions:
- {x: -0.05, y: -5, z: 5}
- {x: 0.05, y: -5, z: 5}
- {x: -0.05, y: 5, z: 5}
- {x: 0.05, y: 5, z: 5}
- {x: 0.05, y: -5, z: 5}
- {x: 0.05, y: -5, z: -5}
- {x: 0.05, y: 5, z: 5}
- {x: 0.05, y: 5, z: -5}
- {x: 0.05, y: -5, z: -5}
- {x: -0.05, y: -5, z: -5}
- {x: 0.05, y: 5, z: -5}
- {x: -0.05, y: 5, z: -5}
- {x: -0.05, y: -5, z: -5}
- {x: -0.05, y: -5, z: 5}
- {x: -0.05, y: 5, z: -5}
- {x: -0.05, y: 5, z: 5}
- {x: -0.05, y: 5, z: 5}
- {x: 0.05, y: 5, z: 5}
- {x: -0.05, y: 5, z: -5}
- {x: 0.05, y: 5, z: -5}
- {x: -0.05, y: -5, z: -5}
- {x: 0.05, y: -5, z: -5}
- {x: -0.05, y: -5, z: 5}
- {x: 0.05, y: -5, z: 5}
m_Textures0:
- {x: 0.1, y: -9}
- {x: 0, y: -9}
- {x: 0.1, y: 1}
- {x: 0, y: 1}
- {x: 10, y: -9}
- {x: 0, y: -9}
- {x: 10, y: 1}
- {x: 0, y: 1}
- {x: 0.1, y: -9}
- {x: 0, y: -9}
- {x: 0.1, y: 1}
- {x: 0, y: 1}
- {x: 10, y: -9}
- {x: 0, y: -9}
- {x: 10, y: 1}
- {x: 0, y: 1}
- {x: 0, y: 1}
- {x: 0.1, y: 1}
- {x: 0, y: -9}
- {x: 0.1, y: -9}
- {x: 0.1, y: -9}
- {x: 0, y: -9}
- {x: 0.1, y: 1}
- {x: 0, y: 1}
m_Textures2: []
m_Textures3: []
m_Tangents:
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
m_Colors: []
m_UnwrapParameters:
m_HardAngle: 88
m_PackMargin: 20
m_AngleError: 8
m_AreaError: 15
m_PreserveMeshAssetOnDestroy: 0
assetGuid:
m_Mesh: {fileID: 0}
m_VersionIndex: 23
m_IsSelectable: 1
m_SelectedFaces:
m_SelectedEdges: []
m_SelectedVertices:
--- !u!114 &8404390266503327226
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7423121966632867460}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1ca002da428252441b92f28d83c8a65f, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ProBuilder::UnityEngine.ProBuilder.Shapes.ProBuilderShape
m_Shape:
rid: 1398870395349368904
m_ShapeRotation: {x: 0, y: 0, z: 0, w: 1}
m_UnmodifiedMeshVersion: 23
m_Size: {x: 0.1, y: 10, z: 10}
m_LocalCenter: {x: 0, y: 0, z: 0}
references:
version: 2
RefIds:
- rid: 1398870395349368904
type: {class: Cube, ns: UnityEngine.ProBuilder.Shapes, asm: Unity.ProBuilder}
data:
--- !u!23 &2553083886184869086
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7423121966632867460}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: e2ff028127aed49898d5db254c679ffa, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &7112311031510233378
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7423121966632867460}
m_Mesh: {fileID: 0}
--- !u!64 &395850085018812323
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7423121966632867460}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 0}

View File

@@ -1,6 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 622345dc4e7719245818bc32d5dfa601 guid: 2d24a72aa97834b4a9baff9020719d61
TextScriptImporter: PrefabImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:

View File

@@ -0,0 +1,358 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2843516741972607348
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4751072299030562733}
- component: {fileID: 8868111042538970869}
- component: {fileID: 4579864586410663392}
- component: {fileID: 8458375974803422925}
- component: {fileID: 3605484921720718291}
- component: {fileID: 7401385164455639002}
m_Layer: 0
m_Name: TileWall
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4751072299030562733
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2843516741972607348}
serializedVersion: 2
m_LocalRotation: {x: 0.000000059604638, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -15, y: 5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8868111042538970869
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2843516741972607348}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ProBuilder::UnityEngine.ProBuilder.ProBuilderMesh
m_MeshFormatVersion: 2
m_Faces:
- m_Indexes: 000000000100000002000000010000000300000002000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 040000000500000006000000050000000700000006000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 08000000090000000a000000090000000b0000000a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 100000001100000012000000110000001300000012000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 140000001500000016000000150000001700000016000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 0
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
m_SharedVertices:
- m_Vertices: 000000000d00000016000000
- m_Vertices: 010000000400000017000000
- m_Vertices: 020000000f00000010000000
- m_Vertices: 030000000600000011000000
- m_Vertices: 050000000800000015000000
- m_Vertices: 070000000a00000013000000
- m_Vertices: 090000000c00000014000000
- m_Vertices: 0b0000000e00000012000000
m_SharedTextures: []
m_Positions:
- {x: -0.05, y: -5, z: 5}
- {x: 0.05, y: -5, z: 5}
- {x: -0.05, y: 5, z: 5}
- {x: 0.05, y: 5, z: 5}
- {x: 0.05, y: -5, z: 5}
- {x: 0.05, y: -5, z: -5}
- {x: 0.05, y: 5, z: 5}
- {x: 0.05, y: 5, z: -5}
- {x: 0.05, y: -5, z: -5}
- {x: -0.05, y: -5, z: -5}
- {x: 0.05, y: 5, z: -5}
- {x: -0.05, y: 5, z: -5}
- {x: -0.05, y: -5, z: -5}
- {x: -0.05, y: -5, z: 5}
- {x: -0.05, y: 5, z: -5}
- {x: -0.05, y: 5, z: 5}
- {x: -0.05, y: 5, z: 5}
- {x: 0.05, y: 5, z: 5}
- {x: -0.05, y: 5, z: -5}
- {x: 0.05, y: 5, z: -5}
- {x: -0.05, y: -5, z: -5}
- {x: 0.05, y: -5, z: -5}
- {x: -0.05, y: -5, z: 5}
- {x: 0.05, y: -5, z: 5}
m_Textures0:
- {x: 0.1, y: -9}
- {x: 0, y: -9}
- {x: 0.1, y: 1}
- {x: 0, y: 1}
- {x: 10, y: -9}
- {x: 0, y: -9}
- {x: 10, y: 1}
- {x: 0, y: 1}
- {x: 0.1, y: -9}
- {x: 0, y: -9}
- {x: 0.1, y: 1}
- {x: 0, y: 1}
- {x: 10, y: -9}
- {x: 0, y: -9}
- {x: 10, y: 1}
- {x: 0, y: 1}
- {x: 0, y: 1}
- {x: 0.1, y: 1}
- {x: 0, y: -9}
- {x: 0.1, y: -9}
- {x: 0.1, y: -9}
- {x: 0, y: -9}
- {x: 0.1, y: 1}
- {x: 0, y: 1}
m_Textures2: []
m_Textures3: []
m_Tangents:
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
m_Colors: []
m_UnwrapParameters:
m_HardAngle: 88
m_PackMargin: 20
m_AngleError: 8
m_AreaError: 15
m_PreserveMeshAssetOnDestroy: 0
assetGuid:
m_Mesh: {fileID: 0}
m_VersionIndex: 23
m_IsSelectable: 1
m_SelectedFaces:
m_SelectedEdges: []
m_SelectedVertices:
--- !u!114 &4579864586410663392
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2843516741972607348}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1ca002da428252441b92f28d83c8a65f, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ProBuilder::UnityEngine.ProBuilder.Shapes.ProBuilderShape
m_Shape:
rid: 1398870395349368900
m_ShapeRotation: {x: 0, y: 0, z: 0, w: 1}
m_UnmodifiedMeshVersion: 23
m_Size: {x: 0.1, y: 10, z: 10}
m_LocalCenter: {x: 0, y: 0, z: 0}
references:
version: 2
RefIds:
- rid: 1398870395349368900
type: {class: Cube, ns: UnityEngine.ProBuilder.Shapes, asm: Unity.ProBuilder}
data:
--- !u!23 &8458375974803422925
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2843516741972607348}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d6cbb9d7d974ade448bd811a9cec399d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &3605484921720718291
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2843516741972607348}
m_Mesh: {fileID: 0}
--- !u!64 &7401385164455639002
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2843516741972607348}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4175a5602e4244d988c11bca2debea28
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -493,6 +493,17 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement m_EditorClassIdentifier: Assembly-CSharp::PlayerMovement
InputActions: {fileID: 0} InputActions: {fileID: 0}
CameraTransform: {fileID: 0}
MaxLookAngle: 90
WalkSpeed: 10
RotateSpeed: 5
JumpForce: 5
GroundCheck: {fileID: 0}
GroundCheckRadius: 0.2
animator: {fileID: 0}
Head: {fileID: 0}
ThrowForce: 10
PickupDistance: 3
--- !u!114 &43211589 stripped --- !u!114 &43211589 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6921400718617286756, guid: 2f9e8e4a19f939f43a84c1c7d0a0e185, type: 3} m_CorrespondingSourceObject: {fileID: 6921400718617286756, guid: 2f9e8e4a19f939f43a84c1c7d0a0e185, type: 3}
@@ -925,9 +936,6 @@ PrefabInstance:
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 4446703388580953019, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
insertIndex: -1
addedObject: {fileID: 762199654}
- targetCorrespondingSourceObject: {fileID: 1446289441119343760, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3} - targetCorrespondingSourceObject: {fileID: 1446289441119343760, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 36927862} addedObject: {fileID: 36927862}
@@ -37010,38 +37018,6 @@ Mesh:
- serializedVersion: 1 - serializedVersion: 1
m_IndexStart: 0 m_IndexStart: 0
m_IndexCount: 0 m_IndexCount: 0
--- !u!1 &762199651 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4446703388580953019, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
m_PrefabInstance: {fileID: 99539971}
m_PrefabAsset: {fileID: 0}
--- !u!54 &762199654
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 762199651}
serializedVersion: 5
m_Mass: 1
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 0
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!1 &818197916 --- !u!1 &818197916
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -37838,7 +37814,7 @@ GameObject:
- component: {fileID: 1173887971} - component: {fileID: 1173887971}
- component: {fileID: 1173887970} - component: {fileID: 1173887970}
- component: {fileID: 1173887969} - component: {fileID: 1173887969}
m_Layer: 3 m_Layer: 0
m_Name: Plate m_Name: Plate
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@@ -38262,7 +38238,7 @@ GameObject:
- component: {fileID: 1225232290} - component: {fileID: 1225232290}
- component: {fileID: 1225232289} - component: {fileID: 1225232289}
- component: {fileID: 1225232288} - component: {fileID: 1225232288}
m_Layer: 3 m_Layer: 0
m_Name: Floor m_Name: Floor
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@@ -72897,7 +72873,7 @@ MeshCollider:
serializedVersion: 5 serializedVersion: 5
m_Convex: 0 m_Convex: 0
m_CookingOptions: 30 m_CookingOptions: 30
m_Mesh: {fileID: 1925451917} m_Mesh: {fileID: 163208307}
--- !u!33 &1434828806 --- !u!33 &1434828806
MeshFilter: MeshFilter:
m_ObjectHideFlags: 10 m_ObjectHideFlags: 10
@@ -107225,7 +107201,7 @@ GameObject:
- component: {fileID: 1524676968} - component: {fileID: 1524676968}
- component: {fileID: 1524676967} - component: {fileID: 1524676967}
- component: {fileID: 1524676966} - component: {fileID: 1524676966}
m_Layer: 3 m_Layer: 0
m_Name: Plate m_Name: Plate
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@@ -109765,7 +109741,7 @@ MeshCollider:
serializedVersion: 5 serializedVersion: 5
m_Convex: 0 m_Convex: 0
m_CookingOptions: 30 m_CookingOptions: 30
m_Mesh: {fileID: 163208307} m_Mesh: {fileID: 1076043271}
--- !u!33 &2017727403 --- !u!33 &2017727403
MeshFilter: MeshFilter:
m_ObjectHideFlags: 10 m_ObjectHideFlags: 10

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 45ca2846d675c9a438e49991db89e437 guid: 002c7c1365eb84470a077e39ac50a31c
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:

View File

@@ -246,11 +246,6 @@ MonoBehaviour:
m_ShadowLayerMask: 1 m_ShadowLayerMask: 1
m_RenderingLayers: 1 m_RenderingLayers: 1
m_ShadowRenderingLayers: 1 m_ShadowRenderingLayers: 1
--- !u!4 &573532104 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8258725777112540271, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
m_PrefabInstance: {fileID: 762024470}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &762024470 --- !u!1001 &762024470
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -259,38 +254,10 @@ PrefabInstance:
serializedVersion: 3 serializedVersion: 3
m_TransformParent: {fileID: 0} m_TransformParent: {fileID: 0}
m_Modifications: m_Modifications:
- target: {fileID: 2343678334924127783, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3} - target: {fileID: 3047743202467582630, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: animator propertyPath: InputActions
value: value:
objectReference: {fileID: 2044346512} objectReference: {fileID: -944628639613478452, guid: b319948d6750538498f201a24c05aef3, type: 3}
- target: {fileID: 2343678334924127783, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: cameraTransform
value:
objectReference: {fileID: 573532104}
- target: {fileID: 3702287221525863218, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Constraints
value: 112
objectReference: {fileID: 0}
- target: {fileID: 4313489822343726709, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: isHoldingHead
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6096268390463610501, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Size.y
value: 0.5844476
objectReference: {fileID: 0}
- target: {fileID: 6096268390463610501, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Size.z
value: 0.75984764
objectReference: {fileID: 0}
- target: {fileID: 6096268390463610501, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Center.y
value: 1.2922238
objectReference: {fileID: 0}
- target: {fileID: 6096268390463610501, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Center.z
value: 0.060781002
objectReference: {fileID: 0}
- target: {fileID: 6544026473454475707, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3} - target: {fileID: 6544026473454475707, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Name propertyPath: m_Name
value: Player value: Player
@@ -335,13 +302,8 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8258725777112540271, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalPosition.z
value: 0.3157
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: m_RemovedGameObjects: []
- {fileID: 472912051752212496, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3} m_SourcePrefab: {fileID: 100100000, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
@@ -613,17 +575,12 @@ Transform:
m_GameObject: {fileID: 1430443543} m_GameObject: {fileID: 1430443543}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.3763, y: 0, z: 4.34} m_LocalPosition: {x: 0.3763, y: 3.05, z: 10}
m_LocalScale: {x: 12.810944, y: 5.8166175, z: 1} m_LocalScale: {x: 12.810944, y: 5.8166175, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &2044346512 stripped
Animator:
m_CorrespondingSourceObject: {fileID: 144211389547005650, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
m_PrefabInstance: {fileID: 762024470}
m_PrefabAsset: {fileID: 0}
--- !u!1660057539 &9223372036854775807 --- !u!1660057539 &9223372036854775807
SceneRoots: SceneRoots:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: f9ccf03e1da5f4a4683903447659b3d7 guid: f7ddf8204ae4327bb84e928c9ae561d4
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 13400000 mainObjectFileID: 13400000

View File

@@ -1,15 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!134 &13400000
PhysicsMaterial:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: No_Friction
serializedVersion: 2
m_DynamicFriction: 0
m_StaticFriction: 0
m_Bounciness: 0
m_FrictionCombine: 0
m_BounceCombine: 0

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: f7ddf8204ae4327bb84e928c9ae561d4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 13400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: eac7d60bc6ab8b4418e2bd8ff27ded01
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,713 +0,0 @@
%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: 10
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_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
m_BakeOnSceneLoad: 0
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_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: 20201, guid: 0000000000000000f000000000000000, type: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
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
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &94026883
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 94026887}
- component: {fileID: 94026886}
- component: {fileID: 94026885}
- component: {fileID: 94026884}
m_Layer: 0
m_Name: Cube (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!65 &94026884
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 94026883}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &94026885
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 94026883}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &94026886
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 94026883}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &94026887
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 94026883}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.3763, y: -2.27, z: -0.22}
m_LocalScale: {x: 1.2236117, y: 5.8166175, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &410087039
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 410087041}
- component: {fileID: 410087040}
- component: {fileID: 410087042}
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 &410087040
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
m_Enabled: 1
serializedVersion: 12
m_Type: 1
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 2
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize2D: {x: 10, y: 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: 5000
m_UseColorTemperature: 1
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ForceVisible: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
m_LightUnit: 1
m_LuxAtDistance: 1
m_EnableSpotReflector: 1
--- !u!4 &410087041
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
serializedVersion: 2
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_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!114 &410087042
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_CustomShadowLayers: 0
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 1
m_RenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_ShadowRenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_Version: 4
m_LightLayerMask: 1
m_ShadowLayerMask: 1
m_RenderingLayers: 1
m_ShadowRenderingLayers: 1
--- !u!1001 &762024470
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1215790106131549770, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Size.z
value: 0.3978837
objectReference: {fileID: 0}
- target: {fileID: 1215790106131549770, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Enabled
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1215790106131549770, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Center.z
value: 0.101058155
objectReference: {fileID: 0}
- target: {fileID: 6544026473454475707, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_Name
value: Player
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalPosition.y
value: 1.48
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalPosition.z
value: -6.57
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7821156882341915560, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d7417f9daec269d43bdfd5a35f2da89a, type: 3}
--- !u!1 &832575517
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 832575519}
- component: {fileID: 832575518}
m_Layer: 0
m_Name: Global Volume
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &832575518
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832575517}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IsGlobal: 1
priority: 0
blendDistance: 0
weight: 1
sharedProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
--- !u!4 &832575519
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832575517}
serializedVersion: 2
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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1118537122
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1118537126}
- component: {fileID: 1118537125}
- component: {fileID: 1118537124}
- component: {fileID: 1118537123}
m_Layer: 3
m_Name: Plane
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!64 &1118537123
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1118537122}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1118537124
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1118537122}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1118537125
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1118537122}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1118537126
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1118537122}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 15, y: 1, z: 15}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1430443543
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1430443547}
- component: {fileID: 1430443546}
- component: {fileID: 1430443545}
- component: {fileID: 1430443544}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!65 &1430443544
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1430443543}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &1430443545
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1430443543}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1430443546
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1430443543}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1430443547
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1430443543}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.3763, y: 0, z: 4.34}
m_LocalScale: {x: 12.810944, y: 5.8166175, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 410087041}
- {fileID: 832575519}
- {fileID: 762024470}
- {fileID: 1430443547}
- {fileID: 94026887}
- {fileID: 1118537126}

View File

@@ -1,304 +0,0 @@
List of new features, bug fixes and improvements
# Version 1.4.19
* AGENTS.md support for agentic AI, copilot-instructions.md support is deprecated
* Visual Studio 2026 compatibility
* Bugfix for completions and inline visuals for sorting layer related members
* Can unspecify max_tokens,temperature and top_p in the gpt request options
* Gpt libraries and models are updated
# Version 1.4.18
* New code completions: Material/Shader
* New inline visuals: Material/Shader
* Bugfix for inline text visuals when document is edited
* Bugfix for completions for constructor method arguments
* Hotfix for InputManager data fetching with custom tags
* Gpt models are updated
# Version 1.4.17
* Hotfix for Unity compile error
# Version 1.4.16
* New code completions: RenderingLayerMask (Unity 6 and newer only)
* New inline visuals: RenderingLayerMask (Unity 6 and newer only), and LayerMask
* Hotfix for Unity editor freezes
* Hotfix for inline visuals not showing properly when changing document in Visual Studio
* Category SortingLayer removed, its items are now under category Layer
* Minor fix for output window in Visual Studio
* Gpt libraries and models are updated
# Version 1.4.15
* Hotfix for code completion for attributes
# Version 1.4.14
* New code completions: Attributes and preprocessor directives (#if, #elif)
* New gpt feature: Add mode, gpt can add new files to the project
* New gpt feature: For CodeLens, follow-up question and custom prompt
* Gpt responses are logged to Visual Studio output window
# Version 1.4.13
* Hotfix for gpt requests of OpenAI-API-Compatible platforms
# Version 1.4.12
* Additional properties options added for gpt requests
* Version number mistype fix for Unity asset package
# Version 1.4.11
* Hotfix for gpt options page
* Fix for applying transformers for newer versions of Visual Studio
* Arm64 architecture support
# Version 1.4.10
* Animations added to context aware instructions
* Hotfix for context aware integrations (for GitHub Copilot)
# Version 1.4.9
* Hotfix for gpt options page
# Version 1.4.8
* Version bump for sister Visual Studio extensions
# Version 1.4.7
* New gpt feature: Integration into GitHub Copilot. Can now feed GitHub Copilot with project/scene/game-object details.
* Auto updater for itch.io builds
# Version 1.4.6
* Updated binaries with new build parameters
# Version 1.4.5
* Version skipped by mistake ^-^
# Version 1.4.4
* Hotfix for Unity package compile error
# Version 1.4.3
* New gpt provider: OpenAI API Compatible, for web/cloud services that supports OpenAI SDK standards
# Version 1.4.2
* Bugfix for formatting and title of logging
* Bugfix for CodeLens2Gpt when closing document
# Version 1.4.1
* New gpt provider: Ollama, can use LLMs from local machine or private network
# Version 1.4.0
* Gpt backend has been reimplemented for latest models and LLM trends
* New gpt provider: Anthropic (Claude), can be used as an alternative to OpenAI ChatGPT and Google Gemini
* New gpt provider: DeepSeek, can be used as an alternative to OpenAI ChatGPT and Google Gemini
* New code completions: Scene management classes can be auto completed
* New inline visuals: Scene management classes can display inline information
# Version 1.3.12
* Hotfix for Microsoft Marketplace manifest file
# Version 1.3.11
* Hotfix for Microsoft Marketplace manifest file
# Version 1.3.10
* Hotfix for type resolving
* Usability improvements for VSCode exporter
* More filters for expected error logs
# Version 1.3.9
* Hotfix for Unity sink
# Version 1.3.8
* Hotfix for Unity sink
# Version 1.3.7
* Bugfix for exporter/updater
* Bugfix for logging options
# Version 1.3.6
* VSCode readme updated
# Version 1.3.5
* JSON library switched back to Newtonsoft.JSON
* Rule xml files removed from Unity asset
* Unnessary analyzer binaries are removed from Roslyn Analyzer
# Version 1.3.4
* Stability improvements for network (mqttnet)
* Hotfix for JSON mapping
# Version 1.3.3
* Full version for VSCode is released!
* Fix for VSCode adorments when document is modified
* Binary files removed from Unity asset
* Bugfix for network (mqttnet server)
* VSCode extension stability improvements
* VSCode roslyn analyzer stability improvements
# Version 1.3.2
* Fixed cross-platform issues for Linux and macOS
# Version 1.3.1
* Updated VSCode manifest and readme
# Version 1.3.0
* Initial release for VSCode
# Version 1.2.6
* Exporting when Unity is in play mode
* Some error messages have been made more user friendly
# Version 1.2.5
* Released on itch.io https://meryel.itch.io/unity-code-assist
* Url changes
# Version 1.2.4
* Bugfix for exporter with long file paths
* Bugfix for retrieving animation and animator data
# Version 1.2.3
* Bugfix for exporter when overwriting files
* Bugfix for inline visuals when active game object changes
# Version 1.2.2
* Bugfix for exporter when facing race condition
# Version 1.2.1
* Typo fix for Options page
* Bugfix for retrieving animation and animator data
# Version 1.2.0
* New gpt provider: Google Gemini, can be used as an alternative to OpenAI ChatGPT
* New feature: CodeLens2Gpt. Can request gpt queries from the CodeLens of methods and classes
* New feature: Context aware gpt, gpt prompts are embedded with Unity, scene and object information
* New feature: Package, asset has relocated under Packages directory (from Assets directýry), along with Unity setup menu items
* New code completions: Animation and Animator classes and Invoke/Coroutine/Broadcast methods can be auto completed
* New inline visuals: Animation and Animator classes can display inline information
# Version 1.1.12
* External binary files have been customized and minimized
* Domain reloading time have been reduced
* Stability and usability improvements for exporter/updater
* Bugfix for Feedback window
# Version 1.1.11
* Gpt completion endpoint fixed for OpenAI API changes
* Bugfix for Input Manager monitor
* Bugfix for logging to Visual Studio output window
* Bugfix for About window
# Version 1.1.10
* Version skipped for compatibility with other assets
# Version 1.1.9
* Gpt support for chat and edit
* More options added for Gpt
* Overall stability improvements
* Exporter shows file locks if update/export is unsuccessful
# Version 1.1.8
* Bugfix for non-Unity solutions
# Version 1.1.7
* Bugfix for Visual Studio freeze
# Version 1.1.6
* Gpt support added for shader files
* Stability improvements for Unity.ScriptFinder
# Version 1.1.5
* Stability and usability improvements for exporter/updater
* Bugfix for Transformer Linq and Auto Input Manager
* Usability for Transformer window, disabling it if not connected to Unity
* Enhancement for completions, sorting numerical values correctly https://github.com/merryyellow/Unity-Code-Assist/issues/6
# Version 1.1.4
* Auto Input Manager is now compatible with binary asset files
* Stability and usability improvements for Transformer windows
# Version 1.1.3
* Analyzers are working at a separate process https://github.com/merryyellow/Unity-Code-Assist/issues/20
* Inline visuals stability and performance improvements https://github.com/merryyellow/Unity-Code-Assist/issues/22 https://github.com/merryyellow/Unity-Code-Assist/issues/24
* Exporter/updater stability improvements https://github.com/merryyellow/Unity-Code-Assist/issues/19 https://github.com/merryyellow/Unity-Code-Assist/issues/23
* Transformer window stability improvements https://github.com/merryyellow/Unity-Code-Assist/issues/21
* Bugfix for Gpt busy icon positioning https://github.com/merryyellow/Unity-Code-Assist/issues/24
# Version 1.1.2
* Bugfix for Yaml file parsing of InputManager
# Version 1.1.1
* Bugfix for error handling of binary file parsing
# Version 1.1.0
* New feature: Generative AI. Use OpenAI ChatGPT within comments to complete your code
* New feature: Visual Studio menus. Access Unity Code Assist from "Extensions"->"Unity Code Assist"
* New code completions: PlayerPrefs, EditorPrefs and Input classes' methods can be auto completed
* New inline visuals: PlayerPrefs, EditorPrefs and Input classes' methods can display inline information
* New code transformer: Auto Input Manager. Converts legacy input code into the new Input Manager
# Version 1.0.0.21
* Stability improvements for Unity ScriptFinder class
# Version 1.0.0.20
* Bugfix for crash at startup https://github.com/merryyellow/Unity-Code-Assist/issues/18
# Version 1.0.0.19
* More logging for error tracking
# Version 1.0.0.18
* Overall stability improvements, nullable references enabled for codebase
* Stability improvements for communications, when reconnection occurs
# Version 1.0.0.17
* Stability improvements for Unity ScriptFinder class
# Version 1.0.0.16
* Bugfix for Visual Studio events concurrency
# Version 1.0.0.15
* Visual Studio events are reimplemented for both stability and performance
* Removal of possible Task deadlocks
* Usability improvements for exporter/updater
* Bugfix for exporter/updater, where prompts can appear twice
* Bugfix for Inline Texts, where const null identifier may raise exceptions https://github.com/merryyellow/Unity-Code-Assist/issues/16
* Bugfix for communications, where tags&layers are sent for the first time
# Version 1.0.0.14
* Usability improvements for Visual Studio Status window where project is not a Unity project
* Bugfix for communication reinitialization, where projects are closed and opened from Visual Studio https://github.com/merryyellow/Unity-Code-Assist/issues/15
* Bugfix for Visual Studio events' initialization https://github.com/merryyellow/Unity-Code-Assist/issues/14
# Version 1.0.0.13
* Bugfix for Unity where target object is neither Component nor MonoBehaviour https://github.com/merryyellow/Unity-Code-Assist/issues/13
# Version 1.0.0.12
* New Feature: Updating Unity asset from Visual Studio
* New Feature: Online error reporting of Unity errors
* Usability improvement for Visual Studio Feedback window
* Bugfix for Inline Texts where there is no class declaration https://github.com/merryyellow/Unity-Code-Assist/issues/5
* Bugfix for Code Completion where there is no class declaration https://github.com/merryyellow/Unity-Code-Assist/issues/10
* Bugfix for Visual Studio output window, where it may be unavailable
# Version 1.0.0.11
* Bugfix for Visual Studio events' initialization https://github.com/merryyellow/Unity-Code-Assist/issues/3
* Exporter now has more logs
# Version 1.0.0.10
* Bugfix for Inline Texts where leading trivia is absent https://github.com/merryyellow/Unity-Code-Assist/issues/1
* Bugfix for Visual Studio events' initialization https://github.com/merryyellow/Unity-Code-Assist/issues/2
# Version 1.0.0.9
* Minor adjustments for initialization logging
# Version 1.0.0.8
* Online analytics added
* Bugfix for Inline Texts, Visual Studio code preview screen does not raise any exception anymore
# Version 1.0.0.7
* Online error tracker added
# Version 1.0.0.6
* Exporter is always disabled for non Unity projects
# Version 1.0.0.5
* Lite version released at Visual Studio Marketplace
* Exporting Unity asset from Visual Studio
* Unity package become package independent (Removed Newtonsoft.Json dependency)
# Version 1.0.0
* First release!
* Released on Unity Asset Store

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 1c4f29bc8d89b284cb9b38090b87a507
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,75 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEditor;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor
{
public class AboutWindow : EditorWindow
{
GUIStyle? styleLabel;
public static void Display()
{
// Get existing open window or if none, make a new one:
var window = GetWindow<AboutWindow>();
window.Show();
Serilog.Log.Debug("Displaying about window");
MQTTnetInitializer.Publisher?.SendAnalyticsEvent("Gui", "AboutWindow_Display");
}
private void OnEnable()
{
//**--icon
//var icon = AssetDatabase.LoadAssetAtPath<Texture>("Assets/Sprites/Gear.png");
//titleContent = new GUIContent("Code Assist", icon);
titleContent = new GUIContent("Code Assist About");
}
private void OnGUI()
{
styleLabel ??= new GUIStyle(GUI.skin.label)
{
wordWrap = true,
alignment = TextAnchor.MiddleLeft,
};
EditorGUILayout.LabelField($"Version number: {Assister.Version}", styleLabel, GUILayout.ExpandWidth(true));
#if MERYEL_UCA_LITE_VERSION
EditorGUILayout.LabelField($"License type: Lite", styleLabel, GUILayout.ExpandWidth(true));
#else // MERYEL_UCA_LITE_VERSION
EditorGUILayout.LabelField($"License type: Full", styleLabel, GUILayout.ExpandWidth(true));
#endif // MERYEL_UCA_LITE_VERSION
if (GUILayout.Button("Update"))
{
Updater.CheckUpdateForced();
}
if (GUILayout.Button("View changelog"))
{
Application.OpenURL("https://unitycodeassist.netlify.app/changelog");
}
if (GUILayout.Button("View third party notices"))
{
Application.OpenURL("https://unitycodeassist.netlify.app/thirdpartynotices");
}
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: b773a1d4b9561324fa0bc568c62c3770
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,87 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEditor;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor
{
// according to documentation, https://docs.unity3d.com/2023.2/Documentation/Manual/roslyn-analyzers.html
// if analyzers are under any asmdef file, they are bound to the asmdef's scope
// to declare out analyzers globally, had to write custom AssetPostprocessor and don't use "RoslynAnalyzer" asset label
public class AnalyzerPostProcessor : AssetPostprocessor
{
public static string OnGeneratedCSProject(string path, string content)
{
// do not add roslyn analyzers to Visual Studio projects for performance
if (Assister.GetCodeEditor(false, out var isVisualStudio, out _, out _) && isVisualStudio)
return content;
var analyzerGroup = new StringBuilder();
analyzerGroup.Append(NewLine);
analyzerGroup.Append(" <!--This section is added by Unity Code Assist-->");
analyzerGroup.Append(NewLine);
analyzerGroup.Append(" <ItemGroup>");
var prefix = $"{NewLine} <Analyzer Include=\"{CommonTools.GetExternalReferencesPath().Replace('/', '\\')}\\";
var suffix = $"\" />";
foreach (var analyzer in Analyzers)
{
analyzerGroup.Append(prefix);
analyzerGroup.Append(analyzer);
analyzerGroup.Append(suffix);
}
analyzerGroup.Append(NewLine);
analyzerGroup.Append(" </ItemGroup>");
//analyzerGroup.Append(NewLine);
//content = Regex.Replace(content, $"[{NewLine}]*</Project>[{NewLine}]*", $"{analyzerGroup.ToString()}$&");
var matches = Regex.Matches(content, $"[{NewLine}]*</Project>");
var index = matches.LastOrDefault(m => m.Success)?.Index ?? -1;
//var index = content.LastIndexOf("</Project>");
if (index >= 0)
content = content.Insert(index, analyzerGroup.ToString());
return content;
}
private const string NewLine = "\r\n";
private readonly static string[] Analyzers = new string[]
{
#if MERYEL_UCA_LITE_VERSION
"Meryel.UnityCodeAssist.AnalyzersLite.dll",
#else
"Meryel.UnityCodeAssist.Analyzers.dll",
#endif
"Meryel.UnityCodeAssist.Common.dll",
"Meryel.UnityCodeAssist.Completion.dll",
"Meryel.UnityCodeAssist.CompletionInternals.dll",
"Meryel.UnityCodeAssist.Logger.dll",
"Meryel.UnityCodeAssist.MQTTnet.dll",
"Meryel.UnityCodeAssist.MQTTnet.Extensions.ManagedClient.dll",
"Meryel.UnityCodeAssist.Newtonsoft.Json.dll",
"Meryel.UnityCodeAssist.ProjectData.dll",
"Meryel.UnityCodeAssist.RoslynAnalyzerManager.dll",
"Meryel.UnityCodeAssist.Synchronizer.dll",
"Meryel.UnityCodeAssist.SynchronizerModel.dll",
"Meryel.UnityCodeAssist.VSIXLibrary.dll",
};
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 17f8bf228c22bbb438ef36b16a18652c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,609 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEditor;
using CodeEditor = Unity.CodeEditor.CodeEditor;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor
{
public class Assister
{
public const string Version = "1.4.19"; //do NOT modify this line, except the number value, its being used by VSCode/Typescript for version detection (in exporter.ts.getVersionOfUnitySide())
#if MERYEL_UCA_LITE_VERSION
public const string Title = "Code Assist Lite";
#else
public const string Title = "Code Assist";
#endif
[MenuItem("Tools/" + Title + "/Status", false, 1)]
static void DisplayStatusWindow()
{
StatusWindow.Display();
}
[MenuItem("Tools/" + Title + "/Synchronize", false, 2)]
static void Sync()
{
EditorCoroutines.EditorCoroutineUtility.StartCoroutine(SyncAux(), MQTTnetInitializer.Publisher);
//MQTTnetInitializer.Publisher.SendConnect();
//Serilog.Log.Information("Code Assist is looking for more IDEs to connect to...");
MQTTnetInitializer.Publisher?.SendAnalyticsEvent("Gui", "Synchronize_MenuItem");
}
[MenuItem("Tools/" + Title + "/Report error", false, 91)]
static void DisplayFeedbackWindow()
{
FeedbackWindow.Display();
}
[MenuItem("Tools/" + Title + "/About", false, 92)]
static void DisplayAboutWindow()
{
AboutWindow.Display();
}
#if MERYEL_UCA_LITE_VERSION
[MenuItem("Tools/" + Title + "/Compare versions", false, 31)]
static void CompareVersions()
{
Application.OpenURL("http://unitycodeassist.netlify.app/compare");
MQTTnetInitializer.Publisher?.SendAnalyticsEvent("Gui", "CompareVersions_MenuItem");
}
[MenuItem("Tools/" + Title + "/Get full version", false, 32)]
static void GetFullVersion()
{
Application.OpenURL("https://unitycodeassist.netlify.app/purchase?utm_source=unity_getfull");
MQTTnetInitializer.Publisher?.SendAnalyticsEvent("Gui", "FullVersion_MenuItem");
}
#endif // MERYEL_UCA_LITE_VERSION
[MenuItem("Tools/" + Title + "/Setup/Upgrade to full version", false, 65)]
public static void Upgrade()
{
MQTTnetInitializer.Publisher?.SendAnalyticsEvent("Gui", "Upgrade_MenuItem");
#if MERYEL_UCA_LITE_VERSION
Serilog.Log.Information("Purchase <a href=\"https://unitycodeassist.netlify.app/purchase?utm_source=unity_upgrade\">Unity Code Assist</a> from the <a href=\"http://u3d.as/2N2H\">Asset Store</a> or <a href=\"https://meryel.itch.io/unity-code-assist\">itch.io</a> first. Then download it from the package manager or itch.io");
return;
#else
if (GetCodeEditor(true, out var isVisualStudio, out var isVisualStudioCode, out var error))
{
if (isVisualStudio)
{
var vsixPath = CommonTools.GetInstallerPath("CodeAssist.Full.VisualStudio.Installer.vsix");
if (System.IO.File.Exists(vsixPath))
{
CallVisualStudioInstaller(vsixPath);
return;
}
var zipPath = CommonTools.GetInstallerPath("CodeAssist.Full.VisualStudio.Installer.zip");
if (System.IO.File.Exists(zipPath))
{
var tempVsixPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "CodeAssist.Full.VisualStudio.Installer.vsix");
System.IO.File.Copy(zipPath, tempVsixPath, true);
CallVisualStudioInstaller(tempVsixPath);
return;
}
Serilog.Log.Information("Installer for Visual Studio couldn't be found at {ZipPath}. Please try re-importing the asset from the package manager", zipPath);
return;
}
else if (isVisualStudioCode)
{
var vsixPath = CommonTools.GetInstallerPath("CodeAssist.Full.VSCode.Installer.vsix");
if (System.IO.File.Exists(vsixPath))
{
CallVSCodeInstaller(vsixPath);
return;
}
var zipPath = CommonTools.GetInstallerPath("CodeAssist.Full.VSCode.Installer.zip");
if (System.IO.File.Exists(zipPath))
{
var tempVsixPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "CodeAssist.Full.VSCode.Installer.vsix");
System.IO.File.Copy(zipPath, tempVsixPath, true);
CallVSCodeInstaller(tempVsixPath);
return;
}
Serilog.Log.Information("Installer for VS Code couldn't be found at {ZipPath}. Please try re-importing the asset from the package manager", zipPath);
return;
}
}
else
{
Serilog.Log.Information(error!);
}
#endif
}
/*
[MenuItem("Tools/" + Title + "/Setup/Update", false, 61)]
static void Update()
{
//UnityEditor.PackageManager.Client.
}
*/
[MenuItem("Tools/" + Title + "/Setup/Re-import package", false, 62)]
static void RepairFiles()
{
if (MQTTnetInitializer.Publisher?.Clients.Any() != true)
Serilog.Log.Information("No connected IDE found. Please start up Visual Studio or VS Code first");
//var cleanupPath = CommonTools.GetToolPath("CleanupObsoleteFiles.bat");
//Execute(cleanupPath);
Cleanup.DoCleanup();
MQTTnetInitializer.Publisher?.SendRequestUpdate("Unity", string.Empty, true);
MQTTnetInitializer.Publisher?.SendAnalyticsEvent("Gui", "Reimport_MenuItem");
}
[MenuItem("Tools/" + Title + "/Setup/Import files for .NET Standard 2.0", false, 63)]
static void ImportSystemBinariesForDotNetStandard20()
{
var solutionDirectory = CommonTools.GetProjectPath();
var cSharpVersion = Cleanup.GetCSharpVersionFromUnityProjectVersionFile(solutionDirectory);
if (cSharpVersion >= 9)
{
if (!EditorUtility.DisplayDialog("Import files for .NET Standard 2.0",
"This is not required for versions of Unity 2021.2 and newer. Do you still want to continue?",
"Okay", "Cancel"))
{
Serilog.Log.Debug("ImportNetStandard20_MenuItem cancelled via confirm dialog");
return;
}
}
if (MQTTnetInitializer.Publisher?.Clients.Any() != true)
Serilog.Log.Information("No connected IDE found. Please start up Visual Studio or VS Code first");
MQTTnetInitializer.Publisher?.SendRequestUpdate("SystemBinariesForDotNetStandard20", string.Empty, true);
MQTTnetInitializer.Publisher?.SendAnalyticsEvent("Gui", "ImportNetStandard20_MenuItem");
}
[MenuItem("Tools/" + Title + "/Setup/Regenerate project files", false, 64)]
public static void RegenerateProjectFiles() => RegenerateProjectFilesAux(true);
public static void RegenerateProjectFilesAux(bool showError)
{
try
{
if (GetCodeEditor(true, out _, out _, out var error))
{
CodeEditor.Editor.CurrentCodeEditor.SyncAll();
}
else
{
if (showError && error != null)
Serilog.Log.Information(error);
// other similar approaches
// https://www.reddit.com/r/Unity3D/comments/s1joc6/help_with_generating_csproj_and_sln_for_github/
// https://discussions.unity.com/t/manually-generate-sln-and-csproj-files/648686/6
// https://discussions.unity.com/t/how-can-i-generate-csproj-files-during-continuous-integration-builds/842493/3
// https://github.com/Unity-Technologies/UnityCsReference/blob/f45f297f342239326ea865a57a1bb8ddf93e38c6/Editor/Mono/CodeEditor/SyncVS.cs#L22
var t = ScriptFinder.GetType123("Microsoft.Unity.VisualStudio.Editor.Cli");
var m = t!.GetMethod("GenerateSolution", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
m.Invoke(null, null);
}
}
catch (System.Exception ex)
{
Serilog.Log.Error(ex, "Couldn't invoke GenerateSolution");
Serilog.Log.Information("Please 'Regenerate project files' manually. 'Edit'->'Preferences'->'External Tools'->'Regenerate project files'");
}
}
static IEnumerator CallShell(string command, string ide)
{
Serilog.Log.Debug("calling shell with command: {Command}", command);
var task = Shell.UnityEditorShell.Execute(command);
task.OnLog += (logType, log) =>
{
Serilog.Log.Debug("shell log: {Log}", log);
};
task.OnExit += (code) =>
{
Serilog.Log.Debug("shell exit: {Code}", code);
if (code == 0)
Serilog.Log.Information($"{ide} extension installed successfully. Please restart {ide}");
else
Serilog.Log.Information($"{ide} extension installation failed. Please try manual installition at {CommonTools.GetInstallerPath(string.Empty)}");
};
yield return new Shell.ShellCommandYieldable(task);
}
static void CallVisualStudioInstaller(string vsixPath)
{
EditorCoroutines.EditorCoroutineUtility.StartCoroutine(CallShell(
$"@for /f \"usebackq delims=\" %i in (`\"%ProgramFiles(x86)%\\Microsoft Visual Studio\\Installer\\vswhere.exe\" -latest -prerelease -products * -property enginePath`) do @set enginePath=%i & if exist \"%i\\VSIXInstaller.exe\" call \"%i\\VSIXInstaller.exe\" /u:VSIXLite2.6815b720-6186-48a1-a405-1387e54b41c6 & call \"%i\\VSIXInstaller.exe\" \"{vsixPath}\"", "Visual Studio"), MQTTnetInitializer.Publisher);
}
static void CallVSCodeInstaller(string vsixPath)
{
string command;
#if UNITY_EDITOR_WIN
command = $"code --uninstall-extension MerryYellow.uca-lite-vscode & code --install-extension \"{vsixPath}\"";
#elif UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX
command = $"code --uninstall-extension MerryYellow.uca-lite-vscode ; code --install-extension \"{vsixPath}\"";
#else
Serilog.Log.Error("invalid platform at {Location}", nameof(CallVSCodeInstaller));
command = string.Empty;
#endif
EditorCoroutines.EditorCoroutineUtility.StartCoroutine(CallShell(command, "VS Code"), MQTTnetInitializer.Publisher);
}
internal static string Execute(string vsixPath, bool isVisualStudio = false, bool isVSCode = false)
{
var startInfo = new System.Diagnostics.ProcessStartInfo
{
WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
//startInfo.FileName = GetExePath();
FileName = vsixPath,
//startInfo.Arguments = args;
UseShellExecute = false,
RedirectStandardOutput = true
//startInfo.WorkingDirectory = workingDirectoryPath;
};
var process = new System.Diagnostics.Process
{
StartInfo = startInfo
};
try
{
process.Start();
}
catch (System.ComponentModel.Win32Exception ex)
{
Serilog.Log.Error(ex, "Error at running bat file {File}", vsixPath);
}
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return output;
}
static IEnumerator SyncAux()
{
var clientCount = MQTTnetInitializer.Publisher?.Clients.Count() ?? 0;
MQTTnetInitializer.Publisher?.SendConnect();
Serilog.Log.Information("Code Assist is looking for more IDEs to connect to...");
//yield return new WaitForSeconds(3);
yield return new EditorCoroutines.EditorWaitForSeconds(3);
var newClientCount = MQTTnetInitializer.Publisher?.Clients.Count() ?? 0;
var dif = newClientCount - clientCount;
if (dif <= 0)
Serilog.Log.Information("Code Assist couldn't find any new IDE to connect to.");
else
Serilog.Log.Information("Code Assist is connected to {Dif} new IDE(s).", dif);
}
#if MERYEL_DEBUG
[MenuItem("Code Assist/Binary2Text")]
static void Binary2Text()
{
var filePath = CommonTools.GetInputManagerFilePath();
var hash = Input.UnityInputManager.GetMD5Hash(filePath);
var convertedPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), $"UCA_IM_{hash}.txt");
var b = new Input.Binary2TextExec();
b.Exec(filePath, convertedPath, detailed: false, largeBinaryHashOnly: false, hexFloat: false);
}
[MenuItem("Code Assist/Bump InputManager")]
static void BumpInputManager()
{
Input.InputManagerMonitor.Instance.Bump();
}
[MenuItem("Code Assist/Layer Check")]
static void UpdateLayers()
{
var names = UnityEditorInternal.InternalEditorUtility.layers;
var indices = names.Select(l => LayerMask.NameToLayer(l).ToString()).ToArray();
MQTTnetInitializer.Publisher?.SendLayers(indices, names);
var sls = SortingLayer.layers;
var sortingNames = sls.Select(sl => sl.name).ToArray();
var sortingIds = sls.Select(sl => sl.id.ToString()).ToArray();
var sortingValues = sls.Select(sl => sl.value.ToString()).ToArray();
MQTTnetInitializer.Publisher?.SendSortingLayers(sortingNames, sortingIds, sortingValues);
/*
for (var i = 0; i < 32; i++)
{
var name = LayerMask.LayerToName(i);
if (!string.IsNullOrEmpty(name))
{
Debug.Log(i + ":" + name);
}
}
if (ScriptFinder.FindGameObjectOfType("Deneme", out var go))
MQTTnetInitializer.Publisher.SendGameObject(go);
*/
}
[MenuItem("Code Assist/Tag Check")]
static void UpdateTags()
{
Serilog.Log.Debug("Listing tags {Count}", UnityEditorInternal.InternalEditorUtility.tags.Length);
foreach (var tag in UnityEditorInternal.InternalEditorUtility.tags)
{
if (!string.IsNullOrEmpty(tag))
{
Serilog.Log.Debug("{Tag}", tag);
}
}
MQTTnetInitializer.Publisher?.SendTags(UnityEditorInternal.InternalEditorUtility.tags);
}
[MenuItem("Code Assist/GO Check")]
static void TestGO()
{
var go = GameObject.Find("Deneme");
//var go = MonoBehaviour.FindObjectOfType<Deneme>().gameObject;
MQTTnetInitializer.Publisher?.SendGameObject(go);
}
[MenuItem("Code Assist/Undo Records Test")]
static void UndoTest()
{
var undos = new List<string>();
var redos = new List<string>();
var type = typeof(Undo);
System.Reflection.MethodInfo dynMethod = type.GetMethod("GetRecords",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
dynMethod.Invoke(null, new object[] { undos, redos });
Serilog.Log.Debug("undos:{UndoCount},redos:{RedoCount}", undos.Count, redos.Count);
var last = undos.LastOrDefault();
if (last != null)
{
Serilog.Log.Debug("last:{Last}", last);
Serilog.Log.Debug("group:{UndoCurrentGroup},{UndoCurrentGroupName}",
Undo.GetCurrentGroup(), Undo.GetCurrentGroupName());
}
}
[MenuItem("Code Assist/Undo List Test")]
static void Undo2Test()
{
//List<string> undoList, out int undoCursor
var undoList = new List<string>();
int undoCursor = int.MaxValue;
var type = typeof(Undo);
System.Reflection.MethodInfo dynMethod = type.GetMethod("GetUndoList",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
dynMethod = type.GetMethod("GetUndoList",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static,
null,
new System.Type[] { typeof(List<string>), typeof(int).MakeByRefType() },
null);
dynMethod.Invoke(null, new object[] { undoList, undoCursor });
Serilog.Log.Debug("undo count: {Count}", undoList.Count);
}
[MenuItem("Code Assist/Reload Domain")]
static void ReloadDomain()
{
EditorUtility.RequestScriptReload();
}
/*
[MenuItem("Code Assist/TEST")]
static void TEST()
{
//if (ScriptFinder.FindGameObjectOfType("Deneme_OtherScene", out var go))
if (ScriptFinder.FindInstanceOfType("Deneme_SO", out var go, out var so))
{
MQTTnetInitializer.Publisher.SendScriptableObject(so);
}
ScriptFinder.DENEMEEEE();
}
*/
#endif // MERYEL_DEBUG
public static void SendTagsAndLayers()
{
Serilog.Log.Debug(nameof(SendTagsAndLayers));
var tags = UnityEditorInternal.InternalEditorUtility.tags;
MQTTnetInitializer.Publisher?.SendTags(tags);
var layerNames = UnityEditorInternal.InternalEditorUtility.layers;
var layerIndices = layerNames.Select(l => LayerMask.NameToLayer(l).ToString()).ToArray();
MQTTnetInitializer.Publisher?.SendLayers(layerNames, layerIndices);
var sls = SortingLayer.layers;
var sortingNames = sls.Select(sl => sl.name).ToArray();
var sortingIds = sls.Select(sl => sl.id.ToString()).ToArray();
var sortingValues = sls.Select(sl => sl.value.ToString()).ToArray();
MQTTnetInitializer.Publisher?.SendSortingLayers(sortingNames, sortingIds, sortingValues);
#if UNITY_6000_0_OR_NEWER
// Version 6+ only, 2022.3 doesn't have class RenderingLayerMask, even though some renderingLayerMask fields/properties are declared
var renderingLayerCount = RenderingLayerMask.GetRenderingLayerCount();
var renderingLayerIndices = new string[renderingLayerCount];
var renderingLayerNames = new string[renderingLayerCount];
for (var i = 0; i < renderingLayerCount; i++)
{
renderingLayerIndices[i] = i.ToString();
renderingLayerNames[i] = RenderingLayerMask.RenderingLayerToName(i);
}
MQTTnetInitializer.Publisher?.SendRenderingLayers(renderingLayerNames, renderingLayerIndices);
#endif // UNITY_6000_0_OR_NEWER
}
public static bool GetCodeEditor(bool checkVersion, out bool isVisualStudio, out bool isVisualStudioCode, out string? error)
{
isVisualStudio = false;
isVisualStudioCode = false;
if (CodeEditor.Editor.CurrentCodeEditor.TryGetInstallationForPath(CodeEditor.CurrentEditorInstallation, out var installation))
{
if (installation.Name.StartsWith("Visual Studio Code"))
isVisualStudioCode = true;
else if (installation.Name.StartsWith("Visual Studio"))
isVisualStudio = true;
if (!isVisualStudioCode && !isVisualStudio)
{
error = $"Unsupported code editor: {installation.Name}. Unity Code Assist only supports Visual Studio and Visual Studio Code";
return false;
}
if (installation.Name.Contains("(internal)"))
{
error = "Code editor set but not working properly. Please try updating 'Visual Studio Editor' package";
return false;
}
if (!checkVersion)
{
error = null;
return true;
}
var versionRegex = new System.Text.RegularExpressions.Regex(".*\\[([\\d\\.]+)\\]");
var versionStr = versionRegex.Match(installation.Name).Groups.ElementAtOrDefault(1)?.Value;
if (isVisualStudioCode && !string.IsNullOrEmpty(versionStr) && (VersionCompare(versionStr!, "1.76") < 0))
{
error = $"Version {versionStr} of Visual Studio Code is not supported by Unity Code Assist. Please update Visual Studio Code";
return false;
}
if (isVisualStudio && !string.IsNullOrEmpty(versionStr) && (VersionCompare(versionStr!, "17") < 0))
{
error = $"Version {versionStr} of Visual Studio is not supported by Unity Code Assist. Please update Visual Studio";
return false;
}
error = null;
return true;
}
else
{
error = "No code editor found. Please set it through 'Edit'->'Preferences'->'External Tools'->'External Script Editor'";
return false;
}
}
//https://www.geeksforgeeks.org/compare-two-version-numbers/amp/
public static int VersionCompare(string v1, string v2)
{
// vnum stores each numeric
// part of version
int vnum1 = 0, vnum2 = 0;
// loop until both string are
// processed
for (int i = 0, j = 0; (i < v1.Length || j < v2.Length);)
{
// storing numeric part of
// version 1 in vnum1
while (i < v1.Length && v1[i] != '.')
{
vnum1 = vnum1 * 10 + (v1[i] - '0');
i++;
}
// storing numeric part of
// version 2 in vnum2
while (j < v2.Length && v2[j] != '.')
{
vnum2 = vnum2 * 10 + (v2[j] - '0');
j++;
}
if (vnum1 > vnum2)
return 1;
if (vnum2 > vnum1)
return -1;
// if equal, reset variables and
// go for next numeric part
vnum1 = vnum2 = 0;
i++;
j++;
}
return 0;
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 394bf783968f6dd4ab2ca0e1e7258147
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,390 +0,0 @@
using System;
using System.IO;
using System.Linq;
using System.Security.AccessControl;
using System.Security.Principal;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor
{
// copied from Exporter.cs in VSIX
public static class Cleanup
{
public static bool DoCleanup()
{
var assetsPath = UnityEngine.Application.dataPath;
var _solutionDirectory = CommonTools.GetProjectPath();
var destination = _solutionDirectory;
var oldDestination = assetsPath;
var succeed = true;
try
{
Cleanup1(oldDestination);
Cleanup2(oldDestination);
Cleanup3(oldDestination, _solutionDirectory);
Cleanup4(oldDestination);
}
catch (Exception ex)
{
succeed = false;
Serilog.Log.Error(ex, "DoCleanup failed at {Destination}", destination);
}
return succeed;
}
private static void DeleteFileAndItsMeta(string filePath)
{
if (File.Exists(filePath))
{
Serilog.Log.Debug("Deleting file {File}", filePath);
//File.Delete(filePath);
DeleteFileAux(filePath);
Serilog.Log.Debug("Deleted file {File} {Exists}", filePath, File.Exists(filePath));
}
var metaFilePath = filePath + ".meta";
if (File.Exists(metaFilePath))
{
Serilog.Log.Debug("Deleting meta file {File}", metaFilePath);
//File.Delete(metaFilePath);
DeleteFileAux(metaFilePath);
Serilog.Log.Debug("Deleted file {File} {Exists}", metaFilePath, File.Exists(metaFilePath));
}
}
private static bool IsDirectoryExistsAndEmpty(string path)
{
return Directory.Exists(path) && !Directory.EnumerateFileSystemEntries(path).Any();
}
private static void DeleteDirectoryAndItsMeta(string directoryPath)
{
if (IsDirectoryExistsAndEmpty(directoryPath))
{
Serilog.Log.Debug("Deleting directory {Dir}", directoryPath);
Directory.Delete(directoryPath);
Serilog.Log.Debug("Deleted directory {Dir} {Exists}", directoryPath, IsDirectoryExistsAndEmpty(directoryPath));
var metaFilePath = directoryPath + ".meta";
if (File.Exists(metaFilePath))
{
Serilog.Log.Debug("Deleting directory meta file {File}", metaFilePath);
//File.Delete(metaFilePath);
DeleteFileAux(metaFilePath);
Serilog.Log.Debug("Deleted directory meta file {File} {Exists}", metaFilePath, File.Exists(metaFilePath));
}
}
}
private static void DeleteFileAux(string filePath)
{
try
{
File.Delete(filePath);
}
catch (UnauthorizedAccessException)
{
var fileDirectoryPath = Path.GetDirectoryName(filePath);
SetEveryoneAccessToDirectory(fileDirectoryPath, out _);
TakeOwnership(filePath);
File.Delete(filePath);
}
}
/// <summary>
/// Set Everyone Full Control permissions for selected directory
/// </summary>
/// <param name="dirName"></param>
/// <returns></returns>
static bool SetEveryoneAccessToDirectory(string dirName, out string _lastError)
{
try
{
// Make sure directory exists
if (Directory.Exists(dirName) == false)
throw new Exception(string.Format("Directory {0} does not exist, so permissions cannot be set.", dirName));
// Get directory access info
DirectoryInfo dinfo = new DirectoryInfo(dirName);
DirectorySecurity dSecurity = dinfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
// Set the access control
dinfo.SetAccessControl(dSecurity);
_lastError = String.Format("Everyone FullControl Permissions were set for directory {0}", dirName);
return true;
}
catch (Exception ex)
{
_lastError = ex.Message;
return false;
}
}
/// <summary>
///
/// </summary>
/// <param name="solutionDirectory"></param>
/// <param name="cs_7_3_orLower"></param>
/// <param name="cs_8_0"></param>
/// <param name="cs_9_0_orHigher"></param>
/// <returns>
/// 7 if C# 7.3 or lower,
/// 8 if C# 8.0 (.netstandard2.0),
/// 9 if C# 9.0 (.netstandard2.1),
/// -1 if error
/// </returns>
public static int GetCSharpVersionFromUnityProjectVersionFile(string? solutionDirectory)
{
if (string.IsNullOrEmpty(solutionDirectory))
return -1;
var projectVersionFilePath = System.IO.Path.Combine(solutionDirectory, "ProjectSettings/ProjectVersion.txt");
if (!System.IO.File.Exists(projectVersionFilePath))
return -1;
string? version = null;
string[]? readText = null;
try
{
readText = System.IO.File.ReadAllLines(projectVersionFilePath);
// format is m_EditorVersion: 2018.2.0b7
string[] versionText = readText[0].Split(' ');
version = versionText[1];
}
catch (Exception ex)
{
Serilog.Log.Error(ex, "Project version file parsing error {FirstLine}", readText?.FirstOrDefault());
return -1;
}
if (version == null)
{
Serilog.Log.Error("Parsed project version is null");
return -1;
}
// see my personal notes for Unity version X C# version table
// which is at OneNote->ShinSekai->CEPostRelease->UnityCompilerC#VersionTable
if (version.StartsWith("5.") || version.StartsWith("2017.") ||
version.StartsWith("2018.") || version.StartsWith("2019.") || version.StartsWith("2020.1."))
return 7;
if (version.StartsWith("2020.") || version.StartsWith("2021.1."))
return 8;
if (version.StartsWith("2021.") || version.StartsWith("2022.") ||
version.StartsWith("2023.") || version.StartsWith("6000."))
return 9;
Serilog.Log.Error("Parsed project version is unknown {Version}", version);
return -1;
}
private static void TakeOwnership(string filename)
{
// Remove read-only attribute
File.SetAttributes(filename, File.GetAttributes(filename) & ~FileAttributes.ReadOnly);
FileSecurity security = new FileSecurity();
SecurityIdentifier sid = WindowsIdentity.GetCurrent().User;
security.SetOwner(sid);
security.SetAccessRule(new FileSystemAccessRule(sid, FileSystemRights.FullControl, AccessControlType.Allow));
File.SetAccessControl(filename, security);
}
private static void Cleanup1(string destination)
{
// prior to version UCA.v.1.1.9, syncronizerModel and yamlDotNet dll files were located at ProjectPath/Assets/Plugins/CodeAssist/Editor/ExternalReferences/Release/netstandard2.0
// with version UCA.v.1.1.9 and newer versions, they are located at ProjectPath/Assets/Plugins/CodeAssist/Editor/ExternalReferences
// delete ProjectPath/Assets/Plugins/CodeAssist/Editor/ExternalReferences/Release
var oldBinariesDirectory = Path.Combine(destination, "Plugins/CodeAssist/Editor/ExternalReferences/Release/netstandard2.0");
if (Directory.Exists(oldBinariesDirectory))
{
// dont just delete the directory for security reasons, instead delete binary files one by one
Serilog.Log.Debug("Old binaries directory exists at {Location}", oldBinariesDirectory);
var files = new string[]
{
"UnityCodeAssistSynchronizerModel.deps.json",
"UnityCodeAssistSynchronizerModel.dll",
"UnityCodeAssistSynchronizerModel.pdb",
"UnityCodeAssistYamlDotNet.deps.json",
"UnityCodeAssistYamlDotNet.dll",
"UnityCodeAssistYamlDotNet.pdb",
"UnityCodeAssistYamlDotNet.xml",
};
foreach (var file in files)
{
var filePath = Path.Combine(oldBinariesDirectory, file);
DeleteFileAndItsMeta(filePath);
}
DeleteDirectoryAndItsMeta(oldBinariesDirectory);
}
var oldBinariesDirectory2 = Path.Combine(destination, "Plugins/CodeAssist/Editor/ExternalReferences/Release");
DeleteDirectoryAndItsMeta(oldBinariesDirectory2);
// also delete old vsix, it's now renamed as Meryel.UnityCodeAssist.VSIX.vsix
var oldVsixFilePath = Path.Combine(destination, "Plugins/CodeAssist/UnityCodeAssistVSIX.vsix");
DeleteFileAndItsMeta(oldVsixFilePath);
}
private static void Cleanup2(string destination)
{
// with version 1.1.12, dll files has been customized (renamed and changed their namespace) (so that they dont conflict with user's other dll files, if he tries to use them)
// delete AsyncIO.dll, and use Meryel.UnityCodeAssist.AsyncIO.dll instead
var files = new string[]
{
"AsyncIO.dll",
"NaCl.dll",
"NetMQ.dll",
"Serilog.dll",
"Serilog.Sinks.PersistentFile.dll",
};
var binariesDirectory = Path.Combine(destination, "Plugins/CodeAssist/Editor/ExternalReferences");
foreach (var file in files)
{
var filePath = Path.Combine(binariesDirectory, file);
DeleteFileAndItsMeta(filePath);
}
}
private static void Cleanup3(string destination, string solutionDirectory)
{
// as it turns out, .netstandard2.1 does not need system binaries (for C#9.0, unity versions 2021.2 and newer)
//var cSharpVersion = CommonVS.VSCommonTools.GetCSharpVersionFromUnityProjectVersionFile(solutionDirectory);
var cSharpVersion = GetCSharpVersionFromUnityProjectVersionFile(solutionDirectory);
if (cSharpVersion < 9)
return;
var systemBinaryFiles = new string[]
{
"System.Buffers.dll",
"System.Memory.dll",
"System.Runtime.CompilerServices.Unsafe.dll",
"System.Threading.Tasks.Extensions.dll",
};
var binariesDirectory = Path.Combine(destination, "Plugins/CodeAssist/Editor/ExternalReferences");
foreach (var file in systemBinaryFiles)
{
var filePath = Path.Combine(binariesDirectory, file);
DeleteFileAndItsMeta(filePath);
}
}
private static void Cleanup4(string destination)
{
// with version 1.2, asset directory moved from Assets/Plugins/CodeAssist to Packages/com.merry-yellow.code-assist
// so remove all files from the old directory
var directory = Path.Combine(destination, "Plugins/CodeAssist/Editor");
var content = new string[]
{
@"TinyJson/JsonWriter.cs",
@"TinyJson/JsonParser.cs",
@"Preferences/RegistryMonitor.cs",
@"Preferences/PreferenceStorageAccessor.cs",
@"Preferences/PreferenceMonitor.cs",
@"Preferences/PreferenceEntryHolder.cs",
@"Logger/UnitySink.cs",
@"Logger/MemorySink.cs",
@"Logger/ELogger.cs",
@"Logger/DomainHashEnricher.cs",
@"Logger/CommonTools.cs",
@"Logger/Attributes.cs",
@"Input/UnityInputManager.cs",
@"Input/Text2Yaml.cs",
@"Input/InputManagerMonitor.cs",
@"Input/Binary2TextExec.cs",
@"ExternalReferences/Meryel.UnityCodeAssist.YamlDotNet.xml",
@"ExternalReferences/Meryel.UnityCodeAssist.YamlDotNet.pdb",
@"ExternalReferences/Meryel.UnityCodeAssist.YamlDotNet.dll",
@"ExternalReferences/Meryel.UnityCodeAssist.YamlDotNet.deps.json",
@"ExternalReferences/Meryel.UnityCodeAssist.SynchronizerModel.pdb",
@"ExternalReferences/Meryel.UnityCodeAssist.SynchronizerModel.dll",
@"ExternalReferences/Meryel.UnityCodeAssist.SynchronizerModel.deps.json",
@"ExternalReferences/Meryel.UnityCodeAssist.Serilog.xml",
@"ExternalReferences/Meryel.UnityCodeAssist.Serilog.Sinks.PersistentFile.pdb",
@"ExternalReferences/Meryel.UnityCodeAssist.Serilog.Sinks.PersistentFile.dll",
@"ExternalReferences/Meryel.UnityCodeAssist.Serilog.Sinks.PersistentFile.deps.json",
@"ExternalReferences/Meryel.UnityCodeAssist.Serilog.pdb",
@"ExternalReferences/Meryel.UnityCodeAssist.Serilog.dll",
@"ExternalReferences/Meryel.UnityCodeAssist.NetMQ.xml",
@"ExternalReferences/Meryel.UnityCodeAssist.NetMQ.pdb",
@"ExternalReferences/Meryel.UnityCodeAssist.NetMQ.dll",
@"ExternalReferences/Meryel.UnityCodeAssist.NetMQ.deps.json",
@"ExternalReferences/Meryel.UnityCodeAssist.NaCl.xml",
@"ExternalReferences/Meryel.UnityCodeAssist.NaCl.pdb",
@"ExternalReferences/Meryel.UnityCodeAssist.NaCl.dll",
@"ExternalReferences/Meryel.UnityCodeAssist.AsyncIO.pdb",
@"ExternalReferences/Meryel.UnityCodeAssist.AsyncIO.dll",
@"EditorCoroutines/EditorWindowCoroutineExtension.cs",
@"EditorCoroutines/EditorWaitForSeconds.cs",
@"EditorCoroutines/EditorCoroutineUtility.cs",
@"EditorCoroutines/EditorCoroutine.cs",
@"UnityClassExtensions.cs",
@"StatusWindow.cs",
@"ScriptFinder.cs",
@"NetMQPublisher.cs",
@"NetMQInitializer.cs",
@"Monitor.cs",
@"MerryYellow.CodeAssist.Editor.asmdef",
@"MainThreadDispatcher.cs",
@"LazyInitializer.cs",
@"FeedbackWindow.cs",
@"Assister.cs",
@"AboutWindow.cs",
//@"TinyJson",
//@"Preferences",
//@"Logger",
//@"Input",
//@"ExternalReferences",
//@"EditorCoroutines",
};
foreach (var c in content)
{
var path = Path.Combine(directory, c);
DeleteFileAndItsMeta(path);
}
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: f03bf638663c69e41a0cc01055bc4ad4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,157 +0,0 @@
/*
* Derived from Unity package
* https://docs.unity3d.com/Packages/com.unity.editorcoroutines@0.0/api/Unity.EditorCoroutines.Editor.html
*/
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
//namespace Unity.EditorCoroutines.Editor
namespace Meryel.UnityCodeAssist.Editor.EditorCoroutines
{
/// <summary>
/// A handle to an EditorCoroutine, can be passed to <see cref="EditorCoroutineUtility">EditorCoroutineUtility</see> methods to control lifetime.
/// </summary>
public class EditorCoroutine
{
private struct YieldProcessor
{
enum DataType : byte
{
None = 0,
WaitForSeconds = 1,
EditorCoroutine = 2,
AsyncOP = 3,
}
struct ProcessorData
{
public DataType type;
public double targetTime;
public object current;
}
ProcessorData data;
public void Set(object yield)
{
if (yield == data.current)
return;
var type = yield.GetType();
var dataType = DataType.None;
double targetTime = -1;
if(type == typeof(EditorWaitForSeconds))
{
targetTime = EditorApplication.timeSinceStartup + (yield as EditorWaitForSeconds).WaitTime;
dataType = DataType.WaitForSeconds;
}
else if(type == typeof(EditorCoroutine))
{
dataType = DataType.EditorCoroutine;
}
else if(type == typeof(AsyncOperation) || type.IsSubclassOf(typeof(AsyncOperation)))
{
dataType = DataType.AsyncOP;
}
data = new ProcessorData { current = yield, targetTime = targetTime, type = dataType };
}
public bool MoveNext(IEnumerator enumerator)
{
var advance = data.type switch
{
DataType.WaitForSeconds => data.targetTime <= EditorApplication.timeSinceStartup,
DataType.EditorCoroutine => (data.current as EditorCoroutine).m_IsDone,
DataType.AsyncOP => (data.current as AsyncOperation).isDone,
_ => data.current == enumerator.Current,//a IEnumerator or a plain object was passed to the implementation
};
if (advance)
{
data = default;// (ProcessorData);
return enumerator.MoveNext();
}
return true;
}
}
internal WeakReference m_Owner;
IEnumerator m_Routine;
YieldProcessor m_Processor;
bool m_IsDone;
internal EditorCoroutine(IEnumerator routine)
{
m_Owner = null;
m_Routine = routine;
EditorApplication.update += MoveNext;
}
internal EditorCoroutine(IEnumerator routine, object owner)
{
m_Processor = new YieldProcessor();
m_Owner = new WeakReference(owner);
m_Routine = routine;
EditorApplication.update += MoveNext;
}
internal void MoveNext()
{
if (m_Owner != null && !m_Owner.IsAlive)
{
EditorApplication.update -= MoveNext;
return;
}
bool done = ProcessIEnumeratorRecursive(m_Routine);
m_IsDone = !done;
if (m_IsDone)
EditorApplication.update -= MoveNext;
}
static readonly Stack<IEnumerator> kIEnumeratorProcessingStack = new Stack<IEnumerator>(32);
private bool ProcessIEnumeratorRecursive(IEnumerator enumerator)
{
var root = enumerator;
while(enumerator.Current as IEnumerator != null)
{
kIEnumeratorProcessingStack.Push(enumerator);
enumerator = enumerator.Current as IEnumerator;
}
//process leaf
m_Processor.Set(enumerator.Current);
var result = m_Processor.MoveNext(enumerator);
while (kIEnumeratorProcessingStack.Count > 1)
{
if (!result)
{
result = kIEnumeratorProcessingStack.Pop().MoveNext();
}
else
kIEnumeratorProcessingStack.Clear();
}
if (kIEnumeratorProcessingStack.Count > 0 && !result && root == kIEnumeratorProcessingStack.Pop())
{
result = root.MoveNext();
}
return result;
}
internal void Stop()
{
m_Owner = null;
m_Routine = null;
EditorApplication.update -= MoveNext;
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 6c1e3c1846518ae4da27dcaf08ef85f4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,128 +0,0 @@
/*
* Derived from Unity package
* https://docs.unity3d.com/Packages/com.unity.editorcoroutines@0.0/api/Unity.EditorCoroutines.Editor.html
*/
using System.Collections;
using UnityEngine;
//namespace Unity.EditorCoroutines.Editor
namespace Meryel.UnityCodeAssist.Editor.EditorCoroutines
{
public static class EditorCoroutineUtility
{
/// <summary>
/// Starts an <see cref ="EditorCoroutine">EditorCoroutine</see> with the specified owner object.
/// If the garbage collector collects the owner object, while the resulting coroutine is still executing, the coroutine will stop running.
/// <code>
/// using System.Collections;
/// using Unity.EditorCoroutines.Editor;
/// using UnityEditor;
///
/// public class ExampleWindow : EditorWindow
/// {
/// int m_Updates = 0;
/// void OnEnable()
/// {
/// EditorCoroutineUtility.StartCoroutine(CountEditorUpdates(), this);
/// }
///
/// IEnumerator CountEditorUpdates()
/// {
/// while (true)
/// {
/// ++m_Updates;
/// yield return null;
/// }
/// }
/// }
/// </code>
/// </summary>
/// <param name="routine"> IEnumerator to iterate over. </param>
/// <param name="owner">Object owning the coroutine. </param>
/// <remarks>
/// Only types that don't inherit from <see cref="UnityEngine.Object">UnityEngine.Object</see> will get collected the next time the GC runs instead of getting null-ed immediately.
/// </remarks>
/// <returns>A handle to an <see cref="EditorCoroutine">EditorCoroutine</see>.</returns>
public static EditorCoroutine StartCoroutine(IEnumerator routine, object owner)
{
return new EditorCoroutine(routine, owner);
}
/// <summary>
/// This method starts an <see cref="EditorCoroutine">EditorCoroutine</see> without an owning object. The <see cref="EditorCoroutine">EditorCoroutine</see> runs until it completes or is canceled using <see cref="StopCoroutine(EditorCoroutine)">StopCoroutine</see>.
/// <code>
/// using System.Collections;
/// using Unity.EditorCoroutines.Editor;
/// using UnityEditor;
/// using UnityEngine;
///
/// public class ExampleWindow : EditorWindow
/// {
/// void OnEnable()
/// {
/// EditorCoroutineUtility.StartCoroutineOwnerless(LogTimeSinceStartup());
/// }
///
/// IEnumerator LogTimeSinceStartup()
/// {
/// while (true)
/// {
/// Debug.LogFormat("Time since startup: {0} s", Time.realtimeSinceStartup);
/// yield return null;
/// }
/// }
/// }
/// </code>
/// </summary>
/// <param name="routine"> Generator function to execute. </param>
/// <returns>A handle to an <see cref="EditorCoroutine">EditorCoroutine.</see></returns>
public static EditorCoroutine StartCoroutineOwnerless(IEnumerator routine)
{
return new EditorCoroutine(routine);
}
/// <summary>
/// Immediately stop an <see cref="EditorCoroutine">EditorCoroutine</see>. This method is safe to call on an already completed <see cref="EditorCoroutine">EditorCoroutine</see>.
/// <code>
/// using System.Collections;
/// using Unity.EditorCoroutines.Editor;
/// using UnityEditor;
/// using UnityEngine;
///
/// public class ExampleWindow : EditorWindow
/// {
/// EditorCoroutine m_LoggerCoroutine;
/// void OnEnable()
/// {
/// m_LoggerCoroutine = EditorCoroutineUtility.StartCoroutineOwnerless(LogRunning());
/// }
///
/// void OnDisable()
/// {
/// EditorCoroutineUtility.StopCoroutine(m_LoggerCoroutine);
/// }
///
/// IEnumerator LogRunning()
/// {
/// while (true)
/// {
/// Debug.Log("Running");
/// yield return null;
/// }
/// }
/// }
/// </code>
/// </summary>
/// <param name="coroutine">A handle to an <see cref="EditorCoroutine">EditorCoroutine.</see></param>
public static void StopCoroutine(EditorCoroutine coroutine)
{
if (coroutine == null)
{
Serilog.Log.Warning("EditorCoroutine handle is null.");
return;
}
coroutine.Stop();
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: b3d162669c5693a47bf42827686f73d0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,49 +0,0 @@
/*
* Derived from Unity package
* https://docs.unity3d.com/Packages/com.unity.editorcoroutines@0.0/api/Unity.EditorCoroutines.Editor.html
*/
//namespace Unity.EditorCoroutines.Editor
namespace Meryel.UnityCodeAssist.Editor.EditorCoroutines
{
/// <summary>
/// Suspends the <see cref="EditorCoroutine">EditorCoroutine</see> execution for the given amount of seconds, using unscaled time.
/// The coroutine execution continues after the specified time has elapsed.
/// <code>
/// using System.Collections;
/// using UnityEngine;
/// using Unity.EditorCoroutines.Editor;
/// using UnityEditor;
///
/// public class MyEditorWindow : EditorWindow
/// {
/// IEnumerator PrintEachSecond()
/// {
/// var waitForOneSecond = new EditorWaitForSeconds(1.0f);
///
/// while (true)
/// {
/// yield return waitForOneSecond;
/// Debug.Log("Printing each second");
/// }
/// }
/// }
/// </code>
/// </summary>
public class EditorWaitForSeconds
{
/// <summary>
/// The time to wait in seconds.
/// </summary>
public float WaitTime { get; }
/// <summary>
/// Creates a instruction object for yielding inside a generator function.
/// </summary>
/// <param name="time">The amount of time to wait in seconds.</param>
public EditorWaitForSeconds(float time)
{
WaitTime = time;
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 2d8612ff14468214aad7600138a50b79
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,109 +0,0 @@
/*
* Derived from Unity package
* https://docs.unity3d.com/Packages/com.unity.editorcoroutines@0.0/api/Unity.EditorCoroutines.Editor.html
*/
using System.Collections;
using UnityEditor;
using UnityEngine;
//namespace Unity.EditorCoroutines.Editor
namespace Meryel.UnityCodeAssist.Editor.EditorCoroutines
{
public static class EditorWindowCoroutineExtension
{
/// <summary>
/// Start an <see cref="EditorCoroutine">EditorCoroutine</see>, owned by the calling <see cref="EditorWindow">EditorWindow</see> instance.
/// <code>
/// using System.Collections;
/// using Unity.EditorCoroutines.Editor;
/// using UnityEditor;
///
/// public class ExampleWindow : EditorWindow
/// {
/// void OnEnable()
/// {
/// this.StartCoroutine(CloseWindowDelayed());
/// }
///
/// IEnumerator CloseWindowDelayed() //close the window after 1000 frames have elapsed
/// {
/// int count = 1000;
/// while (count > 0)
/// {
/// yield return null;
/// }
/// Close();
/// }
/// }
/// </code>
/// </summary>
/// <param name="routine"></param>
/// <returns></returns>
public static EditorCoroutine StartCoroutine(this EditorWindow window, IEnumerator routine)
{
return new EditorCoroutine(routine, window);
}
/// <summary>
/// Immediately stop an <see cref="EditorCoroutine">EditorCoroutine</see> that was started by the calling <see cref="EditorWindow"/> instance. This method is safe to call on an already completed <see cref="EditorCoroutine">EditorCoroutine</see>.
/// <code>
/// using System.Collections;
/// using Unity.EditorCoroutines.Editor;
/// using UnityEditor;
/// using UnityEngine;
///
/// public class ExampleWindow : EditorWindow
/// {
/// EditorCoroutine coroutine;
/// void OnEnable()
/// {
/// coroutine = this.StartCoroutine(CloseWindowDelayed());
/// }
///
/// private void OnDisable()
/// {
/// this.StopCoroutine(coroutine);
/// }
///
/// IEnumerator CloseWindowDelayed()
/// {
/// while (true)
/// {
/// Debug.Log("Running");
/// yield return null;
/// }
/// }
/// }
/// </code>
/// </summary>
/// <param name="coroutine"></param>
public static void StopCoroutine(this EditorWindow window, EditorCoroutine coroutine)
{
if(coroutine == null)
{
Serilog.Log.Warning("Provided EditorCoroutine handle is null.");
return;
}
if(coroutine.m_Owner == null)
{
Serilog.Log.Error("The EditorCoroutine is ownerless. Please use EditorCoroutineEditor.StopCoroutine to terminate such coroutines.");
return;
}
if (!coroutine.m_Owner.IsAlive)
return; //The EditorCoroutine's owner was already terminated execution will cease next time it is processed
var owner = coroutine.m_Owner.Target as EditorWindow;
if (owner == null || owner != null && owner != window)
{
Serilog.Log.Error("The EditorCoroutine is owned by another object: {0}.", coroutine.m_Owner.Target);
return;
}
EditorCoroutineUtility.StopCoroutine(coroutine);
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 64c15e0c4e36aa84193d4acb3c63afc5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: b78ffde782257054289c22201b6bbc87
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,69 +0,0 @@
fileFormatVersion: 2
guid: 37e44dd86f563cf40a81ef1fdf1f1b54
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: x86
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: x86_64
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,69 +0,0 @@
fileFormatVersion: 2
guid: 7d7e4808a93371242b38476718f4d4cc
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: x86
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: x86_64
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,43 +0,0 @@
fileFormatVersion: 2
guid: ed466bfa2ad216b41acde183e7706352
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,43 +0,0 @@
fileFormatVersion: 2
guid: e70477d38c7ca2841971b35549d1477f
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: aaca88d50145a3041a4ccab964c5793d
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: 6d55f65d499dd354a9c086ab6420c8f1
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: dfd80cce2d0a99b4ba669e989eceafe5
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: 4adc17866ec41ac4e9ce6c47070aeef5
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: ca15dd8e239d5d6468333cbdacbb55d2
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,43 +0,0 @@
fileFormatVersion: 2
guid: 3ff40589a33e8a2458503b2391a96a83
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: 94a257e1b1239d94589fe96db62b03a7
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: 849ce1048cc324a46b0fe21149770a3f
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,43 +0,0 @@
fileFormatVersion: 2
guid: dd39e32872afc47418c75a05b559debf
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,33 +0,0 @@
fileFormatVersion: 2
guid: 582b34ab8eec62a4c87693272b9bc6ab
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,181 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor
{
public class FeedbackWindow : EditorWindow
{
GUIStyle? styleLabel;
public static void Display()
{
MQTTnetInitializer.Publisher?.SendRequestInternalLog();
// Get existing open window or if none, make a new one:
var window = GetWindow<FeedbackWindow>();
window.Show();
Serilog.Log.Debug("Displaying feedback window");
MQTTnetInitializer.Publisher?.SendAnalyticsEvent("Gui", "FeedbackWindow_Display");
}
private void OnEnable()
{
//**--icon
//var icon = AssetDatabase.LoadAssetAtPath<Texture>("Assets/Sprites/Gear.png");
//titleContent = new GUIContent("Code Assist", icon);
titleContent = new GUIContent("Code Assist Feedback");
}
private void OnGUI()
{
var errorCount = Logger.ELogger.GetErrorCountInInternalLog();
var warningCount = Logger.ELogger.GetWarningCountInInternalLog();
var logContent = Logger.ELogger.GetInternalLogContent();
if (!string.IsNullOrEmpty(Logger.ELogger.VsInternalLog))
logContent += Logger.ELogger.VsInternalLog;
styleLabel ??= new GUIStyle(GUI.skin.label)
{
wordWrap = true,
alignment = TextAnchor.MiddleCenter,
};
if (errorCount > 0)
EditorGUILayout.LabelField($"{errorCount} error(s) found in logs. Please submit a feedback (via e-mail, Discord or GitHub) with the logs if possible.", styleLabel, GUILayout.ExpandWidth(true));
else if (warningCount > 0)
EditorGUILayout.LabelField($"{warningCount} warnings(s) found in logs. Please submit a feedback (via e-mail, Discord or GitHub) with the logs if possible.", styleLabel, GUILayout.ExpandWidth(true));
else
EditorGUILayout.LabelField("No errors found in logs. Please submit a feedback (via e-mail, Discord or GitHub) describing what went wrong or unexpected.", styleLabel, GUILayout.ExpandWidth(true));
if (GUILayout.Button("Send e-mail"))
{
var uri = "mailto:merryyellow@outlook.com";
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(uri));
}
if (GUILayout.Button("Send Discord message"))
{
//var uri = "discord://invites/2CgKHDq";
var uri = "https://discord.gg/2CgKHDq";
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(uri));
}
if (GUILayout.Button("Submit GitHub issue"))
{
var uri = "https://github.com/merryyellow/Unity-Code-Assist/issues/new/choose";
Application.OpenURL(uri);
}
EditorGUILayout.Separator();
if (GUILayout.Button("Open Unity full log"))
{
var filePath = Logger.ELogger.FilePath;
System.Diagnostics.Process.Start(filePath);
}
if (GUILayout.Button("Reveal Unity full log"))
{
var filePath = Logger.ELogger.FilePath;
ShowInFileExplorer(filePath);
}
if (GUILayout.Button("Open Visual Studio full log"))
{
var filePath = Logger.ELogger.VSFilePath;
System.Diagnostics.Process.Start(filePath);
}
if (GUILayout.Button("Reveal Visual Studio full log"))
{
var filePath = Logger.ELogger.VSFilePath;
ShowInFileExplorer(filePath);
}
if (GUILayout.Button("Copy recent logs to clipboard"))
{
GUIUtility.systemCopyBuffer = logContent;
}
EditorGUILayout.LabelField("Recent logs:", styleLabel, GUILayout.ExpandWidth(true));
EditorGUILayout.SelectableLabel(logContent, EditorStyles.textArea, GUILayout.ExpandHeight(true));
}
public static void ShowInFileExplorer(string? filePath)
{
if (string.IsNullOrEmpty(filePath))
{
Serilog.Log.Error("Argument {Arg} is null or empty at {Location}", nameof(filePath), nameof(ShowInFileExplorer));
return;
}
filePath = System.IO.Path.GetFullPath(filePath);
if (!System.IO.File.Exists(filePath) && !System.IO.Directory.Exists(filePath))
{
Serilog.Log.Error("Argument {Arg} is not found at {Location}, value: {Value}", nameof(filePath), nameof(ShowInFileExplorer), filePath);
return;
}
if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows))
{
// Windows: highlight the file in Explorer
System.Diagnostics.Process.Start("explorer.exe", $"/select,\"{filePath}\"");
}
else if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.OSX))
{
// macOS: reveal in Finder
System.Diagnostics.Process.Start("open", $"-R \"{filePath}\"");
}
else if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Linux))
{
// Linux: open containing folder in a common file manager
string? directory = System.IO.Path.GetDirectoryName(filePath);
if (directory == null)
return;
string[] managers = { "xdg-open", "nautilus", "dolphin", "nemo", "thunar" };
foreach (string manager in managers)
{
if (TryStart(manager, directory))
return; // success
}
Serilog.Log.Error("No supported file manager found to open the directory at {Location}", nameof(ShowInFileExplorer));
}
else
{
Serilog.Log.Error("Unsupported OS platform at {Location}", nameof(ShowInFileExplorer));
}
// static local function for cleaner structure
static bool TryStart(string command, string args)
{
try
{
System.Diagnostics.Process.Start(command, $"\"{args}\"");
return true;
}
catch
{
return false;
}
}
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 2f84a1c080c184e48920a0124c3e9257
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: d6c9c2845abd74441a1c5d533408b33d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,146 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using UnityEditor;
using UnityEngine;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
//namespace UTJ.UnityCommandLineTools
namespace Meryel.UnityCodeAssist.Editor.Input
{
// <summary>
// bin2textをUnityEditorから実行する為のClass
// programed by Katsumasa.Kimura
// </summary>
public class Binary2TextExec : EditorToolExec
{
public Binary2TextExec() : base("binary2text") { }
// <summary>
// bin2text filePath outPath options
// /summary>
public int Exec(string filePath, string outPath, string options)
{
var args = string.Format(@"""{0}"" ""{1}"" {2}", filePath, outPath, options);
return Exec(args);
}
public int Exec(string filePath, string outPath, bool detailed = false, bool largeBinaryHashOnly = false, bool hexFloat = false)
{
//var args = string.Format(@"""{0}"" ""{1}"" {2}", filePath, outPath, options);
var args = string.Format(@"""{0}"" ""{1}""", filePath, outPath);
if (detailed)
args += " -detailed";
if (largeBinaryHashOnly)
args += " -largebinaryhashonly";
if (hexFloat)
args += " -hexfloat";
return Exec(args);
}
}
// <summary>
// UnityEditorに含まれるコマンドラインツールを実行する為の基底Class
// programed by Katsumasa.Kimura
//</summary>
public class EditorToolExec
{
// <value>
// UnityEditorがインストールされているディレクトリへのパス
// </value>
protected string mEditorPath;
// <value>
// Toolsディレクトリへのパス
// </value>
protected string mToolsPath;
// <value>
// 実行ファイル名
// </value>
protected string mExecFname;
// <value>
// 実行ファイルへのフルパス
// </value>
protected string mExecFullPath;
// <value>
// 実行結果のOUTPUT
// </value>
private string? mOutput;
// <value>
// 実行結果のOUTPUT
// </value>
public string? Output
{
get { return mOutput; }
}
// <summary>
// コンストラクタ
// <param>
// mExecFname : 実行ファイル名
// </param>
// /summary>
public EditorToolExec(string mExecFname)
{
mEditorPath = Path.GetDirectoryName(EditorApplication.applicationPath);
mToolsPath = Path.Combine(mEditorPath, @"Data/Tools");
this.mExecFname = mExecFname;
//var files = Directory.GetFiles(mToolsPath, mExecFname, SearchOption.AllDirectories);
var files = Directory.GetFiles(mEditorPath, mExecFname + "*", SearchOption.AllDirectories);
if (files.Length == 0)
Serilog.Log.Error("{App} app couldn't be found at {Path}", mExecFname, mEditorPath);
mExecFullPath = files[0];
}
// <summary>
// コマンドラインツールを実行する
// <param>
// arg : コマンドラインツールに渡す引数
// </param>
// </summary>
public int Exec(string arg)
{
int exitCode = -1;
try
{
using var process = new Process();
process.StartInfo.FileName = mExecFullPath;
process.StartInfo.Arguments = arg;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
mOutput = process.StandardOutput.ReadToEnd();
process.WaitForExit();
exitCode = process.ExitCode;
process.Close();
}
catch (Exception e)
{
//UnityEngine.Debug.Log(e);
Serilog.Log.Error(e, "Exception while running process at {Scope}.{Location}", nameof(EditorToolExec), nameof(Exec));
}
return exitCode;
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 13d464c749e33e043b94d94c82365823
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,164 +0,0 @@
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor.Input
{
public class InputManagerMonitor
{
private static readonly Lazy<InputManagerMonitor> _instance = new Lazy<InputManagerMonitor>(() => new InputManagerMonitor());
public static InputManagerMonitor Instance => _instance.Value;
//UnityInputManager inputManager;
readonly string inputManagerFilePath;
DateTime previousTagManagerLastWrite;
public InputManagerMonitor()
{
EditorApplication.update += Update;
inputManagerFilePath = CommonTools.GetInputManagerFilePath();
if (!System.IO.File.Exists(inputManagerFilePath))
{
Serilog.Log.Error("InputManager file not found at {location}", inputManagerFilePath);
return;
}
try
{
previousTagManagerLastWrite = System.IO.File.GetLastWriteTime(inputManagerFilePath);
}
catch (Exception ex)
{
Serilog.Log.Debug(ex, "Exception at {Location}", nameof(System.IO.File.GetLastWriteTime));
}
}
void Update()
{
#if !ENABLE_LEGACY_INPUT_MANAGER
return;
#endif
#pragma warning disable CS0162
#pragma warning disable IDE0035
var currentInputManagerLastWrite = previousTagManagerLastWrite;
try
{
if (System.IO.File.Exists(inputManagerFilePath))
currentInputManagerLastWrite = System.IO.File.GetLastWriteTime(inputManagerFilePath);
}
catch (Exception ex)
{
Serilog.Log.Debug(ex, "Exception at {Location}", nameof(System.IO.File.GetLastWriteTime));
}
if (currentInputManagerLastWrite != previousTagManagerLastWrite)
{
previousTagManagerLastWrite = currentInputManagerLastWrite;
Bump();
}
#pragma warning restore CS0162
#pragma warning restore IDE0035
}
public void Bump()
{
#if !ENABLE_LEGACY_INPUT_MANAGER
return;
#endif
#pragma warning disable CS0162
#pragma warning disable IDE0035
Serilog.Log.Debug("InputMonitor {Event}", nameof(Bump));
if (!System.IO.File.Exists(inputManagerFilePath))
{
Serilog.Log.Error("InputManager file not found at {location}", inputManagerFilePath);
return;
}
var inputManager = new UnityInputManager();
inputManager.ReadFromPath(inputManagerFilePath);
inputManager.SendData();
#pragma warning restore CS0162
#pragma warning restore IDE0035
}
}
public static partial class Extensions
{
public static string GetInfo(this List<InputAxis> axes, string? name)
{
if (name == null || string.IsNullOrEmpty(name))
return string.Empty;
//axis.descriptiveName
var axesWithName = axes.Where(a => a.Name == name);
int threshold = 80;
var sb = new System.Text.StringBuilder();
foreach (var axis in axesWithName)
if (!string.IsNullOrEmpty(axis.descriptiveName))
sb.Append($"{axis.descriptiveName} ");
if (sb.Length > threshold)
return sb.ToString();
foreach (var axis in axesWithName)
if (!string.IsNullOrEmpty(axis.descriptiveNegativeName))
sb.Append($"{axis.descriptiveNegativeName} ");
if (sb.Length > threshold)
return sb.ToString();
foreach (var axis in axesWithName)
if (!string.IsNullOrEmpty(axis.positiveButton))
sb.Append($"[{axis.positiveButton}] ");
if (sb.Length > threshold)
return sb.ToString();
foreach (var axis in axesWithName)
if (!string.IsNullOrEmpty(axis.altPositiveButton))
sb.Append($"{{{axis.altPositiveButton}}} ");
if (sb.Length > threshold)
return sb.ToString();
foreach (var axis in axesWithName)
if (!string.IsNullOrEmpty(axis.negativeButton))
sb.Append($"-[{axis.negativeButton}] ");
if (sb.Length > threshold)
return sb.ToString();
foreach (var axis in axesWithName)
if (!string.IsNullOrEmpty(axis.altNegativeButton))
sb.Append($"-{{{axis.altNegativeButton}}} ");
return sb.ToString();
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: e9c9772cbc184d74dbdb770fec5ff76c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,215 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor.Input
{
public class Text2Yaml
{
public static string Convert(IEnumerable<string> textLines)
{
var sb = new StringBuilder();
var stack = new Stack<(string typeName, string identifier, int indentation)>();
sb.AppendLine(@"%YAML 1.1");
sb.AppendLine(@"%TAG !u! tag:unity3d.com,2011:");
sb.AppendLine(@"--- !u!13 &1");
sb.AppendLine(@"InputManager:");
var regexIndentation = new Regex("^\\s*");
var regexString = new Regex("^(\\s+)(\\w+)\\s+\"([a-zA-Z0-9_ \\/\\.\\-]*)\"\\s+\\(string\\)$");
var regexValue = new Regex("^(\\s+)(\\w+)\\s+(-?[0-9.]*)\\s+\\(((bool)|(int)|(float)|(unsigned int))\\)$");
var regexType = new Regex("^(\\s+)(\\w+)\\s+\\((\\w+)\\)$");
var regexVectorSize = new Regex("(\\s+)size\\s+(\\d)+\\s+\\(int\\)");
//var regexVectorData = new Regex("(\\s+)data \\(InputAxis\\)"); // remove InputAxis to make it more generic
string curTextLine;
var curTextLineNo = 3;
var textIndentation = 1;
var indentationPrefix = new string(' ', textIndentation * 2);
stack.Push(("InputManager", "InputManager", textIndentation));
foreach (var line in textLines.Skip(4))
{
curTextLine = line;
curTextLineNo++;
// Skip empty lines
if (line.Length == 0)
continue;
// Check if type undeclared, scope goes down, indentation decrements
{
var indentationMatch = regexIndentation.Match(line);
if (indentationMatch.Success)
{
var indentation = indentationMatch.Groups[0].Value.Length;
if (indentation > textIndentation)
Error($"indentation({indentation}) > textIndentation({textIndentation})");
while (indentation < textIndentation)
{
stack.Pop();
textIndentation--;
var typeIndentation = textIndentation;
if (stack.TryPeek(out var curType2))
typeIndentation = curType2.indentation;
else if (line.Length > 0)
Error("stack empty at type undeclaration");
indentationPrefix = new string(' ', typeIndentation * 2);
}
}
else
{
Error($"{nameof(regexIndentation)} failed");
}
}
// Skip size field of vectors
if (stack.TryPeek(out var curType1) && curType1.typeName == "vector")
{
var vectorSizeMatch = regexVectorSize.Match(line);
if (vectorSizeMatch.Success)
{
continue;
}
}
// Read string fields
{
var stringMatch = regexString.Match(line);
if (stringMatch.Success)
{
AddLine(stringMatch.Groups[2] + ": " + stringMatch.Groups[3]);
continue;
}
}
// Read bool/int/float/unsignedInt fields
{
var valueMatch = regexValue.Match(line);
if (valueMatch.Success)
{
AddLine(valueMatch.Groups[2] + ": " + valueMatch.Groups[3]);
continue;
}
}
// Check if new type declared, scope goes up, indentation increases
{
var typeMatch = regexType.Match(line);
if (typeMatch.Success)
{
var identifier = typeMatch.Groups[2].Value;
var typeName = typeMatch.Groups[3].Value;
var isVectorData = false;
if (stack.TryPeek(out var curType2) && curType2.typeName == "vector" && identifier == "data")
isVectorData = true;
var typeIndentation = textIndentation;
if (stack.TryPeek(out var curType3))
typeIndentation = curType3.indentation;
else if (line.Length > 0)
Error("stack empty at type declaration");
if (!isVectorData)
{
AddLine(typeMatch.Groups[2] + ":");
}
else
{
var customIndentation = typeIndentation - 1;
if (customIndentation < 0)
Error($"customIndentation({customIndentation}) < 0");
var customIndentationPrefix = new string(' ', customIndentation * 2);
AddLine("- serializedVersion: 3", customIndentationPrefix);
}
textIndentation++;
typeIndentation++;
if (isVectorData)
typeIndentation--;
stack.Push((typeName, identifier, typeIndentation));
indentationPrefix = new string(' ', typeIndentation * 2);
continue;
}
}
Error("line failed to match all cases");
}
return sb.ToString();
void AddLine(string line, string? customIndentationPrefix = null)
{
string suffix;
if (stack.TryPeek(out var top))
suffix = $" # {textIndentation}, {top.indentation}, {top.typeName} {top.identifier}";
else
suffix = $" # {textIndentation}, nil";
if (customIndentationPrefix != null)
sb.AppendLine(customIndentationPrefix + line + suffix);
else
sb.AppendLine(indentationPrefix + line + suffix);
}
void Error(string message)
{
var errorMessage = $"Text2Yaml error '{message}' at lineNo: {curTextLineNo}, line: '{curTextLine}' at {Environment.StackTrace}";
//throw new Exception(errorMessage);
Serilog.Log.Warning(errorMessage);
}
}
}
public static partial class Extensions
{
public static bool TryPeek<T>(this Stack<T> stack, /*[MaybeNullWhen(false)]*/ out T result)
{
if (stack.Count > 0)
{
result = stack.Peek();
return true;
}
else
{
result = default!;
return false;
}
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 5e191fef871d30041a55c3c8af5aab43
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,429 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
using YamlDotNet = Meryel.UnityCodeAssist.YamlDotNet;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor.Input
{
internal class UnityInputManager
{
//string yamlPath;
TextReader? reader;
InputManager? inputManager;
public void ReadFromText(string text)
{
reader = new StringReader(text);
ReadAux(false, out _);
}
public void ReadFromPath(string yamlPath)
{
switch (UnityEditor.EditorSettings.serializationMode)
{
case UnityEditor.SerializationMode.ForceText:
{
reader = new StreamReader(yamlPath);
ReadAux(false, out _);
}
break;
case UnityEditor.SerializationMode.ForceBinary:
{
// this approach will work for InputManager since its file size is small and limited
// but in the future, we may need to switch to reading binary files for big files
// like this https://github.com/Unity-Technologies/UnityDataTools
// or this https://github.com/SeriousCache/UABE
var converted = GetOrCreateConvertedFile(yamlPath);
if (!File.Exists(converted))
{
Serilog.Log.Warning("Temp file {TempFile} couldn't found for converted yaml input file. Auto Input Manager will not work!", converted);
return;
}
var rawLines = File.ReadLines(converted);
var yamlText = Text2Yaml.Convert(rawLines);
reader = new StringReader(yamlText);
ReadAux(false, out _);
}
break;
case UnityEditor.SerializationMode.Mixed:
{
reader = new StreamReader(yamlPath);
ReadAux(true, out var hasSemanticError);
if (hasSemanticError)
{
var converted = GetOrCreateConvertedFile(yamlPath);
if (!File.Exists(converted))
{
Serilog.Log.Warning("Temp file {TempFile} couldn't found for converted yaml input file. Auto Input Manager will not work!", converted);
return;
}
var rawLines = File.ReadLines(converted);
var yamlText = Text2Yaml.Convert(rawLines);
reader = new StringReader(yamlText);
ReadAux(false, out _);
}
}
break;
}
}
void ReadAux(bool canHaveSemanticError, out bool hasSemanticError)
{
hasSemanticError = false;
if (reader == null)
{
Serilog.Log.Warning($"{nameof(UnityInputManager)}.{nameof(reader)} is null");
return;
}
//var reader = new StreamReader(yamlPath);
var deserializer = new YamlDotNet.Serialization.DeserializerBuilder()
//.WithTagMapping("tag:unity3d.com,2011:13", typeof(Class13Mapper))
.WithNodeTypeResolver(new Tag13Resolver()) // some users have "tag:yousandi.cn,2023:13" instead, so use a more generic approach
.IgnoreUnmatchedProperties()
.Build();
//serializer.Settings.RegisterTagMapping("tag:unity3d.com,2011:13", typeof(Class13));
//serializer.Settings.ComparerForKeySorting = null;
Class13Mapper? result;
try
{
result = deserializer.Deserialize<Class13Mapper>(reader);
}
catch (YamlDotNet.Core.SemanticErrorException semanticErrorException)
{
Serilog.Log.Debug(semanticErrorException, "Couldn't parse InputManager.asset yaml file");
if (!canHaveSemanticError)
Serilog.Log.Error(semanticErrorException, "Couldn't parse InputManager.asset yaml file unexpectedly");
hasSemanticError = true;
return;
}
finally
{
reader.Close();
}
var inputManagerMapper = result?.InputManager;
if (inputManagerMapper == null)
{
Serilog.Log.Warning($"{nameof(inputManagerMapper)} is null");
return;
}
inputManager = new InputManager(inputManagerMapper);
}
public void SendData()
{
if (inputManager == null)
return;
var axisNames = inputManager.Axes.Select(a => a.Name!).Where(n => !string.IsNullOrEmpty(n)).Distinct().ToArray();
var axisInfos = axisNames.Select(a => inputManager.Axes.GetInfo(a)).ToArray();
if (!CreateBindingsMap(out var buttonKeys, out var buttonAxis))
return;
string[] joystickNames;
try
{
joystickNames = UnityEngine.Input.GetJoystickNames();
}
catch (InvalidOperationException)
{
// Occurs if user have switched active Input handling to Input System package in Player Settings.
joystickNames = new string[0];
}
MQTTnetInitializer.Publisher?.SendInputManager(axisNames, axisInfos, buttonKeys, buttonAxis, joystickNames);
/*
MQTTnetInitializer.Publisher?.SendInputManager(
inputManager.Axes.Select(a => a.Name).Distinct().ToArray(),
inputManager.Axes.Select(a => a.positiveButton).ToArray(),
inputManager.Axes.Select(a => a.negativeButton).ToArray(),
inputManager.Axes.Select(a => a.altPositiveButton).ToArray(),
inputManager.Axes.Select(a => a.altNegativeButton).ToArray(),
UnityEngine.Input.GetJoystickNames()
);
*/
}
bool CreateBindingsMap([System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out string[]? inputKeys, [System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out string[]? inputAxis)
{
if (inputManager == null)
{
inputKeys = null;
inputAxis = null;
return false;
}
var dict = new Dictionary<string, string?>();
foreach (var axis in inputManager.Axes)
{
if (axis.altNegativeButton != null && !string.IsNullOrEmpty(axis.altNegativeButton))
dict[axis.altNegativeButton] = axis.Name;
}
foreach (var axis in inputManager.Axes)
{
if (axis.negativeButton != null && !string.IsNullOrEmpty(axis.negativeButton))
dict[axis.negativeButton] = axis.Name;
}
foreach (var axis in inputManager.Axes)
{
if (axis.altPositiveButton != null && !string.IsNullOrEmpty(axis.altPositiveButton))
dict[axis.altPositiveButton] = axis.Name;
}
foreach (var axis in inputManager.Axes)
{
if (axis.positiveButton != null && !string.IsNullOrEmpty(axis.positiveButton))
dict[axis.positiveButton] = axis.Name;
}
var keys = new string[dict.Count];
var values = new string[dict.Count];
dict.Keys.CopyTo(keys, 0);
dict.Values.CopyTo(values, 0);
inputKeys = keys;
inputAxis = values;
return true;
}
static string GetOrCreateConvertedFile(string filePath)
{
var hash = GetMD5Hash(filePath);
var convertedPath = Path.Combine(Path.GetTempPath(), $"UCA_IM_{hash}.txt");
if (!File.Exists(convertedPath))
{
Serilog.Log.Debug("Converting binary to text format of {File} to {Target}", filePath, convertedPath);
var converter = new Binary2TextExec();
converter.Exec(filePath, convertedPath);
}
else
{
Serilog.Log.Debug("Converted file already exists at {Target}", convertedPath);
}
return convertedPath;
}
/// <summary>
/// Gets a hash of the file using MD5.
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string GetMD5Hash(string filePath)
{
using var md5 = new MD5CryptoServiceProvider();
return GetHash(filePath, md5);
}
/// <summary>
/// Gets a hash of the file using MD5.
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string GetMD5Hash(Stream s)
{
using var md5 = new MD5CryptoServiceProvider();
return GetHash(s, md5);
}
private static string GetHash(string filePath, HashAlgorithm hasher)
{
using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
return GetHash(fs, hasher);
}
private static string GetHash(Stream s, HashAlgorithm hasher)
{
var hash = hasher.ComputeHash(s);
var hashStr = Convert.ToBase64String(hash);
//return hashStr.TrimEnd('=');
var hashStrAlphaNumeric = System.Text.RegularExpressions.Regex.Replace(hashStr, "[^A-Za-z0-9]", "");
return hashStrAlphaNumeric;
}
}
public enum AxisType
{
KeyOrMouseButton = 0,
MouseMovement = 1,
JoystickAxis = 2
};
#pragma warning disable IDE1006
public class InputAxisMapper
{
public int serializedVersion { get; set; }
public string? m_Name { get; set; }
public string? descriptiveName { get; set; }
public string? descriptiveNegativeName { get; set; }
public string? negativeButton { get; set; }
public string? positiveButton { get; set; }
public string? altNegativeButton { get; set; }
public string? altPositiveButton { get; set; }
//public float gravity { get; set; }
//public float dead { get; set; }
//public float sensitivity { get; set; }
public string? gravity { get; set; }
public string? dead { get; set; }
public string? sensitivity { get; set; }
//public bool snap { get; set; }
public int snap { get; set; }
//public bool invert { get; set; }
public int invert { get; set; }
//public AxisType type { get; set; }
public int type { get; set; }
public int axis { get; set; }
public int joyNum { get; set; }
}
public class InputAxis
{
readonly InputAxisMapper map;
public InputAxis(InputAxisMapper map)
{
this.map = map;
}
public int SerializedVersion
{
get { return map.serializedVersion; }
set { map.serializedVersion = value; }
}
public string? Name => map.m_Name;
public string? descriptiveName => map.descriptiveName;
public string? descriptiveNegativeName => map.descriptiveNegativeName;
public string? negativeButton => map.negativeButton;
public string? positiveButton => map.positiveButton;
public string? altNegativeButton => map.altNegativeButton;
public string? altPositiveButton => map.altPositiveButton;
public float gravity => float.Parse(map.gravity);//**--format
public float dead => float.Parse(map.dead);//**--format
public float sensitivity => float.Parse(map.sensitivity);//**--format
public bool snap => map.snap != 0;
public bool invert => map.invert != 0;
public AxisType type => (AxisType)map.type;
public int axis => map.axis;
public int joyNum => map.joyNum;
}
public class InputManagerMapper
{
public int m_ObjectHideFlags { get; set; }
public int serializedVersion { get; set; }
public int m_UsePhysicalKeys { get; set; }
public List<InputAxisMapper>? m_Axes { get; set; }
}
#pragma warning restore IDE1006
public class InputManager
{
readonly InputManagerMapper map;
readonly List<InputAxis> axes;
public InputManager(InputManagerMapper map)
{
this.map = map;
this.axes = new List<InputAxis>();
if (map.m_Axes == null)
{
Serilog.Log.Warning($"map.m_Axes is null");
return;
}
foreach (var a in map.m_Axes)
this.axes.Add(new InputAxis(a));
}
public int ObjectHideFlags
{
get { return map.m_ObjectHideFlags; }
set { map.m_ObjectHideFlags = value; }
}
public int SerializedVersion
{
get { return map.serializedVersion; }
set { map.serializedVersion = value; }
}
public bool UsePhysicalKeys
{
get { return map.m_UsePhysicalKeys != 0; }
set { map.m_UsePhysicalKeys = value ? 1 : 0; }
}
/*public List<InputAxisMapper> Axes
{
get { return map.m_Axes; }
set { map.m_Axes = value; }
}*/
public List<InputAxis> Axes => axes;
}
public class Class13Mapper
{
public InputManagerMapper? InputManager { get; set; }
}
public class Tag13Resolver : YamlDotNet.Serialization.INodeTypeResolver
{
public bool Resolve(YamlDotNet.Core.Events.NodeEvent? nodeEvent, ref Type currentType)
{
if (nodeEvent != null && !nodeEvent.Tag.IsEmpty && !nodeEvent.Tag.IsNonSpecific)
{
var tagValue = nodeEvent.Tag.Value;
if (tagValue.EndsWith(":13"))
{
currentType = typeof(Class13Mapper);
return true;
}
}
return false;
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: abdf2bf92986f1d4f802bfedb8faf551
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,49 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using System.Collections.Concurrent;
using UnityEngine;
using UnityEditor;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor
{
[InitializeOnLoad]
public static class LazyInitializer
{
static int counter;
static LazyInitializer()
{
counter = -5;// start initializing five frames later
EditorApplication.update += OnUpdate;
}
static void OnUpdate()
{
counter++;
if (counter == 1)
MainThreadDispatcher.Bump();
else if (counter == 2)
Logger.ELogger.Bump();
else if (counter == 3)
Monitor.Bump();
else if (counter == 4)
MQTTnetInitializer.Bump();
else if (counter == 5)
Updater.CheckUpdateSilent();
else if (counter >= 6)
EditorApplication.update -= OnUpdate;
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: cc6e883c86567a34a94d52b99adf98bd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: e49522b31aa92804b9f942ab013e436b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,151 +0,0 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using static System.IO.Path;
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor
{
public static class CommonTools
{
public static string GetScriptPath(string script)
{
var projectPath = GetProjectPathRaw();
var toolPath = Combine(projectPath, "Packages/com.merry-yellow.code-assist/Editor/", script);
return toolPath;
}
/// <summary>
/// does NOT include the trailing slash
/// </summary>
/// <returns></returns>
public static string GetExternalReferencesPath()
{
var projectPath = GetProjectPathRaw();
var extRefPath = Combine(projectPath, "Packages/com.merry-yellow.code-assist/Editor/ExternalReferences");
return extRefPath;
}
[Obsolete]
public static string GetToolPath(string tool)
{
var projectPath = GetProjectPathRaw();
var toolPath = Combine(projectPath, "Packages/com.merry-yellow.code-assist/Tools~/", tool);
return toolPath;
}
public static string GetInstallerPath(string installer)
{
var projectPath = GetProjectPathRaw();
var installerPath = Combine(projectPath, "Packages/com.merry-yellow.code-assist/Installers~/", installer);
return installerPath;
}
public static string GetTagManagerFilePath()
{
var projectPath = GetProjectPathRaw();
var tagManagerPath = Combine(projectPath, "ProjectSettings/TagManager.asset");
return tagManagerPath;
}
public static string GetInputManagerFilePath()
{
var projectPath = GetProjectPathRaw();
var inputManagerPath = Combine(projectPath, "ProjectSettings/InputManager.asset");
return inputManagerPath;
}
public static string GetProjectPath()
{
var rawPath = GetProjectPathRaw();
//var pathWithoutWhiteSpace = rawPath.Trim(); // this is done in OSPath ctor
var osPath = new OSPath(rawPath);
var unixPath = osPath.Unix;
var trimmed = unixPath.TrimEnd('\\', '/');
var capitalized = FirstCharToUpper(trimmed); // this is required for TypeScript, so doing it here as well just in case
return capitalized!;
}
static string? FirstCharToUpper(string? input)
{
switch (input)
{
case null: return null;
case "": return "";
default: return input[0].ToString().ToUpper() + input.Substring(1);
}
}
/// <summary>
/// Get the path to the project folder.
/// </summary>
/// <returns>The project folder path</returns>
static string GetProjectPathRaw()
{
// Application.dataPath returns the path including /Assets, which we need to strip off
var path = UnityEngine.Application.dataPath;
var directory = new DirectoryInfo(path);
var parent = directory.Parent;
if (parent != null)
return parent.FullName;
return path;
}
public static string GetHashForLogFile(string path) => Synchronizer.Model.Utilities.GetHashForLogFile(path);
}
// https://github.com/dmitrynogin/cdsf/blob/master/Cds.Folders/OSPath.cs
internal class OSPath
{
public static readonly OSPath Empty = "";
public static bool IsWindows => DirectorySeparatorChar == '\\';
public OSPath(string text)
{
Text = text.Trim();
}
public static implicit operator OSPath(string text) => new OSPath(text);
public static implicit operator string(OSPath path) => path.Normalized;
public override string ToString() => Normalized;
protected string Text { get; }
public string Normalized => IsWindows ? Windows : Unix;
public string Windows => Text.Replace('/', '\\');
//public string Unix => Simplified.Text.Replace('\\', '/');
public string Unix => Text.Replace('\\', '/');
public OSPath Relative => Simplified.Text.TrimStart('/', '\\');
public OSPath Absolute => IsAbsolute ? this : "/" + Relative;
public bool IsAbsolute => IsRooted || HasVolume;
public bool IsRooted => Text.Length >= 1 && (Text[0] == '/' || Text[0] == '\\');
public bool HasVolume => Text.Length >= 2 && Text[1] == ':';
public OSPath Simplified => HasVolume ? Text.Substring(2) : Text;
public OSPath Parent => GetDirectoryName(Text);
public bool Contains(OSPath path) =>
Normalized.StartsWith(path);
public static OSPath operator +(OSPath left, OSPath right) =>
new OSPath(Combine(left, right.Relative));
public static OSPath operator -(OSPath left, OSPath right) =>
left.Contains(right)
? new OSPath(left.Normalized.Substring(right.Normalized.Length)).Relative
: left;
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 9066c480a2fcb9940a432377a49262af
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,203 +0,0 @@
//using Meryel.UnityCodeAssist.Serilog;
//using Meryel.UnityCodeAssist.Serilog.Core;
using UnityEngine;
using UnityEditor;
using System.Linq;
#if ELOGGER
#pragma warning disable IDE0005
using Serilog = Meryel.Serilog;
#pragma warning restore IDE0005
#nullable enable
namespace Meryel.UnityCodeAssist.Editor.Logger
{
//[InitializeOnLoad]
public static class ELogger
{
public static event System.Action? OnVsInternalLogChanged;
// Change 'new LoggerConfiguration().MinimumLevel.Debug();' if you change these values
const Serilog.Events.LogEventLevel fileMinLevel = Serilog.Events.LogEventLevel.Debug;
const Serilog.Events.LogEventLevel outputWindowMinLevel = Serilog.Events.LogEventLevel.Information;
static LoggingLevelSwitch? fileLevelSwitch, outputWindowLevelSwitch;
//static bool IsInitialized { get; set; }
static ILogEventSink? _outputWindowSink;
static ILogEventSink? _memorySink;
public static string GetInternalLogContent() => _memorySink == null ? string.Empty : ((MemorySink)_memorySink).Export();
public static int GetErrorCountInInternalLog() => _memorySink == null ? 0 : ((MemorySink)_memorySink).ErrorCount;
public static int GetWarningCountInInternalLog() => _memorySink == null ? 0 : ((MemorySink)_memorySink).WarningCount;
public static string? FilePath { get; private set; }
public static string? VSFilePath { get; private set; }
//**-- make it work with multiple clients
static string? _vsInternalLog;
public static string? VsInternalLog
{
get => _vsInternalLog;
set
{
_vsInternalLog = value;
OnVsInternalLogChanged?.Invoke();
}
}
static ELogger()
{
var isFirst = false;
const string stateName = "isFirst";
if (!SessionState.GetBool(stateName, false))
{
isFirst = true;
SessionState.SetBool(stateName, true);
}
var projectPath = CommonTools.GetProjectPath();
var outputWindowSink = new System.Lazy<ILogEventSink>(() => new UnityOutputWindowSink(null));
Init(isFirst, projectPath, outputWindowSink);
if (isFirst)
LogHeader(Application.unityVersion, projectPath);
}
/// <summary>
/// Empty method for invoking static class ctor
/// </summary>
public static void Bump() { }
static void LogHeader(string unityVersion, string solutionDir)
{
var os = System.Runtime.InteropServices.RuntimeInformation.OSDescription;
var assisterVersion = Assister.Version;
var syncModel = Synchronizer.Model.Utilities.Version;
var hash = CommonTools.GetHashForLogFile(solutionDir);
var port = Synchronizer.Model.Utilities.GetPortForMQTTnet(solutionDir);
Serilog.Log.Debug(
"Beginning logging {OS}, Unity {U}, Unity Code Assist {A}, Communication Protocol {SM}, Project: '{Dir}', Project Hash: {Hash}, Port: {Port}",
os, unityVersion, assisterVersion, syncModel, solutionDir, hash, port);
}
static string GetFilePath(string solutionDir)
{
var solutionHash = CommonTools.GetHashForLogFile(solutionDir);
var tempDir = System.IO.Path.GetTempPath();
var fileName = $"UnityCodeAssist_U_Log_{solutionHash}_.TXT"; // hour code will be appended to the end of file, so add a trailing '_'
var filePath = System.IO.Path.Combine(tempDir, fileName);
return filePath;
}
static string GetVSFilePath(string solutionDir)
{
var solutionHash = CommonTools.GetHashForLogFile(solutionDir);
var tempDir = System.IO.Path.GetTempPath();
#if MERYEL_UCA_LITE_VERSION
var fileName = $"UnityCodeAssistLite_VS_Log_{solutionHash}_.TXT"; // hour code will be appended to the end of file, so add a trailing '_'
#else
var fileName = $"UnityCodeAssist_VS_Log_{solutionHash}_.TXT"; // hour code will be appended to the end of file, so add a trailing '_'
#endif
var filePath = System.IO.Path.Combine(tempDir, fileName);
return filePath;
}
public static void Init(bool isFirst, string solutionDir, System.Lazy<ILogEventSink> outputWindowSink)
{
FilePath = GetFilePath(solutionDir);
VSFilePath = GetVSFilePath(solutionDir);
fileLevelSwitch = new LoggingLevelSwitch(fileMinLevel);
outputWindowLevelSwitch = new LoggingLevelSwitch(outputWindowMinLevel);
var config = new LoggerConfiguration()
.MinimumLevel.Debug()
.Enrich.With(new DomainHashEnricher());
const string outputTemplate = "{Timestamp:HH:mm:ss.fff} [U] [{Level:u3}] [{DomainHash}] {Message:lj}{NewLine}{Exception}";
config = config.WriteTo.PersistentFile(FilePath
, outputTemplate: outputTemplate
, shared: true
, persistentFileRollingInterval: PersistentFileRollingInterval.Day
, preserveLogFilename: true
, levelSwitch: fileLevelSwitch
, rollOnEachProcessRun: isFirst
);
_outputWindowSink ??= outputWindowSink.Value;
if (_outputWindowSink != null)
config = config.WriteTo.Sink(_outputWindowSink, outputWindowMinLevel, outputWindowLevelSwitch);
_memorySink ??= new MemorySink(outputTemplate);
config = config.WriteTo.Sink(_memorySink, fileMinLevel, null);
config = config.Destructure.With(new MyDestructuringPolicy());
Serilog.Log.Logger = config.CreateLogger();
//switchableLogger.Set(config.CreateLogger(), disposePrev: true);
OnOptionsChanged();
//IsInitialized = true;
}
public static void OnOptionsChanged()
{
// Since we don't use LogEventLevel.Fatal, we can use it for disabling sinks
var isLoggingToFile = OptionsIsLoggingToFile;
var targetFileLevel = isLoggingToFile ? fileMinLevel : Serilog.Events.LogEventLevel.Fatal;
if (fileLevelSwitch != null)
fileLevelSwitch.MinimumLevel = targetFileLevel;
var isLoggingToOutputWindow = OptionsIsLoggingToOutputWindow;
var targetOutputWindowLevel = isLoggingToOutputWindow ? outputWindowMinLevel : Serilog.Events.LogEventLevel.Fatal;
if (outputWindowLevelSwitch != null)
outputWindowLevelSwitch.MinimumLevel = targetOutputWindowLevel;
}
//**-- UI for these two
static bool OptionsIsLoggingToFile => true;
static bool OptionsIsLoggingToOutputWindow => true;
}
public class MyDestructuringPolicy : IDestructuringPolicy
{
// serilog cannot destruct StringArrayContainer by default, so do it manually
public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory, [System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out Serilog.Events.LogEventPropertyValue? result)
{
if (value is Synchronizer.Model.StringArrayContainer sac)
{
var items = sac.Container.Select(item => propertyValueFactory.CreatePropertyValue(item, true));
result = new Serilog.Events.SequenceValue(items);
return true;
}
result = null;
return false;
}
}
}
#endif

Some files were not shown because too many files have changed in this diff Show More