Esempio n. 1
0
 public override void OnBeforeSimulationTick()
 {
     try {
         _OnBeforeSimulationTick();
     }
     catch (Exception e) {
         ModDebug.Error(e);
     }
 }
Esempio n. 2
0
 public override void OnUpdate(float realTimeDelta, float simulationTimeDelta)
 {
     try {
         _OnUpdate();
     }
     catch (Exception e) {
         ModDebug.Error(e);
     }
 }
Esempio n. 3
0
 void SafelySetBuiltinTabstripSelectedIndex(int index)
 {
     ignoreBuiltinTabstripEvents = true;
     try {
         ModDebug.Log("Setting builtin tabstrip mode: " + index);
         builtinTabstrip.selectedIndex = index;
     }
     catch (Exception e) {
         ModDebug.Error(e);
     }
     ignoreBuiltinTabstripEvents = false;
 }
Esempio n. 4
0
        void HandleMouseDrag(ref ToolBase.RaycastOutput raycastOutput, ref ToolError error, bool test, ref NetInfo newRoadPrefab, ref int newSegmentIndex)
        {
            Vector3 hitPosDelta = Vector3.zero;

            if (!test)
            {
                if (currentTime - prevRebuildTime < 0.1f)
                {
                    return;
                }

                if (dragging)
                {
                    hitPosDelta = raycastOutput.m_hitPos - prevHitPos;
                    if (hitPosDelta.magnitude < 12.0f)
                    {
                        return;
                    }
                }
                else
                {
                    prevHitPos = raycastOutput.m_hitPos;
                    dragging   = true;
                    if (toolMode == ToolMode.Oneway)
                    {
                        return;
                    }
                }

                prevHitPos = raycastOutput.m_hitPos;
            }

            int segmentIndex = raycastOutput.m_netSegment;

            if (segmentIndex != 0)
            {
                NetManager net    = Singleton <NetManager> .instance;
                NetInfo    prefab = net.m_segments.m_buffer[segmentIndex].Info;

                bool isOneway = !prefab.m_hasForwardVehicleLanes || !prefab.m_hasBackwardVehicleLanes;


                string prefabName = null;
                if (!roadPrefabNames.TryGetValue(prefab.GetInstanceID(), out prefabName) || prefabName == null)
                {
                    ModDebug.Error("Prefab name not found");
                    error = ToolError.Unknown;
                    return;
                }

                string newPrefabName = null;
                if (toolMode == ToolMode.Oneway)
                {
                    if (!isOneway)
                    {
                        newPrefabName = FindMatchingName(prefabName, twowayNames, onewayNames);
                    }
                    else
                    {
                        newPrefabName = prefabName;
                    }
                }
                else
                {
                    if (isOneway)
                    {
                        newPrefabName = FindMatchingName(prefabName, onewayNames, twowayNames);
                    }
                    else
                    {
                        toolError = ToolError.AlreadyTwoway;
                        return;
                    }
                }

                if (newPrefabName != null)
                {
                    if (test)
                    {
                        toolError = ToolError.None;
                        return;
                    }

                    NetInfo newPrefab;
                    if (!roadPrefabs.TryGetValue(newPrefabName, out newPrefab) || newPrefab == null)
                    {
                        ModDebug.Error("Prefab not found: " + newPrefabName);
                        error = ToolError.Unknown;
                        return;
                    }

                    newRoadPrefab = newPrefab;

                    int newIndex = RebuildSegment(segmentIndex, newPrefab, toolMode == ToolMode.Oneway, raycastOutput.m_hitPos, hitPosDelta, ref error);

                    if (newIndex != 0)
                    {
                        if (error != ToolError.None)
                        {
                            return;
                        }

                        prevBuiltSegmentIndex = newSegmentIndex;
                        prevRebuildTime       = currentTime;
                        newSegmentIndex       = newIndex;
                    }
                }
                else
                {
                    toolError = ToolError.CannotUpgradeThisType;
                    return;
                }
            }
        }