コード例 #1
0
        private SerializedPath GenerateRectanglePathInset(Vector2 BasePosition, IntVector2 Dimensions)
        {
            IntVector2 basePosition = BasePosition.ToIntVector2();

            basePosition += new IntVector2(-1, 0);
            Dimensions   += IntVector2.One;
            SerializedPath serializedPath = new SerializedPath(basePosition);

            serializedPath.AddPosition(basePosition + Dimensions.WithY(0));
            serializedPath.AddPosition(basePosition + Dimensions);
            serializedPath.AddPosition(basePosition + Dimensions.WithX(0));
            serializedPath.wrapMode = SerializedPath.SerializedPathWrapMode.Loop;
            SerializedPathNode value = serializedPath.nodes[0];

            value.placement         = SerializedPathNode.SerializedNodePlacement.NorthEast;
            serializedPath.nodes[0] = value;
            value                   = serializedPath.nodes[1];
            value.placement         = SerializedPathNode.SerializedNodePlacement.NorthWest;
            serializedPath.nodes[1] = value;
            value                   = serializedPath.nodes[2];
            value.placement         = SerializedPathNode.SerializedNodePlacement.SouthWest;
            serializedPath.nodes[2] = value;
            value                   = serializedPath.nodes[3];
            value.placement         = SerializedPathNode.SerializedNodePlacement.SouthEast;
            serializedPath.nodes[3] = value;
            return(serializedPath);
        }
コード例 #2
0
        public void ConfigureOnPlacement(RoomHandler room)
        {
            gameObject.SetActive(true);
            enabled = true;

            IntVector2 SpawnPosition = (gameObject.transform.PositionVector2().ToIntVector2() - room.area.basePosition);
            Vector2    NodePosition  = SpawnPosition.ToVector2();

            SerializedPath SawBladePath = GenerateRectanglePathInset(NodePosition, PathNodeAreaSize);

            room.area.prototypeRoom.paths.Add(SawBladePath);

            DungeonPlaceable m_TrapPlacable = BraveResources.Load <DungeonPlaceable>("RobotDaveTraps", ".asset");

            GameObject sawbladePrefab = null;

            if (m_TrapPlacable)
            {
                sawbladePrefab = m_TrapPlacable.variantTiers[0].nonDatabasePlaceable;
            }

            if (sawbladePrefab)
            {
                GameObject m_PlacedSawBlade = Instantiate(sawbladePrefab, gameObject.transform.position, Quaternion.identity);
                m_PlacedSawBlade.SetActive(false);

                if (m_PlacedSawBlade)
                {
                    PathMover SawPathMover = m_PlacedSawBlade.GetComponent <PathMover>();
                    if (SawPathMover != null)
                    {
                        SawPathMover.RoomHandler             = room;
                        SawPathMover.Path                    = SawBladePath;
                        SawPathMover.PathStartNode           = Random.Range(0, SawBladePath.nodes.Count);
                        SawPathMover.IsUsingAlternateTargets = false;
                        SawPathMover.ForceCornerDelayHack    = false;
                        SawPathMover.nodeOffset              = PathNodeOffset;
                        m_PlacedSawBlade.SetActive(true);
                    }
                }
            }
        }