public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); bridgeWidth = details.Params[0]; bridgeType = (DynamicBridgeType)details.Params[1]; if (bridgeType > DynamicBridgeType.Lab) { bridgeType = DynamicBridgeType.Rope; } int toughness = details.Params[2]; heightFactor = MathF.Sqrt((16 - toughness) * bridgeWidth) * 4f; Vector3 pos = Transform.Pos; originalY = pos.Y - 6; bridgePieces = new List <Piece>(); int[] widthList = PieceWidths[(int)bridgeType]; int widthCovered = widthList[0] / 2; for (int i = 0; (widthCovered <= bridgeWidth * 16 + 6) || (i * 16 < bridgeWidth); i++) { Piece piece = new Piece(); piece.OnAttach(new ActorInstantiationDetails { Api = api, Pos = new Vector3(pos.X + widthCovered - 16, pos.Y - 20, LevelHandler.MainPlaneZ + 10), Params = new[] { (ushort)bridgeType, (ushort)i } }); api.AddActor(piece); bridgePieces.Add(piece); widthCovered += (widthList[i % widthList.Length] + widthList[(i + 1) % widthList.Length]) / 2; } collisionFlags = CollisionFlags.CollideWithOtherActors /*| CollisionFlags.IsSolidObject*/; OnUpdateHitbox(); }
public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); DynamicBridgeType bridgeType = (DynamicBridgeType)details.Params[0]; canBeFrozen = false; RequestMetadata("Object/BridgePiece"); switch (bridgeType) { case DynamicBridgeType.Gem: SetAnimation("Gem"); break; case DynamicBridgeType.Lab: SetAnimation("Lab"); break; case DynamicBridgeType.Log: SetAnimation("Log"); break; default: case DynamicBridgeType.Rope: SetAnimation("Rope"); break; case DynamicBridgeType.Stone: SetAnimation("Stone"); break; case DynamicBridgeType.StoneRed: SetAnimation("StoneRed"); break; case DynamicBridgeType.Vine: SetAnimation("Vine"); break; } int variations = currentAnimation.FrameCount; if (variations > 0) { ushort idx = details.Params[1]; renderer.AnimFirstFrame = idx % variations; } collisionFlags = CollisionFlags.CollideWithOtherActors | CollisionFlags.IsSolidObject | CollisionFlags.SkipPerPixelCollisions; IsOneWay = true; }