示例#1
0
    public static void DrawBlockEditor(OCBlock block, OCBlockSet blockSet)
    {
        UnityEngine.GUILayout.BeginVertical(UnityEngine.GUI.skin.box);
        {
            string name = EditorGUILayout.TextField("Name", block.GetName());
            block.SetName(FixNameString(name));

            if (block is OCGlassBlock)
            {
                OCGlassBlock           glass    = (OCGlassBlock)block;
                UnityEngine.GameObject interior = (UnityEngine.GameObject)EditorGUILayout.ObjectField("Interior", glass.GetInterior(), typeof(UnityEngine.GameObject), true, null);
                glass.SetInterior(interior);
            }

            int atlas = BlockEditorUtils.Popup("Atlas", block.AtlasID, blockSet.Atlases);
            block.AtlasID = atlas;

            int light = EditorGUILayout.IntField("Light", block.GetLight());
            block.SetLight(light);
        }
        UnityEngine.GUILayout.EndVertical();

        UnityEngine.Texture texture = block.GetTexture();
        if (texture != null)
        {
            FieldInfo field = DrawFacesList(block, texture);
            int       face  = (int)field.GetValue(block);
            DrawFaceEditor(ref face, block.Atlas, ref atlasMatrix);
            field.SetValue(block, face);
        }
    }
        public static void BuildInterior(OCGlassBlock glass, OpenCog.Builder.OCMeshBuilder mesh)
        {
            if (glass.GetInterior() == null)
            {
                return;
            }

//		MeshFilter[] meshes = glass.GetInterior().GetComponents<MeshFilter>();
//		foreach(MeshFilter filter in meshes)
//		{
//			mesh = mesh.FromMesh(filter.sharedMesh);
//		}
        }
        //---------------------------------------------------------------------------

        #region Private Member Data

        //---------------------------------------------------------------------------



        //---------------------------------------------------------------------------

        #endregion

        //---------------------------------------------------------------------------

        #region Accessors and Mutators

        //---------------------------------------------------------------------------



        //---------------------------------------------------------------------------

        #endregion

        //---------------------------------------------------------------------------

        #region Public Member Functions

        //---------------------------------------------------------------------------

        public static void Build(Vector3i localPos, Vector3i worldPos, OpenCog.Map.OCMap map, OpenCog.Builder.OCMeshBuilder mesh, bool onlyLight)
        {
            OCGlassBlock glass = (OCGlassBlock)map.GetBlock(worldPos).block;

            for (int i = 0; i < 6; i++)
            {
                OCCubeBlock.CubeFace face    = OpenCog.Builder.OCCubeBuilder.faces[i];
                Vector3i             dir     = OpenCog.Builder.OCCubeBuilder.directions[i];
                Vector3i             nearPos = worldPos + dir;
                if (IsFaceVisible(map, nearPos, face))
                {
                    if (!onlyLight)
                    {
                        BuildFace(face, glass, (UnityEngine.Vector3)localPos, mesh);
                    }
                    BuildFaceLight(face, map, worldPos, mesh);
                }
            }

            BuildInterior(glass, mesh);
        }