Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Create splines at runtime: correct initialization
#1
Hi, I want to create splines at runtime with the follow code:

Code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FluffyUnderware.Curvy;
using FluffyUnderware.Curvy.Controllers;

public class SplineCreatorTest : MonoBehaviour{
   private bool keyUp = true;
   void Update(){
       if (Input.GetKey(KeyCode.M) & keyUp){
           keyUp = false;
           gameObject.AddComponent<CurvySpline>();
           gameObject.GetComponent<CurvySpline>().Interpolation = CurvyInterpolation.Bezier;
           List<GameObject> goList = new List<GameObject>();
           for (int i = 0; i < 7; i++){
               goList.Add(new GameObject("CP000" + i.ToString()));
               goList[i].transform.SetParent(this.transform);
               goList[i].gameObject.AddComponent<CurvySplineSegment>();
           }
           goList[0].transform.localPosition = new Vector3(0.0f,0.0f,0.0f);
           goList[1].transform.localPosition = new Vector3(0.0f, 0.0f, 156.0f);
           goList[2].transform.localPosition = new Vector3(100.0f, 0.0f, 256.0f);
           goList[3].transform.localPosition = new Vector3(200.0f, 0.0f, 156.0f);
           goList[4].transform.localPosition = new Vector3(100.0f, 0.0f, 56.0f);
           goList[5].transform.localPosition = new Vector3(0.0f, 0.0f, 156.0f);
           goList[6].transform.localPosition = new Vector3(0.0f, 0.0f, 256.0f);
           
           goList[1].gameObject.transform.GetComponent<CurvySplineSegment>().AutoHandles = false;
           //NullReferenceException: Object reference not set to an instance of an object
           //SplineCreatorTest.Update()(at Assets / SplineCreatorTest.cs:31)
           goList[1].GetComponent<CurvySplineSegment>().HandleIn = new Vector3(0.014761f, 0.0f, -54.69138f);
           goList[1].GetComponent<CurvySplineSegment>().HandleOut = new Vector3(-0.014761f, 0.0f, 54.69138f);
           
           goList[5].gameObject.transform.GetComponent<CurvySplineSegment>().AutoHandles = false;
           goList[5].GetComponent<CurvySplineSegment>().HandleIn = new Vector3(0.62f, 0.0f, -57.872f);
           goList[5].GetComponent<CurvySplineSegment>().HandleOut = new Vector3(-0.62f, 0.0f, 57.872f);
       }
       if (Input.GetKeyUp(KeyCode.M)) { keyUp = true; }
   }
}

But I receiving this error when "AutoHandles = false" runs:
Code:
NullReferenceException: Object reference not set to an instance of an object SplineCreatorTest.Update()(at Assets / SplineCreatorTest.cs:31)

But on the properties "AutoHandles" already is off.
If I wait next update and trying:
Code:
           goList[1].gameObject.transform.GetComponent<CurvySplineSegment>().AutoHandles = false;
           goList[1].GetComponent<CurvySplineSegment>().HandleIn = new Vector3(0.014761f, 0.0f, -54.69138f);
           goList[1].GetComponent<CurvySplineSegment>().HandleOut = new Vector3(-0.014761f, 0.0f, 54.69138f);
           
           goList[5].gameObject.transform.GetComponent<CurvySplineSegment>().AutoHandles = false;
           goList[5].GetComponent<CurvySplineSegment>().HandleIn = new Vector3(0.62f, 0.0f, -57.872f);
           goList[5].GetComponent<CurvySplineSegment>().HandleOut = new Vector3(-0.62f, 0.0f, 57.872f);
the scripts runs whitout erros.
Probably I'm missing something to correct initialization. What I need to do?
Reply


Messages In This Thread
Create splines at runtime: correct initialization - by Josenildo - 10-28-2019, 02:14 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Set Volume to the Volume Controller at Runtime pako88 2 10 04-08-2024, 03:26 PM
Last Post: _Aka_
  snap to the curve created by the curvy splines segment points ShiroeYamamoto 3 11 04-02-2024, 02:24 PM
Last Post: _Aka_
Heart Create beautiful curves ShiroeYamamoto 3 11 03-26-2024, 06:25 PM
Last Post: _Aka_
Bug Changing spline connection in inspector causes splines to revert to defaults lacota 3 6 03-18-2024, 07:55 PM
Last Post: _Aka_

Forum Jump: