Skip to content

Instantly share code, notes, and snippets.

@ronyx69
Last active September 24, 2018 13:34
Show Gist options
  • Save ronyx69/d892fc146019a417ae1aa3cc9b8254aa to your computer and use it in GitHub Desktop.
Save ronyx69/d892fc146019a417ae1aa3cc9b8254aa to your computer and use it in GitHub Desktop.
Source code for the PropRotating Params mod.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ICities;
using UnityEngine;
namespace PropRotating
{
public class PropRotatingMod : LoadingExtensionBase, IUserMod
{
public string Name => "PropRotating Params";
public string Description => "Loads PropRotating parameters.";
public override void OnLevelLoaded(LoadMode mode)
{
base.OnLevelLoaded(mode);
ApplyParams();
}
public override void OnLevelUnloading()
{
base.OnLevelUnloading();
}
private void ApplyParams()
{
for (uint i = 0; i < PrefabCollection<PropInfo>.LoadedCount(); i++)
{
var prefab = PrefabCollection<PropInfo>.GetLoaded(i);
if (prefab == null) continue;
if (prefab.m_mesh.name.Contains("PropRotating2") == true)
{
string[] floats = prefab.m_mesh.name.Split(' ');
prefab.m_rollParams[0] = new Vector4(Convert.ToSingle(floats[1]), Convert.ToSingle(floats[2]), Convert.ToSingle(floats[3]), Convert.ToSingle(floats[4]));
prefab.m_rollLocation[0] = new Vector4(Convert.ToSingle(floats[5]), Convert.ToSingle(floats[6]), Convert.ToSingle(floats[7]), 1.0f - Convert.ToSingle(floats[8]));
prefab.m_rollParams[1] = new Vector4(Convert.ToSingle(floats[1 + 8]), Convert.ToSingle(floats[2 + 8]), Convert.ToSingle(floats[3 + 8]), Convert.ToSingle(floats[4 + 8]));
prefab.m_rollLocation[1] = new Vector4(Convert.ToSingle(floats[5 + 8]), Convert.ToSingle(floats[6 + 8]), Convert.ToSingle(floats[7 + 8]), 1.0f - Convert.ToSingle(floats[8 + 8]));
prefab.m_rollParams[2] = new Vector4(Convert.ToSingle(floats[1 + 8 + 8]), Convert.ToSingle(floats[2 + 8 + 8]), Convert.ToSingle(floats[3 + 8 + 8]), Convert.ToSingle(floats[4 + 8 + 8]));
prefab.m_rollLocation[2] = new Vector4(Convert.ToSingle(floats[5 + 8 + 8]), Convert.ToSingle(floats[6 + 8 + 8]), Convert.ToSingle(floats[7 + 8 + 8]), 1.0f - Convert.ToSingle(floats[8 + 8 + 8]));
prefab.m_rollParams[3] = new Vector4(Convert.ToSingle(floats[1 + 8 + 8 + 8]), Convert.ToSingle(floats[2 + 8 + 8 + 8]), Convert.ToSingle(floats[3 + 8 + 8 + 8]), Convert.ToSingle(floats[4 + 8 + 8 + 8]));
prefab.m_rollLocation[3] = new Vector4(Convert.ToSingle(floats[5 + 8 + 8 + 8]), Convert.ToSingle(floats[6 + 8 + 8 + 8]), Convert.ToSingle(floats[7 + 8 + 8 + 8]), 1.0f - Convert.ToSingle(floats[8 + 8 + 8 + 8]));
}
else if (prefab.m_mesh.name.Contains("PropRotating") == true)
{
string[] floats = prefab.m_mesh.name.Split(' ');
var vec = new Vector4(Convert.ToSingle(floats[1]), Convert.ToSingle(floats[2]), Convert.ToSingle(floats[3]), Convert.ToSingle(floats[4]));
prefab.m_rollParams[0] = vec;
var vec2 = new Vector4(Convert.ToSingle(floats[5]), Convert.ToSingle(floats[6]), Convert.ToSingle(floats[7]), 1.0f);
prefab.m_rollLocation[0] = vec2;
}
else if (prefab.m_mesh.name.Contains("PropTrafficLight") == true)
{
string[] floats = prefab.m_mesh.name.Split(' ');
var vec = new Vector4(Convert.ToSingle(floats[1]), Convert.ToSingle(floats[2]), Convert.ToSingle(floats[3]), Convert.ToSingle(floats[4]));
prefab.m_material.SetVector("_RollParams0", vec);
var vec2 = new Vector4(Convert.ToSingle(floats[5]), Convert.ToSingle(floats[6]), Convert.ToSingle(floats[7]), 1.0f);
prefab.m_material.SetVector("_RollLocation0", vec2);
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment