//=====================================================

    private static string GetModelPath(eObstacleType type, int index)
    {
        var path = new StringBuilder();

        switch (type)
        {
        case eObstacleType.SWINGING_ARM:
            path.Append("Prefabs/Obstacles/Swinging/Arm/");
            index = Mathf.Clamp(index, 0, _obstaclesSwingingArm.Count - 1);
            path.Append(_obstaclesSwingingArm[index]);
            break;

        case eObstacleType.SWINGING_BODY:
            path.Append("Prefabs/Obstacles/Swinging/Body/");
            index = Mathf.Clamp(index, 0, _obstaclesSwingingBody.Count - 1);
            path.Append(_obstaclesSwingingBody[index]);
            break;

        case eObstacleType.PUSHABLE_BOX:
            path.Append("Prefabs/Obstacles/Pushable/Box/");
            index = Mathf.Clamp(index, 0, _pushableBoxes.Count - 1);
            path.Append(_pushableBoxes[index]);
            break;
        }

        return(string.IsNullOrEmpty(path.ToString()) == false ? path.ToString() : string.Empty);
    }
    //=====================================================

    public static Object GetPrefab(eObstacleType type)
    {
        Init();

        Object prefab = null;

        switch (type)
        {
        case eObstacleType.SWINGING:
            prefab = Resources.Load("Prefabs/Obstacles/Swinging/pfbSwingingObstacle");
            break;

        case eObstacleType.PUSHABLE_BOX:
            prefab = Resources.Load("Prefabs/Obstacles/Pushable/pfbPushable");
            break;

        case eObstacleType.MAGICAL_TRAP_ICE:
            prefab = Resources.Load("Prefabs/Obstacles/MagicalTraps/pfbMagicalTrapIce");
            break;

        case eObstacleType.MAGICAL_TRAP_WIND:
            prefab = Resources.Load("Prefabs/Obstacles/MagicalTraps/pfbMagicalTrapWind");
            break;
        }

        if (prefab != null)
        {
            return(prefab);
        }

        Debug.Log("Obstacle prefab not found in resources");
        return(null);
    }
示例#3
0
    //=====================================================

    private static Transform CreateObstacleContainers(eObstacleType type)
    {
        // Create containers for obstacles if they don't already exist
        var container   = GameObject.Find("Obstacles");
        var swinging    = GameObject.Find("Swinging");
        var pushable    = GameObject.Find("Pushable");
        var magicalTrap = GameObject.Find("MagicalTraps");

        if (container == null)
        {
            container = CreateContainer("Obstacles");

            if (swinging == null)
            {
                swinging = CreateContainer("Swinging", container);
            }

            if (pushable == null)
            {
                pushable = CreateContainer("Pushable", container);
            }

            if (magicalTrap == null)
            {
                magicalTrap = CreateContainer("MagicalTraps", container);
            }
        }
        else
        {
            Debug.Log("Instance of obstacle container found.");
        }

        // Return appropriate container
        switch (type)
        {
        case eObstacleType.SWINGING:
            return(swinging.transform);

        case eObstacleType.PUSHABLE_BOX:
            return(pushable.transform);

        case eObstacleType.MAGICAL_TRAP_ICE:
        case eObstacleType.MAGICAL_TRAP_WIND:
            return(magicalTrap.transform);
        }

        return(container.transform);
    }
示例#4
0
    //=====================================================

    private static void AddPushableObject()
    {
        const eObstacleType type = eObstacleType.PUSHABLE_BOX;
        var pfb = ResourcesObstacles.GetPrefab(type);
        var mdl = ResourcesObstacles.GetModel(type, 0);

        if (pfb == null)
        {
            return;
        }

        // Create containers for obstacles if they don't already exist
        var container = CreateObstacleContainers(type);

        var prefab = PrefabUtility.InstantiatePrefab(pfb) as GameObject;

        if (prefab == null)
        {
            return;
        }

        switch (type)
        {
        case eObstacleType.PUSHABLE_BOX:
            prefab.name = "PushableBox";
            break;
        }

        // Add to traps gameObject in hierarchy
        prefab.transform.parent = container;

        var script = prefab.GetComponent <Obstacle>();

        if (script != null)
        {
            script.Type = type;

            if (mdl != null)
            {
                var model = PrefabUtility.InstantiatePrefab(mdl) as GameObject;

                script.Init(model);
            }
        }

        PositionObjectAndSelect(prefab);
    }
示例#5
0
    //=====================================================

    public void Init(MagicalTrap parent, eObstacleType type)
    {
        _parent = parent;
        _type   = type;

        // ToDo: select / activate particle emmisions
        switch (_type)
        {
        case eObstacleType.MAGICAL_TRAP_ICE:
            _psIceFx.enableEmission = true;
            break;

        case eObstacleType.MAGICAL_TRAP_WIND:
            _psWindFx.enableEmission = true;
            break;
        }
    }
示例#6
0
    //=====================================================

    private static void AddObstacleOfType(eObstacleType type)
    {
        switch (type)
        {
        case eObstacleType.SWINGING:
            AddObstacleSwinging();
            break;

        case eObstacleType.PUSHABLE_BOX:
            AddPushableObject();
            break;

        case eObstacleType.MAGICAL_TRAP_ICE:
        case eObstacleType.MAGICAL_TRAP_WIND:
            AddMagicalTrap(type);
            break;
        }
    }
示例#7
0
    //=====================================================

    private static void AddObstacleSwinging()
    {
        const eObstacleType type = eObstacleType.SWINGING;
        var pfb   = ResourcesObstacles.GetPrefab(type);
        var mdl01 = ResourcesObstacles.GetModel(eObstacleType.SWINGING_ARM, 0);
        var mdl02 = ResourcesObstacles.GetModel(eObstacleType.SWINGING_BODY, 0);

        if (pfb == null)
        {
            return;
        }

        // Create containers for obstacles if they don't already exist
        var container = CreateObstacleContainers(type);

        var prefab = PrefabUtility.InstantiatePrefab(pfb) as GameObject;

        if (prefab == null)
        {
            return;
        }

        prefab.name = "SwingingObstacle";

        // Add to traps gameObject in hierarchy
        prefab.transform.parent = container;

        var script = prefab.GetComponent <SwingingObstacle>();

        if (script != null)
        {
            script.Type = type;

            if (mdl01 != null && mdl02 != null)
            {
                var model01 = PrefabUtility.InstantiatePrefab(mdl01) as GameObject;
                var model02 = PrefabUtility.InstantiatePrefab(mdl02) as GameObject;

                script.Init(model01, model02);
            }
        }

        PositionObjectAndSelect(prefab);
    }
    //=====================================================

    public static Object GetModel(eObstacleType type, int index)
    {
        Init();

        var path = GetModelPath(type, index);

        if (string.IsNullOrEmpty(path) == false)
        {
            var model = Resources.Load(path);

            if (model != null)
            {
                return(model);
            }
        }

        Debug.Log("Obstacle not found in resources: " + type + " [" + index + "]");
        return(null);
    }
示例#9
0
    //=====================================================

    private static void AddMagicalTrap(eObstacleType type)
    {
        var pfb = ResourcesObstacles.GetPrefab(type);

        if (pfb == null)
        {
            return;
        }

        // Create containers for obstacles if they don't already exist
        var container = CreateObstacleContainers(type);

        var prefab = PrefabUtility.InstantiatePrefab(pfb) as GameObject;

        if (prefab == null)
        {
            return;
        }

        switch (type)
        {
        case eObstacleType.MAGICAL_TRAP_ICE:
            prefab.name = "MagicalTrapIce";
            break;

        case eObstacleType.MAGICAL_TRAP_WIND:
            prefab.name = "MagicalTrapWind";
            break;
        }

        // Add to traps gameObject in hierarchy
        prefab.transform.parent = container;

        var script = prefab.GetComponent <MagicalTrap>();

        if (script != null)
        {
            script.Type = type;
        }

        PositionObjectAndSelect(prefab);
    }