// Add decal and all surounding triangles for model intersection internal static void AddDecal(MyRenderObject renderObject, ref MyDecalTriangle_Data triangle, int trianglesToAdd, MyDecalTexturesEnum decalTexture, Vector3D position, float lightSize, float emissivity) { IMyDecalsBuffer decalsBuffer = null; if (renderObject is MyRenderVoxelCell) { // If we get null, buffer is full so no new decals can't be placed decalsBuffer = m_decalsForVoxels.GetTrianglesBuffer(renderObject as MyRenderVoxelCell, decalTexture); } else if (renderObject is MyRenderTransformObject) { decalsBuffer = m_decalsForModels.GetTrianglesBuffer(renderObject, decalTexture); } if (renderObject is MyManualCullableRenderObject) { decalsBuffer = m_decalsForModels.GetTrianglesBuffer(renderObject, decalTexture); } // If we get null, buffer is full so no new decals can't be placed if (decalsBuffer == null) { return; } if (decalsBuffer.CanAddTriangles(trianglesToAdd)) { Vector3 normalSum = Vector3.Zero; decalsBuffer.Add(triangle, trianglesToAdd, position, lightSize, emissivity); } }
public void Add(MyDecalTriangle_Data triangle, int remainingTrianglesOfThisDecal, Vector3D position, float lightSize, float emissivity) { // We can't add triangles while fading out //if (m_status == MyDecalsBufferState.FADING_OUT) return; MyDecalTriangle decalTriangle = m_freeTriangles.Pop(); decalTriangle.Start(lightSize); decalTriangle.Emissivity = emissivity; //decalTriangle.RandomOffset = MyMwcUtils.GetRandomFloat(0.0f, MathHelper.Pi); decalTriangle.RandomOffset = (float)MyRender.RenderTimeInMS; decalTriangle.Position = position; // We must repack vertex positions before copying to new triange, to avoid Z-fight. decalTriangle.Position0 = triangle.Vertexes.Vertex0; decalTriangle.Position1 = triangle.Vertexes.Vertex1; decalTriangle.Position2 = triangle.Vertexes.Vertex2; // Texture coords decalTriangle.TexCoord0 = triangle.TexCoords.TexCoord0; decalTriangle.TexCoord1 = triangle.TexCoords.TexCoord1; decalTriangle.TexCoord2 = triangle.TexCoords.TexCoord2; // Alpha decalTriangle.Color0 = triangle.Colors.Color0; decalTriangle.Color1 = triangle.Colors.Color1; decalTriangle.Color2 = triangle.Colors.Color2; //AdjustAlphaByDistance(normal, decalSize, position, decalTriangle); // Bump mapping decalTriangle.Normal0 = triangle.Normals.Normal0; decalTriangle.Normal1 = triangle.Normals.Normal1; decalTriangle.Normal2 = triangle.Normals.Normal2; /* * decalTriangle.Tangent0 = triangle.Tangents.Normal0; * decalTriangle.Tangent1 = triangle.Tangents.Normal1; * decalTriangle.Tangent2 = triangle.Tangents.Normal2; */ decalTriangle.RemainingTrianglesOfThisDecal = remainingTrianglesOfThisDecal; m_trianglesQueue.Enqueue(decalTriangle); }
public void Add(MyDecalTriangle_Data triangle, int remainingTrianglesOfThisDecal, Vector3D position, float lightSize, float emissivity) { MyDecalTriangle decalTriangle = m_freeTriangles.Pop(); decalTriangle.Start(lightSize); decalTriangle.Emissivity = emissivity; //decalTriangle.RandomOffset = MyMwcUtils.GetRandomFloat(0.0f, MathHelper.Pi); decalTriangle.RandomOffset = MyRender.RenderTimeInMS; decalTriangle.Position = position; // We must repack vertex positions before copying to new triange, to avoid Z-fight. decalTriangle.Position0 = triangle.Vertexes.Vertex0; decalTriangle.Position1 = triangle.Vertexes.Vertex1; decalTriangle.Position2 = triangle.Vertexes.Vertex2; // Texture coords decalTriangle.TexCoord0 = triangle.TexCoords.TexCoord0; decalTriangle.TexCoord1 = triangle.TexCoords.TexCoord1; decalTriangle.TexCoord2 = triangle.TexCoords.TexCoord2; // Alpha decalTriangle.Color0 = triangle.Colors.Color0; decalTriangle.Color1 = triangle.Colors.Color1; decalTriangle.Color2 = triangle.Colors.Color2; // Bump mapping decalTriangle.Normal0 = triangle.Normals.Normal0; decalTriangle.Normal1 = triangle.Normals.Normal1; decalTriangle.Normal2 = triangle.Normals.Normal2; /* * decalTriangle.Tangent0 = triangle.Tangents.Normal0; * decalTriangle.Tangent1 = triangle.Tangents.Normal1; * decalTriangle.Tangent2 = triangle.Tangents.Normal2; */ decalTriangle.Draw = true; decalTriangle.RemainingTrianglesOfThisDecal = remainingTrianglesOfThisDecal; m_trianglesQueue.Enqueue(decalTriangle); }
public void Add(MyDecalTriangle_Data triangle, int remainingTrianglesOfThisDecal, Vector3D position, float lightSize, float emissivity) { MyDecalTriangle decalTriangle = m_freeTriangles.Pop(); decalTriangle.Start(lightSize); decalTriangle.Emissivity = emissivity; //decalTriangle.RandomOffset = MyMwcUtils.GetRandomFloat(0.0f, MathHelper.Pi); decalTriangle.RandomOffset = MyRender.RenderTimeInMS; decalTriangle.Position = position; // We must repack vertex positions before copying to new triange, to avoid Z-fight. decalTriangle.Position0 = triangle.Vertexes.Vertex0; decalTriangle.Position1 = triangle.Vertexes.Vertex1; decalTriangle.Position2 = triangle.Vertexes.Vertex2; // Texture coords decalTriangle.TexCoord0 = triangle.TexCoords.TexCoord0; decalTriangle.TexCoord1= triangle.TexCoords.TexCoord1; decalTriangle.TexCoord2 = triangle.TexCoords.TexCoord2; // Alpha decalTriangle.Color0 = triangle.Colors.Color0; decalTriangle.Color1 = triangle.Colors.Color1; decalTriangle.Color2 = triangle.Colors.Color2; // Bump mapping decalTriangle.Normal0 = triangle.Normals.Normal0; decalTriangle.Normal1 = triangle.Normals.Normal1; decalTriangle.Normal2 = triangle.Normals.Normal2; /* decalTriangle.Tangent0 = triangle.Tangents.Normal0; decalTriangle.Tangent1 = triangle.Tangents.Normal1; decalTriangle.Tangent2 = triangle.Tangents.Normal2; */ decalTriangle.Draw = true; decalTriangle.RemainingTrianglesOfThisDecal = remainingTrianglesOfThisDecal; m_trianglesQueue.Enqueue(decalTriangle); }
// Add decal and all surounding triangles for model intersection internal static void AddDecal(MyRenderObject renderObject, ref MyDecalTriangle_Data triangle, int trianglesToAdd, MyDecalTexturesEnum decalTexture, Vector3D position, float lightSize, float emissivity) { IMyDecalsBuffer decalsBuffer = null; if (renderObject is MyRenderVoxelCell) // If we get null, buffer is full so no new decals can't be placed decalsBuffer = m_decalsForVoxels.GetTrianglesBuffer(renderObject as MyRenderVoxelCell, decalTexture); else if (renderObject is MyRenderTransformObject) decalsBuffer = m_decalsForModels.GetTrianglesBuffer(renderObject, decalTexture); if (renderObject is MyManualCullableRenderObject) { decalsBuffer = m_decalsForModels.GetTrianglesBuffer(renderObject, decalTexture); } // If we get null, buffer is full so no new decals can't be placed if (decalsBuffer == null) return; if (decalsBuffer.CanAddTriangles(trianglesToAdd)) { Vector3 normalSum = Vector3.Zero; decalsBuffer.Add(triangle, trianglesToAdd, position, lightSize, emissivity); } }