public void Configure()
    {
        classname  = baseDescription[baseDescription.FindIndex(n => n == "classname") + 1];
        targetname = baseDescription[baseDescription.FindIndex(n => n == "targetname") + 1];
        target     = baseDescription[baseDescription.FindIndex(n => n == "target") + 1];

        // Rename an object use entity data
        gameObject.name = targetname + " (" + classname + ")";

        // Get and apply entity position
        if (baseDescription.Contains("origin"))
        {
            string[] array = baseDescription[baseDescription.FindIndex(n => n == "origin") + 1].Split(new char[] { ' ' });
            transform.position = new Vector3(-float.Parse(array[0]) * WorldController.WorldScale, float.Parse(array[2]) * WorldController.WorldScale, -float.Parse(array[1]) * WorldController.WorldScale);
        }

        // Load prop_*dymanic, static, physics, etc.*
        if (classname.Contains("prop_"))
        {
            // Get model name use entity data
            string modelName = baseDescription[baseDescription.FindIndex(n => n == "model") + 1];

            // Load studio model and apply position
            Transform mdlTransform = StudioMdlLoader.LoadMdl(modelName.Replace(".mdl", ""));
            mdlTransform.localPosition = transform.position;

            // Calculate rotation for model
            // TODO: This is incorrect calculate. Need fix
            string[] array       = baseDescription[baseDescription.FindIndex(n => n == "angles") + 1].Split(new char[] { ' ' });
            Vector3  eulerAngles = new Vector3(float.Parse(array[2]), -float.Parse(array[1]), float.Parse(array[0]));

            if (baseDescription.Contains("pitch"))
            {
                eulerAngles.x = float.Parse(baseDescription [baseDescription.FindIndex(n => n == "pitch") + 1]);
            }

            mdlTransform.eulerAngles      = eulerAngles;
            mdlTransform.transform.parent = transform;
        }
    }
    private static void LoadStaticProps()
    {
        BinaryReader.BaseStream.Position = BSP_Header.lumps[35].fileofs;
        GameObject staticProps = new GameObject(WorldController.MapName + "_props");

        int gamelumpCount = BinaryReader.ReadInt32();

        dgamelump_t[] gamelumps = CRead.ReadType <dgamelump_t>((uint)gamelumpCount);

        for (int i = 0; i < gamelumpCount; i++)
        {
            if (gamelumps[i].id == 1936749168)
            {
                BinaryReader.BaseStream.Position = gamelumps[i].fileofs;
                int      dictEntries = BinaryReader.ReadInt32();
                string[] names       = new string[dictEntries];

                for (int l = 0; l < dictEntries; l++)
                {
                    names[l] = new string(BinaryReader.ReadChars(128));

                    if (names[l].Contains(Convert.ToChar(0)))
                    {
                        names[l] = names[l].Remove(names[l].IndexOf(Convert.ToChar(0)));
                    }
                }

                int leafEntries = BinaryReader.ReadInt32();
                CRead.ReadType <ushort>((uint)leafEntries);

                int nStaticProps = BinaryReader.ReadInt32();
                for (int l = 0; l < nStaticProps; l++)
                {
                    StaticPropLumpV4_t StaticPropLump_t = CRead.ReadType <StaticPropLumpV4_t>();
                    switch (gamelumps[i].version)
                    {
                    case 5: CRead.ReadType <StaticPropLumpV5_t>(); break;

                    case 6: CRead.ReadType <StaticPropLumpV6_t>(); break;

                    case 7: CRead.ReadType <StaticPropLumpV7_t>(); break;

                    case 8: CRead.ReadType <StaticPropLumpV8_t>(); break;

                    case 9: CRead.ReadType <StaticPropLumpV9_t>(); break;

                    case 10: CRead.ReadType <StaticPropLumpV10_t>(); break;
                    }

                    // Load studio model and apply position
                    Transform mdlTransform = StudioMdlLoader.LoadMdl(names[StaticPropLump_t.m_PropType].Replace(".mdl", ""));
                    mdlTransform.localPosition = WorldController.SwapZY(StaticPropLump_t.m_Origin) * WorldController.WorldScale;

                    // Calculate rotation for model
                    Vector3 mdlRotation = new Vector3(StaticPropLump_t.m_Angles.z, -StaticPropLump_t.m_Angles.y, StaticPropLump_t.m_Angles.x);
                    mdlTransform.eulerAngles = mdlRotation;

                    mdlTransform.parent = staticProps.transform;
                }
            }
        }
    }