protected override SPPoint Spawn(AISpawnData spData)
    {
        base.Spawn(spData);

        Vector3    pos;
        Quaternion rot;

        if (GetPositionAndRotation(out pos, out rot, spData.minAngle, spData.maxAngle))
        {
            //if (!GameConfig.IsMultiMode)
            {
                SPPointMovable movable = SPPoint.InstantiateSPPoint <SPPointMovable>(pos,
                                                                                     rot,
                                                                                     IntVector4.Zero,
                                                                                     pointParent,
                                                                                     spData.isPath ? 0 : spData.spID,
                                                                                     spData.isPath ? spData.spID : 0,
                                                                                     true,
                                                                                     true,
                                                                                     false,
                                                                                     false,
                                                                                     true,
                                                                                     null,
                                                                                     OnSpawned,
                                                                                     this) as SPPointMovable;

                movable.target = transform;
                return(movable);
            }
        }

        return(null);
    }
示例#2
0
    Vector3 GetRandomPosition(AISpawnData data, Vector3 center)
    {
        for (int i = 0; i < 10; i++)
        {
            Vector3 pos = AiUtil.GetRandomPosition(center, minRadius, maxRadius, Vector3.forward, data.minAngle, data.maxAngle);
            if (!IsInCSCommon(pos))
            {
                return(pos);
            }
        }

        return(Vector3.zero);
    }
示例#3
0
    bool GetPositionAndRotation(AISpawnData data, out Vector3 pos, out Quaternion rot, out Vector3 target)
    {
        pos    = Vector3.zero;
        rot    = Quaternion.identity;
        target = Vector3.zero;

        Vector3 point = GetRandom();

        if (point != Vector3.zero)
        {
            IntVector4 node = AiUtil.ConvertToIntVector4(point, 0);
            //IntVector2 vec2 = new IntVector2(node.x, node.z);

            //if (AiManager.Manager.colliders.ContainsKey(vec2))
            //{
            //    Vector3 center = point;
            //    if (CSMain.s_MgCreator.Assembly != null)
            //        center = CSMain.s_MgCreator.Assembly.Position;

            //    pos = GetRandomPosition(data, center);
            //    target = point;
            //}
            //else
            {
                pos    = GetPosition(node);
                target = Vector3.zero;
            }

            //pos = GetPositionFromCollider(node);

            if (pos != Vector3.zero)
            {
                rot = Quaternion.AngleAxis(Random.Range(0, 360), Vector3.up);
                return(true);
            }
        }

        return(false);
    }
示例#4
0
    protected override SPPoint Spawn(AISpawnData spData)
    {
        base.Spawn(spData);

        Vector3    pos;
        Quaternion rot;
        Vector3    target;

        if (GetPositionAndRotation(spData, out pos, out rot, out target))
        {
            SPPointSimulate simulate = SPPoint.InstantiateSPPoint <SPPointSimulate>(pos,
                                                                                    rot,
                                                                                    IntVector4.Zero,
                                                                                    pointParent,
                                                                                    spData.isPath ? 0 : spData.spID,
                                                                                    spData.isPath ? spData.spID : 0,
                                                                                    true,
                                                                                    true,
                                                                                    false,
                                                                                    false,
                                                                                    true,
                                                                                    null,
                                                                                    OnSpawned,
                                                                                    this) as SPPointSimulate;

            simulate.SetData(damage, minInterval, maxInterval, damageRadius);
            simulate.targetPos = target;

            if (!simulates.Contains(simulate))
            {
                simulates.Add(simulate);
            }

            return(simulate);
        }

        return(null);
    }
示例#5
0
 protected virtual SPPoint Spawn(AISpawnData spData)
 {
     return(null);
 }