From a62a6343da10b48b46e0437d7d83f569bfdb884d Mon Sep 17 00:00:00 2001 From: Jiaqi Liu Date: Thu, 27 Jul 2023 21:36:16 -0700 Subject: [PATCH] Updates --- .../SkeletalAnimationActorActionController.cs | 11 ++++--- .../Pal3/Renderer/SkeletalModelRenderer.cs | 12 +++++-- .../ResourceViewer/GameResourceViewer.cs | 31 ------------------- 3 files changed, 15 insertions(+), 39 deletions(-) diff --git a/Assets/Scripts/Pal3/Actor/SkeletalAnimationActorActionController.cs b/Assets/Scripts/Pal3/Actor/SkeletalAnimationActorActionController.cs index 7ce24e9d4..90e641a83 100644 --- a/Assets/Scripts/Pal3/Actor/SkeletalAnimationActorActionController.cs +++ b/Assets/Scripts/Pal3/Actor/SkeletalAnimationActorActionController.cs @@ -117,7 +117,7 @@ public override void PerformAction(string actionName, public override float GetActorHeight() { - if (_skeletalModelRenderer == null) + if (_skeletalModelRenderer == null || !_skeletalModelRenderer.IsVisible()) { return _meshBounds.size.y; } @@ -127,13 +127,13 @@ public override float GetActorHeight() public override Bounds GetRendererBounds() { - return _skeletalModelRenderer == null ? _rendererBounds : + return (_skeletalModelRenderer == null || !_skeletalModelRenderer.IsVisible()) ? _rendererBounds : _skeletalModelRenderer.GetRendererBounds(); } public override Bounds GetMeshBounds() { - return _skeletalModelRenderer == null ? _meshBounds : + return (_skeletalModelRenderer == null || !_skeletalModelRenderer.IsVisible()) ? _meshBounds : _skeletalModelRenderer.GetMeshBounds(); } @@ -167,11 +167,12 @@ public void Execute(ActorAutoStandCommand command) public void Execute(ActorStopActionCommand command) { if (command.ActorId != _actor.Info.Id || - _skeletalModelRenderer == null) return; + _skeletalModelRenderer == null || + !_skeletalModelRenderer.IsVisible()) return; _skeletalModelRenderer.PauseAnimation(); - if (_autoStand) + if (_autoStand && _skeletalModelRenderer.IsVisible()) { PerformAction(_actor.GetIdleAction()); } diff --git a/Assets/Scripts/Pal3/Renderer/SkeletalModelRenderer.cs b/Assets/Scripts/Pal3/Renderer/SkeletalModelRenderer.cs index 222a1af0d..a65f8ec2a 100644 --- a/Assets/Scripts/Pal3/Renderer/SkeletalModelRenderer.cs +++ b/Assets/Scripts/Pal3/Renderer/SkeletalModelRenderer.cs @@ -109,7 +109,7 @@ public void Init(MshFile mshFile, RenderMesh(); } - public void StartAnimation(MovFile mov, int loopCount = -1) + public void StartAnimation(MovFile movFile, int loopCount = -1) { if (_renderMeshComponents == null) { @@ -117,7 +117,7 @@ public void StartAnimation(MovFile mov, int loopCount = -1) } PauseAnimation(); - BindJointTrack(mov); + SetupAnimationTrack(movFile); _animationCts = new CancellationTokenSource(); _animation = StartCoroutine(PlayAnimationInternalAsync(loopCount, @@ -134,7 +134,7 @@ public void PauseAnimation() } } - private void BindJointTrack(MovFile movFile) + private void SetupAnimationTrack(MovFile movFile) { // Reset all existing bone animation tracks foreach (Bone bone in _bones.Values) @@ -203,6 +203,7 @@ private void UpdateBone(Bone bone, uint tick) { int currentFrameIndex = Utility.GetFloorIndex(bone.FrameTicks, tick); + // TODO: Interpolate between frames Vector3 localPosition = track.Value.KeyFrames[currentFrameIndex].Translation; Quaternion localRotation = track.Value.KeyFrames[currentFrameIndex].Rotation; @@ -402,6 +403,11 @@ public Bounds GetMeshBounds() return bounds; } + public bool IsVisible() + { + return _meshObjects != null; + } + private void OnDisable() { Dispose(); diff --git a/Assets/Scripts/ResourceViewer/GameResourceViewer.cs b/Assets/Scripts/ResourceViewer/GameResourceViewer.cs index cbee1893d..6753050e4 100644 --- a/Assets/Scripts/ResourceViewer/GameResourceViewer.cs +++ b/Assets/Scripts/ResourceViewer/GameResourceViewer.cs @@ -120,37 +120,6 @@ private void OnEnable() #endif //__Malicious__Dev_Only__(); - DebugMovMsh(); - } - - private void DebugMovMsh() - { - string movFilePath = "basedata.cpk\\ROLE\\282\\z1.MOV"; - string mshFilePath = "basedata.cpk\\ROLE\\282\\282.MSH"; - - try - { - MshFile mshFile = _resourceProvider.GetGameResourceFile(mshFilePath); - MovFile movFile = _resourceProvider.GetGameResourceFile(movFilePath); - - ITextureResourceProvider textureProvider = _resourceProvider.CreateTextureResourceProvider( - Utility.GetRelativeDirectoryPath(mshFilePath)); - - var boneGo = new GameObject(Utility.GetFileName(movFilePath, CpkConstants.DirectorySeparator)); - var skeletalRenderer = boneGo.AddComponent(); - skeletalRenderer.transform.SetParent(_renderingRoot.transform); - - skeletalRenderer.Init(mshFile, - _resourceProvider.GetMaterialFactory(), - textureProvider, - "282.tga"); - - skeletalRenderer.StartAnimation(movFile); - } - catch (Exception ex) - { - Debug.LogException(ex); - } } private void __Malicious__Dev_Only__()