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); }