Merge branch 'megaminerjenny:master' into master

This commit is contained in:
kkuhn317 2023-01-07 15:37:57 -05:00 committed by GitHub
commit 26ffde0234
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
54 changed files with 12765 additions and 139 deletions

View file

@ -22473,6 +22473,145 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c8bf5d56f80c8814489e7b35cc9421ff, type: 3}
m_Name:
m_EditorClassIdentifier:
SoundSequences:
- name: arisa_hai
sequence:
game: 1
force: 0
clips:
- clip: fanClub/arisa_hai_1_jp
beat: 0
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/arisa_hai_2_jp
beat: 1
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/arisa_hai_3_jp
beat: 2
pitch: 1
volume: 1
looping: 0
offset: 0
- name: crowd_hai
sequence:
game: 1
force: 0
clips:
- clip: fanClub/crowd_hai_jp
beat: 0
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/crowd_hai_jp
beat: 1
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/crowd_hai_jp
beat: 2
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/crowd_hai_jp
beat: 3
pitch: 1
volume: 1
looping: 0
offset: 0
- name: arisa_kamone
sequence:
game: 1
force: 0
clips:
- clip: fanClub/arisa_ka_jp
beat: 0
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/arisa_mo_jp
beat: 0.5
pitch: 1
volume: 1
looping: 0
offset: 0.07407407
- clip: fanClub/arisa_ne_jp
beat: 1
pitch: 1
volume: 1
looping: 0
offset: 0.07407407
- name: arisa_kamone_fast
sequence:
game: 1
force: 0
clips:
- clip: fanClub/arisa_ka_fast_jp
beat: 0
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/arisa_mo_fast_jp
beat: 0.25
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/arisa_ne_fast_jp
beat: 0.5
pitch: 1
volume: 1
looping: 0
offset: 0
- name: crowd_kamone
sequence:
game: 1
force: 0
clips:
- clip: fanClub/crowd_ka_jp
beat: 0
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/crowd_mo_jp
beat: 1.5
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/crowd_ne_jp
beat: 2
pitch: 1
volume: 1
looping: 0
offset: 0
- clip: fanClub/crowd_hey_jp
beat: 3
pitch: 1
volume: 1
looping: 0
offset: 0
- name: crowd_big_ready
sequence:
game: 1
force: 0
clips:
- clip: fanClub/crowd_big_ready
beat: 0
pitch: 1
volume: 1
looping: 0
offset: 0
EligibleHits: []
scheduledInputs: []
firstEnable: 0

File diff suppressed because it is too large Load diff

View file

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

View file

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

View file

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

View file

@ -0,0 +1,71 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Animation
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: -497912792735699408, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
- time: 1
value: {fileID: -497912792735699408, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: -497912792735699408, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
- {fileID: -497912792735699408, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1.0166667
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 004f3f096798f3b4e8748e2c777d2188
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,74 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Tree
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: -497912792735699408, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
- time: 0.033333335
value: {fileID: 1748789042723271327, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
- time: 0.06666667
value: {fileID: -497912792735699408, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: -497912792735699408, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
- {fileID: 1748789042723271327, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
- {fileID: -497912792735699408, guid: ca4775e289092c04791daaf42e19cacb, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.083333336
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View file

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

View file

@ -0,0 +1,101 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-5095786733867502548
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Tree
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: b5ac51f8fe0a3d643875f51a00440c03, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &-2637781695860704411
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -5095786733867502548}
m_Position: {x: 210, y: 10, z: 0}
- serializedVersion: 1
m_State: {fileID: -688706219392362908}
m_Position: {x: 230, y: 60, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -5095786733867502548}
--- !u!1102 &-688706219392362908
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Tree 0
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: b5ac51f8fe0a3d643875f51a00440c03, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Tree_1
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: -2637781695860704411}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View file

@ -0,0 +1,96 @@
fileFormatVersion: 2
guid: 2852fb0cb46d68d4f90ec1c132420329
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,96 @@
fileFormatVersion: 2
guid: fa00491d2c42b994d86449ce1511e321
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -0,0 +1,96 @@
fileFormatVersion: 2
guid: bed3e4f80ea594440b1db49866e29387
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text.RegularExpressions;
using UnityEngine;
using Newtonsoft.Json;
@ -344,8 +345,33 @@ namespace HeavenStudio
System.Type type, pType;
foreach (var e in entities)
{
game = EventCaller.instance.GetMinigame(e.datamodel.Split(0));
action = EventCaller.instance.GetGameAction(game, e.datamodel.Split(1));
var gameName = e.datamodel.Split(0);
var actionName = e.datamodel.Split(1);
game = EventCaller.instance.GetMinigame(gameName);
if (game == null)
{
Debug.LogWarning($"Unknown game {gameName} found in remix.json! Adding game...");
game = new Minigames.Minigame(gameName, DisplayName(gameName) + " \n<color=#eb5454>[inferred from remix.json]</color>", "", false, true, new List<Minigames.GameAction>());
EventCaller.instance.minigames.Add(game);
Editor.Editor.instance.AddIcon(game);
}
action = EventCaller.instance.GetGameAction(game, actionName);
if (action == null)
{
Debug.LogWarning($"Unknown action {gameName}/{actionName} found in remix.json! Adding action...");
var parameters = new List<Minigames.Param>();
foreach (var item in e.DynamicData)
{
var value = item.Value;
if (value.GetType() == typeof(long))
value = new EntityTypes.Integer(int.MinValue, int.MaxValue, (int)value);
else if (value.GetType() == typeof(double))
value = new EntityTypes.Float(float.NegativeInfinity, float.PositiveInfinity, (float)value);
parameters.Add(new Minigames.Param(item.Key, value, item.Key, "[inferred from remix.json]"));
}
action = new Minigames.GameAction(actionName, DisplayName(actionName), e.length, true, parameters);
game.actions.Add(action);
}
Dictionary<string, dynamic> dynamicData = new Dictionary<string, dynamic>();
//check each param of the action
if (action.parameters != null)
@ -361,9 +387,9 @@ namespace HeavenStudio
{
Debug.LogWarning($"Property {param.propertyName} does not exist in the entity's dynamic data! Adding...");
if (type == typeof(EntityTypes.Integer))
dynamicData.Add(param.propertyName, (int)param.parameter);
dynamicData.Add(param.propertyName, ((EntityTypes.Integer)param.parameter).val);
else if (type == typeof(EntityTypes.Float))
dynamicData.Add(param.propertyName, (float)param.parameter);
dynamicData.Add(param.propertyName, ((EntityTypes.Float)param.parameter).val);
else if (type.IsEnum && param.propertyName != "ease")
dynamicData.Add(param.propertyName, (int)param.parameter);
else
@ -408,5 +434,29 @@ namespace HeavenStudio
}
}
}
private string DisplayName(string name)
{
// "gameName" -> "Game Name"
// "action name" -> "Action Name"
if (!name.Contains(" "))
name = SplitCamelCase(name);
System.Globalization.TextInfo textInfo = new System.Globalization.CultureInfo("en-US", false).TextInfo;
return textInfo.ToTitleCase(name);
}
// https://stackoverflow.com/a/5796793
public static string SplitCamelCase(string str)
{
return Regex.Replace(
Regex.Replace(
str,
@"(\P{Ll})(\P{Ll}\p{Ll})",
"$1 $2"
),
@"(\p{Ll})(\P{Ll})",
"$1 $2"
);
}
}
}

View file

@ -0,0 +1,79 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using UnityEngine;
namespace HeavenStudio.Util
{
/// <summary>
/// MultiSound that is serializable in the inspector, etc.
/// </summary>
[Serializable]
public class SoundSequence
{
[Tooltip("Should sequence use game specific-sounds?")]
[SerializeField] bool game;
[Tooltip("Should sequence force playback even if corresponding game is not loaded?")]
[SerializeField] bool force;
[Tooltip("Clips to play in the sequence")]
[SerializeField] private List<SequenceClip> clips = new List<SequenceClip>();
public SoundSequence(bool game, bool force, params SequenceClip[] clips)
{
this.game = game;
this.force = force;
this.clips = new List<SequenceClip>(clips);
}
public MultiSound Play(float startBeat)
{
List<MultiSound.Sound> sounds = new List<MultiSound.Sound>();
foreach (SequenceClip clip in clips)
{
sounds.Add(new MultiSound.Sound(clip.clip, startBeat + clip.beat, clip.pitch, clip.volume, clip.looping, clip.offset));
}
return MultiSound.Play(sounds.ToArray(), game, force);
}
[Serializable]
public struct SequenceClip
{
public SequenceClip(string clip, float beat, float pitch = 1f, float volume = 1f, bool looping = false, float offset = 0f)
{
this.clip = clip;
this.beat = beat;
this.pitch = pitch;
this.volume = volume;
this.looping = looping;
this.offset = offset;
}
[Tooltip("Filename of clip to use (will look in assetbundles before resources)")]
public string clip;
[Tooltip("Beat to play clip at relative to start of sequence")]
public float beat;
[Tooltip("Pitch to play clip at")]
[DefaultValue(1f)]
public float pitch;
[Tooltip("Volume to play clip at")]
[DefaultValue(1f)]
public float volume;
[Tooltip("Whether to loop the clip")]
public bool looping;
[Tooltip("Offset to start playing clip")]
public float offset;
}
[Serializable]
public struct SequenceKeyValue
{
[Tooltip("Name of sequence (game scripts will call sequences to play using this name")]
public string name;
[Tooltip("Sequence to play")]
public SoundSequence sequence;
}
}
}

View file

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

View file

@ -22,16 +22,22 @@ namespace HeavenStudio
// Current song position, in seconds
private double songPos; // for Conductor use only
public float songPosition => (float) songPos;
public double songPositionAsDouble => songPos;
// Current song position, in beats
private double songPosBeat; // for Conductor use only
public float songPositionInBeats => (float) songPosBeat;
public double songPositionInBeatsAsDouble => songPosBeat;
// Current time of the song
private double time;
double lastAbsTime;
// the dspTime we started at
private double dspStartTime;
public double dspStartTimeAsDouble => dspStartTime;
// an AudioSource attached to this GameObject that will play the music.
public AudioSource musicSource;
@ -52,6 +58,7 @@ namespace HeavenStudio
// Metronome tick sound enabled
public bool metronome = false;
Util.Sound metronomeSound;
public float timeSinceLastTempoChange = Single.MinValue;
@ -142,6 +149,7 @@ namespace HeavenStudio
}
}
lastAbsTime = Time.realtimeSinceStartupAsDouble;
dspStartTime = AudioSettings.dspTime;
// GameManager.instance.SetCurrentEventToClosest(songPositionInBeats);
}
@ -189,13 +197,21 @@ namespace HeavenStudio
{
if (ReportBeat(ref lastReportedBeat))
{
Util.Jukebox.PlayOneShot("metronome");
metronomeSound = Util.Jukebox.PlayOneShot("metronome", lastReportedBeat + 1f);
}
else if (songPositionInBeats < lastReportedBeat)
{
lastReportedBeat = Mathf.Round(songPositionInBeats);
}
}
else
{
if (metronomeSound != null)
{
metronomeSound.Delete();
metronomeSound = null;
}
}
}
public bool ReportBeat(ref float lastReportedBeat, float offset = 0, bool shiftBeatToOffset = true)

View file

@ -89,6 +89,23 @@ namespace HeavenStudio
}
}
public void CallPreEvent(DynamicBeatmap.DynamicEntity entity)
{
string[] details = entity.datamodel.Split('/');
Minigames.Minigame game = minigames.Find(c => c.name == details[0]);
try
{
currentEntity = entity;
Minigames.GameAction action = game.actions.Find(c => c.actionName == details[1]);
action.preFunction.Invoke();
}
catch (Exception ex)
{
Debug.LogWarning("Event not found! May be spelled wrong or it is not implemented.\n" + ex);
}
}
public static List<DynamicBeatmap.DynamicEntity> GetAllInGameManagerList(string gameName, string[] include)
{
List<DynamicBeatmap.DynamicEntity> temp1 = GameManager.instance.Beatmap.entities.FindAll(c => c.datamodel.Split('/')[0] == gameName);

View file

@ -33,7 +33,7 @@ namespace HeavenStudio
[Header("Properties")]
public int currentEvent, currentTempoEvent, currentVolumeEvent, currentSectionEvent,
currentPreEvent, currentPreSwitch;
currentPreEvent, currentPreSwitch, currentPreSequence;
public float endBeat;
public float startOffset;
public bool playOnStart;
@ -48,7 +48,7 @@ namespace HeavenStudio
return (Conductor.instance.songPositionInBeats - currentSection.beat) / (nextSection.beat - currentSection.beat);
}}
public event Action<float> onBeatChanged;
public event Action<float> onBeatChanged;
public event Action<DynamicBeatmap.ChartSection> onSectionChange;
public int BeatmapEntities()
@ -69,6 +69,7 @@ namespace HeavenStudio
{
currentPreEvent= 0;
currentPreSwitch = 0;
currentPreSequence = 0;
this.transform.localScale = new Vector3(30000000, 30000000);
@ -219,6 +220,24 @@ namespace HeavenStudio
}
}
public void SeekAheadAndDoPreEvent(float start, float seekTime = 1f)
{
List<float> entities = Beatmap.entities.Select(c => c.beat).ToList();
if (currentPreSequence < Beatmap.entities.Count && currentPreSequence >= 0)
{
if (start + seekTime >= entities[currentPreSequence])
{
float beat = Beatmap.entities[currentPreSequence].beat;
var entitiesAtSameBeat = Beatmap.entities.FindAll(c => c.beat == Beatmap.entities[currentPreSequence].beat);
foreach (DynamicBeatmap.DynamicEntity entity in entitiesAtSameBeat)
{
eventCaller.CallPreEvent(entity);
}
currentPreSequence++;
}
}
}
// LateUpdate works a bit better(?) but causes some bugs (like issues with bop animations).
private void Update()
{
@ -272,6 +291,8 @@ namespace HeavenStudio
//seek ahead to preload games that have assetbundles
SeekAheadAndPreload(Conductor.instance.songPositionInBeats, seekTime);
SeekAheadAndDoPreEvent(Conductor.instance.songPositionInBeats, 1f);
if (currentEvent < Beatmap.entities.Count && currentEvent >= 0)
{
if (Conductor.instance.songPositionInBeats >= entities[currentEvent] /*&& SongPosLessThanClipLength(Conductor.instance.songPositionInBeats)*/)
@ -390,6 +411,7 @@ namespace HeavenStudio
currentEvent = entities.IndexOf(Mathp.GetClosestInList(entities, beat));
currentPreEvent = entities.IndexOf(Mathp.GetClosestInList(entities, beat));
currentPreSequence = entities.IndexOf(Mathp.GetClosestInList(entities, beat));
var gameSwitchs = Beatmap.entities.FindAll(c => c.datamodel.Split(1) == "switchGame");
@ -577,14 +599,18 @@ namespace HeavenStudio
{
if (gameInfo.fxOnly)
{
name = Beatmap.entities.FindAll(c => {
var gameEntities = Beatmap.entities.FindAll(c => {
var gameName = c.datamodel.Split(0);
var newGameInfo = GetGameInfo(gameName);
if (newGameInfo == null)
return false;
else
return !newGameInfo.fxOnly;
}).ToList()[0].datamodel.Split(0);
}).ToList();
if (gameEntities.Count != 0)
name = gameEntities[0].datamodel.Split(0);
else
name = "noGame";
}
else
{

View file

@ -160,7 +160,7 @@ namespace HeavenStudio.Games.Scripts_DJSchool
tableAnim.speed = 1;
tableAnim.Play("Student_Turntable_Swipe", 0, 0);
Instantiate(slamFX).SetActive(true);
Instantiate(slamFX, this.transform.parent).SetActive(true);
mixer.audioMixer.FindSnapshot("Main").TransitionTo(.01f);
}
else
@ -177,7 +177,7 @@ namespace HeavenStudio.Games.Scripts_DJSchool
tableAnim.speed = 1;
tableAnim.Play("Student_Turntable_Swipe", 0, 0);
Instantiate(slamFX).SetActive(true);
Instantiate(slamFX, this.transform.parent).SetActive(true);
mixer.audioMixer.FindSnapshot("Main").TransitionTo(.01f);
}

View file

@ -182,7 +182,6 @@ namespace HeavenStudio.Games
private void Awake()
{
instance = this;
Spectators = new List<GameObject>();
idolAnimator = Arisa.GetComponent<Animator>();
@ -528,12 +527,7 @@ namespace HeavenStudio.Games
public void CallHai(float beat, bool noSound = false, int type = 0)
{
if (!noSound)
MultiSound.Play(new MultiSound.Sound[] {
new MultiSound.Sound("fanClub/arisa_hai_1_jp", beat),
new MultiSound.Sound("fanClub/arisa_hai_2_jp", beat + 1f),
new MultiSound.Sound("fanClub/arisa_hai_3_jp", beat + 2f),
});
PlaySoundSequence("arisa_hai", beat);
responseToggle = false;
DisableBop(beat, 8f);
@ -556,12 +550,7 @@ namespace HeavenStudio.Games
new BeatAction.Action(beat + 7f, delegate { PlayOneClap(beat + 7f); DoIdolClaps();}),
});
MultiSound.Play(new MultiSound.Sound[] {
new MultiSound.Sound("fanClub/crowd_hai_jp", beat + 4f),
new MultiSound.Sound("fanClub/crowd_hai_jp", beat + 5f),
new MultiSound.Sound("fanClub/crowd_hai_jp", beat + 6f),
new MultiSound.Sound("fanClub/crowd_hai_jp", beat + 7f),
});
PlaySoundSequence("crowd_hai", beat + 4f);
}
public static void WarnHai(float beat, bool noSound = false, int type = 0)
@ -586,27 +575,12 @@ namespace HeavenStudio.Games
bool doJump = (responseType == (int) KamoneResponseType.Jump || responseType == (int) KamoneResponseType.JumpFast);
bool isBig = (responseType == (int) KamoneResponseType.ThroughFast || responseType == (int) KamoneResponseType.JumpFast);
DisableResponse(beat, 2f);
if (isBig)
if (!noSound)
{
if (!noSound)
{
MultiSound.Play(new MultiSound.Sound[] {
new MultiSound.Sound("fanClub/arisa_ka_fast_jp", beat),
new MultiSound.Sound("fanClub/arisa_mo_fast_jp", beat + 0.25f),
new MultiSound.Sound("fanClub/arisa_ne_fast_jp", beat + 0.5f),
});
}
}
else
{
if (!noSound)
{
MultiSound.Play(new MultiSound.Sound[] {
new MultiSound.Sound("fanClub/arisa_ka_jp", beat),
new MultiSound.Sound("fanClub/arisa_mo_jp", beat + 0.5f, offset: 0.07407407f),
new MultiSound.Sound("fanClub/arisa_ne_jp", beat + 1f, offset: 0.07407407f),
});
}
if (isBig)
PlaySoundSequence("arisa_kamone_fast", beat);
else
PlaySoundSequence("arisa_kamone", beat);
}
responseToggle = true;
@ -640,12 +614,7 @@ namespace HeavenStudio.Games
}),
});
MultiSound.Play(new MultiSound.Sound[] {
new MultiSound.Sound("fanClub/crowd_ka_jp", beat + 2f),
new MultiSound.Sound("fanClub/crowd_mo_jp", beat + 3.5f),
new MultiSound.Sound("fanClub/crowd_ne_jp", beat + 4f),
new MultiSound.Sound("fanClub/crowd_hey_jp", beat + 5f),
});
PlaySoundSequence("crowd_kamone", beat + 2f);
}
public static void WarnKamone(float beat, bool noSound = false, int type = 0, int responseType = (int) KamoneResponseType.Through)
@ -679,11 +648,11 @@ namespace HeavenStudio.Games
const float BIGCALL_LENGTH = 2.75f;
public void CallBigReady(float beat, bool noSound = false)
{
if (!noSound)
PlaySoundSequence("crowd_big_ready", beat);
Prepare(beat + 1.5f);
Prepare(beat + 2f);
if (!noSound)
Jukebox.PlayOneShotGame("fanClub/crowd_big_ready");
DisableSpecBop(beat, 3.75f);
@ -701,7 +670,7 @@ namespace HeavenStudio.Games
{
wantBigReady = beat;
if (noSound) return;
Jukebox.PlayOneShotGame("fanClub/crowd_big_ready");
Jukebox.PlayOneShotGame("fanClub/crowd_big_ready", beat);
}
public void ContinueBigReady(float beat)

View file

@ -2,11 +2,15 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HeavenStudio.Util;
namespace HeavenStudio.Games
{
public class Minigame : MonoBehaviour
{
public static float earlyTime = 0.1f, perfectTime = 0.08f, aceEarlyTime = 0.025f, aceLateTime = 0.025f, lateTime = 0.08f, endTime = 0.1f;
[SerializeField] public SoundSequence.SequenceKeyValue[] SoundSequences;
public List<Minigame.Eligible> EligibleHits = new List<Minigame.Eligible>();
[System.Serializable]
@ -211,5 +215,18 @@ namespace HeavenStudio.Games
return sameTime;
}
public MultiSound PlaySoundSequence(string name, float startBeat)
{
foreach (SoundSequence.SequenceKeyValue pair in SoundSequences)
{
if (pair.name == name)
{
return pair.sequence.Play(startBeat);
}
}
Debug.LogWarning($"Sound sequence {name} not found in game {this.name} (did you build AssetBundles?)");
return null;
}
}
}

View file

@ -37,7 +37,7 @@ namespace HeavenStudio.Games.Loaders
new Param("type", PajamaParty.SleepType.Normal, "Sleep Type", "Type of sleep action to use"),
new Param("toggle", false, "Alt. Animation", "Use an alternate animation for Mako")
},
inactiveFunction = delegate {var e = eventCaller.currentEntity; PajamaParty.WarnSleepSequence(e.beat, e["toggle"]);}
inactiveFunction = delegate {var e = eventCaller.currentEntity; PajamaParty.WarnSleepSequence(e.beat, e["toggle"], e["type"]);}
},
new GameAction("throw", "Throw Pillows")
{
@ -280,7 +280,7 @@ namespace HeavenStudio.Games
});
}
public static void WarnSleepSequence(float beat, bool alt = false)
public static void WarnSleepSequence(float beat, bool alt = false, int action = (int) PajamaParty.SleepType.Normal)
{
MultiSound.Play(new MultiSound.Sound[] {
new MultiSound.Sound("pajamaParty/siesta1", beat),
@ -291,6 +291,7 @@ namespace HeavenStudio.Games
}, forcePlay: true);
WantSleepSequence = beat;
WantSleepType = alt;
WantSleepAction = action;
}
public void DoBedImpact()

View file

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

View file

@ -0,0 +1,36 @@
using HeavenStudio.Util;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace HeavenStudio.Games.Loaders
{
using static Minigames;
public static class AgbGhostLoader
{
public static Minigame AddGame(EventCaller eventCaller) {
return new Minigame("sneakySpirits", "Sneaky Spirits \n<color=#eb5454>[INITIALIZATION ONLY]</color>", "0058CE", false, false, new List<GameAction>()
{
});
}
}
}
namespace HeavenStudio.Games
{
//using Scripts_SneakySpirits;
public class SneakySpirits : Minigame
{
// Start is called before the first frame update
void Awake()
{
}
// Update is called once per frame
void Update()
{
}
}
}

View file

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

View file

@ -100,15 +100,8 @@ namespace HeavenStudio.Editor
GameManager.instance.Init();
Timeline.Init();
for (int i = 0; i < EventCaller.instance.minigames.Count; i++)
{
GameObject GameIcon_ = Instantiate(GridGameSelector.GetChild(0).gameObject, GridGameSelector);
GameIcon_.GetComponent<Image>().sprite = GameIcon(EventCaller.instance.minigames[i].name);
GameIcon_.GetComponent<GridGameSelectorGame>().MaskTex = GameIconMask(EventCaller.instance.minigames[i].name);
GameIcon_.GetComponent<GridGameSelectorGame>().UnClickIcon();
GameIcon_.gameObject.SetActive(true);
GameIcon_.name = EventCaller.instance.minigames[i].displayName;
}
foreach (var minigame in EventCaller.instance.minigames)
AddIcon(minigame);
Tooltip.AddTooltip(NewBTN.gameObject, "New <color=#adadad>[Ctrl+N]</color>");
Tooltip.AddTooltip(OpenBTN.gameObject, "Open <color=#adadad>[Ctrl+O]</color>");
@ -128,6 +121,16 @@ namespace HeavenStudio.Editor
BuildDateDisplay.text = GlobalGameManager.buildTime;
}
public void AddIcon(Minigames.Minigame minigame)
{
GameObject GameIcon_ = Instantiate(GridGameSelector.GetChild(0).gameObject, GridGameSelector);
GameIcon_.GetComponent<Image>().sprite = GameIcon(minigame.name);
GameIcon_.GetComponent<GridGameSelectorGame>().MaskTex = GameIconMask(minigame.name);
GameIcon_.GetComponent<GridGameSelectorGame>().UnClickIcon();
GameIcon_.gameObject.SetActive(true);
GameIcon_.name = minigame.displayName;
}
public void LateUpdate()
{
#region Keyboard Shortcuts

View file

@ -20,6 +20,7 @@ namespace HeavenStudio
{
public class Minigame
{
public string name;
public string displayName;
public string color;

View file

@ -151,8 +151,6 @@ namespace HeavenStudio.Util
return null;
}
//TODO: playing sounds from assetbundles
public static void KillLoop(Sound source, float fadeTime)
{
// Safeguard against previously-destroyed sounds.

View file

@ -8,10 +8,10 @@ namespace HeavenStudio.Util
public class MultiSound : MonoBehaviour
{
private float startBeat;
private int index;
private bool game;
private bool forcePlay;
public List<Sound> sounds = new List<Sound>();
public List<Util.Sound> playingSounds = new List<Util.Sound>();
public class Sound
{
@ -37,39 +37,35 @@ namespace HeavenStudio.Util
public static MultiSound Play(Sound[] snds, bool game = true, bool forcePlay = false)
{
List<Sound> sounds = snds.ToList();
GameObject gameObj = new GameObject();
MultiSound ms = gameObj.AddComponent<MultiSound>();
GameObject go = new GameObject("MultiSound");
MultiSound ms = go.AddComponent<MultiSound>();
ms.sounds = sounds;
ms.startBeat = sounds[0].beat;
ms.game = game;
ms.forcePlay = forcePlay;
gameObj.name = "MultiSound";
GameManager.instance.SoundObjects.Add(gameObj);
for (int i = 0; i < sounds.Count; i++)
{
Util.Sound s;
if (game)
s = Jukebox.PlayOneShotGame(sounds[i].name, sounds[i].beat - Conductor.instance.GetRestFromRealTime(sounds[i].offset), sounds[i].pitch, sounds[i].volume, sounds[i].looping, forcePlay);
else
s = Jukebox.PlayOneShot(sounds[i].name, sounds[i].beat - Conductor.instance.GetRestFromRealTime(sounds[i].offset), sounds[i].pitch, sounds[i].volume, sounds[i].looping);
ms.playingSounds.Add(s);
}
GameManager.instance.SoundObjects.Add(go);
return ms;
}
private void Update()
{
float songPositionInBeats = Conductor.instance.songPositionInBeats;
for (int i = 0; i < sounds.Count; i++)
foreach (Util.Sound sound in playingSounds)
{
if (songPositionInBeats >= sounds[i].beat - Conductor.instance.GetRestFromRealTime(sounds[i].offset) && index == i)
{
if (game)
Jukebox.PlayOneShotGame(sounds[i].name, sounds[i].beat - Conductor.instance.GetRestFromRealTime(sounds[i].offset), sounds[i].pitch, sounds[i].volume, sounds[i].looping, forcePlay);
else
Jukebox.PlayOneShot(sounds[i].name, sounds[i].beat - Conductor.instance.GetRestFromRealTime(sounds[i].offset), sounds[i].pitch, sounds[i].volume, sounds[i].looping);
index++;
}
}
if (songPositionInBeats >= (sounds[sounds.Count - 1].beat - Conductor.instance.GetRestFromRealTime(sounds[sounds.Count - 1].offset)))
{
Delete();
if (sound != null)
return;
}
Delete();
}
public void Delete()

View file

@ -23,12 +23,13 @@ namespace HeavenStudio.Util
private int pauseTimes = 0;
private float startTime;
private double startTime;
public float beat;
public float scheduledPitch = 1f;
bool playInstant = false;
int playIndex = 0;
bool played = false;
private void Start()
{
@ -40,39 +41,50 @@ namespace HeavenStudio.Util
if (beat == -1 && !scheduled)
{
audioSource.PlayScheduled(Time.time);
audioSource.PlayScheduled(AudioSettings.dspTime);
playInstant = true;
playIndex++;
played = true;
startTime = Conductor.instance.songPositionAsDouble;
StartCoroutine(NotRelyOnBeatSound());
}
else
{
playInstant = false;
scheduledPitch = Conductor.instance.musicSource.pitch;
startTime = (AudioSettings.dspTime + (Conductor.instance.GetSongPosFromBeat(beat) - Conductor.instance.songPositionAsDouble)/(double)scheduledPitch);
audioSource.PlayScheduled(startTime);
Debug.Log($"Scheduling future sound {clip.name} for beat {beat} (scheduled: {startTime}, current time: {AudioSettings.dspTime})");
}
startTime = Conductor.instance.songPosition;
if (!scheduled && !looping)
StartCoroutine(NotRelyOnBeatSound());
}
private void Update()
{
if (playIndex < 1)
if (!played)
{
if (scheduled)
{
if (AudioSettings.dspTime > scheduledTime)
{
StartCoroutine(NotRelyOnBeatSound());
playIndex++;
played = true;
}
}
else if (!playInstant)
{
if (Conductor.instance.songPositionInBeats > beat)
if (AudioSettings.dspTime > startTime)
{
audioSource.PlayScheduled(Time.time);
playIndex++;
played = true;
StartCoroutine(NotRelyOnBeatSound());
}
else
{
if (!played && scheduledPitch != Conductor.instance.musicSource.pitch)
{
scheduledPitch = Conductor.instance.musicSource.pitch;
startTime = (AudioSettings.dspTime + (Conductor.instance.GetSongPosFromBeat(beat) - Conductor.instance.songPositionAsDouble)/(double)scheduledPitch);
audioSource.SetScheduledStartTime(startTime);
Debug.Log($"Rescheduling future sound {clip.name} for beat {beat} (scheduled: {startTime}, current time: {AudioSettings.dspTime})");
}
}
}
}
@ -94,7 +106,7 @@ namespace HeavenStudio.Util
{
if (!looping) // Looping sounds are destroyed manually.
{
yield return new WaitForSeconds(clip.length);
yield return new WaitForSeconds(clip.length / pitch);
Delete();
}
}

View file

@ -1,5 +1,5 @@
ManifestFileVersion: 0
CRC: 2362860034
CRC: 1243838037
AssetBundleManifest:
AssetBundleInfos:
Info_0:

View file

@ -1,12 +1,12 @@
ManifestFileVersion: 0
CRC: 4200721013
CRC: 1167382196
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 996e27defaede200a0288a246ceb7785
Hash: 91ca0253f29ae5f7a1df107a25dc7c75
TypeTreeHash:
serializedVersion: 2
Hash: 77ce82dcd01e7c9c803f77daf119d967
Hash: 222d3ac4260743916f7d5e044ddd31d4
HashAppended: 0
ClassTypes:
- Class: 1

Binary file not shown.

View file

@ -1,12 +1,12 @@
ManifestFileVersion: 0
CRC: 1499416464
CRC: 149759227
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 7dbbb737179d1cc7db1edb0a31c7e1ab
Hash: 462778359784eea47ee51c3c63402505
TypeTreeHash:
serializedVersion: 2
Hash: 2b92e6f111bbb24dabe3a2c56ea02b28
Hash: fc2a2e95963d1b3faf439c84ecb440b4
HashAppended: 0
ClassTypes:
- Class: 1

View file

@ -1,12 +1,12 @@
ManifestFileVersion: 0
CRC: 3719062968
CRC: 1663830856
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: eee37f302cb3e8cbe079bb5500cb45ed
Hash: 688c0aa50fbd25fe17346b36c6bf2176
TypeTreeHash:
serializedVersion: 2
Hash: 1341d321cd8444a4f78a51a8a0c6daff
Hash: 51d10f004f46f35e758498b711eedb2f
HashAppended: 0
ClassTypes:
- Class: 1

Binary file not shown.

View file

@ -1,12 +1,12 @@
ManifestFileVersion: 0
CRC: 1942609421
CRC: 3480558300
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 82fbc7ccb21aa83d8663117da7a24cbc
Hash: cfaae0e9f9c81b2d255e8da0db667aae
TypeTreeHash:
serializedVersion: 2
Hash: 558e305ab690efbcd3eff9455cc9f4dc
Hash: a669441aae6ee39a06c1090efd6d25bc
HashAppended: 0
ClassTypes:
- Class: 1

View file

@ -1,12 +1,12 @@
ManifestFileVersion: 0
CRC: 2386252366
CRC: 1706991399
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 6f57f7727dc4903488ea4956307caac1
Hash: ae519aaff83042895009b1d4dbae0a79
TypeTreeHash:
serializedVersion: 2
Hash: 6f0c5ebd30d7d3be8aad1c86837b5cc9
Hash: 994ea96351ef9c039cf2db2caf2c1169
HashAppended: 0
ClassTypes:
- Class: 1
@ -50,6 +50,12 @@ ClassTypes:
SerializeReferenceClassIdentifiers:
- AssemblyName: Assembly-CSharp
ClassName: HeavenStudio.Games.Minigame/Eligible
- AssemblyName: Assembly-CSharp
ClassName: HeavenStudio.Util.SoundSequence
- AssemblyName: Assembly-CSharp
ClassName: HeavenStudio.Util.SoundSequence/SequenceClip
- AssemblyName: Assembly-CSharp
ClassName: HeavenStudio.Util.SoundSequence/SequenceKeyValue
Assets:
- Assets/Resources/Sprites/Games/FanClub/Animations/Arisa/Arrange/IdolBigCall1Arrange.anim
- Assets/Resources/Sprites/Games/FanClub/Animations/Fan/Head/FanHead.controller

View file

@ -1,12 +1,12 @@
ManifestFileVersion: 0
CRC: 1695511499
CRC: 3961443211
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 24892cdb3bebaf86064204efdc197727
Hash: c56eae7afab3c51aa0d877ecb5fa6484
TypeTreeHash:
serializedVersion: 2
Hash: 788d5843115df613774b9a4b273d2334
Hash: 9a9bdfe5fc84d62897a4e311b61519be
HashAppended: 0
ClassTypes:
- Class: 1

View file

@ -2,17 +2,17 @@
"dependencies": {
"com.unity.2d.sprite": "1.0.0",
"com.unity.assetbundlebrowser": "https://github.com/Unity-Technologies/AssetBundles-Browser.git",
"com.unity.collab-proxy": "1.17.2",
"com.unity.ide.rider": "3.0.15",
"com.unity.ide.visualstudio": "2.0.16",
"com.unity.ide.vscode": "1.2.5",
"com.unity.nuget.newtonsoft-json": "3.0.2",
"com.unity.postprocessing": "3.2.1",
"com.unity.test-framework": "1.1.31",
"jillejr.newtonsoft.json-for-unity.converters": "1.3.0",
"com.unity.collab-proxy": "1.15.4",
"com.unity.ide.rider": "2.0.7",
"com.unity.ide.visualstudio": "2.0.12",
"com.unity.ide.vscode": "1.2.4",
"com.unity.postprocessing": "3.2.2",
"com.unity.test-framework": "1.1.29",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.4.8",
"com.unity.ugui": "1.0.0",
"jillejr.newtonsoft.json-for-unity.converters": "1.3.0",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",

View file

@ -14,10 +14,11 @@
"hash": "b7c279278d1a343c6957c9f15b45173d3211f01c"
},
"com.unity.collab-proxy": {
"version": "1.17.2",
"version": "1.15.4",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.nuget.newtonsoft-json": "2.0.0",
"com.unity.services.core": "1.0.1"
},
"url": "https://packages.unity.com"
@ -30,16 +31,16 @@
"url": "https://packages.unity.com"
},
"com.unity.ide.rider": {
"version": "3.0.15",
"version": "2.0.7",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ext.nunit": "1.0.6"
"com.unity.test-framework": "1.1.1"
},
"url": "https://packages.unity.com"
},
"com.unity.ide.visualstudio": {
"version": "2.0.16",
"version": "2.0.12",
"depth": 0,
"source": "registry",
"dependencies": {
@ -48,7 +49,7 @@
"url": "https://packages.unity.com"
},
"com.unity.ide.vscode": {
"version": "1.2.5",
"version": "1.2.4",
"depth": 0,
"source": "registry",
"dependencies": {},
@ -62,7 +63,7 @@
"url": "https://packages.unity.com"
},
"com.unity.postprocessing": {
"version": "3.2.1",
"version": "3.2.2",
"depth": 0,
"source": "registry",
"dependencies": {
@ -80,7 +81,7 @@
"url": "https://packages.unity.com"
},
"com.unity.test-framework": {
"version": "1.1.31",
"version": "1.1.29",
"depth": 0,
"source": "registry",
"dependencies": {

View file

@ -1,2 +1,2 @@
m_EditorVersion: 2020.3.39f1
m_EditorVersionWithRevision: 2020.3.39f1 (fd6670bb8be9)
m_EditorVersion: 2020.3.25f1
m_EditorVersionWithRevision: 2020.3.25f1 (9b9180224418)