public override void RenderCloneOverlay(InstanceState instanceState, ref Matrix4x4 matrix4x, Vector3 deltaPosition, float deltaAngle, Vector3 center, bool followTerrain, RenderManager.CameraInfo cameraInfo, Color toolColor) { if (MoveItTool.m_isLowSensitivity) { return; } PropState state = instanceState as PropState; PropInfo info = state.Info.Prefab as PropInfo; Randomizer randomizer = new Randomizer(state.instance.id.Prop); float scale = info.m_minScale + (float)randomizer.Int32(10000u) * (info.m_maxScale - info.m_minScale) * 0.0001f; Vector3 newPosition = matrix4x.MultiplyPoint(state.position - center); newPosition.y = state.position.y + deltaPosition.y; if (followTerrain) { newPosition.y = newPosition.y - state.terrainHeight + TerrainManager.instance.SampleOriginalRawHeightSmooth(newPosition); } float newAngle = state.angle + deltaAngle; PropTool.RenderOverlay(cameraInfo, info, newPosition, scale, newAngle, toolColor); }
public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) { base.RenderOverlay(cameraInfo); if (!enabled) { return; } if (np_hoveredObject.NetSegment != 0) { NetSegment hoveredSegment = np_hoveredObject.NetSegment.S(); NetTool.RenderOverlay(cameraInfo, ref hoveredSegment, _hovc, new Color(1f, 0f, 0f, 1f)); } else if (np_hoveredObject.NetNode != 0 && np_hoveredObject.NetNode < 32768) { NetNode hoveredNode = np_hoveredObject.NetNode.N(); RenderManager.instance.OverlayEffect.DrawCircle(cameraInfo, _hovc, hoveredNode.m_position, Mathf.Max(6f, hoveredNode.Info.m_halfWidth * 2f), -1f, 1280f, false, true); } else if (np_hoveredObject.Building != 0) { Building hoveredBuilding = np_hoveredObject.Building.B(); BuildingTool.RenderOverlay(cameraInfo, ref hoveredBuilding, _hovc, _hovc); } else if (np_hoveredObject.Tree != 0) { TreeInstance hoveredTree = np_hoveredObject.Tree.T(); TreeTool.RenderOverlay(cameraInfo, hoveredTree.Info, hoveredTree.Position, hoveredTree.Info.m_minScale, _hovc); } else if (np_hoveredObject.Prop != 0) { PropInstance hoveredTree = np_hoveredObject.Prop.P(); PropTool.RenderOverlay(cameraInfo, hoveredTree.Info, hoveredTree.Position, hoveredTree.Info.m_minScale, hoveredTree.Angle, _hovc); } }
public override void RenderOverlay(RenderManager.CameraInfo cameraInfo, Color toolColor, Color despawnColor) { if (!isValid) { return; } ushort prop = id.Prop; PropManager propManager = PropManager.instance; PropInfo propInfo = propManager.m_props.m_buffer[prop].Info; Vector3 position = propManager.m_props.m_buffer[prop].Position; float angle = propManager.m_props.m_buffer[prop].Angle; Randomizer randomizer = new Randomizer((int)prop); float scale = propInfo.m_minScale + (float)randomizer.Int32(10000u) * (propInfo.m_maxScale - propInfo.m_minScale) * 0.0001f; float alpha = 1f; PropTool.CheckOverlayAlpha(propInfo, scale, ref alpha); toolColor.a *= alpha; PropTool.RenderOverlay(cameraInfo, propInfo, position, scale, angle, toolColor); }
public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) { base.RenderOverlay(cameraInfo); if (!enabled) { return; } if (hoveredId.NetSegment != 0) { NetSegment hoveredSegment = hoveredId.NetSegment.S(); NetTool.RenderOverlay(cameraInfo, ref hoveredSegment, hoverColor, hoverColor); } //else if (hoveredObject.NetNode != 0 && hoveredObject.NetNode < 32768) //{ // NetNode hoveredNode = hoveredObject.NetNode.N(); // RenderManager.instance.OverlayEffect.DrawCircle(cameraInfo, hoverColor, hoveredNode.m_position, Mathf.Max(6f, hoveredNode.Info.m_halfWidth * 2f), -1f, 1280f, false, true); //} else if (hoveredId.Building != 0) { Building hoveredBuilding = hoveredId.Building.B(); BuildingTool.RenderOverlay(cameraInfo, ref hoveredBuilding, hoverColor, hoverColor); while (hoveredBuilding.m_subBuilding > 0) { hoveredBuilding = BuildingManager.instance.m_buildings.m_buffer[hoveredBuilding.m_subBuilding]; BuildingTool.RenderOverlay(cameraInfo, ref hoveredBuilding, hoverColor, hoverColor); } } else if (hoveredId.Tree != 0) { TreeInstance hoveredTree = hoveredId.Tree.T(); TreeTool.RenderOverlay(cameraInfo, hoveredTree.Info, hoveredTree.Position, hoveredTree.Info.m_minScale, hoverColor); } else if (hoveredId.Prop != 0) { PropInstance hoveredProp = hoveredId.Prop.P(); PropTool.RenderOverlay(cameraInfo, hoveredProp.Info, hoveredProp.Position, hoveredProp.Info.m_minScale, hoveredProp.Angle, hoverColor); } }
public override void RenderOverlay(RenderManager.CameraInfo cameraInfo, Color toolColor, Color despawnColor) { if (!isValid) { return; } if (MoveItTool.m_isLowSensitivity) { return; } IProp prop = PropLayer.Manager.Buffer(id); PropInfo propInfo = prop.Info; Vector3 position = prop.Position; float angle = prop.Angle; float scale = PropLayer.Manager.GetScale(id, prop); float alpha = 1f; PropTool.CheckOverlayAlpha(propInfo, scale, ref alpha); toolColor.a *= alpha; PropTool.RenderOverlay(cameraInfo, propInfo, position, scale, angle, toolColor); }
internal static void RenderOverlay(RenderManager.CameraInfo cameraInfo) { //Log.DebugWait($"Managers_RenderOverlay.Postfix(): LaneIndex={LaneIndex} Info={Info}"); if (HoveredInfo is NetInfo.Lane laneInfo) { for (ushort segmentID = 1; segmentID < NetManager.MAX_SEGMENT_COUNT; ++segmentID) { if (!NetUtil.IsSegmentValid(segmentID)) { continue; } var m_lanes = segmentID.ToSegment().Info.m_lanes; int laneIndex = m_lanes.IndexOf(laneInfo); if (laneIndex < 0) { continue; } uint laneID = NetUtil.GetlaneID(segmentID, laneIndex); LaneData lane = new LaneData(laneID, laneIndex); RenderUtil.RenderLaneOverlay(cameraInfo, lane, Color.yellow); } } while (SegmentQueue.Count > 0) { var item = SegmentQueue.Dequeue(); Color color = item.TurnAround ? ORANGE : Color.yellow; RenderUtil.RenderSegmnetOverlay(cameraInfo, item.SegmentID, color); } while (NodeQueue.Count > 0) { var item = NodeQueue.Dequeue(); bool end = item.NodeID.ToNode().m_flags.IsFlagSet(NetNode.Flags.End); if (item.IsBendNode || end) { RenderUtil.DrawNodeCircle(cameraInfo, Color.yellow, item.NodeID); } else if (item.IsDC) { DrawDC(cameraInfo, item.SegmentID, item.SegmentID2, item.NodeID); } else { HighlightSegmentEnd(cameraInfo, item.SegmentID, item.NodeID, Color.yellow); } } while (PropQueue.Count > 0) { var item = PropQueue.Dequeue(); PropTool.RenderOverlay( cameraInfo, item.Prop, item.Pos, item.Scale, item.Angle, Color.yellow); } while (TreeQueue.Count > 0) { var item = TreeQueue.Dequeue(); TreeTool.RenderOverlay(cameraInfo, item.Tree, item.Pos, item.Scale, Color.yellow); } }