public EntityShapeRenderer(Entity entity, ICoreClientAPI api) : base(entity, api) { eagent = entity as EntityAgent; DoRenderHeldItem = true; DisplayChatMessages = entity is EntityPlayer; TesselateShape(); // For players the player data is not there yet, so we load the thing later if (!(entity is EntityPlayer)) { nameTagRenderHandler = api.ModLoader.GetModSystem <EntityNameTagRendererRegistry>().GetNameTagRenderer(entity); } glitchAffected = true;// entity.Properties.Attributes?["glitchAffected"].AsBool(false) ?? false; entity.WatchedAttributes.OnModified.Add(new TreeModifiedListener() { path = "nametag", listener = OnNameChanged }); OnNameChanged(); api.Event.RegisterGameTickListener(UpdateDebugInfo, 250); OnDebugInfoChanged(); if (DisplayChatMessages) { messageTextures = new List <MessageTexture>(); api.Event.ChatMessage += OnChatMessage; } api.Event.ReloadShapes += TesselateShape; }
public override void BeforeRender(float dt) { if (meshRefOpaque == null && meshRefOit == null) { return; } if (gearInv == null && eagent?.GearInventory != null) { registerSlotModified(); } if (capi.IsGamePaused) { return; } if (player == null && entity is EntityPlayer) { player = capi.World.PlayerByUid((entity as EntityPlayer).PlayerUID) as IClientPlayer; nameTagRenderHandler = capi.ModLoader.GetModSystem <EntityNameTagRendererRegistry>().GetNameTagRenderer(entity); OnNameChanged(); } isSpectator = player != null && player.WorldData.CurrentGameMode == EnumGameMode.Spectator; if (isSpectator) { return; } if (DisplayChatMessages && messageTextures.Count > 0) { MessageTexture tex = messageTextures.Last(); if (capi.World.ElapsedMilliseconds > tex.receivedTime + 3500 + 100 * (tex.message.Length - 10)) { messageTextures.RemoveAt(messageTextures.Count - 1); tex.tex.Dispose(); /*if (messageTextures.Count > 0) * { * tex = messageTextures[messageTextures.Count - 1]; * long msvisible = tex.receivedTime + 3500 + 100 * (tex.message.Length - 10) - capi.World.ElapsedMilliseconds; * tex.receivedTime += Math.Max(0, 1000 - msvisible); * }*/ } } }
public EntityShapeRenderer(Entity entity, ICoreClientAPI api) : base(entity, api) { eagent = entity as EntityAgent; DoRenderHeldItem = true; DisplayChatMessages = entity is EntityPlayer; // For players the player data is not there yet, so we load the thing later if (!(entity is EntityPlayer)) { nameTagRenderHandler = api.ModLoader.GetModSystem <EntityNameTagRendererRegistry>().GetNameTagRenderer(entity); } glitchAffected = true;// entity.Properties.Attributes?["glitchAffected"].AsBool(false) ?? false; glitchFlicker = entity.Properties.Attributes?["glitchFlicker"].AsBool(false) ?? false; frostable = entity.Properties.Attributes?["frostable"].AsBool(true) ?? true; entity.WatchedAttributes.OnModified.Add(new TreeModifiedListener() { path = "nametag", listener = OnNameChanged }); OnNameChanged(); api.Event.RegisterGameTickListener(UpdateDebugInfo, 250); OnDebugInfoChanged(); if (DisplayChatMessages) { messageTextures = new List <MessageTexture>(); api.Event.ChatMessage += OnChatMessage; } api.Event.ReloadShapes += MarkShapeModified; getFrostAlpha = () => { float temp = api.World.BlockAccessor.GetClimateAt(entity.Pos.AsBlockPos, EnumGetClimateMode.ForSuppliedDate_TemperatureOnly, api.World.Calendar.TotalDays).Temperature; return(GameMath.Clamp((Math.Max(0, -temp) - 5) / 5f, 0, 1)); }; }
public override void BeforeRender(float dt) { if (!shapeFresh) { TesselateShape(); } lightrgbs = capi.World.BlockAccessor.GetLightRGBs((int)(entity.Pos.X + entity.SelectionBox.X1 - entity.OriginSelectionBox.X1), (int)entity.Pos.Y, (int)(entity.Pos.Z + entity.SelectionBox.Z1 - entity.OriginSelectionBox.Z1)); if (entity.SelectionBox.Y2 > 1) { Vec4f lightrgbs2 = capi.World.BlockAccessor.GetLightRGBs((int)(entity.Pos.X + entity.SelectionBox.X1 - entity.OriginSelectionBox.X1), (int)entity.Pos.Y + 1, (int)(entity.Pos.Z + entity.SelectionBox.Z1 - entity.OriginSelectionBox.Z1)); if (lightrgbs2.W > lightrgbs.W) { lightrgbs = lightrgbs2; } } if (meshRefOpaque == null && meshRefOit == null) { return; } if (gearInv == null && eagent?.GearInventory != null) { registerSlotModified(); shapeFresh = true; } if (capi.IsGamePaused) { return; } if (player == null && entity is EntityPlayer) { player = capi.World.PlayerByUid((entity as EntityPlayer).PlayerUID) as IClientPlayer; nameTagRenderHandler = capi.ModLoader.GetModSystem <EntityNameTagRendererRegistry>().GetNameTagRenderer(entity); OnNameChanged(); } isSpectator = player != null && player.WorldData.CurrentGameMode == EnumGameMode.Spectator; if (isSpectator) { return; } if (DisplayChatMessages && messageTextures.Count > 0) { MessageTexture tex = messageTextures.Last(); if (capi.World.ElapsedMilliseconds > tex.receivedTime + 3500 + 100 * (tex.message.Length - 10)) { messageTextures.RemoveAt(messageTextures.Count - 1); tex.tex.Dispose(); /*if (messageTextures.Count > 0) * { * tex = messageTextures[messageTextures.Count - 1]; * long msvisible = tex.receivedTime + 3500 + 100 * (tex.message.Length - 10) - capi.World.ElapsedMilliseconds; * tex.receivedTime += Math.Max(0, 1000 - msvisible); * }*/ } } if (player != null) { calcSidewaysSwivelForPlayer(dt); } else { calcSidewaysSwivelForEntity(dt); } frostAlphaAccum += dt; if (frostAlphaAccum > 5) { frostAlphaAccum = 0; targetFrostAlpha = getFrostAlpha(); } }