本文整理汇总了C#中OpenSim.Region.Framework.Scenes.SceneObjectPart.UpdateTexture方法的典型用法代码示例。如果您正苦于以下问题:C# SceneObjectPart.UpdateTexture方法的具体用法?C# SceneObjectPart.UpdateTexture怎么用?C# SceneObjectPart.UpdateTexture使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenSim.Region.Framework.Scenes.SceneObjectPart
的用法示例。
在下文中一共展示了SceneObjectPart.UpdateTexture方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SetTexture
protected void SetTexture(SceneObjectPart part, string texture, int face)
{
UUID textureID=new UUID();
int ns = GetNumberOfSides(part);
textureID = InventoryKey(texture, (int)AssetType.Texture);
if (textureID == UUID.Zero)
{
if (!UUID.TryParse(texture, out textureID))
return;
}
Primitive.TextureEntry tex = part.Shape.Textures;
if (face >= 0 && face < ns)
{
Primitive.TextureEntryFace texface = tex.CreateFace((uint)face);
texface.TextureID = textureID;
tex.FaceTextures[face] = texface;
part.UpdateTexture(tex);
return;
}
else if (face == ScriptBaseClass.ALL_SIDES)
{
for (uint i = 0; i < ns; i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].TextureID = textureID;
}
}
tex.DefaultTexture.TextureID = textureID;
part.UpdateTexture(tex);
return;
}
}
示例2: RotateTexture
protected void RotateTexture(SceneObjectPart part, double rotation, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
int ns = GetNumberOfSides(part);
if (face >= 0 && face < ns)
{
Primitive.TextureEntryFace texface = tex.CreateFace((uint)face);
texface.Rotation = (float)rotation;
tex.FaceTextures[face] = texface;
part.UpdateTexture(tex);
return;
}
if (face == ScriptBaseClass.ALL_SIDES)
{
for (int i = 0; i < ns; i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].Rotation = (float)rotation;
}
}
tex.DefaultTexture.Rotation = (float)rotation;
part.UpdateTexture(tex);
return;
}
}
示例3: SetFullBright
public void SetFullBright(SceneObjectPart part, int face, bool bright)
{
Primitive.TextureEntry tex = part.Shape.Textures;
if (face >= 0 && face < GetNumberOfSides(part))
{
tex.CreateFace((uint) face);
tex.FaceTextures[face].Fullbright = bright;
part.UpdateTexture(tex);
return;
}
else if (face == ScriptBaseClass.ALL_SIDES)
{
for (uint i = 0; i < GetNumberOfSides(part); i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].Fullbright = bright;
}
}
tex.DefaultTexture.Fullbright = bright;
part.UpdateTexture(tex);
return;
}
}
示例4: SetAlpha
protected void SetAlpha(SceneObjectPart part, double alpha, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
Color4 texcolor;
if (face >= 0 && face < GetNumberOfSides(part))
{
texcolor = tex.CreateFace((uint)face).RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.FaceTextures[face].RGBA = texcolor;
part.UpdateTexture(tex);
}
else if (face == ScriptBaseClass.ALL_SIDES)
{
for (int i = 0; i < GetNumberOfSides(part); i++)
{
if (tex.FaceTextures[i] != null)
{
texcolor = tex.FaceTextures[i].RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.FaceTextures[i].RGBA = texcolor;
}
}
texcolor = tex.DefaultTexture.RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.DefaultTexture.RGBA = texcolor;
part.UpdateTexture(tex);
}
part.ScheduleUpdate(PrimUpdateFlags.FullUpdate);
}
示例5: SetTexGen
public void SetTexGen(SceneObjectPart part, int face,int style)
{
Primitive.TextureEntry tex = part.Shape.Textures;
MappingType textype;
textype = MappingType.Default;
if (style == (int)ScriptBaseClass.PRIM_TEXGEN_PLANAR)
textype = MappingType.Planar;
if (face >= 0 && face < GetNumberOfSides(part))
{
tex.CreateFace((uint) face);
tex.FaceTextures[face].TexMapType = textype;
part.UpdateTexture(tex);
return;
}
else if (face == ScriptBaseClass.ALL_SIDES)
{
for (uint i = 0; i < GetNumberOfSides(part); i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].TexMapType = textype;
}
tex.DefaultTexture.TexMapType = textype;
}
part.UpdateTexture(tex);
return;
}
}
示例6: SetShiny
public void SetShiny(SceneObjectPart part, int face, int shiny, Bumpiness bump)
{
Shininess sval = new Shininess();
switch (shiny)
{
case 0:
sval = Shininess.None;
break;
case 1:
sval = Shininess.Low;
break;
case 2:
sval = Shininess.Medium;
break;
case 3:
sval = Shininess.High;
break;
default:
sval = Shininess.None;
break;
}
Primitive.TextureEntry tex = part.Shape.Textures;
if (face >= 0 && face < GetNumberOfSides(part))
{
tex.CreateFace((uint) face);
tex.FaceTextures[face].Shiny = sval;
tex.FaceTextures[face].Bump = bump;
part.UpdateTexture(tex);
return;
}
else if (face == ScriptBaseClass.ALL_SIDES)
{
for (uint i = 0; i < GetNumberOfSides(part); i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].Shiny = sval;
tex.FaceTextures[i].Bump = bump;;
}
tex.DefaultTexture.Shiny = sval;
tex.DefaultTexture.Bump = bump;
}
part.UpdateTexture(tex);
return;
}
}
示例7: SetColor
protected void SetColor(SceneObjectPart part, LSL_Vector color, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
Color4 texcolor;
if (face >= 0 && face < GetNumberOfSides(part))
{
texcolor = tex.CreateFace((uint)face).RGBA;
texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
tex.FaceTextures[face].RGBA = texcolor;
part.UpdateTexture(tex);
return;
}
else if (face == ScriptBaseClass.ALL_SIDES)
{
for (uint i = 0; i < GetNumberOfSides(part); i++)
{
if (tex.FaceTextures[i] != null)
{
texcolor = tex.FaceTextures[i].RGBA;
texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
tex.FaceTextures[i].RGBA = texcolor;
}
texcolor = tex.DefaultTexture.RGBA;
texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
tex.DefaultTexture.RGBA = texcolor;
}
part.UpdateTexture(tex);
return;
}
}
示例8: OffsetTexture
protected void OffsetTexture(SceneObjectPart part, double u, double v, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
if (face >= 0 && face < GetNumberOfSides(part))
{
Primitive.TextureEntryFace texface = tex.CreateFace((uint)face);
texface.OffsetU = (float)u;
texface.OffsetV = (float)v;
tex.FaceTextures[face] = texface;
part.UpdateTexture(tex);
return;
}
if (face == ScriptBaseClass.ALL_SIDES)
{
for (int i = 0; i < GetNumberOfSides(part); i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].OffsetU = (float)u;
tex.FaceTextures[i].OffsetV = (float)v;
}
}
tex.DefaultTexture.OffsetU = (float)u;
tex.DefaultTexture.OffsetV = (float)v;
part.UpdateTexture(tex);
return;
}
}
示例9: SetTexture
private void SetTexture(SceneObjectPart part, UUID textureID, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
if (face >= 0 && face < MAX_SIDES)
{
Primitive.TextureEntryFace texface = tex.CreateFace((uint)face);
texface.TextureID = textureID;
tex.FaceTextures[face] = texface;
part.UpdateTexture(tex);
return;
}
else if (face == ALL_SIDES)
{
for (uint i = 0; i < MAX_SIDES; i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].TextureID = textureID;
}
}
tex.DefaultTexture.TextureID = textureID;
part.UpdateTexture(tex);
return;
}
}
示例10: SetAlpha
protected void SetAlpha(SceneObjectPart part, double alpha, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
Color4 texcolor;
if (face >= 0 && face < GetNumberOfSides(part))
{
texcolor = tex.CreateFace((uint)face).RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.FaceTextures[face].RGBA = texcolor;
part.UpdateTexture(tex);
return;
}
else if (face == ScriptBaseClass.ALL_SIDES)
{
for (int i = 0; i < GetNumberOfSides(part); i++)
{
if (tex.FaceTextures[i] != null)
{
texcolor = tex.FaceTextures[i].RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.FaceTextures[i].RGBA = texcolor;
}
}
// In some cases, the default texture can be null, eg when every face
// has a unique texture
if (tex.DefaultTexture != null)
{
texcolor = tex.DefaultTexture.RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.DefaultTexture.RGBA = texcolor;
}
part.UpdateTexture(tex);
return;
}
}
示例11: SetGlow
private void SetGlow(SceneObjectPart part, float glow, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
if (face >= 0 && face < MAX_SIDES)
{
tex.CreateFace((uint)face);
tex.FaceTextures[face].Glow = glow;
part.UpdateTexture(tex);
return;
}
else if (face == ALL_SIDES)
{
for (uint i = 0; i < MAX_SIDES; i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].Glow = glow;
}
tex.DefaultTexture.Glow = glow;
}
part.UpdateTexture(tex);
return;
}
}
示例12: SetFullBright
private void SetFullBright(SceneObjectPart part, bool bright, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
if (face >= 0 && face < MAX_SIDES)
{
tex.CreateFace((uint)face);
tex.FaceTextures[face].Fullbright = bright;
part.UpdateTexture(tex);
return;
}
else if (face == ALL_SIDES)
{
for (uint i = 0; i < MAX_SIDES; i++)
{
if (tex.FaceTextures[i] != null)
{
tex.FaceTextures[i].Fullbright = bright;
}
}
tex.DefaultTexture.Fullbright = bright;
part.UpdateTexture(tex);
return;
}
}
示例13: SetColor
private void SetColor(SceneObjectPart part, Vector3 rgb, int face)
{
float r = rgb.X;
float g = rgb.Y;
float b = rgb.Z;
Primitive.TextureEntry tex = part.Shape.Textures;
Color4 texcolor;
if (face >= 0 && face < MAX_SIDES)
{
texcolor = tex.CreateFace((uint)face).RGBA;
texcolor.R = Util.Clip(r, 0.0f, 1.0f);
texcolor.G = Util.Clip(g, 0.0f, 1.0f);
texcolor.B = Util.Clip(b, 0.0f, 1.0f);
tex.FaceTextures[face].RGBA = texcolor;
part.UpdateTexture(tex);
return;
}
else if (face == ALL_SIDES)
{
for (uint i = 0; i < MAX_SIDES; i++)
{
if (tex.FaceTextures[i] != null)
{
texcolor = tex.FaceTextures[i].RGBA;
texcolor.R = Util.Clip(r, 0.0f, 1.0f);
texcolor.G = Util.Clip(g, 0.0f, 1.0f);
texcolor.B = Util.Clip(b, 0.0f, 1.0f);
tex.FaceTextures[i].RGBA = texcolor;
}
texcolor = tex.DefaultTexture.RGBA;
texcolor.R = Util.Clip(r, 0.0f, 1.0f);
texcolor.G = Util.Clip(g, 0.0f, 1.0f);
texcolor.B = Util.Clip(b, 0.0f, 1.0f);
tex.DefaultTexture.RGBA = texcolor;
}
part.UpdateTexture(tex);
return;
}
}
示例14: SetAlpha
private void SetAlpha(SceneObjectPart part, float alpha, int face)
{
Primitive.TextureEntry tex = part.Shape.Textures;
Color4 texcolor;
if (face >= 0 && face < MAX_SIDES)
{
texcolor = tex.CreateFace((uint)face).RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.FaceTextures[face].RGBA = texcolor;
part.UpdateTexture(tex);
return;
}
else if (face == ALL_SIDES)
{
for (int i = 0; i < MAX_SIDES; i++)
{
if (tex.FaceTextures[i] != null)
{
texcolor = tex.FaceTextures[i].RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.FaceTextures[i].RGBA = texcolor;
}
}
texcolor = tex.DefaultTexture.RGBA;
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
tex.DefaultTexture.RGBA = texcolor;
part.UpdateTexture(tex);
return;
}
}
示例15: AssignSingleMaterial
/// <summary>
/// Assign a single material value. Based on the values passed we'll either set (or clear) the materials for a SOP.
/// </summary>
/// <param name="sop">The SOP being affected.</param>
/// <param name="face">The face to assign, or -1 if the default texture is being set.</param>
/// <param name="id">The ID assigned to this material. Setting a Zero UUID clears it.</param>
/// <param name="material">If not null, the material to set. Otherwise we are clearing.</param>
private void AssignSingleMaterial(SceneObjectPart sop, int face, OSDMap matData)
{
UUID id = UUID.Zero;
// If there is a material being set, see if we've seen it before.
// If not we'll add it to the Shape RenderMaterials and the region cache
if (matData != null)
{
RenderMaterial material = RenderMaterial.FromOSD(matData);
id = sop.Shape.RenderMaterials.AddMaterial(material);
m_scene.EventManager.TriggerRenderMaterialAddedToPrim(sop, id, material);
m_log.DebugFormat("[RenderMaterials]: SOP {0}, Face {1}, Adding RenderMaterial {2}",
sop.LocalId, face, material.ToString());
}
// If the new material is replacing one lets record it so we can clean up
UUID oldMaterialID = UUID.Zero;
/// Get a copy of the texture entry so we can make changes.
var te = new Primitive.TextureEntry(sop.Shape.TextureEntry, 0, sop.Shape.TextureEntry.Length);
// Set the Material ID in the TextureEntry. If face is ALL_SIDES then
// set the default entry, otherwise fetch the face and set it there.
if (face < 0)
{
oldMaterialID = te.DefaultTexture.MaterialID;
te.DefaultTexture.MaterialID = id;
}
else
{
var faceEntry = te.CreateFace((uint)face);
oldMaterialID = faceEntry.MaterialID;
faceEntry.MaterialID = id;
}
// Update the texture entry which will force an update to connected clients
sop.UpdateTexture(te);
// If the material has changed and it wasn't previously Zero
// Deallocate the old value if its not in use and signal the change
if ((oldMaterialID != id) &&
(oldMaterialID != UUID.Zero))
{
var currentMaterialIDs = sop.Shape.GetMaterialIDs();
if (currentMaterialIDs.Contains(oldMaterialID) == false)
{
if (sop.Shape.RenderMaterials.ContainsMaterial(oldMaterialID) == true)
sop.Shape.RenderMaterials.RemoveMaterial(oldMaterialID);
m_scene.EventManager.TriggerRenderMaterialRemovedFromPrim(sop, oldMaterialID);
}
}
}