Esempio n. 1
0
            void IMeshRenderer.UpdateMesh(CombinedMeshBuffer buffer)
            {
                int bufferIndex = buffer.index;
                int vertexCount = m_vertices.Length;
                buffer.index += vertexCount / 4;

                for (int i = bufferIndex; i < buffer.index; ++i) {
                buffer.objects[i] = -1;

                int cIndex = i * 4;
                var bc = buffer.colors32[cIndex];
                if (bc.r != m_color.r ||
                    bc.g != m_color.g ||
                    bc.b != m_color.b ||
                    bc.a != m_color.a) {
                for (int j = 0; j < 4; ++j)
                    buffer.colors32[cIndex + j] = m_color;
                }
                }

                int index = bufferIndex * 4;
                for (int i = 0; i < vertexCount; ++i) {
                buffer.uv[index + i] = m_uv[i];
                buffer.vertices[index + i] =
                m_matrixForRender.MultiplyPoint3x4(m_vertices[i]);
                }

                buffer.modified = true;
                buffer.initialized = false;
            }
            public void Init(Factory factory)
            {
                renderers = new List <IMeshRenderer>();

                mesh      = new Mesh();
                mesh.name = "LWF/" + factory.data.name;
                mesh.MarkDynamic();

                meshFilter            = gameObject.AddComponent <MeshFilter>();
                meshFilter.sharedMesh = mesh;

                meshRenderer = gameObject.AddComponent <UnityEngine.MeshRenderer>();
#if UNITY_4_6
                meshRenderer.castShadows = false;
#else
                meshRenderer.shadowCastingMode =
                    UnityEngine.Rendering.ShadowCastingMode.Off;
#endif
                meshRenderer.receiveShadows = false;
                UpdateSortingLayerAndOrder(factory);
                UpdateLayer(factory);

                if (factory.useAdditionalColor)
                {
                    additionalColor   = UnityEngine.Color.clear;
                    property          = new MaterialPropertyBlock();
                    additionalColorId = Shader.PropertyToID("_AdditionalColor");
                }

                buffer = new CombinedMeshBuffer();
            }
Esempio n. 3
0
 public BitmapRenderer(LWF lwf, BitmapContext context) : base(lwf)
 {
     m_context         = context;
     m_matrix          = new Matrix(0, 0, 0, 0, 0, 0);
     m_matrixForRender = new Matrix4x4();
     m_colorMult       = new UnityEngine.Color();
     m_colorAdd        = new UnityEngine.Color();
     m_blendMode       = (int)Format.Constant.BLEND_MODE_NORMAL;
     m_z           = -1;
     m_updated     = false;
     m_buffer      = null;
     m_bufferIndex = -1;
 }
Esempio n. 4
0
 public TextMeshRenderer(LWF lwf, UnityRenderer.TextContext context)
     : base(lwf, context)
 {
     m_matrix          = new Matrix(0, 0, 0, 0, 0, 0);
     m_matrixForRender = new Matrix4x4();
     m_colorMult       = new UnityEngine.Color();
     m_colorAdd        = new UnityEngine.Color();
     m_color           = new Color32();
     m_z           = -1;
     m_updated     = false;
     m_buffer      = null;
     m_bufferIndex = -1;
 }
Esempio n. 5
0
	public TextMeshRenderer(LWF lwf, UnityRenderer.TextContext context)
		: base(lwf, context)
	{
		m_matrix = new Matrix(0, 0, 0, 0, 0, 0);
		m_matrixForRender = new Matrix4x4();
		m_colorMult = new UnityEngine.Color();
		m_colorAdd = new UnityEngine.Color();
		m_color = new Color32();
		m_z = -1;
		m_updated = false;
		m_buffer = null;
		m_bufferIndex = -1;
	}
Esempio n. 6
0
            void IMeshRenderer.UpdateMesh(CombinedMeshBuffer buffer)
            {
                int bufferIndex = buffer.index++;

                Color32 color32 = m_colorMult;

                int     index = bufferIndex * 4;
                Color32 bc    = buffer.colors32[index];

                if (buffer.initialized ||
                    bc.r != color32.r ||
                    bc.g != color32.g ||
                    bc.b != color32.b ||
                    bc.a != color32.a)
                {
                    buffer.modified = true;
                    for (int i = 0; i < 4; ++i)
                    {
                        buffer.colors32[index + i] = color32;
                    }
                }

                bool needsUpdate = m_updated;
                int  objId       = m_context.objectId + 1;

                if (buffer.initialized || buffer.objects[bufferIndex] != objId)
                {
                    buffer.modified             = true;
                    buffer.objects[bufferIndex] = objId;
                    for (int i = 0; i < 4; ++i)
                    {
                        buffer.uv[index + i] = m_context.uv[i];
                    }
                    needsUpdate = true;
                }

                if (needsUpdate)
                {
                    buffer.modified = true;
                    for (int i = 0; i < 4; ++i)
                    {
                        buffer.vertices[index + i] =
                            m_matrixForRender.MultiplyPoint3x4(m_context.vertices[i]);
                    }
                }

                buffer.initialized = false;
            }
Esempio n. 7
0
            public Factory(Data d, GameObject gObj,
                           float zOff                   = 0, float zR = 1, int rQOff = 0, Camera cam = null,
                           string texturePrfx           = "", string fontPrfx = "",
                           TextureLoader textureLdr     = null,
                           TextureUnloader textureUnldr = null)
                : base(gObj, zOff, zR, rQOff,
                       cam, texturePrfx, fontPrfx, textureLdr, textureUnldr)
            {
                data      = d;
                mesh      = new Mesh();
                mesh.name = "LWF/" + data.name;
#if !UNITY_3_5
                mesh.MarkDynamic();
#endif

                meshFilter            = gameObject.AddComponent <MeshFilter>();
                meshFilter.sharedMesh = mesh;

                meshRenderer                = gameObject.AddComponent <UnityEngine.MeshRenderer>();
                meshRenderer.castShadows    = false;
                meshRenderer.receiveShadows = false;

                textureName = texturePrefix + data.textures[0].filename;
                meshRenderer.sharedMaterial =
                    ResourceCache.SharedInstance().LoadTexture(
                        data.name, textureName, data.textures[0].format,
                        textureLoader, textureUnloader);
                if (renderQueueOffset != 0)
                {
                    meshRenderer.sharedMaterial.renderQueue += renderQueueOffset;
                }

                premultipliedAlpha = (data.textures[0].format ==
                                      (int)Format.Constant.TEXTUREFORMAT_PREMULTIPLIEDALPHA);

                buffer = new CombinedMeshBuffer();

                CreateBitmapContexts(data);
                CreateTextContexts(data);
            }
Esempio n. 8
0
            void IMeshRenderer.UpdateMesh(CombinedMeshBuffer buffer)
            {
                int bufferIndex = buffer.index;
                int vertexCount = m_vertices.Length;

                buffer.index += vertexCount / 4;

                for (int i = bufferIndex; i < buffer.index; ++i)
                {
                    int cIndex = i * 4;
                    var bc     = buffer.colors32[cIndex];
                    if (bc.r != m_color.r ||
                        bc.g != m_color.g ||
                        bc.b != m_color.b ||
                        bc.a != m_color.a)
                    {
                        buffer.modified = true;
                        for (int j = 0; j < 4; ++j)
                        {
                            buffer.colors32[cIndex + j] = m_color;
                        }
                    }
                }

                if (m_updated || m_buffer != buffer ||
                    m_bufferIndex != bufferIndex || buffer.initialized)
                {
                    m_buffer        = buffer;
                    m_bufferIndex   = bufferIndex;
                    buffer.modified = true;
                    int index = bufferIndex * 4;
                    for (int i = 0; i < vertexCount; ++i)
                    {
                        buffer.uv[index + i]       = m_uv[i];
                        buffer.vertices[index + i] =
                            m_matrixForRender.MultiplyPoint3x4(m_vertices[i]);
                    }
                }
            }
Esempio n. 9
0
            void IMeshRenderer.UpdateMesh(CombinedMeshBuffer buffer)
            {
                int bufferIndex = buffer.index++;

                Color32 color32 = m_colorMult;

                int     index = bufferIndex * 4;
                Color32 bc    = buffer.colors32[index];

                if (buffer.initialized ||
                    bc.r != color32.r ||
                    bc.g != color32.g ||
                    bc.b != color32.b ||
                    bc.a != color32.a)
                {
                    buffer.modified = true;
                    for (int i = 0; i < 4; ++i)
                    {
                        buffer.colors32[index + i] = color32;
                    }
                }

                if (m_updated || m_buffer != buffer ||
                    m_bufferIndex != bufferIndex || buffer.initialized)
                {
                    m_buffer        = buffer;
                    m_bufferIndex   = bufferIndex;
                    buffer.modified = true;
                    for (int i = 0; i < 4; ++i)
                    {
                        buffer.uv[index + i]       = m_context.uv[i];
                        buffer.vertices[index + i] =
                            m_matrixForRender.MultiplyPoint3x4(m_context.vertices[i]);
                    }
                }
            }
Esempio n. 10
0
            public Factory(Data d, GameObject gObj,
			float zOff = 0, float zR = 1, int rQOff = 0, bool uAC = false,
			Camera cam = null, string texturePrfx = "", string fontPrfx = "",
			TextureLoader textureLdr = null,
			TextureUnloader textureUnldr = null)
                : base(gObj, zOff, zR, rQOff, uAC,
			cam, texturePrfx, fontPrfx, textureLdr, textureUnldr)
            {
                data = d;
                mesh = new Mesh();
                mesh.name = "LWF/" + data.name;
                #if !UNITY_3_5
                mesh.MarkDynamic();
                #endif

                if (Application.isEditor) {
                meshFilter = gameObject.GetComponent<MeshFilter>();
                if (meshFilter == null)
                meshFilter = gameObject.AddComponent<MeshFilter>();
                } else {
                meshFilter = gameObject.AddComponent<MeshFilter>();
                }
                meshFilter.sharedMesh = mesh;

                if (Application.isEditor) {
                meshRenderer = gameObject.GetComponent<UnityEngine.MeshRenderer>();
                if (meshRenderer == null)
                meshRenderer =
                    gameObject.AddComponent<UnityEngine.MeshRenderer>();
                } else {
                meshRenderer = gameObject.AddComponent<UnityEngine.MeshRenderer>();
                }
                meshRenderer.castShadows = false;
                meshRenderer.receiveShadows = false;

                textureName = texturePrefix + data.textures[0].filename;
                meshRenderer.sharedMaterial =
                ResourceCache.SharedInstance().LoadTexture(
                data.name, textureName, data.textures[0].format, true,
                    useAdditionalColor, textureLoader, textureUnloader);
                if (renderQueueOffset != 0)
                meshRenderer.sharedMaterial.renderQueue += renderQueueOffset;

                premultipliedAlpha = (data.textures[0].format ==
                (int)Format.Constant.TEXTUREFORMAT_PREMULTIPLIEDALPHA);

                buffer = new CombinedMeshBuffer();

                CreateBitmapContexts(data);
            }
Esempio n. 11
0
            public void Init(Factory factory)
            {
                renderers = new List<IMeshRenderer>();

                mesh = new Mesh();
                mesh.name = "LWF/" + factory.data.name;
                mesh.MarkDynamic();

                meshFilter = gameObject.AddComponent<MeshFilter>();
                meshFilter.sharedMesh = mesh;

                meshRenderer = gameObject.AddComponent<UnityEngine.MeshRenderer>();
                if (!string.IsNullOrEmpty(factory.sortingLayerName))
                meshRenderer.sortingLayerName = factory.sortingLayerName;
                meshRenderer.sortingOrder = factory.sortingOrder;
                meshRenderer.castShadows = false;
                meshRenderer.receiveShadows = false;

                buffer = new CombinedMeshBuffer();
            }
Esempio n. 12
0
            public void Init(Factory factory)
            {
                renderers = new List<IMeshRenderer>();

                mesh = new Mesh();
                mesh.name = "LWF/" + factory.data.name;
                mesh.MarkDynamic();

                meshFilter = gameObject.AddComponent<MeshFilter>();
                meshFilter.sharedMesh = mesh;

                meshRenderer = gameObject.AddComponent<UnityEngine.MeshRenderer>();
                #if UNITY_4_6
                meshRenderer.castShadows = false;
                #else
                meshRenderer.shadowCastingMode =
                UnityEngine.Rendering.ShadowCastingMode.Off;
                #endif
                meshRenderer.receiveShadows = false;
                UpdateSortingLayerAndOrder(factory);
                UpdateLayer(factory);

                if (factory.useAdditionalColor) {
                additionalColor = UnityEngine.Color.clear;
                property = new MaterialPropertyBlock();
                additionalColorId = Shader.PropertyToID("_AdditionalColor");
                }

                buffer = new CombinedMeshBuffer();
            }
Esempio n. 13
0
            void IMeshRenderer.UpdateMesh(CombinedMeshBuffer buffer)
            {
                int bufferIndex = buffer.index++;

                Factory factory = m_context.factory;
                Color32 color32 = m_colorMult;

                int index = bufferIndex * 4;
                Color32 bc = buffer.colors32[index];
                if (buffer.initialized ||
                bc.r != color32.r ||
                bc.g != color32.g ||
                bc.b != color32.b ||
                bc.a != color32.a) {
                buffer.modified = true;
                for (int i = 0; i < 4; ++i)
                buffer.colors32[index + i] = color32;
                }

                if (factory.useAdditionalColor) {
                Vector3 bac = buffer.additionalColors[index];
                if (buffer.initialized ||
                    bac.x != m_colorAdd.r ||
                    bac.y != m_colorAdd.g ||
                    bac.z != m_colorAdd.b) {
                buffer.modified = true;
                for (int i = 0; i < 4; ++i)
                    buffer.additionalColors[index + i] =
                        new Vector3(m_colorAdd.r, m_colorAdd.g, m_colorAdd.b);
                }
                }

                bool needsUpdate = m_updated;
                if (buffer.initialized ||
                buffer.objects[bufferIndex] != m_context.objectId) {
                buffer.modified = true;
                buffer.objects[bufferIndex] = m_context.objectId;
                for (int i = 0; i < 4; ++i)
                buffer.uv[index + i] = m_context.uv[i];
                needsUpdate = true;
                }

                if (needsUpdate) {
                buffer.modified = true;
                for (int i = 0; i < 4; ++i) {
                buffer.vertices[index + i] =
                    m_matrixForRender.MultiplyPoint3x4(m_context.vertices[i]);
                }
                }

                buffer.initialized = false;
            }
Esempio n. 14
0
            public override void Render(Matrix matrix, ColorTransform colorTransform,
                                        int renderingIndex, int renderingCount, bool visible)
            {
                // Ignore null texture
                if (m_context == null)
                {
                    return;
                }

                Factory            factory = m_context.factory;
                CombinedMeshBuffer buffer  = factory.buffer;
                int bufferIndex            = buffer.index++;

                if (!factory.updated)
                {
                    return;
                }

                if (!visible)
                {
                    goto invisible;
                }

#if LWF_USE_ADDITIONALCOLOR
                factory.ConvertColorTransform(
                    ref m_colorMult, ref m_colorAdd, colorTransform);
#else
                factory.ConvertColorTransform(ref m_colorMult, colorTransform);
#endif
                if (m_colorMult.a <= 0)
                {
                    goto invisible;
                }
                if (factory.premultipliedAlpha)
                {
                    m_colorMult.r *= m_colorMult.a;
                    m_colorMult.g *= m_colorMult.a;
                    m_colorMult.b *= m_colorMult.a;
                }
                Color32 color32 = m_colorMult;

                factory.ConvertMatrix(ref m_matrix, matrix, 1,
                                      renderingCount - renderingIndex, m_context.height);

                int     index = bufferIndex * 4;
                Color32 bc    = buffer.colors32[index];
                if (bc.r != color32.r ||
                    bc.g != color32.g ||
                    bc.b != color32.b ||
                    bc.a != color32.a)
                {
                    for (int i = 0; i < 4; ++i)
                    {
                        buffer.colors32[index + i] = color32;
                    }
                }

                if (!buffer.clean && m_available &&
                    buffer.objects[bufferIndex] == m_context.objectId)
                {
                    index = bufferIndex * 4;
                    for (int i = 0; i < 4; ++i)
                    {
                        buffer.vertices[index + i] =
                            m_matrix.MultiplyPoint3x4(m_context.vertices[i]);
                    }
                    return;
                }

                buffer.objects[bufferIndex] = m_context.objectId;

                index = bufferIndex * 4;
                for (int i = 0; i < 4; ++i)
                {
                    buffer.vertices[index + i] =
                        m_matrix.MultiplyPoint3x4(m_context.vertices[i]);
                    buffer.uv[index + i] = m_context.uv[i];
                }

                int offset = bufferIndex * 4;
                index = bufferIndex * 6;
                for (int i = 0; i < 6; ++i)
                {
                    buffer.triangles[index + i] = m_context.triangles[i] + offset;
                }

                buffer.changed = true;
                m_available    = true;
                return;

invisible:
                factory.ConvertMatrix(ref m_matrix, matrix, 1,
                                      renderingCount - renderingIndex, m_context.height);
                Vector3 v = m_matrix.MultiplyPoint3x4(m_context.vertices[0]);
                index = bufferIndex * 4;
                for (int i = 0; i < 4; ++i)
                {
                    buffer.vertices[index + i] = v;
                    buffer.colors32[index + i] = s_clearColor;
                }
                m_available = false;
            }
Esempio n. 15
0
	void IMeshRenderer.UpdateMesh(CombinedMeshBuffer buffer)
	{
		int bufferIndex = buffer.index++;

		Color32 color32 = m_colorMult;

		int index = bufferIndex * 4;
		Color32 bc = buffer.colors32[index];
		if (buffer.initialized ||
				bc.r != color32.r ||
				bc.g != color32.g ||
				bc.b != color32.b ||
				bc.a != color32.a) {
			buffer.modified = true;
			for (int i = 0; i < 4; ++i)
				buffer.colors32[index + i] = color32;
		}

		if (m_updated || m_buffer != buffer ||
				m_bufferIndex != bufferIndex || buffer.initialized) {
			m_buffer = buffer;
			m_bufferIndex = bufferIndex;
			buffer.modified = true;
			for (int i = 0; i < 4; ++i) {
				buffer.uv[index + i] = m_context.uv[i];
				buffer.vertices[index + i] =
					m_matrixForRender.MultiplyPoint3x4(m_context.vertices[i]);
			}
		}
	}
Esempio n. 16
0
	public BitmapRenderer(LWF lwf, BitmapContext context) : base(lwf)
	{
		m_context = context;
		m_matrix = new Matrix(0, 0, 0, 0, 0, 0);
		m_matrixForRender = new Matrix4x4();
		m_colorMult = new UnityEngine.Color();
		m_colorAdd = new UnityEngine.Color();
		m_blendMode = (int)Format.Constant.BLEND_MODE_NORMAL;
		m_z = -1;
		m_updated = false;
		m_buffer = null;
		m_bufferIndex = -1;
	}