Beispiel #1
0
    void OnDrawGizmos()
    {
        if (selectedFrame < 0)
        {
            selectedFrame = 0;
        }
        if (selectedFrame > frames.Length - 1)
        {
            selectedFrame = frames.Length - 1;
        }
        currentFrame = frames[selectedFrame];

        Gizmos.color = Color.cyan;
        for (int i = 0; i < frames.Length; i++)
        {
            if (i != frames.Length - 1)
            {
                Gizmos.DrawLine(frames[i].position, frames[i + 1].position);
                //ToggleColor();
            }
        }
        Gizmos.DrawWireSphere(frames[selectedFrame].position, 2.0f);

        Gizmos.color = Color.yellow;
        for (int i = 0; i < frames.Length; i++)
        {
            if (i != frames.Length - 1)
            {
                Gizmos.DrawLine(frames[i].target, frames[i + 1].target);
            }
        }
        Gizmos.DrawWireSphere(frames[selectedFrame].target, 2.0f);
    }
Beispiel #2
0
    ///////////////////////////////////////////////////////////////////


    ///////////////////////////////////////////////////////////////////
    #region CIN_CAM

    public void LoadCinCamSlb()
    {
        // PREPARE FOR FILE READING
        string path = Application.dataPath + "/Resources/" + gameVersion + "/levels/" + levelName + "/" + levelName + "/" + cinematicName + "_CAM.slb";

        if (gameVersion.Equals("alpha", StringComparison.OrdinalIgnoreCase))
        {
            path = Application.dataPath + "/Resources/" + gameVersion + "/cinematics/" + levelName + "/" + cinematicName + "_CAM.slb";
        }
        if (!File.Exists(path))
        {
            Debug.LogError("File not found: " + path);
            return;
        }
        FileStream   fileStream   = new FileStream(path, FileMode.Open);
        BinaryReader binaryReader = new BinaryReader(fileStream);

        // MAKE SLB PARENT GAMEOBJECT
        // doing this after opening the file so we don't just get an empty gameobject if we entered an invalid name or something
        GameObject slbParent = new GameObject(cinematicName + "_CAM.slb");
        CinCam     cinCam    = slbParent.AddComponent <CinCam>() as CinCam;

        // READ
        cinCam.viewAngle = binaryReader.ReadSingle();
        cinCam.spinMask1 = binaryReader.ReadSingle();
        cinCam.spinMask2 = binaryReader.ReadSingle();
        cinCam.spinMask3 = binaryReader.ReadSingle();
        UInt32 entryCount  = binaryReader.ReadUInt32();
        UInt32 tableOffset = binaryReader.ReadUInt32();

        // GO TO BEGINNING OF TABLE
        fileStream.Seek(tableOffset, SeekOrigin.Begin);

        cinCam.frames = new CinCamFrame[entryCount];
        // LOOP THROUGH ENTRIES
        for (int i = 0; i < entryCount; i++)
        {
            // FRAMES
            CinCamFrame frame = new CinCamFrame();
            frame.time       = binaryReader.ReadSingle();
            frame.position   = new Vector3(-binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle());
            frame.target     = new Vector3(-binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle());
            cinCam.frames[i] = frame;
        }
        // SHRUG
        // some stackoverflow post said closing the reader SHOULD close the stream but I don't trust "should" enough lol
        binaryReader.Close();
        fileStream.Close();
        Debug.Log("Loaded " + path);
    }
Beispiel #3
0
    public void Save()
    {
        CinCam cinCam = gameObject.GetComponent <CinCam>();

        if (cinCam == null)
        {
            Debug.LogError("CinCam component not found");
        }

        string path = EditorUtility.SaveFilePanel("Save SLB", "", cinCam.gameObject.name, "slb");

        if (path.Length == 0)
        {
            return;
        }

        FileStream   fileStream   = new FileStream(path, FileMode.Create);
        BinaryWriter binaryWriter = new BinaryWriter(fileStream);

        binaryWriter.Write(cinCam.viewAngle);
        binaryWriter.Write(cinCam.spinMask1);
        binaryWriter.Write(cinCam.spinMask2);
        binaryWriter.Write(cinCam.spinMask3);
        long rememberMe = fileStream.Position;

        binaryWriter.Write(0);         // temp entry count
        binaryWriter.Write(24);        // table offset

        int framesWritten = 0;

        for (int i = 0; i < cinCam.frames.Length; i++)
        {
            CinCamFrame currentFrame = cinCam.frames[i];
            binaryWriter.Write(currentFrame.time);
            binaryWriter.Write(-currentFrame.position.x);
            binaryWriter.Write(currentFrame.position.y);
            binaryWriter.Write(currentFrame.position.z);
            binaryWriter.Write(-currentFrame.target.x);
            binaryWriter.Write(currentFrame.target.y);
            binaryWriter.Write(currentFrame.target.z);
            framesWritten++;

            if (i != cinCam.frames.Length - 1)
            {
                CinCamFrame nextFrame = cinCam.frames[i + 1];
                float       time      = Mathf.Lerp(currentFrame.time, nextFrame.time, 0.5f);
                Vector3     position  = Vector3.Lerp(currentFrame.position, nextFrame.position, 0.5f);
                Vector3     target    = Vector3.Lerp(currentFrame.target, nextFrame.target, 0.5f);

                binaryWriter.Write(time);
                binaryWriter.Write(-position.x);
                binaryWriter.Write(position.y);
                binaryWriter.Write(position.z);
                binaryWriter.Write(-target.x);
                binaryWriter.Write(target.y);
                binaryWriter.Write(target.z);
                framesWritten++;
            }
        }

        binaryWriter.Write(20);        // offset
        binaryWriter.Write(1);         // offset count
        binaryWriter.Write(0xC0FFEE);  // footer

        fileStream.Seek(rememberMe, SeekOrigin.Begin);
        binaryWriter.Write(framesWritten);

        binaryWriter.Close();
        fileStream.Close();
        Debug.Log("Saved " + path);
    }
Beispiel #4
0
    public void Save()
    {
        CinCam cinCam = gameObject.GetComponent <CinCam>();

        if (cinCam == null)
        {
            Debug.LogError("CinCam component not found");
        }

        string path = EditorUtility.SaveFilePanel("Save SLB", "", "cin1_CAM.slb", "slb");

        if (path.Length == 0)
        {
            return;
        }

        FileStream   fileStream   = new FileStream(path, FileMode.Create);
        BinaryWriter binaryWriter = new BinaryWriter(fileStream);

        binaryWriter.Write(cinCam.viewAngle);
        binaryWriter.Write(cinCam.spinMask1);
        binaryWriter.Write(cinCam.spinMask2);
        binaryWriter.Write(cinCam.spinMask3);
        binaryWriter.Write(cinCam.frames.Length); // entry count
        binaryWriter.Write(24);                   // table offset

        Vector3 offset = new Vector3(0.0f, 0.0f, -2.0f);

        for (int i = 0; i < cinCam.frames.Length; i++)
        {
            CinCamFrame currentFrame = cinCam.frames[i];

            if (i >= firstFrameToTweak && i <= lastFrameToTweak)
            {
                // tweaked frame
                binaryWriter.Write(currentFrame.time);
                binaryWriter.Write(-(currentFrame.position.x + offset.x));
                binaryWriter.Write(currentFrame.position.y + offset.y);
                binaryWriter.Write(currentFrame.position.z + offset.z);
                binaryWriter.Write(-(currentFrame.target.x + offset.x));
                binaryWriter.Write(currentFrame.target.y + offset.y);
                binaryWriter.Write(currentFrame.target.z + offset.z);
            }
            else
            {
                // unchanged frame
                binaryWriter.Write(currentFrame.time);
                binaryWriter.Write(-currentFrame.position.x);
                binaryWriter.Write(currentFrame.position.y);
                binaryWriter.Write(currentFrame.position.z);
                binaryWriter.Write(-currentFrame.target.x);
                binaryWriter.Write(currentFrame.target.y);
                binaryWriter.Write(currentFrame.target.z);
            }
        }

        binaryWriter.Write(20);        // offset
        binaryWriter.Write(1);         // offset count
        binaryWriter.Write(0xC0FFEE);  // footer

        binaryWriter.Close();
        fileStream.Close();
        Debug.Log("Saved " + path);
    }