Пример #1
0
    // TODO: make this more modular, same as above. We can't make a case for every type of tracked object.
    // again, maybe figure out if we can get asset IDs.
    private void CreateFromRaw(RawGameObject obj)
    {
        // Convert to GameObject
        if (obj.typeID == 1) // cube
        {
            props.Add(Instantiate(cubePrefab));
        }
        else if (obj.typeID == 2) // sphere
        {
            props.Add(Instantiate(spherePrefab));
        }
        else if (obj.typeID == 3) // marksman
        {
            props.Add(Instantiate(marksmanPrefab));
        }
        else if (obj.typeID == 4) // rock
        {
            props.Add(Instantiate(rockPrefab));
        }
        else if (obj.typeID == 5) // light
        {
            props.Add(Instantiate(lightPrefab));
        }

        props[props.Count - 1].transform.parent = PropsParentObj.transform;

        props[props.Count - 1].transform.position   = new Vector3(obj.xPos, obj.yPos, obj.zPos);
        props[props.Count - 1].transform.rotation   = new Quaternion(obj.xRot, obj.yRot, obj.zRot, obj.wRot);
        props[props.Count - 1].transform.localScale = new Vector3(obj.xScl, obj.yScl, obj.zScl);

        // set material based on ID. if ID is 0, we don't set a material. This happens if obj is a light (typeID of 5)
        if (obj.matID == 1) // default
        {
            props[props.Count - 1].GetComponent <MeshRenderer>().material = defaultMat;
        }
        else if (obj.matID == 2) // red
        {
            props[props.Count - 1].GetComponent <MeshRenderer>().material       = red;
            props[props.Count - 1].GetComponent <MeshRenderer>().material.color = new Color(props[props.Count - 1].GetComponent <MeshRenderer>().material.color.r,
                                                                                            props[props.Count - 1].GetComponent <MeshRenderer>().material.color.b, props[props.Count - 1].GetComponent <MeshRenderer>().material.color.g, 1.0f);
        }
        else if (obj.matID == 3) // green
        {
            props[props.Count - 1].GetComponent <MeshRenderer>().material       = green;
            props[props.Count - 1].GetComponent <MeshRenderer>().material.color = new Color(props[props.Count - 1].GetComponent <MeshRenderer>().material.color.r,
                                                                                            props[props.Count - 1].GetComponent <MeshRenderer>().material.color.b, props[props.Count - 1].GetComponent <MeshRenderer>().material.color.g, 1.0f);
        }
        else if (obj.matID == 4) // blue
        {
            props[props.Count - 1].GetComponent <MeshRenderer>().material       = blue;
            props[props.Count - 1].GetComponent <MeshRenderer>().material.color = new Color(props[props.Count - 1].GetComponent <MeshRenderer>().material.color.r,
                                                                                            props[props.Count - 1].GetComponent <MeshRenderer>().material.color.b, props[props.Count - 1].GetComponent <MeshRenderer>().material.color.g, 1.0f);
        }
    }
Пример #2
0
    private void PopulateRawPropsList()
    {
        rawProps.Clear();
        foreach (GameObject obj in props)
        {
            RawGameObject sanityCheck = ConvertToRaw(obj);

            if (sanityCheck.typeID == 0)
            {
                continue; // something went wrong. instead of dealing with it, skip it.
            }

            rawProps.Add(sanityCheck);
        }
    }
Пример #3
0
 private static extern void AddToObjectList(RawGameObject obj);
Пример #4
0
    // TODO: make this more modular. Making a case for every type of object we have is not ideal.
    // Maybe we get asset UID's? Is that possible?
    private RawGameObject ConvertToRaw(GameObject obj)
    {
        RawGameObject rawObj = new RawGameObject {
        };
        string     name      = obj.name;
        string     matName   = obj.GetComponent <MeshRenderer>().material.name;
        Vector3    pos       = obj.transform.position;
        Quaternion rot       = obj.transform.rotation;
        Vector3    scl       = obj.transform.localScale;

        // type to int
        int type;

        if (name.Contains("Cube"))
        {
            type = 1;
        }
        else if (name.Contains("Sphere"))
        {
            type = 2;
        }
        else if (name.Contains("Marksman"))
        {
            type = 3;
        }
        else if (name.Contains("Rock"))
        {
            type = 4;
        }
        else if (name.Contains("Light"))
        {
            type = 5;
        }
        else
        {
            type = 0;
        }
        rawObj.typeID = type;

        // mat to int
        int mat;

        if (matName.Contains("default"))
        {
            mat = 1;
        }
        else if (matName.Contains("red"))
        {
            mat = 2;
        }
        else if (matName.Contains("green"))
        {
            mat = 3;
        }
        else if (matName.Contains("blue"))
        {
            mat = 4;
        }
        else
        {
            mat = 0;
        }
        rawObj.matID = mat;

        // pos to float
        rawObj.xPos = pos.x;
        rawObj.yPos = pos.y;
        rawObj.zPos = pos.z;

        // rot to float
        rawObj.xRot = rot.x;
        rawObj.yRot = rot.y;
        rawObj.zRot = rot.z;
        rawObj.wRot = rot.w;

        // scl to float
        rawObj.xScl = scl.x;
        rawObj.yScl = scl.y;
        rawObj.zScl = scl.z;

        return(rawObj);
    }