天津23维预案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

299 lines
4.4 KiB

using UnityEngine;
using System.Collections;
using System.Reflection;
public class ScriptableWindzoneInterface : MonoBehaviour
{
private Component m_WindzoneComponent;
// The system qualified type of the windzone
private System.Type m_WindzoneType;
// Used to pass an argument to WindZone setter functions
object[] m_WindZoneArgs = new object[1];
void Start()
{
}
void Update()
{
}
// Public properties ==============================
// `radius`
public float Radius
{
get
{
// Return the value of `radius`
return (float)GetWindZoneValue("get_radius");
}
set
{
// Set the argument
m_WindZoneArgs[0] = value;
// Set the value of `windMain`
SetWindZoneValue("set_radius", m_WindZoneArgs);
}
}
// `windMain`
public float WindMain
{
get
{
// Return the value of `windMain`
return (float)GetWindZoneValue("get_windMain");
}
set
{
// Set the argument
m_WindZoneArgs[0] = value;
// Set the value of `windMain`
SetWindZoneValue("set_windMain", m_WindZoneArgs);
}
}
// `windTurbulence`
public float WindTurbulence
{
get
{
// Return the value of `windTurbulence`
return (float)GetWindZoneValue("get_windTurbulence");
}
set
{
// Set the argument
m_WindZoneArgs[0] = value;
// Set the value of `windTurbulence`
SetWindZoneValue("set_windTurbulence", m_WindZoneArgs);
}
}
// `windPulseMagnitude`
public float WindPulseMagnitude
{
get
{
// Return the value of `windPulseMagnitude`
return (float)GetWindZoneValue("get_windPulseMagnitude");
}
set
{
// Set the argument
m_WindZoneArgs[0] = value;
// Set the value of `windPulseMagnitude`
SetWindZoneValue("set_windPulseMagnitude", m_WindZoneArgs);
}
}
// `windPulseFrequency`
public float WindPulseFrequency
{
get
{
// Return the value of `windPulseFrequency`
return (float)GetWindZoneValue("get_windPulseFrequency");
}
set
{
// Set the argument
m_WindZoneArgs[0] = value;
// Set the value of `windPulseMagnitude`
SetWindZoneValue("set_windPulseFrequency", m_WindZoneArgs);
}
}
// Public functions ===============================
// Find and link against the windzone
public void Init()
{
// Get the windzone of this game object
m_WindzoneComponent = GetComponent("WindZone");
// Ensure there was a windzone to link to
if (m_WindzoneComponent == null)
{
// Log the error
Debug.LogError("Could not find a wind zone to link to: " + this);
// Disable this script for the remainder of the run
this.enabled = false;
// Stop here
return;
}
// Get the system qualified type
m_WindzoneType = m_WindzoneComponent.GetType();
}
// Private functions =============================
// Set a WindZone property value
void SetWindZoneValue(string MemberName, object[] args)
{
// Call the setter
m_WindzoneType.InvokeMember(
MemberName,
BindingFlags.InvokeMethod | BindingFlags.Instance,
null,
m_WindzoneComponent,
args);
}
// Get a WindZone property value
object GetWindZoneValue(string MemberName)
{
// Call the getter
return m_WindzoneType.InvokeMember(
MemberName,
BindingFlags.InvokeMethod | BindingFlags.Instance,
null,
m_WindzoneComponent,
null);
}
}