// Token: 0x060000C1 RID: 193 RVA: 0x000089D8 File Offset: 0x00006BD8 public static tk2dSpriteAnimationClip BuildAnimation(AIAnimator aiAnimator, string name, string spriteDirectory, int fps) { tk2dSpriteCollectionData tk2dSpriteCollectionData = aiAnimator.GetComponent <tk2dSpriteCollectionData>(); bool flag = !tk2dSpriteCollectionData; if (flag) { tk2dSpriteCollectionData = SpriteBuilder.ConstructCollection(aiAnimator.gameObject, aiAnimator.name + "_collection"); } string[] resourceNames = ResourceExtractor.GetResourceNames(); List <int> list = new List <int>(); for (int i = 0; i < resourceNames.Length; i++) { bool flag2 = resourceNames[i].StartsWith(spriteDirectory.Replace('/', '.'), StringComparison.OrdinalIgnoreCase); if (flag2) { list.Add(SpriteBuilder.AddSpriteToCollection(resourceNames[i], tk2dSpriteCollectionData)); } } tk2dSpriteAnimationClip tk2dSpriteAnimationClip = SpriteBuilder.AddAnimation(aiAnimator.spriteAnimator, tk2dSpriteCollectionData, list, name, tk2dSpriteAnimationClip.WrapMode.Loop); tk2dSpriteAnimationClip.fps = (float)fps; return(tk2dSpriteAnimationClip); }
public static tk2dSpriteAnimationClip BuildAnimation(AIAnimator aiAnimator, string name, string spriteDirectory, int fps, tk2dSpriteAnimationClip.WrapMode wrapMode = tk2dSpriteAnimationClip.WrapMode.Loop) { tk2dSpriteCollectionData collection = aiAnimator.GetComponent <tk2dSpriteCollectionData>(); if (!collection) { collection = SpriteBuilder.ConstructCollection(aiAnimator.gameObject, $"{aiAnimator.name}_collection"); } string[] resources = ResourceExtractor.GetResourceNames(); List <int> indices = new List <int>(); for (int i = 0; i < resources.Length; i++) { if (resources[i].StartsWith(spriteDirectory.Replace('/', '.'), StringComparison.OrdinalIgnoreCase)) { indices.Add(SpriteBuilder.AddSpriteToCollection(resources[i], collection)); } } tk2dSpriteAnimationClip clip = SpriteBuilder.AddAnimation(aiAnimator.spriteAnimator, collection, indices, name, tk2dSpriteAnimationClip.WrapMode.Loop); clip.fps = fps; clip.wrapMode = wrapMode; return(clip); }
public static void BuildPrefab() { if (blobPrefab != null || CompanionBuilder.companionDictionary.ContainsKey(guid)) { ETGModConsole.Log("Tried to make the same Blob prefab twice!"); return; } blobPrefab = CompanionBuilder.BuildPrefab("Baby Good Blob", guid, spritePaths[0], new IntVector2(1, 0), new IntVector2(9, 9)); var blob = blobPrefab.AddComponent <RandomGoopTrailBehaviour>(); var aiAnimator = blobPrefab.GetComponent <AIAnimator>(); aiAnimator.MoveAnimation = new DirectionalAnimation() { AnimNames = new string[] { "idle" }, Type = DirectionalAnimation.DirectionType.None }; aiAnimator.IdleAnimation = aiAnimator.MoveAnimation; if (blobCollection == null) { blobCollection = SpriteBuilder.ConstructCollection(blobPrefab, "Baby_Good_Blob_Collection"); GameObject.DontDestroyOnLoad(blobCollection); for (int i = 0; i < spritePaths.Length; i++) { SpriteBuilder.AddSpriteToCollection(spritePaths[i], blobCollection); } SpriteBuilder.AddAnimation(blob.spriteAnimator, blobCollection, new List <int>() { 0, 1, 2, 3, 4, 5 }, "idle", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 5; } var bs = blobPrefab.GetComponent <BehaviorSpeculator>(); bs.MovementBehaviors.Add(new CompanionFollowPlayerBehavior() { IdleAnimations = new string[] { "idle" } }); bs.MovementBehaviors.Add(new SeekTargetBehavior() { LineOfSight = false, StopWhenInRange = true, CustomRange = 1f }); blob.aiActor.MovementSpeed = 7; GameObject.DontDestroyOnLoad(blobPrefab); FakePrefab.MarkAsFakePrefab(blobPrefab); blobPrefab.SetActive(false); }
public static void BuildPrefab() { bool flag = prefab != null || EnemyBuilder.Dictionary.ContainsKey(guid); bool flag2 = flag; if (!flag2) { prefab = EnemyBuilder.BuildPrefab("Bullet Dog", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false); var companion = prefab.AddComponent <EnemyBehavior>(); companion.aiActor.knockbackDoer.weight = 20; companion.aiActor.MovementSpeed = 10f; companion.aiActor.healthHaver.PreventAllDamage = false; companion.aiActor.CollisionDamage = 1f; companion.aiActor.HasShadow = false; companion.aiActor.IgnoreForRoomClear = false; companion.aiActor.aiAnimator.HitReactChance = 0f; companion.aiActor.specRigidbody.CollideWithOthers = true; companion.aiActor.specRigidbody.CollideWithTileMap = true; companion.aiActor.PreventFallingInPitsEver = false; companion.aiActor.healthHaver.ForceSetCurrentHealth(6f); companion.aiActor.CollisionKnockbackStrength = 5f; companion.aiActor.CanTargetPlayers = true; companion.aiActor.healthHaver.SetHealthMaximum(6f, null, false); companion.aiActor.specRigidbody.PixelColliders.Clear(); companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyCollider, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 0, ManualOffsetY = 0, ManualWidth = 16, ManualHeight = 16, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0 }); companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyHitBox, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 0, ManualOffsetY = 0, ManualWidth = 16, ManualHeight = 16, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0, }); companion.aiActor.PreventBlackPhantom = false; AIAnimator aiAnimator = companion.aiAnimator; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "die", anim = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Flipped = new DirectionalAnimation.FlipType[1], AnimNames = new string[] { "die", } } } }; aiAnimator.IdleAnimation = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.TwoWayHorizontal, Flipped = new DirectionalAnimation.FlipType[2], AnimNames = new string[] { "idle_right", "idle_left" } }; aiAnimator.MoveAnimation = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.EightWayOrdinal, Flipped = new DirectionalAnimation.FlipType[8], AnimNames = new string[] { "run_north", "run_north_east", "run_east", "run_south_east", "run_south", "run_south_west", "run_west", "run_north_west" } }; bool flag3 = BulletDogCollection == null; if (flag3) { BulletDogCollection = SpriteBuilder.ConstructCollection(prefab, "Bullet_Dog_Collection"); UnityEngine.Object.DontDestroyOnLoad(BulletDogCollection); for (int i = 0; i < spritePaths.Length; i++) { SpriteBuilder.AddSpriteToCollection(spritePaths[i], BulletDogCollection); } SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 0, 1, 2, 3, 4, }, "idle_left", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 8f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 5, 6, 7, 8, 9, }, "idle_right", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 8f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 10, 11, 12, 13, 14, }, "run_south_west", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 15, 16, 17, 18, 19 }, "run_south_east", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 20, 21, 22, 23, 24, 25, }, "run_north", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 26, 27, 28, 29, 30, 31, }, "run_north_west", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 32, 33, 34, 35, 36, 37 }, "run_north_east", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 38, 39, 40, 41, 42, 43 }, "run_west", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 44, 45, 46, 47, 48 }, "run_east", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 49, 50, 51, 52, 53 }, "run_south", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BulletDogCollection, new List <int> { 54, 55, 56, 57, 58, 59 }, "die", tk2dSpriteAnimationClip.WrapMode.Once).fps = 8f; } var bs = prefab.GetComponent <BehaviorSpeculator>(); BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").behaviorSpeculator; bs.OverrideBehaviors = behaviorSpeculator.OverrideBehaviors; bs.OtherBehaviors = behaviorSpeculator.OtherBehaviors; bs.TargetBehaviors = new List <TargetBehaviorBase> { new TargetPlayerBehavior { Radius = 35f, LineOfSight = true, ObjectPermanence = true, SearchInterval = 0.25f, PauseOnTargetSwitch = false, PauseTime = 0.25f } }; bs.MovementBehaviors = new List <MovementBehaviorBase> { new SeekTargetBehavior { StopWhenInRange = false, CustomRange = 12f, LineOfSight = false, ReturnToSpawn = false, SpawnTetherDistance = 0f, PathInterval = 0.5f, SpecifyRange = false, MinActiveRange = 0f, MaxActiveRange = 0f } }; bs.InstantFirstTick = behaviorSpeculator.InstantFirstTick; bs.TickInterval = behaviorSpeculator.TickInterval; bs.PostAwakenDelay = behaviorSpeculator.PostAwakenDelay; bs.RemoveDelayOnReinforce = behaviorSpeculator.RemoveDelayOnReinforce; bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection; bs.StartingFacingDirection = behaviorSpeculator.StartingFacingDirection; bs.SkipTimingDifferentiator = behaviorSpeculator.SkipTimingDifferentiator; Game.Enemies.Add("cel:bullet_dog", companion.aiActor); } }