MathSculptorAddinSample

From Second Life Wiki
Revision as of 10:40, 14 July 2007 by Burhop Piccard (talk | contribs) (New page: The Example below is a very basic sample Addin for Math Sculptor. It has only one dependency which is the ISculptAddin which has not dependencies beyond Microsoft .NET 2.0. ISculptAddin s...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The Example below is a very basic sample Addin for Math Sculptor. It has only one dependency which is the ISculptAddin which has not dependencies beyond Microsoft .NET 2.0. ISculptAddin source can be found at MathSculptorInterface


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Resources;
using Burhop.MathSculptor;

namespace SampleAddin
{
    public class SampleAddin : ISculptAddin
    {
        int radius1;
        int radius2;

        #region ISculptAddin Members

        public string Description
        {
            get
            {
                return "Creates shapes based off a circle whose radius can be modified";
            }
        }

        public System.Drawing.Image IconImage
        {
            get { return global::SampleAddin.Properties.Resources.SampleAddinImage; }
        }

        public string LongDescription
        {
            get
            {
                return "This basic addin shows how to create your our DLLs for your own more unique sculptured primitives.";
            }
        }

        public List<ISculptParam> Params
        {
            get
            {
                List<ISculptParam> pList = new List<ISculptParam>();
                SculptParam<int> radius1 = new SculptParam<int>();
                SculptParam<int> radius2 = new SculptParam<int>();

                //Param 1
                radius1.Name = "X Radius";
                radius1.Value = 100;
                radius1.LowValue = 0;
                radius1.HighValue = 127;

                //Param 2
                radius2.Name = "Y Radius";
                radius2.Value = 100;
                radius2.LowValue = 0;
                radius2.HighValue = 127;

                pList.Add(radius1);
                pList.Add(radius2);
                return pList;
            }
            set
            {
                SculptParam<int> iParam;
                iParam = value[0] as SculptParam<int>;
                radius1 = iParam.Value;
                iParam = value[1] as SculptParam<int>;
                radius2 = iParam.Value;
            }
        }

        public xyz getXYZ(double u, double v)
        {
            xyz result;
            //A Cylinder
            result.x = (byte)(radius1 * Math.Sin(u * 2 * Math.PI) + 127);
            result.y = (byte)(radius2 * Math.Cos(u * 2 * Math.PI) + 127);
            result.z = (byte)(v * 256);
            return result;
        }

        #endregion
    }
}