예제 #1
0
    IEnumerator LoadGame(GameDataReader reader)
    {
        int version = reader.Version;
        int count   = version <= 0 ? -version : reader.ReadInt();

        if (version >= 3)
        {
            Random.State state = reader.ReadRandomState();
            if (!reseedOnLoad)
            {
                Random.state = state;
            }

            creationSpeedSlider.value    = CreationSpeed = reader.ReadFloat();
            creationProgress             = reader.ReadFloat();
            destructionSpeedSlider.value = DestructionSpeed = reader.ReadFloat();
            destructionProgress          = reader.ReadFloat();
        }

        yield return(LoadLevel(version < 2 ? 1 : reader.ReadInt()));

        if (version >= 3)
        {
            GameLevel.CurrentLevel.Load(reader);
        }

        for (int i = 0; i < count; i++)
        {
            int   shapeId    = version > 0 ? reader.ReadInt() : 0;
            int   materialId = version > 0 ? reader.ReadInt() : 0;
            Shape instance   = ShapeManager.Get(shapeId, materialId);
            instance.Load(reader);
            shapes.Add(instance);
        }
    }
예제 #2
0
    public override void Transformate()
    {
        if (timer <= time)
        {
            switch (axis)
            {
            case 0:
                ShapeManager.Get().transform.localScale = new Vector3(Mathf.Lerp(pos1.x, toPos.x, ac.Evaluate(timer / time)), pos1.y, pos1.z);
                break;

            case 1:
                ShapeManager.Get().transform.localScale = new Vector3(pos1.x, Mathf.Lerp(pos1.y, toPos.y, ac.Evaluate(timer / time)), pos1.z);
                break;

            case 2:
                ShapeManager.Get().transform.localScale = new Vector3(pos1.x, pos1.y, Mathf.Lerp(pos1.z, toPos.z, ac.Evaluate(timer / time)));
                break;
            }
            timer += Time.deltaTime;
        }
        else
        {
            timer   = 0.0f;
            running = false;
        }
    }
예제 #3
0
    IEnumerator MoveInAxis(int axis, int value, AnimationCurve ac, float time)
    {
        Vector3 pos1  = ShapeManager.Get().transform.position;
        Vector3 toPos = Vector3.zero;

        switch (axis)
        {
        case 0:
            toPos = ShapeManager.Get().transform.right;
            break;

        case 1:
            toPos = ShapeManager.Get().transform.up;
            break;

        case 2:
            toPos = ShapeManager.Get().transform.forward;
            break;

        default:
            break;
        }
        toPos = toPos * value + pos1;

        while (timer <= time)
        {
            ShapeManager.Get().transform.position = Vector3.Lerp(pos1, toPos, ac.Evaluate(timer / time));
            timer += Time.deltaTime;
            yield return(null);
        }
        timer = 0.0f;
    }
예제 #4
0
    public override void Transformate()
    {
        GameObject      command = Instantiate(transformationCommand);
        Transformations t       = command.GetComponent <Transformations>();

        t.SetValues(axis, value, ac, totalTime);
        ShapeManager.Get().AddCommand(command);
    }
예제 #5
0
    public override void SetPoints()
    {
        pos1  = ShapeManager.Get().transform.localScale;
        toPos = pos1;
        switch (axis)
        {
        case 0:
            toPos = new Vector3(toPos.x + value, toPos.y, toPos.z);
            break;

        case 1:
            toPos = new Vector3(toPos.x, toPos.y + value, toPos.z);
            break;

        case 2:
            toPos = new Vector3(toPos.x, toPos.y, toPos.z + value);
            break;
        }
    }
예제 #6
0
    IEnumerator ScaleInAxis(int eje, int value, AnimationCurve ac, float time)
    {
        Vector3 posScale1 = ShapeManager.Get().transform.localScale;
        Vector3 toPos     = posScale1;

        switch (eje)
        {
        case 0:
            toPos = new Vector3(toPos.x + value, toPos.y, toPos.z);
            break;

        case 1:
            toPos = new Vector3(toPos.x, toPos.y + value, toPos.z);
            break;

        case 2:
            toPos = new Vector3(toPos.x, toPos.y, toPos.z + value);
            break;
        }
        while (timer <= time)
        {
            switch (eje)
            {
            case 0:
                ShapeManager.Get().transform.localScale = new Vector3(Mathf.Lerp(posScale1.x, toPos.x, ac.Evaluate(timer / time)), posScale1.y, posScale1.z);
                break;

            case 1:
                toPos = new Vector3(toPos.x, toPos.y + value, toPos.z);
                ShapeManager.Get().transform.localScale = new Vector3(posScale1.x, Mathf.Lerp(posScale1.y, toPos.y, ac.Evaluate(timer / time)), posScale1.z);
                break;

            case 2:
                toPos = new Vector3(toPos.x, toPos.y, toPos.z + value);
                ShapeManager.Get().transform.localScale = new Vector3(posScale1.x, posScale1.y, Mathf.Lerp(posScale1.z, toPos.z, ac.Evaluate(timer / time)));
                break;
            }
            timer += Time.deltaTime;
            yield return(null);
        }
        timer = 0.0f;
    }
예제 #7
0
    public override void SetPoints()
    {
        pos1 = ShapeManager.Get().transform.position;
        switch (axis)
        {
        case 0:
            toPos = ShapeManager.Get().transform.right;
            break;

        case 1:
            toPos = ShapeManager.Get().transform.up;
            break;

        case 2:
            toPos = ShapeManager.Get().transform.forward;
            break;

        default:
            break;
        }
        toPos = toPos * value + pos1;
    }
예제 #8
0
 private void Start()
 {
     totalTime = ShapeManager.Get().GetTime();
     timer     = 0;
     t         = 0;
 }